@pascal-app/core 1.0.7 → 1.1.1

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 (266) hide show
  1. package/dist/agent-operations/__fixtures__/cases.d.ts +3 -2
  2. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/native-materials.d.ts +4 -0
  4. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  5. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
  6. package/dist/agent-operations/__fixtures__/place-items-cases.js +28 -0
  7. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +9567 -9563
  8. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  9. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +77 -77
  10. package/dist/agent-operations/asset-catalog.d.ts +21 -11
  11. package/dist/agent-operations/asset-catalog.d.ts.map +1 -1
  12. package/dist/agent-operations/asset-catalog.js +28 -10
  13. package/dist/agent-operations/asset-views.d.ts +8 -3
  14. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  15. package/dist/agent-operations/asset-views.js +19 -3
  16. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  17. package/dist/agent-operations/author-scene.js +2 -3
  18. package/dist/agent-operations/batch.d.ts +7 -1
  19. package/dist/agent-operations/batch.d.ts.map +1 -1
  20. package/dist/agent-operations/batch.js +17 -2
  21. package/dist/agent-operations/catalog-asset.d.ts +15 -0
  22. package/dist/agent-operations/catalog-asset.d.ts.map +1 -0
  23. package/dist/agent-operations/catalog-asset.js +4 -0
  24. package/dist/agent-operations/circulation-spaces.d.ts +1724 -1723
  25. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -1
  26. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  27. package/dist/agent-operations/design-brief.js +2 -0
  28. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  29. package/dist/agent-operations/furnish-room.js +2 -1
  30. package/dist/agent-operations/index.d.ts +3 -0
  31. package/dist/agent-operations/index.d.ts.map +1 -1
  32. package/dist/agent-operations/index.js +4 -1
  33. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  34. package/dist/agent-operations/level-reads.js +5 -2
  35. package/dist/agent-operations/move-plan.d.ts.map +1 -1
  36. package/dist/agent-operations/move-plan.js +11 -9
  37. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  38. package/dist/agent-operations/place-in-room.js +2 -1
  39. package/dist/agent-operations/place-items.d.ts.map +1 -1
  40. package/dist/agent-operations/place-items.js +2 -1
  41. package/dist/agent-operations/scene-queries.d.ts +2944 -2943
  42. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  43. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  44. package/dist/agent-operations/scene-view.js +38 -13
  45. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  46. package/dist/agent-operations/search-assets.js +6 -0
  47. package/dist/agent-operations/types.d.ts +3 -2
  48. package/dist/agent-operations/types.d.ts.map +1 -1
  49. package/dist/agent-operations/usage-checks.js +18 -3
  50. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  51. package/dist/agent-operations/verify-scene.js +4 -2
  52. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  53. package/dist/agent-operations/wall-object-observations.js +1 -1
  54. package/dist/agent-tools/assets.js +1 -1
  55. package/dist/agent-tools/wall-openings.js +2 -2
  56. package/dist/building/__fixtures__/wall-opening-cases.d.ts +13 -12
  57. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  58. package/dist/building/level-duplication.d.ts +1281 -1279
  59. package/dist/building/level-duplication.d.ts.map +1 -1
  60. package/dist/building/level-duplication.js +3 -1
  61. package/dist/building/merge-windows.d.ts.map +1 -1
  62. package/dist/building/merge-windows.js +4 -3
  63. package/dist/building/wall-openings.d.ts +95 -81
  64. package/dist/building/wall-openings.d.ts.map +1 -1
  65. package/dist/building/wall-openings.js +74 -25
  66. package/dist/commands/structure/shared.d.ts +3203 -3202
  67. package/dist/commands/structure/shared.d.ts.map +1 -1
  68. package/dist/commands/structure/zone-wall-merge.d.ts +2028 -2025
  69. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  70. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  71. package/dist/contracts/reference-inventory.js +0 -1
  72. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +6 -1
  73. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  74. package/dist/hooks/spatial-grid/spatial-grid-manager.js +30 -9
  75. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2101 -2100
  76. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  77. package/dist/hooks/spatial-grid/spatial-grid-sync.js +8 -4
  78. package/dist/index.d.ts +13 -4
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +13 -4
  81. package/dist/lib/__fixtures__/mezzanine.d.ts +6428 -6424
  82. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  83. package/dist/lib/absorb-wall-separators.d.ts +2267 -2266
  84. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  85. package/dist/lib/asset-storage.d.ts.map +1 -1
  86. package/dist/lib/asset-storage.js +3 -0
  87. package/dist/lib/build-mode.d.ts +11 -0
  88. package/dist/lib/build-mode.d.ts.map +1 -0
  89. package/dist/lib/build-mode.js +24 -0
  90. package/dist/lib/corner-pair.d.ts +2 -0
  91. package/dist/lib/corner-pair.d.ts.map +1 -1
  92. package/dist/lib/door-interaction.d.ts +14 -0
  93. package/dist/lib/door-interaction.d.ts.map +1 -0
  94. package/dist/lib/door-interaction.js +62 -0
  95. package/dist/lib/elevator-support.d.ts +15 -0
  96. package/dist/lib/elevator-support.d.ts.map +1 -0
  97. package/dist/lib/elevator-support.js +40 -0
  98. package/dist/lib/floor-foundation-datum.d.ts.map +1 -1
  99. package/dist/lib/floor-foundation-datum.js +5 -1
  100. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  101. package/dist/lib/floor-intent-changes.js +6 -4
  102. package/dist/lib/floorplan/context.d.ts +95 -0
  103. package/dist/lib/floorplan/context.d.ts.map +1 -0
  104. package/dist/lib/floorplan/context.js +155 -0
  105. package/dist/lib/floorplan/index.d.ts +6 -0
  106. package/dist/lib/floorplan/index.d.ts.map +1 -0
  107. package/dist/lib/floorplan/index.js +5 -0
  108. package/dist/lib/floorplan/marks.d.ts +71 -0
  109. package/dist/lib/floorplan/marks.d.ts.map +1 -0
  110. package/dist/lib/floorplan/marks.js +157 -0
  111. package/dist/lib/floorplan/plan-math.d.ts +18 -0
  112. package/dist/lib/floorplan/plan-math.d.ts.map +1 -0
  113. package/dist/lib/floorplan/plan-math.js +82 -0
  114. package/dist/lib/floorplan/svg-paths.d.ts +17 -0
  115. package/dist/lib/floorplan/svg-paths.d.ts.map +1 -0
  116. package/dist/lib/floorplan/svg-paths.js +92 -0
  117. package/dist/lib/floorplan/wall-affordances.d.ts +31 -0
  118. package/dist/lib/floorplan/wall-affordances.d.ts.map +1 -0
  119. package/dist/lib/floorplan/wall-affordances.js +24 -0
  120. package/dist/lib/hierarchy.d.ts +19 -0
  121. package/dist/lib/hierarchy.d.ts.map +1 -0
  122. package/dist/lib/hierarchy.js +53 -0
  123. package/dist/lib/opening-floor-datum.d.ts +1 -1
  124. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  125. package/dist/lib/opening-floor-datum.js +2 -2
  126. package/dist/lib/own-floor-intent.d.ts.map +1 -1
  127. package/dist/lib/own-floor-intent.js +2 -2
  128. package/dist/lib/polygon-boolean.d.ts.map +1 -1
  129. package/dist/lib/polygon-boolean.js +2 -1
  130. package/dist/lib/room-floor-elevation.d.ts +12 -0
  131. package/dist/lib/room-floor-elevation.d.ts.map +1 -0
  132. package/dist/lib/room-floor-elevation.js +41 -0
  133. package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
  134. package/dist/lib/room-floor-feasibility.js +1 -1
  135. package/dist/lib/space-detection.d.ts.map +1 -1
  136. package/dist/lib/space-detection.js +1 -0
  137. package/dist/lib/wall-face-script.d.ts.map +1 -1
  138. package/dist/lib/wall-face-script.js +3 -3
  139. package/dist/lib/window-interaction.d.ts +16 -0
  140. package/dist/lib/window-interaction.d.ts.map +1 -0
  141. package/dist/lib/window-interaction.js +82 -0
  142. package/dist/lib/zone-quantities.js +1 -1
  143. package/dist/node-slots/column.d.ts +5 -0
  144. package/dist/node-slots/column.d.ts.map +1 -1
  145. package/dist/node-slots/column.js +10 -0
  146. package/dist/registry/__fixtures__/roof-planes.d.ts +69 -0
  147. package/dist/registry/__fixtures__/roof-planes.d.ts.map +1 -0
  148. package/dist/registry/__fixtures__/roof-planes.js +59 -0
  149. package/dist/registry/index.d.ts +3 -2
  150. package/dist/registry/index.d.ts.map +1 -1
  151. package/dist/registry/index.js +2 -1
  152. package/dist/registry/registry.d.ts +5 -0
  153. package/dist/registry/registry.d.ts.map +1 -1
  154. package/dist/registry/registry.js +10 -0
  155. package/dist/registry/roofs.d.ts +34 -0
  156. package/dist/registry/roofs.d.ts.map +1 -0
  157. package/dist/registry/roofs.js +61 -0
  158. package/dist/registry/types.d.ts +54 -0
  159. package/dist/registry/types.d.ts.map +1 -1
  160. package/dist/registry/validate-relations.d.ts +5 -1
  161. package/dist/registry/validate-relations.d.ts.map +1 -1
  162. package/dist/registry/validate-relations.js +6 -2
  163. package/dist/schema/asset-url.d.ts +8 -0
  164. package/dist/schema/asset-url.d.ts.map +1 -1
  165. package/dist/schema/asset-url.js +17 -0
  166. package/dist/schema/index.d.ts +1 -1
  167. package/dist/schema/index.d.ts.map +1 -1
  168. package/dist/schema/index.js +1 -1
  169. package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -1
  170. package/dist/schema/nodes/roof-segment-resize.js +2 -2
  171. package/dist/schema/nodes/roof-segment.d.ts +2 -0
  172. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  173. package/dist/schema/nodes/roof-segment.js +40 -2
  174. package/dist/schema/nodes/roof.d.ts +1 -1
  175. package/dist/schema/nodes/roof.d.ts.map +1 -1
  176. package/dist/schema/nodes/roof.js +13 -8
  177. package/dist/schema/nodes/wall.d.ts +1 -0
  178. package/dist/schema/nodes/wall.d.ts.map +1 -1
  179. package/dist/schema/nodes/wall.js +6 -0
  180. package/dist/schema/types.d.ts +2 -1
  181. package/dist/schema/types.d.ts.map +1 -1
  182. package/dist/services/index.d.ts +1 -1
  183. package/dist/services/index.d.ts.map +1 -1
  184. package/dist/services/index.js +1 -1
  185. package/dist/services/movement.d.ts +7 -0
  186. package/dist/services/movement.d.ts.map +1 -1
  187. package/dist/services/movement.js +13 -0
  188. package/dist/services/port-connectivity.d.ts +15 -6
  189. package/dist/services/port-connectivity.d.ts.map +1 -1
  190. package/dist/services/port-connectivity.js +83 -17
  191. package/dist/services/roof-bearing.js +2 -1
  192. package/dist/services/roof-level.d.ts.map +1 -1
  193. package/dist/services/roof-level.js +12 -2
  194. package/dist/services/roof-move.d.ts +4 -2
  195. package/dist/services/roof-move.d.ts.map +1 -1
  196. package/dist/services/roof-move.js +21 -9
  197. package/dist/services/storey.d.ts +6 -1
  198. package/dist/services/storey.d.ts.map +1 -1
  199. package/dist/services/storey.js +11 -2
  200. package/dist/spatial/usage-field/findings.d.ts +7 -1
  201. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  202. package/dist/spatial/usage-field/findings.js +42 -10
  203. package/dist/spatial/usage-field/path.d.ts.map +1 -1
  204. package/dist/spatial/usage-field/path.js +28 -18
  205. package/dist/spatial/usage-field/swings.d.ts +1 -0
  206. package/dist/spatial/usage-field/swings.d.ts.map +1 -1
  207. package/dist/spatial/usage-field/walls.d.ts +2 -0
  208. package/dist/spatial/usage-field/walls.d.ts.map +1 -1
  209. package/dist/spatial/usage-field/walls.js +18 -4
  210. package/dist/store/actions/node-actions.d.ts +2 -1
  211. package/dist/store/actions/node-actions.d.ts.map +1 -1
  212. package/dist/store/actions/node-actions.js +23 -5
  213. package/dist/store/derived-node-guard.d.ts.map +1 -1
  214. package/dist/store/derived-node-guard.js +2 -1
  215. package/dist/store/scene-annotations.d.ts +4634 -4632
  216. package/dist/store/scene-annotations.d.ts.map +1 -1
  217. package/dist/systems/document-reconcile.d.ts.map +1 -1
  218. package/dist/systems/document-reconcile.js +1 -2
  219. package/dist/systems/elevator/elevator-geometry.d.ts +25 -0
  220. package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -1
  221. package/dist/systems/elevator/elevator-geometry.js +40 -8
  222. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  223. package/dist/systems/elevator/elevator-opening-sync.js +4 -35
  224. package/dist/systems/elevator/elevator-runtime.d.ts.map +1 -1
  225. package/dist/systems/elevator/elevator-runtime.js +95 -18
  226. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  227. package/dist/systems/elevator/elevator-service.js +24 -4
  228. package/dist/systems/roof/roof-elevation.d.ts +11 -6
  229. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  230. package/dist/systems/roof/roof-elevation.js +26 -12
  231. package/dist/systems/slab/__fixtures__/floor-step.d.ts +5 -1
  232. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  233. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2218 -2214
  234. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  235. package/dist/systems/stair/stair-opening-preview.d.ts +3203 -3202
  236. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  237. package/dist/systems/wall/wall-curve.d.ts +10 -0
  238. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  239. package/dist/systems/wall/wall-curve.js +38 -0
  240. package/dist/systems/wall/wall-frame.d.ts.map +1 -1
  241. package/dist/systems/wall/wall-frame.js +8 -0
  242. package/dist/systems/wall/wall-merge.d.ts +9 -1
  243. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  244. package/dist/systems/wall/wall-merge.js +38 -6
  245. package/dist/systems/wall/wall-top.d.ts +10 -3
  246. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  247. package/dist/systems/wall/wall-top.js +24 -8
  248. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  249. package/dist/systems/wall/wall-topology.js +19 -1
  250. package/dist/utils/ensure-scene-openings.d.ts +5595 -5593
  251. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  252. package/dist/utils/floor-plate-migration.d.ts +2267 -2266
  253. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  254. package/dist/utils/measurement-format.d.ts +27 -0
  255. package/dist/utils/measurement-format.d.ts.map +1 -0
  256. package/dist/utils/measurement-format.js +143 -0
  257. package/dist/utils/owned-floor-opening-migration.d.ts +653 -652
  258. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  259. package/dist/utils/reconcile-structure-on-load.d.ts +1724 -1723
  260. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  261. package/dist/utils/scene-bounds.d.ts +32 -0
  262. package/dist/utils/scene-bounds.d.ts.map +1 -0
  263. package/dist/utils/scene-bounds.js +201 -0
  264. package/dist/validation/validate-build-json.d.ts.map +1 -1
  265. package/dist/validation/validate-build-json.js +3 -1
  266. package/package.json +1 -1
