/** * @ifc-lite/parser - Main parser interface * Supports both IFC4 (STEP) and IFC5 (IFCX/JSON) formats */ export { StepTokenizer } from './tokenizer.js'; export { EntityIndexBuilder } from './entity-index.js'; export { EntityExtractor } from './entity-extractor.js'; export { CompactEntityIndex, CompactEntityIndexBuilder, buildCompactEntityIndex } from './compact-entity-index.js'; export { scanIfcEntities } from './entity-scanner.js'; export type { EntityScanPath, EntityScanResult, PreScannedEntityIndex, WasmScanApi } from './entity-scanner.js'; export { REL_TYPE_MAP, RELATIONSHIP_TYPES } from './columnar-parser-indexes.js'; export { PropertyExtractor } from './property-extractor.js'; export { QuantityExtractor } from './quantity-extractor.js'; export { RelationshipExtractor } from './relationship-extractor.js'; export { SpatialHierarchyBuilder } from './spatial-hierarchy-builder.js'; export { extractLengthUnitScale } from './unit-extractor.js'; export { ColumnarParser, type IfcDataStore, type EntityByIdIndex, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractEntityAttributesOnDemand, extractAllEntityAttributes, getRawNamedAttributes, extractRootAttributesFromEntity, extractClassificationsOnDemand, extractMaterialsOnDemand, extractMaterialPropertiesOnDemand, extractMaterialPropertiesForMaterialId, resolveMaterialDefId, collectMaterialLeaves, buildMaterialUsageIndex, getMaterialDisplay, extractTypePropertiesOnDemand, extractTypeEntityOwnProperties, extractDocumentsOnDemand, extractRelationshipsOnDemand, extractGroupMembersOnDemand, extractGeoreferencingOnDemand, type ClassificationInfo, type MaterialInfo, type MaterialLayerInfo, type MaterialProfileInfo, type MaterialConstituentInfo, type MaterialPsetGroup, type MaterialLeaf, type MaterialUsage, type TypePropertyInfo, type DocumentInfo, type EntityRelationships, type GroupMember } from './columnar-parser.js'; export type { IfcStoreBase, IfcSourceHeader } from '@ifc-lite/data'; export { parseSourceHeader } from './source-header.js'; export { attachDataStoreAccessors, type IfcStoreData } from './data-store-accessors.js'; export { createSyntheticDataStore, type SyntheticDataStoreOptions, type SyntheticEntity } from './synthetic-data-store.js'; export { parseIfcx, parseFederatedIfcx, addIfcxOverlay, detectFormat, composeIfcx, composeFederated, createLayerStack, createPathIndex, parsePath, type IfcxParseResult, type FederatedIfcxParseResult, type FederatedFileInput, type FederatedParseOptions, type IfcxFile, type IfcxNode, type ComposedNode, type ComposedNodeWithSources, type IfcxLayer, type LayerStack, type PathIndex, type MeshData as IfcxMeshData, type PointCloudExtraction, } from '@ifc-lite/ifcx'; export { extractMaterials, getMaterialForElement, getMaterialNameForElement, type MaterialsData, type Material, type MaterialLayer, type MaterialLayerSet } from './material-extractor.js'; export { extractGeoreferencing, transformToWorld, transformToLocal, getCoordinateSystemDescription, computeAngleToGridNorth, type GeoreferenceInfo, type MapConversion, type ProjectedCRS } from './georef-extractor.js'; export { extractClassifications, getClassificationsForElement, getClassificationCodeForElement, getClassificationPath, groupElementsByClassification, type ClassificationsData, type Classification, type ClassificationReference } from './classification-extractor.js'; export { extractScheduleOnDemand, parseIso8601Duration, type ScheduleExtraction, type ScheduleTaskInfo, type ScheduleTaskTimeInfo, type ScheduleSequenceInfo, type WorkScheduleInfo, type SequenceTypeEnum, type TaskDurationType, } from './schedule-extractor.js'; export { serializeScheduleToStep, type SerializeScheduleOptions, type SerializeScheduleResult, } from './schedule-serializer.js'; export { deterministicGlobalId } from './deterministic-global-id.js'; export { SCHEMA_REGISTRY, getEntityMetadata, getAllAttributesForEntity, getInheritanceChainForEntity, isKnownEntity } from './generated/schema-registry.js'; export type * from './generated/entities.js'; export * from './generated/enums.js'; export { serializeValue, toStepLine, generateHeader, generateStepFile, parseStepValue, ref, enumVal, isEntityRef, isEnumValue, type StepValue, type StepEntity, type EntityRef as StepEntityRef, type EnumValue, } from './generated/serializers.js'; export * from './types.js'; export { getAttributeNames, getAttributeNameAt, isKnownType, normalizeIfcTypeName } from './ifc-schema.js'; import type { ParseResult } from './types.js'; import { type IfcDataStore } from './columnar-parser.js'; import { type PreScannedEntityIndex, type WasmScanApi } from './entity-scanner.js'; export interface ParseOptions { onProgress?: (progress: { phase: string; percent: number; }) => void; onDiagnostic?: (message: string) => void; wasmApi?: WasmScanApi; /** Yield budget for large incremental parses. Higher values finish faster with longer main-thread slices. */ yieldIntervalMs?: number; /** Keep property-set containers in the primary index but defer indexing individual property/quantity atoms. */ deferPropertyAtomIndex?: boolean; /** Skip worker-based entity scanning and stay in-process. Useful for huge buffers already loaded on the main thread. */ disableWorkerScan?: boolean; /** Called when spatial hierarchy is ready, BEFORE property/association parsing completes. * Use this to show the hierarchy panel early while the full parse finishes. */ onSpatialReady?: (partialStore: IfcDataStore) => void; /** * Pre-built entity index from another worker (typically the streaming * geometry pre-pass). When supplied, `parseColumnar` skips both the * worker-based and WASM scans and synthesizes `EntityRef[]` from the * column arrays directly — saving ~10 s on 1 GB / 14 M-entity files * where the parser would otherwise duplicate the pre-pass scan under * heavy WASM contention with the geometry workers. */ preScannedEntityIndex?: PreScannedEntityIndex; } /** * Main parser class */ export declare class IfcParser { /** * Parse IFC file into the legacy eager ParseResult shape. * * @deprecated Prefer parseColumnar() for new code. This method is kept as a * compatibility adapter and reuses the shared scanner before eager extraction. */ parse(buffer: ArrayBuffer, options?: ParseOptions): Promise; /** * Parse IFC file into columnar data store * * Uses fast scan + on-demand property extraction for all files. * Properties are extracted lazily when accessed, not upfront. * * Accepts both `ArrayBuffer` and `SharedArrayBuffer`. The * cross-worker SAB path (parser worker) passes the latter; the * in-process path passes a regular ArrayBuffer. */ parseColumnar(buffer: ArrayBuffer | SharedArrayBuffer, options?: ParseOptions): Promise; } import { type IfcxParseResult, type MeshData as IfcxMeshData } from '@ifc-lite/ifcx'; /** * Result type for auto-parsing (union of IFC4 and IFC5 results) */ export type AutoParseResult = { format: 'ifc'; data: IfcDataStore; meshes?: undefined; } | { format: 'ifcx'; data: IfcxParseResult; meshes: IfcxMeshData[]; }; /** * Auto-detect file format and parse accordingly. * Returns unified result with format indicator. */ export declare function parseAuto(buffer: ArrayBuffer, options?: ParseOptions): Promise; //# sourceMappingURL=index.d.ts.map