import { GLSLFunctionSource, GLSLFunctionType, Input, Inputs, glsl_functions, glsl_utilities } from "../glsl"; import { DefinesName } from "../glsl/utilities/defines"; import { Synth } from "../synth"; import { Precision, Shader, ShaderDefines, ShaderUniforms, ShaderVaryings, UniformType, UniformValue, Uniforms } from "./shader"; export interface Generator { uniforms?: Uniforms; defines?: (DefinesName | string)[]; varyings?: string[]; utilities?: (keyof typeof glsl_utilities | string)[]; functions?: ((typeof glsl_functions)[number]["name"] | GLSLFunctionSource)[]; code?: { type: GLSLFunctionType; name: string; source: string; inputs: Input[]; }[]; value: (inValue: string) => string; dependencies?: Shader[]; } export declare const Generate: { version: string; function(type: GLSLFunctionType, name: string, inputs: Inputs | Record UniformValue)>, source?: string, onlyDeclaration?: boolean): string; fragment(precision: "lowp" | "mediump" | "highp", generator: Generator, shaderUniforms?: Uniforms, shaderDefines?: ShaderDefines, shaderVaryings?: ShaderVaryings): string; vertex(precision: Precision, generator: Generator, shaderUniforms?: Uniforms, shaderDefines?: ShaderDefines, shaderVaryings?: ShaderVaryings): string; generator(generator: Generator, shader?: number, shaderUniforms?: Uniforms, shaderDefines?: ShaderDefines, shaderVaryings?: ShaderVaryings): string; glsl(shader: number, precision: Precision, generator: Generator, shaderUniforms: Uniforms, shaderDefines: ShaderDefines, shaderVaryings: ShaderVaryings, body: string): string; uniforms(synth: Synth, uniforms?: Uniforms | ShaderUniforms): ShaderUniforms; varyngs(shaderType: number, varyings: ShaderVaryings): string[]; merge(source: Generator, toAdd: Partial): void; toUniformType(value: UniformValue): UniformType | -1; sanitizeInput(input: Record UniformValue)> | Inputs): Inputs; sanitizeUniforms(uniforms: Record UniformValue)> | Inputs | Uniforms | ShaderUniforms): Uniforms; sanitizeShaderString(str: string, precition: Precision): string; sanitizeFunctionCode(code: string, finalAssign?: string): string; numberFormatter(value: number): string; };