@pascal-app/core 1.0.0 → 1.0.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 (320) 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 +221 -76
  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 +74 -72
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +71 -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/plan-footprint.d.ts +41 -0
  35. package/dist/lib/plan-footprint.d.ts.map +1 -0
  36. package/dist/lib/plan-footprint.js +58 -0
  37. package/dist/lib/room-topology-index.d.ts +1 -1
  38. package/dist/lib/room-topology-index.js +1 -1
  39. package/dist/lib/selection-proxy.d.ts +1 -1
  40. package/dist/lib/slab-polygon.d.ts +2 -2
  41. package/dist/lib/slab-polygon.js +2 -2
  42. package/dist/lib/space-detection.d.ts +1 -1
  43. package/dist/lib/space-detection.d.ts.map +1 -1
  44. package/dist/lib/space-detection.js +16 -11
  45. package/dist/lib/terrain-brush.d.ts +1 -1
  46. package/dist/lib/terrain-brush.js +1 -1
  47. package/dist/lib/terrain-codec.d.ts +2 -2
  48. package/dist/lib/terrain-codec.js +1 -1
  49. package/dist/lib/terrain-raycast.d.ts +1 -1
  50. package/dist/lib/terrain-raycast.js +1 -1
  51. package/dist/lib/terrain-source.d.ts +3 -3
  52. package/dist/lib/terrain-source.js +3 -3
  53. package/dist/lib/terrain-support.d.ts +1 -1
  54. package/dist/lib/terrain-support.js +3 -3
  55. package/dist/lib/unit-containment.d.ts +19 -0
  56. package/dist/lib/unit-containment.d.ts.map +1 -0
  57. package/dist/lib/unit-containment.js +158 -0
  58. package/dist/lib/unit-report.d.ts +19 -0
  59. package/dist/lib/unit-report.d.ts.map +1 -0
  60. package/dist/lib/unit-report.js +36 -0
  61. package/dist/lib/wall-distance.d.ts +2 -2
  62. package/dist/lib/wall-distance.js +1 -1
  63. package/dist/lib/zone-quantities.d.ts +1 -1
  64. package/dist/lib/zone-quantities.js +7 -7
  65. package/dist/material-library.d.ts +1 -1
  66. package/dist/material-library.js +1 -1
  67. package/dist/procedural-items/fixtures.d.ts +261 -0
  68. package/dist/procedural-items/fixtures.d.ts.map +1 -0
  69. package/dist/procedural-items/fixtures.js +349 -0
  70. package/dist/procedural-items/index.d.ts +10 -0
  71. package/dist/procedural-items/index.d.ts.map +1 -0
  72. package/dist/procedural-items/index.js +9 -0
  73. package/dist/procedural-items/integration.d.ts +92 -0
  74. package/dist/procedural-items/integration.d.ts.map +1 -0
  75. package/dist/procedural-items/integration.js +19 -0
  76. package/dist/procedural-items/library-colors.d.ts +56 -0
  77. package/dist/procedural-items/library-colors.d.ts.map +1 -0
  78. package/dist/procedural-items/library-colors.js +84 -0
  79. package/dist/procedural-items/materials.d.ts +5 -0
  80. package/dist/procedural-items/materials.d.ts.map +1 -0
  81. package/dist/procedural-items/materials.js +47 -0
  82. package/dist/procedural-items/node.d.ts +280 -0
  83. package/dist/procedural-items/node.d.ts.map +1 -0
  84. package/dist/procedural-items/node.js +71 -0
  85. package/dist/procedural-items/placement.d.ts +7 -0
  86. package/dist/procedural-items/placement.d.ts.map +1 -0
  87. package/dist/procedural-items/placement.js +48 -0
  88. package/dist/procedural-items/query.d.ts +50 -0
  89. package/dist/procedural-items/query.d.ts.map +1 -0
  90. package/dist/procedural-items/query.js +298 -0
  91. package/dist/procedural-items/recipe.d.ts +144 -0
  92. package/dist/procedural-items/recipe.d.ts.map +1 -0
  93. package/dist/procedural-items/recipe.js +372 -0
  94. package/dist/procedural-items/spatial.d.ts +19 -0
  95. package/dist/procedural-items/spatial.d.ts.map +1 -0
  96. package/dist/procedural-items/spatial.js +39 -0
  97. package/dist/registry/__bench__/relations-resolver.bench.js +2 -2
  98. package/dist/registry/handles.d.ts +12 -4
  99. package/dist/registry/handles.d.ts.map +1 -1
  100. package/dist/registry/index.d.ts +6 -6
  101. package/dist/registry/index.js +4 -4
  102. package/dist/registry/registry.d.ts +1 -1
  103. package/dist/registry/relations-resolver.d.ts +2 -2
  104. package/dist/registry/relations-resolver.js +1 -1
  105. package/dist/registry/scene-api.d.ts +2 -2
  106. package/dist/registry/scene-api.js +2 -2
  107. package/dist/registry/subtree.d.ts +1 -1
  108. package/dist/registry/subtree.js +2 -2
  109. package/dist/registry/types.d.ts +21 -9
  110. package/dist/registry/types.d.ts.map +1 -1
  111. package/dist/registry/use-registry-version.js +1 -1
  112. package/dist/registry/validate-relations.d.ts +4 -0
  113. package/dist/registry/validate-relations.d.ts.map +1 -0
  114. package/dist/registry/validate-relations.js +22 -0
  115. package/dist/schema/__bench__/node-parsers.bench.js +3 -3
  116. package/dist/schema/__fixtures__/node-fixtures.d.ts +1 -1
  117. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  118. package/dist/schema/__fixtures__/node-fixtures.js +4 -2
  119. package/dist/schema/base.js +1 -1
  120. package/dist/schema/collections.d.ts +1 -1
  121. package/dist/schema/collections.js +1 -1
  122. package/dist/schema/compiled-node-parsers.d.ts +1 -1
  123. package/dist/schema/compiled-node-parsers.js +1 -1
  124. package/dist/schema/index.d.ts +73 -70
  125. package/dist/schema/index.d.ts.map +1 -1
  126. package/dist/schema/index.js +64 -61
  127. package/dist/schema/material.d.ts +1 -1
  128. package/dist/schema/material.js +1 -1
  129. package/dist/schema/nodes/automatic-downspout.d.ts +4 -4
  130. package/dist/schema/nodes/automatic-downspout.js +5 -5
  131. package/dist/schema/nodes/block.d.ts +1 -1
  132. package/dist/schema/nodes/block.d.ts.map +1 -1
  133. package/dist/schema/nodes/block.js +3 -4
  134. package/dist/schema/nodes/box-vent.js +2 -2
  135. package/dist/schema/nodes/building.d.ts +1 -1
  136. package/dist/schema/nodes/building.d.ts.map +1 -1
  137. package/dist/schema/nodes/building.js +8 -5
  138. package/dist/schema/nodes/cabinet.d.ts +2 -2
  139. package/dist/schema/nodes/cabinet.js +4 -4
  140. package/dist/schema/nodes/ceiling.d.ts +1 -1
  141. package/dist/schema/nodes/ceiling.js +5 -5
  142. package/dist/schema/nodes/chimney.js +2 -2
  143. package/dist/schema/nodes/column.d.ts +1 -0
  144. package/dist/schema/nodes/column.d.ts.map +1 -1
  145. package/dist/schema/nodes/column.js +3 -2
  146. package/dist/schema/nodes/construction-dimension.d.ts +3 -3
  147. package/dist/schema/nodes/construction-dimension.js +2 -2
  148. package/dist/schema/nodes/cupola.d.ts +1 -1
  149. package/dist/schema/nodes/cupola.js +2 -2
  150. package/dist/schema/nodes/door.js +2 -2
  151. package/dist/schema/nodes/dormer.d.ts +3 -3
  152. package/dist/schema/nodes/dormer.js +4 -4
  153. package/dist/schema/nodes/downspout.js +2 -2
  154. package/dist/schema/nodes/duct-fitting.js +1 -1
  155. package/dist/schema/nodes/duct-segment.js +2 -2
  156. package/dist/schema/nodes/duct-terminal.js +1 -1
  157. package/dist/schema/nodes/elevator.js +2 -2
  158. package/dist/schema/nodes/eyebrow-vent.js +2 -2
  159. package/dist/schema/nodes/fence.js +2 -2
  160. package/dist/schema/nodes/guide.js +2 -2
  161. package/dist/schema/nodes/gutter.d.ts +1 -1
  162. package/dist/schema/nodes/gutter.js +4 -4
  163. package/dist/schema/nodes/hvac-equipment.js +1 -1
  164. package/dist/schema/nodes/imported-mesh.d.ts +40 -0
  165. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -0
  166. package/dist/schema/nodes/imported-mesh.js +27 -0
  167. package/dist/schema/nodes/item.d.ts +3 -3
  168. package/dist/schema/nodes/item.js +3 -3
  169. package/dist/schema/nodes/lean-to-extension.js +4 -4
  170. package/dist/schema/nodes/level.d.ts +1 -1
  171. package/dist/schema/nodes/level.d.ts.map +1 -1
  172. package/dist/schema/nodes/level.js +1 -1
  173. package/dist/schema/nodes/lineset.js +1 -1
  174. package/dist/schema/nodes/liquid-line.js +1 -1
  175. package/dist/schema/nodes/measurement.js +2 -2
  176. package/dist/schema/nodes/pipe-fitting.d.ts +1 -1
  177. package/dist/schema/nodes/pipe-fitting.js +1 -1
  178. package/dist/schema/nodes/pipe-segment.d.ts +1 -1
  179. package/dist/schema/nodes/pipe-segment.js +2 -2
  180. package/dist/schema/nodes/pipe-trap.d.ts +1 -1
  181. package/dist/schema/nodes/pipe-trap.js +1 -1
  182. package/dist/schema/nodes/ridge-vent.d.ts +1 -1
  183. package/dist/schema/nodes/ridge-vent.js +3 -3
  184. package/dist/schema/nodes/roof-segment-shape.d.ts +1 -1
  185. package/dist/schema/nodes/roof-segment-shape.js +1 -1
  186. package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
  187. package/dist/schema/nodes/roof-segment-walls.js +1 -1
  188. package/dist/schema/nodes/roof-segment.d.ts +2 -2
  189. package/dist/schema/nodes/roof-segment.js +2 -2
  190. package/dist/schema/nodes/roof.d.ts +1 -1
  191. package/dist/schema/nodes/roof.js +3 -3
  192. package/dist/schema/nodes/scan.js +3 -3
  193. package/dist/schema/nodes/shelf.d.ts +1 -1
  194. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  195. package/dist/schema/nodes/shelf.js +3 -4
  196. package/dist/schema/nodes/site.js +2 -2
  197. package/dist/schema/nodes/skylight.d.ts +4 -4
  198. package/dist/schema/nodes/skylight.js +2 -2
  199. package/dist/schema/nodes/slab.js +3 -3
  200. package/dist/schema/nodes/solar-panel.js +3 -3
  201. package/dist/schema/nodes/spawn.js +1 -1
  202. package/dist/schema/nodes/stair-segment.js +2 -2
  203. package/dist/schema/nodes/stair.d.ts +1 -1
  204. package/dist/schema/nodes/stair.js +3 -3
  205. package/dist/schema/nodes/structural-grid.js +1 -1
  206. package/dist/schema/nodes/turbine-vent.d.ts +1 -1
  207. package/dist/schema/nodes/turbine-vent.js +2 -2
  208. package/dist/schema/nodes/unit.d.ts +33 -0
  209. package/dist/schema/nodes/unit.d.ts.map +1 -0
  210. package/dist/schema/nodes/unit.js +13 -0
  211. package/dist/schema/nodes/wall.d.ts +2 -2
  212. package/dist/schema/nodes/wall.d.ts.map +1 -1
  213. package/dist/schema/nodes/wall.js +7 -6
  214. package/dist/schema/nodes/window.js +2 -2
  215. package/dist/schema/nodes/zone.js +1 -1
  216. package/dist/schema/scene-material.js +2 -2
  217. package/dist/schema/types.d.ts +341 -19
  218. package/dist/schema/types.d.ts.map +1 -1
  219. package/dist/schema/types.js +56 -49
  220. package/dist/services/alignment-anchors.d.ts +6 -11
  221. package/dist/services/alignment-anchors.d.ts.map +1 -1
  222. package/dist/services/alignment-anchors.js +7 -34
  223. package/dist/services/drag-session.d.ts +4 -4
  224. package/dist/services/drag-session.js +1 -1
  225. package/dist/services/hosting.d.ts +2 -8
  226. package/dist/services/hosting.d.ts.map +1 -1
  227. package/dist/services/hosting.js +2 -12
  228. package/dist/services/index.d.ts +16 -13
  229. package/dist/services/index.d.ts.map +1 -1
  230. package/dist/services/index.js +16 -13
  231. package/dist/services/level-height.d.ts +2 -2
  232. package/dist/services/level-height.js +3 -3
  233. package/dist/services/movement.d.ts +3 -3
  234. package/dist/services/movement.js +2 -2
  235. package/dist/services/port-connectivity.d.ts +1 -1
  236. package/dist/services/port-connectivity.js +1 -1
  237. package/dist/services/riser-diagram.d.ts +1 -1
  238. package/dist/services/shelf-board.d.ts +5 -0
  239. package/dist/services/shelf-board.d.ts.map +1 -0
  240. package/dist/services/shelf-board.js +15 -0
  241. package/dist/services/storey.d.ts +2 -2
  242. package/dist/services/storey.js +2 -2
  243. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +13 -0
  244. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +1 -0
  245. package/dist/services/surface-hosting-procedural-parity.fixtures.js +4691 -0
  246. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +1060 -0
  247. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +1 -0
  248. package/dist/services/surface-hosting-shelf-parity.fixtures.js +3127 -0
  249. package/dist/services/surface-hosting.d.ts +88 -0
  250. package/dist/services/surface-hosting.d.ts.map +1 -0
  251. package/dist/services/surface-hosting.js +268 -0
  252. package/dist/services/surface-region.d.ts +8 -0
  253. package/dist/services/surface-region.d.ts.map +1 -0
  254. package/dist/services/surface-region.js +44 -0
  255. package/dist/services/system-graph.d.ts +2 -2
  256. package/dist/services/system-graph.js +2 -2
  257. package/dist/services/validate-dwv.d.ts +1 -1
  258. package/dist/services/validate-dwv.js +1 -1
  259. package/dist/store/actions/node-actions.d.ts +2 -2
  260. package/dist/store/actions/node-actions.d.ts.map +1 -1
  261. package/dist/store/actions/node-actions.js +48 -9
  262. package/dist/store/history-control.d.ts +3 -3
  263. package/dist/store/history-invalidation.d.ts +1 -1
  264. package/dist/store/history-invalidation.js +1 -1
  265. package/dist/store/use-interactive.d.ts +2 -2
  266. package/dist/store/use-live-terrain.d.ts +1 -1
  267. package/dist/store/use-scene.d.ts +4 -4
  268. package/dist/store/use-scene.d.ts.map +1 -1
  269. package/dist/store/use-scene.js +37 -31
  270. package/dist/systems/elevator/elevator-dispatch.d.ts +2 -2
  271. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  272. package/dist/systems/elevator/elevator-geometry.d.ts +1 -1
  273. package/dist/systems/elevator/elevator-opening-sync.d.ts +1 -1
  274. package/dist/systems/elevator/elevator-opening-sync.js +2 -2
  275. package/dist/systems/elevator/elevator-opening-system.js +3 -3
  276. package/dist/systems/elevator/elevator-runtime.d.ts +3 -3
  277. package/dist/systems/elevator/elevator-runtime.js +3 -3
  278. package/dist/systems/elevator/elevator-service.d.ts +1 -1
  279. package/dist/systems/elevator/elevator-service.js +1 -1
  280. package/dist/systems/fence/fence-centerline.d.ts +2 -2
  281. package/dist/systems/fence/fence-centerline.js +2 -2
  282. package/dist/systems/fence/fence-spline.d.ts +2 -2
  283. package/dist/systems/roof/roof-elevation-system.js +3 -3
  284. package/dist/systems/roof/roof-elevation.d.ts +2 -2
  285. package/dist/systems/roof/roof-elevation.js +6 -6
  286. package/dist/systems/roof/roof-footprint.d.ts +1 -1
  287. package/dist/systems/roof/roof-footprint.js +3 -3
  288. package/dist/systems/slab/slab-placement.d.ts +1 -1
  289. package/dist/systems/slab/slab-support.d.ts +1 -1
  290. package/dist/systems/slab/slab-support.js +4 -4
  291. package/dist/systems/stair/stair-flight.d.ts +2 -2
  292. package/dist/systems/stair/stair-flight.js +2 -2
  293. package/dist/systems/stair/stair-footprint.d.ts +1 -1
  294. package/dist/systems/stair/stair-opening-preview.d.ts +206 -79
  295. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  296. package/dist/systems/stair/stair-opening-preview.js +2 -2
  297. package/dist/systems/stair/stair-opening-sync.d.ts +1 -1
  298. package/dist/systems/stair/stair-opening-sync.js +6 -6
  299. package/dist/systems/stair/stair-opening-system.js +8 -8
  300. package/dist/systems/stair/stair-rise.d.ts +1 -1
  301. package/dist/systems/stair/stair-rise.js +3 -3
  302. package/dist/systems/wall/wall-curve.d.ts +2 -2
  303. package/dist/systems/wall/wall-footprint.d.ts +3 -3
  304. package/dist/systems/wall/wall-footprint.js +3 -3
  305. package/dist/systems/wall/wall-mitering.d.ts +1 -1
  306. package/dist/systems/wall/wall-mitering.js +1 -1
  307. package/dist/systems/wall/wall-move.d.ts +1 -1
  308. package/dist/systems/wall/wall-top.d.ts +1 -1
  309. package/dist/systems/wall/wall-topology.d.ts +2 -2
  310. package/dist/systems/wall/wall-topology.js +4 -4
  311. package/dist/utils/clone-scene-graph.d.ts +3 -3
  312. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  313. package/dist/utils/clone-scene-graph.js +9 -3
  314. package/dist/utils/scene-migrations.d.ts +3 -3
  315. package/dist/utils/scene-migrations.js +3 -3
  316. package/dist/utils/vertical-scene-migration.js +5 -5
  317. package/dist/validation/validate-build-json.d.ts +5 -2
  318. package/dist/validation/validate-build-json.d.ts.map +1 -1
  319. package/dist/validation/validate-build-json.js +45 -4
  320. package/package.json +14 -3
