import { UniformValue, InternalUniformValue } from './UniformValue'; export interface MaterialProps { vertexShader?: string; fragmentShader?: string; uniforms?: UniformList; deferCompilation?: boolean; } export interface UniformList { [key: string]: UniformValue; } declare type UniformUpdateFunction = (previousValue: InternalUniformValue) => InternalUniformValue | void; interface UniformUpdateList { [key: string]: UniformUpdateFunction; } export default class Material { private vertexSrc; private fragmentSrc; private gl; private program; private uniforms; private attributeLocations; private queuedUniforms; private textures; private deferCompilation; private compilationStarted; readonly isMaterial = true; constructor(props?: MaterialProps); private compile; getAttributeLocation(name: string): number; private createUniformReferences; private commitUniforms; private bindTextures; use(gl: WebGLRenderingContext): boolean; setUniform(key: string, value: UniformValue): void; setUniforms(list: UniformList): void; updateUniform(key: string, func: UniformUpdateFunction): void; updateUniforms(list: UniformUpdateList): void; getUniform(key: string): unknown; delete(): void; } export {};