@@ -24,7 +24,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
24
24
  fromIds: string[];
25
25
  } | undefined;
26
26
  } | undefined;
27
- id: `elevator_${string}`;
27
+ id: `bvent_${string}`;
28
28
  material?: {
29
29
  id?: string | undefined;
30
30
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -47,31 +47,24 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
47
47
  bumpScale?: number | undefined;
48
48
  } | undefined;
49
49
  } | undefined;
50
- materialPreset?: string | undefined;
51
50
  slots?: Record<string, string> | undefined;
51
+ materialPreset: string;
52
+ roofSegmentId?: string | undefined;
52
53
  position: [number, number, number];
53
54
  rotation: number;
54
55
  width: number;
55
56
  depth: number;
56
- shaftWidth?: number | undefined;
57
- shaftDepth?: number | undefined;
58
- shaftWallThickness: number;
59
- shaftStyle: "glass" | "solid";
60
- cabHeight: number;
61
- doorWidth: number;
62
- doorHeight: number;
63
- doorStyle: "center-opening" | "single-left" | "single-right";
64
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
65
- fromLevelId: string | null;
66
- toLevelId: string | null;
67
- servedLevelIds?: string[] | undefined;
68
- disabledLevelIds: string[];
69
- serviceOnlyLevelIds: string[];
70
- defaultLevelId: string | null;
71
- speed: number;
72
- doorDurationMs: number;
73
- dwellMs: number;
74
- type: "elevator";
57
+ height: number;
58
+ hoodOverhang: number;
59
+ topTaper: number;
60
+ capHeight: number;
61
+ capGap: number;
62
+ domeCurvature: number;
63
+ baseInset: number;
64
+ baseHeight: number;
65
+ cornerBevel: number;
66
+ style: "box" | "cap" | "dome";
67
+ type: "box-vent";
75
68
  } | {
76
69
  object: "node";
77
70
  name?: string | undefined;
@@ -96,21 +89,11 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
96
89
  fromIds: string[];
97
90
  } | undefined;
