export declare function getAttributeItemsCount(attr: ProgramAttributeSpecification): number; export declare function getAttributesItemsCount(attrs: ProgramAttributeSpecification[]): number; export interface ProgramInfo { name: string; isPicking: boolean; program: WebGLProgram; gl: WebGLRenderingContext | WebGL2RenderingContext; frameBuffer: WebGLFramebuffer | null; buffer: WebGLBuffer; constantBuffer: WebGLBuffer; uniformLocations: Record; attributeLocations: Record; vertexShader: WebGLShader; fragmentShader: WebGLShader; } export interface ProgramAttributeSpecification { name: string; size: number; type: number; normalized?: boolean; } export interface ProgramDefinition { VERTICES: number; VERTEX_SHADER_SOURCE: string; FRAGMENT_SHADER_SOURCE: string; UNIFORMS: ReadonlyArray; ATTRIBUTES: Array; METHOD: number; } export interface InstancedProgramDefinition extends ProgramDefinition { CONSTANT_ATTRIBUTES: Array; CONSTANT_DATA: number[][]; } export declare function loadVertexShader(gl: WebGLRenderingContext, source: string): WebGLShader; export declare function loadFragmentShader(gl: WebGLRenderingContext, source: string): WebGLShader; export declare function loadProgram(gl: WebGLRenderingContext, shaders: Array): WebGLProgram; export declare function killProgram({ gl, buffer, program, vertexShader, fragmentShader }: ProgramInfo): void; export declare function numberToGLSLFloat(n: number): string;