@pascal-app/core 1.0.7 → 1.1.0

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 (176) hide show
  1. package/dist/agent-operations/__fixtures__/native-materials.d.ts +4 -0
  2. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +11283 -11279
  4. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  5. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +77 -77
  6. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  7. package/dist/agent-operations/author-scene.js +2 -3
  8. package/dist/agent-operations/circulation-spaces.d.ts +3181 -3180
  9. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -1
  10. package/dist/agent-operations/level-reads.js +1 -1
  11. package/dist/agent-operations/move-plan.d.ts.map +1 -1
  12. package/dist/agent-operations/move-plan.js +11 -9
  13. package/dist/agent-operations/scene-queries.d.ts +2328 -2327
  14. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  15. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  16. package/dist/agent-operations/verify-scene.js +4 -2
  17. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  18. package/dist/agent-operations/wall-object-observations.js +1 -1
  19. package/dist/agent-tools/wall-openings.js +2 -2
  20. package/dist/building/__fixtures__/wall-opening-cases.d.ts +229 -228
  21. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  22. package/dist/building/level-duplication.d.ts +3681 -3679
  23. package/dist/building/level-duplication.d.ts.map +1 -1
  24. package/dist/building/merge-windows.d.ts.map +1 -1
  25. package/dist/building/merge-windows.js +4 -3
  26. package/dist/building/wall-openings.d.ts +20 -6
  27. package/dist/building/wall-openings.d.ts.map +1 -1
  28. package/dist/building/wall-openings.js +74 -25
  29. package/dist/commands/structure/shared.d.ts +1 -0
  30. package/dist/commands/structure/shared.d.ts.map +1 -1
  31. package/dist/commands/structure/zone-wall-merge.d.ts +2351 -2348
  32. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  33. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  34. package/dist/contracts/reference-inventory.js +0 -1
  35. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +6 -1
  36. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  37. package/dist/hooks/spatial-grid/spatial-grid-manager.js +30 -9
  38. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3181 -3180
  39. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  40. package/dist/hooks/spatial-grid/spatial-grid-sync.js +8 -4
  41. package/dist/index.d.ts +11 -4
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +11 -4
  44. package/dist/lib/__fixtures__/mezzanine.d.ts +8595 -8591
  45. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  46. package/dist/lib/absorb-wall-separators.d.ts +1664 -1663
  47. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  48. package/dist/lib/build-mode.d.ts +11 -0
  49. package/dist/lib/build-mode.d.ts.map +1 -0
  50. package/dist/lib/build-mode.js +24 -0
  51. package/dist/lib/corner-pair.d.ts +2 -0
  52. package/dist/lib/corner-pair.d.ts.map +1 -1
  53. package/dist/lib/door-interaction.d.ts +14 -0
  54. package/dist/lib/door-interaction.d.ts.map +1 -0
  55. package/dist/lib/door-interaction.js +62 -0
  56. package/dist/lib/elevator-support.d.ts +15 -0
  57. package/dist/lib/elevator-support.d.ts.map +1 -0
  58. package/dist/lib/elevator-support.js +40 -0
  59. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  60. package/dist/lib/floor-intent-changes.js +6 -4
  61. package/dist/lib/hierarchy.d.ts +19 -0
  62. package/dist/lib/hierarchy.d.ts.map +1 -0
  63. package/dist/lib/hierarchy.js +53 -0
  64. package/dist/lib/opening-floor-datum.d.ts +1 -1
  65. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  66. package/dist/lib/opening-floor-datum.js +2 -2
  67. package/dist/lib/own-floor-intent.d.ts.map +1 -1
  68. package/dist/lib/own-floor-intent.js +2 -2
  69. package/dist/lib/polygon-boolean.d.ts.map +1 -1
  70. package/dist/lib/polygon-boolean.js +2 -1
  71. package/dist/lib/room-floor-elevation.d.ts +12 -0
  72. package/dist/lib/room-floor-elevation.d.ts.map +1 -0
  73. package/dist/lib/room-floor-elevation.js +41 -0
  74. package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
  75. package/dist/lib/room-floor-feasibility.js +1 -1
  76. package/dist/lib/space-detection.d.ts.map +1 -1
  77. package/dist/lib/space-detection.js +1 -0
  78. package/dist/lib/wall-face-script.d.ts.map +1 -1
  79. package/dist/lib/wall-face-script.js +3 -3
  80. package/dist/lib/window-interaction.d.ts +16 -0
  81. package/dist/lib/window-interaction.d.ts.map +1 -0
  82. package/dist/lib/window-interaction.js +82 -0
  83. package/dist/lib/zone-quantities.js +1 -1
  84. package/dist/node-slots/column.d.ts +5 -0
  85. package/dist/node-slots/column.d.ts.map +1 -1
  86. package/dist/node-slots/column.js +10 -0
  87. package/dist/registry/index.d.ts +1 -1
  88. package/dist/registry/index.d.ts.map +1 -1
  89. package/dist/registry/index.js +1 -1
  90. package/dist/registry/registry.d.ts +5 -0
  91. package/dist/registry/registry.d.ts.map +1 -1
  92. package/dist/registry/registry.js +10 -0
  93. package/dist/registry/types.d.ts +24 -0
  94. package/dist/registry/types.d.ts.map +1 -1
  95. package/dist/schema/index.d.ts +1 -1
  96. package/dist/schema/index.d.ts.map +1 -1
  97. package/dist/schema/index.js +1 -1
  98. package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -1
  99. package/dist/schema/nodes/roof-segment-resize.js +2 -2
  100. package/dist/schema/nodes/roof-segment.d.ts +2 -0
  101. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  102. package/dist/schema/nodes/roof-segment.js +40 -2
  103. package/dist/schema/nodes/wall.d.ts +1 -0
  104. package/dist/schema/nodes/wall.d.ts.map +1 -1
  105. package/dist/schema/nodes/wall.js +6 -0
  106. package/dist/schema/types.d.ts +1 -0
  107. package/dist/schema/types.d.ts.map +1 -1
  108. package/dist/services/index.d.ts +1 -1
  109. package/dist/services/index.d.ts.map +1 -1
  110. package/dist/services/index.js +1 -1
  111. package/dist/services/movement.d.ts +7 -0
  112. package/dist/services/movement.d.ts.map +1 -1
  113. package/dist/services/movement.js +13 -0
  114. package/dist/services/port-connectivity.d.ts +15 -6
  115. package/dist/services/port-connectivity.d.ts.map +1 -1
  116. package/dist/services/port-connectivity.js +83 -17
  117. package/dist/services/roof-bearing.js +2 -1
  118. package/dist/services/storey.d.ts +6 -1
  119. package/dist/services/storey.d.ts.map +1 -1
  120. package/dist/services/storey.js +11 -2
  121. package/dist/spatial/usage-field/swings.d.ts +1 -0
  122. package/dist/spatial/usage-field/swings.d.ts.map +1 -1
  123. package/dist/spatial/usage-field/walls.d.ts +2 -0
  124. package/dist/spatial/usage-field/walls.d.ts.map +1 -1
  125. package/dist/spatial/usage-field/walls.js +18 -4
  126. package/dist/store/actions/node-actions.d.ts +1614 -1613
  127. package/dist/store/actions/node-actions.d.ts.map +1 -1
  128. package/dist/store/actions/node-actions.js +23 -5
  129. package/dist/store/derived-node-guard.d.ts.map +1 -1
  130. package/dist/store/derived-node-guard.js +2 -1
  131. package/dist/store/scene-annotations.d.ts +5033 -5031
  132. package/dist/store/scene-annotations.d.ts.map +1 -1
  133. package/dist/systems/elevator/elevator-geometry.d.ts +25 -0
  134. package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -1
  135. package/dist/systems/elevator/elevator-geometry.js +40 -8
  136. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  137. package/dist/systems/elevator/elevator-opening-sync.js +4 -35
  138. package/dist/systems/elevator/elevator-runtime.d.ts.map +1 -1
  139. package/dist/systems/elevator/elevator-runtime.js +95 -18
  140. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  141. package/dist/systems/elevator/elevator-service.js +24 -4
  142. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  143. package/dist/systems/roof/roof-elevation.js +2 -1
  144. package/dist/systems/slab/__fixtures__/floor-step.d.ts +1614 -1610
  145. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  146. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2924 -2920
  147. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  148. package/dist/systems/stair/stair-opening-preview.d.ts +1147 -1146
  149. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  150. package/dist/systems/wall/wall-curve.d.ts +10 -0
  151. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  152. package/dist/systems/wall/wall-curve.js +38 -0
  153. package/dist/systems/wall/wall-frame.d.ts.map +1 -1
  154. package/dist/systems/wall/wall-frame.js +8 -0
  155. package/dist/systems/wall/wall-merge.d.ts +9 -1
  156. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  157. package/dist/systems/wall/wall-merge.js +38 -6
  158. package/dist/systems/wall/wall-top.d.ts +10 -3
  159. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  160. package/dist/systems/wall/wall-top.js +24 -8
  161. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  162. package/dist/systems/wall/wall-topology.js +19 -1
  163. package/dist/utils/ensure-scene-openings.d.ts +4354 -4352
  164. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  165. package/dist/utils/floor-plate-migration.d.ts +1664 -1663
  166. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  167. package/dist/utils/measurement-format.d.ts +27 -0
  168. package/dist/utils/measurement-format.d.ts.map +1 -0
  169. package/dist/utils/measurement-format.js +143 -0
  170. package/dist/utils/owned-floor-opening-migration.d.ts +1147 -1146
  171. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  172. package/dist/utils/reconcile-structure-on-load.d.ts +439 -438
  173. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  174. package/dist/validation/validate-build-json.d.ts.map +1 -1
  175. package/dist/validation/validate-build-json.js +3 -1
  176. package/package.json +1 -1
@@ -329,7 +329,45 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
329
329
  fromIds: string[];
330
330
  } | undefined;
331
331
  } | undefined;
332
- id: `rseg_${string}`;
332
+ id: `scan_${string}`;
333
+ url: string | null;
334
+ captureSession: {
335
+ sessionId: string;
336
+ schemaVersion?: number | undefined;
337
+ revisionId?: string | undefined;
338
+ manifestUrl?: string | undefined;
339
+ } | null;
340
+ layers: Record<string, boolean>;
341
+ position: [number, number, number];
342
+ rotation: [number, number, number];
343
+ scale: number;
344
+ opacity: number;
345
+ type: "scan";
346
+ } | {
347
+ object: "node";
348
+ name?: string | undefined;
349
+ parentId: string | null;
350
+ visible: boolean;
351
+ camera?: {
352
+ position: [number, number, number];
353
+ target: [number, number, number];
354
+ mode: "orthographic" | "perspective";
355
+ fov?: number | undefined;
356
+ zoom?: number | undefined;
357
+ } | undefined;
358
+ metadata: Record<string, unknown>;
359
+ provenance?: {
360
+ refs: {
361
+ ns?: string | undefined;
362
+ id: string;
363
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
364
+ }[];
365
+ lineage?: {
366
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
367
+ fromIds: string[];
368
+ } | undefined;
369
+ } | undefined;
370
+ id: `slab_${string}`;
333
371
  material?: {
334
372
  id?: string | undefined;
335
373
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -353,302 +391,173 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
353
391
  } | undefined;
354
392
  } | undefined;
355
393
  materialPreset?: string | undefined;
