import { BaseController, BaseControllerInitArgs } from "./base";
import { IntersectMeshInterface } from "../types/intersectMeshInterface";
import { State } from "../types/state";
import { GestureEvent } from "../utils/event";
import { MovePanoOptions } from "../types/movePanoOptions";
interface PanoramaLikeControllerCustomInitArgs {
    /** 默认相机俯仰角 */
    defaultLatitude?: number;
    /** 最大相机俯仰角 */
    maxLatitude?: number | ((fov: number) => number);
    /** 最小相机俯仰角 */
    minLatitude?: number | ((fov: number) => number);
    /** 默认相机可视角度（垂直），可作为 `zoom` */
    defaultFov?: number;
    /** 最大默认相机可视角度（垂直） */
    maxFov?: number;
    /** 最小默认相机可视角度（垂直） */
    minFov?: number;
    /**
     * 点位间移动动画速度 单位 m/s
     * @description
     * 这边设置的是速度，整体耗时会通过距离除速度计算得到
     */
    moveSpeed?: number;
    /** 鼠标焦点环自定义创建器 */
    intersectMeshCreator?: () => IntersectMeshInterface;
    /** 航拍点最小高度 */
    aerialObserverMinHeight?: number;
}
declare const defaultPanoramaLikeControllerCustomInitArgs: Required<PanoramaLikeControllerCustomInitArgs>;
type PanoramaLikeControllerInitArgs = BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs;
declare class PanoramaLikeController extends BaseController implements Required<PanoramaLikeControllerInitArgs> {
    maxLatitude: number | ((fov: number) => number);
    minLatitude: number | ((fov: number) => number);
    maxFov: number;
    minFov: number;
    defaultLatitude: number;
    defaultFov: number;
    moveSpeed: number;
    intersectMeshCreator: () => IntersectMeshInterface;
    aerialObserverMinHeight: number;
    protected intersectMesh: IntersectMeshInterface;
    protected pinchState?: {
        x: number;
        y: number;
        fov: number;
    };
    static parseArgs(args: PanoramaLikeControllerInitArgs): Required<PanoramaLikeControllerInitArgs>;
    static initAnimationEndState(args: PanoramaLikeControllerInitArgs): State;
    constructor(args: PanoramaLikeControllerInitArgs);
    /** 动态更新配置 */
    updateConfiguration(args: PanoramaLikeControllerCustomInitArgs): boolean;
    /** 析构函数 */
    destroy(): void;
    /** 是否准备好，即不在用户操作中，并且不再动画中 */
    isReady(): boolean;
    /** 计算动画时间 */
    protected calculateMovingDuration(duration: MovePanoOptions["duration"], distance: number): number;
    /** 隐藏焦点环 */
    protected hideIntersectMesh(): void;
    /** 计算 屏幕像素 offset 与 转动间的关系 */
    protected coordinatesForOffset(offset: {
        x: number;
        y: number;
    }): {
        longitude: number;
        latitude: number;
    };
    /** 相机拉风箱 */
    protected cameraBounce(): void;
    /** 惯性转动镜头 */
    protected requestMomentumMovement(event: GestureEvent, isFirst: boolean, velocity: {
        longitude: number;
        latitude: number;
    }, duration: number): void;
    /** 触摸 Pan 事件，相机转动 */
    protected onPanGesture(event: GestureEvent): void;
    /** 触摸 Pinch 事件， 相机缩放 */
    protected onPinchGesture(event: GestureEvent): void;
    /** 鼠标滚轮事件 相机缩放 */
    protected onMouseWheel(event: GestureEvent): void;
    /** 鼠标移动事件 展示交点环 */
    protected onMouseMove(event: GestureEvent): void;
    /** 触摸 双点屏幕 */
    protected onDblTapGesture(event: GestureEvent): void;
}
export { PanoramaLikeController, PanoramaLikeControllerInitArgs, PanoramaLikeControllerCustomInitArgs, defaultPanoramaLikeControllerCustomInitArgs, };
