import { AnimationAction, type AnimationActionSnapshot } from "./AnimationAction.js";
import type { AnimationClip } from "./AnimationClip.js";
import type { AnimationEvent } from "./AnimationEvents.js";
import type { AnimationLayer, AnimationLayerSnapshot } from "./AnimationLayer.js";
import { type AnimationValue } from "./Keyframe.js";
import { type RootMotionSample } from "./RootMotion.js";
export type AnimationTarget = {
    setAnimationValue?: (target: string, value: AnimationValue) => void;
    applyRootMotion?: (sample: RootMotionSample) => void;
    position?: [number, number, number];
};
export type AnimationMixerOptions = {
    readonly applyRootMotion?: boolean;
    readonly rootMotionTrack?: string;
    readonly rootMotionScale?: number;
};
export type AnimationMixerSnapshot = {
    readonly timeScale: number;
    readonly actionCount: number;
    readonly actions: readonly AnimationActionSnapshot[];
    readonly layers: readonly AnimationLayerSnapshot[];
    readonly values: Readonly<Record<string, AnimationValue>>;
    readonly applyErrors: readonly AnimationApplyError[];
};
export type AnimationApplyError = {
    readonly target: string;
    readonly message: string;
};
export declare class AnimationMixer {
    private readonly options;
    readonly target: AnimationTarget | undefined;
    timeScale: number;
    private readonly actions;
    private readonly layers;
    private readonly values;
    private applyErrors;
    private readonly eventListeners;
    private disposed;
    constructor(target?: AnimationTarget, options?: AnimationMixerOptions);
    play(clip: AnimationClip): AnimationAction;
    addAction(action: AnimationAction): void;
    addLayer(layer: AnimationLayer): void;
    stopAll(): void;
    crossFade(from: AnimationAction, to: AnimationAction, duration: number): void;
    update(delta: number): readonly AnimationEvent[];
    getValue(target: string): AnimationValue | undefined;
    onEvent(listener: (event: AnimationEvent) => void): () => void;
    snapshot(): AnimationMixerSnapshot;
    dispose(): void;
    private assertAlive;
    private applyActionRootMotion;
    private layersForAction;
}
//# sourceMappingURL=AnimationMixer.d.ts.map