import { AnimationGroup } from '../../../../types/src/3d-viewer';

export interface AnimationState {
    currentAnimationGroup: AnimationGroup | null;
    currentTime: string;
    isPlaying: boolean;
    progress: number;
    speedRatio: string;
    totalTime: string;
}
export interface AnimationControllerOptions {
    fps?: number;
    updateInterval?: number;
}
export declare class AnimationController {
    private currentAnimationGroup;
    private isAnimationPlaying;
    private animationProgress;
    private currentTime;
    private totalTime;
    private animationUpdateInterval;
    private fps;
    private updateInterval;
    private onStateChange?;
    private availableSpeedRatios;
    private speedRatio;
    constructor(options?: AnimationControllerOptions);
    /**
     * Set callback for state changes
     */
    setStateChangeCallback(callback: (state: AnimationState) => void): void;
    /**
     * Set the current animation group for tracking
     */
    setAnimationGroup(animationGroup: AnimationGroup | null): void;
    /**
     * Get current animation state
     */
    getAnimationState(): AnimationState;
    /**
     * Toggle play/pause state of current animation
     */
    togglePlayPause(): boolean;
    /**
     * Seek animation to specific progress (0-100)
     */
    seekToProgress(progress: number): void;
    /**
     * Start tracking animation progress
     */
    startAnimationTracking(): void;
    /**
     * Stop tracking animation progress
     */
    stopAnimationTracking(): void;
    /**
     * Update time display based on current animation state
     */
    private updateTimeDisplay;
    /**
     * Notify state change callback if set
     */
    private notifyStateChange;
    /**
     * Format seconds to MM:SS format
     */
    private formatTime;
    /**
     * Set FPS for time calculations
     */
    setFPS(fps: number): void;
    /**
     * Set update interval for animation tracking
     */
    setUpdateInterval(interval: number): void;
    /**
     * Get available speed ratios
     */
    getAvailableSpeedRatios(): string[];
    setSpeedRatio(speed: string): void;
    getActiveSpeedRatio(): string;
    /**
     * Replay the current animation from the beginning
     */
    replay(): void;
    /**
     * Dispose of the animation controller
     */
    dispose(): void;
}