@@ -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,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
471
489
  } | undefined;
472
490
  } | undefined;
473
491
  materialPreset?: string | undefined;
492
+ height?: number | undefined;
474
493
  thickness?: number | undefined;
475
494
  fillToTerrain?: boolean | undefined;
476
495
  interiorMaterial?: {
@@ -565,7 +584,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
565
584
  postCap: "flat" | "none" | "pyramid";
566
585
  showInfill: boolean;
567
586
  type: "fence";
568
- path?: [number, number][] | undefined;
569
587
  name?: string | undefined;
570
588
  camera?: {
571
589
  position: [number, number, number];
@@ -574,6 +592,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
574
592
  fov?: number | undefined;
575
593
  zoom?: number | undefined;
576
594
  } | undefined;
595
+ path?: [number, number][] | undefined;
577
596
  supportSlabId?: string | undefined;
578
597
  slots?: Record<string, string> | undefined;
579
598
  material?: {
@@ -605,7 +624,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
605
624
  visible: boolean;
606
625
  metadata: Record<string, unknown>;
607
626
  rotation: number;
608
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
627
+ children: string[];
609
628
  width: number;
610
629
  depth: number;
611
630
  operationState: number;
@@ -754,7 +773,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
754
773
  visible: boolean;
755
774
  metadata: Record<string, unknown>;
756
775
  rotation: number;
757
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
776
+ children: string[];
758
777
  width: number;
759
778
  depth: number;
760
779
  operationState: number;
@@ -901,9 +920,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
901
920
  parentId: string | null;
902
921
  visible: boolean;
903
922
  metadata: Record<string, unknown>;
904
- rotation: [number, number, number];
905
923
  scale: [number, number, number];
906
- children: `item_${string}`[];
924
+ rotation: [number, number, number];
925
+ children: string[];
907
926
  asset: {
908
927
  id: string;
909
928
  category: string;
@@ -917,7 +936,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
917
936
  scale: [number, number, number];
918
937
  floorPlanUrl?: string | undefined;
919
938
  isDraft?: boolean | undefined;
920
- attachTo?: "wall" | "wall-side" | "ceiling" | undefined;
939
+ attachTo?: "wall" | "ceiling" | "wall-side" | undefined;
921
940
  recessed?: boolean | undefined;
922
941
  tags?: string[] | undefined;
923
942
  functionTags?: string[] | undefined;
@@ -972,14 +991,122 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
972
991
  zoom?: number | undefined;
973
992
  } | undefined;
974
993
  side?: "front" | "back" | undefined;
994
+ supportSlabId?: string | undefined;
995
+ slots?: Record<string, string> | undefined;
996
+ roofSegmentId?: string | undefined;
975
997
  wallId?: string | undefined;
976
998
  wallT?: number | undefined;
977
- roofSegmentId?: string | undefined;
978
999
  roofFace?: "front" | "back" | "right" | "left" | undefined;
979
1000
  blockFaceId?: string | undefined;
980
- supportSlabId?: string | undefined;
981
1001
  collectionIds?: `collection_${string}`[] | undefined;
982
- slots?: Record<string, string> | undefined;
1002
+ } | {
1003
+ object: "node";
1004
+ position: [number, number, number];
1005
+ id: `procedural-item_${string}`;
1006
+ parentId: string | null;
1007
+ visible: boolean;
1008
+ metadata: Record<string, unknown>;
1009
+ rotation: [number, number, number];
1010
+ children: string[];
1011
+ slots: Record<string, string>;
1012
+ parameters: Record<string, number>;
1013
+ recipe: {
1014
+ version: 1;
1015
+ name: string;
1016
+ description: string;
1017
+ parameters: {
1018
+ id: string;
1019
+ label: string;
1020
+ default: number;
1021
+ min: number;
1022
+ max: number;
1023
+ step: number;
1024
+ unit: "count" | "m" | "rad";
1025
+ part?: string | undefined;
1026
+ axis?: "x" | "y" | "z" | undefined;
1027
+ }[];
1028
+ slots: {
1029
+ id: string;
1030
+ label: string;
1031
+ color: string;
1032
+ finish?: "wood" | "glass" | "metal" | undefined;
1033
+ }[];
1034
+ parts: {
1035
+ id: string;
1036
+ label: string;
1037
+ count: import("../../procedural-items/index.js").Expr;
1038
+ shapes: {
1039
+ id: string;
1040
+ primitive: "box" | "roundedBox" | "cylinder";
1041
+ slot: string;
1042
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1043
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1044
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1045
+ radius?: import("../../procedural-items/index.js").Expr | undefined;
1046
+ support?: boolean | undefined;
1047
+ }[];
1048
+ }[];
1049
+ constraints: {
1050
+ left: import("../../procedural-items/index.js").Expr;
1051
+ relation: "lte" | "gte";
1052
+ right: import("../../procedural-items/index.js").Expr;
1053
+ message: string;
1054
+ }[];
1055
+ classification?: {
1056
+ category: string;
1057
+ functionTags: string[];
1058
+ tags: string[];
1059
+ } | undefined;
1060
+ mounting?: {
1061
+ attachTo: "ceiling" | "wall-side";
1062
+ reference: string;
1063
+ } | undefined;
1064
+ surfaces?: {
1065
+ id: string;
1066
+ label: string;
1067
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1068
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1069
+ part?: string | undefined;
1070
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1071
+ }[] | undefined;
1072
+ };
1073
+ attachments: Record<string, string>;
1074
+ type: "procedural-item";
1075
+ name?: string | undefined;
1076
+ camera?: {
1077
+ position: [number, number, number];
1078
+ target: [number, number, number];
1079
+ mode: "perspective" | "orthographic";
1080
+ fov?: number | undefined;
1081
+ zoom?: number | undefined;
1082
+ } | undefined;
1083
+ side?: "front" | "back" | undefined;
1084
+ supportSlabId?: string | undefined;
1085
+ wallId?: string | undefined;
1086
+ } | {
1087
+ object: "node";
1088
+ position: [number, number, number];
1089
+ id: `imesh_${string}`;
1090
+ parentId: string | null;
1091
+ visible: boolean;
1092
+ metadata: Record<string, unknown>;
1093
+ rotation: [number, number, number];
1094
+ primitives: {
1095
+ positions: number[];
1096
+ indices: number[];
1097
+ color: string;
1098
+ opacity: number;
1099
+ normals?: number[] | undefined;
1100
+ }[];
1101
+ type: "imported-mesh";
1102
+ name?: string | undefined;
1103
+ camera?: {
1104
+ position: [number, number, number];
1105
+ target: [number, number, number];
1106
+ mode: "perspective" | "orthographic";
1107
+ fov?: number | undefined;
1108
+ zoom?: number | undefined;
1109
+ } | undefined;
983
1110
  } | {
984
1111
  object: "node";
985
1112
  id: `zone_${string}`;
@@ -1061,7 +1188,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1061
1188
  parentId: string | null;
1062
1189
  visible: boolean;
1063
1190
  metadata: Record<string, unknown>;
1064
- children: `item_${string}`[];
1191
+ children: (`item_${string}` | `procedural-item_${string}`)[];
1065
1192
  polygon: [number, number][];
1066
1193
  holes: [number, number][][];
1067
1194
  holeMetadata: {
@@ -1079,7 +1206,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1079
1206
  fov?: number | undefined;
1080
1207
  zoom?: number | undefined;
1081
1208
  } | undefined;
1082
- height?: number | undefined;
1083
1209
  slots?: Record<string, string> | undefined;
1084
1210
  material?: {
1085
1211
  id?: string | undefined;
@@ -1099,6 +1225,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1099
1225
  } | undefined;
1100
1226
  } | undefined;
1101
1227
  materialPreset?: string | undefined;
1228
+ height?: number | undefined;
1102
1229
  } | {
1103
1230
  object: "node";
1104
1231
  position: [number, number, number];
@@ -1236,7 +1363,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1236
1363
  overhang: number;
1237
1364
  shingleThickness: number;
1238
1365
  managedByParent: boolean;
1239
- wallShell: "auto" | "include" | "omit";
1366
+ wallShell: "omit" | "auto" | "include";
1240
1367
  shedInsetEndPanels: boolean;
1241
1368
  gambrelLowerWidthRatio: number;
1242
1369
  gambrelLowerHeightRatio: number;
@@ -1356,10 +1483,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1356
1483
  visible: boolean;
1357
1484
  metadata: Record<string, unknown>;
1358
1485
  rotation: [number, number, number];
1359
- height: number;
1360
- children: `item_${string}`[];
1486
+ children: string[];
1361
1487
  width: number;
1362
1488
  depth: number;
1489
+ height: number;
1363
1490
  style: "wall-shelf" | "bookshelf" | "open-rack" | "cubby";
1364
1491
  rows: number;
1365
1492
  thickness: number;
@@ -1510,15 +1637,15 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1510
1637
  totalRise?: number | undefined;
1511
1638
  } | {
1512
1639
  object: "node";
1513
- length: number;
1514
1640
  position: [number, number, number];
1515
1641
  id: `sseg_${string}`;
1516
1642
  parentId: string | null;
1517
1643
  visible: boolean;
1518
1644
  metadata: Record<string, unknown>;
1645
+ length: number;
1519
1646
  rotation: number;
1520
- height: number;
1521
1647
  width: number;
1648
+ height: number;
1522
1649
  thickness: number;
1523
1650
  stepCount: number;
1524
1651
  fillToFloor: boolean;
@@ -1558,10 +1685,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1558
1685
  parentId: string | null;
1559
1686
  visible: boolean;
1560
1687
  metadata: Record<string, unknown>;
1561
- rotation: [number, number, number];
1562
- scale: number;
1563
- url: string | null;
1564
1688
  opacity: number;
1689
+ url: string | null;
1690
+ scale: number;
1691
+ rotation: [number, number, number];
1565
1692
  captureSession: {
1566
1693
  sessionId: string;
1567
1694
  schemaVersion?: number | undefined;
@@ -1585,10 +1712,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1585
1712
  parentId: string | null;
1586
1713
  visible: boolean;
1587
1714
  metadata: Record<string, unknown>;
1588
- rotation: [number, number, number];
1589
- scale: number;
1590
- url: string;
1591
1715
  opacity: number;
1716
+ url: string;
1717
+ scale: number;
1718
+ rotation: [number, number, number];
1592
1719
  scaleReference: {
1593
1720
  start: [number, number];
1594
1721
  end: [number, number];
@@ -1728,8 +1855,8 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1728
1855
  visible: boolean;
1729
1856
  metadata: Record<string, unknown>;
1730
1857
  rotation: [number, number, number];
1731
- height: number;
1732
1858
  width: number;
1859
+ height: number;
1733
1860
  constructionType: "framed" | "masonry";
1734
1861
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1735
1862
  operationState: number;
@@ -1763,9 +1890,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1763
1890
  zoom?: number | undefined;
1764
1891
  } | undefined;
1765
1892
  side?: "front" | "back" | undefined;
1766
- wallId?: string | undefined;
1767
- roofSegmentId?: string | undefined;
1768
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1769
1893
  slots?: Record<string, string> | undefined;
1770
1894
  material?: {
1771
1895
  id?: string | undefined;
@@ -1784,6 +1908,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1784
1908
  scale?: number | undefined;
1785
1909
  } | undefined;
1786
1910
  } | undefined;
1911
+ roofSegmentId?: string | undefined;
1912
+ wallId?: string | undefined;
1913
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1787
1914
  mark?: string | undefined;
1788
1915
  roughOpeningWidth?: number | undefined;
1789
1916
  roughOpeningHeight?: number | undefined;
@@ -1801,9 +1928,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1801
1928
  visible: boolean;
1802
1929
  metadata: Record<string, unknown>;
1803
1930
  rotation: [number, number, number];
1804
- height: number;
1805
1931
  width: number;
1806
- leafCount: 4 | 1 | 2 | 3;
1932
+ height: number;
1933
+ leafCount: 3 | 2 | 1 | 4;
1807
1934
  constructionType: "framed" | "masonry";
1808
1935
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1809
1936
  doorCategory: "interior" | "garage";
@@ -1851,9 +1978,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1851
1978
  zoom?: number | undefined;
1852
1979
  } | undefined;
