import * as THREE from 'three';
import type { ModelDescription, ModelInfo, PlayActionOptions } from '@/types/index';
export type AnimationRecord = {
    code: string;
    type: string;
    animation: THREE.AnimationClip;
    text: string;
};
export type ActionObjType = {
    action: THREE.AnimationAction;
    name: string;
    code: string;
    animation: THREE.AnimationClip;
    type: string;
    text: string;
};
type AnimationManagerOptions = {
    config: ModelDescription;
    emit: (eventName: string, payload?: any) => void;
};
export declare class AnimationManager {
    private config;
    private emit;
    private animationGroup;
    private animations;
    private actions;
    private animationMixer;
    private onAnimationFinishedBound;
    private actionDefaultMap;
    private currentTalkAnimations;
    private muteActionState;
    private actionNotifier;
    constructor(options: AnimationManagerOptions);
    setConfig(config: ModelDescription): void;
    addAnimationTarget(target: THREE.Object3D): void;
    addAnimations(records: AnimationRecord[]): void;
    initializeMixer(): void;
    update(deltaTimeInSeconds: number): void;
    playAction: import("lodash").DebouncedFuncLeading<(code: string | string[], opts?: PlayActionOptions) => void>;
    stopAllActionExcludeIdle(): void;
    stopAllAction(): void;
    muteAction(isMute?: boolean): void;
    getModelInfo(actor: THREE.Group): ModelInfo;
    getAnimations(): AnimationRecord[];
    getMixer(): THREE.AnimationMixer | null;
    destroy(): void;
    private getDefaultAniCode;
    private animationFinished;
}
export {};
//# sourceMappingURL=AnimationManager.d.ts.map