import { Object3D } from "three";
import IAnimatedObjectManager, { Animation } from "../../../interface/IAnimatedObjectManager";
import Nullable from "../../../interface/utils/Nullable";
import AnimationManager, { PlayOptions } from "./AnimationManager";
import StaticObjectManager from "../StaticObjectManager";
export default class AnimatedObjectManager<T extends Object3D = Object3D> extends StaticObjectManager<T> implements IAnimatedObjectManager {
    animationManagers?: Record<string, AnimationManager>;
    get animations(): Record<string, AnimationManager>;
    set animations(val: Record<string, AnimationManager>);
    private createAnimation;
    private buildAnimation;
    private makeAnimationProxy;
    private animationManager?;
    private _animationPaused?;
    get animationPaused(): boolean | undefined;
    set animationPaused(value: boolean | undefined);
    animationRepeat: Nullable<boolean>;
    onAnimationFinish: Nullable<() => void>;
    playAnimation(name?: string | number, o?: PlayOptions): void;
    stopAnimation(): void;
    protected serializeAnimation?: string | number;
    private setAnimation;
    private _animation?;
    get animation(): Animation | undefined;
    set animation(val: Animation | undefined);
}
