@pascal-app/core 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +13453 -13453
  2. package/dist/agent-operations/batch.d.ts +4 -8
  3. package/dist/agent-operations/batch.d.ts.map +1 -1
  4. package/dist/agent-operations/batch.js +7 -19
  5. package/dist/agent-operations/circulation-spaces.d.ts +3431 -3431
  6. package/dist/agent-operations/index.d.ts +5715 -9
  7. package/dist/agent-operations/index.d.ts.map +1 -1
  8. package/dist/agent-operations/index.js +16 -5
  9. package/dist/agent-operations/scene-queries.d.ts +2610 -2610
  10. package/dist/agent-operations/types.d.ts +7 -0
  11. package/dist/agent-operations/types.d.ts.map +1 -1
  12. package/dist/agent-operations/usage-checks.js +2 -2
  13. package/dist/agent-operations/verify-scene.d.ts +7 -3
  14. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  15. package/dist/agent-operations/verify-scene.js +15 -7
  16. package/dist/building/__fixtures__/wall-opening-cases.d.ts +238 -238
  17. package/dist/building/level-duplication.d.ts +1274 -1274
  18. package/dist/commands/structure/zone-wall-merge.d.ts +568 -568
  19. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2610 -2610
  20. package/dist/lib/__fixtures__/mezzanine.d.ts +10874 -10874
  21. package/dist/lib/absorb-wall-separators.d.ts +635 -635
  22. package/dist/lib/steps.d.ts +8 -0
  23. package/dist/lib/steps.d.ts.map +1 -0
  24. package/dist/lib/steps.js +7 -0
  25. package/dist/spatial/usage-field/findings.d.ts +3 -0
  26. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  27. package/dist/spatial/usage-field/findings.js +17 -5
  28. package/dist/spatial/usage-field/measure.d.ts +3 -1
  29. package/dist/spatial/usage-field/measure.d.ts.map +1 -1
  30. package/dist/spatial/usage-field/measure.js +7 -2
  31. package/dist/store/actions/node-actions.d.ts +3431 -3431
  32. package/dist/store/scene-annotations.d.ts +1193 -1193
  33. package/dist/systems/slab/__fixtures__/floor-step.d.ts +3431 -3431
  34. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2610 -2610
  35. package/dist/systems/stair/stair-opening-preview.d.ts +2610 -2610
  36. package/dist/utils/ensure-scene-openings.d.ts +6215 -6215
  37. package/dist/utils/floor-plate-migration.d.ts +635 -635
  38. package/dist/utils/owned-floor-opening-migration.d.ts +635 -635
  39. package/dist/utils/reconcile-structure-on-load.d.ts +3431 -3431
  40. package/package.json +1 -1
@@ -35,7 +35,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
35
35
  fromIds: string[];
36
36
  } | undefined;
37
37
  } | undefined;
38
- id: `bvent_${string}`;
38
+ id: `elevator_${string}`;
39
39
  material?: {
40
40
  id?: string | undefined;
41
41
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -58,24 +58,31 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
58
58
  bumpScale?: number | undefined;
59
59
  } | undefined;
60
60
  } | undefined;
61
+ materialPreset?: string | undefined;
61
62
  slots?: Record<string, string> | undefined;
62
- materialPreset: string;
63
- roofSegmentId?: string | undefined;
64
63
  position: [number, number, number];
65
64
  rotation: number;
66
65
  width: number;
67
66
  depth: number;
68
- height: number;
69
- hoodOverhang: number;
70
- topTaper: number;
71
- capHeight: number;
72
- capGap: number;
73
- domeCurvature: number;
74
- baseInset: number;
75
- baseHeight: number;
76
- cornerBevel: number;
77
- style: "box" | "cap" | "dome";
78
- type: "box-vent";
67
+ shaftWidth?: number | undefined;
68
+ shaftDepth?: number | undefined;
69
+ shaftWallThickness: number;
70
+ shaftStyle: "glass" | "solid";
71
+ cabHeight: number;
72
+ doorWidth: number;
73
+ doorHeight: number;
74
+ doorStyle: "center-opening" | "single-left" | "single-right";
75
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
76
+ fromLevelId: string | null;
77
+ toLevelId: string | null;
78
+ servedLevelIds?: string[] | undefined;
79
+ disabledLevelIds: string[];
80
+ serviceOnlyLevelIds: string[];
81
+ defaultLevelId: string | null;
82
+ speed: number;
83
+ doorDurationMs: number;
84
+ dwellMs: number;
85
+ type: "elevator";
79
86
  } | {
80
87
  object: "node";
81
88
  name?: string | undefined;
@@ -100,11 +107,21 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
100
107
  fromIds: string[];
101
108
  } | undefined;
102
109
  } | undefined;
103
- id: `column_${string}`;
104
- children: string[];
110
+ type: "item";
111
+ id: `item_${string}`;
105
112
  position: [number, number, number];
106
- rotation: number;
113
+ rotation: [number, number, number];
114
+ scale: [number, number, number];
115
+ side?: "back" | "front" | undefined;
116
+ children: string[];
117
+ wallId?: string | undefined;
118
+ wallT?: number | undefined;
119
+ roofSegmentId?: string | undefined;
120
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
121
+ blockFaceId?: string | undefined;
107
122
  supportSlabId?: string | undefined;
123
+ collectionIds?: `collection_${string}`[] | undefined;
124
+ slots?: Record<string, string> | undefined;
108
125
  source?: {
109
126
  kind: "script";
110
127
  meta?: {
@@ -219,104 +236,76 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
219
236
  floorPlan: string;
220
237
  } | undefined;
221
238
  } | undefined;
