@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
@@ -238,6 +238,7 @@ export declare function floorStepFixture(separator?: boolean): {
238
238
  } | undefined;
239
239
  justification?: "a" | "b" | undefined;
240
240
  height?: number | undefined;
241
+ endHeightOffset?: number | undefined;
241
242
  curveOffset?: number | undefined;
242
243
  supportSlabId?: string | undefined;
243
244
  supportOffset?: number | undefined;
@@ -755,6 +756,7 @@ export declare function floorStepFixture(separator?: boolean): {
755
756
  } | undefined;
756
757
  justification?: "a" | "b" | undefined;
757
758
  height?: number | undefined;
759
+ endHeightOffset?: number | undefined;
758
760
  curveOffset?: number | undefined;
759
761
  supportSlabId?: string | undefined;
760
762
  supportOffset?: number | undefined;
@@ -1034,6 +1036,34 @@ export declare function floorStepFixture(separator?: boolean): {
1034
1036
  backSide: "exterior" | "interior" | "unknown";
1035
1037
  };
1036
1038
  boundary: {
1039
+ object: "node";
1040
+ name?: string | undefined;
1041
+ parentId: string | null;
1042
+ visible: boolean;
1043
+ camera?: {
1044
+ position: [number, number, number];
1045
+ target: [number, number, number];
1046
+ mode: "orthographic" | "perspective";
1047
+ fov?: number | undefined;
1048
+ zoom?: number | undefined;
1049
+ } | undefined;
1050
+ metadata: Record<string, unknown>;
1051
+ provenance?: {
1052
+ refs: {
1053
+ ns?: string | undefined;
1054
+ id: string;
1055
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1056
+ }[];
1057
+ lineage?: {
1058
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1059
+ fromIds: string[];
1060
+ } | undefined;
1061
+ } | undefined;
1062
+ id: `separator_${string}`;
1063
+ type: "separator";
1064
+ start: [number, number];
1065
+ end: [number, number];
1066
+ } | {
1037
1067
  object: "node";
1038
1068
  name?: string | undefined;
1039
1069
  parentId: string | null;
@@ -1272,6 +1302,7 @@ export declare function floorStepFixture(separator?: boolean): {
1272
1302
  } | undefined;
1273
1303
  justification?: "a" | "b" | undefined;
1274
1304
  height?: number | undefined;
1305
+ endHeightOffset?: number | undefined;
1275
1306
  curveOffset?: number | undefined;
1276
1307
  supportSlabId?: string | undefined;
1277
1308
  supportOffset?: number | undefined;
@@ -1549,34 +1580,6 @@ export declare function floorStepFixture(separator?: boolean): {
1549
1580
  end: [number, number];
1550
1581
  frontSide: "exterior" | "interior" | "unknown";
1551
1582
  backSide: "exterior" | "interior" | "unknown";
1552
- } | {
1553
- object: "node";
1554
- name?: string | undefined;
1555
- parentId: string | null;
1556
- visible: boolean;
1557
- camera?: {
1558
- position: [number, number, number];
1559
- target: [number, number, number];
1560
- mode: "orthographic" | "perspective";
1561
- fov?: number | undefined;
1562
- zoom?: number | undefined;
1563
- } | undefined;
1564
- metadata: Record<string, unknown>;
1565
- provenance?: {
1566
- refs: {
1567
- ns?: string | undefined;
1568
- id: string;
1569
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1570
- }[];
1571
- lineage?: {
1572
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1573
- fromIds: string[];
1574
- } | undefined;
1575
- } | undefined;
1576
- id: `separator_${string}`;
1577
- type: "separator";
1578
- start: [number, number];
1579
- end: [number, number];
1580
1583
  };
1581
1584
  zones: {
1582
1585
  object: "node";
@@ -2285,54 +2288,126 @@ export declare function floorStepFixture(separator?: boolean): {
2285
2288
  fromIds: string[];
2286
2289
  } | undefined;
2287
2290
  } | undefined;
2288
- id: `elevator_${string}`;
2289
- material?: {
2290
- id?: string | undefined;
2291
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2292
- properties?: {
2293
- color: string;
2294
- roughness: number;
2295
- metalness: number;
2296
- opacity: number;
2297
- transparent: boolean;
2298
- side: "back" | "double" | "front";
2291
+ id: `block_${string}`;
2292
+ children: string[];
2293
+ position: [number, number, number];
2294
+ rotation: number;
2295
+ supportSlabId?: string | undefined;
2296
+ topology: {
2297
+ vertices: {
2298
+ id: string;
2299
+ position: [number, number, number];
2300
+ }[];
2301
+ edges: {
2302
+ id: string;
2303
+ vertexIds: [string, string];
2304
+ }[];
2305
+ faces: {
2306
+ id: string;
2307
+ vertexIds: string[];
2308
+ materialSlot: string;
2309
+ }[];
2310
+ };
2311
+ slots: Record<string, string>;
2312
+ slotNames: Record<string, string>;
2313
+ type: "block";
2314
+ } | {
2315
+ object: "node";
2316
+ name?: string | undefined;
2317
+ parentId: string | null;
2318
+ visible: boolean;
2319
+ camera?: {
2320
+ position: [number, number, number];
2321
+ target: [number, number, number];
2322
+ mode: "orthographic" | "perspective";
2323
+ fov?: number | undefined;
2324
+ zoom?: number | undefined;
2325
+ } | undefined;
2326
+ metadata: Record<string, unknown>;
2327
+ provenance?: {
2328
+ refs: {
2329
+ ns?: string | undefined;
2330
+ id: string;
2331
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2332
+ }[];
2333
+ lineage?: {
2334
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2335
+ fromIds: string[];
2299
2336
  } | undefined;
2300
- texture?: {
2301
- url: string;
2302
- repeat?: [number, number] | undefined;
2303
- scale?: number | undefined;
2304
- offset?: [number, number] | undefined;
2305
- normalMap?: string | undefined;
2306
- normalScale?: number | undefined;
2307
- bumpMap?: string | undefined;
2308
- bumpScale?: number | undefined;
2337
+ } | undefined;
2338
+ id: `construction-dimension_${string}`;
2339
+ anchors: ({
2340
+ kind: "feature";
2341
+ reference: {
2342
+ nodeId: string;
2343
+ featureId: string;
2344
+ parameters?: Record<string, string | number | boolean> | undefined;
2345
+ };
2346
+ fallback: [number, number, number];
2347
+ } | [number, number, number])[];
2348
+ baseline: {
2349
+ origin: [number, number];
2350
+ direction: [number, number];
2351
+ };
2352
+ chainMode: "continuous" | "point-to-point";
2353
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2354
+ featureCount: number;
2355
+ showCenterMark: boolean;
2356
+ prefix: string;
2357
+ suffix: string;
2358
+ textOverride: string | null;
2359
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2360
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2361
+ textPosition: "above" | "centered";
2362
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2363
+ metricNotation: "meters" | "millimeters";
2364
+ extensionStartGap: number;
2365
+ extensionOvershoot: number;
2366
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2367
+ drawingOverrides: {
2368
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2369
+ presentation: "controlled" | "omit" | "shown";
2370
+ suppressedSegmentIndexes: number[];
2371
+ }[];
2372
+ controllingDimensionId: `construction-dimension_${string}` | null;
2373
+ type: "construction-dimension";
2374
+ } | {
2375
+ object: "node";
2376
+ name?: string | undefined;
2377
+ parentId: string | null;
2378
+ visible: boolean;
2379
+ camera?: {
2380
+ position: [number, number, number];
2381
+ target: [number, number, number];
2382
+ mode: "orthographic" | "perspective";
2383
+ fov?: number | undefined;
2384
+ zoom?: number | undefined;
2385
+ } | undefined;
2386
+ metadata: Record<string, unknown>;
2387
+ provenance?: {
2388
+ refs: {
2389
+ ns?: string | undefined;
2390
+ id: string;
2391
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2392
+ }[];
2393
+ lineage?: {
2394
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2395
+ fromIds: string[];
2309
2396
  } | undefined;
2310
2397
  } | undefined;
2311
- materialPreset?: string | undefined;
2312
- slots?: Record<string, string> | undefined;
2398
+ id: `duct-terminal_${string}`;
2313
2399
  position: [number, number, number];
2314
2400
  rotation: number;
2401
+ supportSlabId?: string | undefined;
2402
+ terminalType: "diffuser" | "return-grille" | "supply-register";
2403
+ mount: "ceiling" | "floor" | "wall";
2315
2404
  width: number;
2316
2405
  depth: number;
2317
- shaftWidth?: number | undefined;
2318
- shaftDepth?: number | undefined;
2319
- shaftWallThickness: number;
2320
- shaftStyle: "glass" | "solid";
2321
- cabHeight: number;
2322
- doorWidth: number;
2323
- doorHeight: number;
2324
- doorStyle: "center-opening" | "single-left" | "single-right";
2325
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
2326
- fromLevelId: string | null;
2327
- toLevelId: string | null;
2328
- servedLevelIds?: string[] | undefined;
2329
- disabledLevelIds: string[];
2330
- serviceOnlyLevelIds: string[];
2331
- defaultLevelId: string | null;
2332
- speed: number;
2333
- doorDurationMs: number;
2334
- dwellMs: number;
2335
- type: "elevator";
2406
+ collarShape: "oval" | "rect" | "round";
2407
+ collarDiameter: number;
2408
+ collarWidth: number;
2409
+ collarHeight: number;
2410
+ type: "duct-terminal";
2336
2411
  } | {
2337
2412
  object: "node";
2338
2413
  name?: string | undefined;
@@ -2357,205 +2432,51 @@ export declare function floorStepFixture(separator?: boolean): {
2357
2432
  fromIds: string[];
2358
2433
  } | undefined;
2359
2434
  } | undefined;
2360
- type: "item";
2361
- id: `item_${string}`;
2435
+ id: `guide_${string}`;
2436
+ url: string;
2362
2437
  position: [number, number, number];
2363
2438
  rotation: [number, number, number];
2364
- scale: [number, number, number];
2365
- side?: "back" | "front" | undefined;
2366
- children: string[];
2367
- wallId?: string | undefined;
2368
- wallT?: number | undefined;
2369
- roofSegmentId?: string | undefined;
2370
- roofFace?: "back" | "front" | "left" | "right" | undefined;
2371
- blockFaceId?: string | undefined;
2372
- supportSlabId?: string | undefined;
2373
- collectionIds?: `collection_${string}`[] | undefined;
2374
- slots?: Record<string, string> | undefined;
2375
- source?: {
2376
- kind: "script";
2377
- meta?: {
2378
- description?: string | undefined;
2379
- category?: string | undefined;
2380
- tags?: string[] | undefined;
2381
- parent?: string | undefined;
2382
- } | undefined;
2383
- language: "bpy" | "three";
2384
- script: string;
2385
- params: Record<string, string | number | boolean>;
2386
- artifact: string;
2387
- manifest: {
2388
- bounds: {
2389
- min: [number, number, number];
2390
- max: [number, number, number];
2391
- };
2392
- params: {
2393
- id: string;
2394
- label?: string | undefined;
2395
- kind: "boolean" | "number" | "string";
2396
- default: string | number | boolean;
2397
- min?: number | undefined;
2398
- max?: number | undefined;
2399
- step?: number | undefined;
2400
- unit?: string | undefined;
2401
- options?: string[] | undefined;
2402
- }[];
2403
- parts: {
2404
- id: string;
2405
- label?: string | undefined;
2406
- type?: string | undefined;
2407
- bounds?: {
2408
- min: [number, number, number];
2409
- max: [number, number, number];
2410
- } | undefined;
2411
- }[];
2412
- surfaces: {
2413
- part?: string | undefined;
2414
- y: number;
2415
- polygon: [number, number][];
2416
- }[];
2417
- slots: {
2418
- id: string;
2419
- label?: string | undefined;
2420
- color?: string | undefined;
2421
- roughness?: number | undefined;
2422
- metalness?: number | undefined;
2423
- transparent?: boolean | undefined;
2424
- emissive?: boolean | undefined;
2425
- }[];
2426
- anchors: {
2427
- id: string;
2428
- position: [number, number, number];
2429
- normal?: [number, number, number] | undefined;
2430
- }[];
2431
- lights: {
2432
- id: string;
2433
- position: [number, number, number];
2434
- color: string;
2435
- intensity: number;
2436
- distance?: number | undefined;
2437
- spot?: {
2438
- direction: [number, number, number];
2439
- angle: number;
2440
- softness: number;
2441
- } | undefined;
2442
- shadows?: boolean | undefined;
2443
- glow?: {
2444
- size: number;
2445
- strength: number;
2446
- } | undefined;
2447
- }[];
2448
- undersides: {
2449
- part?: string | undefined;
2450
- polygon: [number, number][];
2451
- plane: [number, number, number, number];
2452
- }[];
2453
- animations: {
2454
- name: string;
2455
- duration: number;
2456
- }[];
2457
- cutters?: {
2458
- host: "ceiling" | "mounted" | "slab" | "wall";
2459
- polygon: number[][];
2460
- minY: number;
2461
- maxY: number;
2462
- }[] | undefined;
2463
- cutout: boolean;
2464
- collider: boolean;
2465
- shape?: {
2466
- tolerance: number;
2467
- bands: {
2468
- y0: number;
2469
- y1: number;
2470
- polygons: {
2471
- outer: [number, number][];
2472
- holes?: [number, number][][] | undefined;
2473
- }[];
2474
- }[];
2475
- } | undefined;
2476
- triangles: number;
2477
- coverage?: number | undefined;
2478
- uncovered?: {
2479
- min: [number, number];
2480
- max: [number, number];
2481
- }[] | undefined;
2482
- };
2483
- images?: {
2484
- artifact: string;
2485
- thumbnail: string;
2486
- floorPlan: string;
2487
- } | undefined;
2439
+ scale: number;
2440
+ opacity: number;
2441
+ scaleReference: {
2442
+ start: [number, number];
2443
+ end: [number, number];
2444
+ realLengthMeters: number;
2445
+ measuredLengthUnits: number;
2446
+ metersPerUnit: number;
2447
+ displayLength?: number | undefined;
2448
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
2449
+ label: string;
2450
+ } | null;
2451
+ type: "guide";
2452
+ } | {
2453
+ object: "node";
2454
+ name?: string | undefined;
2455
+ parentId: string | null;
2456
+ visible: boolean;
2457
+ camera?: {
2458
+ position: [number, number, number];
2459
+ target: [number, number, number];
2460
+ mode: "orthographic" | "perspective";
2461
+ fov?: number | undefined;
2462
+ zoom?: number | undefined;
2488
2463
  } | undefined;
2489
- asset: {
2490
- id: string;
2491
- category: string;
2492
- name: string;
2493
- thumbnail: string;
2494
- floorPlanUrl?: string | undefined;
2495
- source: "community" | "library" | "mine";
2496
- isDraft?: boolean | undefined;
2497
- src: string;
2498
- dimensions: [number, number, number];
2499
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
2500
- recessed?: boolean | undefined;
2501
- tags?: string[] | undefined;
2502
- functionTags?: string[] | undefined;
2503
- offset: [number, number, number];
2504
- rotation: [number, number, number];
2505
- scale: [number, number, number];
2506
- surface?: {
2507
- height: number;
2508
- } | undefined;
2509
- interactive?: {
2510
- controls: ({
2511
- kind: "toggle";
2512
- label?: string | undefined;
2513
- default?: boolean | undefined;
2514
- } | {
2515
- kind: "slider";
2516
- label: string;
2517
- min: number;
2518
- max: number;
2519
- step: number;
2520
- unit?: string | undefined;
2521
- displayMode: "dial" | "slider" | "stepper";
2522
- default?: number | undefined;
2523
- } | {
2524
- kind: "temperature";
2525
- label: string;
2526
- min: number;
2527
- max: number;
2528
- unit: "C" | "F";
2529
- default?: number | undefined;
2530
- })[];
2531
- effects: ({
2532
- kind: "animation";
2533
- mode?: "ambient" | "open-close" | undefined;
2534
- control?: number | undefined;
2535
- clips: {
2536
- on?: string | undefined;
2537
- off?: string | undefined;
2538
- loop?: string | undefined;
2539
- };
2540
- } | {
2541
- kind: "light";
2542
- color: string;
2543
- intensityRange: [number, number];
2544
- distance?: number | undefined;
2545
- offset: [number, number, number];
2546
- spot?: {
2547
- direction: [number, number, number];
2548
- angle: number;
2549
- softness: number;
2550
- } | undefined;
2551
- shadows?: boolean | undefined;
2552
- glow?: {
2553
- size: number;
2554
- strength: number;
2555
- } | undefined;
2556
- })[];
2464
+ metadata: Record<string, unknown>;
2465
+ provenance?: {
2466
+ refs: {
2467
+ ns?: string | undefined;
2468
+ id: string;
2469
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2470
+ }[];
2471
+ lineage?: {
2472
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2473
+ fromIds: string[];
2557
2474
  } | undefined;
2558
- };
2475
+ } | undefined;
2476
+ id: `liquid-line_${string}`;
2477
+ path: [number, number, number][];
2478
+ diameter: number;
2479
+ type: "liquid-line";
2559
2480
  } | {
2560
2481
  object: "node";
2561
2482
  name?: string | undefined;
@@ -2580,8 +2501,7 @@ export declare function floorStepFixture(separator?: boolean): {
2580
2501
  fromIds: string[];
2581
2502
  } | undefined;
2582
2503
  } | undefined;
2583
- id: `ceiling_${string}`;
2584
- children: (`item_${string}` | `procedural-item_${string}`)[];
2504
+ id: `rseg_${string}`;
2585
2505
  material?: {
2586
2506
  id?: string | undefined;
2587
2507
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -2605,325 +2525,302 @@ export declare function floorStepFixture(separator?: boolean): {
2605
2525
  } | undefined;
2606
2526
  } | undefined;
2607
2527
  materialPreset?: string | undefined;
2608
- slots?: Record<string, string> | undefined;
2609
- polygon: [number, number][];
2610
- holes: [number, number][][];
2611
- holeMetadata: {
2612
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
2613
- openingId?: string | undefined;
2614
- stairId?: string | undefined;
2615
- elevatorId?: string | undefined;
2616
- }[];
2617
- openingIds?: string[] | undefined;
2618
- height?: number | undefined;
2619
- buildUp?: {
2620
- presetId?: string | undefined;
2621
- finish?: {
2622
- kind: "drywall" | "plaster" | "wood-plank";
2623
- thickness: number;
2624
- name?: string | undefined;
2625
- } | undefined;
2626
- framing?: {
2627
- system: "joists" | "truss-chords";
2628
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2629
- spacing: number;
2630
- } | undefined;
2631
- decking?: {
2632
- kind: "osb" | "plywood";
2633
- thickness: number;
2634
- name?: string | undefined;
2528
+ topMaterial?: {
2529
+ id?: string | undefined;
2530
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2531
+ properties?: {
2532
+ color: string;
2533
+ roughness: number;
2534
+ metalness: number;
2535
+ opacity: number;
2536
+ transparent: boolean;
2537
+ side: "back" | "double" | "front";
2635
2538
  } | undefined;
2636
- insulation?: {
2637
- kind: "batt" | "blown" | "rigid";
2638
- thickness: number;
2639
- name?: string | undefined;
2539
+ texture?: {
2540
+ url: string;
2541
+ repeat?: [number, number] | undefined;
2542
+ scale?: number | undefined;
2543
+ offset?: [number, number] | undefined;
2544
+ normalMap?: string | undefined;
2545
+ normalScale?: number | undefined;
2546
+ bumpMap?: string | undefined;
2547
+ bumpScale?: number | undefined;
2640
2548
  } | undefined;
2641
2549
  } | undefined;
2642
- regions?: {
2643
- id: string;
2644
- polygon: [number, number][];
2645
- finish: string | Record<string, unknown>;
2646
- }[] | undefined;
2647
- boundary?: "auto" | undefined;
2648
- zoneId?: string | undefined;
2649
- autoFromWalls: boolean;
2650
- type: "ceiling";
2651
- } | {
2652
- object: "node";
2653
- name?: string | undefined;
2654
- parentId: string | null;
2655
- visible: boolean;
2656
- camera?: {
2657
- position: [number, number, number];
2658
- target: [number, number, number];
2659
- mode: "orthographic" | "perspective";
2660
- fov?: number | undefined;
2661
- zoom?: number | undefined;
2550
+ topMaterialPreset?: string | undefined;
2551
+ edgeMaterial?: {
2552
+ id?: string | undefined;
2553
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2554
+ properties?: {
2555
+ color: string;
2556
+ roughness: number;
2557
+ metalness: number;
2558
+ opacity: number;
2559
+ transparent: boolean;
2560
+ side: "back" | "double" | "front";
2561
+ } | undefined;
2562
+ texture?: {
2563
+ url: string;
2564
+ repeat?: [number, number] | undefined;
2565
+ scale?: number | undefined;
2566
+ offset?: [number, number] | undefined;
2567
+ normalMap?: string | undefined;
2568
+ normalScale?: number | undefined;
2569
+ bumpMap?: string | undefined;
2570
+ bumpScale?: number | undefined;
2571
+ } | undefined;
2662
2572
  } | undefined;
2663
- metadata: Record<string, unknown>;
2664
- provenance?: {
2665
- refs: {
2666
- ns?: string | undefined;
2667
- id: string;
2668
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2669
- }[];
2670
- lineage?: {
2671
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2672
- fromIds: string[];
2573
+ edgeMaterialPreset?: string | undefined;
2574
+ wallMaterial?: {
2575
+ id?: string | undefined;
2576
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2577
+ properties?: {
2578
+ color: string;
2579
+ roughness: number;
2580
+ metalness: number;
2581
+ opacity: number;
2582
+ transparent: boolean;
2583
+ side: "back" | "double" | "front";
2584
+ } | undefined;
2585
+ texture?: {
2586
+ url: string;
2587
+ repeat?: [number, number] | undefined;
2588
+ scale?: number | undefined;
2589
+ offset?: [number, number] | undefined;
2590
+ normalMap?: string | undefined;
2591
+ normalScale?: number | undefined;
2592
+ bumpMap?: string | undefined;
2593
+ bumpScale?: number | undefined;
2673
2594
  } | undefined;
2674
2595
  } | undefined;
2675
- id: `construction-dimension_${string}`;
2676
- anchors: ({
2677
- kind: "feature";
2678
- reference: {
2679
- nodeId: string;
2680
- featureId: string;
2681
- parameters?: Record<string, string | number | boolean> | undefined;
2596
+ wallMaterialPreset?: string | undefined;
2597
+ position: [number, number, number];
2598
+ rotation: number;
2599
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
2600
+ barrelRise?: number | undefined;
2601
+ barrelSegments?: number | undefined;
2602
+ roofSystem?: "glazed" | "standard" | undefined;
2603
+ glazing?: {
2604
+ across: {
2605
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
2606
+ count: number;
2607
+ spacing: number;
2608
+ alignment: "center" | "end" | "start";
2682
2609
  };
2683
- fallback: [number, number, number];
2684
- } | [number, number, number])[];
2685
- baseline: {
2686
- origin: [number, number];
2687
- direction: [number, number];
2610
+ along: {
2611
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
2612
+ count: number;
2613
+ spacing: number;
2614
+ alignment: "center" | "end" | "start";
2615
+ };
2616
+ frameWidth: number;
2617
+ frameDepth: number;
2618
+ glassThickness: number;
2619
+ frameColor: string;
2620
+ glassColor: string;
2621
+ glassOpacity: number;
2622
+ glassRoughness: number;
2623
+ glazedEnds: boolean;
2624
+ panelType: "empty" | "glass" | "solid";
2625
+ panels: {
2626
+ face: string;
2627
+ column: number;
2628
+ row: number;
2629
+ type: "empty" | "glass" | "solid";
2630
+ }[];
2631
+ } | undefined;
2632
+ slots?: Record<string, string> | undefined;
2633
+ width: number;
2634
+ depth: number;
2635
+ conicalStartAngle?: number | undefined;
2636
+ conicalSweepAngle?: number | undefined;
2637
+ conicalFullCircle?: boolean | undefined;
2638
+ trim: {
2639
+ left: number;
2640
+ right: number;
2641
+ front: number;
2642
+ back: number;
2643
+ frontLeft: number;
2644
+ frontRight: number;
2645
+ backLeft: number;
2646
+ backRight: number;
2647
+ frontLeftX: number;
2648
+ frontLeftZ: number;
2649
+ frontRightX: number;
2650
+ frontRightZ: number;
2651
+ backLeftX: number;
2652
+ backLeftZ: number;
2653
+ backRightX: number;
2654
+ backRightZ: number;
2688
2655
  };
2689
- chainMode: "continuous" | "point-to-point";
2690
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2691
- featureCount: number;
2692
- showCenterMark: boolean;
2693
- prefix: string;
2694
- suffix: string;
2695
- textOverride: string | null;
2696
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2697
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2698
- textPosition: "above" | "centered";
2699
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2700
- metricNotation: "meters" | "millimeters";
2701
- extensionStartGap: number;
2702
- extensionOvershoot: number;
2703
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2704
- drawingOverrides: {
2705
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2706
- presentation: "controlled" | "omit" | "shown";
2707
- suppressedSegmentIndexes: number[];
2708
- }[];
2709
- controllingDimensionId: `construction-dimension_${string}` | null;
2710
- type: "construction-dimension";
2711
- } | {
2712
- object: "node";
2713
- name?: string | undefined;
2714
- parentId: string | null;
2715
- visible: boolean;
2716
- camera?: {
2656
+ wallHeight: number;
2657
+ pitch: number;
2658
+ wallThickness: number;
2659
+ deckThickness: number;
2660
+ overhang: number;
2661
+ gableOverhang?: number | undefined;
2662
+ shingleThickness: number;
2663
+ buildUp?: {
2664
+ presetId?: string | undefined;
2665
+ roofing: {
2666
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
2667
+ thickness: number;
2668
+ name?: string | undefined;
2669
+ };
2670
+ underlayment?: {
2671
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
2672
+ thickness: number;
2673
+ name?: string | undefined;
2674
+ } | undefined;
2675
+ sheathing: {
2676
+ kind: "osb" | "plywood";
2677
+ thickness: number;
2678
+ name?: string | undefined;
2679
+ };
2680
+ structure: {
2681
+ system: "rafters" | "trusses";
2682
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2683
+ spacing: number;
2684
+ };
2685
+ insulation?: {
2686
+ kind: "batt" | "blown" | "rigid";
2687
+ thickness: number;
2688
+ name?: string | undefined;
2689
+ } | undefined;
2690
+ finish?: {
2691
+ kind: "drywall" | "plaster" | "wood-plank";
2692
+ thickness: number;
2693
+ name?: string | undefined;
2694
+ } | undefined;
2695
+ } | undefined;
2696
+ arc?: {
2697
+ centerX: number;
2698
+ centerZ: number;
2699
+ radius: number;
2700
+ } | undefined;
2701
+ shedSideInfillSpan?: number | undefined;
2702
+ shedSideInfillMinX?: number | undefined;
2703
+ shedSideInfillMaxX?: number | undefined;
2704
+ shedFootprintPieces?: [number, number][][] | undefined;
2705
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
2706
+ shedJointFrame?: {
2717
2707
  position: [number, number, number];
2718
- target: [number, number, number];
2719
- mode: "orthographic" | "perspective";
2720
- fov?: number | undefined;
2721
- zoom?: number | undefined;
2708
+ rotation: number;
2722
2709
  } | undefined;
2723
- metadata: Record<string, unknown>;
2724
- provenance?: {
2725
- refs: {
2726
- ns?: string | undefined;
2727
- id: string;
2728
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2729
- }[];
2730
- lineage?: {
2731
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2732
- fromIds: string[];
2710
+ shedJointOwnerId?: string | undefined;
2711
+ shedJointNeighborIds?: string[] | undefined;
2712
+ shedJointScopeId?: string | undefined;
2713
+ managedByParent: boolean;
2714
+ wallShell: "auto" | "include" | "omit";
2715
+ shedInsetEndPanels: boolean;
2716
+ fascia?: boolean | undefined;
2717
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
2718
+ fasciaHighEdge?: boolean | undefined;
2719
+ fasciaHeight?: number | undefined;
2720
+ fasciaDepth?: number | undefined;
2721
+ fasciaMaterial?: {
2722
+ id?: string | undefined;
2723
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2724
+ properties?: {
2725
+ color: string;
2726
+ roughness: number;
2727
+ metalness: number;
2728
+ opacity: number;
2729
+ transparent: boolean;
2730
+ side: "back" | "double" | "front";
2731
+ } | undefined;
2732
+ texture?: {
2733
+ url: string;
2734
+ repeat?: [number, number] | undefined;
2735
+ scale?: number | undefined;
2736
+ offset?: [number, number] | undefined;
2737
+ normalMap?: string | undefined;
2738
+ normalScale?: number | undefined;
2739
+ bumpMap?: string | undefined;
2740
+ bumpScale?: number | undefined;
2733
2741
  } | undefined;
2734
2742
  } | undefined;
2735
- id: `site_${string}`;
2736
- polygon: {
2737
- type: "polygon";
2738
- points: [number, number][];
2739
- };
2740
- terrain?: {
2741
- type: "heightfield";
2742
- origin: [number, number];
2743
- spacing: number;
2744
- cols: number;
2745
- rows: number;
2746
- step: number;
2747
- heights: string;
2748
- } | undefined;
2749
- showGround?: boolean | undefined;
2750
- presentation?: {
2751
- theme?: string | undefined;
2752
- exposure?: number | undefined;
2753
- shading?: "rendered" | "solid" | undefined;
2754
- edges?: "off" | "soft" | "strong" | undefined;
2755
- shadows?: boolean | undefined;
2756
- lighting?: {
2757
- background?: string | undefined;
2758
- backgroundSky?: string | null | undefined;
2759
- ground?: string | undefined;
2760
- ambient?: {
2761
- color: string;
2762
- intensity: number;
2763
- } | undefined;
2764
- hemi?: {
2765
- sky: string;
2766
- ground: string;
2767
- intensity: number;
2768
- } | undefined;
2769
- lights?: {
2770
- color: string;
2771
- intensity: number;
2772
- position: [number, number, number];
2773
- target?: [number, number, number] | undefined;
2774
- castShadow?: boolean | undefined;
2775
- shadow?: {
2776
- intensity?: number | undefined;
2777
- bias?: number | undefined;
2778
- normalBias?: number | undefined;
2779
- radius?: number | undefined;
2780
- mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
2781
- camera?: {
2782
- left: number;
2783
- right: number;
2784
- top: number;
2785
- bottom: number;
2786
- near: number;
2787
- far: number;
2788
- } | undefined;
2789
- } | undefined;
2790
- }[] | undefined;
2791
- environment?: {
2792
- source: "gradient" | "none" | "room";
2793
- intensity: number;
2794
- } | undefined;
2795
- } | undefined;
2796
- postprocessing?: {
2797
- ambientOcclusion?: boolean | undefined;
2798
- colorGrading?: boolean | undefined;
2743
+ fasciaMaterialPreset?: string | undefined;
2744
+ heelMaterial?: {
2745
+ id?: string | undefined;
2746
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2747
+ properties?: {
2748
+ color: string;
2749
+ roughness: number;
2750
+ metalness: number;
2751
+ opacity: number;
2752
+ transparent: boolean;
2753
+ side: "back" | "double" | "front";
2799
2754
  } | undefined;
2800
- display?: {
2801
- mode?: "construction" | "finished" | "systems" | undefined;
2802
- families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
2803
- disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
2804
- xray?: boolean | undefined;
2805
- colorBy?: "material" | "service" | undefined;
2755
+ texture?: {
2756
+ url: string;
2757
+ repeat?: [number, number] | undefined;
2758
+ scale?: number | undefined;
2759
+ offset?: [number, number] | undefined;
2760
+ normalMap?: string | undefined;
2761
+ normalScale?: number | undefined;
2762
+ bumpMap?: string | undefined;
2763
+ bumpScale?: number | undefined;
2806
2764
  } | undefined;
2807
2765
  } | undefined;
2808
- address?: {
2809
- street?: string | undefined;
2810
- city?: string | undefined;
2811
- state?: string | undefined;
2812
- zip?: string | undefined;
2813
- } | undefined;
2814
- parcel?: {
2815
- apn?: string | undefined;
2816
- source?: string | undefined;
2817
- county?: string | undefined;
2818
- state?: string | undefined;
2819
- lotAreaSqFt?: number | undefined;
2820
- originLngLat?: [number, number] | undefined;
2821
- resolvedAt?: string | undefined;
2822
- layer?: string | undefined;
2823
- notes?: string[] | undefined;
2824
- } | undefined;
2825
- setbacks?: {
2826
- front: number;
2827
- side: number;
2828
- rear: number;
2829
- left?: number | undefined;
2830
- right?: number | undefined;
2831
- streetSide?: number | undefined;
2832
- } | undefined;
2833
- setbacksSource?: string | undefined;
2834
- zone?: string | undefined;
2835
- frontEdge?: number | undefined;
2836
- streetEdges?: number[] | undefined;
2837
- sightTriangleFt?: number | undefined;
2838
- northRotation?: number | undefined;
2839
- dossier?: {
2840
- [x: string]: unknown;
2841
- provider: string;
2842
- asOf: string;
2843
- point?: {
2844
- lat?: number | undefined;
2845
- lng?: number | undefined;
2846
- source?: string | undefined;
2766
+ heelMaterialPreset?: string | undefined;
2767
+ gableLeftMaterial?: {
2768
+ id?: string | undefined;
2769
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2770
+ properties?: {
2771
+ color: string;
2772
+ roughness: number;
2773
+ metalness: number;
2774
+ opacity: number;
2775
+ transparent: boolean;
2776
+ side: "back" | "double" | "front";
2847
2777
  } | undefined;
2848
- address?: {
2849
- formatted?: string | undefined;
2850
- precision?: string | undefined;
2778
+ texture?: {
2779
+ url: string;
2780
+ repeat?: [number, number] | undefined;
2781
+ scale?: number | undefined;
2782
+ offset?: [number, number] | undefined;
2783
+ normalMap?: string | undefined;
2784
+ normalScale?: number | undefined;
2785
+ bumpMap?: string | undefined;
2786
+ bumpScale?: number | undefined;
2851
2787
  } | undefined;
2852
- sections: Record<string, {
2853
- [x: string]: unknown;
2854
- status: string;
2855
- summary?: string | undefined;
2856
- reason?: string | undefined;
2857
- source?: {
2858
- name?: string | undefined;
2859
- kind?: string | undefined;
2860
- vintage?: string | undefined;
2861
- attribution?: string | undefined;
2862
- } | undefined;
2863
- }>;
2864
- parcel?: Record<string, unknown> | undefined;
2865
- flood?: Record<string, unknown> | undefined;
2866
- codeBasis?: Record<string, unknown> | undefined;
2867
- zoning?: Record<string, unknown> | undefined;
2868
- utilities?: Record<string, unknown> | undefined;
2869
- soils?: Record<string, unknown> | undefined;
2870
- wetlands?: Record<string, unknown> | undefined;
2871
- structures?: Record<string, unknown> | undefined;
2872
- elevation?: Record<string, unknown> | undefined;
2873
- boundaries?: Record<string, unknown> | undefined;
2874
2788
  } | undefined;
2875
- contourIntervalIn?: number | undefined;
2876
- contours3d?: boolean | undefined;
2877
- terrainContours?: {
2878
- datum: string;
2879
- intervalFt: number;
2880
- source?: string | undefined;
2881
- lines: {
2882
- elevationFt: number;
2883
- points: [number, number][];
2884
- }[];
2789
+ gableLeftMaterialPreset?: string | undefined;
2790
+ gableRightMaterial?: {
2791
+ id?: string | undefined;
2792
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2793
+ properties?: {
2794
+ color: string;
2795
+ roughness: number;
2796
+ metalness: number;
2797
+ opacity: number;
2798
+ transparent: boolean;
2799
+ side: "back" | "double" | "front";
2800
+ } | undefined;
2801
+ texture?: {
2802
+ url: string;
2803
+ repeat?: [number, number] | undefined;
2804
+ scale?: number | undefined;
2805
+ offset?: [number, number] | undefined;
2806
+ normalMap?: string | undefined;
2807
+ normalScale?: number | undefined;
2808
+ bumpMap?: string | undefined;
2809
+ bumpScale?: number | undefined;
2810
+ } | undefined;
2885
2811
  } | undefined;
2886
- wallTypes?: {
2887
- id: string;
2888
- label: string;
2889
- assembly: {
2890
- layers: {
2891
- id: string;
2892
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2893
- thickness: number;
2894
- core?: true | undefined;
2895
- spacing?: number | undefined;
2896
- material?: string | undefined;
2897
- slot?: string | undefined;
2898
- returns?: boolean | undefined;
2899
- display?: "construction" | "finished" | undefined;
2900
- inset?: number | undefined;
2901
- bottom?: number | undefined;
2902
- lift?: number | undefined;
2903
- src?: string | undefined;
2904
- }[];
2905
- backing?: {
2906
- id: string;
2907
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2908
- thickness: number;
2909
- core?: true | undefined;
2910
- spacing?: number | undefined;
2911
- material?: string | undefined;
2912
- slot?: string | undefined;
2913
- returns?: boolean | undefined;
2914
- display?: "construction" | "finished" | undefined;
2915
- inset?: number | undefined;
2916
- bottom?: number | undefined;
2917
- lift?: number | undefined;
2918
- src?: string | undefined;
2919
- }[] | undefined;
2920
- face?: "exterior" | "front" | undefined;
2921
- presetId?: string | undefined;
2922
- cavityInsulation?: string | undefined;
2923
- };
2924
- }[] | undefined;
2812
+ gableRightMaterialPreset?: string | undefined;
2813
+ gambrelLowerWidthRatio: number;
2814
+ gambrelLowerHeightRatio: number;
2815
+ mansardSteepWidthRatio: number;
2816
+ mansardSteepHeightRatio: number;
2817
+ dutchHipWidthRatio: number;
2818
+ dutchHipHeightRatio: number;
2819
+ dutchWaistLengthRatio: number;
2820
+ dutchGabletRake: number;
2821
+ dutchTopRakeThickness: number;
2925
2822
  children: string[];
2926
- type: "site";
2823
+ type: "roof-segment";
2927
2824
  } | {
2928
2825
  object: "node";
2929
2826
  name?: string | undefined;
@@ -2948,7 +2845,141 @@ export declare function floorStepFixture(separator?: boolean): {
2948
2845
  fromIds: string[];
2949
2846
  } | undefined;
2950
2847
  } | undefined;
2951
- id: `door_${string}`;
2848
+ id: `separator_${string}`;
2849
+ start: [number, number];
2850
+ end: [number, number];
2851
+ type: "separator";
2852
+ } | {
2853
+ object: "node";
2854
+ name?: string | undefined;
2855
+ parentId: string | null;
2856
+ visible: boolean;
2857
+ camera?: {
2858
+ position: [number, number, number];
2859
+ target: [number, number, number];
2860
+ mode: "orthographic" | "perspective";
2861
+ fov?: number | undefined;
2862
+ zoom?: number | undefined;
2863
+ } | undefined;
2864
+ metadata: Record<string, unknown>;
2865
+ provenance?: {
2866
+ refs: {
2867
+ ns?: string | undefined;
2868
+ id: string;
2869
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2870
+ }[];
2871
+ lineage?: {
2872
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2873
+ fromIds: string[];
2874
+ } | undefined;
2875
+ } | undefined;
2876
+ id: `spawn_${string}`;
2877
+ position: [number, number, number];
2878
+ rotation: number;
2879
+ supportSlabId?: string | undefined;
2880
+ type: "spawn";
2881
+ } | {
2882
+ object: "node";
2883
+ name?: string | undefined;
2884
+ parentId: string | null;
2885
+ visible: boolean;
2886
+ camera?: {
2887
+ position: [number, number, number];
2888
+ target: [number, number, number];
2889
+ mode: "orthographic" | "perspective";
2890
+ fov?: number | undefined;
2891
+ zoom?: number | undefined;
2892
+ } | undefined;
2893
+ metadata: Record<string, unknown>;
2894
+ provenance?: {
2895
+ refs: {
2896
+ ns?: string | undefined;
2897
+ id: string;
2898
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2899
+ }[];
2900
+ lineage?: {
2901
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2902
+ fromIds: string[];
2903
+ } | undefined;
2904
+ } | undefined;
2905
+ id: `sseg_${string}`;
2906
+ material?: {
2907
+ id?: string | undefined;
2908
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2909
+ properties?: {
2910
+ color: string;
2911
+ roughness: number;
2912
+ metalness: number;
2913
+ opacity: number;
2914
+ transparent: boolean;
2915
+ side: "back" | "double" | "front";
2916
+ } | undefined;
2917
+ texture?: {
2918
+ url: string;
2919
+ repeat?: [number, number] | undefined;
2920
+ scale?: number | undefined;
2921
+ offset?: [number, number] | undefined;
2922
+ normalMap?: string | undefined;
2923
+ normalScale?: number | undefined;
2924
+ bumpMap?: string | undefined;
2925
+ bumpScale?: number | undefined;
2926
+ } | undefined;
2927
+ } | undefined;
2928
+ materialPreset?: string | undefined;
2929
+ slots?: Record<string, string> | undefined;
2930
+ position: [number, number, number];
2931
+ rotation: number;
2932
+ segmentType: "landing" | "stair";
2933
+ width: number;
2934
+ length: number;
2935
+ height: number;
2936
+ stepCount: number;
2937
+ attachmentSide: "front" | "left" | "right";
2938
+ fillToFloor: boolean;
2939
+ construction?: {
2940
+ mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
2941
+ waistThickness: number;
2942
+ treadThickness: number;
2943
+ riserThickness: number;
2944
+ nosing: number;
2945
+ finishThickness: number;
2946
+ closedRisers: boolean;
2947
+ stringerWidth: number;
2948
+ stringerDepth: number;
2949
+ } | undefined;
2950
+ winder?: {
2951
+ turn: "left" | "right";
2952
+ innerGap: number;
2953
+ walkingLineOffset: number;
2954
+ division: "equal-angle" | "equal-going";
2955
+ } | undefined;
2956
+ thickness: number;
2957
+ type: "stair-segment";
2958
+ } | {
2959
+ object: "node";
2960
+ name?: string | undefined;
2961
+ parentId: string | null;
2962
+ visible: boolean;
2963
+ camera?: {
2964
+ position: [number, number, number];
2965
+ target: [number, number, number];
2966
+ mode: "orthographic" | "perspective";
2967
+ fov?: number | undefined;
2968
+ zoom?: number | undefined;
2969
+ } | undefined;
2970
+ metadata: Record<string, unknown>;
2971
+ provenance?: {
2972
+ refs: {
2973
+ ns?: string | undefined;
2974
+ id: string;
2975
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2976
+ }[];
2977
+ lineage?: {
2978
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2979
+ fromIds: string[];
2980
+ } | undefined;
2981
+ } | undefined;
2982
+ id: `window_${string}`;
2952
2983
  material?: {
2953
2984
  id?: string | undefined;
2954
2985
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -3092,14 +3123,12 @@ export declare function floorStepFixture(separator?: boolean): {
3092
3123
  verticalAnchor?: "floor" | "wall" | undefined;
3093
3124
  floorThresholdVersion: 0 | 1;
3094
3125
  wallId?: string | undefined;
3126
+ dormerId?: string | undefined;
3127
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
3095
3128
  roofSegmentId?: string | undefined;
3096
3129
  roofFace?: "back" | "front" | "left" | "right" | undefined;
3097
3130
  width: number;
3098
3131
  height: number;
3099
- sidelightLeft?: number | undefined;
3100
- sidelightRight?: number | undefined;
3101
- transomHeight?: number | undefined;
3102
- slidingStyle?: "bypass" | "patio" | undefined;
3103
3132
  mark?: string | undefined;
3104
3133
  constructionType: "framed" | "masonry";
3105
3134
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -3109,49 +3138,52 @@ export declare function floorStepFixture(separator?: boolean): {
3109
3138
  masonryOpeningHeight?: number | undefined;
3110
3139
  finishOpeningWidth?: number | undefined;
3111
3140
  finishOpeningHeight?: number | undefined;
3112
- doorCategory: "garage" | "interior";
3113
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
3114
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
3141
+ openingKind: "opening" | "window";
3142
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
3115
3143
  operationState: number;
3116
- slideDirection: "left" | "right";
3117
- trackStyle: "none" | "overhead" | "pocket" | "visible";
3118
- garagePanelCount: number;
3119
- openingKind: "door" | "opening";
3144
+ openingDirection?: "inward" | "outward" | undefined;
3145
+ tiltTurnMode?: "tilt" | "turn" | undefined;
3146
+ awningDirection: "down" | "up";
3147
+ casementStyle: "french" | "single";
3148
+ hingesSide: "left" | "right";
3120
3149
  openingShape: "arch" | "rectangle" | "rounded";
3121
3150
  openingRadiusMode: "all" | "individual";
3122
- openingTopRadii: [number, number];
3151
+ openingCornerRadii: [number, number, number, number];
3123
3152
  cornerRadius: number;
3124
3153
  archHeight: number;
3125
3154
  openingRevealRadius: number;
3126
3155
  frameThickness: number;
3127
3156
  frameDepth?: number | undefined;
3128
- threshold: boolean;
3129
- thresholdHeight: number;
3157
+ windowHandle?: boolean | undefined;
3158
+ sashGrid?: boolean | undefined;
3159
+ columnRatios: number[];
3160
+ rowRatios: number[];
3161
+ columnDividerThickness: number;
3162
+ rowDividerThickness: number;
3163
+ corner?: {
3164
+ end: "end" | "start";
3165
+ partnerId: string;
3166
+ post: "none" | "post";
3167
+ } | undefined;
3168
+ sill: boolean;
3169
+ sillDepth: number;
3170
+ sillThickness: number;
3171
+ sillOverhang?: number | undefined;
3172
+ sillInterior?: boolean | undefined;
3173
+ sillInteriorDepth?: number | undefined;
3174
+ sillInteriorThickness?: number | undefined;
3175
+ sillInteriorOverhang?: number | undefined;
3176
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
3177
+ shutterWidth?: number | undefined;
3178
+ shutterOpen?: number | undefined;
3179
+ shutterSides?: "both" | "left" | "right" | undefined;
3180
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
3181
+ rollerShutterBoxHeight?: number | undefined;
3182
+ rollerShutterOpen?: number | undefined;
3130
3183
  casingFaceA?: boolean | undefined;
3131
3184
  casingFaceB?: boolean | undefined;
3132
3185
  casingWidth?: number | undefined;
3133
- hingesSide: "left" | "right";
3134
- swingDirection: "inward" | "outward";
3135
- swingAngle: number;
3136
- segments: {
3137
- type: "empty" | "glass" | "panel";
3138
- heightRatio: number;
3139
- columnRatios: number[];
3140
- dividerThickness: number;
3141
- panelDepth: number;
3142
- panelInset: number;
3143
- }[];
3144
- handle: boolean;
3145
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
3146
- handleHeight: number;
3147
- handleSide: "left" | "right";
3148
- contentPadding: [number, number];
3149
- doorCloser: boolean;
3150
- panicBar: boolean;
3151
- panicBarStyle: "crossbar" | "touchbar";
3152
- panicBarRods: boolean;
3153
- panicBarHeight: number;
3154
- type: "door";
3186
+ type: "window";
3155
3187
  } | {
3156
3188
  object: "node";
3157
3189
  name?: string | undefined;
@@ -3176,29 +3208,20 @@ export declare function floorStepFixture(separator?: boolean): {
3176
3208
  fromIds: string[];
3177
3209
  } | undefined;
3178
3210
  } | undefined;
3179
- id: `window_${string}`;
3180
- material?: {
3181
- id?: string | undefined;
3182
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3183
- properties?: {
3184
- color: string;
3185
- roughness: number;
3186
- metalness: number;
3187
- opacity: number;
3188
- transparent: boolean;
3189
- side: "back" | "double" | "front";
3190
- } | undefined;
3191
- texture?: {
3192
- url: string;
3193
- repeat?: [number, number] | undefined;
3194
- scale?: number | undefined;
3195
- offset?: [number, number] | undefined;
3196
- normalMap?: string | undefined;
3197
- normalScale?: number | undefined;
3198
- bumpMap?: string | undefined;
3199
- bumpScale?: number | undefined;
3200
- } | undefined;
3201
- } | undefined;
3211
+ type: "item";
3212
+ id: `item_${string}`;
3213
+ position: [number, number, number];
3214
+ rotation: [number, number, number];
3215
+ scale: [number, number, number];
3216
+ side?: "back" | "front" | undefined;
3217
+ children: string[];
3218
+ wallId?: string | undefined;
3219
+ wallT?: number | undefined;
3220
+ roofSegmentId?: string | undefined;
3221
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
3222
+ blockFaceId?: string | undefined;
3223
+ supportSlabId?: string | undefined;
3224
+ collectionIds?: `collection_${string}`[] | undefined;
3202
3225
  slots?: Record<string, string> | undefined;
3203
3226
  source?: {
3204
3227
  kind: "script";
@@ -3314,73 +3337,76 @@ export declare function floorStepFixture(separator?: boolean): {
3314
3337
  floorPlan: string;
3315
3338
  } | undefined;
3316
3339
  } | undefined;
3317
- position: [number, number, number];
3318
- rotation: [number, number, number];
3319
- side?: "back" | "front" | undefined;
3320
- verticalAnchor?: "floor" | "wall" | undefined;
3321
- floorThresholdVersion: 0 | 1;
3322
- wallId?: string | undefined;
3323
- dormerId?: string | undefined;
3324
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
3325
- roofSegmentId?: string | undefined;
3326
- roofFace?: "back" | "front" | "left" | "right" | undefined;
3327
- width: number;
3328
- height: number;
3329
- mark?: string | undefined;
3330
- constructionType: "framed" | "masonry";
3331
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3332
- roughOpeningWidth?: number | undefined;
3333
- roughOpeningHeight?: number | undefined;
3334
- masonryOpeningWidth?: number | undefined;
3335
- masonryOpeningHeight?: number | undefined;
3336
- finishOpeningWidth?: number | undefined;
3337
- finishOpeningHeight?: number | undefined;
3338
- openingKind: "opening" | "window";
3339
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
3340
- operationState: number;
3341
- openingDirection?: "inward" | "outward" | undefined;
3342
- tiltTurnMode?: "tilt" | "turn" | undefined;
3343
- awningDirection: "down" | "up";
3344
- casementStyle: "french" | "single";
3345
- hingesSide: "left" | "right";
3346
- openingShape: "arch" | "rectangle" | "rounded";
3347
- openingRadiusMode: "all" | "individual";
3348
- openingCornerRadii: [number, number, number, number];
3349
- cornerRadius: number;
3350
- archHeight: number;
3351
- openingRevealRadius: number;
3352
- frameThickness: number;
3353
- frameDepth?: number | undefined;
3354
- windowHandle?: boolean | undefined;
3355
- sashGrid?: boolean | undefined;
3356
- columnRatios: number[];
3357
- rowRatios: number[];
3358
- columnDividerThickness: number;
3359
- rowDividerThickness: number;
3360
- corner?: {
3361
- end: "end" | "start";
3362
- partnerId: string;
3363
- post: "none" | "post";
3364
- } | undefined;
3365
- sill: boolean;
3366
- sillDepth: number;
3367
- sillThickness: number;
3368
- sillOverhang?: number | undefined;
3369
- sillInterior?: boolean | undefined;
3370
- sillInteriorDepth?: number | undefined;
3371
- sillInteriorThickness?: number | undefined;
3372
- sillInteriorOverhang?: number | undefined;
3373
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
3374
- shutterWidth?: number | undefined;
3375
- shutterOpen?: number | undefined;
3376
- shutterSides?: "both" | "left" | "right" | undefined;
3377
- rollerShutter?: "box" | "concealed" | "none" | undefined;
3378
- rollerShutterBoxHeight?: number | undefined;
3379
- rollerShutterOpen?: number | undefined;
3380
- casingFaceA?: boolean | undefined;
3381
- casingFaceB?: boolean | undefined;
3382
- casingWidth?: number | undefined;
3383
- type: "window";
3340
+ asset: {
3341
+ id: string;
3342
+ category: string;
3343
+ name: string;
3344
+ thumbnail: string;
3345
+ floorPlanUrl?: string | undefined;
3346
+ source: "community" | "library" | "mine";
3347
+ isDraft?: boolean | undefined;
3348
+ src: string;
3349
+ dimensions: [number, number, number];
3350
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
3351
+ recessed?: boolean | undefined;
3352
+ tags?: string[] | undefined;
3353
+ functionTags?: string[] | undefined;
3354
+ offset: [number, number, number];
3355
+ rotation: [number, number, number];
3356
+ scale: [number, number, number];
3357
+ surface?: {
3358
+ height: number;
3359
+ } | undefined;
3360
+ interactive?: {
3361
+ controls: ({
3362
+ kind: "toggle";
3363
+ label?: string | undefined;
3364
+ default?: boolean | undefined;
3365
+ } | {
3366
+ kind: "slider";
3367
+ label: string;
3368
+ min: number;
3369
+ max: number;
3370
+ step: number;
3371
+ unit?: string | undefined;
3372
+ displayMode: "dial" | "slider" | "stepper";
3373
+ default?: number | undefined;
3374
+ } | {
3375
+ kind: "temperature";
3376
+ label: string;
3377
+ min: number;
3378
+ max: number;
3379
+ unit: "C" | "F";
3380
+ default?: number | undefined;
3381
+ })[];
3382
+ effects: ({
3383
+ kind: "animation";
3384
+ mode?: "ambient" | "open-close" | undefined;
3385
+ control?: number | undefined;
3386
+ clips: {
3387
+ on?: string | undefined;
3388
+ off?: string | undefined;
3389
+ loop?: string | undefined;
3390
+ };
3391
+ } | {
3392
+ kind: "light";
3393
+ color: string;
3394
+ intensityRange: [number, number];
3395
+ distance?: number | undefined;
3396
+ offset: [number, number, number];
3397
+ spot?: {
3398
+ direction: [number, number, number];
3399
+ angle: number;
3400
+ softness: number;
3401
+ } | undefined;
3402
+ shadows?: boolean | undefined;
3403
+ glow?: {
3404
+ size: number;
3405
+ strength: number;
3406
+ } | undefined;
3407
+ })[];
3408
+ } | undefined;
3409
+ };
3384
3410
  } | {
3385
3411
  object: "node";
3386
3412
  name?: string | undefined;
@@ -3405,11 +3431,30 @@ export declare function floorStepFixture(separator?: boolean): {
3405
3431
  fromIds: string[];
3406
3432
  } | undefined;
3407
3433
  } | undefined;
3408
- id: `column_${string}`;
3409
- children: string[];
3410
- position: [number, number, number];
3411
- rotation: number;
3412
- supportSlabId?: string | undefined;
3434
+ id: `door_${string}`;
3435
+ material?: {
3436
+ id?: string | undefined;
3437
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3438
+ properties?: {
3439
+ color: string;
3440
+ roughness: number;
3441
+ metalness: number;
3442
+ opacity: number;
3443
+ transparent: boolean;
3444
+ side: "back" | "double" | "front";
3445
+ } | undefined;
3446
+ texture?: {
3447
+ url: string;
3448
+ repeat?: [number, number] | undefined;
3449
+ scale?: number | undefined;
3450
+ offset?: [number, number] | undefined;
3451
+ normalMap?: string | undefined;
3452
+ normalScale?: number | undefined;
3453
+ bumpMap?: string | undefined;
3454
+ bumpScale?: number | undefined;
3455
+ } | undefined;
3456
+ } | undefined;
3457
+ slots?: Record<string, string> | undefined;
3413
3458
  source?: {
3414
3459
  kind: "script";
3415
3460
  meta?: {
@@ -3524,104 +3569,72 @@ export declare function floorStepFixture(separator?: boolean): {
3524
3569
  floorPlan: string;
3525
3570
  } | undefined;
3526
3571
  } | undefined;
3527
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
3528
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
3529
- height: number;
3530
- radius: number;
3572
+ position: [number, number, number];
3573
+ rotation: [number, number, number];
3574
+ side?: "back" | "front" | undefined;
3575
+ verticalAnchor?: "floor" | "wall" | undefined;
3576
+ floorThresholdVersion: 0 | 1;
3577
+ wallId?: string | undefined;
3578
+ roofSegmentId?: string | undefined;
3579
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
3531
3580
  width: number;
3532
- depth: number;
3533
- edgeSoftness: number;
3534
- baseHeight: number;
3535
- capitalHeight: number;
3536
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
3537
- shaftTaper: number;
3538
- shaftBulge: number;
3539
- shaftStartScale: number;
3540
- shaftEndScale: number;
3541
- shaftSegmentCount: number;
3542
- shaftTwistStep: number;
3543
- shaftCornerRadius: number;
3544
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
3545
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
3546
- baseWidthScale: number;
3547
- baseDepthScale: number;
3548
- baseTierCount: number;
3549
- baseStepSpread: number;
3550
- basePlinthHeightRatio: number;
3551
- baseRoundBandScale: number;
3552
- baseNeckScale: number;
3553
- baseRoundBandCount: number;
3554
- baseRibCount: number;
3555
- baseCarvingLevel: number;
3556
- basePanelInset: number;
3557
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
3558
- capitalWidthScale: number;
3559
- capitalDepthScale: number;
3560
- capitalTierCount: number;
3561
- capitalStepSpread: number;
3562
- capitalBandCount: number;
3563
- voluteSize: number;
3564
- voluteCount: number;
3565
- leafCount: number;
3566
- leafRows: number;
3567
- bracketDepth: number;
3568
- bracketTierCount: number;
3569
- pendantCount: number;
3570
- capitalCarvingLevel: number;
3571
- ringCount: number;
3572
- ringPlacement: "bottom" | "ends" | "even" | "top";
3573
- ringThickness: number;
3574
- ringSpread: number;
3575
- fluteCount: number;
3576
- fluteDepth: number;
3577
- fluteWidth: number;
3578
- spiralTwist: number;
3579
- spiralRibCount: number;
3580
- panelCount: number;
3581
- panelInsetDepth: number;
3582
- panelShape: "arched" | "diamond" | "rectangle";
3583
- latheRingCount: number;
3584
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
3585
- carvingLevel: number;
3586
- carvingPlacement: "all" | "base" | "capital" | "shaft";
3587
- lowerBandEnabled: boolean;
3588
- lowerBandHeight: number;
3589
- lowerBandCarvingLevel: number;
3590
- dentilCount: number;
3591
- beadCount: number;
3592
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
3593
- braceWidth: number;
3594
- braceDepth: number;
3595
- braceBottomSpread: number;
3596
- braceTopSpread: number;
3597
- bracePlateEnabled: boolean;
3598
- role?: "ornament" | "post" | undefined;
3599
- postBase?: "none" | "pier" | "post-base" | undefined;
3600
- material?: {
3601
- id?: string | undefined;
3602
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3603
- properties?: {
3604
- color: string;
3605
- roughness: number;
3606
- metalness: number;
3607
- opacity: number;
3608
- transparent: boolean;
3609
- side: "back" | "double" | "front";
3610
- } | undefined;
3611
- texture?: {
3612
- url: string;
3613
- repeat?: [number, number] | undefined;
3614
- scale?: number | undefined;
3615
- offset?: [number, number] | undefined;
3616
- normalMap?: string | undefined;
3617
- normalScale?: number | undefined;
3618
- bumpMap?: string | undefined;
3619
- bumpScale?: number | undefined;
3620
- } | undefined;
3621
- } | undefined;
3622
- materialPreset?: string | undefined;
3623
- slots?: Record<string, string> | undefined;
3624
- type: "column";
3581
+ height: number;
3582
+ sidelightLeft?: number | undefined;
3583
+ sidelightRight?: number | undefined;
3584
+ transomHeight?: number | undefined;
3585
+ slidingStyle?: "bypass" | "patio" | undefined;
3586
+ mark?: string | undefined;
3587
+ constructionType: "framed" | "masonry";
3588
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3589
+ roughOpeningWidth?: number | undefined;
3590
+ roughOpeningHeight?: number | undefined;
3591
+ masonryOpeningWidth?: number | undefined;
3592
+ masonryOpeningHeight?: number | undefined;
3593
+ finishOpeningWidth?: number | undefined;
3594
+ finishOpeningHeight?: number | undefined;
3595
+ doorCategory: "garage" | "interior";
3596
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
3597
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
3598
+ operationState: number;
3599
+ slideDirection: "left" | "right";
3600
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
3601
+ garagePanelCount: number;
3602
+ openingKind: "door" | "opening";
3603
+ openingShape: "arch" | "rectangle" | "rounded";
3604
+ openingRadiusMode: "all" | "individual";
3605
+ openingTopRadii: [number, number];
3606
+ cornerRadius: number;
3607
+ archHeight: number;
3608
+ openingRevealRadius: number;
3609
+ frameThickness: number;
3610
+ frameDepth?: number | undefined;
3611
+ threshold: boolean;
3612
+ thresholdHeight: number;
3613
+ casingFaceA?: boolean | undefined;
3614
+ casingFaceB?: boolean | undefined;
3615
+ casingWidth?: number | undefined;
3616
+ hingesSide: "left" | "right";
3617
+ swingDirection: "inward" | "outward";
3618
+ swingAngle: number;
3619
+ segments: {
3620
+ type: "empty" | "glass" | "panel";
3621
+ heightRatio: number;
3622
+ columnRatios: number[];
3623
+ dividerThickness: number;
3624
+ panelDepth: number;
3625
+ panelInset: number;
3626
+ }[];
3627
+ handle: boolean;
3628
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
3629
+ handleHeight: number;
3630
+ handleSide: "left" | "right";
3631
+ contentPadding: [number, number];
3632
+ doorCloser: boolean;
3633
+ panicBar: boolean;
3634
+ panicBarStyle: "crossbar" | "touchbar";
3635
+ panicBarRods: boolean;
3636
+ panicBarHeight: number;
3637
+ type: "door";
3625
3638
  } | {
3626
3639
  object: "node";
3627
3640
  name?: string | undefined;
@@ -3646,293 +3659,199 @@ export declare function floorStepFixture(separator?: boolean): {
3646
3659
  fromIds: string[];
3647
3660
  } | undefined;
3648
3661
  } | undefined;
3649
- id: `rseg_${string}`;
3650
- material?: {
3651
- id?: string | undefined;
3652
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3653
- properties?: {
3654
- color: string;
3655
- roughness: number;
3656
- metalness: number;
3657
- opacity: number;
3658
- transparent: boolean;
3659
- side: "back" | "double" | "front";
3660
- } | undefined;
3661
- texture?: {
3662
- url: string;
3663
- repeat?: [number, number] | undefined;
3664
- scale?: number | undefined;
3665
- offset?: [number, number] | undefined;
3666
- normalMap?: string | undefined;
3667
- normalScale?: number | undefined;
3668
- bumpMap?: string | undefined;
3669
- bumpScale?: number | undefined;
3670
- } | undefined;
3671
- } | undefined;
3672
- materialPreset?: string | undefined;
3673
- topMaterial?: {
3674
- id?: string | undefined;
3675
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3676
- properties?: {
3677
- color: string;
3678
- roughness: number;
3679
- metalness: number;
3680
- opacity: number;
3681
- transparent: boolean;
3682
- side: "back" | "double" | "front";
3683
- } | undefined;
3684
- texture?: {
3685
- url: string;
3686
- repeat?: [number, number] | undefined;
3687
- scale?: number | undefined;
3688
- offset?: [number, number] | undefined;
3689
- normalMap?: string | undefined;
3690
- normalScale?: number | undefined;
3691
- bumpMap?: string | undefined;
3692
- bumpScale?: number | undefined;
3693
- } | undefined;
3694
- } | undefined;
3695
- topMaterialPreset?: string | undefined;
3696
- edgeMaterial?: {
3697
- id?: string | undefined;
3698
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3699
- properties?: {
3700
- color: string;
3701
- roughness: number;
3702
- metalness: number;
3703
- opacity: number;
3704
- transparent: boolean;
3705
- side: "back" | "double" | "front";
3706
- } | undefined;
3707
- texture?: {
3708
- url: string;
3709
- repeat?: [number, number] | undefined;
3710
- scale?: number | undefined;
3711
- offset?: [number, number] | undefined;
3712
- normalMap?: string | undefined;
3713
- normalScale?: number | undefined;
3714
- bumpMap?: string | undefined;
3715
- bumpScale?: number | undefined;
3716
- } | undefined;
3717
- } | undefined;
3718
- edgeMaterialPreset?: string | undefined;
3719
- wallMaterial?: {
3720
- id?: string | undefined;
3721
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3722
- properties?: {
3723
- color: string;
3724
- roughness: number;
3725
- metalness: number;
3726
- opacity: number;
3727
- transparent: boolean;
3728
- side: "back" | "double" | "front";
3729
- } | undefined;
3730
- texture?: {
3731
- url: string;
3732
- repeat?: [number, number] | undefined;
3733
- scale?: number | undefined;
3734
- offset?: [number, number] | undefined;
3735
- normalMap?: string | undefined;
3736
- normalScale?: number | undefined;
3737
- bumpMap?: string | undefined;
3738
- bumpScale?: number | undefined;
3739
- } | undefined;
3740
- } | undefined;
3741
- wallMaterialPreset?: string | undefined;
3662
+ id: `column_${string}`;
3663
+ children: string[];
3742
3664
  position: [number, number, number];
3743
3665
  rotation: number;
3744
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
3745
- barrelRise?: number | undefined;
3746
- barrelSegments?: number | undefined;
3747
- roofSystem?: "glazed" | "standard" | undefined;
3748
- glazing?: {
3749
- across: {
3750
- layout: "count" | "fixed-spacing" | "maximum-spacing";
3751
- count: number;
3752
- spacing: number;
3753
- alignment: "center" | "end" | "start";
3754
- };
3755
- along: {
3756
- layout: "count" | "fixed-spacing" | "maximum-spacing";
3757
- count: number;
3758
- spacing: number;
3759
- alignment: "center" | "end" | "start";
3760
- };
3761
- frameWidth: number;
3762
- frameDepth: number;
3763
- glassThickness: number;
3764
- frameColor: string;
3765
- glassColor: string;
3766
- glassOpacity: number;
3767
- glassRoughness: number;
3768
- glazedEnds: boolean;
3769
- panelType: "empty" | "glass" | "solid";
3770
- panels: {
3771
- face: string;
3772
- column: number;
3773
- row: number;
3774
- type: "empty" | "glass" | "solid";
3775
- }[];
3776
- } | undefined;
3777
- slots?: Record<string, string> | undefined;
3778
- width: number;
3779
- depth: number;
3780
- conicalStartAngle?: number | undefined;
3781
- conicalSweepAngle?: number | undefined;
3782
- conicalFullCircle?: boolean | undefined;
3783
- trim: {
3784
- left: number;
3785
- right: number;
3786
- front: number;
3787
- back: number;
3788
- frontLeft: number;
3789
- frontRight: number;
3790
- backLeft: number;
3791
- backRight: number;
3792
- frontLeftX: number;
3793
- frontLeftZ: number;
3794
- frontRightX: number;
3795
- frontRightZ: number;
3796
- backLeftX: number;
3797
- backLeftZ: number;
3798
- backRightX: number;
3799
- backRightZ: number;
3800
- };
3801
- wallHeight: number;
3802
- pitch: number;
3803
- wallThickness: number;
3804
- deckThickness: number;
3805
- overhang: number;
3806
- gableOverhang?: number | undefined;
3807
- shingleThickness: number;
3808
- buildUp?: {
3809
- presetId?: string | undefined;
3810
- roofing: {
3811
- kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
3812
- thickness: number;
3813
- name?: string | undefined;
3814
- };
3815
- underlayment?: {
3816
- kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
3817
- thickness: number;
3818
- name?: string | undefined;
3819
- } | undefined;
3820
- sheathing: {
3821
- kind: "osb" | "plywood";
3822
- thickness: number;
3823
- name?: string | undefined;
3824
- };
3825
- structure: {
3826
- system: "rafters" | "trusses";
3827
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3828
- spacing: number;
3829
- };
3830
- insulation?: {
3831
- kind: "batt" | "blown" | "rigid";
3832
- thickness: number;
3833
- name?: string | undefined;
3834
- } | undefined;
3835
- finish?: {
3836
- kind: "drywall" | "plaster" | "wood-plank";
3837
- thickness: number;
3838
- name?: string | undefined;
3839
- } | undefined;
3840
- } | undefined;
3841
- arc?: {
3842
- centerX: number;
3843
- centerZ: number;
3844
- radius: number;
3845
- } | undefined;
3846
- shedSideInfillSpan?: number | undefined;
3847
- shedSideInfillMinX?: number | undefined;
3848
- shedSideInfillMaxX?: number | undefined;
3849
- shedFootprintPieces?: [number, number][][] | undefined;
3850
- shedOpenEndSides?: ("left" | "right")[] | undefined;
3851
- shedJointFrame?: {
3852
- position: [number, number, number];
3853
- rotation: number;
3854
- } | undefined;
3855
- shedJointOwnerId?: string | undefined;
3856
- shedJointNeighborIds?: string[] | undefined;
3857
- shedJointScopeId?: string | undefined;
3858
- managedByParent: boolean;
3859
- wallShell: "auto" | "include" | "omit";
3860
- shedInsetEndPanels: boolean;
3861
- fascia?: boolean | undefined;
3862
- eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
3863
- fasciaHighEdge?: boolean | undefined;
3864
- fasciaHeight?: number | undefined;
3865
- fasciaDepth?: number | undefined;
3866
- fasciaMaterial?: {
3867
- id?: string | undefined;
3868
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3869
- properties?: {
3870
- color: string;
3871
- roughness: number;
3872
- metalness: number;
3873
- opacity: number;
3874
- transparent: boolean;
3875
- side: "back" | "double" | "front";
3876
- } | undefined;
3877
- texture?: {
3878
- url: string;
3879
- repeat?: [number, number] | undefined;
3880
- scale?: number | undefined;
3881
- offset?: [number, number] | undefined;
3882
- normalMap?: string | undefined;
3883
- normalScale?: number | undefined;
3884
- bumpMap?: string | undefined;
3885
- bumpScale?: number | undefined;
3886
- } | undefined;
3887
- } | undefined;
3888
- fasciaMaterialPreset?: string | undefined;
3889
- heelMaterial?: {
3890
- id?: string | undefined;
3891
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3892
- properties?: {
3893
- color: string;
3894
- roughness: number;
3895
- metalness: number;
3896
- opacity: number;
3897
- transparent: boolean;
3898
- side: "back" | "double" | "front";
3899
- } | undefined;
3900
- texture?: {
3901
- url: string;
3902
- repeat?: [number, number] | undefined;
3903
- scale?: number | undefined;
3904
- offset?: [number, number] | undefined;
3905
- normalMap?: string | undefined;
3906
- normalScale?: number | undefined;
3907
- bumpMap?: string | undefined;
3908
- bumpScale?: number | undefined;
3909
- } | undefined;
3910
- } | undefined;
3911
- heelMaterialPreset?: string | undefined;
3912
- gableLeftMaterial?: {
3913
- id?: string | undefined;
3914
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3915
- properties?: {
3916
- color: string;
3917
- roughness: number;
3918
- metalness: number;
3919
- opacity: number;
3920
- transparent: boolean;
3921
- side: "back" | "double" | "front";
3666
+ supportSlabId?: string | undefined;
3667
+ source?: {
3668
+ kind: "script";
3669
+ meta?: {
3670
+ description?: string | undefined;
3671
+ category?: string | undefined;
3672
+ tags?: string[] | undefined;
3673
+ parent?: string | undefined;
3922
3674
  } | undefined;
3923
- texture?: {
3924
- url: string;
3925
- repeat?: [number, number] | undefined;
3926
- scale?: number | undefined;
3927
- offset?: [number, number] | undefined;
3928
- normalMap?: string | undefined;
3929
- normalScale?: number | undefined;
3930
- bumpMap?: string | undefined;
3931
- bumpScale?: number | undefined;
3675
+ language: "bpy" | "three";
3676
+ script: string;
3677
+ params: Record<string, string | number | boolean>;
3678
+ artifact: string;
3679
+ manifest: {
3680
+ bounds: {
3681
+ min: [number, number, number];
3682
+ max: [number, number, number];
3683
+ };
3684
+ params: {
3685
+ id: string;
3686
+ label?: string | undefined;
3687
+ kind: "boolean" | "number" | "string";
3688
+ default: string | number | boolean;
3689
+ min?: number | undefined;
3690
+ max?: number | undefined;
3691
+ step?: number | undefined;
3692
+ unit?: string | undefined;
3693
+ options?: string[] | undefined;
3694
+ }[];
3695
+ parts: {
3696
+ id: string;
3697
+ label?: string | undefined;
3698
+ type?: string | undefined;
3699
+ bounds?: {
3700
+ min: [number, number, number];
3701
+ max: [number, number, number];
3702
+ } | undefined;
3703
+ }[];
3704
+ surfaces: {
3705
+ part?: string | undefined;
3706
+ y: number;
3707
+ polygon: [number, number][];
3708
+ }[];
3709
+ slots: {
3710
+ id: string;
3711
+ label?: string | undefined;
3712
+ color?: string | undefined;
3713
+ roughness?: number | undefined;
3714
+ metalness?: number | undefined;
3715
+ transparent?: boolean | undefined;
3716
+ emissive?: boolean | undefined;
3717
+ }[];
3718
+ anchors: {
3719
+ id: string;
3720
+ position: [number, number, number];
3721
+ normal?: [number, number, number] | undefined;
3722
+ }[];
3723
+ lights: {
3724
+ id: string;
3725
+ position: [number, number, number];
3726
+ color: string;
3727
+ intensity: number;
3728
+ distance?: number | undefined;
3729
+ spot?: {
3730
+ direction: [number, number, number];
3731
+ angle: number;
3732
+ softness: number;
3733
+ } | undefined;
3734
+ shadows?: boolean | undefined;
3735
+ glow?: {
3736
+ size: number;
3737
+ strength: number;
3738
+ } | undefined;
3739
+ }[];
3740
+ undersides: {
3741
+ part?: string | undefined;
3742
+ polygon: [number, number][];
3743
+ plane: [number, number, number, number];
3744
+ }[];
3745
+ animations: {
3746
+ name: string;
3747
+ duration: number;
3748
+ }[];
3749
+ cutters?: {
3750
+ host: "ceiling" | "mounted" | "slab" | "wall";
3751
+ polygon: number[][];
3752
+ minY: number;
3753
+ maxY: number;
3754
+ }[] | undefined;
3755
+ cutout: boolean;
3756
+ collider: boolean;
3757
+ shape?: {
3758
+ tolerance: number;
3759
+ bands: {
3760
+ y0: number;
3761
+ y1: number;
3762
+ polygons: {
3763
+ outer: [number, number][];
3764
+ holes?: [number, number][][] | undefined;
3765
+ }[];
3766
+ }[];
3767
+ } | undefined;
3768
+ triangles: number;
3769
+ coverage?: number | undefined;
3770
+ uncovered?: {
3771
+ min: [number, number];
3772
+ max: [number, number];
3773
+ }[] | undefined;
3774
+ };
3775
+ images?: {
3776
+ artifact: string;
3777
+ thumbnail: string;
3778
+ floorPlan: string;
3932
3779
  } | undefined;
3933
3780
  } | undefined;
3934
- gableLeftMaterialPreset?: string | undefined;
3935
- gableRightMaterial?: {
3781
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
3782
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
3783
+ height: number;
3784
+ radius: number;
3785
+ width: number;
3786
+ depth: number;
3787
+ edgeSoftness: number;
3788
+ baseHeight: number;
3789
+ capitalHeight: number;
3790
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
3791
+ shaftTaper: number;
3792
+ shaftBulge: number;
3793
+ shaftStartScale: number;
3794
+ shaftEndScale: number;
3795
+ shaftSegmentCount: number;
3796
+ shaftTwistStep: number;
3797
+ shaftCornerRadius: number;
3798
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
3799
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
3800
+ baseWidthScale: number;
3801
+ baseDepthScale: number;
3802
+ baseTierCount: number;
3803
+ baseStepSpread: number;
3804
+ basePlinthHeightRatio: number;
3805
+ baseRoundBandScale: number;
3806
+ baseNeckScale: number;
3807
+ baseRoundBandCount: number;
3808
+ baseRibCount: number;
3809
+ baseCarvingLevel: number;
3810
+ basePanelInset: number;
3811
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
3812
+ capitalWidthScale: number;
3813
+ capitalDepthScale: number;
3814
+ capitalTierCount: number;
3815
+ capitalStepSpread: number;
3816
+ capitalBandCount: number;
3817
+ voluteSize: number;
3818
+ voluteCount: number;
3819
+ leafCount: number;
3820
+ leafRows: number;
3821
+ bracketDepth: number;
3822
+ bracketTierCount: number;
3823
+ pendantCount: number;
3824
+ capitalCarvingLevel: number;
3825
+ ringCount: number;
3826
+ ringPlacement: "bottom" | "ends" | "even" | "top";
3827
+ ringThickness: number;
3828
+ ringSpread: number;
3829
+ fluteCount: number;
3830
+ fluteDepth: number;
3831
+ fluteWidth: number;
3832
+ spiralTwist: number;
3833
+ spiralRibCount: number;
3834
+ panelCount: number;
3835
+ panelInsetDepth: number;
3836
+ panelShape: "arched" | "diamond" | "rectangle";
3837
+ latheRingCount: number;
3838
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
3839
+ carvingLevel: number;
3840
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
3841
+ lowerBandEnabled: boolean;
3842
+ lowerBandHeight: number;
3843
+ lowerBandCarvingLevel: number;
3844
+ dentilCount: number;
3845
+ beadCount: number;
3846
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
3847
+ braceWidth: number;
3848
+ braceDepth: number;
3849
+ braceBottomSpread: number;
3850
+ braceTopSpread: number;
3851
+ bracePlateEnabled: boolean;
3852
+ role?: "ornament" | "post" | undefined;
3853
+ postBase?: "none" | "pier" | "post-base" | undefined;
3854
+ material?: {
3936
3855
  id?: string | undefined;
3937
3856
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3938
3857
  properties?: {
@@ -3954,18 +3873,9 @@ export declare function floorStepFixture(separator?: boolean): {
3954
3873
  bumpScale?: number | undefined;
3955
3874
  } | undefined;
3956
3875
  } | undefined;
3957
- gableRightMaterialPreset?: string | undefined;
3958
- gambrelLowerWidthRatio: number;
3959
- gambrelLowerHeightRatio: number;
3960
- mansardSteepWidthRatio: number;
3961
- mansardSteepHeightRatio: number;
3962
- dutchHipWidthRatio: number;
3963
- dutchHipHeightRatio: number;
3964
- dutchWaistLengthRatio: number;
3965
- dutchGabletRake: number;
3966
- dutchTopRakeThickness: number;
3967
- children: string[];
3968
- type: "roof-segment";
3876
+ materialPreset?: string | undefined;
3877
+ slots?: Record<string, string> | undefined;
3878
+ type: "column";
3969
3879
  } | {
3970
3880
  object: "node";
3971
3881
  name?: string | undefined;
@@ -4709,6 +4619,7 @@ export declare function floorStepFixture(separator?: boolean): {
4709
4619
  } | undefined;
4710
4620
  justification?: "a" | "b" | undefined;
4711
4621
  height?: number | undefined;
4622
+ endHeightOffset?: number | undefined;
4712
4623
  curveOffset?: number | undefined;
4713
4624
  supportSlabId?: string | undefined;
4714
4625
  supportOffset?: number | undefined;
@@ -4987,34 +4898,6 @@ export declare function floorStepFixture(separator?: boolean): {
4987
4898
  frontSide: "exterior" | "interior" | "unknown";
4988
4899
  backSide: "exterior" | "interior" | "unknown";
4989
4900
  type: "wall";
4990
- } | {
4991
- object: "node";
4992
- name?: string | undefined;
4993
- parentId: string | null;
4994
- visible: boolean;
4995
- camera?: {
4996
- position: [number, number, number];
4997
- target: [number, number, number];
4998
- mode: "orthographic" | "perspective";
4999
- fov?: number | undefined;
5000
- zoom?: number | undefined;
5001
- } | undefined;
5002
- metadata: Record<string, unknown>;
5003
- provenance?: {
5004
- refs: {
5005
- ns?: string | undefined;
5006
- id: string;
5007
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5008
- }[];
5009
- lineage?: {
5010
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5011
- fromIds: string[];
5012
- } | undefined;
5013
- } | undefined;
5014
- id: `separator_${string}`;
5015
- start: [number, number];
5016
- end: [number, number];
5017
- type: "separator";
5018
4901
  } | {
5019
4902
  object: "node";
5020
4903
  name?: string | undefined;
@@ -5181,53 +5064,6 @@ export declare function floorStepFixture(separator?: boolean): {
5181
5064
  topElevation?: number | undefined;
5182
5065
  supportSlabId?: string | undefined;
5183
5066
  type: "beam";
5184
- } | {
5185
- object: "node";
5186
- name?: string | undefined;
5187
- parentId: string | null;
5188
- visible: boolean;
5189
- camera?: {
5190
- position: [number, number, number];
5191
- target: [number, number, number];
5192
- mode: "orthographic" | "perspective";
5193
- fov?: number | undefined;
5194
- zoom?: number | undefined;
5195
- } | undefined;
5196
- metadata: Record<string, unknown>;
5197
- provenance?: {
5198
- refs: {
5199
- ns?: string | undefined;
5200
- id: string;
5201
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5202
- }[];
5203
- lineage?: {
5204
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5205
- fromIds: string[];
5206
- } | undefined;
5207
- } | undefined;
5208
- id: `block_${string}`;
5209
- children: string[];
5210
- position: [number, number, number];
5211
- rotation: number;
5212
- supportSlabId?: string | undefined;
5213
- topology: {
5214
- vertices: {
5215
- id: string;
5216
- position: [number, number, number];
5217
- }[];
5218
- edges: {
5219
- id: string;
5220
- vertexIds: [string, string];
5221
- }[];
5222
- faces: {
5223
- id: string;
5224
- vertexIds: string[];
5225
- materialSlot: string;
5226
- }[];
5227
- };
5228
- slots: Record<string, string>;
5229
- slotNames: Record<string, string>;
5230
- type: "block";
5231
5067
  } | {
5232
5068
  object: "node";
5233
5069
  name?: string | undefined;
@@ -5729,7 +5565,8 @@ export declare function floorStepFixture(separator?: boolean): {
5729
5565
  fromIds: string[];
5730
5566
  } | undefined;
5731
5567
  } | undefined;
5732
- id: `sseg_${string}`;
5568
+ id: `ceiling_${string}`;
5569
+ children: (`item_${string}` | `procedural-item_${string}`)[];
5733
5570
  material?: {
5734
5571
  id?: string | undefined;
5735
5572
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -5754,34 +5591,48 @@ export declare function floorStepFixture(separator?: boolean): {
5754
5591
  } | undefined;
5755
5592
  materialPreset?: string | undefined;
5756
5593
  slots?: Record<string, string> | undefined;
5757
- position: [number, number, number];
5758
- rotation: number;
5759
- segmentType: "landing" | "stair";
5760
- width: number;
5761
- length: number;
5762
- height: number;
5763
- stepCount: number;
5764
- attachmentSide: "front" | "left" | "right";
5765
- fillToFloor: boolean;
5766
- construction?: {
5767
- mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
5768
- waistThickness: number;
5769
- treadThickness: number;
5770
- riserThickness: number;
5771
- nosing: number;
5772
- finishThickness: number;
5773
- closedRisers: boolean;
5774
- stringerWidth: number;
5775
- stringerDepth: number;
5776
- } | undefined;
5777
- winder?: {
5778
- turn: "left" | "right";
5779
- innerGap: number;
5780
- walkingLineOffset: number;
5781
- division: "equal-angle" | "equal-going";
5594
+ polygon: [number, number][];
5595
+ holes: [number, number][][];
5596
+ holeMetadata: {
5597
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
5598
+ openingId?: string | undefined;
5599
+ stairId?: string | undefined;
5600
+ elevatorId?: string | undefined;
5601
+ }[];
5602
+ openingIds?: string[] | undefined;
5603
+ height?: number | undefined;
5604
+ buildUp?: {
5605
+ presetId?: string | undefined;
5606
+ finish?: {
5607
+ kind: "drywall" | "plaster" | "wood-plank";
5608
+ thickness: number;
5609
+ name?: string | undefined;
5610
+ } | undefined;
5611
+ framing?: {
5612
+ system: "joists" | "truss-chords";
5613
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
5614
+ spacing: number;
5615
+ } | undefined;
5616
+ decking?: {
5617
+ kind: "osb" | "plywood";
5618
+ thickness: number;
5619
+ name?: string | undefined;
5620
+ } | undefined;
5621
+ insulation?: {
5622
+ kind: "batt" | "blown" | "rigid";
5623
+ thickness: number;
5624
+ name?: string | undefined;
5625
+ } | undefined;
5782
5626
  } | undefined;
5783
- thickness: number;
5784
- type: "stair-segment";
5627
+ regions?: {
5628
+ id: string;
5629
+ polygon: [number, number][];
5630
+ finish: string | Record<string, unknown>;
5631
+ }[] | undefined;
5632
+ boundary?: "auto" | undefined;
5633
+ zoneId?: string | undefined;
5634
+ autoFromWalls: boolean;
5635
+ type: "ceiling";
5785
5636
  } | {
5786
5637
  object: "node";
5787
5638
  name?: string | undefined;
@@ -6014,47 +5865,6 @@ export declare function floorStepFixture(separator?: boolean): {
6014
5865
  scale: number;
6015
5866
  opacity: number;
6016
5867
  type: "scan";
6017
- } | {
6018
- object: "node";
6019
- name?: string | undefined;
6020
- parentId: string | null;
6021
- visible: boolean;
6022
- camera?: {
6023
- position: [number, number, number];
6024
- target: [number, number, number];
6025
- mode: "orthographic" | "perspective";
6026
- fov?: number | undefined;
6027
- zoom?: number | undefined;
6028
- } | undefined;
6029
- metadata: Record<string, unknown>;
6030
- provenance?: {
6031
- refs: {
6032
- ns?: string | undefined;
6033
- id: string;
6034
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6035
- }[];
6036
- lineage?: {
6037
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6038
- fromIds: string[];
6039
- } | undefined;
6040
- } | undefined;
6041
- id: `guide_${string}`;
6042
- url: string;
6043
- position: [number, number, number];
6044
- rotation: [number, number, number];
6045
- scale: number;
6046
- opacity: number;
6047
- scaleReference: {
6048
- start: [number, number];
6049
- end: [number, number];
6050
- realLengthMeters: number;
6051
- measuredLengthUnits: number;
6052
- metersPerUnit: number;
6053
- displayLength?: number | undefined;
6054
- displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
6055
- label: string;
6056
- } | null;
6057
- type: "guide";
6058
5868
  } | {
6059
5869
  object: "node";
6060
5870
  name?: string | undefined;
@@ -6162,35 +5972,6 @@ export declare function floorStepFixture(separator?: boolean): {
6162
5972
  extrusion: [number, number, number];
6163
5973
  };
6164
5974
  type: "measurement";
6165
- } | {
6166
- object: "node";
6167
- name?: string | undefined;
6168
- parentId: string | null;
6169
- visible: boolean;
6170
- camera?: {
6171
- position: [number, number, number];
6172
- target: [number, number, number];
6173
- mode: "orthographic" | "perspective";
6174
- fov?: number | undefined;
6175
- zoom?: number | undefined;
6176
- } | undefined;
6177
- metadata: Record<string, unknown>;
6178
- provenance?: {
6179
- refs: {
6180
- ns?: string | undefined;
6181
- id: string;
6182
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6183
- }[];
6184
- lineage?: {
6185
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6186
- fromIds: string[];
6187
- } | undefined;
6188
- } | undefined;
6189
- id: `spawn_${string}`;
6190
- position: [number, number, number];
6191
- rotation: number;
6192
- supportSlabId?: string | undefined;
6193
- type: "spawn";
6194
5975
  } | {
6195
5976
  object: "node";
6196
5977
  name?: string | undefined;
@@ -6381,19 +6162,165 @@ export declare function floorStepFixture(separator?: boolean): {
6381
6162
  fromIds: string[];
6382
6163
  } | undefined;
6383
6164
  } | undefined;
6384
- id: `duct-terminal_${string}`;
6165
+ id: `hvac-equipment_${string}`;
6385
6166
  position: [number, number, number];
6386
6167
  rotation: number;
6387
6168
  supportSlabId?: string | undefined;
6388
- terminalType: "diffuser" | "return-grille" | "supply-register";
6389
- mount: "ceiling" | "floor" | "wall";
6169
+ equipmentType: "air-handler" | "condenser" | "furnace";
6390
6170
  width: number;
6391
6171
  depth: number;
6392
- collarShape: "oval" | "rect" | "round";
6393
- collarDiameter: number;
6394
- collarWidth: number;
6395
- collarHeight: number;
6396
- type: "duct-terminal";
6172
+ height: number;
6173
+ supplyShape: "oval" | "rect" | "round";
6174
+ returnShape: "oval" | "rect" | "round";
6175
+ supplyDiameter: number;
6176
+ returnDiameter: number;
6177
+ supplyWidth: number;
6178
+ supplyHeight: number;
6179
+ returnWidth: number;
6180
+ returnHeight: number;
6181
+ type: "hvac-equipment";
6182
+ } | {
6183
+ object: "node";
6184
+ name?: string | undefined;
6185
+ parentId: string | null;
6186
+ visible: boolean;
6187
+ camera?: {
6188
+ position: [number, number, number];
6189
+ target: [number, number, number];
6190
+ mode: "orthographic" | "perspective";
6191
+ fov?: number | undefined;
6192
+ zoom?: number | undefined;
6193
+ } | undefined;
6194
+ metadata: Record<string, unknown>;
6195
+ provenance?: {
6196
+ refs: {
6197
+ ns?: string | undefined;
6198
+ id: string;
6199
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6200
+ }[];
6201
+ lineage?: {
6202
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6203
+ fromIds: string[];
6204
+ } | undefined;
6205
+ } | undefined;
6206
+ id: `lineset_${string}`;
6207
+ path: [number, number, number][];
6208
+ suctionDiameter: number;
6209
+ liquidDiameter: number;
6210
+ insulated: boolean;
6211
+ type: "lineset";
6212
+ } | {
6213
+ object: "node";
6214
+ name?: string | undefined;
6215
+ parentId: string | null;
6216
+ visible: boolean;
6217
+ camera?: {
6218
+ position: [number, number, number];
6219
+ target: [number, number, number];
6220
+ mode: "orthographic" | "perspective";
6221
+ fov?: number | undefined;
6222
+ zoom?: number | undefined;
6223
+ } | undefined;
6224
+ metadata: Record<string, unknown>;
6225
+ provenance?: {
6226
+ refs: {
6227
+ ns?: string | undefined;
6228
+ id: string;
6229
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6230
+ }[];
6231
+ lineage?: {
6232
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6233
+ fromIds: string[];
6234
+ } | undefined;
6235
+ } | undefined;
6236
+ id: `pipe-segment_${string}`;
6237
+ path: [number, number, number][];
6238
+ autoHangers?: boolean | undefined;
6239
+ hangerOverrides?: Record<string, {
6240
+ fraction?: number | undefined;
6241
+ skipped?: boolean | undefined;
6242
+ hostId?: string | undefined;
6243
+ }> | undefined;
6244
+ hangerStyle?: "double" | "single" | undefined;
6245
+ hangerSpacing?: number | undefined;
6246
+ hangerMaxReach?: number | undefined;
6247
+ wallAttachment?: {
6248
+ wallId: `wall_${string}`;
6249
+ side: "back" | "front";
6250
+ startUV: [number, number];
6251
+ endUV: [number, number];
6252
+ offset: number;
6253
+ } | undefined;
6254
+ diameter: number;
6255
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6256
+ system: "vent" | "waste";
6257
+ type: "pipe-segment";
6258
+ } | {
6259
+ object: "node";
6260
+ name?: string | undefined;
6261
+ parentId: string | null;
6262
+ visible: boolean;
6263
+ camera?: {
6264
+ position: [number, number, number];
6265
+ target: [number, number, number];
6266
+ mode: "orthographic" | "perspective";
6267
+ fov?: number | undefined;
6268
+ zoom?: number | undefined;
6269
+ } | undefined;
6270
+ metadata: Record<string, unknown>;
6271
+ provenance?: {
6272
+ refs: {
6273
+ ns?: string | undefined;
6274
+ id: string;
6275
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6276
+ }[];
6277
+ lineage?: {
6278
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6279
+ fromIds: string[];
6280
+ } | undefined;
6281
+ } | undefined;
6282
+ id: `pipe-fitting_${string}`;
6283
+ position: [number, number, number];
6284
+ rotation: [number, number, number];
6285
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6286
+ angle: number;
6287
+ diameter: number;
6288
+ diameter2: number;
6289
+ cleanoutStyle: "end" | "inline";
6290
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6291
+ system: "vent" | "waste";
6292
+ type: "pipe-fitting";
6293
+ } | {
6294
+ object: "node";
6295
+ name?: string | undefined;
6296
+ parentId: string | null;
6297
+ visible: boolean;
6298
+ camera?: {
6299
+ position: [number, number, number];
6300
+ target: [number, number, number];
6301
+ mode: "orthographic" | "perspective";
6302
+ fov?: number | undefined;
6303
+ zoom?: number | undefined;
6304
+ } | undefined;
6305
+ metadata: Record<string, unknown>;
6306
+ provenance?: {
6307
+ refs: {
6308
+ ns?: string | undefined;
6309
+ id: string;
6310
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6311
+ }[];
6312
+ lineage?: {
6313
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6314
+ fromIds: string[];
6315
+ } | undefined;
6316
+ } | undefined;
6317
+ id: `pipe-trap_${string}`;
6318
+ position: [number, number, number];
6319
+ rotation: number;
6320
+ diameter: number;
6321
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6322
+ armLengthM: number;
6323
+ type: "pipe-trap";
6397
6324
  } | {
6398
6325
  object: "node";
6399
6326
  name?: string | undefined;
@@ -6418,23 +6345,12 @@ export declare function floorStepFixture(separator?: boolean): {
6418
6345
  fromIds: string[];
6419
6346
  } | undefined;
6420
6347
  } | undefined;
6421
- id: `hvac-equipment_${string}`;
6422
- position: [number, number, number];
6423
- rotation: number;
6424
- supportSlabId?: string | undefined;
6425
- equipmentType: "air-handler" | "condenser" | "furnace";
6426
- width: number;
6427
- depth: number;
6428
- height: number;
6429
- supplyShape: "oval" | "rect" | "round";
6430
- returnShape: "oval" | "rect" | "round";
6431
- supplyDiameter: number;
6432
- returnDiameter: number;
6433
- supplyWidth: number;
6434
- supplyHeight: number;
6435
- returnWidth: number;
6436
- returnHeight: number;
6437
- type: "hvac-equipment";
6348
+ id: `level_${string}`;
6349
+ 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}`)[];
6350
+ level: number;
6351
+ baseElevation: number;
6352
+ height?: number | undefined;
6353
+ type: "level";
6438
6354
  } | {
6439
6355
  object: "node";
6440
6356
  name?: string | undefined;
@@ -6459,15 +6375,56 @@ export declare function floorStepFixture(separator?: boolean): {
6459
6375
  fromIds: string[];
6460
6376
  } | undefined;
6461
6377
  } | undefined;
6462
- id: `lineset_${string}`;
6463
- path: [number, number, number][];
6464
- suctionDiameter: number;
6465
- liquidDiameter: number;
6466
- insulated: boolean;
6467
- type: "lineset";
6378
+ id: `elevator_${string}`;
6379
+ material?: {
6380
+ id?: string | undefined;
6381
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6382
+ properties?: {
6383
+ color: string;
6384
+ roughness: number;
6385
+ metalness: number;
6386
+ opacity: number;
6387
+ transparent: boolean;
6388
+ side: "back" | "double" | "front";
6389
+ } | undefined;
6390
+ texture?: {
6391
+ url: string;
6392
+ repeat?: [number, number] | undefined;
6393
+ scale?: number | undefined;
6394
+ offset?: [number, number] | undefined;
6395
+ normalMap?: string | undefined;
6396
+ normalScale?: number | undefined;
6397
+ bumpMap?: string | undefined;
6398
+ bumpScale?: number | undefined;
6399
+ } | undefined;
6400
+ } | undefined;
6401
+ materialPreset?: string | undefined;
6402
+ slots?: Record<string, string> | undefined;
6403
+ position: [number, number, number];
6404
+ rotation: number;
6405
+ width: number;
6406
+ depth: number;
6407
+ shaftWidth?: number | undefined;
6408
+ shaftDepth?: number | undefined;
6409
+ shaftWallThickness: number;
6410
+ shaftStyle: "glass" | "solid";
6411
+ cabHeight: number;
6412
+ doorWidth: number;
6413
+ doorHeight: number;
6414
+ doorStyle: "center-opening" | "single-left" | "single-right";
6415
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
6416
+ fromLevelId: string | null;
6417
+ toLevelId: string | null;
6418
+ servedLevelIds?: string[] | undefined;
6419
+ disabledLevelIds: string[];
6420
+ serviceOnlyLevelIds: string[];
6421
+ defaultLevelId: string | null;
6422
+ speed: number;
6423
+ doorDurationMs: number;
6424
+ dwellMs: number;
6425
+ type: "elevator";
6468
6426
  } | {
6469
6427
  object: "node";
6470
- name?: string | undefined;
6471
6428
  parentId: string | null;
6472
6429
  visible: boolean;
6473
6430
  camera?: {
@@ -6477,7 +6434,6 @@ export declare function floorStepFixture(separator?: boolean): {
6477
6434
  fov?: number | undefined;
6478
6435
  zoom?: number | undefined;
6479
6436
  } | undefined;
6480
- metadata: Record<string, unknown>;
6481
6437
  provenance?: {
6482
6438
  refs: {
6483
6439
  ns?: string | undefined;
@@ -6489,10 +6445,13 @@ export declare function floorStepFixture(separator?: boolean): {
6489
6445
  fromIds: string[];
6490
6446
  } | undefined;
6491
6447
  } | undefined;
6492
- id: `liquid-line_${string}`;
6493
- path: [number, number, number][];
6494
- diameter: number;
6495
- type: "liquid-line";
6448
+ id: `unit_${string}`;
6449
+ name: string;
6450
+ kind: "apartment" | "commercial" | "common" | "hotel-room";
6451
+ members: `zone_${string}`[];
6452
+ color: string;
6453
+ metadata: Record<string, unknown>;
6454
+ type: "unit";
6496
6455
  } | {
6497
6456
  object: "node";
6498
6457
  name?: string | undefined;
@@ -6517,28 +6476,12 @@ export declare function floorStepFixture(separator?: boolean): {
6517
6476
  fromIds: string[];
6518
6477
  } | undefined;
6519
6478
  } | undefined;
6520
- id: `pipe-segment_${string}`;
6521
- path: [number, number, number][];
6522
- autoHangers?: boolean | undefined;
6523
- hangerOverrides?: Record<string, {
6524
- fraction?: number | undefined;
6525
- skipped?: boolean | undefined;
6526
- hostId?: string | undefined;
6527
- }> | undefined;
6528
- hangerStyle?: "double" | "single" | undefined;
6529
- hangerSpacing?: number | undefined;
6530
- hangerMaxReach?: number | undefined;
6531
- wallAttachment?: {
6532
- wallId: `wall_${string}`;
6533
- side: "back" | "front";
6534
- startUV: [number, number];
6535
- endUV: [number, number];
6536
- offset: number;
6537
- } | undefined;
6538
- diameter: number;
6539
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6540
- system: "vent" | "waste";
6541
- type: "pipe-segment";
6479
+ id: `building_${string}`;
6480
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
6481
+ position: [number, number, number];
6482
+ rotation: [number, number, number];
6483
+ groundLevelId?: `level_${string}` | undefined;
6484
+ type: "building";
6542
6485
  } | {
6543
6486
  object: "node";
6544
6487
  name?: string | undefined;
@@ -6563,17 +6506,126 @@ export declare function floorStepFixture(separator?: boolean): {
6563
6506
  fromIds: string[];
6564
6507
  } | undefined;
6565
6508
  } | undefined;
6566
- id: `pipe-fitting_${string}`;
6509
+ id: `dormer_${string}`;
6510
+ material?: {
6511
+ id?: string | undefined;
6512
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6513
+ properties?: {
6514
+ color: string;
6515
+ roughness: number;
6516
+ metalness: number;
6517
+ opacity: number;
6518
+ transparent: boolean;
6519
+ side: "back" | "double" | "front";
6520
+ } | undefined;
6521
+ texture?: {
6522
+ url: string;
6523
+ repeat?: [number, number] | undefined;
6524
+ scale?: number | undefined;
6525
+ offset?: [number, number] | undefined;
6526
+ normalMap?: string | undefined;
6527
+ normalScale?: number | undefined;
6528
+ bumpMap?: string | undefined;
6529
+ bumpScale?: number | undefined;
6530
+ } | undefined;
6531
+ } | undefined;
6532
+ materialPreset?: string | undefined;
6533
+ topMaterial?: {
6534
+ id?: string | undefined;
6535
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6536
+ properties?: {
6537
+ color: string;
6538
+ roughness: number;
6539
+ metalness: number;
6540
+ opacity: number;
6541
+ transparent: boolean;
6542
+ side: "back" | "double" | "front";
6543
+ } | undefined;
6544
+ texture?: {
6545
+ url: string;
6546
+ repeat?: [number, number] | undefined;
6547
+ scale?: number | undefined;
6548
+ offset?: [number, number] | undefined;
6549
+ normalMap?: string | undefined;
6550
+ normalScale?: number | undefined;
6551
+ bumpMap?: string | undefined;
6552
+ bumpScale?: number | undefined;
6553
+ } | undefined;
6554
+ } | undefined;
6555
+ topMaterialPreset?: string | undefined;
6556
+ sideMaterial?: {
6557
+ id?: string | undefined;
6558
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6559
+ properties?: {
6560
+ color: string;
6561
+ roughness: number;
6562
+ metalness: number;
6563
+ opacity: number;
6564
+ transparent: boolean;
6565
+ side: "back" | "double" | "front";
6566
+ } | undefined;
6567
+ texture?: {
6568
+ url: string;
6569
+ repeat?: [number, number] | undefined;
6570
+ scale?: number | undefined;
6571
+ offset?: [number, number] | undefined;
6572
+ normalMap?: string | undefined;
6573
+ normalScale?: number | undefined;
6574
+ bumpMap?: string | undefined;
6575
+ bumpScale?: number | undefined;
6576
+ } | undefined;
6577
+ } | undefined;
6578
+ sideMaterialPreset?: string | undefined;
6579
+ wallMaterial?: {
6580
+ id?: string | undefined;
6581
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6582
+ properties?: {
6583
+ color: string;
6584
+ roughness: number;
6585
+ metalness: number;
6586
+ opacity: number;
6587
+ transparent: boolean;
6588
+ side: "back" | "double" | "front";
6589
+ } | undefined;
6590
+ texture?: {
6591
+ url: string;
6592
+ repeat?: [number, number] | undefined;
6593
+ scale?: number | undefined;
6594
+ offset?: [number, number] | undefined;
6595
+ normalMap?: string | undefined;
6596
+ normalScale?: number | undefined;
6597
+ bumpMap?: string | undefined;
6598
+ bumpScale?: number | undefined;
6599
+ } | undefined;
6600
+ } | undefined;
6601
+ wallMaterialPreset?: string | undefined;
6602
+ roofSegmentId?: string | undefined;
6567
6603
  position: [number, number, number];
6568
- rotation: [number, number, number];
6569
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6570
- angle: number;
6571
- diameter: number;
6572
- diameter2: number;
6573
- cleanoutStyle: "end" | "inline";
6574
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6575
- system: "vent" | "waste";
6576
- type: "pipe-fitting";
6604
+ rotation: number;
6605
+ width: number;
6606
+ depth: number;
6607
+ height: number;
6608
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
6609
+ roofHeight: number;
6610
+ shedHighSide: "back" | "front";
6611
+ wallSkirtHeight: number;
6612
+ windowWidth: number;
6613
+ windowHeight: number;
6614
+ windowOffsetX: number;
6615
+ windowOffsetY: number;
6616
+ windowFrameThickness: number;
6617
+ windowFrameDepth: number;
6618
+ windowColumns: number;
6619
+ windowRows: number;
6620
+ windowDividerThickness: number;
6621
+ windowShape: "arch" | "rectangle" | "rounded";
6622
+ windowArchHeight: number;
6623
+ windowCornerRadii: [number, number, number, number];
6624
+ windowSill: boolean;
6625
+ windowSillDepth: number;
6626
+ windowSillThickness: number;
6627
+ children: `window_${string}`[];
6628
+ type: "dormer";
6577
6629
  } | {
6578
6630
  object: "node";
6579
6631
  name?: string | undefined;
@@ -6598,13 +6650,54 @@ export declare function floorStepFixture(separator?: boolean): {
6598
6650
  fromIds: string[];
6599
6651
  } | undefined;
6600
6652
  } | undefined;
6601
- id: `pipe-trap_${string}`;
6653
+ id: `gutter_${string}`;
6654
+ material?: {
6655
+ id?: string | undefined;
6656
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6657
+ properties?: {
6658
+ color: string;
6659
+ roughness: number;
6660
+ metalness: number;
6661
+ opacity: number;
6662
+ transparent: boolean;
6663
+ side: "back" | "double" | "front";
6664
+ } | undefined;
6665
+ texture?: {
6666
+ url: string;
6667
+ repeat?: [number, number] | undefined;
6668
+ scale?: number | undefined;
6669
+ offset?: [number, number] | undefined;
6670
+ normalMap?: string | undefined;
6671
+ normalScale?: number | undefined;
6672
+ bumpMap?: string | undefined;
6673
+ bumpScale?: number | undefined;
6674
+ } | undefined;
6675
+ } | undefined;
6676
+ slots?: Record<string, string> | undefined;
6677
+ materialPreset: string;
6678
+ roofSegmentId?: string | undefined;
6602
6679
  position: [number, number, number];
6603
6680
  rotation: number;
6604
- diameter: number;
6605
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6606
- armLengthM: number;
6607
- type: "pipe-trap";
6681
+ length: number;
6682
+ arc?: {
6683
+ centerX: number;
6684
+ centerZ: number;
6685
+ radius: number;
6686
+ } | undefined;
6687
+ size: number;
6688
+ thickness: number;
6689
+ profile: "box" | "half-round" | "k-style";
6690
+ endCapLeft: boolean;
6691
+ endCapRight: boolean;
6692
+ hangerStyle: "none" | "strap";
6693
+ hangerSpacing: number;
6694
+ outlets: {
6695
+ id: string;
6696
+ offset: number;
6697
+ diameter: number;
6698
+ generatedBy?: "default-downspout" | undefined;
6699
+ }[];
6700
+ type: "gutter";
6608
6701
  } | {
6609
6702
  object: "node";
6610
6703
  name?: string | undefined;
@@ -6629,71 +6722,198 @@ export declare function floorStepFixture(separator?: boolean): {
6629
6722
  fromIds: string[];
6630
6723
  } | undefined;
6631
6724
  } | undefined;
6632
- id: `level_${string}`;
6633
- 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}`)[];
6634
- level: number;
6635
- baseElevation: number;
6636
- height?: number | undefined;
6637
- type: "level";
6638
- } | {
6639
- object: "node";
6640
- parentId: string | null;
6641
- visible: boolean;
6642
- camera?: {
6643
- position: [number, number, number];
6644
- target: [number, number, number];
6645
- mode: "orthographic" | "perspective";
6646
- fov?: number | undefined;
6647
- zoom?: number | undefined;
6725
+ id: `site_${string}`;
6726
+ polygon: {
6727
+ type: "polygon";
6728
+ points: [number, number][];
6729
+ };
6730
+ terrain?: {
6731
+ type: "heightfield";
6732
+ origin: [number, number];
6733
+ spacing: number;
6734
+ cols: number;
6735
+ rows: number;
6736
+ step: number;
6737
+ heights: string;
6648
6738
  } | undefined;
6649
- provenance?: {
6650
- refs: {
6651
- ns?: string | undefined;
6652
- id: string;
6653
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6654
- }[];
6655
- lineage?: {
6656
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6657
- fromIds: string[];
6739
+ showGround?: boolean | undefined;
6740
+ presentation?: {
6741
+ theme?: string | undefined;
6742
+ exposure?: number | undefined;
6743
+ shading?: "rendered" | "solid" | undefined;
6744
+ edges?: "off" | "soft" | "strong" | undefined;
6745
+ shadows?: boolean | undefined;
6746
+ lighting?: {
6747
+ background?: string | undefined;
6748
+ backgroundSky?: string | null | undefined;
6749
+ ground?: string | undefined;
6750
+ ambient?: {
6751
+ color: string;
6752
+ intensity: number;
6753
+ } | undefined;
6754
+ hemi?: {
6755
+ sky: string;
6756
+ ground: string;
6757
+ intensity: number;
6758
+ } | undefined;
6759
+ lights?: {
6760
+ color: string;
6761
+ intensity: number;
6762
+ position: [number, number, number];
6763
+ target?: [number, number, number] | undefined;
6764
+ castShadow?: boolean | undefined;
6765
+ shadow?: {
6766
+ intensity?: number | undefined;
6767
+ bias?: number | undefined;
6768
+ normalBias?: number | undefined;
6769
+ radius?: number | undefined;
6770
+ mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
6771
+ camera?: {
6772
+ left: number;
6773
+ right: number;
6774
+ top: number;
6775
+ bottom: number;
6776
+ near: number;
6777
+ far: number;
6778
+ } | undefined;
6779
+ } | undefined;
6780
+ }[] | undefined;
6781
+ environment?: {
6782
+ source: "gradient" | "none" | "room";
6783
+ intensity: number;
6784
+ } | undefined;
6785
+ } | undefined;
6786
+ postprocessing?: {
6787
+ ambientOcclusion?: boolean | undefined;
6788
+ colorGrading?: boolean | undefined;
6789
+ } | undefined;
6790
+ display?: {
6791
+ mode?: "construction" | "finished" | "systems" | undefined;
6792
+ families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
6793
+ disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
6794
+ xray?: boolean | undefined;
6795
+ colorBy?: "material" | "service" | undefined;
6658
6796
  } | undefined;
6659
6797
  } | undefined;
6660
- id: `unit_${string}`;
6661
- name: string;
6662
- kind: "apartment" | "commercial" | "common" | "hotel-room";
6663
- members: `zone_${string}`[];
6664
- color: string;
6665
- metadata: Record<string, unknown>;
6666
- type: "unit";
6667
- } | {
6668
- object: "node";
6669
- name?: string | undefined;
6670
- parentId: string | null;
6671
- visible: boolean;
6672
- camera?: {
6673
- position: [number, number, number];
6674
- target: [number, number, number];
6675
- mode: "orthographic" | "perspective";
6676
- fov?: number | undefined;
6677
- zoom?: number | undefined;
6798
+ address?: {
6799
+ street?: string | undefined;
6800
+ city?: string | undefined;
6801
+ state?: string | undefined;
6802
+ zip?: string | undefined;
6678
6803
  } | undefined;
6679
- metadata: Record<string, unknown>;
6680
- provenance?: {
6681
- refs: {
6682
- ns?: string | undefined;
6683
- id: string;
6684
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6685
- }[];
6686
- lineage?: {
6687
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6688
- fromIds: string[];
6804
+ parcel?: {
6805
+ apn?: string | undefined;
6806
+ source?: string | undefined;
6807
+ county?: string | undefined;
6808
+ state?: string | undefined;
6809
+ lotAreaSqFt?: number | undefined;
6810
+ originLngLat?: [number, number] | undefined;
6811
+ resolvedAt?: string | undefined;
6812
+ layer?: string | undefined;
6813
+ notes?: string[] | undefined;
6814
+ } | undefined;
6815
+ setbacks?: {
6816
+ front: number;
6817
+ side: number;
6818
+ rear: number;
6819
+ left?: number | undefined;
6820
+ right?: number | undefined;
6821
+ streetSide?: number | undefined;
6822
+ } | undefined;
6823
+ setbacksSource?: string | undefined;
6824
+ zone?: string | undefined;
6825
+ frontEdge?: number | undefined;
6826
+ streetEdges?: number[] | undefined;
6827
+ sightTriangleFt?: number | undefined;
6828
+ northRotation?: number | undefined;
6829
+ dossier?: {
6830
+ [x: string]: unknown;
6831
+ provider: string;
6832
+ asOf: string;
6833
+ point?: {
6834
+ lat?: number | undefined;
6835
+ lng?: number | undefined;
6836
+ source?: string | undefined;
6837
+ } | undefined;
6838
+ address?: {
6839
+ formatted?: string | undefined;
6840
+ precision?: string | undefined;
6689
6841
  } | undefined;
6842
+ sections: Record<string, {
6843
+ [x: string]: unknown;
6844
+ status: string;
6845
+ summary?: string | undefined;
6846
+ reason?: string | undefined;
6847
+ source?: {
6848
+ name?: string | undefined;
6849
+ kind?: string | undefined;
6850
+ vintage?: string | undefined;
6851
+ attribution?: string | undefined;
6852
+ } | undefined;
6853
+ }>;
6854
+ parcel?: Record<string, unknown> | undefined;
6855
+ flood?: Record<string, unknown> | undefined;
6856
+ codeBasis?: Record<string, unknown> | undefined;
6857
+ zoning?: Record<string, unknown> | undefined;
6858
+ utilities?: Record<string, unknown> | undefined;
6859
+ soils?: Record<string, unknown> | undefined;
6860
+ wetlands?: Record<string, unknown> | undefined;
6861
+ structures?: Record<string, unknown> | undefined;
6862
+ elevation?: Record<string, unknown> | undefined;
6863
+ boundaries?: Record<string, unknown> | undefined;
6690
6864
  } | undefined;
6691
- id: `building_${string}`;
6692
- children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
6693
- position: [number, number, number];
6694
- rotation: [number, number, number];
6695
- groundLevelId?: `level_${string}` | undefined;
6696
- type: "building";
6865
+ contourIntervalIn?: number | undefined;
6866
+ contours3d?: boolean | undefined;
6867
+ terrainContours?: {
6868
+ datum: string;
6869
+ intervalFt: number;
6870
+ source?: string | undefined;
6871
+ lines: {
6872
+ elevationFt: number;
6873
+ points: [number, number][];
6874
+ }[];
6875
+ } | undefined;
6876
+ wallTypes?: {
6877
+ id: string;
6878
+ label: string;
6879
+ assembly: {
6880
+ layers: {
6881
+ id: string;
6882
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
6883
+ thickness: number;
6884
+ core?: true | undefined;
6885
+ spacing?: number | undefined;
6886
+ material?: string | undefined;
6887
+ slot?: string | undefined;
6888
+ returns?: boolean | undefined;
6889
+ display?: "construction" | "finished" | undefined;
6890
+ inset?: number | undefined;
6891
+ bottom?: number | undefined;
6892
+ lift?: number | undefined;
6893
+ src?: string | undefined;
6894
+ }[];
6895
+ backing?: {
6896
+ id: string;
6897
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
6898
+ thickness: number;
6899
+ core?: true | undefined;
6900
+ spacing?: number | undefined;
6901
+ material?: string | undefined;
6902
+ slot?: string | undefined;
6903
+ returns?: boolean | undefined;
6904
+ display?: "construction" | "finished" | undefined;
6905
+ inset?: number | undefined;
6906
+ bottom?: number | undefined;
6907
+ lift?: number | undefined;
6908
+ src?: string | undefined;
6909
+ }[] | undefined;
6910
+ face?: "exterior" | "front" | undefined;
6911
+ presetId?: string | undefined;
6912
+ cavityInsulation?: string | undefined;
6913
+ };
6914
+ }[] | undefined;
6915
+ children: string[];
6916
+ type: "site";
6697
6917
  } | {
6698
6918
  object: "node";
6699
6919
  name?: string | undefined;
@@ -7399,78 +7619,6 @@ export declare function floorStepFixture(separator?: boolean): {
7399
7619
  louverCount: number;
7400
7620
  backRatio: number;
7401
7621
  type: "eyebrow-vent";
7402
- } | {
7403
- object: "node";
7404
- name?: string | undefined;
7405
- parentId: string | null;
7406
- visible: boolean;
7407
- camera?: {
7408
- position: [number, number, number];
7409
- target: [number, number, number];
7410
- mode: "orthographic" | "perspective";
7411
- fov?: number | undefined;
7412
- zoom?: number | undefined;
7413
- } | undefined;
7414
- metadata: Record<string, unknown>;
7415
- provenance?: {
7416
- refs: {
7417
- ns?: string | undefined;
7418
- id: string;
7419
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
7420
- }[];
7421
- lineage?: {
7422
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
7423
- fromIds: string[];
7424
- } | undefined;
7425
- } | undefined;
7426
- id: `gutter_${string}`;
7427
- material?: {
7428
- id?: string | undefined;
7429
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7430
- properties?: {
7431
- color: string;
7432
- roughness: number;
7433
- metalness: number;
7434
- opacity: number;
7435
- transparent: boolean;
7436
- side: "back" | "double" | "front";
7437
- } | undefined;
7438
- texture?: {
7439
- url: string;
7440
- repeat?: [number, number] | undefined;
7441
- scale?: number | undefined;
7442
- offset?: [number, number] | undefined;
7443
- normalMap?: string | undefined;
7444
- normalScale?: number | undefined;
7445
- bumpMap?: string | undefined;
7446
- bumpScale?: number | undefined;
7447
- } | undefined;
7448
- } | undefined;
7449
- slots?: Record<string, string> | undefined;
7450
- materialPreset: string;
7451
- roofSegmentId?: string | undefined;
7452
- position: [number, number, number];
7453
- rotation: number;
7454
- length: number;
7455
- arc?: {
7456
- centerX: number;
7457
- centerZ: number;
7458
- radius: number;
7459
- } | undefined;
7460
- size: number;
7461
- thickness: number;
7462
- profile: "box" | "half-round" | "k-style";
7463
- endCapLeft: boolean;
7464
- endCapRight: boolean;
7465
- hangerStyle: "none" | "strap";
7466
- hangerSpacing: number;
7467
- outlets: {
7468
- id: string;
7469
- offset: number;
7470
- diameter: number;
7471
- generatedBy?: "default-downspout" | undefined;
7472
- }[];
7473
- type: "gutter";
7474
7622
  } | {
7475
7623
  object: "node";
7476
7624
  name?: string | undefined;
@@ -7763,150 +7911,6 @@ export declare function floorStepFixture(separator?: boolean): {
7763
7911
  cutoutOffset: number;
7764
7912
  surfaceNormal?: [number, number, number] | undefined;
7765
7913
  type: "skylight";
7766
- } | {
7767
- object: "node";
7768
- name?: string | undefined;
7769
- parentId: string | null;
7770
- visible: boolean;
7771
- camera?: {
7772
- position: [number, number, number];
7773
- target: [number, number, number];
7774
- mode: "orthographic" | "perspective";
7775
- fov?: number | undefined;
7776
- zoom?: number | undefined;
7777
- } | undefined;
7778
- metadata: Record<string, unknown>;
7779
- provenance?: {
7780
- refs: {
7781
- ns?: string | undefined;
7782
- id: string;
7783
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
7784
- }[];
7785
- lineage?: {
7786
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
7787
- fromIds: string[];
7788
- } | undefined;
7789
- } | undefined;
7790
- id: `dormer_${string}`;
7791
- material?: {
7792
- id?: string | undefined;
7793
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7794
- properties?: {
7795
- color: string;
7796
- roughness: number;
7797
- metalness: number;
7798
- opacity: number;
7799
- transparent: boolean;
7800
- side: "back" | "double" | "front";
7801
- } | undefined;
7802
- texture?: {
7803
- url: string;
7804
- repeat?: [number, number] | undefined;
7805
- scale?: number | undefined;
7806
- offset?: [number, number] | undefined;
7807
- normalMap?: string | undefined;
7808
- normalScale?: number | undefined;
7809
- bumpMap?: string | undefined;
7810
- bumpScale?: number | undefined;
7811
- } | undefined;
7812
- } | undefined;
7813
- materialPreset?: string | undefined;
7814
- topMaterial?: {
7815
- id?: string | undefined;
7816
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7817
- properties?: {
7818
- color: string;
7819
- roughness: number;
7820
- metalness: number;
7821
- opacity: number;
7822
- transparent: boolean;
7823
- side: "back" | "double" | "front";
7824
- } | undefined;
7825
- texture?: {
7826
- url: string;
7827
- repeat?: [number, number] | undefined;
7828
- scale?: number | undefined;
7829
- offset?: [number, number] | undefined;
7830
- normalMap?: string | undefined;
7831
- normalScale?: number | undefined;
7832
- bumpMap?: string | undefined;
7833
- bumpScale?: number | undefined;
7834
- } | undefined;
7835
- } | undefined;
7836
- topMaterialPreset?: string | undefined;
7837
- sideMaterial?: {
7838
- id?: string | undefined;
7839
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7840
- properties?: {
7841
- color: string;
7842
- roughness: number;
7843
- metalness: number;
7844
- opacity: number;
7845
- transparent: boolean;
7846
- side: "back" | "double" | "front";
7847
- } | undefined;
7848
- texture?: {
7849
- url: string;
7850
- repeat?: [number, number] | undefined;
7851
- scale?: number | undefined;
7852
- offset?: [number, number] | undefined;
7853
- normalMap?: string | undefined;
7854
- normalScale?: number | undefined;
7855
- bumpMap?: string | undefined;
7856
- bumpScale?: number | undefined;
7857
- } | undefined;
7858
- } | undefined;
7859
- sideMaterialPreset?: string | undefined;
7860
- wallMaterial?: {
7861
- id?: string | undefined;
7862
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7863
- properties?: {
7864
- color: string;
7865
- roughness: number;
7866
- metalness: number;
7867
- opacity: number;
7868
- transparent: boolean;
7869
- side: "back" | "double" | "front";
7870
- } | undefined;
7871
- texture?: {
7872
- url: string;
7873
- repeat?: [number, number] | undefined;
7874
- scale?: number | undefined;
7875
- offset?: [number, number] | undefined;
7876
- normalMap?: string | undefined;
7877
- normalScale?: number | undefined;
7878
- bumpMap?: string | undefined;
7879
- bumpScale?: number | undefined;
7880
- } | undefined;
7881
- } | undefined;
7882
- wallMaterialPreset?: string | undefined;
7883
- roofSegmentId?: string | undefined;
7884
- position: [number, number, number];
7885
- rotation: number;
7886
- width: number;
7887
- depth: number;
7888
- height: number;
7889
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
7890
- roofHeight: number;
7891
- shedHighSide: "back" | "front";
7892
- wallSkirtHeight: number;
7893
- windowWidth: number;
7894
- windowHeight: number;
7895
- windowOffsetX: number;
7896
- windowOffsetY: number;
7897
- windowFrameThickness: number;
7898
- windowFrameDepth: number;
7899
- windowColumns: number;
7900
- windowRows: number;
7901
- windowDividerThickness: number;
7902
- windowShape: "arch" | "rectangle" | "rounded";
7903
- windowArchHeight: number;
7904
- windowCornerRadii: [number, number, number, number];
7905
- windowSill: boolean;
7906
- windowSillDepth: number;
7907
- windowSillThickness: number;
7908
- children: `window_${string}`[];
7909
- type: "dormer";
7910
7914
  } | {
7911
7915
  object: "node";
7912
7916
  name?: string | undefined;