import * as THREE from "three";
import type { BaseModelLoader } from "./BaseModelLoader";
import type { ModelConfig } from "../../core/Configs";
import type { FontManager } from "../../core/font";
export declare class ModelLoaderManager {
    private manager?;
    private font?;
    /** Single loader registry (includes built-ins and plugin loaders). */
    private readonly loaders;
    constructor(manager?: THREE.LoadingManager);
    register(loader: BaseModelLoader): void;
    unregister(id: string): void;
    private unregisterFromList;
    /**
     * Unique extension tokens from all registered loaders (extensions first, then built-ins), sorted.
     */
    getSupportedModelFormats(): string[];
    register2dBuiltinLoaders(): void;
    register3dBuiltinLoaders(): void;
    /**
     * Gets the resolved loader for a format token (e.g. `dxf`, `dwg`, `glb`).
     */
    private getLoaderByFormat;
    /**
     * Gets the loader with the given id.
     */
    getLoaderById(id: string): BaseModelLoader | undefined;
    private computeUrlModelFormat;
    /**
     * @param modelCfg Load-related fields from {@link ModelConfig} (`src` is the logical file name for
     *        format detection when `blobFetchUrl` is set).
     * @param blobFetchUrl When set (e.g. `blob:` URL), requests use this URL while format is inferred from `modelCfg.src`.
     */
    private loadModelInternal;
    private loadModelFromBufferInternal;
    setLoadManager(manager?: THREE.LoadingManager): void;
    /**
     * @param blobUrl Fetch URL for the main file (often a `blob:` URL); {@link ModelConfig.src} should stay the real file name for format detection.
     */
    loadLocalModel(blobUrl: string, modelCfg: ModelConfig, onProgress?: (event: ProgressEvent) => void): Promise<THREE.Object3D>;
    loadModel(modelCfg: ModelConfig, onProgress?: (event: ProgressEvent) => void, unsupportedMessage?: string): Promise<THREE.Object3D | void>;
    loadModelFromBuffer(modelCfg: ModelConfig, onProgress?: (event: ProgressEvent) => void): Promise<THREE.Object3D | void>;
    /**
     * For dwg/dxf, we need to set font first.
     */
    setFont(font: FontManager): void;
}