222
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
223
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
224
- height: number;
225
- radius: number;
226
- width: number;
227
- depth: number;
228
- edgeSoftness: number;
229
- baseHeight: number;
230
- capitalHeight: number;
231
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
232
- shaftTaper: number;
233
- shaftBulge: number;
234
- shaftStartScale: number;
235
- shaftEndScale: number;
236
- shaftSegmentCount: number;
237
- shaftTwistStep: number;
238
- shaftCornerRadius: number;
239
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
240
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
241
- baseWidthScale: number;
242
- baseDepthScale: number;
243
- baseTierCount: number;
244
- baseStepSpread: number;
245
- basePlinthHeightRatio: number;
246
- baseRoundBandScale: number;
247
- baseNeckScale: number;
248
- baseRoundBandCount: number;
249
- baseRibCount: number;
250
- baseCarvingLevel: number;
251
- basePanelInset: number;
252
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
253
- capitalWidthScale: number;
254
- capitalDepthScale: number;
255
- capitalTierCount: number;
256
- capitalStepSpread: number;
257
- capitalBandCount: number;
258
- voluteSize: number;
259
- voluteCount: number;
260
- leafCount: number;
261
- leafRows: number;
262
- bracketDepth: number;
263
- bracketTierCount: number;
264
- pendantCount: number;
265
- capitalCarvingLevel: number;
266
- ringCount: number;
267
- ringPlacement: "bottom" | "ends" | "even" | "top";
268
- ringThickness: number;
269
- ringSpread: number;
270
- fluteCount: number;
271
- fluteDepth: number;
272
- fluteWidth: number;
273
- spiralTwist: number;
274
- spiralRibCount: number;
275
- panelCount: number;
276
- panelInsetDepth: number;
277
- panelShape: "arched" | "diamond" | "rectangle";
278
- latheRingCount: number;
279
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
280
- carvingLevel: number;
281
- carvingPlacement: "all" | "base" | "capital" | "shaft";
282
- lowerBandEnabled: boolean;
283
- lowerBandHeight: number;
284
- lowerBandCarvingLevel: number;
285
- dentilCount: number;
286
- beadCount: number;
287
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
288
- braceWidth: number;
289
- braceDepth: number;
290
- braceBottomSpread: number;
291
- braceTopSpread: number;
292
- bracePlateEnabled: boolean;
293
- role?: "ornament" | "post" | undefined;
294
- postBase?: "none" | "pier" | "post-base" | undefined;
295
- material?: {
296
- id?: string | undefined;
297
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
298
- properties?: {
299
- color: string;
300
- roughness: number;
301
- metalness: number;
302
- opacity: number;
303
- transparent: boolean;
304
- side: "back" | "double" | "front";
239
+ asset: {
240
+ id: string;
241
+ category: string;
242
+ name: string;
243
+ thumbnail: string;
244
+ floorPlanUrl?: string | undefined;
245
+ source: "community" | "library" | "mine";
246
+ isDraft?: boolean | undefined;
247
+ src: string;
248
+ dimensions: [number, number, number];
249
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
250
+ recessed?: boolean | undefined;
251
+ tags?: string[] | undefined;
252
+ functionTags?: string[] | undefined;
253
+ offset: [number, number, number];
254
+ rotation: [number, number, number];
255
+ scale: [number, number, number];
256
+ surface?: {
257
+ height: number;
305
258
  } | undefined;
306
- texture?: {
307
- url: string;
308
- repeat?: [number, number] | undefined;
309
- scale?: number | undefined;
310
- offset?: [number, number] | undefined;
311
- normalMap?: string | undefined;
312
- normalScale?: number | undefined;
313
- bumpMap?: string | undefined;
314
- bumpScale?: number | undefined;
259
+ interactive?: {
260
+ controls: ({
261
+ kind: "toggle";
262
+ label?: string | undefined;
263
+ default?: boolean | undefined;
264
+ } | {
265
+ kind: "slider";
266
+ label: string;
267
+ min: number;
268
+ max: number;
269
+ step: number;
270
+ unit?: string | undefined;
271
+ displayMode: "dial" | "slider" | "stepper";
272
+ default?: number | undefined;
273
+ } | {
274
+ kind: "temperature";
275
+ label: string;
276
+ min: number;
277
+ max: number;
278
+ unit: "C" | "F";
279
+ default?: number | undefined;
280
+ })[];
281
+ effects: ({
282
+ kind: "animation";
283
+ mode?: "ambient" | "open-close" | undefined;
284
+ control?: number | undefined;
285
+ clips: {
286
+ on?: string | undefined;
287
+ off?: string | undefined;
288
+ loop?: string | undefined;
289
+ };
290
+ } | {
291
+ kind: "light";
292
+ color: string;
293
+ intensityRange: [number, number];
294
+ distance?: number | undefined;
295
+ offset: [number, number, number];
296
+ spot?: {
297
+ direction: [number, number, number];
298
+ angle: number;
299
+ softness: number;
300
+ } | undefined;
301
+ shadows?: boolean | undefined;
302
+ glow?: {
303
+ size: number;
304
+ strength: number;
305
+ } | undefined;
306
+ })[];
315
307
  } | undefined;
316
- } | undefined;
317
- materialPreset?: string | undefined;
318
- slots?: Record<string, string> | undefined;
319
- type: "column";
308
+ };
320
309
  } | {
321
310
  object: "node";
322
311
  name?: string | undefined;
@@ -341,70 +330,74 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
341
330
  fromIds: string[];
342
331
  } | undefined;
343
332
  } | undefined;
