import { PolyDictionary } from './../../../../types/GlobalTypes';
import { PolyNodeDefinition } from './../../../nodes/utils/poly/PolyNodeDefinition';
import { PolyScene } from '../../../scene/PolyScene';
import { NodeJsonExporterData, NodeJsonExporterUIData, NodeJSONFunctionBodiesData, NodeJSONShadersData } from './Node';
interface Versions {
    polygonjs: string;
}
export interface SceneJsonExporterDataProperties {
    frame: number;
    maxFrame: number;
    maxFrameLocked: boolean;
    realtimeState: boolean;
    mainCameraPath?: string | null;
    mainCameraNodePath?: string | null;
    versions?: Versions;
}
export interface SceneJsonExporterData {
    properties?: SceneJsonExporterDataProperties;
    root?: NodeJsonExporterData;
    ui?: NodeJsonExporterUIData;
    shaders?: NodeJSONShadersData;
    jsFunctionBodies?: NodeJSONFunctionBodiesData;
    embeddedPolyNodes?: PolyDictionary<PolyNodeDefinition>;
}
interface SceneJsonExporterDataOptions {
    versions?: Versions;
    withPersistedConfig?: boolean;
}
export declare class SceneJsonExporter {
    private _scene;
    private _data;
    private dispatcher;
    constructor(_scene: PolyScene);
    data(options?: SceneJsonExporterDataOptions): Promise<SceneJsonExporterData>;
}
export {};
