import { Ref, ShallowRef } from 'vue';
import { Dependencie, Material, ApiSchema, MetaSchema, ProjectConfig, UniConfig, Base } from '@vtj/core';
import { Renderer } from './renderer';
import { Designer } from './designer';
import { Engine } from './engine';
import { DevTools } from './devtools';
declare global {
    interface Window {
        __simulator__: Simulator;
        Vue?: any;
        VueRouter?: any;
        ElementPlus?: any;
    }
}
export interface SimulatorEnv {
    window: Window;
    Vue: any;
    VueRouter: any;
    library: Record<string, any>;
    materials: Record<string, any>;
    components: Record<string, any>;
    apis: Record<string, any>;
    container: HTMLElement;
    globals: Record<string, any>;
    libraryLocaleMap: Record<string, any>;
    locales: Record<string, any>;
}
export interface SimulatorOptions {
    engine: Engine;
    materialPath: string;
}
export declare class Simulator extends Base {
    contentWindow: Window | null;
    renderer: Renderer | null;
    designer: ShallowRef<Designer | null>;
    engine: Engine;
    materialPath: string;
    rendered: Ref<symbol>;
    devtools: DevTools;
    constructor(options: SimulatorOptions);
    init(iframe: Ref<HTMLIFrameElement | undefined>, deps: Ref<Dependencie[]>, apis: Ref<ApiSchema[]>, meta: Ref<MetaSchema[]>, config: Ref<ProjectConfig>, uniConfig: Ref<UniConfig>): void;
    private createGlobalCss;
    private initUniFeatures;
    private setup;
    emitReady(libraryExports?: string[], materialExports?: string[], materialMapLibrary?: Record<string, string>, libraryLocaleMap?: Record<string, string>): Promise<void>;
    createEnv(libraryExports?: string[], materialMapLibrary?: Record<string, string>, materials?: Material[], libraryLocaleMap?: Record<string, string>): SimulatorEnv;
    refresh(): void;
    capture(): Promise<unknown>;
    dispose(): void;
}
