/// export declare class Shader { vertex: WebGLShader; fragment: WebGLShader; vertexSource: string; fragmentSource: string; attributes: {}; uniforms: {}; macros: {}; ctx: WebGL2RenderingContext; program: WebGLProgram; isDirty: boolean; constructor(vertCode?: any, fragCode?: any, macros?: {}); static clone(shader: Shader): Shader; static macros: string; static buildProgram(shader: Shader, ctx: any): void; static updateUniform(shader: Shader): void; static pickupActiveAttributes(ctx: WebGL2RenderingContext, shader: WebGLProgram): {}; static pickupActiveUniforms(gl: WebGL2RenderingContext, shader: WebGLProgram): {}; static compileShader(gl: WebGL2RenderingContext, type: any, code: any): WebGLShader; static createShaderProgram(gl: WebGL2RenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram; } export declare class Uniform { location: WebGLUniformLocation; type: GLenum; setter: string; argLength: number; constructor(location: WebGLUniformLocation, type: GLenum, setter: string, argLength: number); value: any; isDirty: boolean; static getUnifSetter(type: GLenum): "uniform1f" | "uniform2f" | "uniform3fv" | "uniform4f" | "uniform1i" | "uniform2i" | "uniform3i" | "uniform4i" | "uniformMatrix2fv" | "uniformMatrix3fv" | "uniformMatrix4fv"; static getUnifArgLenght(type: GLenum): 3 | 2; }