356
- topMaterial?: {
357
- id?: string | undefined;
358
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
359
- properties?: {
360
- color: string;
361
- roughness: number;
362
- metalness: number;
363
- opacity: number;
364
- transparent: boolean;
365
- side: "back" | "double" | "front";
366
- } | undefined;
367
- texture?: {
368
- url: string;
369
- repeat?: [number, number] | undefined;
370
- scale?: number | undefined;
371
- offset?: [number, number] | undefined;
372
- normalMap?: string | undefined;
373
- normalScale?: number | undefined;
374
- bumpMap?: string | undefined;
375
- bumpScale?: number | undefined;
394
+ slots?: Record<string, string> | undefined;
395
+ polygon: [number, number][];
396
+ holes: [number, number][][];
397
+ holeMetadata: {
398
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
399
+ openingId?: string | undefined;
400
+ stairId?: string | undefined;
401
+ elevatorId?: string | undefined;
402
+ }[];
403
+ elevation: number;
404
+ floorHeight?: number | undefined;
405
+ referenceFloorElevation?: number | undefined;
406
+ foundation?: {
407
+ type: "none" | "solid";
408
+ material?: string | {
409
+ id?: string | undefined;
410
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
411
+ properties?: {
412
+ color: string;
413
+ roughness: number;
414
+ metalness: number;
415
+ opacity: number;
416
+ transparent: boolean;
417
+ side: "back" | "double" | "front";
418
+ } | undefined;
419
+ texture?: {
420
+ url: string;
421
+ repeat?: [number, number] | undefined;
422
+ scale?: number | undefined;
423
+ offset?: [number, number] | undefined;
424
+ normalMap?: string | undefined;
425
+ normalScale?: number | undefined;
426
+ bumpMap?: string | undefined;
427
+ bumpScale?: number | undefined;
428
+ } | undefined;
376
429
  } | undefined;
377
430
  } | undefined;
378
- topMaterialPreset?: string | undefined;
379
- edgeMaterial?: {
380
- id?: string | undefined;
381
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
382
- properties?: {
383
- color: string;
384
- roughness: number;
385
- metalness: number;
386
- opacity: number;
387
- transparent: boolean;
388
- side: "back" | "double" | "front";
431
+ thickness: number;
432
+ recessed: boolean;
433
+ recessedRimElevation?: number | undefined;
434
+ fillToTerrain?: boolean | undefined;
435
+ boundary?: "auto" | undefined;
436
+ support?: "open" | undefined;
437
+ plateRole?: "base" | "platform" | "sunken" | undefined;
438
+ railing?: {
439
+ start: [number, number];
440
+ end: [number, number];
441
+ }[] | undefined;
442
+ zoneIds?: string[] | undefined;
443
+ associatedZoneIds?: string[] | undefined;
444
+ autoFromWalls: boolean;
445
+ surfaceScript?: {
446
+ kind: "script";
447
+ meta?: {
448
+ description?: string | undefined;
449
+ category?: string | undefined;
450
+ tags?: string[] | undefined;
451
+ parent?: string | undefined;
389
452
  } | undefined;
390
- texture?: {
391
- url: string;
392
- repeat?: [number, number] | undefined;
393
- scale?: number | undefined;
394
- offset?: [number, number] | undefined;
395
- normalMap?: string | undefined;
396
- normalScale?: number | undefined;
397
- bumpMap?: string | undefined;
398
- bumpScale?: number | undefined;
453
+ language: "bpy" | "three";
454
+ script: string;
455
+ params: Record<string, string | number | boolean>;
456
+ artifact: string;
457
+ manifest: {
458
+ bounds: {
459
+ min: [number, number, number];
460
+ max: [number, number, number];
461
+ };
462
+ params: {
463
+ id: string;
464
+ label?: string | undefined;
465
+ kind: "boolean" | "number" | "string";
466
+ default: string | number | boolean;
467
+ min?: number | undefined;
468
+ max?: number | undefined;
469
+ step?: number | undefined;
470
+ unit?: string | undefined;
471
+ options?: string[] | undefined;
472
+ }[];
473
+ parts: {
474
+ id: string;
475
+ label?: string | undefined;
476
+ type?: string | undefined;
477
+ bounds?: {
478
+ min: [number, number, number];
479
+ max: [number, number, number];
480
+ } | undefined;
481
+ }[];
482
+ surfaces: {
483
+ part?: string | undefined;
484
+ y: number;
485
+ polygon: [number, number][];
486
+ }[];
487
+ slots: {
488
+ id: string;
489
+ label?: string | undefined;
490
+ color?: string | undefined;
491
+ roughness?: number | undefined;
492
+ metalness?: number | undefined;
493
+ transparent?: boolean | undefined;
494
+ emissive?: boolean | undefined;
495
+ }[];
496
+ anchors: {
497
+ id: string;
498
+ position: [number, number, number];
499
+ normal?: [number, number, number] | undefined;
500
+ }[];
501
+ lights: {
502
+ id: string;
503
+ position: [number, number, number];
504
+ color: string;
505
+ intensity: number;
506
+ distance?: number | undefined;
507
+ spot?: {
508
+ direction: [number, number, number];
509
+ angle: number;
510
+ softness: number;
511
+ } | undefined;
512
+ shadows?: boolean | undefined;
513
+ glow?: {
514
+ size: number;
515
+ strength: number;
516
+ } | undefined;
517
+ }[];
518
+ undersides: {
519
+ part?: string | undefined;
520
+ polygon: [number, number][];
521
+ plane: [number, number, number, number];
522
+ }[];
523
+ animations: {
524
+ name: string;
525
+ duration: number;
526
+ }[];
527
+ cutters?: {
528
+ host: "ceiling" | "mounted" | "slab" | "wall";
529
+ polygon: number[][];
530
+ minY: number;
531
+ maxY: number;
532
+ }[] | undefined;
533
+ cutout: boolean;
534
+ collider: boolean;
535
+ shape?: {
536
+ tolerance: number;
537
+ bands: {
538
+ y0: number;
539
+ y1: number;
540
+ polygons: {
541
+ outer: [number, number][];
542
+ holes?: [number, number][][] | undefined;
543
+ }[];
544
+ }[];
545
+ } | undefined;
546
+ triangles: number;
547
+ coverage?: number | undefined;
548
+ uncovered?: {
549
+ min: [number, number];
550
+ max: [number, number];
551
+ }[] | undefined;
552
+ };
553
+ images?: {
554
+ artifact: string;
555
+ thumbnail: string;
556
+ floorPlan: string;
399
557
  } | undefined;
558
+ inputs: string;
400
559
  } | undefined;
401
- edgeMaterialPreset?: string | undefined;
402
- wallMaterial?: {
403
- id?: string | undefined;
404
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
405
- properties?: {
406
- color: string;
407
- roughness: number;
408
- metalness: number;
409
- opacity: number;
410
- transparent: boolean;
411
- side: "back" | "double" | "front";
412
- } | undefined;
413
- texture?: {
414
- url: string;
415
- repeat?: [number, number] | undefined;
416
- scale?: number | undefined;
417
- offset?: [number, number] | undefined;
418
- normalMap?: string | undefined;
419
- normalScale?: number | undefined;
420
- bumpMap?: string | undefined;
421
- bumpScale?: number | undefined;
422
- } | undefined;
423
- } | undefined;
424
- wallMaterialPreset?: string | undefined;
425
- position: [number, number, number];
426
- rotation: number;
427
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
428
- barrelRise?: number | undefined;
429
- barrelSegments?: number | undefined;
430
- roofSystem?: "glazed" | "standard" | undefined;
431
- glazing?: {
432
- across: {
433
- layout: "count" | "fixed-spacing" | "maximum-spacing";
434
- count: number;
435
- spacing: number;
436
- alignment: "center" | "end" | "start";
437
- };
438
- along: {
439
- layout: "count" | "fixed-spacing" | "maximum-spacing";
440
- count: number;
441
- spacing: number;
442
- alignment: "center" | "end" | "start";
443
- };
444
- frameWidth: number;
445
- frameDepth: number;
446
- glassThickness: number;
447
- frameColor: string;
448
- glassColor: string;
449
- glassOpacity: number;
450
- glassRoughness: number;
451
- glazedEnds: boolean;
452
- panelType: "empty" | "glass" | "solid";
453
- panels: {
454
- face: string;
455
- column: number;
456
- row: number;
457
- type: "empty" | "glass" | "solid";
458
- }[];
459
- } | undefined;
460
- slots?: Record<string, string> | undefined;
461
- width: number;
462
- depth: number;
463
- conicalStartAngle?: number | undefined;
464
- conicalSweepAngle?: number | undefined;
465
- conicalFullCircle?: boolean | undefined;
466
- trim: {
467
- left: number;
468
- right: number;
469
- front: number;
470
- back: number;
471
- frontLeft: number;
472
- frontRight: number;
473
- backLeft: number;
474
- backRight: number;
475
- frontLeftX: number;
476
- frontLeftZ: number;
477
- frontRightX: number;
478
- frontRightZ: number;
479
- backLeftX: number;
480
- backLeftZ: number;
481
- backRightX: number;
482
- backRightZ: number;
483
- };
484
- wallHeight: number;
485
- pitch: number;
486
- wallThickness: number;
487
- deckThickness: number;
488
- overhang: number;
489
- gableOverhang?: number | undefined;
490
- shingleThickness: number;
491
- buildUp?: {
492
- presetId?: string | undefined;
493
- roofing: {
494
- kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
495
- thickness: number;
496
- name?: string | undefined;
497
- };
498
- underlayment?: {
499
- kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
500
- thickness: number;
501
- name?: string | undefined;
502
- } | undefined;
503
- sheathing: {
504
- kind: "osb" | "plywood";
505
- thickness: number;
506
- name?: string | undefined;
507
- };
508
- structure: {
509
- system: "rafters" | "trusses";
510
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
511
- spacing: number;
512
- };
513
- insulation?: {
514
- kind: "batt" | "blown" | "rigid";
515
- thickness: number;
516
- name?: string | undefined;
517
- } | undefined;
518
- finish?: {
519
- kind: "drywall" | "plaster" | "wood-plank";
520
- thickness: number;
521
- name?: string | undefined;
522
- } | undefined;
523
- } | undefined;
524
- arc?: {
525
- centerX: number;
526
- centerZ: number;
527
- radius: number;
528
- } | undefined;
529
- shedSideInfillSpan?: number | undefined;
530
- shedSideInfillMinX?: number | undefined;
531
- shedSideInfillMaxX?: number | undefined;
532
- shedFootprintPieces?: [number, number][][] | undefined;
533
- shedOpenEndSides?: ("left" | "right")[] | undefined;
534
- shedJointFrame?: {
535
- position: [number, number, number];
536
- rotation: number;
537
- } | undefined;
538
- shedJointOwnerId?: string | undefined;
539
- shedJointNeighborIds?: string[] | undefined;
540
- shedJointScopeId?: string | undefined;
541
- managedByParent: boolean;
542
- wallShell: "auto" | "include" | "omit";
543
- shedInsetEndPanels: boolean;
544
- fascia?: boolean | undefined;
545
- eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
546
- fasciaHighEdge?: boolean | undefined;
547
- fasciaHeight?: number | undefined;
548
- fasciaDepth?: number | undefined;
549
- fasciaMaterial?: {
550
- id?: string | undefined;
551
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
552
- properties?: {
553
- color: string;
554
- roughness: number;
555
- metalness: number;
556
- opacity: number;
557
- transparent: boolean;
558
- side: "back" | "double" | "front";
559
- } | undefined;
560
- texture?: {
561
- url: string;
562
- repeat?: [number, number] | undefined;
563
- scale?: number | undefined;
564
- offset?: [number, number] | undefined;
565
- normalMap?: string | undefined;
566
- normalScale?: number | undefined;
567
- bumpMap?: string | undefined;
568
- bumpScale?: number | undefined;
569
- } | undefined;
570
- } | undefined;
571
- fasciaMaterialPreset?: string | undefined;
572
- heelMaterial?: {
573
- id?: string | undefined;
574
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
575
- properties?: {
576
- color: string;
577
- roughness: number;
578
- metalness: number;
579
- opacity: number;
580
- transparent: boolean;
581
- side: "back" | "double" | "front";
582
- } | undefined;
583
- texture?: {
584
- url: string;
585
- repeat?: [number, number] | undefined;
586
- scale?: number | undefined;
587
- offset?: [number, number] | undefined;
588
- normalMap?: string | undefined;
589
- normalScale?: number | undefined;
590
- bumpMap?: string | undefined;
591
- bumpScale?: number | undefined;
592
- } | undefined;
593
- } | undefined;
594
- heelMaterialPreset?: string | undefined;
595
- gableLeftMaterial?: {
596
- id?: string | undefined;
597
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
598
- properties?: {
599
- color: string;
600
- roughness: number;
601
- metalness: number;
602
- opacity: number;
603
- transparent: boolean;
604
- side: "back" | "double" | "front";
605
- } | undefined;
606
- texture?: {
607
- url: string;
608
- repeat?: [number, number] | undefined;
609
- scale?: number | undefined;
610
- offset?: [number, number] | undefined;
611
- normalMap?: string | undefined;
612
- normalScale?: number | undefined;
613
- bumpMap?: string | undefined;
614
- bumpScale?: number | undefined;
615
- } | undefined;
616
- } | undefined;
617
- gableLeftMaterialPreset?: string | undefined;
618
- gableRightMaterial?: {
619
- id?: string | undefined;
620
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
621
- properties?: {
622
- color: string;
623
- roughness: number;
624
- metalness: number;
625
- opacity: number;
626
- transparent: boolean;
627
- side: "back" | "double" | "front";
628
- } | undefined;
629
- texture?: {
630
- url: string;
631
- repeat?: [number, number] | undefined;
632
- scale?: number | undefined;
633
- offset?: [number, number] | undefined;
634
- normalMap?: string | undefined;
635
- normalScale?: number | undefined;
636
- bumpMap?: string | undefined;
637
- bumpScale?: number | undefined;
638
- } | undefined;
639
- } | undefined;
640
- gableRightMaterialPreset?: string | undefined;
641
- gambrelLowerWidthRatio: number;
642
- gambrelLowerHeightRatio: number;
643
- mansardSteepWidthRatio: number;
644
- mansardSteepHeightRatio: number;
645
- dutchHipWidthRatio: number;
646
- dutchHipHeightRatio: number;
647
- dutchWaistLengthRatio: number;
648
- dutchGabletRake: number;
649
- dutchTopRakeThickness: number;
650
- children: string[];
651
- type: "roof-segment";
560
+ type: "slab";
652
561
  } | {
653
562
  object: "node";
654
563
  name?: string | undefined;
@@ -673,13 +582,15 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
673
582
  fromIds: string[];
674
583
  } | undefined;
675
584
  } | undefined;
676
- id: `separator_${string}`;
585
+ id: `structural-grid_${string}`;
677
586
  start: [number, number];
678
587
  end: [number, number];
679
- type: "separator";
588
+ label: string;
589
+ showStartBubble: boolean;
590
+ showEndBubble: boolean;
591
+ type: "structural-grid";
680
592
  } | {
681
593
  object: "node";
682
- name?: string | undefined;
683
594
  parentId: string | null;
684
595
  visible: boolean;
685
596
  camera?: {
@@ -689,7 +600,6 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
689
600
  fov?: number | undefined;
690
601
  zoom?: number | undefined;
691
602
  } | undefined;
692
- metadata: Record<string, unknown>;
693
603
  provenance?: {
694
604
  refs: {
695
605
  ns?: string | undefined;
@@ -701,16 +611,18 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
701
611
  fromIds: string[];
702
612
  } | undefined;
703
613
  } | undefined;
704
- id: `spawn_${string}`;
705
- position: [number, number, number];
706
- rotation: number;
707
- supportSlabId?: string | undefined;
708
- type: "spawn";
709
- } | {
710
- object: "node";
711
- name?: string | undefined;
712
- parentId: string | null;
713
- visible: boolean;
614
+ id: `unit_${string}`;
615
+ name: string;
616
+ kind: "apartment" | "commercial" | "common" | "hotel-room";
617
+ members: `zone_${string}`[];
618
+ color: string;
619
+ metadata: Record<string, unknown>;
620
+ type: "unit";
621
+ } | {
622
+ object: "node";
623
+ name?: string | undefined;
624
+ parentId: string | null;
625
+ visible: boolean;
714
626
  camera?: {
715
627
  position: [number, number, number];
716
628
  target: [number, number, number];
@@ -730,7 +642,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
730
642
  fromIds: string[];
731
643
  } | undefined;
732
644
  } | undefined;
733
- id: `sseg_${string}`;
645
+ id: `cupola_${string}`;
734
646
  material?: {
735
647
  id?: string | undefined;
736
648
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -753,36 +665,62 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
753
665
  bumpScale?: number | undefined;
754
666
  } | undefined;
755
667
  } | undefined;
756
- materialPreset?: string | undefined;
757
668
  slots?: Record<string, string> | undefined;
669
+ materialPreset: string;
670
+ roofSegmentId?: string | undefined;
758
671
  position: [number, number, number];
759
672
  rotation: number;
760
- segmentType: "landing" | "stair";
761
673
  width: number;
762
- length: number;
674
+ depth: number;
763
675
  height: number;
764
- stepCount: number;
765
- attachmentSide: "front" | "left" | "right";
766
- fillToFloor: boolean;
767
- construction?: {
768
- mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
769
- waistThickness: number;
770
- treadThickness: number;
771
- riserThickness: number;
772
- nosing: number;
773
- finishThickness: number;
774
- closedRisers: boolean;
775
- stringerWidth: number;
776
- stringerDepth: number;
676
+ roofStyle: "dome" | "pyramid";
677
+ finial: boolean;
678
+ type: "cupola";
679
+ } | {
680
+ object: "node";
681
+ name?: string | undefined;
682
+ parentId: string | null;
683
+ visible: boolean;
684
+ camera?: {
685
+ position: [number, number, number];
686
+ target: [number, number, number];
687
+ mode: "orthographic" | "perspective";
688
+ fov?: number | undefined;
689
+ zoom?: number | undefined;
777
690
  } | undefined;
778
- winder?: {
779
- turn: "left" | "right";
780
- innerGap: number;
781
- walkingLineOffset: number;
782
- division: "equal-angle" | "equal-going";
691
+ metadata: Record<string, unknown>;
692
+ provenance?: {
693
+ refs: {
694
+ ns?: string | undefined;
695
+ id: string;
696
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
697
+ }[];
698
+ lineage?: {
699
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
700
+ fromIds: string[];
701
+ } | undefined;
783
702
  } | undefined;
784
- thickness: number;
785
- type: "stair-segment";
703
+ matchFenceStyle?: boolean | undefined;
704
+ matchFenceHeight?: boolean | undefined;
705
+ leafType?: "double" | "single" | undefined;
706
+ style?: "guard" | "horizontal" | "match" | "picket" | "privacy" | "rail" | "slat" | undefined;
707
+ height?: number | undefined;
708
+ clearance?: number | undefined;
709
+ thickness?: number | undefined;
710
+ frameWidth?: number | undefined;
711
+ spacing?: number | undefined;
712
+ boardWidth?: number | undefined;
713
+ hinge?: "left" | "right" | undefined;
714
+ swing?: "inward" | "outward" | undefined;
715
+ openAngle?: number | undefined;
716
+ leafSplit?: number | undefined;
717
+ brace?: "cross" | "diagonal" | "none" | undefined;
718
+ showHardware?: boolean | undefined;
719
+ showPosts?: boolean | undefined;
720
+ id: `fence-gate_${string}`;
721
+ center: number;
722
+ width: number;
723
+ type: "fence-gate";
786
724
  } | {
787
725
  object: "node";
788
726
  name?: string | undefined;
@@ -807,7 +745,39 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
807
745
  fromIds: string[];
808
746
  } | undefined;
809
747
  } | undefined;
810
- id: `window_${string}`;
748
+ center: number;
749
+ width: number;
750
+ matchFenceStyle?: boolean | undefined;
751
+ matchFenceHeight?: boolean | undefined;
752
+ height?: number | undefined;
753
+ showPosts: boolean;
754
+ id: `fence-opening_${string}`;
755
+ type: "fence-opening";
756
+ } | {
757
+ object: "node";
758
+ name?: string | undefined;
759
+ parentId: string | null;
760
+ visible: boolean;
761
+ camera?: {
762
+ position: [number, number, number];
763
+ target: [number, number, number];
764
+ mode: "orthographic" | "perspective";
765
+ fov?: number | undefined;
766
+ zoom?: number | undefined;
767
+ } | undefined;
768
+ metadata: Record<string, unknown>;
769
+ provenance?: {
770
+ refs: {
771
+ ns?: string | undefined;
772
+ id: string;
773
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
774
+ }[];
775
+ lineage?: {
776
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
777
+ fromIds: string[];
778
+ } | undefined;
779
+ } | undefined;
780
+ id: `skylight_${string}`;
811
781
  material?: {
812
782
  id?: string | undefined;
813
783
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -830,188 +800,270 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
830
800
  bumpScale?: number | undefined;
831
801
  } | undefined;
832
802
  } | undefined;