344
- id: `duct-fitting_${string}`;
345
- position: [number, number, number];
346
- rotation: [number, number, number];
347
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
348
- shape: "oval" | "rect" | "round";
349
- inletShape?: "oval" | "rect" | "round" | undefined;
350
- outletShape?: "oval" | "rect" | "round" | undefined;
351
- width: number;
352
- height: number;
353
- shape2: "oval" | "rect" | "round";
354
- width2: number;
355
- height2: number;
356
- angle: number;
357
- branchAngle: number;
358
- diameter: number;
359
- diameter2: number;
360
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
361
- system: "return" | "supply";
362
- damperAngle: number;
363
- panelWidth: number;
364
- panelHeight: number;
365
- slots?: Record<string, string> | undefined;
366
- type: "duct-fitting";
367
- } | {
368
- object: "node";
369
- name?: string | undefined;
370
- parentId: string | null;
371
- visible: boolean;
372
- camera?: {
373
- position: [number, number, number];
374
- target: [number, number, number];
375
- mode: "orthographic" | "perspective";
376
- fov?: number | undefined;
377
- zoom?: number | undefined;
333
+ id: `ceiling_${string}`;
334
+ children: (`item_${string}` | `procedural-item_${string}`)[];
335
+ material?: {
336
+ id?: string | undefined;
337
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
338
+ properties?: {
339
+ color: string;
340
+ roughness: number;
341
+ metalness: number;
342
+ opacity: number;
343
+ transparent: boolean;
344
+ side: "back" | "double" | "front";
345
+ } | undefined;
346
+ texture?: {
347
+ url: string;
348
+ repeat?: [number, number] | undefined;
349
+ scale?: number | undefined;
350
+ offset?: [number, number] | undefined;
351
+ normalMap?: string | undefined;
352
+ normalScale?: number | undefined;
353
+ bumpMap?: string | undefined;
354
+ bumpScale?: number | undefined;
355
+ } | undefined;
378
356
  } | undefined;
379
- metadata: Record<string, unknown>;
380
- provenance?: {
381
- refs: {
382
- ns?: string | undefined;
383
- id: string;
384
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
385
- }[];
386
- lineage?: {
387
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
388
- fromIds: string[];
357
+ materialPreset?: string | undefined;
358
+ slots?: Record<string, string> | undefined;
359
+ polygon: [number, number][];
360
+ holes: [number, number][][];
361
+ holeMetadata: {
362
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
363
+ openingId?: string | undefined;
364
+ stairId?: string | undefined;
365
+ elevatorId?: string | undefined;
366
+ }[];
367
+ openingIds?: string[] | undefined;
368
+ height?: number | undefined;
369
+ buildUp?: {
370
+ presetId?: string | undefined;
371
+ finish?: {
372
+ kind: "drywall" | "plaster" | "wood-plank";
373
+ thickness: number;
374
+ name?: string | undefined;
375
+ } | undefined;
376
+ framing?: {
377
+ system: "joists" | "truss-chords";
378
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
379
+ spacing: number;
380
+ } | undefined;
381
+ decking?: {
382
+ kind: "osb" | "plywood";
383
+ thickness: number;
384
+ name?: string | undefined;
385
+ } | undefined;
386
+ insulation?: {
387
+ kind: "batt" | "blown" | "rigid";
388
+ thickness: number;
389
+ name?: string | undefined;
389
390
  } | undefined;
390
391
  } | undefined;
391
- id: `hvac-equipment_${string}`;
392
- position: [number, number, number];
393
- rotation: number;
394
- supportSlabId?: string | undefined;
395
- equipmentType: "air-handler" | "condenser" | "furnace";
396
- width: number;
397
- depth: number;
398
- height: number;
399
- supplyShape: "oval" | "rect" | "round";
400
- returnShape: "oval" | "rect" | "round";
401
- supplyDiameter: number;
402
- returnDiameter: number;
403
- supplyWidth: number;
404
- supplyHeight: number;
405
- returnWidth: number;
406
- returnHeight: number;
407
- type: "hvac-equipment";
392
+ regions?: {
393
+ id: string;
394
+ polygon: [number, number][];
395
+ finish: string | Record<string, unknown>;
396
+ }[] | undefined;
397
+ boundary?: "auto" | undefined;
398
+ zoneId?: string | undefined;
399
+ autoFromWalls: boolean;
400
+ type: "ceiling";
408
401
  } | {
409
402
  object: "node";
410
403
  name?: string | undefined;
@@ -429,17 +422,42 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
429
422
  fromIds: string[];
430
423
  } | undefined;
431
424
  } | undefined;
432
- id: `pipe-fitting_${string}`;
433
- position: [number, number, number];
434
- rotation: [number, number, number];
435
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
436
- angle: number;
437
- diameter: number;
438
- diameter2: number;
439
- cleanoutStyle: "end" | "inline";
440
- pipeMaterial: "abs" | "cast-iron" | "pvc";
441
- system: "vent" | "waste";
442
- type: "pipe-fitting";
425
+ id: `construction-dimension_${string}`;
426
+ anchors: ({
427
+ kind: "feature";
428
+ reference: {
429
+ nodeId: string;
430
+ featureId: string;
431
+ parameters?: Record<string, string | number | boolean> | undefined;
432
+ };
433
+ fallback: [number, number, number];
434
+ } | [number, number, number])[];
435
+ baseline: {
436
+ origin: [number, number];
437
+ direction: [number, number];
438
+ };
439
+ chainMode: "continuous" | "point-to-point";
440
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
441
+ featureCount: number;
442
+ showCenterMark: boolean;
443
+ prefix: string;
444
+ suffix: string;
445
+ textOverride: string | null;
446
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
447
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
448
+ textPosition: "above" | "centered";
449
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
450
+ metricNotation: "meters" | "millimeters";
451
+ extensionStartGap: number;
452
+ extensionOvershoot: number;
453
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
454
+ drawingOverrides: {
455
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
456
+ presentation: "controlled" | "omit" | "shown";
457
+ suppressedSegmentIndexes: number[];
458
+ }[];
459
+ controllingDimensionId: `construction-dimension_${string}` | null;
460
+ type: "construction-dimension";
443
461
  } | {
444
462
  object: "node";
445
463
  name?: string | undefined;
@@ -680,20 +698,29 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
680
698
  fromIds: string[];
681
699
  } | undefined;
682
700
  } | undefined;
683
- type: "item";
684
- id: `item_${string}`;
685
- position: [number, number, number];
686
- rotation: [number, number, number];
687
- scale: [number, number, number];
688
- side?: "back" | "front" | undefined;
689
- children: string[];
690
- wallId?: string | undefined;
691
- wallT?: number | undefined;
692
- roofSegmentId?: string | undefined;
693
- roofFace?: "back" | "front" | "left" | "right" | undefined;
694
- blockFaceId?: string | undefined;
695
- supportSlabId?: string | undefined;
696
- collectionIds?: `collection_${string}`[] | undefined;
701
+ id: `door_${string}`;
702
+ material?: {
703
+ id?: string | undefined;
704
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
705
+ properties?: {
706
+ color: string;
707
+ roughness: number;
708
+ metalness: number;
709
+ opacity: number;
710
+ transparent: boolean;
711
+ side: "back" | "double" | "front";
712
+ } | undefined;
713
+ texture?: {
714
+ url: string;
715
+ repeat?: [number, number] | undefined;
716
+ scale?: number | undefined;
717
+ offset?: [number, number] | undefined;
718
+ normalMap?: string | undefined;
719
+ normalScale?: number | undefined;
720
+ bumpMap?: string | undefined;
721
+ bumpScale?: number | undefined;
722
+ } | undefined;
723
+ } | undefined;
697
724
  slots?: Record<string, string> | undefined;
