import { WebglAttributeType, WebglUniformType } from "..";
import { TgdCodeBloc, TgdCodeFunctions, TgdCodeVariables } from "./code";
/**
 * Helper to create a Vertex Shader.
 *
 * Sometime you need to add some code to a shader depending on
 * what you want to display. This can be the case when you use
 * different materials. All the 3D transformations are common,
 * but you may need more or less varyings and uniforms.
 * @see https://registry.khronos.org/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf
 */
export declare class TgdShaderVertex {
    protected static counter: number;
    readonly name: string;
    precision: "lowp" | "mediump" | "highp";
    uniforms: TgdCodeVariables<WebglUniformType>;
    attributes: TgdCodeVariables<WebglAttributeType>;
    varying: TgdCodeVariables<WebglAttributeType>;
    functions: TgdCodeFunctions;
    mainCode: TgdCodeBloc;
    mainCodeHeaders: TgdCodeBloc[];
    private readonly header;
    constructor({ name, precision, uniforms, attributes, varying, functions, mainCode, mainCodeHeaders, header, }?: Partial<{
        name: string;
        precision: "lowp" | "mediump" | "highp";
        uniforms: TgdCodeVariables<WebglUniformType>;
        attributes: TgdCodeVariables<WebglAttributeType>;
        varying: TgdCodeVariables<WebglAttributeType>;
        functions: TgdCodeFunctions;
        mainCode: TgdCodeBloc;
        mainCodeHeaders: TgdCodeBloc[];
        header: TgdCodeBloc;
    }>);
    clone(): TgdShaderVertex;
    get code(): string;
    createShader(gl: WebGL2RenderingContext): WebGLShader;
    debug(caption?: string): void;
}
//# sourceMappingURL=vertex.d.ts.map