import { type BmtModelData } from "../Loaders/BmtLoader";
import { type BmtWorkerGeometryChunk, type IfcWorkerGeometryChunk, type WorkerProgressEvent } from "../workers";
import type { ViewerMaterialMode, ViewerUploadMode } from "../types";
export type ViewerModelSource = string | File;
export type ViewerLoadedModels = Record<number, BmtModelData>;
export type ViewerLoaderWorkerChunk = (BmtWorkerGeometryChunk | IfcWorkerGeometryChunk) & {
    modelID: number;
};
export type ViewerLoadModelOptions = {
    chunk?: number;
    collectWorkerChunks?: boolean;
    materialMode?: ViewerMaterialMode;
    maxMeshBytes?: number;
    onChunk?: (chunk: ViewerLoaderWorkerChunk) => void;
    onProgress?: (progress: WorkerProgressEvent) => void;
    streamGeometryChunks?: boolean;
    uploadMode?: ViewerUploadMode;
    useDoubleSideMaterial?: boolean;
    useIfcSpace?: boolean;
    useWorker?: boolean;
    wasmPath?: string;
};
declare class ViewerLoaderApi {
    coordinationMatrix: string | undefined;
    useIfcSpace: boolean;
    private bmtLoader;
    private ifcLoader;
    private loadedModelCount;
    private nextModelID;
    private initLoaders;
    private getBmtLoader;
    private getIfcLoader;
    private getFileSourceMap;
    private applyBmtMetadata;
    private loadBmtModel;
    private createWorkerProgressHandler;
    private createWorkerChunkHandler;
    private loadIfcModelInWorker;
    private loadBmtModelInWorker;
    private resetCoordinationMatrixState;
    private applyRenderSettings;
    resetCoordinationMatrix(): void;
    loadModel(sources: ViewerModelSource | ViewerModelSource[], options?: ViewerLoadModelOptions): Promise<ViewerLoadedModels>;
}
export declare const loader: ViewerLoaderApi;
export {};