98
91
  } | undefined;
99
- type: "item";
100
- id: `item_${string}`;
101
- position: [number, number, number];
102
- rotation: [number, number, number];
103
- scale: [number, number, number];
104
- side?: "back" | "front" | undefined;
92
+ id: `column_${string}`;
105
93
  children: string[];
106
- wallId?: string | undefined;
107
- wallT?: number | undefined;
108
- roofSegmentId?: string | undefined;
109
- roofFace?: "back" | "front" | "left" | "right" | undefined;
110
- blockFaceId?: string | undefined;
94
+ position: [number, number, number];
95
+ rotation: number;
111
96
  supportSlabId?: string | undefined;
112
- collectionIds?: `collection_${string}`[] | undefined;
113
- slots?: Record<string, string> | undefined;
114
97
  source?: {
115
98
  kind: "script";
116
99
  meta?: {
@@ -225,76 +208,104 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
225
208
  floorPlan: string;
226
209
  } | undefined;
227
210
  } | undefined;
228
- asset: {
229
- id: string;
230
- category: string;
231
- name: string;
232
- thumbnail: string;
233
- floorPlanUrl?: string | undefined;
234
- source: "community" | "library" | "mine";
235
- isDraft?: boolean | undefined;
236
- src: string;
237
- dimensions: [number, number, number];
238
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
239
- recessed?: boolean | undefined;
240
- tags?: string[] | undefined;
241
- functionTags?: string[] | undefined;
242
- offset: [number, number, number];
243
- rotation: [number, number, number];
244
- scale: [number, number, number];
245
- surface?: {
246
- height: number;
211
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
212
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
213
+ height: number;
214
+ radius: number;
215
+ width: number;
216
+ depth: number;
217
+ edgeSoftness: number;
218
+ baseHeight: number;
219
+ capitalHeight: number;
220
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
221
+ shaftTaper: number;
222
+ shaftBulge: number;
223
+ shaftStartScale: number;
224
+ shaftEndScale: number;
225
+ shaftSegmentCount: number;
226
+ shaftTwistStep: number;
227
+ shaftCornerRadius: number;
228
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
229
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
230
+ baseWidthScale: number;
231
+ baseDepthScale: number;
232
+ baseTierCount: number;
233
+ baseStepSpread: number;
234
+ basePlinthHeightRatio: number;
235
+ baseRoundBandScale: number;
236
+ baseNeckScale: number;
237
+ baseRoundBandCount: number;
238
+ baseRibCount: number;
239
+ baseCarvingLevel: number;
240
+ basePanelInset: number;
241
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
242
+ capitalWidthScale: number;
243
+ capitalDepthScale: number;
244
+ capitalTierCount: number;
245
+ capitalStepSpread: number;
246
+ capitalBandCount: number;
247
+ voluteSize: number;
248
+ voluteCount: number;
249
+ leafCount: number;
250
+ leafRows: number;
251
+ bracketDepth: number;
252
+ bracketTierCount: number;
253
+ pendantCount: number;
254
+ capitalCarvingLevel: number;
255
+ ringCount: number;
256
+ ringPlacement: "bottom" | "ends" | "even" | "top";
257
+ ringThickness: number;
258
+ ringSpread: number;
259
+ fluteCount: number;
260
+ fluteDepth: number;
261
+ fluteWidth: number;
262
+ spiralTwist: number;
263
+ spiralRibCount: number;
264
+ panelCount: number;
265
+ panelInsetDepth: number;
266
+ panelShape: "arched" | "diamond" | "rectangle";
267
+ latheRingCount: number;
268
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
269
+ carvingLevel: number;
270
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
271
+ lowerBandEnabled: boolean;
272
+ lowerBandHeight: number;
273
+ lowerBandCarvingLevel: number;
274
+ dentilCount: number;
275
+ beadCount: number;
276
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
277
+ braceWidth: number;
278
+ braceDepth: number;
279
+ braceBottomSpread: number;
280
+ braceTopSpread: number;
281
+ bracePlateEnabled: boolean;
282
+ role?: "ornament" | "post" | undefined;
283
+ postBase?: "none" | "pier" | "post-base" | undefined;
284
+ material?: {
285
+ id?: string | undefined;
286
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
287
+ properties?: {
288
+ color: string;
289
+ roughness: number;
290
+ metalness: number;
291
+ opacity: number;
292
+ transparent: boolean;
293
+ side: "back" | "double" | "front";
247
294
  } | undefined;
248
- interactive?: {
249
- controls: ({
250
- kind: "toggle";
251
- label?: string | undefined;
252
- default?: boolean | undefined;
253
- } | {
254
- kind: "slider";
255
- label: string;
256
- min: number;
257
- max: number;
258
- step: number;
259
- unit?: string | undefined;
260
- displayMode: "dial" | "slider" | "stepper";
261
- default?: number | undefined;
262
- } | {
263
- kind: "temperature";
264
- label: string;
265
- min: number;
266
- max: number;
267
- unit: "C" | "F";
268
- default?: number | undefined;
269
- })[];
270
- effects: ({
271
- kind: "animation";
272
- mode?: "ambient" | "open-close" | undefined;
273
- control?: number | undefined;
274
- clips: {
275
- on?: string | undefined;
276
- off?: string | undefined;
277
- loop?: string | undefined;
278
- };
279
- } | {
280
- kind: "light";
281
- color: string;
282
- intensityRange: [number, number];
283
- distance?: number | undefined;
284
- offset: [number, number, number];
285
- spot?: {
286
- direction: [number, number, number];
287
- angle: number;
288
- softness: number;
289
- } | undefined;
290
- shadows?: boolean | undefined;
291
- glow?: {
292
- size: number;
293
- strength: number;
294
- } | undefined;
295
- })[];
295
+ texture?: {
296
+ url: string;
297
+ repeat?: [number, number] | undefined;
298
+ scale?: number | undefined;
299
+ offset?: [number, number] | undefined;
300
+ normalMap?: string | undefined;
301
+ normalScale?: number | undefined;
302
+ bumpMap?: string | undefined;
303
+ bumpScale?: number | undefined;
296
304
  } | undefined;
297
- };
305
+ } | undefined;
306
+ materialPreset?: string | undefined;
307
+ slots?: Record<string, string> | undefined;
308
+ type: "column";
298
309
  } | {
299
310
  object: "node";
300
311
  name?: string | undefined;
@@ -319,74 +330,70 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
319
330
  fromIds: string[];
320
331
  } | undefined;
321
332
  } | undefined;
