import { Output } from "../output"; import { Generator } from "../shader/generator"; import { Shader, UniformValue, Uniforms } from "../shader/shader"; import type { Synth } from "../synth"; import { Texture } from "../texture"; import type { GLSLFunction, GLSLFunctionType, Input, Inputs } from "./functions"; import type { GLSLUtility } from "./utilities"; import { DefinesName } from "./utilities/defines"; type GLSLArg = GLSLSource | string | Output | UniformValue | (() => UniformValue); export declare const glslIds: Record; declare class GLSLSource { id: string; synth: Synth; parent?: GLSLSource; name: string; fn: GLSLFunction; type: GLSLFunctionType | "code"; codeType: GLSLFunctionType; inputs: Inputs; utilities: GLSLUtility[]; functions: string[]; varyings: string[]; defines: (DefinesName | string)[]; child?: GLSLSource; glsl: string; output?: Output; args: GLSLArg[]; uniforms: Uniforms; constructor(synth: Synth, glslFunction: GLSLFunction, args?: any, parent?: GLSLSource); draw(texture?: Texture | Output): this; out(output?: Output | Texture): Shader; generator(): Generator; getRoot(): GLSLSource; generate(inValue?: (inValue: string) => string): Generator; static resolve(synth: Synth, arg: GLSLArg, inValue: (st: any) => string): Generator; static resolveArguments(synth: Synth, id: string, result: Generator, args: GLSLArg[], defaultsValues: Input[]): any[]; require(...requires: (GLSLUtility | GLSLFunction | DefinesName)[]): this; uniform(toAdd: Record UniformValue)> | Inputs | Uniforms, value?: UniformValue): this; define(toAdd: Record | string, value?: string | number | boolean): this; } export { GLSLSource };