@pascal-app/core 1.0.0 → 1.0.3

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 (345) hide show
  1. package/dist/capture/index.d.ts +2 -2
  2. package/dist/capture/index.js +2 -2
  3. package/dist/capture/schema.d.ts.map +1 -1
  4. package/dist/capture/schema.js +2 -0
  5. package/dist/capture/source.d.ts +1 -1
  6. package/dist/capture/source.js +1 -1
  7. package/dist/events/bus.d.ts +6 -3
  8. package/dist/events/bus.d.ts.map +1 -1
  9. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +4 -4
  10. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  11. package/dist/hooks/spatial-grid/floor-placed-elevation.js +7 -12
  12. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts +4 -0
  13. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts.map +1 -0
  14. package/dist/hooks/spatial-grid/floor-placed-footprints.js +7 -0
  15. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +5 -8
  16. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  17. package/dist/hooks/spatial-grid/spatial-grid-manager.js +23 -106
  18. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +263 -84
  19. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  20. package/dist/hooks/spatial-grid/spatial-grid-sync.js +77 -13
  21. package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -1
  22. package/dist/hooks/spatial-grid/support-host-patch.js +6 -6
  23. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +1 -1
  24. package/dist/hooks/spatial-grid/use-spatial-query.js +1 -1
  25. package/dist/index.d.ts +77 -72
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +74 -69
  28. package/dist/lib/door-operation.d.ts +1 -1
  29. package/dist/lib/item-polygon-overlap.d.ts +6 -0
  30. package/dist/lib/item-polygon-overlap.d.ts.map +1 -0
  31. package/dist/lib/item-polygon-overlap.js +67 -0
  32. package/dist/lib/level-name.d.ts +1 -1
  33. package/dist/lib/measurement-geometry.d.ts +4 -4
  34. package/dist/lib/node-visibility.d.ts +12 -0
  35. package/dist/lib/node-visibility.d.ts.map +1 -0
  36. package/dist/lib/node-visibility.js +12 -0
  37. package/dist/lib/plan-footprint.d.ts +41 -0
  38. package/dist/lib/plan-footprint.d.ts.map +1 -0
  39. package/dist/lib/plan-footprint.js +58 -0
  40. package/dist/lib/room-topology-index.d.ts +1 -1
  41. package/dist/lib/room-topology-index.js +1 -1
  42. package/dist/lib/selection-proxy.d.ts +1 -1
  43. package/dist/lib/slab-polygon.d.ts +2 -2
  44. package/dist/lib/slab-polygon.js +2 -2
  45. package/dist/lib/space-detection.d.ts +1 -1
  46. package/dist/lib/space-detection.d.ts.map +1 -1
  47. package/dist/lib/space-detection.js +16 -11
  48. package/dist/lib/terrain-brush.d.ts +1 -1
  49. package/dist/lib/terrain-brush.js +1 -1
  50. package/dist/lib/terrain-codec.d.ts +2 -2
  51. package/dist/lib/terrain-codec.js +1 -1
  52. package/dist/lib/terrain-raycast.d.ts +1 -1
  53. package/dist/lib/terrain-raycast.js +1 -1
  54. package/dist/lib/terrain-source.d.ts +3 -3
  55. package/dist/lib/terrain-source.js +3 -3
  56. package/dist/lib/terrain-support.d.ts +1 -1
  57. package/dist/lib/terrain-support.js +3 -3
  58. package/dist/lib/unit-containment.d.ts +19 -0
  59. package/dist/lib/unit-containment.d.ts.map +1 -0
  60. package/dist/lib/unit-containment.js +158 -0
  61. package/dist/lib/unit-report.d.ts +19 -0
  62. package/dist/lib/unit-report.d.ts.map +1 -0
  63. package/dist/lib/unit-report.js +36 -0
  64. package/dist/lib/wall-distance.d.ts +2 -2
  65. package/dist/lib/wall-distance.js +1 -1
  66. package/dist/lib/zone-quantities.d.ts +1 -1
  67. package/dist/lib/zone-quantities.js +7 -7
  68. package/dist/material-library.d.ts +1 -1
  69. package/dist/material-library.js +1 -1
  70. package/dist/procedural-items/fixtures.d.ts +261 -0
  71. package/dist/procedural-items/fixtures.d.ts.map +1 -0
  72. package/dist/procedural-items/fixtures.js +349 -0
  73. package/dist/procedural-items/index.d.ts +10 -0
  74. package/dist/procedural-items/index.d.ts.map +1 -0
  75. package/dist/procedural-items/index.js +9 -0
  76. package/dist/procedural-items/integration.d.ts +92 -0
  77. package/dist/procedural-items/integration.d.ts.map +1 -0
  78. package/dist/procedural-items/integration.js +19 -0
  79. package/dist/procedural-items/library-colors.d.ts +56 -0
  80. package/dist/procedural-items/library-colors.d.ts.map +1 -0
  81. package/dist/procedural-items/library-colors.js +84 -0
  82. package/dist/procedural-items/materials.d.ts +5 -0
  83. package/dist/procedural-items/materials.d.ts.map +1 -0
  84. package/dist/procedural-items/materials.js +47 -0
  85. package/dist/procedural-items/node.d.ts +280 -0
  86. package/dist/procedural-items/node.d.ts.map +1 -0
  87. package/dist/procedural-items/node.js +71 -0
  88. package/dist/procedural-items/placement.d.ts +7 -0
  89. package/dist/procedural-items/placement.d.ts.map +1 -0
  90. package/dist/procedural-items/placement.js +48 -0
  91. package/dist/procedural-items/query.d.ts +51 -0
  92. package/dist/procedural-items/query.d.ts.map +1 -0
  93. package/dist/procedural-items/query.js +342 -0
  94. package/dist/procedural-items/recipe.d.ts +144 -0
  95. package/dist/procedural-items/recipe.d.ts.map +1 -0
  96. package/dist/procedural-items/recipe.js +372 -0
  97. package/dist/procedural-items/spatial.d.ts +19 -0
  98. package/dist/procedural-items/spatial.d.ts.map +1 -0
  99. package/dist/procedural-items/spatial.js +39 -0
  100. package/dist/registry/__bench__/relations-resolver.bench.js +2 -2
  101. package/dist/registry/handles.d.ts +40 -5
  102. package/dist/registry/handles.d.ts.map +1 -1
  103. package/dist/registry/index.d.ts +6 -6
  104. package/dist/registry/index.d.ts.map +1 -1
  105. package/dist/registry/index.js +4 -4
  106. package/dist/registry/registry.d.ts +1 -1
  107. package/dist/registry/relations-resolver.d.ts +2 -2
  108. package/dist/registry/relations-resolver.js +1 -1
  109. package/dist/registry/scene-api.d.ts +2 -2
  110. package/dist/registry/scene-api.js +2 -2
  111. package/dist/registry/subtree.d.ts +1 -1
  112. package/dist/registry/subtree.d.ts.map +1 -1
  113. package/dist/registry/subtree.js +8 -2
  114. package/dist/registry/types.d.ts +32 -10
  115. package/dist/registry/types.d.ts.map +1 -1
  116. package/dist/registry/use-registry-version.js +1 -1
  117. package/dist/registry/validate-relations.d.ts +4 -0
  118. package/dist/registry/validate-relations.d.ts.map +1 -0
  119. package/dist/registry/validate-relations.js +22 -0
  120. package/dist/schema/__bench__/node-parsers.bench.js +3 -3
  121. package/dist/schema/__fixtures__/node-fixtures.d.ts +1 -1
  122. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  123. package/dist/schema/__fixtures__/node-fixtures.js +4 -2
  124. package/dist/schema/base.js +1 -1
  125. package/dist/schema/collections.d.ts +1 -1
  126. package/dist/schema/collections.js +1 -1
  127. package/dist/schema/compiled-node-parsers.d.ts +1 -1
  128. package/dist/schema/compiled-node-parsers.js +1 -1
  129. package/dist/schema/index.d.ts +74 -70
  130. package/dist/schema/index.d.ts.map +1 -1
  131. package/dist/schema/index.js +65 -61
  132. package/dist/schema/material.d.ts +1 -1
  133. package/dist/schema/material.js +1 -1
  134. package/dist/schema/nodes/automatic-downspout.d.ts +4 -4
  135. package/dist/schema/nodes/automatic-downspout.js +5 -5
  136. package/dist/schema/nodes/block.d.ts +3 -3
  137. package/dist/schema/nodes/block.d.ts.map +1 -1
  138. package/dist/schema/nodes/block.js +24 -12
  139. package/dist/schema/nodes/box-vent.js +2 -2
  140. package/dist/schema/nodes/building.d.ts +1 -1
  141. package/dist/schema/nodes/building.d.ts.map +1 -1
  142. package/dist/schema/nodes/building.js +8 -5
  143. package/dist/schema/nodes/cabinet.d.ts +4 -4
  144. package/dist/schema/nodes/cabinet.js +4 -4
  145. package/dist/schema/nodes/ceiling.d.ts +1 -1
  146. package/dist/schema/nodes/ceiling.js +5 -5
  147. package/dist/schema/nodes/chimney.js +2 -2
  148. package/dist/schema/nodes/column.d.ts +1 -0
  149. package/dist/schema/nodes/column.d.ts.map +1 -1
  150. package/dist/schema/nodes/column.js +3 -2
  151. package/dist/schema/nodes/construction-dimension.d.ts +3 -3
  152. package/dist/schema/nodes/construction-dimension.js +2 -2
  153. package/dist/schema/nodes/cupola.d.ts +1 -1
  154. package/dist/schema/nodes/cupola.js +2 -2
  155. package/dist/schema/nodes/curtain-wall.d.ts +129 -0
  156. package/dist/schema/nodes/curtain-wall.d.ts.map +1 -0
  157. package/dist/schema/nodes/curtain-wall.js +49 -0
  158. package/dist/schema/nodes/door.d.ts +2 -2
  159. package/dist/schema/nodes/door.js +2 -2
  160. package/dist/schema/nodes/dormer.d.ts +3 -3
  161. package/dist/schema/nodes/dormer.js +4 -4
  162. package/dist/schema/nodes/downspout.js +2 -2
  163. package/dist/schema/nodes/duct-fitting.js +1 -1
  164. package/dist/schema/nodes/duct-segment.js +2 -2
  165. package/dist/schema/nodes/duct-terminal.js +1 -1
  166. package/dist/schema/nodes/elevator.js +2 -2
  167. package/dist/schema/nodes/eyebrow-vent.js +2 -2
  168. package/dist/schema/nodes/fence.js +2 -2
  169. package/dist/schema/nodes/guide.js +2 -2
  170. package/dist/schema/nodes/gutter.d.ts +1 -1
  171. package/dist/schema/nodes/gutter.js +4 -4
  172. package/dist/schema/nodes/hvac-equipment.js +1 -1
  173. package/dist/schema/nodes/imported-mesh.d.ts +40 -0
  174. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -0
  175. package/dist/schema/nodes/imported-mesh.js +27 -0
  176. package/dist/schema/nodes/item.d.ts +3 -3
  177. package/dist/schema/nodes/item.js +3 -3
  178. package/dist/schema/nodes/lean-to-extension.js +4 -4
  179. package/dist/schema/nodes/level.d.ts +1 -1
  180. package/dist/schema/nodes/level.d.ts.map +1 -1
  181. package/dist/schema/nodes/level.js +1 -1
  182. package/dist/schema/nodes/lineset.js +1 -1
  183. package/dist/schema/nodes/liquid-line.js +1 -1
  184. package/dist/schema/nodes/measurement.js +2 -2
  185. package/dist/schema/nodes/pipe-fitting.d.ts +1 -1
  186. package/dist/schema/nodes/pipe-fitting.js +1 -1
  187. package/dist/schema/nodes/pipe-segment.d.ts +1 -1
  188. package/dist/schema/nodes/pipe-segment.js +2 -2
  189. package/dist/schema/nodes/pipe-trap.d.ts +1 -1
  190. package/dist/schema/nodes/pipe-trap.js +1 -1
  191. package/dist/schema/nodes/ridge-vent.d.ts +1 -1
  192. package/dist/schema/nodes/ridge-vent.js +3 -3
  193. package/dist/schema/nodes/roof-segment-shape.d.ts +1 -1
  194. package/dist/schema/nodes/roof-segment-shape.js +1 -1
  195. package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
  196. package/dist/schema/nodes/roof-segment-walls.js +1 -1
  197. package/dist/schema/nodes/roof-segment.d.ts +2 -2
  198. package/dist/schema/nodes/roof-segment.js +2 -2
  199. package/dist/schema/nodes/roof.d.ts +1 -1
  200. package/dist/schema/nodes/roof.js +3 -3
  201. package/dist/schema/nodes/scan.js +3 -3
  202. package/dist/schema/nodes/shelf.d.ts +1 -1
  203. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  204. package/dist/schema/nodes/shelf.js +3 -4
  205. package/dist/schema/nodes/site.js +2 -2
  206. package/dist/schema/nodes/skylight.d.ts +4 -4
  207. package/dist/schema/nodes/skylight.js +2 -2
  208. package/dist/schema/nodes/slab.js +3 -3
  209. package/dist/schema/nodes/solar-panel.js +3 -3
  210. package/dist/schema/nodes/spawn.js +1 -1
  211. package/dist/schema/nodes/stair-segment.js +2 -2
  212. package/dist/schema/nodes/stair.d.ts +1 -1
  213. package/dist/schema/nodes/stair.js +3 -3
  214. package/dist/schema/nodes/structural-grid.js +1 -1
  215. package/dist/schema/nodes/turbine-vent.d.ts +1 -1
  216. package/dist/schema/nodes/turbine-vent.js +2 -2
  217. package/dist/schema/nodes/unit.d.ts +33 -0
  218. package/dist/schema/nodes/unit.d.ts.map +1 -0
  219. package/dist/schema/nodes/unit.js +13 -0
  220. package/dist/schema/nodes/wall.d.ts +75 -2
  221. package/dist/schema/nodes/wall.d.ts.map +1 -1
  222. package/dist/schema/nodes/wall.js +10 -6
  223. package/dist/schema/nodes/window.js +2 -2
  224. package/dist/schema/nodes/zone.js +1 -1
  225. package/dist/schema/scene-material.js +2 -2
  226. package/dist/schema/types.d.ts +417 -22
  227. package/dist/schema/types.d.ts.map +1 -1
  228. package/dist/schema/types.js +56 -49
  229. package/dist/services/__fixtures__/hosting.d.ts +3 -0
  230. package/dist/services/__fixtures__/hosting.d.ts.map +1 -0
  231. package/dist/services/__fixtures__/hosting.js +9 -0
  232. package/dist/services/__fixtures__/shelf-surface-rows.d.ts +4 -0
  233. package/dist/services/__fixtures__/shelf-surface-rows.d.ts.map +1 -0
  234. package/dist/services/__fixtures__/shelf-surface-rows.js +18 -0
  235. package/dist/services/alignment-anchors.d.ts +6 -11
  236. package/dist/services/alignment-anchors.d.ts.map +1 -1
  237. package/dist/services/alignment-anchors.js +7 -34
  238. package/dist/services/drag-session.d.ts +4 -4
  239. package/dist/services/drag-session.js +1 -1
  240. package/dist/services/hosting.d.ts +5 -8
  241. package/dist/services/hosting.d.ts.map +1 -1
  242. package/dist/services/hosting.js +25 -18
  243. package/dist/services/index.d.ts +16 -13
  244. package/dist/services/index.d.ts.map +1 -1
  245. package/dist/services/index.js +16 -13
  246. package/dist/services/level-height.d.ts +2 -2
  247. package/dist/services/level-height.js +3 -3
  248. package/dist/services/movement.d.ts +3 -3
  249. package/dist/services/movement.js +2 -2
  250. package/dist/services/port-connectivity.d.ts +1 -1
  251. package/dist/services/port-connectivity.js +1 -1
  252. package/dist/services/riser-diagram.d.ts +1 -1
  253. package/dist/services/shelf-board.d.ts +5 -0
  254. package/dist/services/shelf-board.d.ts.map +1 -0
  255. package/dist/services/shelf-board.js +15 -0
  256. package/dist/services/snap.d.ts +3 -0
  257. package/dist/services/snap.d.ts.map +1 -1
  258. package/dist/services/snap.js +11 -0
  259. package/dist/services/storey.d.ts +2 -2
  260. package/dist/services/storey.js +2 -2
  261. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +13 -0
  262. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +1 -0
  263. package/dist/services/surface-hosting-procedural-parity.fixtures.js +4691 -0
  264. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +1060 -0
  265. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +1 -0
  266. package/dist/services/surface-hosting-shelf-parity.fixtures.js +3127 -0
  267. package/dist/services/surface-hosting.d.ts +92 -0
  268. package/dist/services/surface-hosting.d.ts.map +1 -0
  269. package/dist/services/surface-hosting.js +305 -0
  270. package/dist/services/surface-region.d.ts +8 -0
  271. package/dist/services/surface-region.d.ts.map +1 -0
  272. package/dist/services/surface-region.js +44 -0
  273. package/dist/services/system-graph.d.ts +2 -2
  274. package/dist/services/system-graph.js +2 -2
  275. package/dist/services/validate-dwv.d.ts +1 -1
  276. package/dist/services/validate-dwv.js +1 -1
  277. package/dist/store/actions/node-actions.d.ts +2 -2
  278. package/dist/store/actions/node-actions.d.ts.map +1 -1
  279. package/dist/store/actions/node-actions.js +50 -104
  280. package/dist/store/history-control.d.ts +3 -3
  281. package/dist/store/history-invalidation.d.ts +1 -1
  282. package/dist/store/history-invalidation.js +1 -1
  283. package/dist/store/use-interactive.d.ts +2 -2
  284. package/dist/store/use-live-terrain.d.ts +1 -1
  285. package/dist/store/use-scene.d.ts +4 -4
  286. package/dist/store/use-scene.d.ts.map +1 -1
  287. package/dist/store/use-scene.js +50 -32
  288. package/dist/systems/elevator/elevator-dispatch.d.ts +2 -2
  289. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  290. package/dist/systems/elevator/elevator-geometry.d.ts +1 -1
  291. package/dist/systems/elevator/elevator-opening-sync.d.ts +1 -1
  292. package/dist/systems/elevator/elevator-opening-sync.js +2 -2
  293. package/dist/systems/elevator/elevator-opening-system.js +3 -3
  294. package/dist/systems/elevator/elevator-runtime.d.ts +3 -3
  295. package/dist/systems/elevator/elevator-runtime.js +3 -3
  296. package/dist/systems/elevator/elevator-service.d.ts +1 -1
  297. package/dist/systems/elevator/elevator-service.js +1 -1
  298. package/dist/systems/fence/fence-centerline.d.ts +2 -2
  299. package/dist/systems/fence/fence-centerline.js +2 -2
  300. package/dist/systems/fence/fence-spline.d.ts +2 -2
  301. package/dist/systems/roof/roof-elevation-system.js +3 -3
  302. package/dist/systems/roof/roof-elevation.d.ts +2 -2
  303. package/dist/systems/roof/roof-elevation.js +6 -6
  304. package/dist/systems/roof/roof-footprint.d.ts +1 -1
  305. package/dist/systems/roof/roof-footprint.js +3 -3
  306. package/dist/systems/slab/slab-placement.d.ts +1 -1
  307. package/dist/systems/slab/slab-support.d.ts +1 -1
  308. package/dist/systems/slab/slab-support.js +4 -4
  309. package/dist/systems/stair/stair-flight.d.ts +2 -2
  310. package/dist/systems/stair/stair-flight.js +2 -2
  311. package/dist/systems/stair/stair-footprint.d.ts +1 -1
  312. package/dist/systems/stair/stair-opening-preview.d.ts +248 -87
  313. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  314. package/dist/systems/stair/stair-opening-preview.js +2 -2
  315. package/dist/systems/stair/stair-opening-sync.d.ts +1 -1
  316. package/dist/systems/stair/stair-opening-sync.js +6 -6
  317. package/dist/systems/stair/stair-opening-system.js +8 -8
  318. package/dist/systems/stair/stair-rise.d.ts +1 -1
  319. package/dist/systems/stair/stair-rise.js +3 -3
  320. package/dist/systems/wall/wall-curve.d.ts +2 -2
  321. package/dist/systems/wall/wall-footprint.d.ts +3 -3
  322. package/dist/systems/wall/wall-footprint.js +3 -3
  323. package/dist/systems/wall/wall-merge.d.ts +38 -0
  324. package/dist/systems/wall/wall-merge.d.ts.map +1 -0
  325. package/dist/systems/wall/wall-merge.js +240 -0
  326. package/dist/systems/wall/wall-mitering.d.ts +1 -1
  327. package/dist/systems/wall/wall-mitering.js +1 -1
  328. package/dist/systems/wall/wall-move.d.ts +1 -1
  329. package/dist/systems/wall/wall-operations.d.ts +28 -0
  330. package/dist/systems/wall/wall-operations.d.ts.map +1 -0
  331. package/dist/systems/wall/wall-operations.js +145 -0
  332. package/dist/systems/wall/wall-top.d.ts +1 -1
  333. package/dist/systems/wall/wall-topology.d.ts +9 -2
  334. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  335. package/dist/systems/wall/wall-topology.js +57 -9
  336. package/dist/utils/clone-scene-graph.d.ts +3 -3
  337. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  338. package/dist/utils/clone-scene-graph.js +9 -3
  339. package/dist/utils/scene-migrations.d.ts +3 -3
  340. package/dist/utils/scene-migrations.js +3 -3
  341. package/dist/utils/vertical-scene-migration.js +5 -5
  342. package/dist/validation/validate-build-json.d.ts +5 -2
  343. package/dist/validation/validate-build-json.d.ts.map +1 -1
  344. package/dist/validation/validate-build-json.js +57 -4
  345. package/package.json +15 -4
