/** Applies document-owned material overrides to imported materials. */ import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js"; import type { Material } from "@babylonjs/core/Materials/material.js"; import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js"; import type { Scene } from "@babylonjs/core/scene.js"; import type { MaterialBindingRecord, MaterialOverride, SceneDocumentData, MaterialExecutionPolicy, MaterialPreparationEvent, MaterialEffectRuntimeProperty, GpuProgramPreparationReport } from "@skenora/contracts"; import type { ResourceResolver } from "@skenora/resources"; import type { GpuProgramCache } from "./gpu-program-cache.js"; import type { CutoutPassTarget } from "./cutout-pass-controller.js"; export type MaterialResolver = (binding: Readonly) => Material | null; export interface MaterialControllerOptions { policy?: MaterialExecutionPolicy; onPreparation?: (event: MaterialPreparationEvent) => void; onGpuProgramPreparation?: (event: GpuProgramPreparationReport) => void; gpuProgramCache?: GpuProgramCache; getCutoutPassTargets?: () => readonly CutoutPassTarget[]; } /** Applies document-owned PBR overrides without owning imported materials. */ export declare class MaterialController { #private; readonly scene: Scene; readonly resources: ResourceResolver; constructor(scene: Scene, resources: ResourceResolver, resolve: MaterialResolver, options?: MaterialControllerOptions); apply(document: Readonly, isCurrent?: () => boolean): Promise; getOwnedMaterials(materialId: string): readonly PBRMaterial[] | null; prepareProgramParameter(materialId: string, parameter: string, value: unknown): () => void; setEffectProperty(materialId: string, property: MaterialEffectRuntimeProperty, value: unknown): void; prepareEffectProperty(materialId: string, property: MaterialEffectRuntimeProperty, value: unknown): () => void; restoreAnimationValues(materialId: string, definition: Readonly): void; readOriginalMaterial(mesh: AbstractMesh): Material | null; capture(material: PBRMaterial, identity: Pick): MaterialOverride; dispose(): void; } //# sourceMappingURL=material-controller.d.ts.map