import { PolyDictionary } from '../../../types/GlobalTypes';
import { PolyScene } from '../PolyScene';
import { ObjectsManagerNode } from '../../nodes/manager/ObjectsManager';
import { BaseNodeType } from '../../nodes/_Base';
import { NodeContext } from '../../poly/NodeContext';
import { NodeChildrenMapByContext } from '../../poly/registers/nodes/All';
export declare class NodesController {
    private scene;
    constructor(scene: PolyScene);
    _root: ObjectsManagerNode;
    _node_context_signatures: PolyDictionary<boolean>;
    _instanciated_nodes_by_context_and_type: PolyDictionary<PolyDictionary<PolyDictionary<BaseNodeType>>>;
    init(): void;
    root(): ObjectsManagerNode;
    private _traverseNode;
    clear(): void;
    node(path: string): BaseNodeType | ObjectsManagerNode | null;
    allNodes(): BaseNodeType[];
    nodesFromMask(mask: string): BaseNodeType[];
    reset_node_context_signatures(): void;
    register_node_context_signature(node: BaseNodeType): void;
    node_context_signatures(): string[];
    addToInstanciatedNode(node: BaseNodeType): void;
    removeFromInstanciatedNode(node: BaseNodeType): void;
    nodesByType(type: string): BaseNodeType[];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.ANIM]>(context: NodeContext.ANIM, node_type: T): NodeChildrenMapByContext[NodeContext.ANIM][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.COP]>(context: NodeContext.COP, node_type: T): NodeChildrenMapByContext[NodeContext.COP][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.EVENT]>(context: NodeContext.EVENT, node_type: T): NodeChildrenMapByContext[NodeContext.EVENT][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.GL]>(context: NodeContext.GL, node_type: T): NodeChildrenMapByContext[NodeContext.GL][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.JS]>(context: NodeContext.JS, node_type: T): NodeChildrenMapByContext[NodeContext.JS][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.MAT]>(context: NodeContext.MAT, node_type: T): NodeChildrenMapByContext[NodeContext.MAT][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.OBJ]>(context: NodeContext.OBJ, node_type: T): NodeChildrenMapByContext[NodeContext.OBJ][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.POST]>(context: NodeContext.POST, node_type: T): NodeChildrenMapByContext[NodeContext.POST][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.ROP]>(context: NodeContext.ROP, node_type: T): NodeChildrenMapByContext[NodeContext.ROP][T][];
    nodesByContextAndType<T extends keyof NodeChildrenMapByContext[NodeContext.SOP]>(context: NodeContext.SOP, node_type: T): NodeChildrenMapByContext[NodeContext.SOP][T][];
}
