import { TypedNode } from '../_Base';
import { AssemblerControllerNode } from './code/Controller';
import { NodeContext } from '../../poly/NodeContext';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { ParamConfigsController } from '../utils/code/controllers/ParamConfigsController';
import { JsLinesCollectionController } from './code/utils/JsLinesCollectionController';
import { JsParamConfig } from './code/utils/JsParamConfig';
import { ParamType } from '../../poly/ParamType';
import { IntegerParam } from '../../params/Integer';
import { FloatParam } from '../../params/Float';
import { Vector2Param } from '../../params/Vector2';
import { Vector3Param } from '../../params/Vector3';
import { Vector4Param } from '../../params/Vector4';
import { ColorParam } from '../../params/Color';
import { BooleanParam } from '../../params/Boolean';
import { Color, Quaternion, Vector2, Vector3, Vector4 } from 'three';
import { BaseParamType } from '../../params/_Base';
import { EvaluatorEventData } from './code/assemblers/actor/ActorEvaluator';
import { StringParam } from '../../params/String';
import { BaseJsShaderAssembler } from './code/assemblers/_Base';
export declare const TRIGGER_CONNECTION_NAME = "trigger";
export interface WrappedBodyLines {
    methodNames: string[];
    wrappedLines: string;
}
export declare function wrapIfComputed(varName: string, linesController: JsLinesCollectionController): string;
export declare function variableFromParamRequired(param: BaseParamType): param is ColorParam | Vector2Param | Vector3Param | Vector4Param;
export declare function createVariableFromParam(param: ColorParam | Vector2Param | Vector3Param | Vector4Param): Vector2 | Vector3 | Quaternion | Vector4 | Color;
export declare class TypedJsNode<K extends NodeParamsConfig> extends TypedNode<NodeContext.JS, K> {
    static context(): NodeContext;
    protected _param_configs_controller: ParamConfigsController<JsParamConfig<ParamType>> | undefined;
    private _paramsEditableStatesController;
    eventData(): EvaluatorEventData | EvaluatorEventData[] | undefined;
    isTriggering(): boolean;
    initializeBaseNode(): void;
    cook(): void;
    private __setFunctionNodeToRecompileAllowed;
    protected _setFunctionNodeToRecompileAllowed(state: boolean): void;
    protected _setFunctionNodeToRecompile(): void;
    functionNode(): AssemblerControllerNode<BaseJsShaderAssembler> | undefined;
    jsVarName(name: string): string;
    inputVarName(inputName: string): string;
    static inputVarName(node: BaseJsNodeType, inputName: string): string;
    variableForInputParam(shadersCollectionController: JsLinesCollectionController, param: IntegerParam | FloatParam | Vector2Param | Vector3Param | Vector4Param | ColorParam | BooleanParam | StringParam): string;
    variableForInput(shadersCollectionController: JsLinesCollectionController, inputName: string): string;
    private _variableForInput;
    setLines(shadersCollectionController: JsLinesCollectionController): void;
    setTriggeringLines(shadersCollectionController: JsLinesCollectionController, triggeredMethods: string): void;
    setTriggerableLines(shadersCollectionController: JsLinesCollectionController): void;
    reset_code(): void;
    paramsGenerating(): boolean;
    setParamConfigs(): void;
    param_configs(): readonly JsParamConfig<ParamType>[] | undefined;
}
export type BaseJsNodeType = TypedJsNode<NodeParamsConfig>;
export declare class BaseJsNodeClass extends TypedJsNode<NodeParamsConfig> {
}
declare class ParamlessJsParamsConfig extends NodeParamsConfig {
}
export declare class ParamlessTypedJsNode extends TypedJsNode<ParamlessJsParamsConfig> {
    paramsConfig: ParamlessJsParamsConfig;
}
export {};
