import { NodeJsonExporterData } from './../export/Node';
import { BaseNodeType } from './../../../nodes/_Base';
import { PolyScene } from '../../../scene/PolyScene';
import { SceneJsonExporterData } from '../export/Scene';
import { ImportReport } from './ImportReport';
import { OperationsComposerSopNode } from '../../../nodes/sop/OperationsComposer';
import { CoreNodeSerializer } from '../../../nodes/utils/CoreNodeSerializer';
import { CoreParamSerializer } from '../../../params/utils/CoreParamSerializer';
import type { ParamType } from '../../../poly/ParamType';
export type ConfigureSceneCallback = (scene: PolyScene) => void;
export type NodeCookWatchCallback = (scene: PolyScene) => void;
export interface SerializerOptions {
    nodeSerializerClass: typeof CoreNodeSerializer;
    paramsSerializerClass: typeof CoreParamSerializer<ParamType>;
}
interface SceneJSONImporterOptions {
    sceneName?: string;
    configureScene?: ConfigureSceneCallback;
    nodeCookWatcher?: NodeCookWatchCallback;
    measurePerformanceOnLoad?: boolean;
    serializers?: SerializerOptions;
}
interface MigrateHelper {
    migrateData: (data: SceneJsonExporterData) => SceneJsonExporterData;
    migrateNodeType: (parentNode: BaseNodeType, nodeData: NodeJsonExporterData) => string;
    migrateParams: (parentNode: BaseNodeType, nodeData: NodeJsonExporterData) => void;
}
export declare class SceneJsonImporter {
    private _data;
    private _options?;
    readonly report: ImportReport;
    private _base_operations_composer_nodes_with_resolve_required;
    constructor(_data: SceneJsonExporterData, _options?: SceneJSONImporterOptions | undefined);
    static loadData(data: SceneJsonExporterData, options?: SceneJSONImporterOptions): Promise<PolyScene>;
    private _migrateHelper;
    setMigrateHelper(migrateHelper: MigrateHelper): void;
    migrateHelper(): MigrateHelper | undefined;
    oldPolygonjsSceneVersion(): string | undefined;
    scene(options?: SerializerOptions): PolyScene;
    shadersData(): import("./../export/Node").NodeJSONShadersData | undefined;
    jsFunctionBodiesData(): import("./../export/Node").NodeJSONFunctionBodiesData | undefined;
    add_operations_composer_node_with_path_param_resolve_required(operations_composer_node: OperationsComposerSopNode): void;
    private _resolve_operation_containers_with_path_param_resolve;
}
export {};