833
- slots?: Record<string, string> | undefined;
834
- source?: {
835
- kind: "script";
836
- meta?: {
837
- description?: string | undefined;
838
- category?: string | undefined;
839
- tags?: string[] | undefined;
840
- parent?: string | undefined;
803
+ materialPreset?: string | undefined;
804
+ glassMaterial?: {
805
+ id?: string | undefined;
806
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
807
+ properties?: {
808
+ color: string;
809
+ roughness: number;
810
+ metalness: number;
811
+ opacity: number;
812
+ transparent: boolean;
813
+ side: "back" | "double" | "front";
841
814
  } | undefined;
842
- language: "bpy" | "three";
843
- script: string;
844
- params: Record<string, string | number | boolean>;
845
- artifact: string;
846
- manifest: {
847
- bounds: {
848
- min: [number, number, number];
849
- max: [number, number, number];
850
- };
851
- params: {
852
- id: string;
853
- label?: string | undefined;
854
- kind: "boolean" | "number" | "string";
855
- default: string | number | boolean;
856
- min?: number | undefined;
857
- max?: number | undefined;
858
- step?: number | undefined;
859
- unit?: string | undefined;
860
- options?: string[] | undefined;
861
- }[];
862
- parts: {
863
- id: string;
864
- label?: string | undefined;
865
- type?: string | undefined;
866
- bounds?: {
867
- min: [number, number, number];
868
- max: [number, number, number];
869
- } | undefined;
870
- }[];
871
- surfaces: {
872
- part?: string | undefined;
873
- y: number;
874
- polygon: [number, number][];
875
- }[];
876
- slots: {
877
- id: string;
878
- label?: string | undefined;
879
- color?: string | undefined;
880
- roughness?: number | undefined;
881
- metalness?: number | undefined;
882
- transparent?: boolean | undefined;
883
- emissive?: boolean | undefined;
884
- }[];
885
- anchors: {
886
- id: string;
887
- position: [number, number, number];
888
- normal?: [number, number, number] | undefined;
889
- }[];
890
- lights: {
891
- id: string;
892
- position: [number, number, number];
815
+ texture?: {
816
+ url: string;
817
+ repeat?: [number, number] | undefined;
818
+ scale?: number | undefined;
819
+ offset?: [number, number] | undefined;
820
+ normalMap?: string | undefined;
821
+ normalScale?: number | undefined;
822
+ bumpMap?: string | undefined;
823
+ bumpScale?: number | undefined;
824
+ } | undefined;
825
+ } | undefined;
826
+ glassMaterialPreset?: string | undefined;
827
+ roofSegmentId?: string | undefined;
828
+ position: [number, number, number];
829
+ rotation: number;
830
+ width: number;
831
+ height: number;
832
+ frameThickness: number;
833
+ frameDepth: number;
834
+ skylightType: "flat" | "lantern" | "opening" | "sliding" | "walk-on";
835
+ glassThickness: number;
836
+ lanternHeight: number;
837
+ lanternTopScale: number;
838
+ openingAngle: number;
839
+ openingSide: "bottom" | "left" | "right" | "top";
840
+ operationState: number;
841
+ motorHousing: boolean;
842
+ slideFraction: number;
843
+ slideDirection: "x" | "z";
844
+ trackWidth: number;
845
+ motorHousingSize: number;
846
+ curb: boolean;
847
+ curbHeight: number;
848
+ cutoutOffset: number;
849
+ surfaceNormal?: [number, number, number] | undefined;
850
+ type: "skylight";
851
+ } | {
852
+ object: "node";
853
+ name?: string | undefined;
854
+ parentId: string | null;
855
+ visible: boolean;
856
+ camera?: {
857
+ position: [number, number, number];
858
+ target: [number, number, number];
859
+ mode: "orthographic" | "perspective";
860
+ fov?: number | undefined;
861
+ zoom?: number | undefined;
862
+ } | undefined;
863
+ metadata: Record<string, unknown>;
864
+ provenance?: {
865
+ refs: {
866
+ ns?: string | undefined;
867
+ id: string;
868
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
869
+ }[];
870
+ lineage?: {
871
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
872
+ fromIds: string[];
873
+ } | undefined;
874
+ } | undefined;
875
+ id: `site_${string}`;
876
+ polygon: {
877
+ type: "polygon";
878
+ points: [number, number][];
879
+ };
880
+ terrain?: {
881
+ type: "heightfield";
882
+ origin: [number, number];
883
+ spacing: number;
884
+ cols: number;
885
+ rows: number;
886
+ step: number;
887
+ heights: string;
888
+ } | undefined;
889
+ showGround?: boolean | undefined;
890
+ presentation?: {
891
+ theme?: string | undefined;
892
+ exposure?: number | undefined;
893
+ shading?: "rendered" | "solid" | undefined;
894
+ edges?: "off" | "soft" | "strong" | undefined;
895
+ shadows?: boolean | undefined;
896
+ lighting?: {
897
+ background?: string | undefined;
898
+ backgroundSky?: string | null | undefined;
899
+ ground?: string | undefined;
900
+ ambient?: {
893
901
  color: string;
894
902
  intensity: number;
895
- distance?: number | undefined;
896
- spot?: {
897
- direction: [number, number, number];
898
- angle: number;
899
- softness: number;
900
- } | undefined;
901
- shadows?: boolean | undefined;
902
- glow?: {
903
- size: number;
904
- strength: number;
903
+ } | undefined;
904
+ hemi?: {
905
+ sky: string;
906
+ ground: string;
907
+ intensity: number;
908
+ } | undefined;
909
+ lights?: {
910
+ color: string;
911
+ intensity: number;
912
+ position: [number, number, number];
913
+ target?: [number, number, number] | undefined;
914
+ castShadow?: boolean | undefined;
915
+ shadow?: {
916
+ intensity?: number | undefined;
917
+ bias?: number | undefined;
918
+ normalBias?: number | undefined;
919
+ radius?: number | undefined;
920
+ mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
921
+ camera?: {
922
+ left: number;
923
+ right: number;
924
+ top: number;
925
+ bottom: number;
926
+ near: number;
927
+ far: number;
928
+ } | undefined;
905
929
  } | undefined;
906
- }[];
907
- undersides: {
908
- part?: string | undefined;
909
- polygon: [number, number][];
910
- plane: [number, number, number, number];
911
- }[];
912
- animations: {
913
- name: string;
914
- duration: number;
915
- }[];
916
- cutters?: {
917
- host: "ceiling" | "mounted" | "slab" | "wall";
918
- polygon: number[][];
919
- minY: number;
920
- maxY: number;
921
930
  }[] | undefined;
922
- cutout: boolean;
923
- collider: boolean;
924
- shape?: {
925
- tolerance: number;
926
- bands: {
927
- y0: number;
928
- y1: number;
929
- polygons: {
930
- outer: [number, number][];
931
- holes?: [number, number][][] | undefined;
932
- }[];
933
- }[];
931
+ environment?: {
932
+ source: "gradient" | "none" | "room";
933
+ intensity: number;
934
934
  } | undefined;
935
- triangles: number;
936
- coverage?: number | undefined;
937
- uncovered?: {
938
- min: [number, number];
939
- max: [number, number];
940
- }[] | undefined;
941
- };
942
- images?: {
943
- artifact: string;
944
- thumbnail: string;
945
- floorPlan: string;
935
+ } | undefined;
936
+ postprocessing?: {
937
+ ambientOcclusion?: boolean | undefined;
938
+ colorGrading?: boolean | undefined;
939
+ } | undefined;
940
+ display?: {
941
+ mode?: "construction" | "finished" | "systems" | undefined;
942
+ families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
943
+ disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
944
+ xray?: boolean | undefined;
945
+ colorBy?: "material" | "service" | undefined;
946
946
  } | undefined;
947
947
  } | undefined;
948
- position: [number, number, number];
949
- rotation: [number, number, number];
950
- side?: "back" | "front" | undefined;
951
- verticalAnchor?: "floor" | "wall" | undefined;
952
- floorThresholdVersion: 0 | 1;
953
- wallId?: string | undefined;
954
- dormerId?: string | undefined;
955
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
956
- roofSegmentId?: string | undefined;
957
- roofFace?: "back" | "front" | "left" | "right" | undefined;
958
- width: number;
959
- height: number;
960
- mark?: string | undefined;
961
- constructionType: "framed" | "masonry";
962
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
963
- roughOpeningWidth?: number | undefined;
964
- roughOpeningHeight?: number | undefined;
965
- masonryOpeningWidth?: number | undefined;
966
- masonryOpeningHeight?: number | undefined;
967
- finishOpeningWidth?: number | undefined;
968
- finishOpeningHeight?: number | undefined;
969
- openingKind: "opening" | "window";
970
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
971
- operationState: number;
972
- openingDirection?: "inward" | "outward" | undefined;
973
- tiltTurnMode?: "tilt" | "turn" | undefined;
974
- awningDirection: "down" | "up";
975
- casementStyle: "french" | "single";
976
- hingesSide: "left" | "right";
977
- openingShape: "arch" | "rectangle" | "rounded";
978
- openingRadiusMode: "all" | "individual";
979
- openingCornerRadii: [number, number, number, number];
980
- cornerRadius: number;
981
- archHeight: number;
982
- openingRevealRadius: number;
983
- frameThickness: number;
984
- frameDepth?: number | undefined;
985
- windowHandle?: boolean | undefined;
986
- sashGrid?: boolean | undefined;
987
- columnRatios: number[];
988
- rowRatios: number[];
989
- columnDividerThickness: number;
990
- rowDividerThickness: number;
991
- corner?: {
992
- end: "end" | "start";
993
- partnerId: string;
994
- post: "none" | "post";
948
+ address?: {
949
+ street?: string | undefined;
950
+ city?: string | undefined;
951
+ state?: string | undefined;
952
+ zip?: string | undefined;
995
953
  } | undefined;
996
- sill: boolean;
997
- sillDepth: number;
998
- sillThickness: number;
999
- sillOverhang?: number | undefined;
1000
- sillInterior?: boolean | undefined;
1001
- sillInteriorDepth?: number | undefined;
1002
- sillInteriorThickness?: number | undefined;
1003
- sillInteriorOverhang?: number | undefined;
1004
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1005
- shutterWidth?: number | undefined;
1006
- shutterOpen?: number | undefined;
1007
- shutterSides?: "both" | "left" | "right" | undefined;
1008
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1009
- rollerShutterBoxHeight?: number | undefined;
1010
- rollerShutterOpen?: number | undefined;
1011
- casingFaceA?: boolean | undefined;
1012
- casingFaceB?: boolean | undefined;
1013
- casingWidth?: number | undefined;
1014
- type: "window";
954
+ parcel?: {
955
+ apn?: string | undefined;
956
+ source?: string | undefined;
957
+ county?: string | undefined;
958
+ state?: string | undefined;
959
+ lotAreaSqFt?: number | undefined;
960
+ originLngLat?: [number, number] | undefined;
961
+ resolvedAt?: string | undefined;
962
+ layer?: string | undefined;
963
+ notes?: string[] | undefined;
964
+ } | undefined;
965
+ setbacks?: {
966
+ front: number;
967
+ side: number;
968
+ rear: number;
969
+ left?: number | undefined;
970
+ right?: number | undefined;
971
+ streetSide?: number | undefined;
972
+ } | undefined;
973
+ setbacksSource?: string | undefined;
974
+ zone?: string | undefined;
975
+ frontEdge?: number | undefined;
976
+ streetEdges?: number[] | undefined;
977
+ sightTriangleFt?: number | undefined;
978
+ northRotation?: number | undefined;
979
+ dossier?: {
980
+ [x: string]: unknown;
981
+ provider: string;
982
+ asOf: string;
983
+ point?: {
984
+ lat?: number | undefined;
985
+ lng?: number | undefined;
986
+ source?: string | undefined;
987
+ } | undefined;
988
+ address?: {
989
+ formatted?: string | undefined;
990
+ precision?: string | undefined;
991
+ } | undefined;
992
+ sections: Record<string, {
993
+ [x: string]: unknown;
994
+ status: string;
995
+ summary?: string | undefined;
996
+ reason?: string | undefined;
997
+ source?: {
998
+ name?: string | undefined;
999
+ kind?: string | undefined;
1000
+ vintage?: string | undefined;
1001
+ attribution?: string | undefined;
1002
+ } | undefined;
1003
+ }>;
1004
+ parcel?: Record<string, unknown> | undefined;
1005
+ flood?: Record<string, unknown> | undefined;
1006
+ codeBasis?: Record<string, unknown> | undefined;
1007
+ zoning?: Record<string, unknown> | undefined;
1008
+ utilities?: Record<string, unknown> | undefined;
1009
+ soils?: Record<string, unknown> | undefined;
1010
+ wetlands?: Record<string, unknown> | undefined;
1011
+ structures?: Record<string, unknown> | undefined;
1012
+ elevation?: Record<string, unknown> | undefined;
1013
+ boundaries?: Record<string, unknown> | undefined;
1014
+ } | undefined;
1015
+ contourIntervalIn?: number | undefined;
1016
+ contours3d?: boolean | undefined;
1017
+ terrainContours?: {
1018
+ datum: string;
1019
+ intervalFt: number;
1020
+ source?: string | undefined;
1021
+ lines: {
1022
+ elevationFt: number;
1023
+ points: [number, number][];
1024
+ }[];
1025
+ } | undefined;
1026
+ wallTypes?: {
1027
+ id: string;
1028
+ label: string;
1029
+ assembly: {
1030
+ layers: {
1031
+ id: string;
1032
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1033
+ thickness: number;
1034
+ core?: true | undefined;
1035
+ spacing?: number | undefined;
1036
+ material?: string | undefined;
1037
+ slot?: string | undefined;
1038
+ returns?: boolean | undefined;
1039
+ display?: "construction" | "finished" | undefined;
1040
+ inset?: number | undefined;
1041
+ bottom?: number | undefined;
1042
+ lift?: number | undefined;
1043
+ src?: string | undefined;
1044
+ }[];
1045
+ backing?: {
1046
+ id: string;
1047
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1048
+ thickness: number;
1049
+ core?: true | undefined;
1050
+ spacing?: number | undefined;
1051
+ material?: string | undefined;
1052
+ slot?: string | undefined;
1053
+ returns?: boolean | undefined;
1054
+ display?: "construction" | "finished" | undefined;
1055
+ inset?: number | undefined;
1056
+ bottom?: number | undefined;
1057
+ lift?: number | undefined;
1058
+ src?: string | undefined;
1059
+ }[] | undefined;
1060
+ face?: "exterior" | "front" | undefined;
1061
+ presetId?: string | undefined;
1062
+ cavityInsulation?: string | undefined;
1063
+ };
1064
+ }[] | undefined;
1065
+ children: string[];
1066
+ type: "site";
1015
1067
  } | {
1016
1068
  object: "node";
1017
1069
  name?: string | undefined;
@@ -1430,39 +1482,268 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1430
1482
  openingKind: "door" | "opening";
1431
1483
  openingShape: "arch" | "rectangle" | "rounded";
1432
1484
  openingRadiusMode: "all" | "individual";
1433
- openingTopRadii: [number, number];
1485
+ openingTopRadii: [number, number];
1486
+ cornerRadius: number;
1487
+ archHeight: number;
1488
+ openingRevealRadius: number;
1489
+ frameThickness: number;
1490
+ frameDepth?: number | undefined;
1491
+ threshold: boolean;
1492
+ thresholdHeight: number;
1493
+ casingFaceA?: boolean | undefined;
1494
+ casingFaceB?: boolean | undefined;
1495
+ casingWidth?: number | undefined;
1496
+ hingesSide: "left" | "right";
1497
+ swingDirection: "inward" | "outward";
1498
+ swingAngle: number;
1499
+ segments: {
1500
+ type: "empty" | "glass" | "panel";
1501
+ heightRatio: number;
1502
+ columnRatios: number[];
1503
+ dividerThickness: number;
1504
+ panelDepth: number;
1505
+ panelInset: number;
1506
+ }[];
1507
+ handle: boolean;
1508
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1509
+ handleHeight: number;
1510
+ handleSide: "left" | "right";
1511
+ contentPadding: [number, number];
1512
+ doorCloser: boolean;
1513
+ panicBar: boolean;
1514
+ panicBarStyle: "crossbar" | "touchbar";
1515
+ panicBarRods: boolean;
1516
+ panicBarHeight: number;
1517
+ type: "door";
1518
+ } | {
1519
+ object: "node";
1520
+ name?: string | undefined;
1521
+ parentId: string | null;
1522
+ visible: boolean;
1523
+ camera?: {
1524
+ position: [number, number, number];
1525
+ target: [number, number, number];
1526
+ mode: "orthographic" | "perspective";
1527
+ fov?: number | undefined;
1528
+ zoom?: number | undefined;
1529
+ } | undefined;
1530
+ metadata: Record<string, unknown>;
1531
+ provenance?: {
1532
+ refs: {
1533
+ ns?: string | undefined;
1534
+ id: string;
1535
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1536
+ }[];
1537
+ lineage?: {
1538
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1539
+ fromIds: string[];
1540
+ } | undefined;
1541
+ } | undefined;
1542
+ id: `window_${string}`;
1543
+ material?: {
1544
+ id?: string | undefined;
1545
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1546
+ properties?: {
1547
+ color: string;
1548
+ roughness: number;
1549
+ metalness: number;
1550
+ opacity: number;
1551
+ transparent: boolean;
1552
+ side: "back" | "double" | "front";
1553
+ } | undefined;
1554
+ texture?: {
1555
+ url: string;
1556
+ repeat?: [number, number] | undefined;
1557
+ scale?: number | undefined;
1558
+ offset?: [number, number] | undefined;
1559
+ normalMap?: string | undefined;
1560
+ normalScale?: number | undefined;
1561
+ bumpMap?: string | undefined;
1562
+ bumpScale?: number | undefined;
1563
+ } | undefined;
1564
+ } | undefined;
1565
+ slots?: Record<string, string> | undefined;
1566
+ source?: {
1567
+ kind: "script";
1568
+ meta?: {
1569
+ description?: string | undefined;
1570
+ category?: string | undefined;
1571
+ tags?: string[] | undefined;
1572
+ parent?: string | undefined;
1573
+ } | undefined;
1574
+ language: "bpy" | "three";
1575
+ script: string;
1576
+ params: Record<string, string | number | boolean>;
1577
+ artifact: string;
1578
+ manifest: {
1579
+ bounds: {
1580
+ min: [number, number, number];
1581
+ max: [number, number, number];
1582
+ };
1583
+ params: {
1584
+ id: string;
1585
+ label?: string | undefined;
1586
+ kind: "boolean" | "number" | "string";
1587
+ default: string | number | boolean;
1588
+ min?: number | undefined;
1589
+ max?: number | undefined;
1590
+ step?: number | undefined;
1591
+ unit?: string | undefined;
1592
+ options?: string[] | undefined;
1593
+ }[];
1594
+ parts: {
1595
+ id: string;
1596
+ label?: string | undefined;
1597
+ type?: string | undefined;
1598
+ bounds?: {
1599
+ min: [number, number, number];
1600
+ max: [number, number, number];
1601
+ } | undefined;
1602
+ }[];
1603
+ surfaces: {
1604
+ part?: string | undefined;
1605
+ y: number;
1606
+ polygon: [number, number][];
1607
+ }[];
1608
+ slots: {
1609
+ id: string;
1610
+ label?: string | undefined;
1611
+ color?: string | undefined;
1612
+ roughness?: number | undefined;
1613
+ metalness?: number | undefined;
1614
+ transparent?: boolean | undefined;
1615
+ emissive?: boolean | undefined;
1616
+ }[];
1617
+ anchors: {
1618
+ id: string;
1619
+ position: [number, number, number];
1620
+ normal?: [number, number, number] | undefined;
1621
+ }[];
1622
+ lights: {
1623
+ id: string;
1624
+ position: [number, number, number];
1625
+ color: string;
1626
+ intensity: number;
1627
+ distance?: number | undefined;
1628
+ spot?: {
1629
+ direction: [number, number, number];
1630
+ angle: number;
1631
+ softness: number;
1632
+ } | undefined;
1633
+ shadows?: boolean | undefined;
1634
+ glow?: {
1635
+ size: number;
1636
+ strength: number;
1637
+ } | undefined;
1638
+ }[];
1639
+ undersides: {
1640
+ part?: string | undefined;
1641
+ polygon: [number, number][];
1642
+ plane: [number, number, number, number];
1643
+ }[];
1644
+ animations: {
1645
+ name: string;
1646
+ duration: number;
1647
+ }[];
1648
+ cutters?: {
1649
+ host: "ceiling" | "mounted" | "slab" | "wall";
1650
+ polygon: number[][];
1651
+ minY: number;
1652
+ maxY: number;
1653
+ }[] | undefined;
1654
+ cutout: boolean;
1655
+ collider: boolean;
1656
+ shape?: {
1657
+ tolerance: number;
1658
+ bands: {
1659
+ y0: number;
1660
+ y1: number;
1661
+ polygons: {
1662
+ outer: [number, number][];
1663
+ holes?: [number, number][][] | undefined;
1664
+ }[];
1665
+ }[];
1666
+ } | undefined;
1667
+ triangles: number;
1668
+ coverage?: number | undefined;
1669
+ uncovered?: {
1670
+ min: [number, number];
1671
+ max: [number, number];
1672
+ }[] | undefined;
1673
+ };
1674
+ images?: {
1675
+ artifact: string;
1676
+ thumbnail: string;
1677
+ floorPlan: string;
1678
+ } | undefined;
1679
+ } | undefined;
1680
+ position: [number, number, number];
1681
+ rotation: [number, number, number];
1682
+ side?: "back" | "front" | undefined;
1683
+ verticalAnchor?: "floor" | "wall" | undefined;
1684
+ floorThresholdVersion: 0 | 1;
1685
+ wallId?: string | undefined;
1686
+ dormerId?: string | undefined;
1687
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1688
+ roofSegmentId?: string | undefined;
1689
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
1690
+ width: number;
1691
+ height: number;
1692
+ mark?: string | undefined;
1693
+ constructionType: "framed" | "masonry";
1694
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1695
+ roughOpeningWidth?: number | undefined;
1696
+ roughOpeningHeight?: number | undefined;
1697
+ masonryOpeningWidth?: number | undefined;
1698
+ masonryOpeningHeight?: number | undefined;
1699
+ finishOpeningWidth?: number | undefined;
1700
+ finishOpeningHeight?: number | undefined;
1701
+ openingKind: "opening" | "window";
1702
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1703
+ operationState: number;
1704
+ openingDirection?: "inward" | "outward" | undefined;
1705
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1706
+ awningDirection: "down" | "up";
1707
+ casementStyle: "french" | "single";
1708
+ hingesSide: "left" | "right";
1709
+ openingShape: "arch" | "rectangle" | "rounded";
1710
+ openingRadiusMode: "all" | "individual";
1711
+ openingCornerRadii: [number, number, number, number];
1434
1712
  cornerRadius: number;
1435
1713
  archHeight: number;
1436
1714
  openingRevealRadius: number;
1437
1715
  frameThickness: number;
1438
1716
  frameDepth?: number | undefined;
1439
- threshold: boolean;
1440
- thresholdHeight: number;
1717
+ windowHandle?: boolean | undefined;
1718
+ sashGrid?: boolean | undefined;
1719
+ columnRatios: number[];
1720
+ rowRatios: number[];
1721
+ columnDividerThickness: number;
1722
+ rowDividerThickness: number;
1723
+ corner?: {
1724
+ end: "end" | "start";
1725
+ partnerId: string;
1726
+ post: "none" | "post";
1727
+ } | undefined;
1728
+ sill: boolean;
1729
+ sillDepth: number;
1730
+ sillThickness: number;
1731
+ sillOverhang?: number | undefined;
1732
+ sillInterior?: boolean | undefined;
1733
+ sillInteriorDepth?: number | undefined;
1734
+ sillInteriorThickness?: number | undefined;
1735
+ sillInteriorOverhang?: number | undefined;
1736
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1737
+ shutterWidth?: number | undefined;
1738
+ shutterOpen?: number | undefined;
1739
+ shutterSides?: "both" | "left" | "right" | undefined;
1740
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1741
+ rollerShutterBoxHeight?: number | undefined;
1742
+ rollerShutterOpen?: number | undefined;
1441
1743
  casingFaceA?: boolean | undefined;
1442
1744
  casingFaceB?: boolean | undefined;
1443
1745
  casingWidth?: number | undefined;
1444
- hingesSide: "left" | "right";
1445
- swingDirection: "inward" | "outward";
1446
- swingAngle: number;
1447
- segments: {
1448
- type: "empty" | "glass" | "panel";
1449
- heightRatio: number;
1450
- columnRatios: number[];
1451
- dividerThickness: number;
1452
- panelDepth: number;
1453
- panelInset: number;
1454
- }[];
1455
- handle: boolean;
1456
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1457
- handleHeight: number;
1458
- handleSide: "left" | "right";
1459
- contentPadding: [number, number];
1460
- doorCloser: boolean;
1461
- panicBar: boolean;
1462
- panicBarStyle: "crossbar" | "touchbar";
1463
- panicBarRods: boolean;
1464
- panicBarHeight: number;
1465
- type: "door";
1746
+ type: "window";
1466
1747
  } | {
1467
1748
  object: "node";
1468
1749
  name?: string | undefined;
@@ -1728,7 +2009,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1728
2009
  fromIds: string[];
1729
2010
  } | undefined;
1730
2011
  } | undefined;
1731
- id: `roof_${string}`;
2012
+ id: `rseg_${string}`;
1732
2013
  material?: {
1733
2014
  id?: string | undefined;
1734
2015
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1774,8 +2055,201 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1774
2055
  bumpScale?: number | undefined;
1775
2056
  } | undefined;
1776
2057
  } | undefined;
1777
- topMaterialPreset?: string | undefined;
1778
- edgeMaterial?: {
2058
+ topMaterialPreset?: string | undefined;
2059
+ edgeMaterial?: {
2060
+ id?: string | undefined;
2061
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2062
+ properties?: {
2063
+ color: string;
2064
+ roughness: number;
2065
+ metalness: number;
2066
+ opacity: number;
2067
+ transparent: boolean;
2068
+ side: "back" | "double" | "front";
2069
+ } | undefined;
2070
+ texture?: {
2071
+ url: string;
2072
+ repeat?: [number, number] | undefined;
2073
+ scale?: number | undefined;
2074
+ offset?: [number, number] | undefined;
2075
+ normalMap?: string | undefined;
2076
+ normalScale?: number | undefined;
2077
+ bumpMap?: string | undefined;
2078
+ bumpScale?: number | undefined;
2079
+ } | undefined;
2080
+ } | undefined;
2081
+ edgeMaterialPreset?: string | undefined;
2082
+ wallMaterial?: {
2083
+ id?: string | undefined;
2084
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2085
+ properties?: {
2086
+ color: string;
2087
+ roughness: number;
2088
+ metalness: number;
2089
+ opacity: number;
2090
+ transparent: boolean;
2091
+ side: "back" | "double" | "front";
2092
+ } | undefined;
2093
+ texture?: {
2094
+ url: string;
2095
+ repeat?: [number, number] | undefined;
2096
+ scale?: number | undefined;
2097
+ offset?: [number, number] | undefined;
2098
+ normalMap?: string | undefined;
2099
+ normalScale?: number | undefined;
2100
+ bumpMap?: string | undefined;
2101
+ bumpScale?: number | undefined;
2102
+ } | undefined;
2103
+ } | undefined;
2104
+ wallMaterialPreset?: string | undefined;
2105
+ position: [number, number, number];
2106
+ rotation: number;
2107
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
2108
+ barrelRise?: number | undefined;
2109
+ barrelSegments?: number | undefined;
2110
+ roofSystem?: "glazed" | "standard" | undefined;
2111
+ glazing?: {
2112
+ across: {
2113
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
2114
+ count: number;
2115
+ spacing: number;
2116
+ alignment: "center" | "end" | "start";
2117
+ };
2118
+ along: {
2119
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
2120
+ count: number;
2121
+ spacing: number;
2122
+ alignment: "center" | "end" | "start";
2123
+ };
2124
+ frameWidth: number;
2125
+ frameDepth: number;
2126
+ glassThickness: number;
2127
+ frameColor: string;
2128
+ glassColor: string;
2129
+ glassOpacity: number;
2130
+ glassRoughness: number;
2131
+ glazedEnds: boolean;
2132
+ panelType: "empty" | "glass" | "solid";
2133
+ panels: {
2134
+ face: string;
2135
+ column: number;
2136
+ row: number;
2137
+ type: "empty" | "glass" | "solid";
2138
+ }[];
2139
+ } | undefined;
2140
+ slots?: Record<string, string> | undefined;
2141
+ width: number;
2142
+ depth: number;
2143
+ conicalStartAngle?: number | undefined;
2144
+ conicalSweepAngle?: number | undefined;
2145
+ conicalFullCircle?: boolean | undefined;
2146
+ trim: {
2147
+ left: number;
2148
+ right: number;
2149
+ front: number;
2150
+ back: number;
2151
+ frontLeft: number;
2152
+ frontRight: number;
2153
+ backLeft: number;
2154
+ backRight: number;
2155
+ frontLeftX: number;
2156
+ frontLeftZ: number;
2157
+ frontRightX: number;
2158
+ frontRightZ: number;
2159
+ backLeftX: number;
2160
+ backLeftZ: number;
2161
+ backRightX: number;
2162
+ backRightZ: number;
2163
+ };
2164
+ wallHeight: number;
2165
+ pitch: number;
2166
+ wallThickness: number;
2167
+ deckThickness: number;
2168
+ overhang: number;
2169
+ gableOverhang?: number | undefined;
2170
+ shingleThickness: number;
2171
+ buildUp?: {
2172
+ presetId?: string | undefined;
2173
+ roofing: {
2174
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
2175
+ thickness: number;
2176
+ name?: string | undefined;
2177
+ };
2178
+ underlayment?: {
2179
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
2180
+ thickness: number;
2181
+ name?: string | undefined;
2182
+ } | undefined;
2183
+ sheathing: {
2184
+ kind: "osb" | "plywood";
2185
+ thickness: number;
2186
+ name?: string | undefined;
2187
+ };
2188
+ structure: {
2189
+ system: "rafters" | "trusses";
2190
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2191
+ spacing: number;
2192
+ };
2193
+ insulation?: {
2194
+ kind: "batt" | "blown" | "rigid";
2195
+ thickness: number;
2196
+ name?: string | undefined;
2197
+ } | undefined;
2198
+ finish?: {
2199
+ kind: "drywall" | "plaster" | "wood-plank";
2200
+ thickness: number;
2201
+ name?: string | undefined;
2202
+ } | undefined;
2203
+ } | undefined;
2204
+ arc?: {
2205
+ centerX: number;
2206
+ centerZ: number;
2207
+ radius: number;
2208
+ } | undefined;
2209
+ shedSideInfillSpan?: number | undefined;
2210
+ shedSideInfillMinX?: number | undefined;
2211
+ shedSideInfillMaxX?: number | undefined;
2212
+ shedFootprintPieces?: [number, number][][] | undefined;
2213
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
2214
+ shedJointFrame?: {
2215
+ position: [number, number, number];
2216
+ rotation: number;
2217
+ } | undefined;
2218
+ shedJointOwnerId?: string | undefined;
2219
+ shedJointNeighborIds?: string[] | undefined;
2220
+ shedJointScopeId?: string | undefined;
2221
+ managedByParent: boolean;
2222
+ wallShell: "auto" | "include" | "omit";
2223
+ shedInsetEndPanels: boolean;
2224
+ fascia?: boolean | undefined;
2225
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
2226
+ fasciaHighEdge?: boolean | undefined;
2227
+ fasciaHeight?: number | undefined;
2228
+ fasciaDepth?: number | undefined;
2229
+ fasciaMaterial?: {
2230
+ id?: string | undefined;
2231
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2232
+ properties?: {
2233
+ color: string;
2234
+ roughness: number;
2235
+ metalness: number;
2236
+ opacity: number;
2237
+ transparent: boolean;
2238
+ side: "back" | "double" | "front";
2239
+ } | undefined;
2240
+ texture?: {
2241
+ url: string;
2242
+ repeat?: [number, number] | undefined;
2243
+ scale?: number | undefined;
2244
+ offset?: [number, number] | undefined;
2245
+ normalMap?: string | undefined;
2246
+ normalScale?: number | undefined;
2247
+ bumpMap?: string | undefined;
2248
+ bumpScale?: number | undefined;
2249
+ } | undefined;
2250
+ } | undefined;
2251
+ fasciaMaterialPreset?: string | undefined;
2252
+ heelMaterial?: {
1779
2253
  id?: string | undefined;
1780
2254
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1781
2255
  properties?: {
@@ -1797,8 +2271,8 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1797
2271
  bumpScale?: number | undefined;
1798
2272
  } | undefined;
1799
2273
  } | undefined;
1800
- edgeMaterialPreset?: string | undefined;
1801
- wallMaterial?: {
2274
+ heelMaterialPreset?: string | undefined;
2275
+ gableLeftMaterial?: {
1802
2276
  id?: string | undefined;
1803
2277
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1804
2278
  properties?: {
@@ -1820,8 +2294,8 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1820
2294
  bumpScale?: number | undefined;
1821
2295
  } | undefined;
1822
2296
  } | undefined;
1823
- wallMaterialPreset?: string | undefined;
1824
- heelMaterial?: {
2297
+ gableLeftMaterialPreset?: string | undefined;
2298
+ gableRightMaterial?: {
1825
2299
  id?: string | undefined;
1826
2300
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1827
2301
  properties?: {
@@ -1843,57 +2317,18 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1843
2317
  bumpScale?: number | undefined;
1844
2318
  } | undefined;
1845
2319
  } | undefined;
1846
- heelMaterialPreset?: string | undefined;
1847
- position: [number, number, number];
1848
- rotation: number;
1849
- support: {
1850
- kind: "level";
1851
- } | {
1852
- kind: "walls";
1853
- } | {
1854
- kind: "roof";
1855
- roofSegmentId: `rseg_${string}`;
1856
- localPosition: [number, number];
1857
- curbHeight: number;
1858
- };
1859
- assembly?: {
1860
- layers: {
1861
- id: string;
1862
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1863
- thickness: number;
1864
- core?: true | undefined;
1865
- spacing?: number | undefined;
1866
- material?: string | undefined;
1867
- slot?: string | undefined;
1868
- returns?: boolean | undefined;
1869
- display?: "construction" | "finished" | undefined;
1870
- inset?: number | undefined;
1871
- bottom?: number | undefined;
1872
- lift?: number | undefined;
1873
- src?: string | undefined;
1874
- }[];
1875
- backing?: {
1876
- id: string;
1877
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1878
- thickness: number;
1879
- core?: true | undefined;
1880
- spacing?: number | undefined;
1881
- material?: string | undefined;
1882
- slot?: string | undefined;
1883
- returns?: boolean | undefined;
1884
- display?: "construction" | "finished" | undefined;
1885
- inset?: number | undefined;
1886
- bottom?: number | undefined;
1887
- lift?: number | undefined;
1888
- src?: string | undefined;
1889
- }[] | undefined;
1890
- face?: "exterior" | "front" | undefined;
1891
- presetId?: string | undefined;
1892
- cavityInsulation?: string | undefined;
1893
- } | undefined;
1894
- slots?: Record<string, string> | undefined;
1895
- children: `rseg_${string}`[];
1896
- type: "roof";
2320
+ gableRightMaterialPreset?: string | undefined;
2321
+ gambrelLowerWidthRatio: number;
2322
+ gambrelLowerHeightRatio: number;
2323
+ mansardSteepWidthRatio: number;
2324
+ mansardSteepHeightRatio: number;
2325
+ dutchHipWidthRatio: number;
2326
+ dutchHipHeightRatio: number;
2327
+ dutchWaistLengthRatio: number;
2328
+ dutchGabletRake: number;
2329
+ dutchTopRakeThickness: number;
2330
+ children: string[];
2331
+ type: "roof-segment";
1897
2332
  } | {
1898
2333
  object: "node";
1899
2334
  name?: string | undefined;
@@ -1918,7 +2353,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1918
2353
  fromIds: string[];
1919
2354
  } | undefined;
1920
2355
  } | undefined;
1921
- id: `slab_${string}`;
2356
+ id: `roof_${string}`;
1922
2357
  material?: {
1923
2358
  id?: string | undefined;
1924
2359
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1926,189 +2361,164 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
1926
2361
  color: string;
1927
2362
  roughness: number;
1928
2363
  metalness: number;
1929
- opacity: number;
1930
- transparent: boolean;
1931
- side: "back" | "double" | "front";
1932
- } | undefined;
1933
- texture?: {
1934
- url: string;
1935
- repeat?: [number, number] | undefined;
1936
- scale?: number | undefined;
1937
- offset?: [number, number] | undefined;
1938
- normalMap?: string | undefined;
1939
- normalScale?: number | undefined;
1940
- bumpMap?: string | undefined;
1941
- bumpScale?: number | undefined;
1942
- } | undefined;
1943
- } | undefined;
1944
- materialPreset?: string | undefined;
1945
- slots?: Record<string, string> | undefined;
1946
- polygon: [number, number][];
1947
- holes: [number, number][][];
1948
- holeMetadata: {
1949
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
1950
- openingId?: string | undefined;
1951
- stairId?: string | undefined;
1952
- elevatorId?: string | undefined;
1953
- }[];
1954
- elevation: number;
1955
- floorHeight?: number | undefined;
1956
- referenceFloorElevation?: number | undefined;
1957
- foundation?: {
1958
- type: "none" | "solid";
1959
- material?: string | {
1960
- id?: string | undefined;
1961
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1962
- properties?: {
1963
- color: string;
1964
- roughness: number;
1965
- metalness: number;
1966
- opacity: number;
1967
- transparent: boolean;
1968
- side: "back" | "double" | "front";
1969
- } | undefined;
1970
- texture?: {
1971
- url: string;
1972
- repeat?: [number, number] | undefined;
1973
- scale?: number | undefined;
1974
- offset?: [number, number] | undefined;
1975
- normalMap?: string | undefined;
1976
- normalScale?: number | undefined;
1977
- bumpMap?: string | undefined;
1978
- bumpScale?: number | undefined;
1979
- } | undefined;
1980
- } | undefined;
1981
- } | undefined;
1982
- thickness: number;
1983
- recessed: boolean;
1984
- recessedRimElevation?: number | undefined;
1985
- fillToTerrain?: boolean | undefined;
1986
- boundary?: "auto" | undefined;
1987
- support?: "open" | undefined;
1988
- plateRole?: "base" | "platform" | "sunken" | undefined;
1989
- railing?: {
1990
- start: [number, number];
1991
- end: [number, number];
1992
- }[] | undefined;
1993
- zoneIds?: string[] | undefined;
1994
- associatedZoneIds?: string[] | undefined;
1995
- autoFromWalls: boolean;
1996
- surfaceScript?: {
1997
- kind: "script";
1998
- meta?: {
1999
- description?: string | undefined;
2000
- category?: string | undefined;
2001
- tags?: string[] | undefined;
2002
- parent?: string | undefined;
2003
- } | undefined;
2004
- language: "bpy" | "three";
2005
- script: string;
2006
- params: Record<string, string | number | boolean>;
2007
- artifact: string;
2008
- manifest: {
2009
- bounds: {
2010
- min: [number, number, number];
2011
- max: [number, number, number];
2012
- };
2013
- params: {
2014
- id: string;
2015
- label?: string | undefined;
2016
- kind: "boolean" | "number" | "string";
2017
- default: string | number | boolean;
2018
- min?: number | undefined;
2019
- max?: number | undefined;
2020
- step?: number | undefined;
2021
- unit?: string | undefined;
2022
- options?: string[] | undefined;
2023
- }[];
2024
- parts: {
2025
- id: string;
2026
- label?: string | undefined;
2027
- type?: string | undefined;
2028
- bounds?: {
2029
- min: [number, number, number];
2030
- max: [number, number, number];
2031
- } | undefined;
2032
- }[];
2033
- surfaces: {
2034
- part?: string | undefined;
2035
- y: number;
2036
- polygon: [number, number][];
2037
- }[];
2038
- slots: {
2039
- id: string;
2040
- label?: string | undefined;
2041
- color?: string | undefined;
2042
- roughness?: number | undefined;
2043
- metalness?: number | undefined;
2044
- transparent?: boolean | undefined;
2045
- emissive?: boolean | undefined;
2046
- }[];
2047
- anchors: {
2048
- id: string;
2049
- position: [number, number, number];
2050
- normal?: [number, number, number] | undefined;
2051
- }[];
2052
- lights: {
2053
- id: string;
2054
- position: [number, number, number];
2055
- color: string;
2056
- intensity: number;
2057
- distance?: number | undefined;
2058
- spot?: {
2059
- direction: [number, number, number];
2060
- angle: number;
2061
- softness: number;
2062
- } | undefined;
2063
- shadows?: boolean | undefined;
2064
- glow?: {
2065
- size: number;
2066
- strength: number;
2067
- } | undefined;
2068
- }[];
2069
- undersides: {
2070
- part?: string | undefined;
2071
- polygon: [number, number][];
2072
- plane: [number, number, number, number];
2073
- }[];
2074
- animations: {
2075
- name: string;
2076
- duration: number;
2077
- }[];
2078
- cutters?: {
2079
- host: "ceiling" | "mounted" | "slab" | "wall";
2080
- polygon: number[][];
2081
- minY: number;
2082
- maxY: number;
2083
- }[] | undefined;
2084
- cutout: boolean;
2085
- collider: boolean;
2086
- shape?: {
2087
- tolerance: number;
2088
- bands: {
2089
- y0: number;
2090
- y1: number;
2091
- polygons: {
2092
- outer: [number, number][];
2093
- holes?: [number, number][][] | undefined;
2094
- }[];
2095
- }[];
2096
- } | undefined;
2097
- triangles: number;
2098
- coverage?: number | undefined;
2099
- uncovered?: {
2100
- min: [number, number];
2101
- max: [number, number];
2102
- }[] | undefined;
2103
- };
2104
- images?: {
2105
- artifact: string;
2106
- thumbnail: string;
2107
- floorPlan: string;
2364
+ opacity: number;
2365
+ transparent: boolean;
2366
+ side: "back" | "double" | "front";
2367
+ } | undefined;
2368
+ texture?: {
2369
+ url: string;
2370
+ repeat?: [number, number] | undefined;
2371
+ scale?: number | undefined;
2372
+ offset?: [number, number] | undefined;
2373
+ normalMap?: string | undefined;
2374
+ normalScale?: number | undefined;
2375
+ bumpMap?: string | undefined;
2376
+ bumpScale?: number | undefined;
2108
2377
  } | undefined;
2109
- inputs: string;
2110
2378
  } | undefined;
2111
- type: "slab";
2379
+ materialPreset?: string | undefined;
2380
+ topMaterial?: {
2381
+ id?: string | undefined;
2382
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2383
+ properties?: {
2384
+ color: string;
2385
+ roughness: number;
2386
+ metalness: number;
2387
+ opacity: number;
2388
+ transparent: boolean;
2389
+ side: "back" | "double" | "front";
2390
+ } | undefined;
2391
+ texture?: {
2392
+ url: string;
2393
+ repeat?: [number, number] | undefined;
2394
+ scale?: number | undefined;
2395
+ offset?: [number, number] | undefined;
2396
+ normalMap?: string | undefined;
2397
+ normalScale?: number | undefined;
2398
+ bumpMap?: string | undefined;
2399
+ bumpScale?: number | undefined;
2400
+ } | undefined;
2401
+ } | undefined;
2402
+ topMaterialPreset?: string | undefined;
2403
+ edgeMaterial?: {
2404
+ id?: string | undefined;
2405
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2406
+ properties?: {
2407
+ color: string;
2408
+ roughness: number;
2409
+ metalness: number;
2410
+ opacity: number;
2411
+ transparent: boolean;
2412
+ side: "back" | "double" | "front";
2413
+ } | undefined;
2414
+ texture?: {
2415
+ url: string;
2416
+ repeat?: [number, number] | undefined;
2417
+ scale?: number | undefined;
2418
+ offset?: [number, number] | undefined;
2419
+ normalMap?: string | undefined;
2420
+ normalScale?: number | undefined;
2421
+ bumpMap?: string | undefined;
2422
+ bumpScale?: number | undefined;
2423
+ } | undefined;
2424
+ } | undefined;
2425
+ edgeMaterialPreset?: string | undefined;
2426
+ wallMaterial?: {
2427
+ id?: string | undefined;
2428
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2429
+ properties?: {
2430
+ color: string;
2431
+ roughness: number;
2432
+ metalness: number;
2433
+ opacity: number;
2434
+ transparent: boolean;
2435
+ side: "back" | "double" | "front";
2436
+ } | undefined;
2437
+ texture?: {
2438
+ url: string;
2439
+ repeat?: [number, number] | undefined;
2440
+ scale?: number | undefined;
2441
+ offset?: [number, number] | undefined;
2442
+ normalMap?: string | undefined;
2443
+ normalScale?: number | undefined;
2444
+ bumpMap?: string | undefined;
2445
+ bumpScale?: number | undefined;
2446
+ } | undefined;
2447
+ } | undefined;
2448
+ wallMaterialPreset?: string | undefined;
2449
+ heelMaterial?: {
2450
+ id?: string | undefined;
2451
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2452
+ properties?: {
2453
+ color: string;
2454
+ roughness: number;
2455
+ metalness: number;
2456
+ opacity: number;
2457
+ transparent: boolean;
2458
+ side: "back" | "double" | "front";
2459
+ } | undefined;
2460
+ texture?: {
2461
+ url: string;
2462
+ repeat?: [number, number] | undefined;
2463
+ scale?: number | undefined;
2464
+ offset?: [number, number] | undefined;
2465
+ normalMap?: string | undefined;
2466
+ normalScale?: number | undefined;
2467
+ bumpMap?: string | undefined;
2468
+ bumpScale?: number | undefined;
2469
+ } | undefined;
2470
+ } | undefined;
2471
+ heelMaterialPreset?: string | undefined;
2472
+ position: [number, number, number];
2473
+ rotation: number;
2474
+ support: {
2475
+ kind: "level";
2476
+ } | {
2477
+ kind: "walls";
2478
+ } | {
2479
+ kind: "roof";
2480
+ roofSegmentId: `rseg_${string}`;
2481
+ localPosition: [number, number];
2482
+ curbHeight: number;
2483
+ };
2484
+ assembly?: {
2485
+ layers: {
2486
+ id: string;
2487
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2488
+ thickness: number;
2489
+ core?: true | undefined;
2490
+ spacing?: number | undefined;
2491
+ material?: string | undefined;
2492
+ slot?: string | undefined;
2493
+ returns?: boolean | undefined;
2494
+ display?: "construction" | "finished" | undefined;
2495
+ inset?: number | undefined;
2496
+ bottom?: number | undefined;
2497
+ lift?: number | undefined;
2498
+ src?: string | undefined;
2499
+ }[];
2500
+ backing?: {
2501
+ id: string;
2502
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2503
+ thickness: number;
2504
+ core?: true | undefined;
2505
+ spacing?: number | undefined;
2506
+ material?: string | undefined;
2507
+ slot?: string | undefined;
2508
+ returns?: boolean | undefined;
2509
+ display?: "construction" | "finished" | undefined;
2510
+ inset?: number | undefined;
2511
+ bottom?: number | undefined;
2512
+ lift?: number | undefined;
2513
+ src?: string | undefined;
2514
+ }[] | undefined;
2515
+ face?: "exterior" | "front" | undefined;
2516
+ presetId?: string | undefined;
2517
+ cavityInsulation?: string | undefined;
2518
+ } | undefined;
2519
+ slots?: Record<string, string> | undefined;
2520
+ children: `rseg_${string}`[];
2521
+ type: "roof";
2112
2522
  } | {
2113
2523
  object: "node";
2114
2524
  name?: string | undefined;
@@ -2447,6 +2857,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
2447
2857
  } | undefined;
2448
2858
  justification?: "a" | "b" | undefined;
2449
2859
  height?: number | undefined;
2860
+ endHeightOffset?: number | undefined;
2450
2861
  curveOffset?: number | undefined;
2451
2862
  supportSlabId?: string | undefined;
2452
2863
  supportOffset?: number | undefined;
@@ -2725,6 +3136,34 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
2725
3136
  frontSide: "exterior" | "interior" | "unknown";
2726
3137
  backSide: "exterior" | "interior" | "unknown";
2727
3138
  type: "wall";
3139
+ } | {
3140
+ object: "node";
3141
+ name?: string | undefined;
3142
+ parentId: string | null;
3143
+ visible: boolean;
3144
+ camera?: {
3145
+ position: [number, number, number];
3146
+ target: [number, number, number];
3147
+ mode: "orthographic" | "perspective";
3148
+ fov?: number | undefined;
3149
+ zoom?: number | undefined;
3150
+ } | undefined;
3151
+ metadata: Record<string, unknown>;
3152
+ provenance?: {
3153
+ refs: {
3154
+ ns?: string | undefined;
3155
+ id: string;
3156
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3157
+ }[];
3158
+ lineage?: {
3159
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3160
+ fromIds: string[];
3161
+ } | undefined;
3162
+ } | undefined;
3163
+ id: `separator_${string}`;
3164
+ start: [number, number];
3165
+ end: [number, number];
3166
+ type: "separator";
2728
3167
  } | {
2729
3168
  object: "node";
2730
3169
  name?: string | undefined;
@@ -2926,37 +3365,6 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
2926
3365
  slots: Record<string, string>;
2927
3366
  slotNames: Record<string, string>;
2928
3367
  type: "block";
2929
- } | {
2930
- object: "node";
2931
- name?: string | undefined;
2932
- parentId: string | null;
2933
- visible: boolean;
2934
- camera?: {
2935
- position: [number, number, number];
2936
- target: [number, number, number];
2937
- mode: "orthographic" | "perspective";
2938
- fov?: number | undefined;
2939
- zoom?: number | undefined;
2940
- } | undefined;
2941
- metadata: Record<string, unknown>;
2942
- provenance?: {
2943
- refs: {
2944
- ns?: string | undefined;
2945
- id: string;
2946
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2947
- }[];
2948
- lineage?: {
2949
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2950
- fromIds: string[];
2951
- } | undefined;
2952
- } | undefined;
2953
- id: `structural-grid_${string}`;
2954
- start: [number, number];
2955
- end: [number, number];
2956
- label: string;
2957
- showStartBubble: boolean;
2958
- showEndBubble: boolean;
2959
- type: "structural-grid";
2960
3368
  } | {
2961
3369
  object: "node";
2962
3370
  name?: string | undefined;
@@ -3480,21 +3888,98 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3480
3888
  thickness: number;
3481
3889
  name?: string | undefined;
3482
3890
  } | undefined;
3483
- insulation?: {
3484
- kind: "batt" | "blown" | "rigid";
3485
- thickness: number;
3486
- name?: string | undefined;
3891
+ insulation?: {
3892
+ kind: "batt" | "blown" | "rigid";
3893
+ thickness: number;
3894
+ name?: string | undefined;
3895
+ } | undefined;
3896
+ } | undefined;
3897
+ regions?: {
3898
+ id: string;
3899
+ polygon: [number, number][];
3900
+ finish: string | Record<string, unknown>;
3901
+ }[] | undefined;
3902
+ boundary?: "auto" | undefined;
3903
+ zoneId?: string | undefined;
3904
+ autoFromWalls: boolean;
3905
+ type: "ceiling";
3906
+ } | {
3907
+ object: "node";
3908
+ name?: string | undefined;
3909
+ parentId: string | null;
3910
+ visible: boolean;
3911
+ camera?: {
3912
+ position: [number, number, number];
3913
+ target: [number, number, number];
3914
+ mode: "orthographic" | "perspective";
3915
+ fov?: number | undefined;
3916
+ zoom?: number | undefined;
3917
+ } | undefined;
3918
+ metadata: Record<string, unknown>;
3919
+ provenance?: {
3920
+ refs: {
3921
+ ns?: string | undefined;
3922
+ id: string;
3923
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3924
+ }[];
3925
+ lineage?: {
3926
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3927
+ fromIds: string[];
3928
+ } | undefined;
3929
+ } | undefined;
3930
+ id: `sseg_${string}`;
3931
+ material?: {
3932
+ id?: string | undefined;
3933
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3934
+ properties?: {
3935
+ color: string;
3936
+ roughness: number;
3937
+ metalness: number;
3938
+ opacity: number;
3939
+ transparent: boolean;
3940
+ side: "back" | "double" | "front";
3941
+ } | undefined;
3942
+ texture?: {
3943
+ url: string;
3944
+ repeat?: [number, number] | undefined;
3945
+ scale?: number | undefined;
3946
+ offset?: [number, number] | undefined;
3947
+ normalMap?: string | undefined;
3948
+ normalScale?: number | undefined;
3949
+ bumpMap?: string | undefined;
3950
+ bumpScale?: number | undefined;
3487
3951
  } | undefined;
3488
3952
  } | undefined;
3489
- regions?: {
3490
- id: string;
3491
- polygon: [number, number][];
3492
- finish: string | Record<string, unknown>;
3493
- }[] | undefined;
3494
- boundary?: "auto" | undefined;
3495
- zoneId?: string | undefined;
3496
- autoFromWalls: boolean;
3497
- type: "ceiling";
3953
+ materialPreset?: string | undefined;
3954
+ slots?: Record<string, string> | undefined;
3955
+ position: [number, number, number];
3956
+ rotation: number;
3957
+ segmentType: "landing" | "stair";
3958
+ width: number;
3959
+ length: number;
3960
+ height: number;
3961
+ stepCount: number;
3962
+ attachmentSide: "front" | "left" | "right";
3963
+ fillToFloor: boolean;
3964
+ construction?: {
3965
+ mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
3966
+ waistThickness: number;
3967
+ treadThickness: number;
3968
+ riserThickness: number;
3969
+ nosing: number;
3970
+ finishThickness: number;
3971
+ closedRisers: boolean;
3972
+ stringerWidth: number;
3973
+ stringerDepth: number;
3974
+ } | undefined;
3975
+ winder?: {
3976
+ turn: "left" | "right";
3977
+ innerGap: number;
3978
+ walkingLineOffset: number;
3979
+ division: "equal-angle" | "equal-going";
3980
+ } | undefined;
3981
+ thickness: number;
3982
+ type: "stair-segment";
3498
3983
  } | {
3499
3984
  object: "node";
3500
3985
  name?: string | undefined;
@@ -3688,198 +4173,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3688
4173
  railingTopReach?: number | undefined;
3689
4174
  railingPostThrough?: boolean | undefined;
3690
4175
  children: `sseg_${string}`[];
3691
- type: "stair";
3692
- } | {
3693
- object: "node";
3694
- name?: string | undefined;
3695
- parentId: string | null;
3696
- visible: boolean;
3697
- camera?: {
3698
- position: [number, number, number];
3699
- target: [number, number, number];
3700
- mode: "orthographic" | "perspective";
3701
- fov?: number | undefined;
3702
- zoom?: number | undefined;
3703
- } | undefined;
3704
- metadata: Record<string, unknown>;
3705
- provenance?: {
3706
- refs: {
3707
- ns?: string | undefined;
3708
- id: string;
3709
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3710
- }[];
3711
- lineage?: {
3712
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3713
- fromIds: string[];
3714
- } | undefined;
3715
- } | undefined;
3716
- id: `scan_${string}`;
3717
- url: string | null;
3718
- captureSession: {
3719
- sessionId: string;
3720
- schemaVersion?: number | undefined;
3721
- revisionId?: string | undefined;
3722
- manifestUrl?: string | undefined;
3723
- } | null;
3724
- layers: Record<string, boolean>;
3725
- position: [number, number, number];
3726
- rotation: [number, number, number];
3727
- scale: number;
3728
- opacity: number;
3729
- type: "scan";
3730
- } | {
3731
- object: "node";
3732
- name?: string | undefined;
3733
- parentId: string | null;
3734
- visible: boolean;
3735
- camera?: {
3736
- position: [number, number, number];
3737
- target: [number, number, number];
3738
- mode: "orthographic" | "perspective";
3739
- fov?: number | undefined;
3740
- zoom?: number | undefined;
3741
- } | undefined;
3742
- metadata: Record<string, unknown>;
3743
- provenance?: {
3744
- refs: {
3745
- ns?: string | undefined;
3746
- id: string;
3747
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3748
- }[];
3749
- lineage?: {
3750
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3751
- fromIds: string[];
3752
- } | undefined;
3753
- } | undefined;
3754
- id: `guide_${string}`;
3755
- url: string;
3756
- position: [number, number, number];
3757
- rotation: [number, number, number];
3758
- scale: number;
3759
- opacity: number;
3760
- scaleReference: {
3761
- start: [number, number];
3762
- end: [number, number];
3763
- realLengthMeters: number;
3764
- measuredLengthUnits: number;
3765
- metersPerUnit: number;
3766
- displayLength?: number | undefined;
3767
- displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
3768
- label: string;
3769
- } | null;
3770
- type: "guide";
3771
- } | {
3772
- object: "node";
3773
- name?: string | undefined;
3774
- parentId: string | null;
3775
- visible: boolean;
3776
- camera?: {
3777
- position: [number, number, number];
3778
- target: [number, number, number];
3779
- mode: "orthographic" | "perspective";
3780
- fov?: number | undefined;
3781
- zoom?: number | undefined;
3782
- } | undefined;
3783
- metadata: Record<string, unknown>;
3784
- provenance?: {
3785
- refs: {
3786
- ns?: string | undefined;
3787
- id: string;
3788
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3789
- }[];
3790
- lineage?: {
3791
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3792
- fromIds: string[];
3793
- } | undefined;
3794
- } | undefined;
3795
- id: `shelf_${string}`;
3796
- children: string[];
3797
- position: [number, number, number];
3798
- rotation: [number, number, number];
3799
- supportSlabId?: string | undefined;
3800
- width: number;
3801
- depth: number;
3802
- thickness: number;
3803
- height: number;
3804
- style: "bookshelf" | "cubby" | "open-rack" | "wall-shelf";
3805
- rows: number;
3806
- columns: number;
3807
- withBack: boolean;
3808
- withSides: boolean;
3809
- withBottom: boolean;
3810
- bracketStyle: "hidden" | "industrial" | "minimal";
3811
- material?: {
3812
- id?: string | undefined;
3813
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3814
- properties?: {
3815
- color: string;
3816
- roughness: number;
3817
- metalness: number;
3818
- opacity: number;
3819
- transparent: boolean;
3820
- side: "back" | "double" | "front";
3821
- } | undefined;
3822
- texture?: {
3823
- url: string;
3824
- repeat?: [number, number] | undefined;
3825
- scale?: number | undefined;
3826
- offset?: [number, number] | undefined;
3827
- normalMap?: string | undefined;
3828
- normalScale?: number | undefined;
3829
- bumpMap?: string | undefined;
3830
- bumpScale?: number | undefined;
3831
- } | undefined;
3832
- } | undefined;
3833
- materialPreset?: string | undefined;
3834
- slots?: Record<string, string> | undefined;
3835
- type: "shelf";
3836
- } | {
3837
- object: "node";
3838
- name?: string | undefined;
3839
- parentId: string | null;
3840
- visible: boolean;
3841
- camera?: {
3842
- position: [number, number, number];
3843
- target: [number, number, number];
3844
- mode: "orthographic" | "perspective";
3845
- fov?: number | undefined;
3846
- zoom?: number | undefined;
3847
- } | undefined;
3848
- metadata: Record<string, unknown>;
3849
- provenance?: {
3850
- refs: {
3851
- ns?: string | undefined;
3852
- id: string;
3853
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3854
- }[];
3855
- lineage?: {
3856
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3857
- fromIds: string[];
3858
- } | undefined;
3859
- } | undefined;
3860
- id: `duct-fitting_${string}`;
3861
- position: [number, number, number];
3862
- rotation: [number, number, number];
3863
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
3864
- shape: "oval" | "rect" | "round";
3865
- inletShape?: "oval" | "rect" | "round" | undefined;
3866
- outletShape?: "oval" | "rect" | "round" | undefined;
3867
- width: number;
3868
- height: number;
3869
- shape2: "oval" | "rect" | "round";
3870
- width2: number;
3871
- height2: number;
3872
- angle: number;
3873
- branchAngle: number;
3874
- diameter: number;
3875
- diameter2: number;
3876
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
3877
- system: "return" | "supply";
3878
- damperAngle: number;
3879
- panelWidth: number;
3880
- panelHeight: number;
3881
- slots?: Record<string, string> | undefined;
3882
- type: "duct-fitting";
4176
+ type: "stair";
3883
4177
  } | {
3884
4178
  object: "node";
3885
4179
  name?: string | undefined;
@@ -3904,19 +4198,23 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3904
4198
  fromIds: string[];
3905
4199
  } | undefined;
3906
4200
  } | undefined;
