import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
import type { Light, Matrix4, ModelDescription, Object3DBase, TCamera, XYZ } from '@/types/index';
import type { ThreeJSON } from '@/types/model';
type SceneManagerOptions = {
    config: ModelDescription;
    container: string | HTMLElement;
    characterGroup: THREE.Group;
    lightGroup: THREE.Group;
    state: Record<string, any>;
};
export type SceneManagerSnapshot = {
    container: HTMLElement | null;
    scene: THREE.Scene | null;
    camera: THREE.PerspectiveCamera | null;
    renderer: THREE.WebGLRenderer | null;
    controls: OrbitControls | null;
    width: number;
    height: number;
    isNotRender: boolean;
};
export declare class SceneManager {
    private config;
    private _container;
    private characterGroup;
    private lightGroup;
    private state;
    private objectLoader;
    container: HTMLElement | null;
    scene: THREE.Scene | null;
    camera: THREE.PerspectiveCamera | null;
    renderer: THREE.WebGLRenderer | null;
    controls: OrbitControls | null;
    width: number;
    height: number;
    isNotRender: boolean;
    constructor(options: SceneManagerOptions);
    setConfig(config: ModelDescription): void;
    setContainerRef(container: string | HTMLElement): void;
    setGroups(characterGroup: THREE.Group, lightGroup: THREE.Group): void;
    getSnapshot(): SceneManagerSnapshot;
    init(): void;
    resolveContainer(): void;
    handleResize(): void;
    createDefaultCamera(): THREE.PerspectiveCamera;
    createRenderer(): THREE.WebGLRenderer;
    updateLight(): void;
    initLights(lights?: Light[] | ThreeJSON<Light>[]): void;
    loadCamera(json?: any): THREE.PerspectiveCamera | undefined;
    loadScene(json: Object3DBase | THREE.Object3D | undefined): {
        scene?: THREE.Scene;
        camera?: THREE.PerspectiveCamera;
    };
    degree2Euler(xyz: XYZ): XYZ;
    dataToMatrix4(matrixList: Matrix4): THREE.Matrix4;
    setLight(light: Light): void;
    setAngleView({ camera }: {
        camera: TCamera & {
            duration?: number;
        };
    }): void;
    initOrbitControls(): void;
    setCamera(camera: THREE.PerspectiveCamera, options: TCamera): void;
    private syncContainerSize;
    private setupRenderer;
    private setupGridHelper;
}
export {};
//# sourceMappingURL=SceneManager.d.ts.map