322
- id: `ceiling_${string}`;
323
- children: (`item_${string}` | `procedural-item_${string}`)[];
324
- material?: {
325
- id?: string | undefined;
326
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
327
- properties?: {
328
- color: string;
329
- roughness: number;
330
- metalness: number;
331
- opacity: number;
332
- transparent: boolean;
333
- side: "back" | "double" | "front";
334
- } | undefined;
335
- texture?: {
336
- url: string;
337
- repeat?: [number, number] | undefined;
338
- scale?: number | undefined;
339
- offset?: [number, number] | undefined;
340
- normalMap?: string | undefined;
341
- normalScale?: number | undefined;
342
- bumpMap?: string | undefined;
343
- bumpScale?: number | undefined;
344
- } | undefined;
345
- } | undefined;
346
- materialPreset?: string | undefined;
347
- slots?: Record<string, string> | undefined;
348
- polygon: [number, number][];
349
- holes: [number, number][][];
350
- holeMetadata: {
351
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
352
- openingId?: string | undefined;
353
- stairId?: string | undefined;
354
- elevatorId?: string | undefined;
355
- }[];
356
- openingIds?: string[] | undefined;
357
- height?: number | undefined;
358
- buildUp?: {
359
- presetId?: string | undefined;
360
- finish?: {
361
- kind: "drywall" | "plaster" | "wood-plank";
362
- thickness: number;
363
- name?: string | undefined;
364
- } | undefined;
365
- framing?: {
366
- system: "joists" | "truss-chords";
367
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
368
- spacing: number;
369
- } | undefined;
370
- decking?: {
371
- kind: "osb" | "plywood";
372
- thickness: number;
373
- name?: string | undefined;
374
- } | undefined;
375
- insulation?: {
376
- kind: "batt" | "blown" | "rigid";
377
- thickness: number;
378
- name?: string | undefined;
333
+ id: `duct-fitting_${string}`;
334
+ position: [number, number, number];
335
+ rotation: [number, number, number];
336
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
337
+ shape: "oval" | "rect" | "round";
338
+ inletShape?: "oval" | "rect" | "round" | undefined;
339
+ outletShape?: "oval" | "rect" | "round" | undefined;
340
+ width: number;
341
+ height: number;
342
+ shape2: "oval" | "rect" | "round";
343
+ width2: number;
344
+ height2: number;
345
+ angle: number;
346
+ branchAngle: number;
347
+ diameter: number;
348
+ diameter2: number;
349
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
350
+ system: "return" | "supply";
351
+ damperAngle: number;
352
+ panelWidth: number;
353
+ panelHeight: number;
354
+ slots?: Record<string, string> | undefined;
355
+ type: "duct-fitting";
356
+ } | {
357
+ object: "node";
358
+ name?: string | undefined;
359
+ parentId: string | null;
360
+ visible: boolean;
361
+ camera?: {
362
+ position: [number, number, number];
363
+ target: [number, number, number];
364
+ mode: "orthographic" | "perspective";
365
+ fov?: number | undefined;
366
+ zoom?: number | undefined;
367
+ } | undefined;
368
+ metadata: Record<string, unknown>;
369
+ provenance?: {
370
+ refs: {
371
+ ns?: string | undefined;
372
+ id: string;
373
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
374
+ }[];
375
+ lineage?: {
376
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
377
+ fromIds: string[];
379
378
  } | undefined;
380
379
  } | undefined;
381
- regions?: {
382
- id: string;
383
- polygon: [number, number][];
384
- finish: string | Record<string, unknown>;
385
- }[] | undefined;
386
- boundary?: "auto" | undefined;
387
- zoneId?: string | undefined;
388
- autoFromWalls: boolean;
389
- type: "ceiling";
380
+ id: `hvac-equipment_${string}`;
381
+ position: [number, number, number];
382
+ rotation: number;
383
+ supportSlabId?: string | undefined;
384
+ equipmentType: "air-handler" | "condenser" | "furnace";
385
+ width: number;
386
+ depth: number;
387
+ height: number;
388
+ supplyShape: "oval" | "rect" | "round";
389
+ returnShape: "oval" | "rect" | "round";
390
+ supplyDiameter: number;
391
+ returnDiameter: number;
392
+ supplyWidth: number;
393
+ supplyHeight: number;
394
+ returnWidth: number;
395
+ returnHeight: number;
396
+ type: "hvac-equipment";
390
397
  } | {
391
398
  object: "node";
392
399
  name?: string | undefined;
@@ -411,42 +418,17 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
411
418
  fromIds: string[];
412
419
  } | undefined;
413
420
  } | undefined;
414
- id: `construction-dimension_${string}`;
415
- anchors: ({
416
- kind: "feature";
417
- reference: {
418
- nodeId: string;
419
- featureId: string;
420
- parameters?: Record<string, string | number | boolean> | undefined;
421
- };
422
- fallback: [number, number, number];
423
- } | [number, number, number])[];
424
- baseline: {
425
- origin: [number, number];
426
- direction: [number, number];
427
- };
428
- chainMode: "continuous" | "point-to-point";
429
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
430
- featureCount: number;
431
- showCenterMark: boolean;
432
- prefix: string;
433
- suffix: string;
434
- textOverride: string | null;
435
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
436
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
437
- textPosition: "above" | "centered";
438
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
439
- metricNotation: "meters" | "millimeters";
440
- extensionStartGap: number;
441
- extensionOvershoot: number;
442
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
443
- drawingOverrides: {
444
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
445
- presentation: "controlled" | "omit" | "shown";
446
- suppressedSegmentIndexes: number[];
447
- }[];
448
- controllingDimensionId: `construction-dimension_${string}` | null;
449
- type: "construction-dimension";
421
+ id: `pipe-fitting_${string}`;
422
+ position: [number, number, number];
423
+ rotation: [number, number, number];
424
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
425
+ angle: number;
426
+ diameter: number;
427
+ diameter2: number;
428
+ cleanoutStyle: "end" | "inline";
429
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
430
+ system: "vent" | "waste";
431
+ type: "pipe-fitting";
450
432
  } | {
451
433
  object: "node";
452
434
  name?: string | undefined;
@@ -687,29 +669,20 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
687
669
  fromIds: string[];
688
670
  } | undefined;
689
671
  } | undefined;
690
- id: `door_${string}`;
691
- material?: {
692
- id?: string | undefined;
693
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
694
- properties?: {
695
- color: string;
696
- roughness: number;
697
- metalness: number;
698
- opacity: number;
699
- transparent: boolean;
700
- side: "back" | "double" | "front";
701
- } | undefined;
702
- texture?: {
703
- url: string;
704
- repeat?: [number, number] | undefined;
705
- scale?: number | undefined;
706
- offset?: [number, number] | undefined;
707
- normalMap?: string | undefined;
708
- normalScale?: number | undefined;
709
- bumpMap?: string | undefined;
710
- bumpScale?: number | undefined;
711
- } | undefined;
712
- } | undefined;
672
+ type: "item";
673
+ id: `item_${string}`;
674
+ position: [number, number, number];
675
+ rotation: [number, number, number];
676
+ scale: [number, number, number];
677
+ side?: "back" | "front" | undefined;
678
+ children: string[];
679
+ wallId?: string | undefined;
680
+ wallT?: number | undefined;
681
+ roofSegmentId?: string | undefined;
682
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
683
+ blockFaceId?: string | undefined;
684
+ supportSlabId?: string | undefined;
685
+ collectionIds?: `collection_${string}`[] | undefined;
713
686
  slots?: Record<string, string> | undefined;
714
687
  source?: {
715
688
  kind: "script";
@@ -825,72 +798,76 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
825
798
  floorPlan: string;
826
799
  } | undefined;
827
800
  } | undefined;
