import { Five, Camera } from '@realsee/five';
import { BasePlugin } from '../BasePlugin';
import type * as PluginType from './typing';
import * as THREE from "three";
import { OrbitControls } from '../thirdParty/OrbitControls.js';
import { CSS3DRenderer } from '../thirdParty/CSS3DRenderer.js';
import { RoundedBoxGeometry } from './RoundedBoxGeometry';
export declare class Controller extends BasePlugin.Controller<PluginType.State, PluginType.EventMap, PluginType.ServerData, PluginType.PluginData> {
    /** 当前使用的数据 */
    data?: PluginType.PluginData;
    /** 插件当前状态 */
    state: PluginType.State;
    /** config 的原始值 */
    private _config;
    camera: Camera;
    scene: THREE.Scene;
    renderer: THREE.WebGLRenderer;
    css3drenderer: CSS3DRenderer;
    ambientLight: THREE.AmbientLight;
    wrapper: HTMLDivElement;
    private arrows;
    private arrowLeft;
    private arrowRight;
    private arrowFront;
    private arrowBack;
    private arrowTop;
    private arrowBottom;
    private mc?;
    private cameraAnimation?;
    private cylinder;
    private spherical;
    private dragging;
    private style;
    directionalLight: THREE.DirectionalLight;
    box: THREE.Mesh<RoundedBoxGeometry, THREE.MeshPhongMaterial>;
    faces: THREE.Group;
    controls?: OrbitControls;
    get config(): {
        orthoView: boolean;
        fixedLongitude: number;
    };
    private updateState;
    constructor(five: Five, params?: PluginType.Params);
    appendTo(container: HTMLElement): void;
    init(): void;
    initDom(): void;
    bindEvents(): void;
    unbindEvents(): void;
    orient: ({ longitude, latitude }: {
        longitude?: number;
        latitude?: number;
    }) => void;
    private updateByCamera;
    private updateArrows;
    private handleArrowsVisible;
    private onRenderFrame;
    private onTapGesture;
    private onFiveWantsGesture;
    private onFiveModeChange;
    private onCameraUpdate;
    private onPanStart;
    private onMouseMove;
    private onPanEnd;
    /** 更改插件 State */
    setState(state: Partial<PluginType.State>, options?: BasePlugin.BaseOptions): void;
    private initLights;
    private initFaces;
    private initControls;
    load(data: PluginType.ServerData): Promise<void>;
    private _enable;
    private _disable;
    /**
   * 启用插件，让插件能够响应交互
   */
    enable(options?: BasePlugin.BaseOptions): void;
    /**
     * 禁用插件，让插件停止响应交互
     */
    disable(options?: BasePlugin.BaseOptions): void;
    /** 销毁插件，移除所有副作用，销毁后将不响应任何 API */
    dispose: () => void;
}