1853
1980
  side?: "front" | "back" | undefined;
1854
- wallId?: string | undefined;
1855
- roofSegmentId?: string | undefined;
1856
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1857
1981
  slots?: Record<string, string> | undefined;
1858
1982
  material?: {
1859
1983
  id?: string | undefined;
@@ -1872,6 +1996,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1872
1996
  scale?: number | undefined;
1873
1997
  } | undefined;
1874
1998
  } | undefined;
1999
+ roofSegmentId?: string | undefined;
2000
+ wallId?: string | undefined;
2001
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1875
2002
  mark?: string | undefined;
1876
2003
  roughOpeningWidth?: number | undefined;
1877
2004
  roughOpeningHeight?: number | undefined;
@@ -1887,10 +2014,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1887
2014
  visible: boolean;
1888
2015
  metadata: Record<string, unknown>;
1889
2016
  rotation: number;
1890
- height: number;
1891
2017
  materialPreset: string;
1892
2018
  width: number;
1893
2019
  depth: number;
2020
+ height: number;
1894
2021
  hoodOverhang: number;
1895
2022
  topTaper: number;
1896
2023
  capHeight: number;
@@ -1909,7 +2036,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1909
2036
  fov?: number | undefined;
1910
2037
  zoom?: number | undefined;
1911
2038
  } | undefined;
