import type { Five } from '@realsee/five';
import type { BaseOptions } from '../../base/BasePlugin';
import type { FloorplanServerData } from '../typings/floorplanServerData';
import type { FloorplanExtraObject3D } from '../typings/floorplanData';
import type { HighlightData } from '../typings';
import type { State, Config, EventMap, Parameters, PluginData, PluginServerData } from './typing';
import * as BasePlugin from '../../base/BasePluginWithData';
export declare class Controller extends BasePlugin.Controller<State, EventMap, PluginServerData, PluginData> {
    name: string;
    state: State;
    protected data?: PluginData;
    private app?;
    private wrapperSelector;
    private wrapper;
    private disposed;
    private extraObjects;
    private highlightData;
    private defaultMissingFloorConfig;
    constructor(five: Five, params?: Parameters);
    dispose: () => void;
    load(serverData: PluginServerData | FloorplanServerData, state?: Partial<State>, userAction?: boolean): Promise<void>;
    show(options?: BaseOptions): Promise<void>;
    hide(options?: BaseOptions): Promise<void>;
    enable(options?: BaseOptions): void;
    disable(options?: BaseOptions): void;
    highlight: (highlightData: HighlightData) => void;
    unhighlight: () => void;
    /** 更改插件 State */
    setState(state: Partial<State>, options?: BaseOptions): void;
    /** 把插件的渲染DOM插入到对应的容器中去 */
    appendTo(wrapper: Element): void;
    changeConfigs(config: Config, userAction?: boolean): void;
    setExtraObjectsWith3DPositions(data: FloorplanExtraObject3D[]): void;
    /**
     * 更改显示的楼层
     * @param floorIndex 要显示的楼层索引
     */
    changeFloor(floorIndex: number): void;
    /**
     * 处理户型图点击事件
     * 寻找距离点击位置最近的观察点，并移动到该点
     * @param clickData 点击事件数据
     */
    private handleFloorplanClick;
    protected formatData(serverData: PluginServerData): Promise<PluginData>;
    private _enable;
    private _disable;
    private _show;
    private _hide;
    private updateState;
    private render;
    private handlePanoArrived;
}
