import { Scene } from "./Scene.js";
import type { SerializedSceneMetadata } from "./SceneMetadata.js";
export interface SerializedSceneNode {
    id: string;
    name: string;
    visible: boolean;
    layerMask: number;
    kind: "node" | "perspectiveCamera" | "orthographicCamera" | "directionalLight" | "pointLight" | "spotLight";
    transform: {
        position: [number, number, number];
        rotation: [number, number, number, number];
        scale: [number, number, number];
    };
    renderable?: {
        geometry: string;
        material: string;
        layerMask: number;
        castShadow: boolean;
        receiveShadow: boolean;
        morphWeights?: readonly number[];
        instanceTransforms?: readonly number[];
        instanceColors?: readonly number[];
    };
    camera?: {
        fovYRadians?: number;
        aspect?: number;
        left?: number;
        right?: number;
        bottom?: number;
        top?: number;
        near: number;
        far: number;
        zoom?: number;
        resizeMode?: "fit-vertical" | "fit-horizontal" | "preserve-frustum";
        viewport: {
            x: number;
            y: number;
            width: number;
            height: number;
        };
    };
    light?: {
        color: [number, number, number];
        intensity: number;
        castsShadow: boolean;
        range?: number;
        angle?: number;
        penumbra?: number;
    };
    children: SerializedSceneNode[];
}
export interface SerializedScene {
    version: 1;
    metadata?: SerializedSceneMetadata;
    root: SerializedSceneNode;
}
export declare function serializeScene(scene: Scene): SerializedScene;
export declare function deserializeScene(serialized: SerializedScene): Scene;
//# sourceMappingURL=SceneSerializer.d.ts.map