1912
- roofSegmentId?: string | undefined;
1913
2039
  slots?: Record<string, string> | undefined;
1914
2040
  material?: {
1915
2041
  id?: string | undefined;
@@ -1928,17 +2054,18 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1928
2054
  scale?: number | undefined;
1929
2055
  } | undefined;
1930
2056
  } | undefined;
2057
+ roofSegmentId?: string | undefined;
1931
2058
  } | {
1932
2059
  object: "node";
1933
- length: number;
1934
2060
  position: [number, number, number];
1935
2061
  id: `rvent_${string}`;
1936
2062
  parentId: string | null;
1937
2063
  visible: boolean;
1938
2064
  metadata: Record<string, unknown>;
2065
+ length: number;
1939
2066
  rotation: number;
1940
- height: number;
1941
2067
  width: number;
2068
+ height: number;
1942
2069
  style: "metal" | "standard" | "shingled";
1943
2070
  endCaps: boolean;
1944
2071
  type: "ridge-vent";
@@ -1950,7 +2077,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1950
2077
  fov?: number | undefined;
1951
2078
  zoom?: number | undefined;
1952
2079
  } | undefined;
1953
- roofSegmentId?: string | undefined;
1954
2080
  material?: {
1955
2081
  id?: string | undefined;
1956
2082
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1969,6 +2095,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1969
2095
  } | undefined;
