import type { BmtModelData } from "../Loaders/BmtLoader";
import { type BmtConvertedFileType, type BmtConverterOptions } from "../Loaders/BmtConverter";
import { type WorkerProgressEvent } from "./ProgressUtils";
export type BmtConverterWorkerSource = {
    buffer: ArrayBuffer;
    kind: "buffer";
    name?: string;
} | {
    file: File;
    kind: "file";
    name?: string;
} | {
    kind: "url";
    name?: string;
    url: string;
};
export type BmtConverterWorkerOptions = Pick<BmtConverterOptions, "chunk" | "coordinationMatrix" | "fileName" | "fileNames" | "maxMeshBytes" | "useIfcColors" | "useIfcElementAssembly" | "useIfcSpace" | "useMinVersion" | "visibleIdsByModel" | "wasmPath">;
export type BmtConverterWorkerRequest = {
    options?: BmtConverterWorkerOptions;
    sources: BmtConverterWorkerSource[];
    taskId: string;
    type: "convert-ifc-to-bmt";
};
export type BmtConverterWorkerError = {
    message: string;
    stack?: string;
};
export type BmtConverterWorkerFile = {
    bytes: Uint8Array;
    mimeType: string;
    name: string;
    type: BmtConvertedFileType;
};
export type BmtConverterWorkerResult = {
    files: BmtConverterWorkerFile[];
    models: Record<number, BmtModelData>;
};
export type BmtConverterWorkerResponse = {
    error: BmtConverterWorkerError;
    taskId: string;
    type: "error";
} | {
    progress: WorkerProgressEvent;
    taskId: string;
    type: "progress";
} | {
    result: BmtConverterWorkerResult;
    taskId: string;
    type: "complete";
};