3907
- id: `duct-terminal_${string}`;
4201
+ id: `guide_${string}`;
4202
+ url: string;
3908
4203
  position: [number, number, number];
3909
- rotation: number;
3910
- supportSlabId?: string | undefined;
3911
- terminalType: "diffuser" | "return-grille" | "supply-register";
3912
- mount: "ceiling" | "floor" | "wall";
3913
- width: number;
3914
- depth: number;
3915
- collarShape: "oval" | "rect" | "round";
3916
- collarDiameter: number;
3917
- collarWidth: number;
3918
- collarHeight: number;
3919
- type: "duct-terminal";
4204
+ rotation: [number, number, number];
4205
+ scale: number;
4206
+ opacity: number;
4207
+ scaleReference: {
4208
+ start: [number, number];
4209
+ end: [number, number];
4210
+ realLengthMeters: number;
4211
+ measuredLengthUnits: number;
4212
+ metersPerUnit: number;
4213
+ displayLength?: number | undefined;
4214
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
4215
+ label: string;
4216
+ } | null;
4217
+ type: "guide";
3920
4218
  } | {
3921
4219
  object: "node";
3922
4220
  name?: string | undefined;
@@ -3941,23 +4239,11 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3941
4239
  fromIds: string[];
3942
4240
  } | undefined;
