import { CoreGraphNode } from '../../../../core/graph/CoreGraphNode';
import { ConnectionPointTypeMap, ConnectionPointEnumMap } from './connections/ConnectionMap';
import { TypedNode } from '../../_Base';
import { ConnectionPointsSpareParamsController } from './ConnectionPointsSpareParamsController';
import { NodeContext } from '../../../poly/NodeContext';
declare type IONameFunction = (index: number) => string;
declare type ExpectedConnectionTypesFunction<NC extends NodeContext> = () => ConnectionPointEnumMap[NC][];
export declare class ConnectionPointsController<NC extends NodeContext> {
    private node;
    private _context;
    private _spare_params_controller;
    private _create_spare_params_from_inputs;
    private _functions_overridden;
    constructor(node: TypedNode<NC, any>, _context: NC);
    private _input_name_function;
    private _output_name_function;
    private _expected_input_types_function;
    private _expected_output_types_function;
    protected default_connection_type(): ConnectionPointEnumMap[NC];
    protected create_connection_point(name: string, type: ConnectionPointEnumMap[NC]): ConnectionPointTypeMap[NC];
    functions_overridden(): boolean;
    initialized(): boolean;
    set_create_spare_params_from_inputs(state: boolean): void;
    set_input_name_function(func: IONameFunction): void;
    set_output_name_function(func: IONameFunction): void;
    set_expected_input_types_function(func: ExpectedConnectionTypesFunction<NC>): void;
    set_expected_output_types_function(func: ExpectedConnectionTypesFunction<NC>): void;
    input_name(index: number): string;
    output_name(index: number): string;
    private _update_signature_if_required_bound;
    private _initialized;
    initializeNode(): void;
    private _initialize_if_required;
    get spare_params(): ConnectionPointsSpareParamsController<NC>;
    update_signature_if_required(dirty_trigger?: CoreGraphNode): void;
    private make_successors_update_signatures;
    update_connection_types(): void;
    protected _connections_match_inputs(): boolean;
    private _wrapped_expected_input_types_function;
    private _wrapped_expected_output_types_function;
    private _wrapped_input_name_function;
    private _wrapped_output_name_function;
    first_input_connection_type(): ConnectionPointEnumMap[NC] | undefined;
    input_connection_type(index: number): ConnectionPointEnumMap[NC] | undefined;
}
export {};