828
- position: [number, number, number];
829
- rotation: [number, number, number];
830
- side?: "back" | "front" | undefined;
831
- verticalAnchor?: "floor" | "wall" | undefined;
832
- floorThresholdVersion: 0 | 1;
833
- wallId?: string | undefined;
834
- roofSegmentId?: string | undefined;
835
- roofFace?: "back" | "front" | "left" | "right" | undefined;
836
- width: number;
837
- height: number;
838
- sidelightLeft?: number | undefined;
839
- sidelightRight?: number | undefined;
840
- transomHeight?: number | undefined;
841
- slidingStyle?: "bypass" | "patio" | undefined;
842
- mark?: string | undefined;
843
- constructionType: "framed" | "masonry";
844
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
845
- roughOpeningWidth?: number | undefined;
846
- roughOpeningHeight?: number | undefined;
847
- masonryOpeningWidth?: number | undefined;
848
- masonryOpeningHeight?: number | undefined;
849
- finishOpeningWidth?: number | undefined;
850
- finishOpeningHeight?: number | undefined;
851
- doorCategory: "garage" | "interior";
852
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
853
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
854
- operationState: number;
855
- slideDirection: "left" | "right";
856
- trackStyle: "none" | "overhead" | "pocket" | "visible";
857
- garagePanelCount: number;
858
- openingKind: "door" | "opening";
859
- openingShape: "arch" | "rectangle" | "rounded";
860
- openingRadiusMode: "all" | "individual";
861
- openingTopRadii: [number, number];
862
- cornerRadius: number;
863
- archHeight: number;
864
- openingRevealRadius: number;
865
- frameThickness: number;
866
- frameDepth?: number | undefined;
867
- threshold: boolean;
868
- thresholdHeight: number;
869
- casingFaceA?: boolean | undefined;
870
- casingFaceB?: boolean | undefined;
871
- casingWidth?: number | undefined;
872
- hingesSide: "left" | "right";
873
- swingDirection: "inward" | "outward";
874
- swingAngle: number;
875
- segments: {
876
- type: "empty" | "glass" | "panel";
877
- heightRatio: number;
878
- columnRatios: number[];
879
- dividerThickness: number;
880
- panelDepth: number;
881
- panelInset: number;
882
- }[];
883
- handle: boolean;
884
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
885
- handleHeight: number;
886
- handleSide: "left" | "right";
887
- contentPadding: [number, number];
888
- doorCloser: boolean;
889
- panicBar: boolean;
890
- panicBarStyle: "crossbar" | "touchbar";
891
- panicBarRods: boolean;
892
- panicBarHeight: number;
893
- type: "door";
801
+ asset: {
802
+ id: string;
803
+ category: string;
804
+ name: string;
805
+ thumbnail: string;
806
+ floorPlanUrl?: string | undefined;
807
+ source: "community" | "library" | "mine";
808
+ isDraft?: boolean | undefined;
809
+ src: string;
810
+ dimensions: [number, number, number];
811
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
812
+ recessed?: boolean | undefined;
813
+ tags?: string[] | undefined;
814
+ functionTags?: string[] | undefined;
815
+ offset: [number, number, number];
816
+ rotation: [number, number, number];
817
+ scale: [number, number, number];
818
+ surface?: {
819
+ height: number;
820
+ } | undefined;
821
+ interactive?: {
822
+ controls: ({
823
+ kind: "toggle";
824
+ label?: string | undefined;
825
+ default?: boolean | undefined;
826
+ } | {
827
+ kind: "slider";
828
+ label: string;
829
+ min: number;
830
+ max: number;
831
+ step: number;
832
+ unit?: string | undefined;
833
+ displayMode: "dial" | "slider" | "stepper";
834
+ default?: number | undefined;
835
+ } | {
836
+ kind: "temperature";
837
+ label: string;
838
+ min: number;
839
+ max: number;
840
+ unit: "C" | "F";
841
+ default?: number | undefined;
842
+ })[];
843
+ effects: ({
844
+ kind: "animation";
845
+ mode?: "ambient" | "open-close" | undefined;
846
+ control?: number | undefined;
847
+ clips: {
848
+ on?: string | undefined;
849
+ off?: string | undefined;
850
+ loop?: string | undefined;
851
+ };
852
+ } | {
853
+ kind: "light";
854
+ color: string;
855
+ intensityRange: [number, number];
856
+ distance?: number | undefined;
857
+ offset: [number, number, number];
858
+ spot?: {
859
+ direction: [number, number, number];
860
+ angle: number;
861
+ softness: number;
862
+ } | undefined;
863
+ shadows?: boolean | undefined;
864
+ glow?: {
865
+ size: number;
866
+ strength: number;
867
+ } | undefined;
868
+ })[];
869
+ } | undefined;
870
+ };
894
871
  } | {
895
872
  object: "node";
896
873
  name?: string | undefined;
@@ -915,7 +892,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
915
892
  fromIds: string[];
916
893
  } | undefined;
917
894
  } | undefined;
918
- id: `window_${string}`;
895
+ id: `door_${string}`;
919
896
  material?: {
920
897
  id?: string | undefined;
921
898
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1059,12 +1036,14 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1059
1036
  verticalAnchor?: "floor" | "wall" | undefined;
1060
1037
  floorThresholdVersion: 0 | 1;
1061
1038
  wallId?: string | undefined;
1062
- dormerId?: string | undefined;
1063
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1064
1039
  roofSegmentId?: string | undefined;
1065
1040
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1066
1041
  width: number;
1067
1042
  height: number;
1043
+ sidelightLeft?: number | undefined;
1044
+ sidelightRight?: number | undefined;
1045
+ transomHeight?: number | undefined;
1046
+ slidingStyle?: "bypass" | "patio" | undefined;
1068
1047
  mark?: string | undefined;
1069
1048
  constructionType: "framed" | "masonry";
1070
1049
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -1074,52 +1053,49 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1074
1053
  masonryOpeningHeight?: number | undefined;
1075
1054
  finishOpeningWidth?: number | undefined;
1076
1055
  finishOpeningHeight?: number | undefined;
1077
- openingKind: "opening" | "window";
1078
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1056
+ doorCategory: "garage" | "interior";
1057
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1058
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
1079
1059
  operationState: number;
1080
- openingDirection?: "inward" | "outward" | undefined;
1081
- tiltTurnMode?: "tilt" | "turn" | undefined;
1082
- awningDirection: "down" | "up";
1083
- casementStyle: "french" | "single";
1084
- hingesSide: "left" | "right";
1060
+ slideDirection: "left" | "right";
1061
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
1062
+ garagePanelCount: number;
1063
+ openingKind: "door" | "opening";
1085
1064
  openingShape: "arch" | "rectangle" | "rounded";
1086
1065
  openingRadiusMode: "all" | "individual";
1087
- openingCornerRadii: [number, number, number, number];
1066
+ openingTopRadii: [number, number];
1088
1067
  cornerRadius: number;
1089
1068
  archHeight: number;
1090
1069
  openingRevealRadius: number;
1091
1070
  frameThickness: number;
1092
1071
  frameDepth?: number | undefined;
1093
- windowHandle?: boolean | undefined;
1094
- sashGrid?: boolean | undefined;
1095
- columnRatios: number[];
1096
- rowRatios: number[];
1097
- columnDividerThickness: number;
1098
- rowDividerThickness: number;
1099
- corner?: {
1100
- end: "end" | "start";
1101
- partnerId: string;
1102
- post: "none" | "post";
1103
- } | undefined;
1104
- sill: boolean;
1105
- sillDepth: number;
1106
- sillThickness: number;
1107
- sillOverhang?: number | undefined;
1108
- sillInterior?: boolean | undefined;
1109
- sillInteriorDepth?: number | undefined;
1110
- sillInteriorThickness?: number | undefined;
1111
- sillInteriorOverhang?: number | undefined;
1112
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1113
- shutterWidth?: number | undefined;
1114
- shutterOpen?: number | undefined;
1115
- shutterSides?: "both" | "left" | "right" | undefined;
1116
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1117
- rollerShutterBoxHeight?: number | undefined;
1118
- rollerShutterOpen?: number | undefined;
1072
+ threshold: boolean;
1073
+ thresholdHeight: number;
1119
1074
  casingFaceA?: boolean | undefined;
1120
1075
  casingFaceB?: boolean | undefined;
1121
1076
  casingWidth?: number | undefined;
1122
- type: "window";
1077
+ hingesSide: "left" | "right";
1078
+ swingDirection: "inward" | "outward";
1079
+ swingAngle: number;
1080
+ segments: {
1081
+ type: "empty" | "glass" | "panel";
1082
+ heightRatio: number;
1083
+ columnRatios: number[];
1084
+ dividerThickness: number;
1085
+ panelDepth: number;
1086
+ panelInset: number;
1087
+ }[];
1088
+ handle: boolean;
1089
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1090
+ handleHeight: number;
1091
+ handleSide: "left" | "right";
1092
+ contentPadding: [number, number];
1093
+ doorCloser: boolean;
1094
+ panicBar: boolean;
1095
+ panicBarStyle: "crossbar" | "touchbar";
1096
+ panicBarRods: boolean;
1097
+ panicBarHeight: number;
1098
+ type: "door";
1123
1099
  } | {
1124
1100
  object: "node";
1125
1101
  name?: string | undefined;
@@ -1144,11 +1120,30 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1144
1120
  fromIds: string[];
1145
1121
  } | undefined;
1146
1122
  } | undefined;
