import { Mesh, Scene } from '../../../../types/src/3d-viewer';

export interface ModelInfo {
    availableAnimations: string[];
    availableVariants: string[];
    rootNode?: Mesh;
}
export interface AnimationInfo {
    group?: any;
    index: number;
    name: string;
}
export declare class ModelLoader {
    private scene;
    private rootNode?;
    private availableVariants;
    private availableAnimations;
    private currentAnimationGroup;
    constructor(scene: Scene);
    /**
     * Discover available variants and animations from the loaded model
     */
    discoverModelFeatures(): ModelInfo;
    /**
     * Get available material variants from the model
     */
    private getAvailableVariants;
    /**
     * Discover available animations in the model
     */
    private discoverAnimations;
    /**
     * Apply a material variant to the model
     */
    applyVariant(variantName: string): void;
    getActiveVariantName(): string | string[] | undefined;
    /**
     * Play a specific animation
     */
    playAnimation(animationName: string): {
        animationGroup?: any;
        isPlaying: boolean;
    };
    /**
     * Stop all animations
     */
    stopAllAnimations(): void;
    /**
     * Get the current animation group
     */
    getCurrentAnimationGroup(): any;
    /**
     * Get available variants
     */
    getAvailableVariantNames(): string[];
    /**
     * Get available animations
     */
    getAvailableAnimationNames(): string[];
    /**
     * Get the root node of the loaded model
     */
    getRootNode(): Mesh | undefined;
    /**
     * Auto-play the first available animation
     */
    autoPlayFirstAnimation(): {
        animationGroup?: any;
        isPlaying: boolean;
    };
    /**
     * Dispose of model loader resources
     */
    dispose(): void;
}