698
725
  source?: {
699
726
  kind: "script";
@@ -800,85 +827,81 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
800
827
  coverage?: number | undefined;
801
828
  uncovered?: {
802
829
  min: [number, number];
803
- max: [number, number];
804
- }[] | undefined;
805
- };
806
- images?: {
807
- artifact: string;
808
- thumbnail: string;
809
- floorPlan: string;
810
- } | undefined;
811
- } | undefined;
812
- asset: {
813
- id: string;
814
- category: string;
815
- name: string;
816
- thumbnail: string;
817
- floorPlanUrl?: string | undefined;
818
- source: "community" | "library" | "mine";
819
- isDraft?: boolean | undefined;
820
- src: string;
821
- dimensions: [number, number, number];
822
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
823
- recessed?: boolean | undefined;
824
- tags?: string[] | undefined;
825
- functionTags?: string[] | undefined;
826
- offset: [number, number, number];
827
- rotation: [number, number, number];
828
- scale: [number, number, number];
829
- surface?: {
830
- height: number;
831
- } | undefined;
832
- interactive?: {
833
- controls: ({
834
- kind: "toggle";
835
- label?: string | undefined;
836
- default?: boolean | undefined;
837
- } | {
838
- kind: "slider";
839
- label: string;
840
- min: number;
841
- max: number;
842
- step: number;
843
- unit?: string | undefined;
844
- displayMode: "dial" | "slider" | "stepper";
845
- default?: number | undefined;
846
- } | {
847
- kind: "temperature";
848
- label: string;
849
- min: number;
850
- max: number;
851
- unit: "C" | "F";
852
- default?: number | undefined;
853
- })[];
854
- effects: ({
855
- kind: "animation";
856
- mode?: "ambient" | "open-close" | undefined;
857
- control?: number | undefined;
858
- clips: {
859
- on?: string | undefined;
860
- off?: string | undefined;
861
- loop?: string | undefined;
862
- };
863
- } | {
864
- kind: "light";
865
- color: string;
866
- intensityRange: [number, number];
867
- distance?: number | undefined;
868
- offset: [number, number, number];
869
- spot?: {
870
- direction: [number, number, number];
871
- angle: number;
872
- softness: number;
873
- } | undefined;
874
- shadows?: boolean | undefined;
875
- glow?: {
876
- size: number;
877
- strength: number;
878
- } | undefined;
879
- })[];
830
+ max: [number, number];
831
+ }[] | undefined;
832
+ };
833
+ images?: {
834
+ artifact: string;
835
+ thumbnail: string;
836
+ floorPlan: string;
880
837
  } | undefined;
881
- };
838
+ } | undefined;
839
+ position: [number, number, number];
840
+ rotation: [number, number, number];
841
+ side?: "back" | "front" | undefined;
842
+ verticalAnchor?: "floor" | "wall" | undefined;
843
+ floorThresholdVersion: 0 | 1;
844
+ wallId?: string | undefined;
845
+ roofSegmentId?: string | undefined;
846
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
847
+ width: number;
848
+ height: number;
849
+ sidelightLeft?: number | undefined;
850
+ sidelightRight?: number | undefined;
851
+ transomHeight?: number | undefined;
852
+ slidingStyle?: "bypass" | "patio" | undefined;
853
+ mark?: string | undefined;
854
+ constructionType: "framed" | "masonry";
855
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
856
+ roughOpeningWidth?: number | undefined;
857
+ roughOpeningHeight?: number | undefined;
858
+ masonryOpeningWidth?: number | undefined;
859
+ masonryOpeningHeight?: number | undefined;
860
+ finishOpeningWidth?: number | undefined;
861
+ finishOpeningHeight?: number | undefined;
862
+ doorCategory: "garage" | "interior";
863
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
864
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
865
+ operationState: number;
866
+ slideDirection: "left" | "right";
867
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
868
+ garagePanelCount: number;
869
+ openingKind: "door" | "opening";
870
+ openingShape: "arch" | "rectangle" | "rounded";
871
+ openingRadiusMode: "all" | "individual";
872
+ openingTopRadii: [number, number];
873
+ cornerRadius: number;
874
+ archHeight: number;
875
+ openingRevealRadius: number;
876
+ frameThickness: number;
877
+ frameDepth?: number | undefined;
878
+ threshold: boolean;
879
+ thresholdHeight: number;
880
+ casingFaceA?: boolean | undefined;
881
+ casingFaceB?: boolean | undefined;
882
+ casingWidth?: number | undefined;
883
+ hingesSide: "left" | "right";
884
+ swingDirection: "inward" | "outward";
885
+ swingAngle: number;
886
+ segments: {
887
+ type: "empty" | "glass" | "panel";
888
+ heightRatio: number;
889
+ columnRatios: number[];
890
+ dividerThickness: number;
891
+ panelDepth: number;
892
+ panelInset: number;
893
+ }[];
894
+ handle: boolean;
895
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
896
+ handleHeight: number;
897
+ handleSide: "left" | "right";
898
+ contentPadding: [number, number];
899
+ doorCloser: boolean;
900
+ panicBar: boolean;
901
+ panicBarStyle: "crossbar" | "touchbar";
902
+ panicBarRods: boolean;
903
+ panicBarHeight: number;
904
+ type: "door";
882
905
  } | {
883
906
  object: "node";
884
907
  name?: string | undefined;
@@ -903,7 +926,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
903
926
  fromIds: string[];
904
927
  } | undefined;
905
928
  } | undefined;
906
- id: `door_${string}`;
929
+ id: `window_${string}`;
907
930
  material?: {
908
931
  id?: string | undefined;
909
932
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1047,14 +1070,12 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1047
1070
  verticalAnchor?: "floor" | "wall" | undefined;
1048
1071
  floorThresholdVersion: 0 | 1;
1049
1072
  wallId?: string | undefined;
1073
+ dormerId?: string | undefined;
1074
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1050
1075
  roofSegmentId?: string | undefined;
1051
1076
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1052
1077
  width: number;
1053
1078
  height: number;
1054
- sidelightLeft?: number | undefined;
1055
- sidelightRight?: number | undefined;
1056
- transomHeight?: number | undefined;
1057
- slidingStyle?: "bypass" | "patio" | undefined;
1058
1079
  mark?: string | undefined;
1059
1080
  constructionType: "framed" | "masonry";
1060
1081
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -1064,49 +1085,52 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1064
1085
  masonryOpeningHeight?: number | undefined;
1065
1086
  finishOpeningWidth?: number | undefined;
1066
1087
  finishOpeningHeight?: number | undefined;
1067
- doorCategory: "garage" | "interior";
1068
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1069
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
1088
+ openingKind: "opening" | "window";
1089
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1070
1090
  operationState: number;
1071
- slideDirection: "left" | "right";
1072
- trackStyle: "none" | "overhead" | "pocket" | "visible";
1073
- garagePanelCount: number;
1074
- openingKind: "door" | "opening";
1091
+ openingDirection?: "inward" | "outward" | undefined;
1092
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1093
+ awningDirection: "down" | "up";
1094
+ casementStyle: "french" | "single";
1095
+ hingesSide: "left" | "right";
1075
1096
  openingShape: "arch" | "rectangle" | "rounded";
1076
1097
  openingRadiusMode: "all" | "individual";
1077
- openingTopRadii: [number, number];
1098
+ openingCornerRadii: [number, number, number, number];
1078
1099
  cornerRadius: number;
1079
1100
  archHeight: number;
1080
1101
  openingRevealRadius: number;
1081
1102
  frameThickness: number;
1082
1103
  frameDepth?: number | undefined;
1083
- threshold: boolean;
1084
- thresholdHeight: number;
1104
+ windowHandle?: boolean | undefined;
1105
+ sashGrid?: boolean | undefined;
1106
+ columnRatios: number[];
1107
+ rowRatios: number[];
1108
+ columnDividerThickness: number;
1109
+ rowDividerThickness: number;
1110
+ corner?: {
1111
+ end: "end" | "start";
1112
+ partnerId: string;
1113
+ post: "none" | "post";
1114
+ } | undefined;
1115
+ sill: boolean;
1116
+ sillDepth: number;
1117
+ sillThickness: number;
1118
+ sillOverhang?: number | undefined;
1119
+ sillInterior?: boolean | undefined;
1120
+ sillInteriorDepth?: number | undefined;
1121
+ sillInteriorThickness?: number | undefined;
1122
+ sillInteriorOverhang?: number | undefined;
1123
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1124
+ shutterWidth?: number | undefined;
1125
+ shutterOpen?: number | undefined;
1126
+ shutterSides?: "both" | "left" | "right" | undefined;
1127
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1128
+ rollerShutterBoxHeight?: number | undefined;
1129
+ rollerShutterOpen?: number | undefined;
1085
1130
  casingFaceA?: boolean | undefined;
1086
1131
  casingFaceB?: boolean | undefined;
1087
1132
  casingWidth?: number | undefined;
1088
- hingesSide: "left" | "right";
1089
- swingDirection: "inward" | "outward";
1090
- swingAngle: number;
1091
- segments: {
1092
- type: "empty" | "glass" | "panel";
1093
- heightRatio: number;
1094
- columnRatios: number[];
1095
- dividerThickness: number;
1096
- panelDepth: number;
1097
- panelInset: number;
1098
- }[];
1099
- handle: boolean;
1100
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1101
- handleHeight: number;
1102
- handleSide: "left" | "right";
1103
- contentPadding: [number, number];
1104
- doorCloser: boolean;
1105
- panicBar: boolean;
1106
- panicBarStyle: "crossbar" | "touchbar";
1107
- panicBarRods: boolean;
1108
- panicBarHeight: number;
1109
- type: "door";
1133
+ type: "window";
1110
1134
  } | {
1111
1135
  object: "node";
1112
1136
  name?: string | undefined;
@@ -1131,30 +1155,11 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1131
1155
  fromIds: string[];
1132
1156
  } | undefined;
