import { BaseGlShaderAssembler } from '../_Base';
import { IUniforms } from '../../../../../../core/geometry/Material';
import { ShaderConfig } from '../../configs/ShaderConfig';
import { VariableConfig } from '../../configs/VariableConfig';
import { ShaderName } from '../../../../utils/shaders/ShaderName';
import { OutputGlNode } from '../../../Output';
import { GlobalsGlNode } from '../../../Globals';
import { ShadersCollectionController } from '../../utils/ShadersCollectionController';
export declare class ShaderAssemblerTexture2DArray extends BaseGlShaderAssembler {
    private _uniforms;
    templateShader(): {
        fragmentShader: string;
        vertexShader: undefined;
        uniforms: {
            uLayer: {
                value: number;
            };
        };
    };
    fragment_shader(): string | undefined;
    uniforms(): IUniforms | undefined;
    updateFragmentShader(): void;
    add_output_inputs(output_child: OutputGlNode): void;
    add_globals_outputs(globals_node: GlobalsGlNode): void;
    create_shader_configs(): ShaderConfig[];
    create_variable_configs(): VariableConfig[];
    protected insertDefineAfter(shader_name: ShaderName): string;
    protected insertBodyAfter(shader_name: ShaderName): string;
    protected linesToRemove(shader_name: ShaderName): string[];
    private _handle_gl_FragCoord;
    private _handle_resolution;
    private _handleUVW;
    private _handleLayer;
    set_node_lines_output(output_node: OutputGlNode, shaders_collection_controller: ShadersCollectionController): void;
    set_node_lines_globals(globals_node: GlobalsGlNode, shaders_collection_controller: ShadersCollectionController): void;
}
