import { Object3D, Scene } from "three";
import { DTScene } from "../interface/scene";
import { WebglModel } from "./model";
import { Options } from "../interface/component";
import Loader from "./loader";
import { DTModel } from "../interface/model";
import EventEmitter from "../common/event-emitter";
export type WebglScene = {
    skybox: (path: string, format?: string) => void;
    skycolor: (color: string) => void;
} & DTScene & Scene;
export type RenderInterceptor = {
    beforeRender?: (options: Options) => Options | void;
};
export default function createScene(): WebglScene;
export type ModelTheme = {
    [type: string]: {
        color: string;
    };
};
/**
 * 通过 options 渲染场景
 * @param options
 * @param loader
 * @param process
 * 注：只处理需要远程加载的模型，已经存在的模型不做任何处理
 */
export declare function createSceneRender(scene: WebglScene, loader: Loader, process?: ReturnType<typeof createProgress>, interceptor?: RenderInterceptor, theme?: ModelTheme): Promise<{
    renderModel: (list: Options[], container?: Object3D, skipModels?: Array<string>) => Promise<Map<any, any>>;
    buildModelMapping: (list: Options[], container: Object3D, modelMapping?: Map<string, WebglModel>) => Map<string, WebglModel>;
}>;
/**
 * 创建进度条
 * @param total
 * @param start
 * @returns
 */
export declare function createProgress<T extends DTModel>(mapping: Options, emitter?: EventEmitter): {
    readonly loaded: boolean;
    reset($total: number, start?: number): void;
    completed(count?: number): void;
    skip(count: number): void;
} & EventEmitter;
