import '../../../globals.js';
export type ShaderProgramOptions = {
    attributes?: string[];
    uniforms?: string[];
};
export default class ShaderProgram {
    private vertexSource;
    private fragmentSource;
    private attributeNames;
    private uniformNames;
    private gl;
    private used;
    private program;
    private vertexShader;
    private fragmentShader;
    uniformLocations: Record<string, WebGLUniformLocation>;
    attributeLocations: Record<string, number>;
    activeAttributes: Record<string, boolean>;
    private isInitialized;
    constructor(gl: WebGLRenderingContext, vertexSource: string, fragmentSource: string, providedOptions?: ShaderProgramOptions);
    /**
     * Initializes (or reinitializes) the WebGL state and uniform/attribute references.
     */
    initialize(gl: WebGLRenderingContext): void;
    /**
     */
    use(): void;
    activateAttribute(attributeName: string): void;
    enableVertexAttribArray(attributeName: string): void;
    unuse(): void;
    disableVertexAttribArray(attributeName: string): void;
    deactivateAttribute(attributeName: string): void;
    /**
     * Releases references
     */
    dispose(): void;
}
//# sourceMappingURL=ShaderProgram.d.ts.map