import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
import type { QuadOptions } from '../CoreRenderer.js';
import type { CoreShaderProgram } from '../CoreShaderProgram.js';
import type { WebGlCtxTexture } from './WebGlCtxTexture.js';
import type { WebGlRenderOp } from './WebGlRenderOp.js';
import type { WebGlRenderer } from './WebGlRenderer.js';
import type { WebGlShaderType } from './WebGlShaderNode.js';
import type { BufferCollection } from './internal/BufferCollection.js';
export declare class WebGlShaderProgram implements CoreShaderProgram {
    protected boundBufferCollection: BufferCollection | null;
    protected program: WebGLProgram;
    /**
     * Vertex Array Object
     *
     * @remarks
     * Used by WebGL2 Only
     */
    protected vao: WebGLVertexArrayObject | undefined;
    protected renderer: WebGlRenderer;
    protected glw: WebGlContextWrapper;
    protected attributeLocations: Record<string, number>;
    protected lifecycle: Pick<WebGlShaderType, 'update' | 'canBatch'>;
    protected useSystemAlpha: boolean;
    protected useSystemDimensions: boolean;
    supportsIndexedTextures: boolean;
    constructor(renderer: WebGlRenderer, config: WebGlShaderType, resolvedProps: Record<string, any>);
    disableAttribute(location: number): void;
    disableAttributes(): void;
    reuseRenderOp(incomingQuad: QuadOptions, currentRenderOp: WebGlRenderOp): boolean;
    bindRenderOp(renderOp: WebGlRenderOp): void;
    bindBufferCollection(buffer: BufferCollection): void;
    bindTextures(textures: WebGlCtxTexture[]): void;
    attach(): void;
    detach(): void;
}
