import EventEmitter from "../common/event-emitter";
import { Group, Tween } from "@tweenjs/tween.js";
export declare enum AnimationEventType {
    complete = "complete",
    start = "start",
    update = "update",
    resume = "resume",
    stop = "stop",
    pause = "pause"
}
export declare abstract class BaseAnimation extends EventEmitter {
    uuid: string;
    type: string;
    constructor();
    poor: boolean;
    /**
     * 开始
     */
    abstract start(): this;
    /**
     * 暂停
     */
    abstract pause(): this;
    /**
     * 继续
     */
    abstract resume(): this;
    /**
     * 停止
     */
    abstract stop(): this;
    /**
     * 推进动画
     * @param time
     */
    abstract update(time: number): this;
}
export declare class SimilarAnimation extends BaseAnimation {
    private handler;
    poor: boolean;
    constructor(handler: Record<string, Function>);
    pause(): this;
    resume(): this;
    start(): this;
    stop(): this;
    update(time: number): this;
}
/**
 * 通过three.js的AnimationAction创建动画
 * @param handler
 */
export declare function createAnimationFromSimilarAnimation(handler: Record<string, Function>): BaseAnimation;
/**
 * 通过tween创建动画
 * @param tween
 */
export declare function createAnimationFromTween(tween: Tween<any>): BaseAnimation;
/**
 * 通过tween group创建动画
 * @param group
 */
export declare function createAnimationFromTweenGroup(group: Group): BaseAnimation;
