import { TgdMat3, TgdMat4, TgdVec3, TgdVec4 } from "../math";
import { TgdProgramOptions } from "../types";
/**
 * This class helps to manage a WebGLProgram.
 * It will report meaninfull errors and help you with
 * the uniforms.
 */
export declare class TgdProgram {
    readonly gl: WebGL2RenderingContext;
    private readonly code;
    /** Access to the real WebGLProgram object. */
    readonly program: WebGLProgram;
    private readonly shaders;
    private readonly uniformsLocations;
    constructor(gl: WebGL2RenderingContext, code: TgdProgramOptions);
    toCode({ indent }?: Partial<{
        indent: string;
    }>): string;
    hasAttribute(name: string): boolean;
    getAttribLocation(name: string): number;
    getUniformLocation(name: string): WebGLUniformLocation;
    uniform1f(name: string, value: number): void;
    uniform2f(name: string, x: number, y: number): void;
    uniform3f(name: string, x: number, y: number, z: number): void;
    uniform3fv(name: string, vec3: TgdVec3): void;
    uniform4f(name: string, x: number, y: number, z: number, w: number): void;
    uniform4fv(name: string, vec4: TgdVec4): void;
    uniform1i(name: string, value: number): void;
    uniform2i(name: string, x: number, y: number): void;
    uniform3i(name: string, x: number, y: number, z: number): void;
    uniform4i(name: string, x: number, y: number, z: number, w: number): void;
    uniform1ui(name: string, value: number): void;
    uniform2ui(name: string, x: number, y: number): void;
    uniform3ui(name: string, x: number, y: number, z: number): void;
    uniform4ui(name: string, x: number, y: number, z: number, w: number): void;
    uniformMatrix3fv(name: string, mat3: TgdMat3): void;
    uniformMatrix4fv(name: string, mat4: TgdMat4): void;
    /**
     * Use the current program.
     * This is equivalent to `gl.useProgram(program)`.
     */
    use(): void;
    delete(): void;
    debug(caption?: string): void;
    private createShader;
    private getUniformsLocations;
}
//# sourceMappingURL=program.d.ts.map