1147
- id: `column_${string}`;
1148
- children: string[];
1149
- position: [number, number, number];
1150
- rotation: number;
1151
- supportSlabId?: string | undefined;
1123
+ id: `window_${string}`;
1124
+ material?: {
1125
+ id?: string | undefined;
1126
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1127
+ properties?: {
1128
+ color: string;
1129
+ roughness: number;
1130
+ metalness: number;
1131
+ opacity: number;
1132
+ transparent: boolean;
1133
+ side: "back" | "double" | "front";
1134
+ } | undefined;
1135
+ texture?: {
1136
+ url: string;
1137
+ repeat?: [number, number] | undefined;
1138
+ scale?: number | undefined;
1139
+ offset?: [number, number] | undefined;
1140
+ normalMap?: string | undefined;
1141
+ normalScale?: number | undefined;
1142
+ bumpMap?: string | undefined;
1143
+ bumpScale?: number | undefined;
1144
+ } | undefined;
1145
+ } | undefined;
1146
+ slots?: Record<string, string> | undefined;
1152
1147
  source?: {
1153
1148
  kind: "script";
1154
1149
  meta?: {
@@ -1232,135 +1227,104 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1232
1227
  duration: number;
1233
1228
  }[];
1234
1229
  cutters?: {
1235
- host: "ceiling" | "mounted" | "slab" | "wall";
1236
- polygon: number[][];
1237
- minY: number;
1238
- maxY: number;
1239
- }[] | undefined;
1240
- cutout: boolean;
1241
- collider: boolean;
1242
- shape?: {
1243
- tolerance: number;
1244
- bands: {
1245
- y0: number;
1246
- y1: number;
1247
- polygons: {
1248
- outer: [number, number][];
1249
- holes?: [number, number][][] | undefined;
1250
- }[];
1251
- }[];
1252
- } | undefined;
1253
- triangles: number;
1254
- coverage?: number | undefined;
1255
- uncovered?: {
1256
- min: [number, number];
1257
- max: [number, number];
1258
- }[] | undefined;
1259
- };
1260
- images?: {
1261
- artifact: string;
1262
- thumbnail: string;
1263
- floorPlan: string;
1264
- } | undefined;
1265
- } | undefined;
1266
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1267
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1268
- height: number;
1269
- radius: number;
1270
- width: number;
1271
- depth: number;
1272
- edgeSoftness: number;
1273
- baseHeight: number;
1274
- capitalHeight: number;
1275
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1276
- shaftTaper: number;
1277
- shaftBulge: number;
1278
- shaftStartScale: number;
1279
- shaftEndScale: number;
1280
- shaftSegmentCount: number;
1281
- shaftTwistStep: number;
1282
- shaftCornerRadius: number;
1283
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1284
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1285
- baseWidthScale: number;
1286
- baseDepthScale: number;
1287
- baseTierCount: number;
1288
- baseStepSpread: number;
1289
- basePlinthHeightRatio: number;
1290
- baseRoundBandScale: number;
1291
- baseNeckScale: number;
1292
- baseRoundBandCount: number;
1293
- baseRibCount: number;
1294
- baseCarvingLevel: number;
1295
- basePanelInset: number;
1296
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1297
- capitalWidthScale: number;
1298
- capitalDepthScale: number;
1299
- capitalTierCount: number;
1300
- capitalStepSpread: number;
1301
- capitalBandCount: number;
1302
- voluteSize: number;
1303
- voluteCount: number;
1304
- leafCount: number;
1305
- leafRows: number;
1306
- bracketDepth: number;
1307
- bracketTierCount: number;
1308
- pendantCount: number;
1309
- capitalCarvingLevel: number;
1310
- ringCount: number;
1311
- ringPlacement: "bottom" | "ends" | "even" | "top";
1312
- ringThickness: number;
1313
- ringSpread: number;
1314
- fluteCount: number;
1315
- fluteDepth: number;
1316
- fluteWidth: number;
1317
- spiralTwist: number;
1318
- spiralRibCount: number;
1319
- panelCount: number;
1320
- panelInsetDepth: number;
1321
- panelShape: "arched" | "diamond" | "rectangle";
1322
- latheRingCount: number;
1323
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
1324
- carvingLevel: number;
1325
- carvingPlacement: "all" | "base" | "capital" | "shaft";
1326
- lowerBandEnabled: boolean;
1327
- lowerBandHeight: number;
1328
- lowerBandCarvingLevel: number;
1329
- dentilCount: number;
1330
- beadCount: number;
1331
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1332
- braceWidth: number;
1333
- braceDepth: number;
1334
- braceBottomSpread: number;
1335
- braceTopSpread: number;
1336
- bracePlateEnabled: boolean;
1337
- role?: "ornament" | "post" | undefined;
1338
- postBase?: "none" | "pier" | "post-base" | undefined;
1339
- material?: {
1340
- id?: string | undefined;
1341
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1342
- properties?: {
1343
- color: string;
1344
- roughness: number;
1345
- metalness: number;
1346
- opacity: number;
1347
- transparent: boolean;
1348
- side: "back" | "double" | "front";
1349
- } | undefined;
1350
- texture?: {
1351
- url: string;
1352
- repeat?: [number, number] | undefined;
1353
- scale?: number | undefined;
1354
- offset?: [number, number] | undefined;
1355
- normalMap?: string | undefined;
1356
- normalScale?: number | undefined;
1357
- bumpMap?: string | undefined;
1358
- bumpScale?: number | undefined;
1230
+ host: "ceiling" | "mounted" | "slab" | "wall";
1231
+ polygon: number[][];
1232
+ minY: number;
1233
+ maxY: number;
1234
+ }[] | undefined;
1235
+ cutout: boolean;
1236
+ collider: boolean;
1237
+ shape?: {
1238
+ tolerance: number;
1239
+ bands: {
1240
+ y0: number;
1241
+ y1: number;
1242
+ polygons: {
1243
+ outer: [number, number][];
1244
+ holes?: [number, number][][] | undefined;
1245
+ }[];
1246
+ }[];
1247
+ } | undefined;
1248
+ triangles: number;
1249
+ coverage?: number | undefined;
1250
+ uncovered?: {
1251
+ min: [number, number];
1252
+ max: [number, number];
1253
+ }[] | undefined;
1254
+ };
1255
+ images?: {
1256
+ artifact: string;
1257
+ thumbnail: string;
1258
+ floorPlan: string;
1359
1259
  } | undefined;
1360
1260
  } | undefined;
1361
- materialPreset?: string | undefined;
1362
- slots?: Record<string, string> | undefined;
1363
- type: "column";
1261
+ position: [number, number, number];
1262
+ rotation: [number, number, number];
1263
+ side?: "back" | "front" | undefined;
1264
+ verticalAnchor?: "floor" | "wall" | undefined;
1265
+ floorThresholdVersion: 0 | 1;
1266
+ wallId?: string | undefined;
1267
+ dormerId?: string | undefined;
1268
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1269
+ roofSegmentId?: string | undefined;
1270
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
1271
+ width: number;
1272
+ height: number;
1273
+ mark?: string | undefined;
1274
+ constructionType: "framed" | "masonry";
1275
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1276
+ roughOpeningWidth?: number | undefined;
1277
+ roughOpeningHeight?: number | undefined;
1278
+ masonryOpeningWidth?: number | undefined;
1279
+ masonryOpeningHeight?: number | undefined;
1280
+ finishOpeningWidth?: number | undefined;
1281
+ finishOpeningHeight?: number | undefined;
1282
+ openingKind: "opening" | "window";
1283
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1284
+ operationState: number;
1285
+ openingDirection?: "inward" | "outward" | undefined;
1286
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1287
+ awningDirection: "down" | "up";
1288
+ casementStyle: "french" | "single";
1289
+ hingesSide: "left" | "right";
1290
+ openingShape: "arch" | "rectangle" | "rounded";
1291
+ openingRadiusMode: "all" | "individual";
1292
+ openingCornerRadii: [number, number, number, number];
1293
+ cornerRadius: number;
1294
+ archHeight: number;
1295
+ openingRevealRadius: number;
1296
+ frameThickness: number;
1297
+ frameDepth?: number | undefined;
1298
+ windowHandle?: boolean | undefined;
1299
+ sashGrid?: boolean | undefined;
1300
+ columnRatios: number[];
1301
+ rowRatios: number[];
1302
+ columnDividerThickness: number;
1303
+ rowDividerThickness: number;
1304
+ corner?: {
1305
+ end: "end" | "start";
1306
+ partnerId: string;
1307
+ post: "none" | "post";
1308
+ } | undefined;
1309
+ sill: boolean;
1310
+ sillDepth: number;
1311
+ sillThickness: number;
1312
+ sillOverhang?: number | undefined;
1313
+ sillInterior?: boolean | undefined;
1314
+ sillInteriorDepth?: number | undefined;
1315
+ sillInteriorThickness?: number | undefined;
1316
+ sillInteriorOverhang?: number | undefined;
1317
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1318
+ shutterWidth?: number | undefined;
1319
+ shutterOpen?: number | undefined;
1320
+ shutterSides?: "both" | "left" | "right" | undefined;
1321
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1322
+ rollerShutterBoxHeight?: number | undefined;
1323
+ rollerShutterOpen?: number | undefined;
1324
+ casingFaceA?: boolean | undefined;
1325
+ casingFaceB?: boolean | undefined;
1326
+ casingWidth?: number | undefined;
1327
+ type: "window";
1364
1328
  } | {
1365
1329
  object: "node";
1366
1330
  name?: string | undefined;
@@ -1893,7 +1857,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1893
1857
  cavityInsulation?: string | undefined;
1894
1858
  } | undefined;
1895
1859
  slots?: Record<string, string> | undefined;
1896
- children: `rseg_${string}`[];
1860
+ children: string[];
1897
1861
  type: "roof";