3943
4241
  } | undefined;
3944
- id: `hvac-equipment_${string}`;
4242
+ id: `spawn_${string}`;
3945
4243
  position: [number, number, number];
3946
4244
  rotation: number;
3947
4245
  supportSlabId?: string | undefined;
3948
- equipmentType: "air-handler" | "condenser" | "furnace";
3949
- width: number;
3950
- depth: number;
3951
- height: number;
3952
- supplyShape: "oval" | "rect" | "round";
3953
- returnShape: "oval" | "rect" | "round";
3954
- supplyDiameter: number;
3955
- returnDiameter: number;
3956
- supplyWidth: number;
3957
- supplyHeight: number;
3958
- returnWidth: number;
3959
- returnHeight: number;
3960
- type: "hvac-equipment";
4246
+ type: "spawn";
3961
4247
  } | {
3962
4248
  object: "node";
3963
4249
  name?: string | undefined;
@@ -3982,56 +4268,47 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
3982
4268
  fromIds: string[];
3983
4269
  } | undefined;
3984
4270
  } | undefined;
3985
- id: `liquid-line_${string}`;
3986
- path: [number, number, number][];
3987
- diameter: number;
3988
- type: "liquid-line";
3989
- } | {
3990
- object: "node";
3991
- name?: string | undefined;
3992
- parentId: string | null;
3993
- visible: boolean;
3994
- camera?: {
3995
- position: [number, number, number];
3996
- target: [number, number, number];
3997
- mode: "orthographic" | "perspective";
3998
- fov?: number | undefined;
3999
- zoom?: number | undefined;
4000
- } | undefined;
4001
- metadata: Record<string, unknown>;
4002
- provenance?: {
4003
- refs: {
4004
- ns?: string | undefined;
4005
- id: string;
4006
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4007
- }[];
4008
- lineage?: {
4009
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4010
- fromIds: string[];
4271
+ id: `shelf_${string}`;
4272
+ children: string[];
4273
+ position: [number, number, number];
4274
+ rotation: [number, number, number];
4275
+ supportSlabId?: string | undefined;
4276
+ width: number;
4277
+ depth: number;
4278
+ thickness: number;
4279
+ height: number;
4280
+ style: "bookshelf" | "cubby" | "open-rack" | "wall-shelf";
4281
+ rows: number;
4282
+ columns: number;
4283
+ withBack: boolean;
4284
+ withSides: boolean;
4285
+ withBottom: boolean;
4286
+ bracketStyle: "hidden" | "industrial" | "minimal";
4287
+ material?: {
4288
+ id?: string | undefined;
4289
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4290
+ properties?: {
4291
+ color: string;
4292
+ roughness: number;
4293
+ metalness: number;
4294
+ opacity: number;
4295
+ transparent: boolean;
4296
+ side: "back" | "double" | "front";
4297
+ } | undefined;
4298
+ texture?: {
4299
+ url: string;
4300
+ repeat?: [number, number] | undefined;
4301
+ scale?: number | undefined;
4302
+ offset?: [number, number] | undefined;
4303
+ normalMap?: string | undefined;
4304
+ normalScale?: number | undefined;
4305
+ bumpMap?: string | undefined;
4306
+ bumpScale?: number | undefined;
4011
4307
  } | undefined;
4012
4308
  } | undefined;
4013
- id: `pipe-segment_${string}`;
4014
- path: [number, number, number][];
4015
- autoHangers?: boolean | undefined;
4016
- hangerOverrides?: Record<string, {
4017
- fraction?: number | undefined;
4018
- skipped?: boolean | undefined;
4019
- hostId?: string | undefined;
4020
- }> | undefined;
4021
- hangerStyle?: "double" | "single" | undefined;
4022
- hangerSpacing?: number | undefined;
4023
- hangerMaxReach?: number | undefined;
4024
- wallAttachment?: {
4025
- wallId: `wall_${string}`;
4026
- side: "back" | "front";
4027
- startUV: [number, number];
4028
- endUV: [number, number];
4029
- offset: number;
4030
- } | undefined;
4031
- diameter: number;
4032
- pipeMaterial: "abs" | "cast-iron" | "pvc";
4033
- system: "vent" | "waste";
4034
- type: "pipe-segment";
4309
+ materialPreset?: string | undefined;
4310
+ slots?: Record<string, string> | undefined;
4311
+ type: "shelf";
4035
4312
  } | {
4036
4313
  object: "node";
4037
4314
  name?: string | undefined;
@@ -4056,121 +4333,32 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4056
4333
  fromIds: string[];
4057
4334
  } | undefined;
4058
4335
  } | undefined;
4059
- id: `pipe-fitting_${string}`;
4336
+ id: `duct-fitting_${string}`;
4060
4337
  position: [number, number, number];
4061
4338
  rotation: [number, number, number];
4062
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4339
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4340
+ shape: "oval" | "rect" | "round";
4341
+ inletShape?: "oval" | "rect" | "round" | undefined;
4342
+ outletShape?: "oval" | "rect" | "round" | undefined;
4343
+ width: number;
4344
+ height: number;
4345
+ shape2: "oval" | "rect" | "round";
4346
+ width2: number;
4347
+ height2: number;
4063
4348
  angle: number;
4349
+ branchAngle: number;
4064
4350
  diameter: number;
4065
4351
  diameter2: number;
4066
- cleanoutStyle: "end" | "inline";
4067
- pipeMaterial: "abs" | "cast-iron" | "pvc";
4068
- system: "vent" | "waste";
4069
- type: "pipe-fitting";
4070
- } | {
4071
- object: "node";
4072
- name?: string | undefined;
4073
- parentId: string | null;
4074
- visible: boolean;
4075
- camera?: {
4076
- position: [number, number, number];
4077
- target: [number, number, number];
4078
- mode: "orthographic" | "perspective";
4079
- fov?: number | undefined;
4080
- zoom?: number | undefined;
4081
- } | undefined;
4082
- metadata: Record<string, unknown>;
4083
- provenance?: {
4084
- refs: {
4085
- ns?: string | undefined;
4086
- id: string;
4087
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4088
- }[];
4089
- lineage?: {
4090
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4091
- fromIds: string[];
4092
- } | undefined;
4093
- } | undefined;
4094
- id: `level_${string}`;
4095
- 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}`)[];
4096
- level: number;
4097
- baseElevation: number;
4098
- height?: number | undefined;
4099
- type: "level";
4100
- } | {
4101
- object: "node";
4102
- name?: string | undefined;
4103
- parentId: string | null;
4104
- visible: boolean;
4105
- camera?: {
4106
- position: [number, number, number];
4107
- target: [number, number, number];
4108
- mode: "orthographic" | "perspective";
4109
- fov?: number | undefined;
4110
- zoom?: number | undefined;
4111
- } | undefined;
4112
- metadata: Record<string, unknown>;
4113
- provenance?: {
4114
- refs: {
4115
- ns?: string | undefined;
4116
- id: string;
4117
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4118
- }[];
4119
- lineage?: {
4120
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4121
- fromIds: string[];
4122
- } | undefined;
4123
- } | undefined;
4124
- id: `elevator_${string}`;
4125
- material?: {
4126
- id?: string | undefined;
4127
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4128
- properties?: {
4129
- color: string;
4130
- roughness: number;
4131
- metalness: number;
4132
- opacity: number;
4133
- transparent: boolean;
4134
- side: "back" | "double" | "front";
4135
- } | undefined;
4136
- texture?: {
4137
- url: string;
4138
- repeat?: [number, number] | undefined;
4139
- scale?: number | undefined;
4140
- offset?: [number, number] | undefined;
4141
- normalMap?: string | undefined;
4142
- normalScale?: number | undefined;
4143
- bumpMap?: string | undefined;
4144
- bumpScale?: number | undefined;
4145
- } | undefined;
4146
- } | undefined;
4147
- materialPreset?: string | undefined;
4352
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
4353
+ system: "return" | "supply";
4354
+ damperAngle: number;
4355
+ panelWidth: number;
4356
+ panelHeight: number;
4148
4357
  slots?: Record<string, string> | undefined;
4149
- position: [number, number, number];
4150
- rotation: number;
4151
- width: number;
4152
- depth: number;
4153
- shaftWidth?: number | undefined;
4154
- shaftDepth?: number | undefined;
4155
- shaftWallThickness: number;
4156
- shaftStyle: "glass" | "solid";
4157
- cabHeight: number;
4158
- doorWidth: number;
4159
- doorHeight: number;
4160
- doorStyle: "center-opening" | "single-left" | "single-right";
4161
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4162
- fromLevelId: string | null;
4163
- toLevelId: string | null;
4164
- servedLevelIds?: string[] | undefined;
4165
- disabledLevelIds: string[];
4166
- serviceOnlyLevelIds: string[];
4167
- defaultLevelId: string | null;
4168
- speed: number;
4169
- doorDurationMs: number;
4170
- dwellMs: number;
4171
- type: "elevator";
4358
+ type: "duct-fitting";
4172
4359
  } | {
4173
4360
  object: "node";
4361
+ name?: string | undefined;
4174
4362
  parentId: string | null;
4175
4363
  visible: boolean;
4176
4364
  camera?: {
@@ -4180,6 +4368,7 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4180
4368
  fov?: number | undefined;
4181
4369
  zoom?: number | undefined;
4182
4370
  } | undefined;
4371
+ metadata: Record<string, unknown>;
4183
4372
  provenance?: {
4184
4373
  refs: {
4185
4374
  ns?: string | undefined;
@@ -4191,13 +4380,19 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4191
4380
  fromIds: string[];
4192
4381
  } | undefined;
4193
4382
  } | undefined;
4194
- id: `unit_${string}`;
4195
- name: string;
4196
- kind: "apartment" | "commercial" | "common" | "hotel-room";
4197
- members: `zone_${string}`[];
4198
- color: string;
4199
- metadata: Record<string, unknown>;
4200
- type: "unit";
4383
+ id: `duct-terminal_${string}`;
4384
+ position: [number, number, number];
4385
+ rotation: number;
4386
+ supportSlabId?: string | undefined;
4387
+ terminalType: "diffuser" | "return-grille" | "supply-register";
4388
+ mount: "ceiling" | "floor" | "wall";
4389
+ width: number;
4390
+ depth: number;
4391
+ collarShape: "oval" | "rect" | "round";
4392
+ collarDiameter: number;
4393
+ collarWidth: number;
4394
+ collarHeight: number;
4395
+ type: "duct-terminal";
4201
4396
  } | {
4202
4397
  object: "node";
4203
4398
  name?: string | undefined;
@@ -4222,12 +4417,23 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4222
4417
  fromIds: string[];
4223
4418
  } | undefined;
4224
4419
  } | undefined;
4225
- id: `building_${string}`;
4226
- children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
4420
+ id: `hvac-equipment_${string}`;
4227
4421
  position: [number, number, number];
4228
- rotation: [number, number, number];
4229
- groundLevelId?: `level_${string}` | undefined;
4230
- type: "building";
4422
+ rotation: number;
4423
+ supportSlabId?: string | undefined;
4424
+ equipmentType: "air-handler" | "condenser" | "furnace";
4425
+ width: number;
4426
+ depth: number;
4427
+ height: number;
4428
+ supplyShape: "oval" | "rect" | "round";
4429
+ returnShape: "oval" | "rect" | "round";
4430
+ supplyDiameter: number;
4431
+ returnDiameter: number;
4432
+ supplyWidth: number;
4433
+ supplyHeight: number;
4434
+ returnWidth: number;
4435
+ returnHeight: number;
4436
+ type: "hvac-equipment";
4231
4437
  } | {
4232
4438
  object: "node";
4233
4439
  name?: string | undefined;
@@ -4252,126 +4458,10 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4252
4458
  fromIds: string[];
4253
4459
  } | undefined;
4254
4460
  } | undefined;
4255
- id: `dormer_${string}`;
4256
- material?: {
4257
- id?: string | undefined;
4258
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4259
- properties?: {
4260
- color: string;
4261
- roughness: number;
4262
- metalness: number;
4263
- opacity: number;
4264
- transparent: boolean;
4265
- side: "back" | "double" | "front";
4266
- } | undefined;
4267
- texture?: {
4268
- url: string;
4269
- repeat?: [number, number] | undefined;
4270
- scale?: number | undefined;
4271
- offset?: [number, number] | undefined;
4272
- normalMap?: string | undefined;
4273
- normalScale?: number | undefined;
4274
- bumpMap?: string | undefined;
4275
- bumpScale?: number | undefined;
4276
- } | undefined;
4277
- } | undefined;
4278
- materialPreset?: string | undefined;
4279
- topMaterial?: {
4280
- id?: string | undefined;
4281
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4282
- properties?: {
4283
- color: string;
4284
- roughness: number;
4285
- metalness: number;
4286
- opacity: number;
4287
- transparent: boolean;
4288
- side: "back" | "double" | "front";
4289
- } | undefined;
4290
- texture?: {
4291
- url: string;
4292
- repeat?: [number, number] | undefined;
4293
- scale?: number | undefined;
4294
- offset?: [number, number] | undefined;
4295
- normalMap?: string | undefined;
4296
- normalScale?: number | undefined;
4297
- bumpMap?: string | undefined;
4298
- bumpScale?: number | undefined;
4299
- } | undefined;
4300
- } | undefined;
4301
- topMaterialPreset?: string | undefined;
4302
- sideMaterial?: {
4303
- id?: string | undefined;
4304
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4305
- properties?: {
4306
- color: string;
4307
- roughness: number;
4308
- metalness: number;
4309
- opacity: number;
4310
- transparent: boolean;
4311
- side: "back" | "double" | "front";
4312
- } | undefined;
4313
- texture?: {
4314
- url: string;
4315
- repeat?: [number, number] | undefined;
4316
- scale?: number | undefined;
4317
- offset?: [number, number] | undefined;
4318
- normalMap?: string | undefined;
4319
- normalScale?: number | undefined;
4320
- bumpMap?: string | undefined;
4321
- bumpScale?: number | undefined;
4322
- } | undefined;
4323
- } | undefined;
4324
- sideMaterialPreset?: string | undefined;
4325
- wallMaterial?: {
4326
- id?: string | undefined;
4327
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4328
- properties?: {
4329
- color: string;
4330
- roughness: number;
4331
- metalness: number;
4332
- opacity: number;
4333
- transparent: boolean;
4334
- side: "back" | "double" | "front";
4335
- } | undefined;
4336
- texture?: {
4337
- url: string;
4338
- repeat?: [number, number] | undefined;
4339
- scale?: number | undefined;
4340
- offset?: [number, number] | undefined;
4341
- normalMap?: string | undefined;
4342
- normalScale?: number | undefined;
4343
- bumpMap?: string | undefined;
4344
- bumpScale?: number | undefined;
4345
- } | undefined;
4346
- } | undefined;
4347
- wallMaterialPreset?: string | undefined;
4348
- roofSegmentId?: string | undefined;
4349
- position: [number, number, number];
4350
- rotation: number;
4351
- width: number;
4352
- depth: number;
4353
- height: number;
4354
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
4355
- roofHeight: number;
4356
- shedHighSide: "back" | "front";
4357
- wallSkirtHeight: number;
4358
- windowWidth: number;
4359
- windowHeight: number;
4360
- windowOffsetX: number;
4361
- windowOffsetY: number;
4362
- windowFrameThickness: number;
4363
- windowFrameDepth: number;
4364
- windowColumns: number;
4365
- windowRows: number;
4366
- windowDividerThickness: number;
4367
- windowShape: "arch" | "rectangle" | "rounded";
4368
- windowArchHeight: number;
4369
- windowCornerRadii: [number, number, number, number];
4370
- windowSill: boolean;
4371
- windowSillDepth: number;
4372
- windowSillThickness: number;
4373
- children: `window_${string}`[];
4374
- type: "dormer";
4461
+ id: `liquid-line_${string}`;
4462
+ path: [number, number, number][];
4463
+ diameter: number;
4464
+ type: "liquid-line";
4375
4465
  } | {
4376
4466
  object: "node";
4377
4467
  name?: string | undefined;
@@ -4396,77 +4486,28 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4396
4486
  fromIds: string[];
4397
4487
  } | undefined;
4398
4488
  } | undefined;
4399
- id: `skylight_${string}`;
4400
- material?: {
4401
- id?: string | undefined;
4402
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4403
- properties?: {
4404
- color: string;
4405
- roughness: number;
4406
- metalness: number;
4407
- opacity: number;
4408
- transparent: boolean;
4409
- side: "back" | "double" | "front";
4410
- } | undefined;
4411
- texture?: {
4412
- url: string;
4413
- repeat?: [number, number] | undefined;
4414
- scale?: number | undefined;
4415
- offset?: [number, number] | undefined;
4416
- normalMap?: string | undefined;
4417
- normalScale?: number | undefined;
4418
- bumpMap?: string | undefined;
4419
- bumpScale?: number | undefined;
4420
- } | undefined;
4421
- } | undefined;
4422
- materialPreset?: string | undefined;
4423
- glassMaterial?: {
4424
- id?: string | undefined;
4425
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4426
- properties?: {
4427
- color: string;
4428
- roughness: number;
4429
- metalness: number;
4430
- opacity: number;
4431
- transparent: boolean;
4432
- side: "back" | "double" | "front";
4433
- } | undefined;
4434
- texture?: {
4435
- url: string;
4436
- repeat?: [number, number] | undefined;
4437
- scale?: number | undefined;
4438
- offset?: [number, number] | undefined;
4439
- normalMap?: string | undefined;
4440
- normalScale?: number | undefined;
4441
- bumpMap?: string | undefined;
4442
- bumpScale?: number | undefined;
4443
- } | undefined;
4489
+ id: `pipe-segment_${string}`;
4490
+ path: [number, number, number][];
4491
+ autoHangers?: boolean | undefined;
4492
+ hangerOverrides?: Record<string, {
4493
+ fraction?: number | undefined;
4494
+ skipped?: boolean | undefined;
4495
+ hostId?: string | undefined;
4496
+ }> | undefined;
4497
+ hangerStyle?: "double" | "single" | undefined;
4498
+ hangerSpacing?: number | undefined;
4499
+ hangerMaxReach?: number | undefined;
4500
+ wallAttachment?: {
4501
+ wallId: `wall_${string}`;
4502
+ side: "back" | "front";
4503
+ startUV: [number, number];
4504
+ endUV: [number, number];
4505
+ offset: number;
4444
4506
  } | undefined;
4445
- glassMaterialPreset?: string | undefined;
4446
- roofSegmentId?: string | undefined;
4447
- position: [number, number, number];
4448
- rotation: number;
4449
- width: number;
4450
- height: number;
4451
- frameThickness: number;
4452
- frameDepth: number;
4453
- skylightType: "flat" | "lantern" | "opening" | "sliding" | "walk-on";
4454
- glassThickness: number;
4455
- lanternHeight: number;
4456
- lanternTopScale: number;
4457
- openingAngle: number;
4458
- openingSide: "bottom" | "left" | "right" | "top";
4459
- operationState: number;
4460
- motorHousing: boolean;
4461
- slideFraction: number;
4462
- slideDirection: "x" | "z";
4463
- trackWidth: number;
4464
- motorHousingSize: number;
4465
- curb: boolean;
4466
- curbHeight: number;
4467
- cutoutOffset: number;
4468
- surfaceNormal?: [number, number, number] | undefined;
4469
- type: "skylight";
4507
+ diameter: number;
4508
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4509
+ system: "vent" | "waste";
4510
+ type: "pipe-segment";
4470
4511
  } | {
4471
4512
  object: "node";
4472
4513
  name?: string | undefined;
@@ -4491,198 +4532,47 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4491
4532
  fromIds: string[];
4492
4533
  } | undefined;
4493
4534
  } | undefined;
4494
- id: `site_${string}`;
4495
- polygon: {
4496
- type: "polygon";
4497
- points: [number, number][];
4498
- };
4499
- terrain?: {
4500
- type: "heightfield";
4501
- origin: [number, number];
4502
- spacing: number;
4503
- cols: number;
4504
- rows: number;
4505
- step: number;
4506
- heights: string;
4507
- } | undefined;
4508
- showGround?: boolean | undefined;
4509
- presentation?: {
4510
- theme?: string | undefined;
4511
- exposure?: number | undefined;
4512
- shading?: "rendered" | "solid" | undefined;
4513
- edges?: "off" | "soft" | "strong" | undefined;
4514
- shadows?: boolean | undefined;
4515
- lighting?: {
4516
- background?: string | undefined;
4517
- backgroundSky?: string | null | undefined;
4518
- ground?: string | undefined;
4519
- ambient?: {
4520
- color: string;
4521
- intensity: number;
4522
- } | undefined;
4523
- hemi?: {
4524
- sky: string;
4525
- ground: string;
4526
- intensity: number;
4527
- } | undefined;
4528
- lights?: {
4529
- color: string;
4530
- intensity: number;
4531
- position: [number, number, number];
4532
- target?: [number, number, number] | undefined;
4533
- castShadow?: boolean | undefined;
4534
- shadow?: {
4535
- intensity?: number | undefined;
4536
- bias?: number | undefined;
4537
- normalBias?: number | undefined;
4538
- radius?: number | undefined;
4539
- mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
4540
- camera?: {
4541
- left: number;
4542
- right: number;
4543
- top: number;
4544
- bottom: number;
4545
- near: number;
4546
- far: number;
4547
- } | undefined;
4548
- } | undefined;
4549
- }[] | undefined;
4550
- environment?: {
4551
- source: "gradient" | "none" | "room";
4552
- intensity: number;
4553
- } | undefined;
4554
- } | undefined;
4555
- postprocessing?: {
4556
- ambientOcclusion?: boolean | undefined;
4557
- colorGrading?: boolean | undefined;
4558
- } | undefined;
4559
- display?: {
4560
- mode?: "construction" | "finished" | "systems" | undefined;
4561
- families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
4562
- disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
4563
- xray?: boolean | undefined;
4564
- colorBy?: "material" | "service" | undefined;
4565
- } | undefined;
4566
- } | undefined;
4567
- address?: {
4568
- street?: string | undefined;
4569
- city?: string | undefined;
4570
- state?: string | undefined;
4571
- zip?: string | undefined;
4572
- } | undefined;
4573
- parcel?: {
4574
- apn?: string | undefined;
4575
- source?: string | undefined;
4576
- county?: string | undefined;
4577
- state?: string | undefined;
4578
- lotAreaSqFt?: number | undefined;
4579
- originLngLat?: [number, number] | undefined;
4580
- resolvedAt?: string | undefined;
4581
- layer?: string | undefined;
4582
- notes?: string[] | undefined;
4583
- } | undefined;
4584
- setbacks?: {
4585
- front: number;
4586
- side: number;
4587
- rear: number;
4588
- left?: number | undefined;
4589
- right?: number | undefined;
4590
- streetSide?: number | undefined;
4591
- } | undefined;
4592
- setbacksSource?: string | undefined;
4593
- zone?: string | undefined;
4594
- frontEdge?: number | undefined;
4595
- streetEdges?: number[] | undefined;
4596
- sightTriangleFt?: number | undefined;
4597
- northRotation?: number | undefined;
4598
- dossier?: {
4599
- [x: string]: unknown;
4600
- provider: string;
4601
- asOf: string;
4602
- point?: {
4603
- lat?: number | undefined;
4604
- lng?: number | undefined;
4605
- source?: string | undefined;
4606
- } | undefined;
4607
- address?: {
4608
- formatted?: string | undefined;
4609
- precision?: string | undefined;
4610
- } | undefined;
4611
- sections: Record<string, {
4612
- [x: string]: unknown;
4613
- status: string;
4614
- summary?: string | undefined;
4615
- reason?: string | undefined;
4616
- source?: {
4617
- name?: string | undefined;
4618
- kind?: string | undefined;
4619
- vintage?: string | undefined;
4620
- attribution?: string | undefined;
4621
- } | undefined;
4622
- }>;
4623
- parcel?: Record<string, unknown> | undefined;
4624
- flood?: Record<string, unknown> | undefined;
4625
- codeBasis?: Record<string, unknown> | undefined;
4626
- zoning?: Record<string, unknown> | undefined;
4627
- utilities?: Record<string, unknown> | undefined;
4628
- soils?: Record<string, unknown> | undefined;
4629
- wetlands?: Record<string, unknown> | undefined;
4630
- structures?: Record<string, unknown> | undefined;
4631
- elevation?: Record<string, unknown> | undefined;
4632
- boundaries?: Record<string, unknown> | undefined;
4535
+ id: `pipe-fitting_${string}`;
4536
+ position: [number, number, number];
4537
+ rotation: [number, number, number];
4538
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4539
+ angle: number;
4540
+ diameter: number;
4541
+ diameter2: number;
4542
+ cleanoutStyle: "end" | "inline";
4543
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4544
+ system: "vent" | "waste";
4545
+ type: "pipe-fitting";
4546
+ } | {
4547
+ object: "node";
4548
+ name?: string | undefined;
4549
+ parentId: string | null;
4550
+ visible: boolean;
4551
+ camera?: {
4552
+ position: [number, number, number];
4553
+ target: [number, number, number];
4554
+ mode: "orthographic" | "perspective";
4555
+ fov?: number | undefined;
4556
+ zoom?: number | undefined;
4633
4557
  } | undefined;
4634
- contourIntervalIn?: number | undefined;
4635
- contours3d?: boolean | undefined;
4636
- terrainContours?: {
4637
- datum: string;
4638
- intervalFt: number;
4639
- source?: string | undefined;
4640
- lines: {
4641
- elevationFt: number;
4642
- points: [number, number][];
4558
+ metadata: Record<string, unknown>;
4559
+ provenance?: {
4560
+ refs: {
4561
+ ns?: string | undefined;
4562
+ id: string;
4563
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4643
4564
  }[];
4565
+ lineage?: {
4566
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4567
+ fromIds: string[];
4568
+ } | undefined;
4644
4569
  } | undefined;
4645
- wallTypes?: {
4646
- id: string;
4647
- label: string;
4648
- assembly: {
4649
- layers: {
4650
- id: string;
4651
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
4652
- thickness: number;
4653
- core?: true | undefined;
4654
- spacing?: number | undefined;
4655
- material?: string | undefined;
4656
- slot?: string | undefined;
4657
- returns?: boolean | undefined;
4658
- display?: "construction" | "finished" | undefined;
4659
- inset?: number | undefined;
4660
- bottom?: number | undefined;
4661
- lift?: number | undefined;
4662
- src?: string | undefined;
4663
- }[];
4664
- backing?: {
4665
- id: string;
4666
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
4667
- thickness: number;
4668
- core?: true | undefined;
4669
- spacing?: number | undefined;
4670
- material?: string | undefined;
4671
- slot?: string | undefined;
4672
- returns?: boolean | undefined;
4673
- display?: "construction" | "finished" | undefined;
4674
- inset?: number | undefined;
4675
- bottom?: number | undefined;
4676
- lift?: number | undefined;
4677
- src?: string | undefined;
4678
- }[] | undefined;
4679
- face?: "exterior" | "front" | undefined;
4680
- presetId?: string | undefined;
4681
- cavityInsulation?: string | undefined;
4682
- };
4683
- }[] | undefined;
4684
- children: string[];
4685
- type: "site";
4570
+ id: `level_${string}`;
4571
+ 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}`)[];
4572
+ level: number;
4573
+ baseElevation: number;
4574
+ height?: number | undefined;
4575
+ type: "level";
4686
4576
  } | {
4687
4577
  object: "node";
4688
4578
  name?: string | undefined;
@@ -4707,27 +4597,54 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4707
4597
  fromIds: string[];
4708
4598
  } | undefined;
