import { Object3D } from 'three';
import { PolyScene } from '../scene/PolyScene';
import { BaseNodeType } from '../nodes/_Base';
import { BaseJsNodeType } from '../nodes/js/_Base';
import { JsLinesCollectionController } from '../nodes/js/code/utils/JsLinesCollectionController';
import { AssemblerControllerNode } from '../nodes/js/code/Controller';
import { TimeController } from '../scene/utils/TimeController';
import { BaseJsShaderAssembler } from '../nodes/js/code/assemblers/_Base';
import { Tuple1, Tuple2, Tuple3, Tuple4, Tuple5, Tuple6, Tuple7, Tuple8, Tuple9, Tuple10, Tuple11, Tuple12, Tuple13, Tuple14, Tuple15, Tuple16, Tuple17, Tuple18, Tuple19, Tuple20, Tuple21, Tuple22 } from '../../types/GlobalTypes';
export declare abstract class BaseNamedFunction {
    readonly node: BaseNodeType;
    readonly shadersCollectionController?: JsLinesCollectionController | undefined;
    static type(): string;
    type(): string;
    readonly scene: PolyScene;
    readonly jsNode?: BaseJsNodeType;
    readonly functionNode: AssemblerControllerNode<BaseJsShaderAssembler>;
    readonly timeController: TimeController;
    constructor(node: BaseNodeType, shadersCollectionController?: JsLinesCollectionController | undefined);
    abstract func(...args: any): any;
    asString(...args: any): string;
}
export declare abstract class NamedFunction<ARGS extends Array<any>, ARGS_STR extends Array<string>> extends BaseNamedFunction {
    abstract func(...args: ARGS): any;
    async: boolean;
    asString(...args: ARGS_STR): string;
}
export declare abstract class NamedFunction0 extends NamedFunction<[], []> {
}
export declare abstract class NamedFunction1<ARGS extends Tuple1<any>> extends NamedFunction<ARGS, Tuple1<any>> {
}
export declare abstract class NamedFunction2<ARGS extends Tuple2<any>> extends NamedFunction<ARGS, Tuple2<string>> {
}
export declare abstract class NamedFunction3<ARGS extends Tuple3<any>> extends NamedFunction<ARGS, Tuple3<string>> {
}
export declare abstract class NamedFunction4<ARGS extends Tuple4<any>> extends NamedFunction<ARGS, Tuple4<string>> {
}
export declare abstract class NamedFunction5<ARGS extends Tuple5<any>> extends NamedFunction<ARGS, Tuple5<string>> {
}
export declare abstract class NamedFunction6<ARGS extends Tuple6<any>> extends NamedFunction<ARGS, Tuple6<string>> {
}
export declare abstract class NamedFunction7<ARGS extends Tuple7<any>> extends NamedFunction<ARGS, Tuple7<string>> {
}
export declare abstract class NamedFunction8<ARGS extends Tuple8<any>> extends NamedFunction<ARGS, Tuple8<string>> {
}
export declare abstract class NamedFunction9<ARGS extends Tuple9<any>> extends NamedFunction<ARGS, Tuple9<string>> {
}
declare abstract class ObjectNamedFunction<ARGS extends Array<any>, ARGS_STR extends Array<string>> extends BaseNamedFunction {
    abstract func(object: Object3D, ...args: ARGS): any;
    asString(...args: ARGS_STR): string;
}
export declare abstract class ObjectNamedFunction0 extends ObjectNamedFunction<[], Tuple1<string>> {
}
export declare abstract class ObjectNamedFunction1<ARGS extends Tuple1<any>> extends ObjectNamedFunction<ARGS, Tuple2<string>> {
}
export declare abstract class ObjectNamedFunction2<ARGS extends Tuple2<any>> extends ObjectNamedFunction<ARGS, Tuple3<string>> {
}
export declare abstract class ObjectNamedFunction3<ARGS extends Tuple3<any>> extends ObjectNamedFunction<ARGS, Tuple4<string>> {
}
export declare abstract class ObjectNamedFunction4<ARGS extends Tuple4<any>> extends ObjectNamedFunction<ARGS, Tuple5<string>> {
}
export declare abstract class ObjectNamedFunction5<ARGS extends Tuple5<any>> extends ObjectNamedFunction<ARGS, Tuple6<string>> {
}
export declare abstract class ObjectNamedFunction6<ARGS extends Tuple6<any>> extends ObjectNamedFunction<ARGS, Tuple7<string>> {
}
export declare abstract class ObjectNamedFunction7<ARGS extends Tuple7<any>> extends ObjectNamedFunction<ARGS, Tuple8<string>> {
}
export declare abstract class ObjectNamedFunction8<ARGS extends Tuple8<any>> extends ObjectNamedFunction<ARGS, Tuple9<string>> {
}
export declare abstract class ObjectNamedFunction9<ARGS extends Tuple9<any>> extends ObjectNamedFunction<ARGS, Tuple10<string>> {
}
export declare abstract class ObjectNamedFunction10<ARGS extends Tuple10<any>> extends ObjectNamedFunction<ARGS, Tuple11<string>> {
}
export declare abstract class ObjectNamedFunction11<ARGS extends Tuple11<any>> extends ObjectNamedFunction<ARGS, Tuple12<string>> {
}
export declare abstract class ObjectNamedFunction12<ARGS extends Tuple12<any>> extends ObjectNamedFunction<ARGS, Tuple13<string>> {
}
export declare abstract class ObjectNamedFunction13<ARGS extends Tuple13<any>> extends ObjectNamedFunction<ARGS, Tuple14<string>> {
}
export declare abstract class ObjectNamedFunction14<ARGS extends Tuple14<any>> extends ObjectNamedFunction<ARGS, Tuple15<string>> {
}
export declare abstract class ObjectNamedFunction15<ARGS extends Tuple15<any>> extends ObjectNamedFunction<ARGS, Tuple16<string>> {
}
export declare abstract class ObjectNamedFunction16<ARGS extends Tuple16<any>> extends ObjectNamedFunction<ARGS, Tuple17<string>> {
}
export declare abstract class ObjectNamedFunction17<ARGS extends Tuple17<any>> extends ObjectNamedFunction<ARGS, Tuple18<string>> {
}
export declare abstract class ObjectNamedFunction18<ARGS extends Tuple18<any>> extends ObjectNamedFunction<ARGS, Tuple19<string>> {
}
export declare abstract class ObjectNamedFunction19<ARGS extends Tuple19<any>> extends ObjectNamedFunction<ARGS, Tuple20<string>> {
}
export declare abstract class ObjectNamedFunction20<ARGS extends Tuple20<any>> extends ObjectNamedFunction<ARGS, Tuple21<string>> {
}
export declare abstract class ObjectNamedFunction21<ARGS extends Tuple21<any>> extends ObjectNamedFunction<ARGS, Tuple22<string>> {
}
export {};