1898
1862
  } | {
1899
1863
  object: "node";
@@ -2448,6 +2412,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
2448
2412
  } | undefined;
2449
2413
  justification?: "a" | "b" | undefined;
2450
2414
  height?: number | undefined;
2415
+ endHeightOffset?: number | undefined;
2451
2416
  curveOffset?: number | undefined;
2452
2417
  supportSlabId?: string | undefined;
2453
2418
  supportOffset?: number | undefined;
@@ -2920,6 +2885,66 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
2920
2885
  topElevation?: number | undefined;
2921
2886
  supportSlabId?: string | undefined;
2922
2887
  type: "beam";
2888
+ } | {
2889
+ object: "node";
2890
+ name?: string | undefined;
2891
+ parentId: string | null;
2892
+ visible: boolean;
2893
+ camera?: {
2894
+ position: [number, number, number];
2895
+ target: [number, number, number];
2896
+ mode: "orthographic" | "perspective";
2897
+ fov?: number | undefined;
2898
+ zoom?: number | undefined;
2899
+ } | undefined;
2900
+ metadata: Record<string, unknown>;
2901
+ provenance?: {
2902
+ refs: {
2903
+ ns?: string | undefined;
2904
+ id: string;
2905
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2906
+ }[];
2907
+ lineage?: {
2908
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2909
+ fromIds: string[];
2910
+ } | undefined;
2911
+ } | undefined;
2912
+ id: `construction-dimension_${string}`;
2913
+ anchors: ({
2914
+ kind: "feature";
2915
+ reference: {
2916
+ nodeId: string;
2917
+ featureId: string;
2918
+ parameters?: Record<string, string | number | boolean> | undefined;
2919
+ };
2920
+ fallback: [number, number, number];
2921
+ } | [number, number, number])[];
2922
+ baseline: {
2923
+ origin: [number, number];
2924
+ direction: [number, number];
2925
+ };
2926
+ chainMode: "continuous" | "point-to-point";
2927
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2928
+ featureCount: number;
2929
+ showCenterMark: boolean;
2930
+ prefix: string;
2931
+ suffix: string;
2932
+ textOverride: string | null;
2933
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2934
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2935
+ textPosition: "above" | "centered";
2936
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2937
+ metricNotation: "meters" | "millimeters";
2938
+ extensionStartGap: number;
2939
+ extensionOvershoot: number;
2940
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2941
+ drawingOverrides: {
2942
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2943
+ presentation: "controlled" | "omit" | "shown";
2944
+ suppressedSegmentIndexes: number[];
2945
+ }[];
2946
+ controllingDimensionId: `construction-dimension_${string}` | null;
2947
+ type: "construction-dimension";
2923
2948
  } | {
2924
2949
  object: "node";
2925
2950
  name?: string | undefined;
@@ -3430,20 +3455,112 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
3430
3455
  face: "a" | "b";
3431
3456
  finish: string;
3432
3457
  }[] | undefined;
3433
- hasFloor?: false | undefined;
3434
- hasCeiling?: false | undefined;
3435
- spaceRole: "generic" | "room";
3436
- roomNumber: string;
3437
- enclosureStatus: "auto" | "enclosed" | "open";
3438
- floorFinish: string;
3439
- wallFinish: string;
3440
- ceilingFinish: string;
3441
- ceilingHeight: number;
3442
- occupancy: string;
3443
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3444
- color: string;
3445
- metadata: Record<string, unknown>;
3446
- type: "zone";
3458
+ hasFloor?: false | undefined;
3459
+ hasCeiling?: false | undefined;
3460
+ spaceRole: "generic" | "room";
3461
+ roomNumber: string;
3462
+ enclosureStatus: "auto" | "enclosed" | "open";
3463
+ floorFinish: string;
3464
+ wallFinish: string;
3465
+ ceilingFinish: string;
3466
+ ceilingHeight: number;
3467
+ occupancy: string;
3468
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3469
+ color: string;
3470
+ metadata: Record<string, unknown>;
3471
+ type: "zone";
3472
+ } | {
3473
+ object: "node";
3474
+ name?: string | undefined;
3475
+ parentId: string | null;
3476
+ visible: boolean;
3477
+ camera?: {
3478
+ position: [number, number, number];
3479
+ target: [number, number, number];
3480
+ mode: "orthographic" | "perspective";
3481
+ fov?: number | undefined;
3482
+ zoom?: number | undefined;
3483
+ } | undefined;
3484
+ metadata: Record<string, unknown>;
3485
+ provenance?: {
3486
+ refs: {
3487
+ ns?: string | undefined;
3488
+ id: string;
3489
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3490
+ }[];
3491
+ lineage?: {
3492
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3493
+ fromIds: string[];
3494
+ } | undefined;
3495
+ } | undefined;
3496
+ id: `ceiling_${string}`;
3497
+ children: (`item_${string}` | `procedural-item_${string}`)[];
3498
+ material?: {
3499
+ id?: string | undefined;
3500
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3501
+ properties?: {
3502
+ color: string;
3503
+ roughness: number;
3504
+ metalness: number;
3505
+ opacity: number;
3506
+ transparent: boolean;
3507
+ side: "back" | "double" | "front";
3508
+ } | undefined;
3509
+ texture?: {
3510
+ url: string;
3511
+ repeat?: [number, number] | undefined;
3512
+ scale?: number | undefined;
3513
+ offset?: [number, number] | undefined;
3514
+ normalMap?: string | undefined;
3515
+ normalScale?: number | undefined;
3516
+ bumpMap?: string | undefined;
3517
+ bumpScale?: number | undefined;
3518
+ } | undefined;
3519
+ } | undefined;
3520
+ materialPreset?: string | undefined;
3521
+ slots?: Record<string, string> | undefined;
3522
+ polygon: [number, number][];
3523
+ holes: [number, number][][];
3524
+ holeMetadata: {
3525
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
3526
+ openingId?: string | undefined;
3527
+ stairId?: string | undefined;
3528
+ elevatorId?: string | undefined;
3529
+ }[];
3530
+ openingIds?: string[] | undefined;
3531
+ height?: number | undefined;
3532
+ buildUp?: {
3533
+ presetId?: string | undefined;
3534
+ finish?: {
3535
+ kind: "drywall" | "plaster" | "wood-plank";
3536
+ thickness: number;
3537
+ name?: string | undefined;
3538
+ } | undefined;
3539
+ framing?: {
3540
+ system: "joists" | "truss-chords";
3541
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3542
+ spacing: number;
3543
+ } | undefined;
3544
+ decking?: {
3545
+ kind: "osb" | "plywood";
3546
+ thickness: number;
3547
+ name?: string | undefined;
3548
+ } | undefined;
3549
+ insulation?: {
3550
+ kind: "batt" | "blown" | "rigid";
3551
+ thickness: number;
3552
+ name?: string | undefined;
3553
+ } | undefined;
3554
+ } | undefined;
3555
+ regions?: {
3556
+ id: string;
3557
+ polygon: [number, number][];
3558
+ finish: string | Record<string, unknown>;
3559
+ }[] | undefined;
3560
+ boundary?: "auto" | undefined;
3561
+ zoneId?: string | undefined;
3562
+ autoFromWalls: boolean;
3563
+ type: "ceiling";
3447
3564
  } | {
3448
3565
  object: "node";
3449
3566
  name?: string | undefined;
@@ -4049,53 +4166,6 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4049
4166
  system: "return" | "supply";
4050
4167
  slots?: Record<string, string> | undefined;
4051
4168
  type: "duct-segment";
4052
- } | {
4053
- object: "node";
4054
- name?: string | undefined;
4055
- parentId: string | null;
4056
- visible: boolean;
4057
- camera?: {
4058
- position: [number, number, number];
4059
- target: [number, number, number];
4060
- mode: "orthographic" | "perspective";
4061
- fov?: number | undefined;
4062
- zoom?: number | undefined;
4063
- } | undefined;
4064
- metadata: Record<string, unknown>;
4065
- provenance?: {
4066
- refs: {
4067
- ns?: string | undefined;
4068
- id: string;
4069
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4070
- }[];
4071
- lineage?: {
4072
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4073
- fromIds: string[];
4074
- } | undefined;
4075
- } | undefined;
4076
- id: `duct-fitting_${string}`;
4077
- position: [number, number, number];
4078
- rotation: [number, number, number];
4079
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4080
- shape: "oval" | "rect" | "round";
4081
- inletShape?: "oval" | "rect" | "round" | undefined;
4082
- outletShape?: "oval" | "rect" | "round" | undefined;
4083
- width: number;
4084
- height: number;
4085
- shape2: "oval" | "rect" | "round";
4086
- width2: number;
4087
- height2: number;
4088
- angle: number;
4089
- branchAngle: number;
4090
- diameter: number;
4091
- diameter2: number;
4092
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
4093
- system: "return" | "supply";
4094
- damperAngle: number;
4095
- panelWidth: number;
4096
- panelHeight: number;
4097
- slots?: Record<string, string> | undefined;
4098
- type: "duct-fitting";
4099
4169
  } | {
4100
4170
  object: "node";
4101
4171
  name?: string | undefined;
@@ -4133,47 +4203,6 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4133
4203
  collarWidth: number;
4134
4204
  collarHeight: number;
4135
4205
  type: "duct-terminal";
4136
- } | {
4137
- object: "node";
4138
- name?: string | undefined;
4139
- parentId: string | null;
4140
- visible: boolean;
4141
- camera?: {
4142
- position: [number, number, number];
4143
- target: [number, number, number];
4144
- mode: "orthographic" | "perspective";
4145
- fov?: number | undefined;
4146
- zoom?: number | undefined;
4147
- } | undefined;
4148
- metadata: Record<string, unknown>;
4149
- provenance?: {
4150
- refs: {
4151
- ns?: string | undefined;
4152
- id: string;
4153
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4154
- }[];
4155
- lineage?: {
4156
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4157
- fromIds: string[];
4158
- } | undefined;
4159
- } | undefined;
4160
- id: `hvac-equipment_${string}`;
4161
- position: [number, number, number];
4162
- rotation: number;
4163
- supportSlabId?: string | undefined;
4164
- equipmentType: "air-handler" | "condenser" | "furnace";
4165
- width: number;
4166
- depth: number;
4167
- height: number;
4168
- supplyShape: "oval" | "rect" | "round";
4169
- returnShape: "oval" | "rect" | "round";
4170
- supplyDiameter: number;
4171
- returnDiameter: number;
4172
- supplyWidth: number;
4173
- supplyHeight: number;
4174
- returnWidth: number;
4175
- returnHeight: number;
4176
- type: "hvac-equipment";
4177
4206
  } | {
4178
4207
  object: "node";
4179
4208
  name?: string | undefined;
@@ -4302,17 +4331,13 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4302
4331
  fromIds: string[];
4303
4332
  } | undefined;