4709
4599
  } | undefined;
4710
- matchFenceStyle?: boolean | undefined;
4711
- matchFenceHeight?: boolean | undefined;
4712
- leafType?: "double" | "single" | undefined;
4713
- style?: "guard" | "horizontal" | "match" | "picket" | "privacy" | "rail" | "slat" | undefined;
4714
- height?: number | undefined;
4715
- clearance?: number | undefined;
4716
- thickness?: number | undefined;
4717
- frameWidth?: number | undefined;
4718
- spacing?: number | undefined;
4719
- boardWidth?: number | undefined;
4720
- hinge?: "left" | "right" | undefined;
4721
- swing?: "inward" | "outward" | undefined;
4722
- openAngle?: number | undefined;
4723
- leafSplit?: number | undefined;
4724
- brace?: "cross" | "diagonal" | "none" | undefined;
4725
- showHardware?: boolean | undefined;
4726
- showPosts?: boolean | undefined;
4727
- id: `fence-gate_${string}`;
4728
- center: number;
4600
+ id: `elevator_${string}`;
4601
+ material?: {
4602
+ id?: string | undefined;
4603
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4604
+ properties?: {
4605
+ color: string;
4606
+ roughness: number;
4607
+ metalness: number;
4608
+ opacity: number;
4609
+ transparent: boolean;
4610
+ side: "back" | "double" | "front";
4611
+ } | undefined;
4612
+ texture?: {
4613
+ url: string;
4614
+ repeat?: [number, number] | undefined;
4615
+ scale?: number | undefined;
4616
+ offset?: [number, number] | undefined;
4617
+ normalMap?: string | undefined;
4618
+ normalScale?: number | undefined;
4619
+ bumpMap?: string | undefined;
4620
+ bumpScale?: number | undefined;
4621
+ } | undefined;
4622
+ } | undefined;
4623
+ materialPreset?: string | undefined;
4624
+ slots?: Record<string, string> | undefined;
4625
+ position: [number, number, number];
4626
+ rotation: number;
4729
4627
  width: number;