@@ -1,6 +1,6 @@
1
- import type { AnyNode, AnyNodeId, CeilingNode, SlabNode } from '../../schema';
2
- import { type LiveNodeOverrides } from '../../store/use-live-node-overrides';
3
- import type { LiveTransform } from '../../store/use-live-transforms';
1
+ import type { AnyNode, AnyNodeId, CeilingNode, SlabNode } from '../../schema/index.js';
2
+ import { type LiveNodeOverrides } from '../../store/use-live-node-overrides.js';
3
+ import type { LiveTransform } from '../../store/use-live-transforms.js';
4
4
  type SurfaceOpeningUpdate = {
5
5
  id: AnyNodeId;
6
6
  data: Partial<SlabNode | CeilingNode>;
@@ -43,7 +43,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
43
43
  visible: boolean;
44
44
  metadata: Record<string, unknown>;
45
45
  rotation: [number, number, number];
46
- children: (`elevator_${string}` | `level_${string}`)[];
46
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
47
47
  type: "building";
48
48
  name?: string | undefined;
49
49
  camera?: {
@@ -109,13 +109,31 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
109
109
  shaftWidth?: number | undefined;
110
110
  shaftDepth?: number | undefined;
111
111
  servedLevelIds?: string[] | undefined;
112
+ } | {
113
+ object: "node";
114
+ id: `unit_${string}`;
115
+ name: string;
116
+ parentId: string | null;
117
+ visible: boolean;
118
+ metadata: Record<string, unknown>;
119
+ color: string;
120
+ kind: "apartment" | "hotel-room" | "commercial" | "common";
121
+ members: `zone_${string}`[];
122
+ type: "unit";
123
+ camera?: {
124
+ position: [number, number, number];
125
+ target: [number, number, number];
126
+ mode: "perspective" | "orthographic";
127
+ fov?: number | undefined;
128
+ zoom?: number | undefined;
129
+ } | undefined;
112
130
  } | {
113
131
  object: "node";
114
132
  id: `level_${string}`;
115
133
  parentId: string | null;
116
134
  visible: boolean;
117
135
  metadata: Record<string, unknown>;
118
- children: (`item_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `wall_${string}` | `roof_${string}` | `slab_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`)[];
136
+ children: (`block_${string}` | `ceiling_${string}` | `item_${string}` | `procedural-item_${string}` | `column_${string}` | `construction-dimension_${string}` | `wall_${string}` | `roof_${string}` | `slab_${string}` | `fence_${string}` | `structural-grid_${string}` | `imesh_${string}` | `zone_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`)[];
119
137
  level: number;
120
138
  baseElevation: number;
121
139
  type: "level";
@@ -225,9 +243,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
225
243
  visible: boolean;
226
244
  metadata: Record<string, unknown>;
227
245
  rotation: number;
228
- height: number;
246
+ children: string[];
229
247
  width: number;
230
248
  depth: number;
249
+ height: number;
231
250
  baseHeight: number;
232
251
  style: "plain" | "faceted" | "fluted" | "lathe-turned" | "dravidian-carved" | "cluster";
233
252
  crossSection: "round" | "square" | "rectangular" | "octagonal" | "sixteen-sided";
@@ -361,7 +380,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
361
380
  drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
362
381
  drawingOverrides: {
363
382
  drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
364
- presentation: "omit" | "shown" | "controlled";
383
+ presentation: "shown" | "omit" | "controlled";
365
384
  suppressedSegmentIndexes: number[];
366
385
  }[];
367
386
  controllingDimensionId: `construction-dimension_${string}` | null;
@@ -382,8 +401,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
382
401
  visible: boolean;
383
402
  metadata: Record<string, unknown>;
384
403
  rotation: number;
385
- children: `item_${string}`[];
386
- slots: Record<string, string>;
404
+ children: string[];
387
405
  topology: {
388
406
  vertices: {
389
407
  id: string;
@@ -399,6 +417,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
399
417
  materialSlot: string;
400
418
  }[];
401
419
  };
420
+ slots: Record<string, string>;
402
421
  slotNames: Record<string, string>;
403
422
  type: "block";
404
423
  name?: string | undefined;
@@ -436,7 +455,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
436
455
  parentId: string | null;
437
456
  visible: boolean;
438
457
  metadata: Record<string, unknown>;
439
- children: (`item_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}`)[];
458
+ children: (`item_${string}` | `procedural-item_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}`)[];
440
459
  start: [number, number];
441
460
  end: [number, number];
442
461
  frontSide: "unknown" | "interior" | "exterior";
@@ -450,7 +469,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
450
469
  fov?: number | undefined;
451
470
  zoom?: number | undefined;
452
471
  } | undefined;
453
- height?: number | undefined;
454
472
  supportSlabId?: string | undefined;
455
473
  slots?: Record<string, string> | undefined;
456
474
  material?: {
@@ -471,6 +489,41 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
471
489
  } | undefined;
472
490
  } | undefined;
473
491
  materialPreset?: string | undefined;
492
+ height?: number | undefined;
493
+ wallType?: "standard" | "curtain" | undefined;
494
+ curtainWall?: {
495
+ construction: "stick" | "unitized";
496
+ framing: "capped" | "vertical-caps" | "horizontal-caps" | "structural-glazing";
497
+ columns: {
498
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
499
+ count: number;
500
+ spacing: number;
501
+ alignment: "start" | "center" | "end";
502
+ };
503
+ rows: {
504
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
505
+ count: number;
506
+ spacing: number;
507
+ alignment: "start" | "center" | "end";
508
+ };
509
+ mullionWidth: number;
510
+ transomWidth: number;
511
+ perimeterWidth: number;
512
+ jointWidth: number;
513
+ glassThickness: number;
514
+ panelType: "glass" | "solid" | "empty";
515
+ spandrel: "top" | "none" | "bottom";
516
+ frameColor: string;
517
+ glassColor: string;
518
+ solidColor: string;
519
+ glassOpacity: number;
520
+ glassRoughness: number;
521
+ panels: {
522
+ column: number;
523
+ row: number;
524
+ type: "glass" | "solid" | "empty";
525
+ }[];
526
+ } | undefined;
474
527
  thickness?: number | undefined;
475
528
  fillToTerrain?: boolean | undefined;
476
529
  interiorMaterial?: {
@@ -553,10 +606,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
553
606
  baseHeight: number;
554
607
  style: "slat" | "rail" | "privacy" | "horizontal";
555
608
  baseStyle: "floating" | "grounded";
556
- thickness: number;
557
- postSpacing: number;
558
609
  start: [number, number];
559
610
  end: [number, number];
611
+ thickness: number;
612
+ postSpacing: number;
560
613
  postSize: number;
561
614
  topRailHeight: number;
562
615
  groundClearance: number;
@@ -565,7 +618,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
565
618
  postCap: "flat" | "none" | "pyramid";
566
619
  showInfill: boolean;
567
620
  type: "fence";
568
- path?: [number, number][] | undefined;
569
621
  name?: string | undefined;
570
622
  camera?: {
571
623
  position: [number, number, number];
@@ -574,6 +626,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
574
626
  fov?: number | undefined;
575
627
  zoom?: number | undefined;
576
628
  } | undefined;
629
+ path?: [number, number][] | undefined;
577
630
  supportSlabId?: string | undefined;
578
631
  slots?: Record<string, string> | undefined;
579
632
  material?: {
@@ -605,7 +658,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
605
658
  visible: boolean;
606
659
  metadata: Record<string, unknown>;
607
660
  rotation: number;
608
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
661
+ children: string[];
609
662
  width: number;
610
663
  depth: number;
611
664
  operationState: number;
@@ -625,7 +678,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
625
678
  frontStyle: "slab" | "shaker" | "raised-arch";
626
679
  panelReady: boolean;
627
680
  handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
628
- handlePosition: "top" | "auto" | "center";
681
+ handlePosition: "top" | "center" | "auto";
629
682
  frontOverlay: "full" | "inset";
630
683
  withBottomPanel: boolean;
631
684
  showPlinth: boolean;
@@ -754,7 +807,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
754
807
  visible: boolean;
755
808
  metadata: Record<string, unknown>;
756
809
  rotation: number;
757
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
810
+ children: string[];
758
811
  width: number;
759
812
  depth: number;
760
813
  operationState: number;
@@ -771,7 +824,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
771
824
  frontStyle: "slab" | "shaker" | "raised-arch";
772
825
  panelReady: boolean;
773
826
  handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
774
- handlePosition: "top" | "auto" | "center";
827
+ handlePosition: "top" | "center" | "auto";
775
828
  frontOverlay: "full" | "inset";
776
829
  withBottomPanel: boolean;
777
830
  showPlinth: boolean;
@@ -901,9 +954,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
901
954
  parentId: string | null;
902
955
  visible: boolean;
903
956
  metadata: Record<string, unknown>;
904
- rotation: [number, number, number];
905
957
  scale: [number, number, number];
906
- children: `item_${string}`[];
958
+ rotation: [number, number, number];
959
+ children: string[];
907
960
  asset: {
908
961
  id: string;
909
962
  category: string;
@@ -917,7 +970,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
917
970
  scale: [number, number, number];
918
971
  floorPlanUrl?: string | undefined;
919
972
  isDraft?: boolean | undefined;
920
- attachTo?: "wall" | "wall-side" | "ceiling" | undefined;
973
+ attachTo?: "wall" | "ceiling" | "wall-side" | undefined;
921
974
  recessed?: boolean | undefined;
922
975
  tags?: string[] | undefined;
923
976
  functionTags?: string[] | undefined;
@@ -972,14 +1025,122 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
972
1025
  zoom?: number | undefined;
973
1026
  } | undefined;
974
1027
  side?: "front" | "back" | undefined;
1028
+ supportSlabId?: string | undefined;
1029
+ slots?: Record<string, string> | undefined;
1030
+ roofSegmentId?: string | undefined;
975
1031
  wallId?: string | undefined;
976
1032
  wallT?: number | undefined;
977
- roofSegmentId?: string | undefined;
978
1033
  roofFace?: "front" | "back" | "right" | "left" | undefined;
979
1034
  blockFaceId?: string | undefined;
980
- supportSlabId?: string | undefined;
981
1035
  collectionIds?: `collection_${string}`[] | undefined;
982
- slots?: Record<string, string> | undefined;
1036
+ } | {
1037
+ object: "node";
1038
+ position: [number, number, number];
1039
+ id: `procedural-item_${string}`;
1040
+ parentId: string | null;
1041
+ visible: boolean;
1042
+ metadata: Record<string, unknown>;
1043
+ rotation: [number, number, number];
1044
+ children: string[];
1045
+ slots: Record<string, string>;
1046
+ parameters: Record<string, number>;
1047
+ recipe: {
1048
+ version: 1;
1049
+ name: string;
1050
+ description: string;
1051
+ parameters: {
1052
+ id: string;
1053
+ label: string;
1054
+ default: number;
1055
+ min: number;
1056
+ max: number;
1057
+ step: number;
1058
+ unit: "count" | "m" | "rad";
1059
+ part?: string | undefined;
1060
+ axis?: "x" | "y" | "z" | undefined;
1061
+ }[];
1062
+ slots: {
1063
+ id: string;
1064
+ label: string;
1065
+ color: string;
1066
+ finish?: "wood" | "glass" | "metal" | undefined;
1067
+ }[];
1068
+ parts: {
1069
+ id: string;
1070
+ label: string;
1071
+ count: import("../../procedural-items/index.js").Expr;
1072
+ shapes: {
1073
+ id: string;
1074
+ primitive: "box" | "roundedBox" | "cylinder";
1075
+ slot: string;
1076
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1077
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1078
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1079
+ radius?: import("../../procedural-items/index.js").Expr | undefined;
1080
+ support?: boolean | undefined;
1081
+ }[];
1082
+ }[];
1083
+ constraints: {
1084
+ left: import("../../procedural-items/index.js").Expr;
1085
+ relation: "lte" | "gte";
1086
+ right: import("../../procedural-items/index.js").Expr;
1087
+ message: string;
1088
+ }[];
1089
+ classification?: {
1090
+ category: string;
1091
+ functionTags: string[];
1092
+ tags: string[];
1093
+ } | undefined;
1094
+ mounting?: {
1095
+ attachTo: "ceiling" | "wall-side";
1096
+ reference: string;
1097
+ } | undefined;
1098
+ surfaces?: {
1099
+ id: string;
1100
+ label: string;
1101
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1102
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1103
+ part?: string | undefined;
1104
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1105
+ }[] | undefined;
1106
+ };
1107
+ attachments: Record<string, string>;
1108
+ type: "procedural-item";
1109
+ name?: string | undefined;
1110
+ camera?: {
1111
+ position: [number, number, number];
1112
+ target: [number, number, number];
1113
+ mode: "perspective" | "orthographic";
1114
+ fov?: number | undefined;
1115
+ zoom?: number | undefined;
1116
+ } | undefined;
1117
+ side?: "front" | "back" | undefined;
1118
+ supportSlabId?: string | undefined;
1119
+ wallId?: string | undefined;
1120
+ } | {
1121
+ object: "node";
1122
+ position: [number, number, number];
1123
+ id: `imesh_${string}`;
1124
+ parentId: string | null;
1125
+ visible: boolean;
1126
+ metadata: Record<string, unknown>;
1127
+ rotation: [number, number, number];
1128
+ primitives: {
1129
+ positions: number[];
1130
+ indices: number[];
1131
+ color: string;
1132
+ opacity: number;
1133
+ normals?: number[] | undefined;
1134
+ }[];
1135
+ type: "imported-mesh";
1136
+ name?: string | undefined;
1137
+ camera?: {
1138
+ position: [number, number, number];
1139
+ target: [number, number, number];
1140
+ mode: "perspective" | "orthographic";
1141
+ fov?: number | undefined;
1142
+ zoom?: number | undefined;
1143
+ } | undefined;
983
1144
  } | {
984
1145
  object: "node";
985
1146
  id: `zone_${string}`;
@@ -1061,7 +1222,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1061
1222
  parentId: string | null;
1062
1223
  visible: boolean;
1063
1224
  metadata: Record<string, unknown>;
1064
- children: `item_${string}`[];
1225
+ children: (`item_${string}` | `procedural-item_${string}`)[];
1065
1226
  polygon: [number, number][];
1066
1227
  holes: [number, number][][];
1067
1228
  holeMetadata: {
@@ -1079,7 +1240,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1079
1240
  fov?: number | undefined;
1080
1241
  zoom?: number | undefined;
1081
1242
  } | undefined;
1082
- height?: number | undefined;
1083
1243
  slots?: Record<string, string> | undefined;
1084
1244
  material?: {
1085
1245
  id?: string | undefined;
@@ -1099,6 +1259,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1099
1259
  } | undefined;
1100
1260
  } | undefined;
1101
1261
  materialPreset?: string | undefined;
1262
+ height?: number | undefined;
1102
1263
  } | {
1103
1264
  object: "node";
1104
1265
  position: [number, number, number];
@@ -1236,7 +1397,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1236
1397
  overhang: number;
1237
1398
  shingleThickness: number;
1238
1399
  managedByParent: boolean;
1239
- wallShell: "auto" | "include" | "omit";
1400
+ wallShell: "omit" | "auto" | "include";
1240
1401
  shedInsetEndPanels: boolean;
1241
1402
  gambrelLowerWidthRatio: number;
1242
1403
  gambrelLowerHeightRatio: number;
@@ -1356,14 +1517,14 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1356
1517
  visible: boolean;
1357
1518
  metadata: Record<string, unknown>;
1358
1519
  rotation: [number, number, number];
1359
- height: number;
1360
- children: `item_${string}`[];
1520
+ children: string[];
1361
1521
  width: number;
1362
1522
  depth: number;
1523
+ height: number;
1363
1524
  style: "wall-shelf" | "bookshelf" | "open-rack" | "cubby";
1364
1525
  rows: number;
1365
- thickness: number;
1366
1526
  columns: number;
1527
+ thickness: number;
1367
1528
  withBack: boolean;
1368
1529
  withSides: boolean;
1369
1530
  withBottom: boolean;
@@ -1510,15 +1671,15 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1510
1671
  totalRise?: number | undefined;
1511
1672
  } | {
1512
1673
  object: "node";
1513
- length: number;
1514
1674
  position: [number, number, number];
1515
1675
  id: `sseg_${string}`;
1516
1676
  parentId: string | null;
1517
1677
  visible: boolean;
1518
1678
  metadata: Record<string, unknown>;
1679
+ length: number;
1519
1680
  rotation: number;
1520
- height: number;
1521
1681
  width: number;
1682
+ height: number;
1522
1683
  thickness: number;
1523
1684
  stepCount: number;
1524
1685
  fillToFloor: boolean;
@@ -1558,10 +1719,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1558
1719
  parentId: string | null;
1559
1720
  visible: boolean;
1560
1721
  metadata: Record<string, unknown>;
1561
- rotation: [number, number, number];
1562
- scale: number;
1563
- url: string | null;
1564
1722
  opacity: number;
1723
+ url: string | null;
1724
+ scale: number;
1725
+ rotation: [number, number, number];
1565
1726
  captureSession: {
1566
1727
  sessionId: string;
1567
1728
  schemaVersion?: number | undefined;
@@ -1585,10 +1746,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1585
1746
  parentId: string | null;
1586
1747
  visible: boolean;
1587
1748
  metadata: Record<string, unknown>;
1588
- rotation: [number, number, number];
1589
- scale: number;
1590
- url: string;
1591
1749
  opacity: number;
1750
+ url: string;
1751
+ scale: number;
1752
+ rotation: [number, number, number];
1592
1753
  scaleReference: {
1593
1754
  start: [number, number];
1594
1755
  end: [number, number];
@@ -1728,8 +1889,8 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1728
1889
  visible: boolean;
1729
1890
  metadata: Record<string, unknown>;
1730
1891
  rotation: [number, number, number];
1731
- height: number;
1732
1892
  width: number;
1893
+ height: number;
1733
1894
  constructionType: "framed" | "masonry";
1734
1895
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1735
1896
  operationState: number;
@@ -1763,9 +1924,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1763
1924
  zoom?: number | undefined;
1764
1925
  } | undefined;
1765
1926
  side?: "front" | "back" | undefined;
1766
- wallId?: string | undefined;
1767
- roofSegmentId?: string | undefined;
1768
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1769
1927
  slots?: Record<string, string> | undefined;
1770
1928
  material?: {
1771
1929
  id?: string | undefined;
@@ -1784,6 +1942,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1784
1942
  scale?: number | undefined;
1785
1943
  } | undefined;
1786
1944
  } | undefined;
1945
+ roofSegmentId?: string | undefined;
1946
+ wallId?: string | undefined;
1947
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1787
1948
  mark?: string | undefined;
1788
1949
  roughOpeningWidth?: number | undefined;
1789
1950
  roughOpeningHeight?: number | undefined;
@@ -1801,9 +1962,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1801
1962
  visible: boolean;
1802
1963
  metadata: Record<string, unknown>;
1803
1964
  rotation: [number, number, number];
1804
- height: number;
1805
1965
  width: number;
1806
- leafCount: 4 | 1 | 2 | 3;
1966
+ height: number;
1967
+ leafCount: 3 | 2 | 1 | 4;
1807
1968
  constructionType: "framed" | "masonry";
1808
1969
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1809
1970
  doorCategory: "interior" | "garage";
@@ -1827,7 +1988,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1827
1988
  swingDirection: "inward" | "outward";
1828
1989
  swingAngle: number;
1829
1990
  segments: {
1830
- type: "glass" | "panel" | "empty";
1991
+ type: "glass" | "empty" | "panel";
1831
1992
  heightRatio: number;
1832
1993
  columnRatios: number[];
1833
1994
  dividerThickness: number;
@@ -1851,9 +2012,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1851
2012
  zoom?: number | undefined;
1852
2013
  } | undefined;
1853
2014
  side?: "front" | "back" | undefined;
1854
- wallId?: string | undefined;
1855
- roofSegmentId?: string | undefined;
1856
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1857
2015
  slots?: Record<string, string> | undefined;
1858
2016
  material?: {
1859
2017
  id?: string | undefined;
@@ -1872,6 +2030,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1872
2030
  scale?: number | undefined;
1873
2031
  } | undefined;
1874
2032
  } | undefined;
2033
+ roofSegmentId?: string | undefined;
2034
+ wallId?: string | undefined;
2035
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1875
2036
  mark?: string | undefined;
1876
2037
  roughOpeningWidth?: number | undefined;
1877
2038
  roughOpeningHeight?: number | undefined;
@@ -1887,10 +2048,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1887
2048
  visible: boolean;
1888
2049
  metadata: Record<string, unknown>;
1889
2050
  rotation: number;
1890
- height: number;
1891
2051
  materialPreset: string;
1892
2052
  width: number;
1893
2053
  depth: number;
2054
+ height: number;
1894
2055
  hoodOverhang: number;
1895
2056
  topTaper: number;
1896
2057
  capHeight: number;
@@ -1909,7 +2070,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1909
2070
  fov?: number | undefined;
1910
2071
  zoom?: number | undefined;
1911
2072
  } | undefined;
1912
- roofSegmentId?: string | undefined;
1913
2073
  slots?: Record<string, string> | undefined;
1914
2074
  material?: {
1915
2075
  id?: string | undefined;
@@ -1928,17 +2088,18 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1928
2088
  scale?: number | undefined;
1929
2089
  } | undefined;
1930
2090
  } | undefined;
2091
+ roofSegmentId?: string | undefined;
1931
2092
  } | {
1932
2093
  object: "node";
1933
- length: number;
1934
2094
  position: [number, number, number];
1935
2095
  id: `rvent_${string}`;
1936
2096
  parentId: string | null;
1937
2097
  visible: boolean;
1938
2098
  metadata: Record<string, unknown>;
2099
+ length: number;
1939
2100
  rotation: number;
1940
- height: number;
1941
2101
  width: number;
2102
+ height: number;
1942
2103
  style: "metal" | "standard" | "shingled";
1943
2104
  endCaps: boolean;
1944
2105
  type: "ridge-vent";
@@ -1950,7 +2111,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1950
2111
  fov?: number | undefined;
1951
2112
  zoom?: number | undefined;
1952
2113
  } | undefined;
1953
- roofSegmentId?: string | undefined;
1954
2114
  material?: {
1955
2115
  id?: string | undefined;
1956
2116
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1969,6 +2129,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1969
2129
  } | undefined;
1970
2130
  } | undefined;
1971
2131
  materialPreset?: string | undefined;
2132
+ roofSegmentId?: string | undefined;
1972
2133
  } | {
1973
2134
  object: "node";
1974
2135
  position: [number, number, number];
@@ -1977,9 +2138,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1977
2138
  visible: boolean;
1978
2139
  metadata: Record<string, unknown>;
1979
2140
  rotation: number;
1980
- height: number;
1981
2141
  materialPreset: string;
1982
- style: "globe" | "cylinder";
2142
+ height: number;
2143
+ style: "cylinder" | "globe";
1983
2144
  diameter: number;
1984
2145
  neckHeight: number;
1985
2146
  baseOverhang: number;
@@ -1994,7 +2155,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1994
2155
  fov?: number | undefined;
1995
2156
  zoom?: number | undefined;
1996
2157
  } | undefined;
1997
- roofSegmentId?: string | undefined;
1998
2158
  slots?: Record<string, string> | undefined;
1999
2159
  material?: {
2000
2160
  id?: string | undefined;
@@ -2013,6 +2173,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2013
2173
  scale?: number | undefined;
2014
2174
  } | undefined;
2015
2175
  } | undefined;
2176
+ roofSegmentId?: string | undefined;
2016
2177
  } | {
2017
2178
  object: "node";
2018
2179
  position: [number, number, number];
@@ -2021,10 +2182,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2021
2182
  visible: boolean;
2022
2183
  metadata: Record<string, unknown>;
2023
2184
  rotation: number;
2024
- height: number;
2025
2185
  materialPreset: string;
2026
2186
  width: number;
2027
2187
  depth: number;
2188
+ height: number;
2028
2189
  roofStyle: "dome" | "pyramid";
2029
2190
  finial: boolean;
2030
2191
  type: "cupola";
@@ -2036,7 +2197,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2036
2197
  fov?: number | undefined;
2037
2198
  zoom?: number | undefined;
2038
2199
  } | undefined;
2039
- roofSegmentId?: string | undefined;
2040
2200
  slots?: Record<string, string> | undefined;
2041
2201
  material?: {
2042
2202
  id?: string | undefined;
@@ -2055,6 +2215,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2055
2215
  scale?: number | undefined;
2056
2216
  } | undefined;
2057
2217
  } | undefined;
2218
+ roofSegmentId?: string | undefined;
2058
2219
  } | {
2059
2220
  object: "node";
2060
2221
  position: [number, number, number];
@@ -2063,10 +2224,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2063
2224
  visible: boolean;
2064
2225
  metadata: Record<string, unknown>;
2065
2226
  rotation: number;
2066
- height: number;
2067
2227
  materialPreset: string;
2068
2228
  width: number;
2069
2229
  depth: number;
2230
+ height: number;
2070
2231
  style: "half-round" | "scoop" | "slant-box";
2071
2232
  louverCount: number;
2072
2233
  backRatio: number;
@@ -2079,7 +2240,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2079
2240
  fov?: number | undefined;
2080
2241
  zoom?: number | undefined;
2081
2242
  } | undefined;
2082
- roofSegmentId?: string | undefined;
2083
2243
  slots?: Record<string, string> | undefined;
2084
2244
  material?: {
2085
2245
  id?: string | undefined;
@@ -2098,21 +2258,22 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2098
2258
  scale?: number | undefined;
2099
2259
  } | undefined;
2100
2260
  } | undefined;
2261
+ roofSegmentId?: string | undefined;
2101
2262
  } | {
2102
2263
  object: "node";
2103
- length: number;
2104
2264
  position: [number, number, number];
2105
2265
  id: `gutter_${string}`;
2106
2266
  parentId: string | null;
2107
2267
  visible: boolean;
2108
2268
  metadata: Record<string, unknown>;
2269
+ length: number;
2109
2270
  rotation: number;
2110
2271
  materialPreset: string;
2111
2272
  thickness: number;
2112
2273
  profile: "box" | "k-style" | "half-round";
2274
+ size: number;
2113
2275
  hangerStyle: "none" | "strap";
2114
2276
  hangerSpacing: number;
2115
- size: number;
2116
2277
  endCapLeft: boolean;
2117
2278
  endCapRight: boolean;
2118
2279
  outlets: {
@@ -2130,7 +2291,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2130
2291
  fov?: number | undefined;
2131
2292
  zoom?: number | undefined;
2132
2293
  } | undefined;
2133
- roofSegmentId?: string | undefined;
2134
2294
  slots?: Record<string, string> | undefined;
2135
2295
  material?: {
2136
2296
  id?: string | undefined;
@@ -2149,6 +2309,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2149
2309
  scale?: number | undefined;
2150
2310
  } | undefined;
2151
2311
  } | undefined;
2312
+ roofSegmentId?: string | undefined;
2152
2313
  arc?: {
2153
2314
  centerX: number;
2154
2315
  centerZ: number;
@@ -2205,7 +2366,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2205
2366
  fov?: number | undefined;
2206
2367
  zoom?: number | undefined;
2207
2368
  } | undefined;
2208
- roofSegmentId?: string | undefined;
2209
2369
  material?: {
2210
2370
  id?: string | undefined;
2211
2371
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2224,6 +2384,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2224
2384
  } | undefined;
2225
2385
  } | undefined;
2226
2386
  materialPreset?: string | undefined;
2387
+ roofSegmentId?: string | undefined;
2227
2388
  topMaterial?: {
2228
2389
  id?: string | undefined;
2229
2390
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2251,9 +2412,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2251
2412
  metadata: Record<string, unknown>;
2252
2413
  rotation: number;
2253
2414
  rows: number;
2415
+ columns: number;
2254
2416
  frameThickness: number;
2255
2417
  frameDepth: number;
2256
- columns: number;
2257
2418
  panelWidth: number;
2258
2419
  panelHeight: number;
2259
2420
  gapX: number;
@@ -2270,7 +2431,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2270
2431
  fov?: number | undefined;
2271
2432
  zoom?: number | undefined;
2272
2433
  } | undefined;
2273
- roofSegmentId?: string | undefined;
2274
2434
  material?: {
2275
2435
  id?: string | undefined;
2276
2436
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2289,6 +2449,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2289
2449
  } | undefined;
2290
2450
  } | undefined;
2291
2451
  materialPreset?: string | undefined;
2452
+ roofSegmentId?: string | undefined;
2292
2453
  panelMaterial?: {
2293
2454
  id?: string | undefined;
2294
2455
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2317,20 +2478,20 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2317
2478
  visible: boolean;
2318
2479
  metadata: Record<string, unknown>;
2319
2480
  rotation: number;
2320
- height: number;
2321
2481
  width: number;
2482
+ height: number;
2483
+ glassThickness: number;
2322
2484
  operationState: number;
2323
- slideDirection: "z" | "x";
2485
+ slideDirection: "x" | "z";
2324
2486
  frameThickness: number;
2325
2487
  frameDepth: number;
2326
2488
  curbHeight: number;
2327
2489
  cutoutOffset: number;
2328
2490
  skylightType: "flat" | "sliding" | "opening" | "walk-on" | "lantern";
2329
- glassThickness: number;
2330
2491
  lanternHeight: number;
2331
2492
  lanternTopScale: number;
2332
2493
  openingAngle: number;
2333
- openingSide: "right" | "left" | "top" | "bottom";
2494
+ openingSide: "top" | "right" | "left" | "bottom";
2334
2495
  motorHousing: boolean;
2335
2496
  slideFraction: number;
2336
2497
  trackWidth: number;
@@ -2345,7 +2506,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2345
2506
  fov?: number | undefined;
2346
2507
  zoom?: number | undefined;
2347
2508
  } | undefined;
2348
- roofSegmentId?: string | undefined;
2349
2509
  material?: {
2350
2510
  id?: string | undefined;
2351
2511
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2364,6 +2524,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2364
2524
  } | undefined;
2365
2525
  } | undefined;
2366
2526
  materialPreset?: string | undefined;
2527
+ roofSegmentId?: string | undefined;
2367
2528
  surfaceNormal?: [number, number, number] | undefined;
2368
2529
  glassMaterial?: {
2369
2530
  id?: string | undefined;
@@ -2391,10 +2552,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2391
2552
  visible: boolean;
2392
2553
  metadata: Record<string, unknown>;
2393
2554
  rotation: number;
2394
- height: number;
2395
2555
  children: `window_${string}`[];
2396
2556
  width: number;
2397
2557
  depth: number;
2558
+ height: number;
2398
2559
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
2399
2560
  roofHeight: number;
2400
2561
  shedHighSide: "front" | "back";
@@ -2423,7 +2584,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2423
2584
  fov?: number | undefined;
2424
2585
  zoom?: number | undefined;
2425
2586
  } | undefined;
2426
- roofSegmentId?: string | undefined;
2427
2587
  material?: {
2428
2588
  id?: string | undefined;
2429
2589
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2442,6 +2602,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2442
2602
  } | undefined;
2443
2603
  } | undefined;
2444
2604
  materialPreset?: string | undefined;
2605
+ roofSegmentId?: string | undefined;
2445
2606
  topMaterial?: {
2446
2607
  id?: string | undefined;
2447
2608
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2498,11 +2659,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2498
2659
  sideMaterialPreset?: string | undefined;
2499
2660
  } | {
2500
2661
  object: "node";
2501
- length: number;
2502
2662
  id: `downspout_${string}`;
2503
2663
  parentId: string | null;
2504
2664
  visible: boolean;
2505
2665
  metadata: Record<string, unknown>;
2666
+ length: number;
2506
2667
  materialPreset: string;
2507
2668
  diameter: number;
2508
2669
  shape: "round" | "auto" | "rect";
@@ -2542,13 +2703,13 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2542
2703
  lengthMode?: "manual" | "to-ground" | undefined;
2543
2704
  } | {
2544
2705
  object: "node";
2545
- path: [number, number, number][];
2546
2706
  id: `duct-segment_${string}`;
2547
2707
  parentId: string | null;
2548
2708
  visible: boolean;
2549
2709
  metadata: Record<string, unknown>;
2550
- height: number;
2710
+ path: [number, number, number][];
2551
2711
  width: number;
2712
+ height: number;
2552
2713
  diameter: number;
2553
2714
  shape: "round" | "rect" | "oval";
2554
2715
  roll: number;
@@ -2591,10 +2752,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2591
2752
  visible: boolean;
2592
2753
  metadata: Record<string, unknown>;
2593
2754
  rotation: [number, number, number];
2594
- height: number;
2595
2755
  width: number;
2596
- diameter: number;
2756
+ height: number;
2597
2757
  angle: number;
2758
+ diameter: number;
2598
2759
  shape: "round" | "rect" | "oval";
2599
2760
  ductMaterial: "sheet-metal" | "flex" | "duct-board";
2600
2761
  system: "supply" | "return";
@@ -2653,9 +2814,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2653
2814
  visible: boolean;
2654
2815
  metadata: Record<string, unknown>;
2655
2816
  rotation: number;
2656
- height: number;
2657
2817
  width: number;
2658
2818
  depth: number;
2819
+ height: number;
2659
2820
  equipmentType: "furnace" | "air-handler" | "condenser";
2660
2821
  supplyShape: "round" | "rect" | "oval";
2661
2822
  returnShape: "round" | "rect" | "oval";
@@ -2677,11 +2838,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2677
2838
  supportSlabId?: string | undefined;
2678
2839
  } | {
2679
2840
  object: "node";
2680
- path: [number, number, number][];
2681
2841
  id: `lineset_${string}`;
2682
2842
  parentId: string | null;
2683
2843
  visible: boolean;
2684
2844
  metadata: Record<string, unknown>;
2845
+ path: [number, number, number][];
2685
2846
  insulated: boolean;
2686
2847
  suctionDiameter: number;
2687
2848
  liquidDiameter: number;
@@ -2696,11 +2857,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2696
2857
  } | undefined;
2697
2858
  } | {
2698
2859
  object: "node";
2699
- path: [number, number, number][];
2700
2860
  id: `liquid-line_${string}`;
2701
2861
  parentId: string | null;
2702
2862
  visible: boolean;
2703
2863
  metadata: Record<string, unknown>;
2864
+ path: [number, number, number][];
2704
2865
  diameter: number;
2705
2866
  type: "liquid-line";
2706
2867
  name?: string | undefined;
@@ -2713,14 +2874,14 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2713
2874
  } | undefined;
2714
2875
  } | {
2715
2876
  object: "node";
2716
- path: [number, number, number][];
2717
2877
  id: `pipe-segment_${string}`;
2718
2878
  parentId: string | null;
2719
2879
  visible: boolean;
2720
2880
  metadata: Record<string, unknown>;
2881
+ path: [number, number, number][];
2721
2882
  diameter: number;
2722
2883
  system: "waste" | "vent";
2723
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2884
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2724
2885
  type: "pipe-segment";
2725
2886
  name?: string | undefined;
2726
2887
  camera?: {
@@ -2754,12 +2915,12 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2754
2915
  visible: boolean;
2755
2916
  metadata: Record<string, unknown>;
2756
2917
  rotation: [number, number, number];
2757
- diameter: number;
2758
2918
  angle: number;
2919
+ diameter: number;
2759
2920
  system: "waste" | "vent";
2760
2921
  fittingType: "elbow" | "cross" | "reducer" | "end-cap" | "coupling" | "wye" | "sanitary-tee" | "cleanout";
2761
2922
  diameter2: number;
2762
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2923
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2763
2924
  cleanoutStyle: "end" | "inline";
2764
2925
  type: "pipe-fitting";
2765
2926
  name?: string | undefined;
@@ -2779,7 +2940,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2779
2940
  metadata: Record<string, unknown>;
2780
2941
  rotation: number;
2781
2942
  diameter: number;
2782
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2943
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2783
2944
  armLengthM: number;
2784
2945
  type: "pipe-trap";
2785
2946
  name?: string | undefined;
@@ -2792,7 +2953,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2792
2953
  } | undefined;
2793
2954
  }>;
2794
2955
  export declare function createSurfaceOpeningPreviewController(): {
2795
- previewSurfaceIds: Set<`item_${string}` | `block_${string}` | `bvent_${string}` | `elevator_${string}` | `ceiling_${string}` | `column_${string}` | `site_${string}` | `building_${string}` | `level_${string}` | `wall_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}` | `roof_${string}` | `rseg_${string}` | `slab_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `stair_${string}` | `sseg_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}` | `cabinet_${string}` | `cabinet-module_${string}` | `rvent_${string}` | `tvent_${string}` | `cupola_${string}` | `eyebrow-vent_${string}` | `gutter_${string}` | `chimney_${string}` | `solarpanel_${string}` | `skylight_${string}` | `dormer_${string}` | `downspout_${string}`>;
2956
+ previewSurfaceIds: Set<`block_${string}` | `bvent_${string}` | `elevator_${string}` | `ceiling_${string}` | `item_${string}` | `procedural-item_${string}` | `column_${string}` | `construction-dimension_${string}` | `site_${string}` | `building_${string}` | `level_${string}` | `wall_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}` | `roof_${string}` | `rseg_${string}` | `slab_${string}` | `fence_${string}` | `structural-grid_${string}` | `imesh_${string}` | `zone_${string}` | `stair_${string}` | `sseg_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}` | `unit_${string}` | `cabinet_${string}` | `cabinet-module_${string}` | `rvent_${string}` | `tvent_${string}` | `cupola_${string}` | `eyebrow-vent_${string}` | `gutter_${string}` | `chimney_${string}` | `solarpanel_${string}` | `skylight_${string}` | `dormer_${string}` | `downspout_${string}`>;
2796
2957
  apply(updates: SurfaceOpeningUpdate[]): void;
2797
2958
  clear(): void;
2798
2959
  };