4304
4333
  } | undefined;
4305
- id: `pipe-fitting_${string}`;
4334
+ id: `pipe-trap_${string}`;
4306
4335
  position: [number, number, number];
4307
- rotation: [number, number, number];
4308
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4309
- angle: number;
4336
+ rotation: number;
4310
4337
  diameter: number;
4311
- diameter2: number;
4312
- cleanoutStyle: "end" | "inline";
4313
4338
  pipeMaterial: "abs" | "cast-iron" | "pvc";
4314
- system: "vent" | "waste";
4315
- type: "pipe-fitting";
4339
+ armLengthM: number;
4340
+ type: "pipe-trap";
4316
4341
  } | {
4317
4342
  object: "node";
4318
4343
  name?: string | undefined;
@@ -4337,13 +4362,12 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4337
4362
  fromIds: string[];
4338
4363
  } | undefined;
4339
4364
  } | undefined;
4340
- id: `pipe-trap_${string}`;
4341
- position: [number, number, number];
4342
- rotation: number;
4343
- diameter: number;
4344
- pipeMaterial: "abs" | "cast-iron" | "pvc";
4345
- armLengthM: number;
4346
- type: "pipe-trap";
4365
+ id: `level_${string}`;
4366
+ 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}`)[];
4367
+ level: number;
4368
+ baseElevation: number;
4369
+ height?: number | undefined;
4370
+ type: "level";
4347
4371
  } | {
4348
4372
  object: "node";
4349
4373
  name?: string | undefined;
@@ -4368,12 +4392,54 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4368
4392
  fromIds: string[];
4369
4393
  } | undefined;
4370
4394
  } | undefined;
4371
- id: `level_${string}`;
4372
- 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}`)[];
4373
- level: number;
4374
- baseElevation: number;
4375
- height?: number | undefined;
4376
- type: "level";
4395
+ id: `elevator_${string}`;
4396
+ material?: {
4397
+ id?: string | undefined;
4398
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4399
+ properties?: {
4400
+ color: string;
4401
+ roughness: number;
4402
+ metalness: number;
4403
+ opacity: number;
4404
+ transparent: boolean;
4405
+ side: "back" | "double" | "front";
4406
+ } | undefined;
4407
+ texture?: {
4408
+ url: string;
4409
+ repeat?: [number, number] | undefined;
4410
+ scale?: number | undefined;
4411
+ offset?: [number, number] | undefined;
4412
+ normalMap?: string | undefined;
4413
+ normalScale?: number | undefined;
4414
+ bumpMap?: string | undefined;
4415
+ bumpScale?: number | undefined;
4416
+ } | undefined;
4417
+ } | undefined;
4418
+ materialPreset?: string | undefined;
4419
+ slots?: Record<string, string> | undefined;
4420
+ position: [number, number, number];
4421
+ rotation: number;
4422
+ width: number;
4423
+ depth: number;
4424
+ shaftWidth?: number | undefined;
4425
+ shaftDepth?: number | undefined;
4426
+ shaftWallThickness: number;
4427
+ shaftStyle: "glass" | "solid";
4428
+ cabHeight: number;
4429
+ doorWidth: number;
4430
+ doorHeight: number;
4431
+ doorStyle: "center-opening" | "single-left" | "single-right";
4432
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4433
+ fromLevelId: string | null;
4434
+ toLevelId: string | null;
4435
+ servedLevelIds?: string[] | undefined;
4436
+ disabledLevelIds: string[];
4437
+ serviceOnlyLevelIds: string[];
4438
+ defaultLevelId: string | null;
4439
+ speed: number;
4440
+ doorDurationMs: number;
4441
+ dwellMs: number;
4442
+ type: "elevator";
4377
4443
  } | {
4378
4444
  object: "node";
4379
4445
  parentId: string | null;
@@ -4839,71 +4905,6 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4839
4905
  topFinishHeight: number;
4840
4906
  topFinishDepth: number;
4841
4907
  type: "cabinet-module";
4842
- } | {
4843
- object: "node";
4844
- name?: string | undefined;
4845
- parentId: string | null;
4846
- visible: boolean;
4847
- camera?: {
4848
- position: [number, number, number];
4849
- target: [number, number, number];
4850
- mode: "orthographic" | "perspective";
4851
- fov?: number | undefined;
4852
- zoom?: number | undefined;
4853
- } | undefined;
4854
- metadata: Record<string, unknown>;
4855
- provenance?: {
4856
- refs: {
4857
- ns?: string | undefined;
4858
- id: string;
4859
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4860
- }[];
4861
- lineage?: {
4862
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4863
- fromIds: string[];
4864
- } | undefined;
4865
- } | undefined;
4866
- id: `bvent_${string}`;
4867
- material?: {
4868
- id?: string | undefined;
4869
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4870
- properties?: {
4871
- color: string;
4872
- roughness: number;
4873
- metalness: number;
4874
- opacity: number;
4875
- transparent: boolean;
4876
- side: "back" | "double" | "front";
4877
- } | undefined;
4878
- texture?: {
4879
- url: string;
4880
- repeat?: [number, number] | undefined;
4881
- scale?: number | undefined;
4882
- offset?: [number, number] | undefined;
4883
- normalMap?: string | undefined;
4884
- normalScale?: number | undefined;
4885
- bumpMap?: string | undefined;
4886
- bumpScale?: number | undefined;
4887
- } | undefined;
4888
- } | undefined;
4889
- slots?: Record<string, string> | undefined;
4890
- materialPreset: string;
4891
- roofSegmentId?: string | undefined;
4892
- position: [number, number, number];
4893
- rotation: number;
4894
- width: number;
4895
- depth: number;
4896
- height: number;
4897
- hoodOverhang: number;
4898
- topTaper: number;
4899
- capHeight: number;
4900
- capGap: number;
4901
- domeCurvature: number;
4902
- baseInset: number;
4903
- baseHeight: number;
4904
- cornerBevel: number;
4905
- style: "box" | "cap" | "dome";
4906
- type: "box-vent";
4907
4908
  } | {
4908
4909
  object: "node";
4909
4910
  name?: string | undefined;