1133
1157
  } | undefined;
1134
- id: `window_${string}`;
1135
- material?: {
1136
- id?: string | undefined;
1137
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1138
- properties?: {
1139
- color: string;
1140
- roughness: number;
1141
- metalness: number;
1142
- opacity: number;
1143
- transparent: boolean;
1144
- side: "back" | "double" | "front";
1145
- } | undefined;
1146
- texture?: {
1147
- url: string;
1148
- repeat?: [number, number] | undefined;
1149
- scale?: number | undefined;
1150
- offset?: [number, number] | undefined;
1151
- normalMap?: string | undefined;
1152
- normalScale?: number | undefined;
1153
- bumpMap?: string | undefined;
1154
- bumpScale?: number | undefined;
1155
- } | undefined;
1156
- } | undefined;
1157
- slots?: Record<string, string> | undefined;
1158
+ id: `column_${string}`;
1159
+ children: string[];
1160
+ position: [number, number, number];
1161
+ rotation: number;
1162
+ supportSlabId?: string | undefined;
1158
1163
  source?: {
1159
1164
  kind: "script";
1160
1165
  meta?: {
@@ -1269,73 +1274,104 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1269
1274
  floorPlan: string;
1270
1275
  } | undefined;
1271
1276
  } | undefined;
1272
- position: [number, number, number];
1273
- rotation: [number, number, number];
1274
- side?: "back" | "front" | undefined;
1275
- verticalAnchor?: "floor" | "wall" | undefined;
1276
- floorThresholdVersion: 0 | 1;
1277
- wallId?: string | undefined;
1278
- dormerId?: string | undefined;
1279
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1280
- roofSegmentId?: string | undefined;
1281
- roofFace?: "back" | "front" | "left" | "right" | undefined;
1282
- width: number;
1283
- height: number;
1284
- mark?: string | undefined;
1285
- constructionType: "framed" | "masonry";
1286
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1287
- roughOpeningWidth?: number | undefined;
1288
- roughOpeningHeight?: number | undefined;
1289
- masonryOpeningWidth?: number | undefined;
1290
- masonryOpeningHeight?: number | undefined;
1291
- finishOpeningWidth?: number | undefined;
1292
- finishOpeningHeight?: number | undefined;
1293
- openingKind: "opening" | "window";
1294
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1295
- operationState: number;
1296
- openingDirection?: "inward" | "outward" | undefined;
1297
- tiltTurnMode?: "tilt" | "turn" | undefined;
1298
- awningDirection: "down" | "up";
1299
- casementStyle: "french" | "single";
1300
- hingesSide: "left" | "right";
1301
- openingShape: "arch" | "rectangle" | "rounded";
1302
- openingRadiusMode: "all" | "individual";
1303
- openingCornerRadii: [number, number, number, number];
1304
- cornerRadius: number;
1305
- archHeight: number;
1306
- openingRevealRadius: number;
1307
- frameThickness: number;
1308
- frameDepth?: number | undefined;
1309
- windowHandle?: boolean | undefined;
1310
- sashGrid?: boolean | undefined;
1311
- columnRatios: number[];
1312
- rowRatios: number[];
1313
- columnDividerThickness: number;
1314
- rowDividerThickness: number;
1315
- corner?: {
1316
- end: "end" | "start";
1317
- partnerId: string;
1318
- post: "none" | "post";
1319
- } | undefined;
1320
- sill: boolean;
1321
- sillDepth: number;
1322
- sillThickness: number;
1323
- sillOverhang?: number | undefined;
1324
- sillInterior?: boolean | undefined;
1325
- sillInteriorDepth?: number | undefined;
1326
- sillInteriorThickness?: number | undefined;
1327
- sillInteriorOverhang?: number | undefined;
1328
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1329
- shutterWidth?: number | undefined;
1330
- shutterOpen?: number | undefined;
1331
- shutterSides?: "both" | "left" | "right" | undefined;
1332
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1333
- rollerShutterBoxHeight?: number | undefined;
1334
- rollerShutterOpen?: number | undefined;
1335
- casingFaceA?: boolean | undefined;
1336
- casingFaceB?: boolean | undefined;
1337
- casingWidth?: number | undefined;
1338
- type: "window";
1277
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1278
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1279
+ height: number;
1280
+ radius: number;
1281
+ width: number;
1282
+ depth: number;
1283
+ edgeSoftness: number;
1284
+ baseHeight: number;
1285
+ capitalHeight: number;
1286
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1287
+ shaftTaper: number;
1288
+ shaftBulge: number;
1289
+ shaftStartScale: number;
1290
+ shaftEndScale: number;
1291
+ shaftSegmentCount: number;
1292
+ shaftTwistStep: number;
1293
+ shaftCornerRadius: number;
1294
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1295
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1296
+ baseWidthScale: number;
1297
+ baseDepthScale: number;
1298
+ baseTierCount: number;
1299
+ baseStepSpread: number;
1300
+ basePlinthHeightRatio: number;
1301
+ baseRoundBandScale: number;
1302
+ baseNeckScale: number;
1303
+ baseRoundBandCount: number;
1304
+ baseRibCount: number;
1305
+ baseCarvingLevel: number;
1306
+ basePanelInset: number;
1307
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1308
+ capitalWidthScale: number;
1309
+ capitalDepthScale: number;
1310
+ capitalTierCount: number;
1311
+ capitalStepSpread: number;
1312
+ capitalBandCount: number;
1313
+ voluteSize: number;
1314
+ voluteCount: number;
1315
+ leafCount: number;
1316
+ leafRows: number;
1317
+ bracketDepth: number;
1318
+ bracketTierCount: number;
1319
+ pendantCount: number;
1320
+ capitalCarvingLevel: number;
1321
+ ringCount: number;
1322
+ ringPlacement: "bottom" | "ends" | "even" | "top";
1323
+ ringThickness: number;
1324
+ ringSpread: number;
1325
+ fluteCount: number;
1326
+ fluteDepth: number;
1327
+ fluteWidth: number;
1328
+ spiralTwist: number;
1329
+ spiralRibCount: number;
1330
+ panelCount: number;
1331
+ panelInsetDepth: number;
1332
+ panelShape: "arched" | "diamond" | "rectangle";
1333
+ latheRingCount: number;
1334
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
1335
+ carvingLevel: number;
1336
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
1337
+ lowerBandEnabled: boolean;
1338
+ lowerBandHeight: number;
1339
+ lowerBandCarvingLevel: number;
1340
+ dentilCount: number;
1341
+ beadCount: number;
1342
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1343
+ braceWidth: number;
1344
+ braceDepth: number;
1345
+ braceBottomSpread: number;
1346
+ braceTopSpread: number;
1347
+ bracePlateEnabled: boolean;
1348
+ role?: "ornament" | "post" | undefined;
1349
+ postBase?: "none" | "pier" | "post-base" | undefined;
1350
+ material?: {
1351
+ id?: string | undefined;
1352
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1353
+ properties?: {
1354
+ color: string;
1355
+ roughness: number;
1356
+ metalness: number;
1357
+ opacity: number;
1358
+ transparent: boolean;
1359
+ side: "back" | "double" | "front";
1360
+ } | undefined;
1361
+ texture?: {
1362
+ url: string;
1363
+ repeat?: [number, number] | undefined;
1364
+ scale?: number | undefined;
1365
+ offset?: [number, number] | undefined;
1366
+ normalMap?: string | undefined;
1367
+ normalScale?: number | undefined;
1368
+ bumpMap?: string | undefined;
1369
+ bumpScale?: number | undefined;
1370
+ } | undefined;
1371
+ } | undefined;
1372
+ materialPreset?: string | undefined;
1373
+ slots?: Record<string, string> | undefined;
1374
+ type: "column";
1339
1375
  } | {
1340
1376
  object: "node";
1341
1377
  name?: string | undefined;
@@ -2896,66 +2932,6 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
2896
2932
  topElevation?: number | undefined;
2897
2933
  supportSlabId?: string | undefined;
2898
2934
  type: "beam";
2899
- } | {
2900
- object: "node";
2901
- name?: string | undefined;
2902
- parentId: string | null;
2903
- visible: boolean;
2904
- camera?: {
2905
- position: [number, number, number];
2906
- target: [number, number, number];
2907
- mode: "orthographic" | "perspective";
2908
- fov?: number | undefined;
2909
- zoom?: number | undefined;
2910
- } | undefined;
2911
- metadata: Record<string, unknown>;
2912
- provenance?: {
2913
- refs: {
2914
- ns?: string | undefined;
2915
- id: string;
2916
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2917
- }[];
2918
- lineage?: {
2919
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2920
- fromIds: string[];
2921
- } | undefined;
2922
- } | undefined;
2923
- id: `construction-dimension_${string}`;
2924
- anchors: ({
2925
- kind: "feature";
2926
- reference: {
2927
- nodeId: string;
2928
- featureId: string;
2929
- parameters?: Record<string, string | number | boolean> | undefined;
2930
- };
2931
- fallback: [number, number, number];
2932
- } | [number, number, number])[];
2933
- baseline: {
2934
- origin: [number, number];
2935
- direction: [number, number];
2936
- };
2937
- chainMode: "continuous" | "point-to-point";
2938
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2939
- featureCount: number;
2940
- showCenterMark: boolean;
2941
- prefix: string;
2942
- suffix: string;
2943
- textOverride: string | null;
2944
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2945
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2946
- textPosition: "above" | "centered";
2947
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2948
- metricNotation: "meters" | "millimeters";
2949
- extensionStartGap: number;
2950
- extensionOvershoot: number;
2951
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2952
- drawingOverrides: {
2953
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2954
- presentation: "controlled" | "omit" | "shown";
2955
- suppressedSegmentIndexes: number[];
2956
- }[];
2957
- controllingDimensionId: `construction-dimension_${string}` | null;
2958
- type: "construction-dimension";
2959
2935
  } | {
2960
2936
  object: "node";
2961
2937
  name?: string | undefined;
@@ -3459,119 +3435,27 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3459
3435
  step?: number | undefined;
3460
3436
  finish: string;
3461
3437
  }[] | undefined;