1970
2096
  } | undefined;
1971
2097
  materialPreset?: string | undefined;
2098
+ roofSegmentId?: string | undefined;
1972
2099
  } | {
1973
2100
  object: "node";
1974
2101
  position: [number, number, number];
@@ -1977,9 +2104,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1977
2104
  visible: boolean;
1978
2105
  metadata: Record<string, unknown>;
1979
2106
  rotation: number;
1980
- height: number;
1981
2107
  materialPreset: string;
1982
- style: "globe" | "cylinder";
2108
+ height: number;
2109
+ style: "cylinder" | "globe";
1983
2110
  diameter: number;
1984
2111
  neckHeight: number;
1985
2112
  baseOverhang: number;
@@ -1994,7 +2121,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1994
2121
  fov?: number | undefined;
1995
2122
  zoom?: number | undefined;
1996
2123
  } | undefined;
1997
- roofSegmentId?: string | undefined;
1998
2124
  slots?: Record<string, string> | undefined;
1999
2125
  material?: {
2000
2126
  id?: string | undefined;
@@ -2013,6 +2139,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2013
2139
  scale?: number | undefined;
2014
2140
  } | undefined;
2015
2141
  } | undefined;
2142
+ roofSegmentId?: string | undefined;
2016
2143
  } | {
2017
2144
  object: "node";
2018
2145
  position: [number, number, number];
@@ -2021,10 +2148,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2021
2148
  visible: boolean;
2022
2149
  metadata: Record<string, unknown>;
2023
2150
  rotation: number;
2024
- height: number;
2025
2151
  materialPreset: string;
2026
2152
  width: number;
2027
2153
  depth: number;
2154
+ height: number;
2028
2155
  roofStyle: "dome" | "pyramid";
2029
2156
  finial: boolean;
2030
2157
  type: "cupola";
@@ -2036,7 +2163,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2036
2163
  fov?: number | undefined;
2037
2164
  zoom?: number | undefined;
2038
2165
  } | undefined;
