import { BaseNodeType } from '../_Base';
type NodeLifeCycleControllerCallback = () => void;
type NodeLifeCycleControllerCallbackWithChildNode = (childNode: BaseNodeType) => void;
export declare class NodeLifeCycleController {
    protected node: BaseNodeType;
    protected _creationCompleted: boolean;
    protected _onChildAddCallbacks: NodeLifeCycleControllerCallbackWithChildNode[] | undefined;
    private _onChildRemoveCallbacks;
    private _onAfterCreatedCallbacks;
    private _onAfterAddedCallbacks;
    private _onBeforeDeletedCallbacks;
    private _onAfterDeletedCallbacks;
    constructor(node: BaseNodeType);
    dispose(): void;
    setCreationCompleted(): void;
    creationCompleted(): boolean;
    onChildAdd(callback: NodeLifeCycleControllerCallbackWithChildNode): void;
    runOnChildAddCallbacks(node: BaseNodeType): void;
    onChildRemove(callback: NodeLifeCycleControllerCallbackWithChildNode): void;
    runOnChildRemoveCallbacks(node: BaseNodeType): void;
    onAfterCreated(callback: NodeLifeCycleControllerCallback): void;
    runOnAfterCreatedCallbacks(): void;
    onAfterAdded(callback: NodeLifeCycleControllerCallback): void;
    runOnAfterAddedCallbacks(): void;
    onBeforeDeleted(callback: NodeLifeCycleControllerCallback): void;
    runOnBeforeDeleteCallbacks(): void;
    onAfterDeleted(callback: NodeLifeCycleControllerCallback): void;
    runOnDeleteCallbacks(): void;
    protected _runCallbacks(hooks: NodeLifeCycleControllerCallback[] | undefined): void;
    protected _runCallbacksWithChildNode(hooks: NodeLifeCycleControllerCallbackWithChildNode[] | undefined, childNode: BaseNodeType): void;
}
export {};