3462
- floorEdgeFinish?: string | undefined;
3463
- wallMaterial?: string | undefined;
3464
- wallOverrides?: {
3465
- wallId: string;
3466
- face: "a" | "b";
3467
- finish: string;
3468
- }[] | undefined;
3469
- hasFloor?: false | undefined;
3470
- hasCeiling?: false | undefined;
3471
- spaceRole: "generic" | "room";
3472
- roomNumber: string;
3473
- enclosureStatus: "auto" | "enclosed" | "open";
3474
- floorFinish: string;
3475
- wallFinish: string;
3476
- ceilingFinish: string;
3477
- ceilingHeight: number;
3478
- occupancy: string;
3479
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3480
- color: string;
3481
- metadata: Record<string, unknown>;
3482
- type: "zone";
3483
- } | {
3484
- object: "node";
3485
- name?: string | undefined;
3486
- parentId: string | null;
3487
- visible: boolean;
3488
- camera?: {
3489
- position: [number, number, number];
3490
- target: [number, number, number];
3491
- mode: "orthographic" | "perspective";
3492
- fov?: number | undefined;
3493
- zoom?: number | undefined;
3494
- } | undefined;
3495
- metadata: Record<string, unknown>;
3496
- provenance?: {
3497
- refs: {
3498
- ns?: string | undefined;
3499
- id: string;
3500
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3501
- }[];
3502
- lineage?: {
3503
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3504
- fromIds: string[];
3505
- } | undefined;
3506
- } | undefined;
3507
- id: `ceiling_${string}`;
3508
- children: (`item_${string}` | `procedural-item_${string}`)[];
3509
- material?: {
3510
- id?: string | undefined;
3511
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3512
- properties?: {
3513
- color: string;
3514
- roughness: number;
3515
- metalness: number;
3516
- opacity: number;
3517
- transparent: boolean;
3518
- side: "back" | "double" | "front";
3519
- } | undefined;
3520
- texture?: {
3521
- url: string;
3522
- repeat?: [number, number] | undefined;
3523
- scale?: number | undefined;
3524
- offset?: [number, number] | undefined;
3525
- normalMap?: string | undefined;
3526
- normalScale?: number | undefined;
3527
- bumpMap?: string | undefined;
3528
- bumpScale?: number | undefined;
3529
- } | undefined;
3530
- } | undefined;
3531
- materialPreset?: string | undefined;
3532
- slots?: Record<string, string> | undefined;
3533
- polygon: [number, number][];
3534
- holes: [number, number][][];
3535
- holeMetadata: {
3536
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
3537
- openingId?: string | undefined;
3538
- stairId?: string | undefined;
3539
- elevatorId?: string | undefined;
3540
- }[];
3541
- openingIds?: string[] | undefined;
3542
- height?: number | undefined;
3543
- buildUp?: {
3544
- presetId?: string | undefined;
3545
- finish?: {
3546
- kind: "drywall" | "plaster" | "wood-plank";
3547
- thickness: number;
3548
- name?: string | undefined;
3549
- } | undefined;
3550
- framing?: {
3551
- system: "joists" | "truss-chords";
3552
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3553
- spacing: number;
3554
- } | undefined;
3555
- decking?: {
3556
- kind: "osb" | "plywood";
3557
- thickness: number;
3558
- name?: string | undefined;
3559
- } | undefined;
3560
- insulation?: {
3561
- kind: "batt" | "blown" | "rigid";
3562
- thickness: number;
3563
- name?: string | undefined;
3564
- } | undefined;
3565
- } | undefined;
3566
- regions?: {
3567
- id: string;
3568
- polygon: [number, number][];
3569
- finish: string | Record<string, unknown>;
3438
+ floorEdgeFinish?: string | undefined;
3439
+ wallMaterial?: string | undefined;
3440
+ wallOverrides?: {
3441
+ wallId: string;
3442
+ face: "a" | "b";
3443
+ finish: string;
3570
3444
  }[] | undefined;
3571
- boundary?: "auto" | undefined;
3572
- zoneId?: string | undefined;
3573
- autoFromWalls: boolean;
3574
- type: "ceiling";
3445
+ hasFloor?: false | undefined;
3446
+ hasCeiling?: false | undefined;
3447
+ spaceRole: "generic" | "room";
3448
+ roomNumber: string;
3449
+ enclosureStatus: "auto" | "enclosed" | "open";
3450
+ floorFinish: string;
3451
+ wallFinish: string;
3452
+ ceilingFinish: string;
3453
+ ceilingHeight: number;
3454
+ occupancy: string;
3455
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3456
+ color: string;
3457
+ metadata: Record<string, unknown>;
3458
+ type: "zone";
3575
3459
  } | {
3576
3460
  object: "node";
3577
3461
  name?: string | undefined;
@@ -4177,6 +4061,53 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4177
4061
  system: "return" | "supply";
4178
4062
  slots?: Record<string, string> | undefined;
4179
4063
  type: "duct-segment";
4064
+ } | {
4065
+ object: "node";
4066
+ name?: string | undefined;
4067
+ parentId: string | null;
4068
+ visible: boolean;
4069
+ camera?: {
4070
+ position: [number, number, number];
4071
+ target: [number, number, number];
4072
+ mode: "orthographic" | "perspective";
4073
+ fov?: number | undefined;
4074
+ zoom?: number | undefined;
4075
+ } | undefined;
4076
+ metadata: Record<string, unknown>;
4077
+ provenance?: {
4078
+ refs: {
4079
+ ns?: string | undefined;
4080
+ id: string;
4081
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4082
+ }[];
4083
+ lineage?: {
4084
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4085
+ fromIds: string[];
4086
+ } | undefined;
4087
+ } | undefined;
4088
+ id: `duct-fitting_${string}`;
4089
+ position: [number, number, number];
4090
+ rotation: [number, number, number];
4091
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4092
+ shape: "oval" | "rect" | "round";
4093
+ inletShape?: "oval" | "rect" | "round" | undefined;
4094
+ outletShape?: "oval" | "rect" | "round" | undefined;
4095
+ width: number;
4096
+ height: number;
4097
+ shape2: "oval" | "rect" | "round";
4098
+ width2: number;
4099
+ height2: number;
4100
+ angle: number;
4101
+ branchAngle: number;
4102
+ diameter: number;
4103
+ diameter2: number;
4104
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
4105
+ system: "return" | "supply";
4106
+ damperAngle: number;
4107
+ panelWidth: number;
4108
+ panelHeight: number;
4109
+ slots?: Record<string, string> | undefined;
4110
+ type: "duct-fitting";
4180
4111
  } | {
4181
4112
  object: "node";
4182
4113
  name?: string | undefined;
@@ -4214,6 +4145,47 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4214
4145
  collarWidth: number;
4215
4146
  collarHeight: number;
4216
4147
  type: "duct-terminal";
4148
+ } | {
4149
+ object: "node";
4150
+ name?: string | undefined;
4151
+ parentId: string | null;
4152
+ visible: boolean;
4153
+ camera?: {
4154
+ position: [number, number, number];
4155
+ target: [number, number, number];
4156
+ mode: "orthographic" | "perspective";
4157
+ fov?: number | undefined;
4158
+ zoom?: number | undefined;
4159
+ } | undefined;
4160
+ metadata: Record<string, unknown>;
4161
+ provenance?: {
4162
+ refs: {
4163
+ ns?: string | undefined;
4164
+ id: string;
4165
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4166
+ }[];
4167
+ lineage?: {
4168
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4169
+ fromIds: string[];
4170
+ } | undefined;
4171
+ } | undefined;
4172
+ id: `hvac-equipment_${string}`;
4173
+ position: [number, number, number];
4174
+ rotation: number;
4175
+ supportSlabId?: string | undefined;
4176
+ equipmentType: "air-handler" | "condenser" | "furnace";
4177
+ width: number;
4178
+ depth: number;
4179
+ height: number;
4180
+ supplyShape: "oval" | "rect" | "round";
4181
+ returnShape: "oval" | "rect" | "round";
4182
+ supplyDiameter: number;
4183
+ returnDiameter: number;
4184
+ supplyWidth: number;
4185
+ supplyHeight: number;
4186
+ returnWidth: number;
4187
+ returnHeight: number;
4188
+ type: "hvac-equipment";
4217
4189
  } | {
4218
4190
  object: "node";
4219
4191
  name?: string | undefined;
@@ -4342,13 +4314,17 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4342
4314
  fromIds: string[];
4343
4315
  } | undefined;
4344
4316
  } | undefined;
