/**
 * AssetLoader
 *
 * Three.js asset loading manager for 3D models and textures.
 * Supports GLB/GLTF (primary), OBJ (fallback), and texture loading.
 * Implements caching for performance.
 *
 * @packageDocumentation
 */
import * as THREE from 'three';
export interface LoadedModel {
    scene: THREE.Group;
    animations: THREE.AnimationClip[];
}
export declare class AssetLoader {
    private objLoader;
    private textureLoader;
    private modelCache;
    private textureCache;
    private loadingPromises;
    constructor();
    /**
     * Load a GLB/GLTF model
     * @param url - URL to the .glb or .gltf file
     * @returns Promise with loaded model scene and animations
     */
    loadModel(url: string): Promise<LoadedModel>;
    /**
     * Load an OBJ model (fallback for non-GLB assets)
     * @param url - URL to the .obj file
     * @returns Promise with loaded object group
     */
    loadOBJ(url: string): Promise<THREE.Group>;
    /**
     * Load a texture
     * @param url - URL to the texture image
     * @returns Promise with loaded texture
     */
    loadTexture(url: string): Promise<THREE.Texture>;
    /**
     * Preload multiple assets
     * @param urls - Array of asset URLs to preload
     * @returns Promise that resolves when all assets are loaded
     */
    preload(urls: string[]): Promise<void>;
    /**
     * Check if a model is cached
     * @param url - Model URL
     */
    hasModel(url: string): boolean;
    /**
     * Check if a texture is cached
     * @param url - Texture URL
     */
    hasTexture(url: string): boolean;
    /**
     * Get cached model (throws if not cached)
     * @param url - Model URL
     */
    getModel(url: string): LoadedModel;
    /**
     * Get cached texture (throws if not cached)
     * @param url - Texture URL
     */
    getTexture(url: string): THREE.Texture;
    /**
     * Clear all caches
     */
    clearCache(): void;
    /**
     * Get cache statistics
     */
    getStats(): {
        models: number;
        textures: number;
        loading: number;
    };
}
export declare const assetLoader: AssetLoader;
export default AssetLoader;
