import { BaseObjNodeClass } from '../_Base';
import { Object3D } from 'three';
import { DisplayNodeController, DisplayNodeControllerCallbacks } from '../../utils/DisplayNodeController';
import { Group } from 'three';
import { BaseSopNodeType } from '../../sop/_Base';
import { CoreGroup } from '../../../../core/geometry/Group';
export type OnSopGroupUpdatedHook = () => void;
interface BaseObjNodeClassWithDisplayNode extends BaseObjNodeClass {
    displayNodeController: DisplayNodeController;
}
export declare class ObjChildrenDisplayController {
    protected node: BaseObjNodeClassWithDisplayNode;
    protected _childrenUuids: Set<string>;
    protected _sopGroup: Group<import("three").Object3DEventMap>;
    protected _newSpecializedObjects: Object3D[];
    protected _newObjectsAreDifferent: boolean;
    private _scene;
    constructor(node: BaseObjNodeClassWithDisplayNode);
    private _createSopGroup;
    sopGroup(): Group<import("three").Object3DEventMap>;
    setSopGroupName(): void;
    dispose(): void;
    displayNodeControllerCallbacks(): DisplayNodeControllerCallbacks;
    initializeNode(): void;
    private _updateSopGroupHierarchy;
    usedInScene(): boolean;
    requestDisplayNodeContainer(): Promise<void>;
    private removeChildren;
    _setContentUnderSopGroup(): Promise<void>;
    private _notifyCamerasController;
    protected _addSpecializedObjects(displayNode: BaseSopNodeType, coreGroup: CoreGroup, newObjects: Object3D[]): void;
    private _onSopGroupUpdatedHookNames;
    private _onSopGroupUpdatedHooks;
    registerOnSopGroupUpdated(callbackName: string, callback: OnSopGroupUpdatedHook): void;
    private _clearHooks;
    deregisterOnSopGroupUpdated(callbackName: string): void;
    private _runOnSopGroupUpdatedHooks;
    onSopGroupUpdatedCallbackNames(): string[] | undefined;
}
export {};
