import { BaseNodeType } from './../../_Base';
import { NodeContext } from '../../../poly/NodeContext';
import { NodeParamsConfig } from '../params/ParamsConfig';
import { PolyNodeDefinition, PolyNodesInputsData } from './PolyNodeDefinition';
import { PolyNodeClassByContext } from './PolyNodeClassByContext';
import { PolyNodeDataRegister } from './PolyNodeDataRegister';
type CreatePolyNodeFunction = (nodeType: string, definition: PolyNodeDefinition, polyNodeControllerClass: typeof PolyNodeController) => any;
export declare class PolyNodeController {
    private node;
    private _definition;
    private static _createPolyNodeFunctionByContext;
    static registerCreatePolyNodeFunctionForContext(context: NodeContext, createPolyNodeFunction: CreatePolyNodeFunction): void;
    private static _definitionRegister;
    private _locked;
    constructor(node: BaseNodeType, _definition: PolyNodeDefinition);
    initializeNode(): void;
    locked(): boolean;
    setLockedState(state: boolean): void;
    private _initInputs;
    static setupParamsConfig(paramsConfig: NodeParamsConfig, data: PolyNodeDefinition): void;
    createChildNodesFromDefinition(): void;
    static inputsData(node: BaseNodeType): PolyNodesInputsData;
    static polyNodeData(node: BaseNodeType, inputsData?: PolyNodesInputsData): Promise<PolyNodeDefinition>;
    static _createNodeClass<NC extends NodeContext>(nodeContext: NC, nodeType: string, data: PolyNodeDefinition): PolyNodeClassByContext[NC] | undefined;
    static createNodeClassAndRegister<NC extends NodeContext>(dataRegister: PolyNodeDataRegister<NC>): void;
    static definition<NC extends NodeContext>(context: NC, type: string): PolyNodeDefinition | undefined;
    static register(): Map<NodeContext, Map<string, PolyNodeDefinition>>;
}
export {};
