@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,4 +1,4 @@
1
- import type { AnyNode, AnyNodeId, LevelNode, SlabNode } from '../../schema';
1
+ import type { AnyNode, AnyNodeId, LevelNode, SlabNode } from '../../schema/index.js';
2
2
  export declare function resolveLevelId(node: AnyNode, nodes: Record<string, AnyNode>): string;
3
3
  /**
4
4
  * Walks the parent chain of `nodeId` and returns the id of the first ancestor
@@ -28,6 +28,24 @@ export declare function findLevelAncestorId(nodeId: AnyNodeId, nodes: Record<str
28
28
  */
29
29
  export declare function resolveBuildingForLevel(levelId: AnyNodeId, nodes: Record<AnyNodeId, AnyNode>): AnyNodeId | null;
30
30
  export declare function initSpatialGridSync(): () => void;
31
+ /**
32
+ * Bulk slab-change guard. A scene load, reload, paste or import changes tens to
33
+ * thousands of slabs in one store write, and scanning every node twice per slab
34
+ * is O(slabs × nodes): a 4,600-slab scene blocked the main thread for ~5 s on
35
+ * every load. When at least this many slabs are added, removed or reshaped in
36
+ * one write, `markAllSlabDependents` dirties every node any slab could affect,
37
+ * once, and the per-slab scans are skipped. The marks are a superset of the
38
+ * per-slab result — and `setScene` marks every node dirty right after `set()`
39
+ * regardless — so load-time behaviour is unchanged; the saving is the scans.
40
+ */
41
+ export declare const BULK_SLAB_CHANGE_THRESHOLD = 32;
42
+ export declare function countBulkSlabChanges(nodes: Record<string, AnyNode>, prevNodes: Record<string, AnyNode>): number;
43
+ /**
44
+ * Every node a slab change can dirty, without looking at any slab: walls and
45
+ * ceilings (overlap and covering-below rules), stairs (deck attachment) and
46
+ * level-hosted floor-placed kinds (the generic re-elevation sweep).
47
+ */
48
+ export declare function markAllSlabDependents(nodes: Record<string, AnyNode>, markDirty: (id: AnyNodeId) => void): void;
31
49
  /**
32
50
  * A level's stored height moved: plane-bound walls follow the new plane,
33
51
  * stair rise re-derives, and ceilings/fences re-resolve their clamp — mark
@@ -82,7 +100,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
82
100
  visible: boolean;
83
101
  metadata: Record<string, unknown>;
84
102
  rotation: [number, number, number];
85
- children: (`elevator_${string}` | `level_${string}`)[];
103
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
86
104
  type: "building";
87
105
  name?: string | undefined;
88
106
  camera?: {
@@ -148,13 +166,31 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
148
166
  shaftWidth?: number | undefined;
149
167
  shaftDepth?: number | undefined;
150
168
  servedLevelIds?: string[] | undefined;
169
+ } | {
170
+ object: "node";
171
+ id: `unit_${string}`;
172
+ name: string;
173
+ parentId: string | null;
174
+ visible: boolean;
175
+ metadata: Record<string, unknown>;
176
+ color: string;
177
+ kind: "apartment" | "hotel-room" | "commercial" | "common";
178
+ members: `zone_${string}`[];
179
+ type: "unit";
180
+ camera?: {
181
+ position: [number, number, number];
182
+ target: [number, number, number];
183
+ mode: "perspective" | "orthographic";
184
+ fov?: number | undefined;
185
+ zoom?: number | undefined;
186
+ } | undefined;
151
187
  } | {
152
188
  object: "node";
153
189
  id: `level_${string}`;
154
190
  parentId: string | null;
155
191
  visible: boolean;
156
192
  metadata: Record<string, unknown>;
157
- 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}`)[];
193
+ 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}`)[];
158
194
  level: number;
159
195
  baseElevation: number;
160
196
  type: "level";
@@ -264,9 +300,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
264
300
  visible: boolean;
265
301
  metadata: Record<string, unknown>;
266
302
  rotation: number;
267
- height: number;
303
+ children: string[];
268
304
  width: number;
269
305
  depth: number;
306
+ height: number;
270
307
  baseHeight: number;
271
308
  style: "plain" | "faceted" | "fluted" | "lathe-turned" | "dravidian-carved" | "cluster";
272
309
  crossSection: "round" | "square" | "rectangular" | "octagonal" | "sixteen-sided";
@@ -400,7 +437,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
400
437
  drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
401
438
  drawingOverrides: {
402
439
  drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
403
- presentation: "omit" | "shown" | "controlled";
440
+ presentation: "shown" | "omit" | "controlled";
404
441
  suppressedSegmentIndexes: number[];
405
442
  }[];
406
443
  controllingDimensionId: `construction-dimension_${string}` | null;
@@ -421,8 +458,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
421
458
  visible: boolean;
422
459
  metadata: Record<string, unknown>;
423
460
  rotation: number;
424
- children: `item_${string}`[];
425
- slots: Record<string, string>;
461
+ children: string[];
426
462
  topology: {
427
463
  vertices: {
428
464
  id: string;
@@ -438,6 +474,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
438
474
  materialSlot: string;
439
475
  }[];
440
476
  };
477
+ slots: Record<string, string>;
441
478
  slotNames: Record<string, string>;
442
479
  type: "block";
443
480
  name?: string | undefined;
@@ -475,7 +512,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
475
512
  parentId: string | null;
476
513
  visible: boolean;
477
514
  metadata: Record<string, unknown>;
478
- children: (`item_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}`)[];
515
+ children: (`item_${string}` | `procedural-item_${string}` | `door_${string}` | `window_${string}` | `leanto_${string}`)[];
479
516
  start: [number, number];
480
517
  end: [number, number];
481
518
  frontSide: "unknown" | "interior" | "exterior";
@@ -489,7 +526,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
489
526
  fov?: number | undefined;
490
527
  zoom?: number | undefined;
491
528
  } | undefined;
492
- height?: number | undefined;
493
529
  supportSlabId?: string | undefined;
494
530
  slots?: Record<string, string> | undefined;
495
531
  material?: {
@@ -510,6 +546,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
510
546
  } | undefined;
511
547
  } | undefined;
512
548
  materialPreset?: string | undefined;
549
+ height?: number | undefined;
513
550
  thickness?: number | undefined;
514
551
  fillToTerrain?: boolean | undefined;
515
552
  interiorMaterial?: {
@@ -604,7 +641,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
604
641
  postCap: "flat" | "none" | "pyramid";
605
642
  showInfill: boolean;
606
643
  type: "fence";
607
- path?: [number, number][] | undefined;
608
644
  name?: string | undefined;
609
645
  camera?: {
610
646
  position: [number, number, number];
@@ -613,6 +649,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
613
649
  fov?: number | undefined;
614
650
  zoom?: number | undefined;
615
651
  } | undefined;
652
+ path?: [number, number][] | undefined;
616
653
  supportSlabId?: string | undefined;
617
654
  slots?: Record<string, string> | undefined;
618
655
  material?: {
@@ -644,7 +681,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
644
681
  visible: boolean;
645
682
  metadata: Record<string, unknown>;
646
683
  rotation: number;
647
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
684
+ children: string[];
648
685
  width: number;
649
686
  depth: number;
650
687
  operationState: number;
@@ -793,7 +830,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
793
830
  visible: boolean;
794
831
  metadata: Record<string, unknown>;
795
832
  rotation: number;
796
- children: (`cabinet_${string}` | `cabinet-module_${string}`)[];
833
+ children: string[];
797
834
  width: number;
798
835
  depth: number;
799
836
  operationState: number;
@@ -940,9 +977,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
940
977
  parentId: string | null;
941
978
  visible: boolean;
942
979
  metadata: Record<string, unknown>;
943
- rotation: [number, number, number];
944
980
  scale: [number, number, number];
945
- children: `item_${string}`[];
981
+ rotation: [number, number, number];
982
+ children: string[];
946
983
  asset: {
947
984
  id: string;
948
985
  category: string;
@@ -956,7 +993,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
956
993
  scale: [number, number, number];
957
994
  floorPlanUrl?: string | undefined;
958
995
  isDraft?: boolean | undefined;
959
- attachTo?: "wall" | "wall-side" | "ceiling" | undefined;
996
+ attachTo?: "wall" | "ceiling" | "wall-side" | undefined;
960
997
  recessed?: boolean | undefined;
961
998
  tags?: string[] | undefined;
962
999
  functionTags?: string[] | undefined;
@@ -1011,14 +1048,122 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1011
1048
  zoom?: number | undefined;
1012
1049
  } | undefined;
1013
1050
  side?: "front" | "back" | undefined;
1051
+ supportSlabId?: string | undefined;
1052
+ slots?: Record<string, string> | undefined;
1053
+ roofSegmentId?: string | undefined;
1014
1054
  wallId?: string | undefined;
1015
1055
  wallT?: number | undefined;
1016
- roofSegmentId?: string | undefined;
1017
1056
  roofFace?: "front" | "back" | "right" | "left" | undefined;
1018
1057
  blockFaceId?: string | undefined;
1019
- supportSlabId?: string | undefined;
1020
1058
  collectionIds?: `collection_${string}`[] | undefined;
1021
- slots?: Record<string, string> | undefined;
1059
+ } | {
1060
+ object: "node";
1061
+ position: [number, number, number];
1062
+ id: `procedural-item_${string}`;
1063
+ parentId: string | null;
1064
+ visible: boolean;
1065
+ metadata: Record<string, unknown>;
1066
+ rotation: [number, number, number];
1067
+ children: string[];
1068
+ slots: Record<string, string>;
1069
+ parameters: Record<string, number>;
1070
+ recipe: {
1071
+ version: 1;
1072
+ name: string;
1073
+ description: string;
1074
+ parameters: {
1075
+ id: string;
1076
+ label: string;
1077
+ default: number;
1078
+ min: number;
1079
+ max: number;
1080
+ step: number;
1081
+ unit: "count" | "m" | "rad";
1082
+ part?: string | undefined;
1083
+ axis?: "x" | "y" | "z" | undefined;
1084
+ }[];
1085
+ slots: {
1086
+ id: string;
1087
+ label: string;
1088
+ color: string;
1089
+ finish?: "wood" | "glass" | "metal" | undefined;
1090
+ }[];
1091
+ parts: {
1092
+ id: string;
1093
+ label: string;
1094
+ count: import("../../procedural-items/index.js").Expr;
1095
+ shapes: {
1096
+ id: string;
1097
+ primitive: "box" | "roundedBox" | "cylinder";
1098
+ slot: string;
1099
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1100
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1101
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1102
+ radius?: import("../../procedural-items/index.js").Expr | undefined;
1103
+ support?: boolean | undefined;
1104
+ }[];
1105
+ }[];
1106
+ constraints: {
1107
+ left: import("../../procedural-items/index.js").Expr;
1108
+ relation: "lte" | "gte";
1109
+ right: import("../../procedural-items/index.js").Expr;
1110
+ message: string;
1111
+ }[];
1112
+ classification?: {
1113
+ category: string;
1114
+ functionTags: string[];
1115
+ tags: string[];
1116
+ } | undefined;
1117
+ mounting?: {
1118
+ attachTo: "ceiling" | "wall-side";
1119
+ reference: string;
1120
+ } | undefined;
1121
+ surfaces?: {
1122
+ id: string;
1123
+ label: string;
1124
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1125
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1126
+ part?: string | undefined;
1127
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1128
+ }[] | undefined;
1129
+ };
1130
+ attachments: Record<string, string>;
1131
+ type: "procedural-item";
1132
+ name?: string | undefined;
1133
+ camera?: {
1134
+ position: [number, number, number];
1135
+ target: [number, number, number];
1136
+ mode: "perspective" | "orthographic";
1137
+ fov?: number | undefined;
1138
+ zoom?: number | undefined;
1139
+ } | undefined;
1140
+ side?: "front" | "back" | undefined;
1141
+ supportSlabId?: string | undefined;
1142
+ wallId?: string | undefined;
1143
+ } | {
1144
+ object: "node";
1145
+ position: [number, number, number];
1146
+ id: `imesh_${string}`;
1147
+ parentId: string | null;
1148
+ visible: boolean;
1149
+ metadata: Record<string, unknown>;
1150
+ rotation: [number, number, number];
1151
+ primitives: {
1152
+ positions: number[];
1153
+ indices: number[];
1154
+ color: string;
1155
+ opacity: number;
1156
+ normals?: number[] | undefined;
1157
+ }[];
1158
+ type: "imported-mesh";
1159
+ name?: string | undefined;
1160
+ camera?: {
1161
+ position: [number, number, number];
1162
+ target: [number, number, number];
1163
+ mode: "perspective" | "orthographic";
1164
+ fov?: number | undefined;
1165
+ zoom?: number | undefined;
1166
+ } | undefined;
1022
1167
  } | {
1023
1168
  object: "node";
1024
1169
  id: `zone_${string}`;
@@ -1100,7 +1245,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1100
1245
  parentId: string | null;
1101
1246
  visible: boolean;
1102
1247
  metadata: Record<string, unknown>;
1103
- children: `item_${string}`[];
1248
+ children: (`item_${string}` | `procedural-item_${string}`)[];
1104
1249
  polygon: [number, number][];
1105
1250
  holes: [number, number][][];
1106
1251
  holeMetadata: {
@@ -1118,7 +1263,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1118
1263
  fov?: number | undefined;
1119
1264
  zoom?: number | undefined;
1120
1265
  } | undefined;
1121
- height?: number | undefined;
1122
1266
  slots?: Record<string, string> | undefined;
1123
1267
  material?: {
1124
1268
  id?: string | undefined;
@@ -1138,6 +1282,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1138
1282
  } | undefined;
1139
1283
  } | undefined;
1140
1284
  materialPreset?: string | undefined;
1285
+ height?: number | undefined;
1141
1286
  } | {
1142
1287
  object: "node";
1143
1288
  position: [number, number, number];
@@ -1275,7 +1420,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1275
1420
  overhang: number;
1276
1421
  shingleThickness: number;
1277
1422
  managedByParent: boolean;
1278
- wallShell: "auto" | "include" | "omit";
1423
+ wallShell: "omit" | "auto" | "include";
1279
1424
  shedInsetEndPanels: boolean;
1280
1425
  gambrelLowerWidthRatio: number;
1281
1426
  gambrelLowerHeightRatio: number;
@@ -1395,10 +1540,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1395
1540
  visible: boolean;
1396
1541
  metadata: Record<string, unknown>;
1397
1542
  rotation: [number, number, number];
1398
- height: number;
1399
- children: `item_${string}`[];
1543
+ children: string[];
1400
1544
  width: number;
1401
1545
  depth: number;
1546
+ height: number;
1402
1547
  style: "wall-shelf" | "bookshelf" | "open-rack" | "cubby";
1403
1548
  rows: number;
1404
1549
  thickness: number;
@@ -1549,15 +1694,15 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1549
1694
  totalRise?: number | undefined;
1550
1695
  } | {
1551
1696
  object: "node";
1552
- length: number;
1553
1697
  position: [number, number, number];
1554
1698
  id: `sseg_${string}`;
1555
1699
  parentId: string | null;
1556
1700
  visible: boolean;
1557
1701
  metadata: Record<string, unknown>;
1702
+ length: number;
1558
1703
  rotation: number;
1559
- height: number;
1560
1704
  width: number;
1705
+ height: number;
1561
1706
  thickness: number;
1562
1707
  stepCount: number;
1563
1708
  fillToFloor: boolean;
@@ -1597,10 +1742,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1597
1742
  parentId: string | null;
1598
1743
  visible: boolean;
1599
1744
  metadata: Record<string, unknown>;
1600
- rotation: [number, number, number];
1601
- scale: number;
1602
- url: string | null;
1603
1745
  opacity: number;
1746
+ url: string | null;
1747
+ scale: number;
1748
+ rotation: [number, number, number];
1604
1749
  captureSession: {
1605
1750
  sessionId: string;
1606
1751
  schemaVersion?: number | undefined;
@@ -1624,10 +1769,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1624
1769
  parentId: string | null;
1625
1770
  visible: boolean;
1626
1771
  metadata: Record<string, unknown>;
1627
- rotation: [number, number, number];
1628
- scale: number;
1629
- url: string;
1630
1772
  opacity: number;
1773
+ url: string;
1774
+ scale: number;
1775
+ rotation: [number, number, number];
1631
1776
  scaleReference: {
1632
1777
  start: [number, number];
1633
1778
  end: [number, number];
@@ -1767,8 +1912,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1767
1912
  visible: boolean;
1768
1913
  metadata: Record<string, unknown>;
1769
1914
  rotation: [number, number, number];
1770
- height: number;
1771
1915
  width: number;
1916
+ height: number;
1772
1917
  constructionType: "framed" | "masonry";
1773
1918
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1774
1919
  operationState: number;
@@ -1802,9 +1947,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1802
1947
  zoom?: number | undefined;
1803
1948
  } | undefined;
1804
1949
  side?: "front" | "back" | undefined;
1805
- wallId?: string | undefined;
1806
- roofSegmentId?: string | undefined;
1807
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1808
1950
  slots?: Record<string, string> | undefined;
1809
1951
  material?: {
1810
1952
  id?: string | undefined;
@@ -1823,6 +1965,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1823
1965
  scale?: number | undefined;
1824
1966
  } | undefined;
1825
1967
  } | undefined;
1968
+ roofSegmentId?: string | undefined;
1969
+ wallId?: string | undefined;
1970
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1826
1971
  mark?: string | undefined;
1827
1972
  roughOpeningWidth?: number | undefined;
1828
1973
  roughOpeningHeight?: number | undefined;
@@ -1840,9 +1985,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1840
1985
  visible: boolean;
1841
1986
  metadata: Record<string, unknown>;
1842
1987
  rotation: [number, number, number];
1843
- height: number;
1844
1988
  width: number;
1845
- leafCount: 4 | 1 | 2 | 3;
1989
+ height: number;
1990
+ leafCount: 3 | 2 | 1 | 4;
1846
1991
  constructionType: "framed" | "masonry";
1847
1992
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1848
1993
  doorCategory: "interior" | "garage";
@@ -1890,9 +2035,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1890
2035
  zoom?: number | undefined;
1891
2036
  } | undefined;
1892
2037
  side?: "front" | "back" | undefined;
1893
- wallId?: string | undefined;
1894
- roofSegmentId?: string | undefined;
1895
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1896
2038
  slots?: Record<string, string> | undefined;
1897
2039
  material?: {
1898
2040
  id?: string | undefined;
@@ -1911,6 +2053,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1911
2053
  scale?: number | undefined;
1912
2054
  } | undefined;
1913
2055
  } | undefined;
2056
+ roofSegmentId?: string | undefined;
2057
+ wallId?: string | undefined;
2058
+ roofFace?: "front" | "back" | "right" | "left" | undefined;
1914
2059
  mark?: string | undefined;
1915
2060
  roughOpeningWidth?: number | undefined;
1916
2061
  roughOpeningHeight?: number | undefined;
@@ -1926,10 +2071,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1926
2071
  visible: boolean;
1927
2072
  metadata: Record<string, unknown>;
1928
2073
  rotation: number;
1929
- height: number;
1930
2074
  materialPreset: string;
1931
2075
  width: number;
1932
2076
  depth: number;
2077
+ height: number;
1933
2078
  hoodOverhang: number;
1934
2079
  topTaper: number;
1935
2080
  capHeight: number;
@@ -1948,7 +2093,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1948
2093
  fov?: number | undefined;
1949
2094
  zoom?: number | undefined;
1950
2095
  } | undefined;
1951
- roofSegmentId?: string | undefined;
1952
2096
  slots?: Record<string, string> | undefined;
1953
2097
  material?: {
1954
2098
  id?: string | undefined;
@@ -1967,17 +2111,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1967
2111
  scale?: number | undefined;
1968
2112
  } | undefined;
1969
2113
  } | undefined;
2114
+ roofSegmentId?: string | undefined;
1970
2115
  } | {
1971
2116
  object: "node";
1972
- length: number;
1973
2117
  position: [number, number, number];
1974
2118
  id: `rvent_${string}`;
1975
2119
  parentId: string | null;
1976
2120
  visible: boolean;
1977
2121
  metadata: Record<string, unknown>;
2122
+ length: number;
1978
2123
  rotation: number;
1979
- height: number;
1980
2124
  width: number;
2125
+ height: number;
1981
2126
  style: "metal" | "standard" | "shingled";
1982
2127
  endCaps: boolean;
1983
2128
  type: "ridge-vent";
@@ -1989,7 +2134,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1989
2134
  fov?: number | undefined;
1990
2135
  zoom?: number | undefined;
1991
2136
  } | undefined;
1992
- roofSegmentId?: string | undefined;
1993
2137
  material?: {
1994
2138
  id?: string | undefined;
1995
2139
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2008,6 +2152,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2008
2152
  } | undefined;
2009
2153
  } | undefined;
2010
2154
  materialPreset?: string | undefined;
2155
+ roofSegmentId?: string | undefined;
2011
2156
  } | {
2012
2157
  object: "node";
2013
2158
  position: [number, number, number];
@@ -2016,9 +2161,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2016
2161
  visible: boolean;
2017
2162
  metadata: Record<string, unknown>;
2018
2163
  rotation: number;
2019
- height: number;
2020
2164
  materialPreset: string;
2021
- style: "globe" | "cylinder";
2165
+ height: number;
2166
+ style: "cylinder" | "globe";
2022
2167
  diameter: number;
2023
2168
  neckHeight: number;
2024
2169
  baseOverhang: number;
@@ -2033,7 +2178,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2033
2178
  fov?: number | undefined;
2034
2179
  zoom?: number | undefined;
2035
2180
  } | undefined;
2036
- roofSegmentId?: string | undefined;
2037
2181
  slots?: Record<string, string> | undefined;
2038
2182
  material?: {
2039
2183
  id?: string | undefined;
@@ -2052,6 +2196,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2052
2196
  scale?: number | undefined;
2053
2197
  } | undefined;
2054
2198
  } | undefined;
2199
+ roofSegmentId?: string | undefined;
2055
2200
  } | {
2056
2201
  object: "node";
2057
2202
  position: [number, number, number];
@@ -2060,10 +2205,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2060
2205
  visible: boolean;
2061
2206
  metadata: Record<string, unknown>;
2062
2207
  rotation: number;
2063
- height: number;
2064
2208
  materialPreset: string;
2065
2209
  width: number;
2066
2210
  depth: number;
2211
+ height: number;
2067
2212
  roofStyle: "dome" | "pyramid";
2068
2213
  finial: boolean;
2069
2214
  type: "cupola";
@@ -2075,7 +2220,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2075
2220
  fov?: number | undefined;
2076
2221
  zoom?: number | undefined;
2077
2222
  } | undefined;
2078
- roofSegmentId?: string | undefined;
2079
2223
  slots?: Record<string, string> | undefined;
2080
2224
  material?: {
2081
2225
  id?: string | undefined;
@@ -2094,6 +2238,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2094
2238
  scale?: number | undefined;
2095
2239
  } | undefined;
2096
2240
  } | undefined;
2241
+ roofSegmentId?: string | undefined;
2097
2242
  } | {
2098
2243
  object: "node";
2099
2244
  position: [number, number, number];
@@ -2102,10 +2247,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2102
2247
  visible: boolean;
2103
2248
  metadata: Record<string, unknown>;
2104
2249
  rotation: number;
2105
- height: number;
2106
2250
  materialPreset: string;
2107
2251
  width: number;
2108
2252
  depth: number;
2253
+ height: number;
2109
2254
  style: "half-round" | "scoop" | "slant-box";
2110
2255
  louverCount: number;
2111
2256
  backRatio: number;
@@ -2118,7 +2263,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2118
2263
  fov?: number | undefined;
2119
2264
  zoom?: number | undefined;
2120
2265
  } | undefined;
2121
- roofSegmentId?: string | undefined;
2122
2266
  slots?: Record<string, string> | undefined;
2123
2267
  material?: {
2124
2268
  id?: string | undefined;
@@ -2137,21 +2281,22 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2137
2281
  scale?: number | undefined;
2138
2282
  } | undefined;
2139
2283
  } | undefined;
2284
+ roofSegmentId?: string | undefined;
2140
2285
  } | {
2141
2286
  object: "node";
2142
- length: number;
2143
2287
  position: [number, number, number];
2144
2288
  id: `gutter_${string}`;
2145
2289
  parentId: string | null;
2146
2290
  visible: boolean;
2147
2291
  metadata: Record<string, unknown>;
2292
+ length: number;
2148
2293
  rotation: number;
2149
2294
  materialPreset: string;
2150
2295
  thickness: number;
2151
2296
  profile: "box" | "k-style" | "half-round";
2297
+ size: number;
2152
2298
  hangerStyle: "none" | "strap";
2153
2299
  hangerSpacing: number;
2154
- size: number;
2155
2300
  endCapLeft: boolean;
2156
2301
  endCapRight: boolean;
2157
2302
  outlets: {
@@ -2169,7 +2314,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2169
2314
  fov?: number | undefined;
2170
2315
  zoom?: number | undefined;
2171
2316
  } | undefined;
2172
- roofSegmentId?: string | undefined;
2173
2317
  slots?: Record<string, string> | undefined;
2174
2318
  material?: {
2175
2319
  id?: string | undefined;
@@ -2188,6 +2332,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2188
2332
  scale?: number | undefined;
2189
2333
  } | undefined;
2190
2334
  } | undefined;
2335
+ roofSegmentId?: string | undefined;
2191
2336
  arc?: {
2192
2337
  centerX: number;
2193
2338
  centerZ: number;
@@ -2244,7 +2389,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2244
2389
  fov?: number | undefined;
2245
2390
  zoom?: number | undefined;
2246
2391
  } | undefined;
2247
- roofSegmentId?: string | undefined;
2248
2392
  material?: {
2249
2393
  id?: string | undefined;
2250
2394
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2263,6 +2407,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2263
2407
  } | undefined;
2264
2408
  } | undefined;
2265
2409
  materialPreset?: string | undefined;
2410
+ roofSegmentId?: string | undefined;
2266
2411
  topMaterial?: {
2267
2412
  id?: string | undefined;
2268
2413
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2309,7 +2454,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2309
2454
  fov?: number | undefined;
2310
2455
  zoom?: number | undefined;
2311
2456
  } | undefined;
2312
- roofSegmentId?: string | undefined;
2313
2457
  material?: {
2314
2458
  id?: string | undefined;
2315
2459
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2328,6 +2472,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2328
2472
  } | undefined;
2329
2473
  } | undefined;
2330
2474
  materialPreset?: string | undefined;
2475
+ roofSegmentId?: string | undefined;
2331
2476
  panelMaterial?: {
2332
2477
  id?: string | undefined;
2333
2478
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2356,10 +2501,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2356
2501
  visible: boolean;
2357
2502
  metadata: Record<string, unknown>;
2358
2503
  rotation: number;
2359
- height: number;
2360
2504
  width: number;
2505
+ height: number;
2361
2506
  operationState: number;
2362
- slideDirection: "z" | "x";
2507
+ slideDirection: "x" | "z";
2363
2508
  frameThickness: number;
2364
2509
  frameDepth: number;
2365
2510
  curbHeight: number;
@@ -2369,7 +2514,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2369
2514
  lanternHeight: number;
2370
2515
  lanternTopScale: number;
2371
2516
  openingAngle: number;
2372
- openingSide: "right" | "left" | "top" | "bottom";
2517
+ openingSide: "top" | "right" | "left" | "bottom";
2373
2518
  motorHousing: boolean;
2374
2519
  slideFraction: number;
2375
2520
  trackWidth: number;
@@ -2384,7 +2529,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2384
2529
  fov?: number | undefined;
2385
2530
  zoom?: number | undefined;
2386
2531
  } | undefined;
2387
- roofSegmentId?: string | undefined;
2388
2532
  material?: {
2389
2533
  id?: string | undefined;
2390
2534
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2403,6 +2547,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2403
2547
  } | undefined;
2404
2548
  } | undefined;
2405
2549
  materialPreset?: string | undefined;
2550
+ roofSegmentId?: string | undefined;
2406
2551
  surfaceNormal?: [number, number, number] | undefined;
2407
2552
  glassMaterial?: {
2408
2553
  id?: string | undefined;
@@ -2430,10 +2575,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2430
2575
  visible: boolean;
2431
2576
  metadata: Record<string, unknown>;
2432
2577
  rotation: number;
2433
- height: number;
2434
2578
  children: `window_${string}`[];
2435
2579
  width: number;
2436
2580
  depth: number;
2581
+ height: number;
2437
2582
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
2438
2583
  roofHeight: number;
2439
2584
  shedHighSide: "front" | "back";
@@ -2462,7 +2607,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2462
2607
  fov?: number | undefined;
2463
2608
  zoom?: number | undefined;
2464
2609
  } | undefined;
2465
- roofSegmentId?: string | undefined;
2466
2610
  material?: {
2467
2611
  id?: string | undefined;
2468
2612
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2481,6 +2625,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2481
2625
  } | undefined;
2482
2626
  } | undefined;
2483
2627
  materialPreset?: string | undefined;
2628
+ roofSegmentId?: string | undefined;
2484
2629
  topMaterial?: {
2485
2630
  id?: string | undefined;
2486
2631
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2537,11 +2682,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2537
2682
  sideMaterialPreset?: string | undefined;
2538
2683
  } | {
2539
2684
  object: "node";
2540
- length: number;
2541
2685
  id: `downspout_${string}`;
2542
2686
  parentId: string | null;
2543
2687
  visible: boolean;
2544
2688
  metadata: Record<string, unknown>;
2689
+ length: number;
2545
2690
  materialPreset: string;
2546
2691
  diameter: number;
2547
2692
  shape: "round" | "auto" | "rect";
@@ -2581,13 +2726,13 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2581
2726
  lengthMode?: "manual" | "to-ground" | undefined;
2582
2727
  } | {
2583
2728
  object: "node";
2584
- path: [number, number, number][];
2585
2729
  id: `duct-segment_${string}`;
2586
2730
  parentId: string | null;
2587
2731
  visible: boolean;
2588
2732
  metadata: Record<string, unknown>;
2589
- height: number;
2733
+ path: [number, number, number][];
2590
2734
  width: number;
2735
+ height: number;
2591
2736
  diameter: number;
2592
2737
  shape: "round" | "rect" | "oval";
2593
2738
  roll: number;
@@ -2630,10 +2775,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2630
2775
  visible: boolean;
2631
2776
  metadata: Record<string, unknown>;
2632
2777
  rotation: [number, number, number];
2633
- height: number;
2634
2778
  width: number;
2635
- diameter: number;
2779
+ height: number;
2636
2780
  angle: number;
2781
+ diameter: number;
2637
2782
  shape: "round" | "rect" | "oval";
2638
2783
  ductMaterial: "sheet-metal" | "flex" | "duct-board";
2639
2784
  system: "supply" | "return";
@@ -2692,9 +2837,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2692
2837
  visible: boolean;
2693
2838
  metadata: Record<string, unknown>;
2694
2839
  rotation: number;
2695
- height: number;
2696
2840
  width: number;
2697
2841
  depth: number;
2842
+ height: number;
2698
2843
  equipmentType: "furnace" | "air-handler" | "condenser";
2699
2844
  supplyShape: "round" | "rect" | "oval";
2700
2845
  returnShape: "round" | "rect" | "oval";
@@ -2716,11 +2861,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2716
2861
  supportSlabId?: string | undefined;
2717
2862
  } | {
2718
2863
  object: "node";
2719
- path: [number, number, number][];
2720
2864
  id: `lineset_${string}`;
2721
2865
  parentId: string | null;
2722
2866
  visible: boolean;
2723
2867
  metadata: Record<string, unknown>;
2868
+ path: [number, number, number][];
2724
2869
  insulated: boolean;
2725
2870
  suctionDiameter: number;
2726
2871
  liquidDiameter: number;
@@ -2735,11 +2880,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2735
2880
  } | undefined;
2736
2881
  } | {
2737
2882
  object: "node";
2738
- path: [number, number, number][];
2739
2883
  id: `liquid-line_${string}`;
2740
2884
  parentId: string | null;
2741
2885
  visible: boolean;
2742
2886
  metadata: Record<string, unknown>;
2887
+ path: [number, number, number][];
2743
2888
  diameter: number;
2744
2889
  type: "liquid-line";
2745
2890
  name?: string | undefined;
@@ -2752,14 +2897,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2752
2897
  } | undefined;
2753
2898
  } | {
2754
2899
  object: "node";
2755
- path: [number, number, number][];
2756
2900
  id: `pipe-segment_${string}`;
2757
2901
  parentId: string | null;
2758
2902
  visible: boolean;
2759
2903
  metadata: Record<string, unknown>;
2904
+ path: [number, number, number][];
2760
2905
  diameter: number;
2761
2906
  system: "waste" | "vent";
2762
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2907
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2763
2908
  type: "pipe-segment";
2764
2909
  name?: string | undefined;
2765
2910
  camera?: {
@@ -2793,12 +2938,12 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2793
2938
  visible: boolean;
2794
2939
  metadata: Record<string, unknown>;
2795
2940
  rotation: [number, number, number];
2796
- diameter: number;
2797
2941
  angle: number;
2942
+ diameter: number;
2798
2943
  system: "waste" | "vent";
2799
2944
  fittingType: "elbow" | "cross" | "reducer" | "end-cap" | "coupling" | "wye" | "sanitary-tee" | "cleanout";
2800
2945
  diameter2: number;
2801
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2946
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2802
2947
  cleanoutStyle: "end" | "inline";
2803
2948
  type: "pipe-fitting";
2804
2949
  name?: string | undefined;
@@ -2818,7 +2963,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2818
2963
  metadata: Record<string, unknown>;
2819
2964
  rotation: number;
2820
2965
  diameter: number;
2821
- pipeMaterial: "pvc" | "abs" | "cast-iron";
2966
+ pipeMaterial: "abs" | "pvc" | "cast-iron";
2822
2967
  armLengthM: number;
2823
2968
  type: "pipe-trap";
2824
2969
  name?: string | undefined;