/**
 * Class responsible for managing {@link GSplatManager} instances for Cameras and their Layers.
 *
 * @ignore
 */
export class GSplatDirector {
    /**
     * @param {GraphicsDevice} device - The graphics device.
     * @param {Scene} scene - The scene.
     * @param {GSplatAssetLoaderBase} assetLoader - The asset loader.
     */
    constructor(device: GraphicsDevice, scene: Scene, assetLoader: GSplatAssetLoaderBase);
    /**
     * @type {GraphicsDevice}
     */
    device: GraphicsDevice;
    /**
     * Per camera data.
     *
     * @type {Map<Camera, GSplatCameraData>}
     */
    camerasMap: Map<Camera, GSplatCameraData>;
    /**
     * Global octrees, allowing sharing between its placements.
     *
     * @type {Map<GSplatOctreeResource, GSplatOctree>}
     */
    octrees: Map<GSplatOctreeResource, GSplatOctree>;
    /**
     * @type {GSplatAssetLoaderBase}
     */
    assetLoader: GSplatAssetLoaderBase;
    /**
     * @type {Scene}
     */
    scene: Scene;
    getCameraData(camera: any): GSplatCameraData;
    /**
     * Updates the director for the given layer composition cameras and layers.
     *
     * @param {LayerComposition} comp - The layer composition.
     */
    update(comp: LayerComposition): void;
}
import type { GraphicsDevice } from '../../platform/graphics/graphics-device.js';
import type { Camera } from '../camera.js';
/**
 * Per camera data the director keeps track of.
 *
 * @ignore
 */
declare class GSplatCameraData {
    /**
     * @type {Map<Layer, GSplatLayerData>}
     */
    layersMap: Map<Layer, GSplatLayerData>;
    destroy(): void;
    removeLayerData(layer: any): void;
    getLayerData(device: any, director: any, layer: any, cameraNode: any): GSplatLayerData;
}
import type { GSplatOctreeResource } from './gsplat-octree.resource.js';
import type { GSplatOctree } from './gsplat-octree.js';
import type { GSplatAssetLoaderBase } from './gsplat-asset-loader-base.js';
import type { Scene } from '../scene.js';
import type { LayerComposition } from '../composition/layer-composition.js';
import type { Layer } from '../layer.js';
/**
 * @import { GSplatOctree } from './gsplat-octree.js';
 * @import { LayerComposition } from '../composition/layer-composition.js'
 * @import { Camera } from '../camera.js'
 * @import { Layer } from '../layer.js'
 * @import { GraphicsDevice } from '../../platform/graphics/graphics-device.js'
 * @import { GraphNode } from '../graph-node.js'
 * @import { GSplatOctreeResource } from './gsplat-octree.resource.js'
 * @import { GSplatAssetLoaderBase } from './gsplat-asset-loader-base.js'
 * @import { Scene } from '../scene.js'
 */
/**
 * Per layer data the director keeps track of.
 *
 * @ignore
 */
declare class GSplatLayerData {
    /**
     * @param {GraphicsDevice} device - The graphics device.
     * @param {GSplatDirector} director - The director.
     * @param {Layer} layer - The layer.
     * @param {GraphNode} cameraNode - The camera node.
     */
    constructor(device: GraphicsDevice, director: GSplatDirector, layer: Layer, cameraNode: GraphNode);
    /**
     * @type {GSplatManager}
     */
    gsplatManager: GSplatManager;
    destroy(): void;
}
import { GSplatManager } from './gsplat-manager.js';
import type { GraphNode } from '../graph-node.js';
export {};