2039
- roofSegmentId?: string | undefined;
2040
2166
  slots?: Record<string, string> | undefined;
2041
2167
  material?: {
2042
2168
  id?: string | undefined;
@@ -2055,6 +2181,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2055
2181
  scale?: number | undefined;
2056
2182
  } | undefined;
2057
2183
  } | undefined;
2184
+ roofSegmentId?: string | undefined;
2058
2185
  } | {
2059
2186
  object: "node";
2060
2187
  position: [number, number, number];
@@ -2063,10 +2190,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2063
2190
  visible: boolean;
2064
2191
  metadata: Record<string, unknown>;
2065
2192
  rotation: number;
2066
- height: number;
2067
2193
  materialPreset: string;
2068
2194
  width: number;
2069
2195
  depth: number;
2196
+ height: number;
2070
2197
  style: "half-round" | "scoop" | "slant-box";
2071
2198
  louverCount: number;
2072
2199
  backRatio: number;
@@ -2079,7 +2206,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2079
2206
  fov?: number | undefined;
2080
2207
  zoom?: number | undefined;
2081
2208
  } | undefined;
2082
- roofSegmentId?: string | undefined;
2083
2209
  slots?: Record<string, string> | undefined;
2084
2210
  material?: {
2085
2211
  id?: string | undefined;
@@ -2098,21 +2224,22 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2098
2224
  scale?: number | undefined;
2099
2225
  } | undefined;
