import { TypedNode } from '../_Base';
import { BaseGlShaderAssembler } from './code/assemblers/_Base';
import { AssemblerGlControllerNode } from './code/Controller';
import { NodeContext } from '../../poly/NodeContext';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { ParamConfigsController } from '../utils/code/controllers/ParamConfigsController';
import { ShadersCollectionController } from './code/utils/ShadersCollectionController';
import { ParamInitValueSerialized } from '../../params/types/ParamInitValueSerialized';
import { GlParamConfig } from './code/utils/GLParamConfig';
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';
/**
 *
 *
 * TypedGlNode is the base class for all nodes that process GLSL code. This inherits from [TypedNode](/docs/api/TypedNode).
 *
 */
export declare class TypedGlNode<K extends NodeParamsConfig> extends TypedNode<NodeContext.GL, K> {
    static context(): NodeContext;
    protected _param_configs_controller: ParamConfigsController<GlParamConfig<ParamType>> | undefined;
    protected _assembler: BaseGlShaderAssembler | undefined;
    private _paramsEditableStatesController;
    initializeBaseNode(): void;
    cook(): void;
    protected _setMatToRecompile(): void;
    materialNode(): AssemblerGlControllerNode | undefined;
    glVarName(varName: string): string;
    protected _glVarNameBase(): string;
    variableForInputParam(param: IntegerParam | FloatParam | Vector2Param | Vector3Param | Vector4Param | ColorParam | BooleanParam): string;
    variableForInput(inputName: string): string;
    setLines(shaders_collection_controller: ShadersCollectionController): void;
    reset_code(): void;
    setParamConfigs(): void;
    param_configs(): readonly GlParamConfig<ParamType>[] | undefined;
    paramsGenerating(): boolean;
    paramDefaultValue(name: string): ParamInitValueSerialized;
}
export type BaseGlNodeType = TypedGlNode<NodeParamsConfig>;
export declare class BaseGlNodeClass extends TypedGlNode<NodeParamsConfig> {
}
declare class ParamlessGlParamsConfig extends NodeParamsConfig {
}
export declare class ParamlessTypedGlNode extends TypedGlNode<ParamlessGlParamsConfig> {
    paramsConfig: ParamlessGlParamsConfig;
}
export {};
