import * as THREE from "three";
import { Pano } from "../utils/pano";
import { Works } from "../work";
import { MovePanoOptions } from "../types/movePanoOptions";
import { State } from "../types/state";
import { Pose } from "../types/pose";
import { MovePanoEffect } from "../types/movePanoEffect";
import { GestureEvent } from "../utils/event";
import { BaseControllerInitArgs } from "./base";
import { PanoramaLikeController, PanoramaLikeControllerCustomInitArgs } from "./panoramaLike";
import { Motion } from "../utils/motion";
type LocationMotion = Motion<"x" | "y" | "z" | "distance">;
type ModelAlphaMotion = Motion<"modelAlpha">;
type PerspToOrthoMotion = Motion<"perspToOrtho">;
interface ModelControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
}
declare const defaultModelControllerCustomInitArgs: Required<ModelControllerCustomInitArgs>;
type ModelControllerInitArgs = BaseControllerInitArgs & ModelControllerCustomInitArgs;
declare class ModelController extends PanoramaLikeController implements Required<ModelControllerInitArgs> {
    static parseArgs(args: ModelControllerInitArgs): Required<ModelControllerInitArgs>;
    static initAnimationEndState(args: ModelControllerInitArgs): State;
    locationMotion: LocationMotion;
    modelAlphaMotion: ModelAlphaMotion;
    perspToOrthoMotion: PerspToOrthoMotion;
    constructor(args: ModelControllerInitArgs);
    updateConfiguration(args: ModelControllerCustomInitArgs): boolean;
    /** 析构函数 */
    destroy(): void;
    /** 是否准备好，即不在用户操作中，并且不再动画中 */
    isReady(): boolean;
    /** 生命周期：更新模型 */
    updateWork(works: Works, state: Partial<State>, options: {
        duration: number;
        effect: MovePanoEffect;
    }, userAction: boolean): 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;
    /** 初始化动画 */
    protected initAnimation(): Promise<void>;
    /** 获取目标姿态 */
    getTargetState(): State;
    /** 移动点位 */
    moveToPano(pano: Pano, options: MovePanoOptions | undefined, userAction: boolean): void;
    /** 移动相机位置 */
    moveToPosition(position: THREE.Vector3, options: MovePanoOptions | undefined, userAction: boolean): void;
    /** 触摸 点击屏幕 */
    protected onTapGesture(event: GestureEvent): void;
}
export { ModelController, ModelControllerInitArgs, ModelControllerCustomInitArgs, defaultModelControllerCustomInitArgs, };