2100
2226
  } | undefined;
2227
+ roofSegmentId?: string | undefined;
2101
2228
  } | {
2102
2229
  object: "node";
2103
- length: number;
2104
2230
  position: [number, number, number];
2105
2231
  id: `gutter_${string}`;
2106
2232
  parentId: string | null;
2107
2233
  visible: boolean;
2108
2234
  metadata: Record<string, unknown>;
2235
+ length: number;
2109
2236
  rotation: number;
2110
2237
  materialPreset: string;
2111
2238
  thickness: number;
2112
2239
  profile: "box" | "k-style" | "half-round";
2240
+ size: number;
2113
2241
  hangerStyle: "none" | "strap";
2114
2242
  hangerSpacing: number;
2115
- size: number;
2116
2243
  endCapLeft: boolean;
2117
2244
  endCapRight: boolean;
2118
2245
  outlets: {
@@ -2130,7 +2257,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2130
2257
  fov?: number | undefined;
2131
2258
  zoom?: number | undefined;
2132
2259
  } | undefined;
2133
- roofSegmentId?: string | undefined;
2134
2260
  slots?: Record<string, string> | undefined;
2135
2261
  material?: {
2136
2262
  id?: string | undefined;
@@ -2149,6 +2275,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2149
2275
  scale?: number | undefined;
2150
2276
  } | undefined;
2151
2277
  } | undefined;
2278
+ roofSegmentId?: string | undefined;
2152
2279
  arc?: {
2153
2280
  centerX: number;
2154
2281
  centerZ: number;
@@ -2205,7 +2332,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2205
2332
  fov?: number | undefined;
2206
2333
  zoom?: number | undefined;
2207
2334
  } | undefined;
2208
- roofSegmentId?: string | undefined;
2209
2335
  material?: {
2210
2336
  id?: string | undefined;
2211
2337
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2224,6 +2350,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2224
2350
  } | undefined;
2225
2351
  } | undefined;
2226
2352
  materialPreset?: string | undefined;
2353
+ roofSegmentId?: string | undefined;
2227
2354
  topMaterial?: {
2228
2355
  id?: string | undefined;
2229
2356
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2270,7 +2397,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2270
2397
  fov?: number | undefined;
2271
2398
  zoom?: number | undefined;
2272
2399
  } | undefined;
2273
- roofSegmentId?: string | undefined;
2274
2400
  material?: {
2275
2401
  id?: string | undefined;
2276
2402
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2289,6 +2415,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2289
2415
  } | undefined;
2290
2416
  } | undefined;
2291
2417
  materialPreset?: string | undefined;
2418
+ roofSegmentId?: string | undefined;
2292
2419
  panelMaterial?: {
2293
2420
  id?: string | undefined;
2294
2421
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2317,10 +2444,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2317
2444
  visible: boolean;
2318
2445
  metadata: Record<string, unknown>;
2319
2446
  rotation: number;
2320
- height: number;
2321
2447
  width: number;
2448
+ height: number;
2322
2449
  operationState: number;
2323
- slideDirection: "z" | "x";
2450
+ slideDirection: "x" | "z";
2324
2451
  frameThickness: number;
2325
2452
  frameDepth: number;
2326
2453
  curbHeight: number;
@@ -2330,7 +2457,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2330
2457
  lanternHeight: number;
2331
2458
  lanternTopScale: number;
2332
2459
  openingAngle: number;
2333
- openingSide: "right" | "left" | "top" | "bottom";
2460
+ openingSide: "top" | "right" | "left" | "bottom";
2334
2461
  motorHousing: boolean;
2335
2462
  slideFraction: number;
2336
2463
  trackWidth: number;
@@ -2345,7 +2472,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2345
2472
  fov?: number | undefined;
2346
2473
  zoom?: number | undefined;
2347
2474
  } | undefined;
2348
- roofSegmentId?: string | undefined;
2349
2475
  material?: {
2350
2476
  id?: string | undefined;
2351
2477
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2364,6 +2490,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2364
2490
  } | undefined;
2365
2491
  } | undefined;
2366
2492
  materialPreset?: string | undefined;
2493
+ roofSegmentId?: string | undefined;
2367
2494
  surfaceNormal?: [number, number, number] | undefined;
