import type { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js"; import { MaterialPluginBase } from "@babylonjs/core/Materials/materialPluginBase.js"; import type { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js"; import type { UniformBuffer } from "@babylonjs/core/Materials/uniformBuffer.js"; import { type MaterialProgram } from "@skenora/contracts"; import type { PreparedGpuProgram } from "./gpu-program-cache.js"; /** One trusted compiler-backed plugin per owned material; authored GLSL is never accepted. */ export declare class SurfaceProgramPlugin extends MaterialPluginBase { private program; private compiled; private artifact; private disposed; private readonly parameterValues; constructor(material: PBRMaterial, program: MaterialProgram, prepared?: Pick); update(program: MaterialProgram, prepared?: Pick): void; /** Stages one uniform value without compiling or changing the authored definition. */ prepareParameterWrite(parameter: string, value: unknown): () => void; private resetParameterValues; prepareDefines(defines: MaterialDefines): void; getClassName(): string; getUniforms(): { ubo: { name: string; size: number; type: string; }[]; fragment: string; }; hardBindForSubMesh(buffer: UniformBuffer): void; getCustomCode(shaderType: string): Record | null; dispose(): void; } //# sourceMappingURL=surface-program-plugin.d.ts.map