import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { PickingPlugin } from './PickingPlugin';
import { JSUndoManager } from 'ts-browser-helpers';
import { TransformControls } from '../../three';
import { ICamera, IObject3D, IWidget } from '../../core';
import { Object3D } from 'three';
export declare class TransformControlsPlugin extends AViewerPluginSync {
    static readonly PluginType = "TransformControlsPlugin";
    enabled: boolean;
    setDirty(): void;
    constructor(enabled?: boolean);
    toJSON: any;
    dependencies: (typeof PickingPlugin)[];
    transformControls: TransformControls2 | undefined;
    protected _isInteracting: boolean;
    protected _viewerListeners: {
        postFrame: () => void;
    };
    private _transformState;
    undoManager?: JSUndoManager;
    selectionFilterTest: ((obj: IObject3D) => IObject3D | null) | undefined;
    private _multi;
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    private _mainCameraChange;
    centerAllMeshes(): (() => void) | undefined;
}
export declare class TransformControls2 extends TransformControls implements IWidget, IObject3D {
    isWidget: true;
    assetType: "widget";
    setDirty: any;
    refreshUi: any;
    lockProps: string[] | undefined;
    object: IObject3D | undefined;
    private _keyDownListener;
    private _keyUpListener;
    constructor(camera: ICamera, canvas: HTMLCanvasElement);
    protected _savedSettings: any;
    attach(object: Object3D): this;
    detach(): this;
    dispose(): void;
    enabled: boolean;
    mode: 'translate' | 'rotate' | 'scale';
    translationSnap: number | null;
    rotationSnap: number | null;
    scaleSnap: number | null;
    space: 'world' | 'local';
    size: number;
    showX: boolean;
    showY: boolean;
    showZ: boolean;
    /**
     * Get the threejs object
     * @deprecated
     */
    get modelObject(): this;
    traverse: (callback: (object: IObject3D) => void) => void;
    traverseVisible: (callback: (object: IObject3D) => void) => void;
    traverseAncestors: (callback: (object: IObject3D) => void) => void;
    getObjectById: (id: number) => IObject3D | undefined;
    getObjectByName: (name: string) => IObject3D | undefined;
    getObjectByProperty: (name: string, value: string) => IObject3D | undefined;
    parent: IObject3D | null;
    children: IObject3D[];
}
//# sourceMappingURL=../../src/plugins/interaction/TransformControlsPlugin.d.ts.map