2368
2495
  glassMaterial?: {
2369
2496
  id?: string | undefined;
@@ -2391,10 +2518,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2391
2518
  visible: boolean;
2392
2519
  metadata: Record<string, unknown>;
2393
2520
  rotation: number;
2394
- height: number;
2395
2521
  children: `window_${string}`[];
2396
2522
  width: number;
2397
2523
  depth: number;
2524
+ height: number;
2398
2525
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
2399
2526
  roofHeight: number;
2400
2527
  shedHighSide: "front" | "back";
@@ -2423,7 +2550,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2423
2550
  fov?: number | undefined;
2424
2551
  zoom?: number | undefined;
2425
2552
  } | undefined;
2426
- roofSegmentId?: string | undefined;
2427
2553
  material?: {
2428
2554
  id?: string | undefined;
2429
2555
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2442,6 +2568,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2442
2568
  } | undefined;
2443
2569
  } | undefined;
2444
2570
  materialPreset?: string | undefined;
2571
+ roofSegmentId?: string | undefined;
2445
2572
  topMaterial?: {
2446
2573
  id?: string | undefined;
2447
2574
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2498,11 +2625,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2498
2625
  sideMaterialPreset?: string | undefined;
2499
2626
  } | {
2500
2627
  object: "node";
2501
- length: number;
2502
2628
  id: `downspout_${string}`;
2503
2629
  parentId: string | null;
2504
2630
  visible: boolean;
2505
2631
  metadata: Record<string, unknown>;
2632
+ length: number;
2506
2633
  materialPreset: string;
2507
2634
  diameter: number;
2508
2635
  shape: "round" | "auto" | "rect";
@@ -2542,13 +2669,13 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2542
2669
  lengthMode?: "manual" | "to-ground" | undefined;
2543
2670
  } | {
2544
2671
  object: "node";
2545
- path: [number, number, number][];
2546
2672
  id: `duct-segment_${string}`;
2547
2673
  parentId: string | null;
2548
2674
  visible: boolean;
2549
2675
  metadata: Record<string, unknown>;
2550
- height: number;
2676
+ path: [number, number, number][];
2551
2677
  width: number;
2678
+ height: number;
2552
2679
  diameter: number;
2553
2680
  shape: "round" | "rect" | "oval";
2554
2681
  roll: number;
@@ -2591,10 +2718,10 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2591
2718
  visible: boolean;
2592
2719
  metadata: Record<string, unknown>;
2593
2720
  rotation: [number, number, number];
2594
- height: number;
2595
2721
  width: number;
2596
- diameter: number;
2722
+ height: number;
2597
2723
  angle: number;
2724
+ diameter: number;
2598
2725
  shape: "round" | "rect" | "oval";
2599
2726
  ductMaterial: "sheet-metal" | "flex" | "duct-board";
2600
2727
  system: "supply" | "return";
@@ -2653,9 +2780,9 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2653
2780
  visible: boolean;
2654
2781
  metadata: Record<string, unknown>;
2655
2782
  rotation: number;
2656
- height: number;
2657
2783
  width: number;
2658
2784
  depth: number;
2785
+ height: number;
2659
2786
  equipmentType: "furnace" | "air-handler" | "condenser";
2660
2787
  supplyShape: "round" | "rect" | "oval";
2661
2788
  returnShape: "round" | "rect" | "oval";
@@ -2677,11 +2804,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2677
2804
  supportSlabId?: string | undefined;
2678
2805
  } | {
2679
2806
  object: "node";
2680
- path: [number, number, number][];
2681
2807
  id: `lineset_${string}`;
2682
2808
  parentId: string | null;
2683
2809
  visible: boolean;
2684
2810
  metadata: Record<string, unknown>;
2811
+ path: [number, number, number][];
2685
2812
  insulated: boolean;
2686
2813
  suctionDiameter: number;
2687
2814
  liquidDiameter: number;
@@ -2696,11 +2823,11 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2696
2823
  } | undefined;
2697
2824
  } | {
2698
2825
  object: "node";
2699
- path: [number, number, number][];
2700
2826
  id: `liquid-line_${string}`;
2701
2827
  parentId: string | null;
2702
2828
  visible: boolean;
2703
2829
  metadata: Record<string, unknown>;
2830
+ path: [number, number, number][];
2704
2831
  diameter: number;
2705
2832
  type: "liquid-line";
2706
2833
  name?: string | undefined;
@@ -2713,14 +2840,14 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2713
2840
  } | undefined;
2714
2841
  } | {
2715
2842
  object: "node";
2716
- path: [number, number, number][];
2717
2843
  id: `pipe-segment_${string}`;
2718
2844
  parentId: string | null;
2719
2845
  visible: boolean;
2720
2846
  metadata: Record<string, unknown>;
2847
+ path: [number, number, number][];
2721
2848
  diameter: number;
2722
2849
  system: "waste" | "vent";
2723
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2850
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2724
2851
  type: "pipe-segment";
2725
2852
  name?: string | undefined;
2726
2853
  camera?: {
@@ -2754,12 +2881,12 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2754
2881
  visible: boolean;
2755
2882
  metadata: Record<string, unknown>;
2756
2883
  rotation: [number, number, number];
2757
- diameter: number;
2758
2884
  angle: number;
2885
+ diameter: number;
2759
2886
  system: "waste" | "vent";
2760
2887
  fittingType: "elbow" | "cross" | "reducer" | "end-cap" | "coupling" | "wye" | "sanitary-tee" | "cleanout";
2761
2888
  diameter2: number;
2762
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2889
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2763
2890
  cleanoutStyle: "end" | "inline";
2764
2891
  type: "pipe-fitting";
2765
2892
  name?: string | undefined;
@@ -2779,7 +2906,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2779
2906
  metadata: Record<string, unknown>;
2780
2907
  rotation: number;
2781
2908
  diameter: number;
2782
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2909
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2783
2910
  armLengthM: number;
2784
2911
  type: "pipe-trap";
2785
2912
  name?: string | undefined;
@@ -2792,7 +2919,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2792
2919
  } | undefined;
2793
2920
  }>;
2794
2921
  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}`>;
2922
+ 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
2923
  apply(updates: SurfaceOpeningUpdate[]): void;
2797
2924
  clear(): void;
2798
2925
  };