import { UiObjectConfig } from 'uiconfig.js';
import { IObject3D, IWidget } from '../../core';
import { AViewerPluginSync, IViewerEvent, IViewerEventTypes, ThreeViewer } from '../../viewer';
import { PartialRecord } from '../../utils';
export interface IObject3DHelper<T extends IWidget = IWidget> {
    Create: (o: IObject3D) => T;
    Check: (o: IObject3D) => boolean;
}
/**
 * Automatically creates and manages helper widgets for lights, cameras, lines, and skeletons.
 * Custom widget types can be registered via the `helpers` array.
 * See https://threepipe.org/notes/widgets-and-helpers for the full widget system documentation.
 * @category Plugins
 */
export declare class Object3DWidgetsPlugin extends AViewerPluginSync {
    enabled: boolean;
    static readonly PluginType = "Object3DWidgetsPlugin";
    helpers: IObject3DHelper[];
    setDirty(): void;
    toJSON: any;
    inSceneRoot: boolean;
    constructor(enabled?: boolean, inSceneRoot?: boolean);
    private _widgetRoot;
    private _modelRoot?;
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    refreshObject: (object?: IObject3D) => void;
    protected _viewerListeners: PartialRecord<IViewerEventTypes, (e: IViewerEvent) => void>;
    widgets: (IWidget)[];
    private _widgetDisposed;
    private _registerWidget;
    private _unregisterWidget;
    private _createWidget;
    private _removeWidget;
    private _objectAdd;
    private _objectRemove;
    uiConfig: UiObjectConfig;
}
//# sourceMappingURL=../../src/plugins/extras/Object3DWidgetsPlugin.d.ts.map