import { UniformType, UniformValue } from './uniform'; export interface ProgramAttrib { type: number; size: number; norm: boolean; count: number; stride: number; offset: number; location: number; buffer: WebGLBuffer; target: GLenum; } export declare class Program { protected gl: WebGLRenderingContext; private indicesLen; private buffers; private attribs; private uniforms; private _indexType; private vertex; private fragment; private _program; private bound; constructor(gl: WebGLRenderingContext, vertex: string, fragment: string); bind(): void; unbind(): void; hasIndices(): boolean; bindAttribs(): number; uniform(name: string, value?: UniformValue, type?: UniformType, warn?: boolean): WebGLUniformLocation; bindIndices(): number; setIndices(data: number[] | Uint16Array): void; setIndexType(type: number): void; setPositions(data: number[] | Float32Array, size?: number, count?: boolean, name?: string): void; setNormals(data: number[] | Float32Array, size?: number, name?: string): void; setTextureCoords(data: number[] | Float32Array, size?: number, name?: string): void; indexType(): number; attribute(name: string, data: WebGLBuffer | Float32Array | Uint16Array, size?: number, count?: boolean, norm?: boolean, target?: number, type?: number, stride?: number, offset?: number): void; attribLoc(name: string): number; attribExists(name: string): boolean; bufferData(name: string, data: ArrayBufferView | ArrayBuffer, target?: GLenum): WebGLBuffer; get program(): WebGLProgram; destroy(): void; }