import type { Material } from '@babylonjs/core'; import { Mesh } from '@babylonjs/core'; import type { IfcState } from '../BaseDefinitions'; import { IFCModel } from './IFCModel'; export interface ParserProgress { loaded: number; total: number; } export interface OptionalCategories { [category: number]: boolean; } export interface ParserAPI { parse(buffer: any, coordinationMatrix?: number[]): Promise; getAndClearErrors(_modelId: number): void; setupOptionalCategories(config: OptionalCategories): Promise; optionalCategories: OptionalCategories; } export interface GeometriesByMaterial { [materialID: string]: { material: Material; geometries: Mesh[]; }; } /** * Reads all the geometry of the IFC file and generates an optimized `THREE.Mesh`. */ export declare class IFCParser implements ParserAPI { private state; loadedModels: number; optionalCategories: OptionalCategories; private geometriesByMaterials; private loadingState; private currentWebIfcID; private currentModelID; constructor(state: IfcState); setupOptionalCategories(config: OptionalCategories): Promise; parse(buffer: any, coordinationMatrix?: number[]): Promise; getAndClearErrors(_modelId: number): import("web-ifc").Vector | Promise> | undefined; private notifyProgress; private newIfcModel; private loadAllGeometry; private initializeLoadingState; private notifyLoadingEnded; private updateLoadingState; private addOptionalCategories; private streamMesh; private getPlacedGeometry; private getBufferGeometry; private storeGeometryByMaterial; private ifcGeometryToBuffer; private getMeshMaterial; }