import * as THREE from "three";
import { type EasingFunction } from "../utils/easing";
import { State } from "../types/state";
import { Pose } from "../types/pose";
import { BaseControllerInitArgs } from "./base";
import { PanoramaController, PanoramaControllerCustomInitArgs, PanoramaControllerInitArgs, LocationMotion } from "./panorama";
import { Pano, PanoId } from '../utils/pano';
import { MovePanoEffect } from '../types/movePanoEffect';
import { PBMPanoPicture } from "../model";
import { MovePanoOptions } from "../types/movePanoOptions";
import { NetworkResponse, NetWorkMeta } from "../utils/ajax";
interface XRPanoramaControllerCustomInitArgs extends Omit<PanoramaControllerCustomInitArgs, "maxLatitude" | "minLatitude"> {
}
type XRPanoramaControllerInitArgs = BaseControllerInitArgs & XRPanoramaControllerCustomInitArgs;
declare const defaultXRPanoramaControllerInitArgs: Required<XRPanoramaControllerCustomInitArgs>;
interface PanoResourceXR {
    panoId: PanoId;
    effect: MovePanoEffect;
    effectEasing: EasingFunction;
    leftPanoPicture: PBMPanoPicture | null;
    position: THREE.Vector3;
    fixCameraTransform: THREE.Matrix4;
}
declare class XRPanoramaController extends PanoramaController implements Required<XRPanoramaControllerInitArgs> {
    panoResources: {
        [key: string]: PanoResourceXR;
    };
    /** XR管理器*/
    private xrManager;
    /** 控制器选取方向线*/
    private xrControllerRay;
    private gazeRay;
    /** 控制器选取方向模型*/
    private pointerLines;
    /** 视差相机矩阵*/
    private parallaxCameraMatrixs;
    /** xr手柄事件监测*/
    private xrHandleState;
    private xrHandState;
    private controllerWrappers;
    protected pendingPanoTask?: {
        panoId: PanoId;
        hash: string;
        onLoad(colorLeftResponse: NetworkResponse<THREE.Texture, NetWorkMeta[]>): void;
        onError(error: Error): void;
    };
    static parseArgs(args: XRPanoramaControllerInitArgs): Required<PanoramaControllerInitArgs>;
    static initAnimationEndState(args: XRPanoramaControllerInitArgs): State;
    constructor(args: XRPanoramaControllerInitArgs);
    updateConfiguration(args: XRPanoramaControllerCustomInitArgs): boolean;
    /** 移动点位 */
    moveToPano(pano: Pano, options: MovePanoOptions, userAction: boolean): void;
    /** 移动相机 */
    protected doMoveToPano(pano: Pano, panoResource: PanoResourceXR, options?: MovePanoOptions): void;
    /** 触摸 点击屏幕 */
    checkSelectedPano(raycaster: THREE.Raycaster): Pano | null;
    /** 析构函数 */
    destroy(): void;
    /** 是否准备好，即不在用户操作中，并且不再动画中 */
    isReady(): boolean;
    /** 转动摄像头 */
    updateCamera(pose: Partial<Pose>, duration: number, userAction: boolean): Promise<void>;
    /** 通过帧动画转动摄像头 */
    updateCameraWithKeyframes(keyframes: {
        progress: number;
        value: Pose;
        key?: string;
    }[], duration: number, userAction: boolean): Promise<void>;
    /** 时间迭代 */
    updateTime(time: number, deltaTime: number, ...args: any[]): void;
    /** 生命周期 渲染 */
    render(): boolean;
    protected onPanGesture(): void;
    protected onTapGesture(): void;
    protected onPinchGesture(): void;
    protected onMouseMove(): void;
    protected onMouseOut(): void;
    protected panoResourceFromLocationMotionKeyframe(keyframe: LocationMotion["keyframes"][number]): PanoResourceXR;
    private updateControllerHelper;
    private emitHandleEvent;
    private initHandEvent;
}
export { XRPanoramaController, XRPanoramaControllerInitArgs, XRPanoramaControllerCustomInitArgs, defaultXRPanoramaControllerInitArgs, };
