import type { IfcDataStore } from './columnar-parser.js'; /** * A single entity row for a synthetic store. Each spec becomes a real row in * the {@link EntityTable}, so the table's own `getTypeName` / `getName` / * `getGlobalId` / `getTypeEnum` closures serve it — no hand-rolled accessor * shims, no casts. */ export interface SyntheticEntity { expressId: number; /** IFC type name, e.g. `'IfcGeographicElement'`. Matched case-insensitively. */ type: string; globalId?: string; name?: string; /** Sets the `HAS_GEOMETRY` flag so `entities.hasGeometry()` returns true. */ hasGeometry?: boolean; } export interface SyntheticDataStoreOptions { schemaVersion: IfcDataStore['schemaVersion']; fileSize: number; /** * Display entity count. Defaults to the number of `entities`. The GLB path * overrides this with its mesh count — the synthetic store carries no entity * rows but still wants to report N renderable meshes to the UI. */ entityCount?: number; /** * Source bytes for lazy entity extraction. Defaults to empty; with an empty * source `getEntity` safely returns `null` (the entity table still answers * type/name/globalId queries from its columns). */ source?: Uint8Array; /** Synthetic entity rows; omit (or pass `[]`) for an entity-less store. */ entities?: SyntheticEntity[]; } /** * Build a fully-typed {@link IfcDataStore} for synthetic / non-STEP models * (GLB meshes, point-cloud scans) without any `as unknown as IfcDataStore` * escape hatch. * * The data tables are real {@link @ifc-lite/data} tables built from their * builders, and the four lazy accessors are wired by * {@link attachDataStoreAccessors} — the same single source of truth the * columnar parse, worker transport, and cache restore use. Because the result * is assembled as a typed {@link IfcStoreData}, a future required member of * `IfcDataStore` becomes a compile error here instead of a silent * `TypeError: store.getProperties is not a function` at runtime on the * GLB / point-cloud ingest flow (the crash class from #950 / #1004). */ export declare function createSyntheticDataStore(opts: SyntheticDataStoreOptions): IfcDataStore; //# sourceMappingURL=synthetic-data-store.d.ts.map