import type { EventSystem, SceneLoadOptions, Composition, Scene, Engine } from '@galacean/effects-core';
import { AssetManager } from '@galacean/effects-core';
import * as THREE from 'three';
import { ThreeComposition } from './three-composition';
export type ThreeDisplayObjectOptions = {
    width: number;
    height: number;
    event?: EventSystem;
    camera?: THREE.Camera;
};
/**
 *
 * @example
 * ``` ts
 * const renderer = new THREE.WebGLRenderer({...});
 * const scene = new THREE.Scene();
 * const { width, height } = renderer.domElement.getBoundingClientRect();
 * const displayObject = new ThreeDisplayObject(renderer.getContext(), { width, height });
 *
 * await displayObject.loadScene(json);
 * scene.add(displayObject);
 * ```
 */
export declare class ThreeDisplayObject extends THREE.Group {
    compositions: ThreeComposition[];
    camera?: THREE.Camera;
    engine: Engine;
    assetManager: AssetManager;
    env: string;
    readonly width: number;
    readonly height: number;
    get renderer(): import("@galacean/effects-core").Renderer;
    private baseCompositionIndex;
    private assetService;
    /**
     *
     * @param context
     */
    constructor(context: WebGLRenderingContext | WebGL2RenderingContext, options: ThreeDisplayObjectOptions);
    /**
     * 获取当前播放合成，如果是多个合成同时播放，返回第一个合成
     */
    get currentComposition(): ThreeComposition;
    /**
     * 加载动画资源
     * @param scene - 一个或一组 URL 或者通过 URL 请求的 JSONObject 或者 Scene 对象
     * @param options - 加载可选参数
     * @returns
     */
    loadScene(scene: Scene.LoadType, options?: SceneLoadOptions): Promise<Composition>;
    loadScene(scene: Scene.LoadType[], options?: SceneLoadOptions): Promise<Composition[]>;
    private createComposition;
    pause(): void;
    resume(): void;
    /**
     *
     * @param delta
     */
    update(delta: number): void;
}