4730
- type: "fence-gate";
4628
+ depth: number;
4629
+ shaftWidth?: number | undefined;
4630
+ shaftDepth?: number | undefined;
4631
+ shaftWallThickness: number;
4632
+ shaftStyle: "glass" | "solid";
4633
+ cabHeight: number;
4634
+ doorWidth: number;
4635
+ doorHeight: number;
4636
+ doorStyle: "center-opening" | "single-left" | "single-right";
4637
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4638
+ fromLevelId: string | null;
4639
+ toLevelId: string | null;
4640
+ servedLevelIds?: string[] | undefined;
4641
+ disabledLevelIds: string[];
4642
+ serviceOnlyLevelIds: string[];
4643
+ defaultLevelId: string | null;
4644
+ speed: number;
4645
+ doorDurationMs: number;
4646
+ dwellMs: number;
4647
+ type: "elevator";
4731
4648
  } | {
4732
4649
  object: "node";
4733
4650
  name?: string | undefined;
@@ -4752,14 +4669,12 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
4752
4669
  fromIds: string[];
4753
4670
  } | undefined;
4754
4671
  } | undefined;
4755
- center: number;
4756
- width: number;
4757
- matchFenceStyle?: boolean | undefined;
4758
- matchFenceHeight?: boolean | undefined;
4759
- height?: number | undefined;
4760
- showPosts: boolean;
4761
- id: `fence-opening_${string}`;
4762
- type: "fence-opening";
4672
+ id: `building_${string}`;
4673
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
4674
+ position: [number, number, number];
4675
+ rotation: [number, number, number];
4676
+ groundLevelId?: `level_${string}` | undefined;
4677
+ type: "building";
4763
4678
  } | {
4764
4679
  object: "node";
4765
4680
  name?: string | undefined;
@@ -5271,64 +5186,6 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
5271
5186
  spinSpeed: number;
5272
5187
  style: "cylinder" | "globe";
5273
5188
  type: "turbine-vent";
5274
- } | {
5275
- object: "node";
5276
- name?: string | undefined;
5277
- parentId: string | null;
5278
- visible: boolean;
5279
- camera?: {
5280
- position: [number, number, number];
5281
- target: [number, number, number];
5282
- mode: "orthographic" | "perspective";
5283
- fov?: number | undefined;
5284
- zoom?: number | undefined;
5285
- } | undefined;
5286
- metadata: Record<string, unknown>;
5287
- provenance?: {
5288
- refs: {
5289
- ns?: string | undefined;
5290
- id: string;
5291
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5292
- }[];
5293
- lineage?: {
5294
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5295
- fromIds: string[];
5296
- } | undefined;
5297
- } | undefined;
5298
- id: `cupola_${string}`;
5299
- material?: {
5300
- id?: string | undefined;
5301
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5302
- properties?: {
5303
- color: string;
5304
- roughness: number;
5305
- metalness: number;
5306
- opacity: number;
5307
- transparent: boolean;
5308
- side: "back" | "double" | "front";
5309
- } | undefined;
5310
- texture?: {
5311
- url: string;
5312
- repeat?: [number, number] | undefined;
5313
- scale?: number | undefined;
5314
- offset?: [number, number] | undefined;
5315
- normalMap?: string | undefined;
5316
- normalScale?: number | undefined;
5317
- bumpMap?: string | undefined;
5318
- bumpScale?: number | undefined;
5319
- } | undefined;
5320
- } | undefined;
5321
- slots?: Record<string, string> | undefined;
5322
- materialPreset: string;
5323
- roofSegmentId?: string | undefined;
5324
- position: [number, number, number];
5325
- rotation: number;
5326
- width: number;
5327
- depth: number;
5328
- height: number;
5329
- roofStyle: "dome" | "pyramid";
5330
- finial: boolean;
5331
- type: "cupola";
5332
5189
  } | {
5333
5190
  object: "node";
5334
5191
  name?: string | undefined;
@@ -5657,6 +5514,150 @@ export declare function associateLegacyManualFloors(source: Record<string, AnyNo
5657
5514
  frameDepth: number;
5658
5515
  surfaceNormal?: [number, number, number] | undefined;
5659
5516
  type: "solar-panel";
5517
+ } | {
5518
+ object: "node";
5519
+ name?: string | undefined;
5520
+ parentId: string | null;
5521
+ visible: boolean;
5522
+ camera?: {
5523
+ position: [number, number, number];
5524
+ target: [number, number, number];
5525
+ mode: "orthographic" | "perspective";
5526
+ fov?: number | undefined;
5527
+ zoom?: number | undefined;
5528
+ } | undefined;
5529
+ metadata: Record<string, unknown>;
5530
+ provenance?: {
5531
+ refs: {
5532
+ ns?: string | undefined;
5533
+ id: string;
5534
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5535
+ }[];
5536
+ lineage?: {
5537
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5538
+ fromIds: string[];
5539
+ } | undefined;
5540
+ } | undefined;
5541
+ id: `dormer_${string}`;
5542
+ material?: {
5543
+ id?: string | undefined;
5544
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5545
+ properties?: {
5546
+ color: string;
5547
+ roughness: number;
5548
+ metalness: number;
5549
+ opacity: number;
5550
+ transparent: boolean;
5551
+ side: "back" | "double" | "front";
5552
+ } | undefined;
5553
+ texture?: {
5554
+ url: string;
5555
+ repeat?: [number, number] | undefined;
5556
+ scale?: number | undefined;
5557
+ offset?: [number, number] | undefined;
5558
+ normalMap?: string | undefined;
5559
+ normalScale?: number | undefined;
5560
+ bumpMap?: string | undefined;
5561
+ bumpScale?: number | undefined;
5562
+ } | undefined;
5563
+ } | undefined;
5564
+ materialPreset?: string | undefined;
5565
+ topMaterial?: {
5566
+ id?: string | undefined;
5567
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5568
+ properties?: {
5569
+ color: string;
5570
+ roughness: number;
5571
+ metalness: number;
5572
+ opacity: number;
5573
+ transparent: boolean;
5574
+ side: "back" | "double" | "front";
5575
+ } | undefined;
5576
+ texture?: {
5577
+ url: string;
5578
+ repeat?: [number, number] | undefined;
5579
+ scale?: number | undefined;
5580
+ offset?: [number, number] | undefined;
5581
+ normalMap?: string | undefined;
5582
+ normalScale?: number | undefined;
5583
+ bumpMap?: string | undefined;
5584
+ bumpScale?: number | undefined;
5585
+ } | undefined;
5586
+ } | undefined;
5587
+ topMaterialPreset?: string | undefined;
5588
+ sideMaterial?: {
5589
+ id?: string | undefined;
5590
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5591
+ properties?: {
5592
+ color: string;
5593
+ roughness: number;
5594
+ metalness: number;
5595
+ opacity: number;
5596
+ transparent: boolean;
5597
+ side: "back" | "double" | "front";
5598
+ } | undefined;
5599
+ texture?: {
5600
+ url: string;
5601
+ repeat?: [number, number] | undefined;
5602
+ scale?: number | undefined;
5603
+ offset?: [number, number] | undefined;
5604
+ normalMap?: string | undefined;
5605
+ normalScale?: number | undefined;
5606
+ bumpMap?: string | undefined;
5607
+ bumpScale?: number | undefined;
5608
+ } | undefined;
5609
+ } | undefined;
5610
+ sideMaterialPreset?: string | undefined;
5611
+ wallMaterial?: {
5612
+ id?: string | undefined;
5613
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5614
+ properties?: {
5615
+ color: string;
5616
+ roughness: number;
5617
+ metalness: number;
5618
+ opacity: number;
5619
+ transparent: boolean;
5620
+ side: "back" | "double" | "front";
5621
+ } | undefined;
5622
+ texture?: {
5623
+ url: string;
5624
+ repeat?: [number, number] | undefined;
5625
+ scale?: number | undefined;
5626
+ offset?: [number, number] | undefined;
5627
+ normalMap?: string | undefined;
5628
+ normalScale?: number | undefined;
5629
+ bumpMap?: string | undefined;
5630
+ bumpScale?: number | undefined;
5631
+ } | undefined;
5632
+ } | undefined;
5633
+ wallMaterialPreset?: string | undefined;
5634
+ roofSegmentId?: string | undefined;
5635
+ position: [number, number, number];
5636
+ rotation: number;
5637
+ width: number;
5638
+ depth: number;
5639
+ height: number;
5640
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
5641
+ roofHeight: number;
5642
+ shedHighSide: "back" | "front";
5643
+ wallSkirtHeight: number;
5644
+ windowWidth: number;
5645
+ windowHeight: number;
5646
+ windowOffsetX: number;
5647
+ windowOffsetY: number;
5648
+ windowFrameThickness: number;
5649
+ windowFrameDepth: number;
5650
+ windowColumns: number;
5651
+ windowRows: number;
5652
+ windowDividerThickness: number;
5653
+ windowShape: "arch" | "rectangle" | "rounded";
5654
+ windowArchHeight: number;
5655
+ windowCornerRadii: [number, number, number, number];
5656
+ windowSill: boolean;
5657
+ windowSillDepth: number;
5658
+ windowSillThickness: number;
5659
+ children: `window_${string}`[];
5660
+ type: "dormer";
5660
5661
  } | {
5661
5662
  object: "node";
5662
5663
  name?: string | undefined;