import { Camera } from "./Camera.js";
import { DirectionalLight } from "./DirectionalLight.js";
import { Light } from "./Light.js";
import { Group, InstancedMesh, Mesh, Object3D, SkinnedMesh, type MeshOptions, type Object3DOptions } from "./Object3D.js";
import { OrthographicCamera } from "./OrthographicCamera.js";
import { PerspectiveCamera } from "./PerspectiveCamera.js";
import { PointLight } from "./PointLight.js";
import { Renderable } from "./Renderable.js";
import { type SceneQueryOptions } from "./SceneQuery.js";
import { SceneMetadata } from "./SceneMetadata.js";
import { SceneNode } from "./SceneNode.js";
import { SpotLight } from "./SpotLight.js";
export declare class Scene {
    readonly root: SceneNode;
    readonly metadata: SceneMetadata;
    private readonly nodesById;
    createNode(name?: string): SceneNode;
    createObject3D(options?: Object3DOptions): Object3D;
    createGroup(options?: Object3DOptions): Group;
    createMesh(options?: MeshOptions): Mesh;
    createSkinnedMesh(options?: MeshOptions): SkinnedMesh;
    createInstancedMesh(options?: MeshOptions): InstancedMesh;
    createPerspectiveCamera(options?: ConstructorParameters<typeof PerspectiveCamera>[0]): PerspectiveCamera;
    createOrthographicCamera(options?: ConstructorParameters<typeof OrthographicCamera>[0]): OrthographicCamera;
    createLight(kind: "directional" | "point" | "spot", name?: string): DirectionalLight | PointLight | SpotLight;
    addRenderable(node: SceneNode, renderable: Renderable): void;
    getNodeById(id: string): SceneNode | undefined;
    findByName(name: string): SceneNode[];
    query(options: SceneQueryOptions): SceneNode[];
    updateWorldTransforms(): void;
    updateWorldBounds(): void;
    update(): void;
    traverse(visitor: (node: SceneNode) => void): void;
    collectRenderables(): {
        node: SceneNode;
        renderable: Renderable;
    }[];
    collectCameras(): Camera[];
    collectLights(): Light[];
    removeNode(node: SceneNode): boolean;
    dispose(): void;
    registerSubtree(node: SceneNode): void;
    private register;
}
//# sourceMappingURL=Scene.d.ts.map