4345
- id: `pipe-trap_${string}`;
4317
+ id: `pipe-fitting_${string}`;
4346
4318
  position: [number, number, number];
4347
- rotation: number;
4319
+ rotation: [number, number, number];
4320
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4321
+ angle: number;
4348
4322
  diameter: number;
4323
+ diameter2: number;
4324
+ cleanoutStyle: "end" | "inline";
4349
4325
  pipeMaterial: "abs" | "cast-iron" | "pvc";
4350
- armLengthM: number;
4351
- type: "pipe-trap";
4326
+ system: "vent" | "waste";
4327
+ type: "pipe-fitting";
4352
4328
  } | {
4353
4329
  object: "node";
4354
4330
  name?: string | undefined;
@@ -4373,12 +4349,13 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4373
4349
  fromIds: string[];
4374
4350
  } | undefined;
4375
4351
  } | undefined;
4376
- id: `level_${string}`;
4377
- children: (`beam_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
4378
- level: number;
4379
- baseElevation: number;
4380
- height?: number | undefined;
4381
- type: "level";
4352
+ id: `pipe-trap_${string}`;
4353
+ position: [number, number, number];
4354
+ rotation: number;
4355
+ diameter: number;
4356
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4357
+ armLengthM: number;
4358
+ type: "pipe-trap";
4382
4359
  } | {
4383
4360
  object: "node";
4384
4361
  name?: string | undefined;
@@ -4403,54 +4380,12 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4403
4380
  fromIds: string[];
4404
4381
  } | undefined;
4405
4382
  } | undefined;
4406
- id: `elevator_${string}`;
4407
- material?: {
4408
- id?: string | undefined;
4409
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4410
- properties?: {
4411
- color: string;
4412
- roughness: number;
4413
- metalness: number;
4414
- opacity: number;
4415
- transparent: boolean;
4416
- side: "back" | "double" | "front";
4417
- } | undefined;
4418
- texture?: {
4419
- url: string;
4420
- repeat?: [number, number] | undefined;
4421
- scale?: number | undefined;
4422
- offset?: [number, number] | undefined;
4423
- normalMap?: string | undefined;
4424
- normalScale?: number | undefined;
4425
- bumpMap?: string | undefined;
4426
- bumpScale?: number | undefined;
4427
- } | undefined;
4428
- } | undefined;
4429
- materialPreset?: string | undefined;
4430
- slots?: Record<string, string> | undefined;
4431
- position: [number, number, number];
4432
- rotation: number;
4433
- width: number;
4434
- depth: number;
4435
- shaftWidth?: number | undefined;
4436
- shaftDepth?: number | undefined;
4437
- shaftWallThickness: number;
4438
- shaftStyle: "glass" | "solid";
4439
- cabHeight: number;
4440
- doorWidth: number;
4441
- doorHeight: number;
4442
- doorStyle: "center-opening" | "single-left" | "single-right";
4443
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4444
- fromLevelId: string | null;
4445
- toLevelId: string | null;
4446
- servedLevelIds?: string[] | undefined;
4447
- disabledLevelIds: string[];
4448
- serviceOnlyLevelIds: string[];
4449
- defaultLevelId: string | null;
4450
- speed: number;
4451
- doorDurationMs: number;
4452
- dwellMs: number;
4453
- type: "elevator";
4383
+ id: `level_${string}`;
4384
+ children: (`beam_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
4385
+ level: number;
4386
+ baseElevation: number;
4387
+ height?: number | undefined;
4388
+ type: "level";
4454
4389
  } | {
4455
4390
  object: "node";
4456
4391
  parentId: string | null;
@@ -4916,6 +4851,71 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4916
4851
  topFinishHeight: number;
4917
4852
  topFinishDepth: number;
4918
4853
  type: "cabinet-module";
4854
+ } | {
4855
+ object: "node";
4856
+ name?: string | undefined;
4857
+ parentId: string | null;
4858
+ visible: boolean;
4859
+ camera?: {
4860
+ position: [number, number, number];
4861
+ target: [number, number, number];
4862
+ mode: "orthographic" | "perspective";
4863
+ fov?: number | undefined;
4864
+ zoom?: number | undefined;
4865
+ } | undefined;
4866
+ metadata: Record<string, unknown>;
4867
+ provenance?: {
4868
+ refs: {
4869
+ ns?: string | undefined;
4870
+ id: string;
4871
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4872
+ }[];
4873
+ lineage?: {
4874
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4875
+ fromIds: string[];
4876
+ } | undefined;
4877
+ } | undefined;
4878
+ id: `bvent_${string}`;
4879
+ material?: {
4880
+ id?: string | undefined;
4881
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4882
+ properties?: {
4883
+ color: string;
4884
+ roughness: number;
4885
+ metalness: number;
4886
+ opacity: number;
4887
+ transparent: boolean;
4888
+ side: "back" | "double" | "front";
4889
+ } | undefined;
4890
+ texture?: {
4891
+ url: string;
4892
+ repeat?: [number, number] | undefined;
4893
+ scale?: number | undefined;
4894
+ offset?: [number, number] | undefined;
4895
+ normalMap?: string | undefined;
4896
+ normalScale?: number | undefined;
4897
+ bumpMap?: string | undefined;
4898
+ bumpScale?: number | undefined;
4899
+ } | undefined;
4900
+ } | undefined;
4901
+ slots?: Record<string, string> | undefined;
4902
+ materialPreset: string;
4903
+ roofSegmentId?: string | undefined;
4904
+ position: [number, number, number];
4905
+ rotation: number;
4906
+ width: number;
4907
+ depth: number;
4908
+ height: number;
4909
+ hoodOverhang: number;
4910
+ topTaper: number;
4911
+ capHeight: number;
4912
+ capGap: number;
4913
+ domeCurvature: number;
4914
+ baseInset: number;
4915
+ baseHeight: number;
4916
+ cornerBevel: number;
4917
+ style: "box" | "cap" | "dome";
4918
+ type: "box-vent";
4919
4919
  } | {
4920
4920
  object: "node";
4921
4921
  name?: string | undefined;