import * as THREE from 'three/webgpu'; export interface SplatRenderViewContext { readonly renderTarget: THREE.RenderTarget | null; readonly width: number; readonly height: number; readonly viewport: THREE.Vector4; readonly scissor: THREE.Vector4; readonly camera: THREE.Camera; readonly coordinateSystem: THREE.CoordinateSystem; readonly pixelRatio: number; readonly isFullViewport: boolean; } export interface SplatSceneCoordinatorHandle { remove(splats: SplatCoordinatedMesh): void; } export interface SplatCoordinatedMesh extends THREE.Object3D { autoUpdate: boolean; _disposed: boolean; readonly _splatSceneCoordinators: Set; update(renderer: THREE.Renderer, camera: THREE.Camera, viewContext: SplatRenderViewContext): void; } /** * Build the active physical render-view context used by Gaussian splat projection. * * @param {THREE.Renderer} renderer Active renderer. * @param {THREE.Camera} camera Active camera. * @param {THREE.RenderTarget|null} [renderTarget] Active render target. * @returns {Object} Render-view context. */ export declare function createSplatRenderViewContext(renderer: THREE.Renderer, camera: THREE.Camera, renderTarget?: THREE.RenderTarget | null): SplatRenderViewContext; /** * Find the Scene containing an Object3D. * * @param {THREE.Object3D} object Object to inspect. * @returns {THREE.Scene|null} Containing scene, if attached. */ export declare function findSplatScene(object: THREE.Object3D): THREE.Scene | null; /** * Register splats for automatic updates before a scene render pass starts. * * @param {GaussianSplats} splats Gaussian splat mesh. * @param {THREE.Scene} scene Containing scene. */ export declare function registerSplatMesh(splats: SplatCoordinatedMesh, scene: THREE.Scene): void; /** * Remove splats from all automatic scene update coordinators. * * @param {GaussianSplats} splats Gaussian splat mesh. */ export declare function unregisterSplatMesh(splats: SplatCoordinatedMesh): void;