import Shader, { AttributeSemantic, UniformType } from '../Shader'; import GLTexture from './GLTexture'; declare class GLProgram { readonly uid: number; semanticsMap: Shader['semanticsMap']; attributes: Shader['attributes']; vertexCode: string; fragmentCode: string; private _uniformLocations; private _textureSlot; private _program?; private _cachedAttribLoc; private _valueCache; private _vertexShader?; private _fragmentShader?; __error?: string; __compiling?: boolean; constructor(); bind(gl: WebGL2RenderingContext): void; isValid(): boolean; isCompiling(): boolean | undefined; checkParallelCompiled(gl: WebGL2RenderingContext, parallelExt: any): boolean | undefined; hasUniform(symbol: string): boolean; useTextureSlot(gl: WebGL2RenderingContext, texture: GLTexture | undefined, slot: number): void; currentTextureSlot(): number; resetTextureSlot(slot: number): void; takeTextureSlot(gl: WebGL2RenderingContext, texture?: GLTexture): number; set(_gl: WebGL2RenderingContext, type: UniformType, symbol: string, value: any, valueArray: boolean, force?: boolean): boolean; setSemanticUniform(_gl: WebGL2RenderingContext, semantic: string, val: any): boolean; getAttributeLocation(gl: WebGL2RenderingContext, attribBuffer: { name: string; semantic?: AttributeSemantic; }): number; buildProgram(gl: WebGL2RenderingContext, shader: Shader, vertexShaderCode: string, fragmentShaderCode: string): void; updateLinkStatus(gl: WebGL2RenderingContext): void; } export default GLProgram;