import { ShaderName } from '../../../utils/shaders/ShaderName';
import { BaseGLDefinition } from '../../utils/GLDefinition';
import { LinesController, DefinitionTraverseCallback, AddBodyLinesOptions } from './LinesController';
import { BaseGlNodeType } from '../../_Base';
import { TypedAssembler } from '../../../utils/shaders/BaseAssembler';
import { NodeContext } from '../../../../poly/NodeContext';
export declare class ShadersCollectionController {
    private _shaderNames;
    private _currentShaderName;
    private _assembler;
    private _linesControllerByShaderName;
    constructor(_shaderNames: ShaderName[], _currentShaderName: ShaderName, _assembler: TypedAssembler<NodeContext.GL>);
    assembler(): TypedAssembler<NodeContext.GL>;
    linesController(shaderName: ShaderName): LinesController | undefined;
    shaderNames(): ShaderName[];
    setCurrentShaderName(shaderName: ShaderName): void;
    currentShaderName(): ShaderName;
    addDefinitions(node: BaseGlNodeType, definitions: BaseGLDefinition[], shaderName?: ShaderName): void;
    definitions(shaderName: ShaderName, node: BaseGlNodeType): BaseGLDefinition[] | undefined;
    traverseDefinitions(shaderName: ShaderName, callback: DefinitionTraverseCallback): void;
    addBodyLines(node: BaseGlNodeType, lines: string[], shaderName?: ShaderName, options?: AddBodyLinesOptions): void;
    bodyLines(shaderName: ShaderName, node: BaseGlNodeType): string[] | undefined;
}
