import { Object3D } from 'three';
import { Class } from 'ts-browser-helpers';
import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { ObjectPicker, SelectionWidget } from '../../three';
import { IObject3D } from '../../core';
import { UiObjectConfig } from 'uiconfig.js';
export declare class PickingPlugin extends AViewerPluginSync<'selectedObjectChanged' | 'hoverObjectChanged' | 'hitObject'> {
    enabled: boolean;
    get picker(): ObjectPicker | undefined;
    static readonly PluginType = "Picking";
    static readonly OldPluginType = "PickingPlugin";
    private _picker?;
    private _widget?;
    private _hoverWidget?;
    private _pickUi;
    get hoverEnabled(): boolean;
    set hoverEnabled(v: boolean);
    autoFocus: boolean;
    autoFocusHover: boolean;
    /**
     * Note: this is for runtime use only, not serialized
     */
    widgetEnabled: boolean;
    protected _widgetEnabledChange(): void;
    setDirty(): void;
    constructor(selection?: Class<SelectionWidget> | undefined, pickUi?: boolean, autoFocus?: boolean);
    getSelectedObject<T extends IObject3D = IObject3D>(): T | undefined;
    setSelectedObject(object: IObject3D | undefined, focusCamera?: boolean): void;
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    dispose(): void;
    private _mainCameraChange;
    private _onSceneUpdate;
    private _onObjectSelectEvent;
    private _selectedObjectChanged;
    private _hoverObjectChanged;
    private _onObjectHit;
    focusObject(selected?: Object3D): Promise<void>;
    private _uiConfigChildren;
    uiConfig: UiObjectConfig;
    get widget(): SelectionWidget | undefined;
}
//# sourceMappingURL=PickingPlugin.d.ts.map