import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js"; import type { Scene } from "@babylonjs/core/scene.js"; import type { MaterialOverride, FogConfig, GroundConfig, PostProcessConfig, SceneDocumentData, WeatherConfig } from "@skenora/contracts"; import type { ResourceResolver } from "@skenora/resources"; import { EnvironmentController } from "../systems/environment-controller.js"; import { LightingController } from "../systems/lighting-controller.js"; import { MaterialController, type MaterialResolver, type MaterialControllerOptions } from "../systems/material-controller.js"; /** * Coordinates independent scene-setting controllers. * * Each controller owns only the Babylon resources it creates. Imported models, * materials and cameras remain owned by RuntimeSession/AssetContainer. */ export declare class SceneDocumentApplier { #private; readonly scene: Scene; readonly resources: ResourceResolver; readonly environment: EnvironmentController; readonly lighting: LightingController; readonly materials: MaterialController; constructor(scene: Scene, resources: ResourceResolver, resolveMaterial: MaterialResolver, materialOptions?: MaterialControllerOptions); apply(document: Readonly, signal?: AbortSignal): Promise; applyEnvironment(document: Readonly): Promise; applyGround(document: Readonly): Promise; applyFog(document: Readonly): Promise; applyWeather(document: Readonly): Promise; applyLights(document: Readonly): void; applyPostProcess(document: Readonly): Promise; captureWeather(fallback: Readonly): WeatherConfig; captureGround(fallback: Readonly): GroundConfig; captureFog(fallback: Readonly): FogConfig; capturePostProcess(fallback: Readonly): PostProcessConfig; refreshPostProcessCamera(): void; applyMaterials(document: Readonly): Promise; captureMaterial(material: PBRMaterial, identity: Pick): MaterialOverride; dispose(): void; } //# sourceMappingURL=document-applier.d.ts.map