import { Object3D, Vector3 } from "three";
import { RotationOptions } from "../interface/camera";
export type MoveOptions = {
    duration?: number;
    speed?: number;
    rotation?: RotationOptions;
    easing?: (amount: number) => number;
    mode?: "loop" | "reverse";
    process?: (index: number) => void;
};
export default class ModelAnimation<T extends Object3D> {
    model: T;
    constructor(model: T);
    /**
     * 旋转
     * @param to
     * @param options
     * @private
     */
    rotation(to: Vector3, options?: RotationOptions): import("../core/animation").BaseAnimation;
    /**
     * 移动
     * @param position
     * @param options
     */
    moveTo(position: number[] | Array<number[]>, // 运动的路线轨迹
    options?: MoveOptions): {
        clear: () => void;
        insert: (position: number[] | Array<number[]>, index?: number) => void;
        remove: (index: number, count?: number) => void;
        continue(): void;
        pause: () => void;
        stop: () => void;
    };
    /**
     * 呼吸动效
     * @param model
     * @param scale
     * @param stepTime
     * @param repeat
     * @param onlyLabel
     */
    breath(scale?: number, stepTime?: number, repeat?: number, onlyLabel?: boolean): () => void;
    /**
     * 跳动动效
     * @param model
     * @param offset
     * @param stepTime
     * @param repeat
     * @param onlyLabel
     */
    bounce(offset?: number, stepTime?: number, repeat?: number, onlyLabel?: boolean): () => void;
}
