/**
 * allows to set up complex animations using keyframes
 *
 *
 */
import { NodeParamsConfig } from './../utils/params/ParamsConfig';
import { TypedJsNode } from './_Base';
import { JsConnectionPointType } from '../utils/io/connections/Js';
import { ChannelData } from '../../../core/keyframes/KeyframeCommon';
import { IntegerParam } from '../../params/Integer';
import { StringParam } from '../../params/String';
import { JsLinesCollectionController } from './code/utils/JsLinesCollectionController';
import { JsType } from '../../poly/registers/nodes/types/Js';
declare enum KeyframesJsNodeInputName {
    time = "time"
}
type AvailableJsConnectionType = JsConnectionPointType.FLOAT | JsConnectionPointType.VECTOR2 | JsConnectionPointType.VECTOR3 | JsConnectionPointType.VECTOR4;
export declare const AVAILABLE_JS_CONNECTION_POINT_TYPES: AvailableJsConnectionType[];
export declare const ARRAY_SIZE_BY_TYPE: Record<AvailableJsConnectionType, number>;
export declare const CHANNEL_SUFFIX_BY_CHANNEL_INDEX: string[];
export declare function channelDataInputName(index: number): string;
declare class KeyframesJsParamsConfig extends NodeParamsConfig {
    channels: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    channelsCount: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelType0: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName0: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data0: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType1: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName1: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data1: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType2: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName2: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data2: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType3: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName3: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data3: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType4: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName4: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data4: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType5: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName5: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data5: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType6: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName6: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data6: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType7: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName7: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data7: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType8: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName8: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data8: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    channelType9: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    channelName9: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    data9: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    spare: import("./../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
}
export declare class KeyframesJsNode extends TypedJsNode<KeyframesJsParamsConfig> {
    readonly paramsConfig: KeyframesJsParamsConfig;
    static type(): JsType;
    initializeNode(): void;
    channelTypeParams(): IntegerParam[];
    channelNameParams(): StringParam[];
    channelDataParams(): StringParam[];
    setChannelType(index: number, type: AvailableJsConnectionType): void;
    setChannelName(index: number, inputName: string): void;
    setChannelData(index: number, data: ChannelData[]): void;
    channelData(index: number): ChannelData | ChannelData[] | undefined;
    protected _channelsCount(): number;
    protected _expectedInputTypes(): JsConnectionPointType[];
    protected _expectedInputName(index: number): KeyframesJsNodeInputName;
    protected _expectedOutputTypes(): AvailableJsConnectionType[];
    protected _expectedOutputName(index: number): string;
    setLines(linesController: JsLinesCollectionController): void;
}
export {};
