import { Object3D } from 'three';
import { Class } from 'ts-browser-helpers';
import { AViewerPluginEventMap, AViewerPluginSync, ThreeViewer } from '../../viewer';
import { ObjectPicker, SelectionWidget } from '../../three';
import { IMaterial, IObject3D } from '../../core';
import { UiObjectConfig } from 'uiconfig.js';
import { ObjectPickerEventMap } from '../../three/utils/ObjectPicker';
import { CameraViewPlugin } from '../animation/CameraViewPlugin';
export interface PickingPluginEventMap extends AViewerPluginEventMap, ObjectPickerEventMap {
}
export declare class PickingPlugin extends AViewerPluginSync<PickingPluginEventMap> {
    enabled: boolean;
    get picker(): ObjectPicker | undefined;
    static readonly PluginType = "Picking";
    static readonly OldPluginType = "PickingPlugin";
    private _picker?;
    private _widget?;
    private _hoverWidget?;
    private _pickUi;
    dependencies: (typeof CameraViewPlugin)[];
    get hoverEnabled(): boolean;
    set hoverEnabled(v: boolean);
    selectionMode: 'object' | 'material';
    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 | IMaterial = IObject3D | IMaterial>(): T | undefined;
    setSelectedObject(object: IObject3D | IMaterial | undefined, focusCamera?: boolean, trackUndo?: boolean): void;
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    dispose(): void;
    private _mainCameraChange;
    private _sceneUpdated;
    private _onSceneUpdate;
    private _checkSelectedInScene;
    protected _viewerListeners: {
        preFrame: () => void;
    };
    private _onObjectSelectEvent;
    private _selectedObjectChanged;
    private _hoverObjectChanged;
    private _onObjectHit;
    private _selectionModeChanged;
    focusObject(selected?: Object3D | null): Promise<void>;
    private _pickPromptUi;
    private _uiConfigChildren;
    uiConfig: UiObjectConfig;
    get widget(): SelectionWidget | undefined;
}
//# sourceMappingURL=PickingPlugin.d.ts.map