@pascal-app/core 1.0.6 → 1.0.7

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 (940) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
  5. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  6. package/dist/agent-operations/__fixtures__/cases.js +19 -11
  7. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
  8. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
  9. package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
  10. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
  11. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
  13. package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
  14. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  15. package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
  16. package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
  17. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
  18. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  19. package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
  20. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
  21. package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
  22. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
  23. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
  25. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
  26. package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
  27. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
  28. package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
  29. package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
  30. package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
  31. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
  32. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
  33. package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
  34. package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
  35. package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
  36. package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
  37. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
  38. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
  39. package/dist/agent-operations/add-column.d.ts.map +1 -1
  40. package/dist/agent-operations/add-column.js +32 -3
  41. package/dist/agent-operations/add-fence.d.ts.map +1 -1
  42. package/dist/agent-operations/add-fence.js +2 -1
  43. package/dist/agent-operations/add-level.d.ts.map +1 -1
  44. package/dist/agent-operations/add-level.js +4 -4
  45. package/dist/agent-operations/add-object.d.ts +32 -6
  46. package/dist/agent-operations/add-object.d.ts.map +1 -1
  47. package/dist/agent-operations/add-object.js +59 -12
  48. package/dist/agent-operations/add-wall.d.ts +3 -8
  49. package/dist/agent-operations/add-wall.d.ts.map +1 -1
  50. package/dist/agent-operations/add-wall.js +31 -8
  51. package/dist/agent-operations/apply-changes.d.ts.map +1 -1
  52. package/dist/agent-operations/apply-changes.js +2 -1
  53. package/dist/agent-operations/asset-catalog.d.ts +63 -0
  54. package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
  55. package/dist/agent-operations/asset-catalog.js +182 -0
  56. package/dist/agent-operations/asset-views.d.ts +4 -2
  57. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  58. package/dist/agent-operations/asset-views.js +1 -3
  59. package/dist/agent-operations/author-scene-checks.d.ts +38 -0
  60. package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
  61. package/dist/agent-operations/author-scene-checks.js +266 -0
  62. package/dist/agent-operations/author-scene.d.ts +54 -20
  63. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  64. package/dist/agent-operations/author-scene.js +1164 -196
  65. package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
  66. package/dist/agent-operations/authored-scene-merge.js +61 -3
  67. package/dist/agent-operations/batch.d.ts +1 -1
  68. package/dist/agent-operations/batch.d.ts.map +1 -1
  69. package/dist/agent-operations/batch.js +38 -39
  70. package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
  71. package/dist/agent-operations/ceiling-object-observations.js +5 -4
  72. package/dist/agent-operations/circulation-geometry.d.ts +14 -0
  73. package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
  74. package/dist/agent-operations/circulation-geometry.js +151 -0
  75. package/dist/agent-operations/circulation-graph.d.ts +72 -0
  76. package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
  77. package/dist/agent-operations/circulation-graph.js +713 -0
  78. package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
  79. package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
  80. package/dist/agent-operations/circulation-non-spaces.js +88 -0
  81. package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
  82. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
  83. package/dist/agent-operations/circulation-spaces.js +368 -0
  84. package/dist/agent-operations/collections.d.ts.map +1 -1
  85. package/dist/agent-operations/collections.js +9 -7
  86. package/dist/agent-operations/corner-window.d.ts.map +1 -1
  87. package/dist/agent-operations/corner-window.js +2 -4
  88. package/dist/agent-operations/create-roof.d.ts.map +1 -1
  89. package/dist/agent-operations/create-roof.js +5 -7
  90. package/dist/agent-operations/create-room.d.ts +4 -1
  91. package/dist/agent-operations/create-room.d.ts.map +1 -1
  92. package/dist/agent-operations/create-room.js +7 -4
  93. package/dist/agent-operations/create-stair.js +2 -2
  94. package/dist/agent-operations/design-brief.d.ts +13 -7
  95. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  96. package/dist/agent-operations/design-brief.js +172 -92
  97. package/dist/agent-operations/door-clearance.d.ts +68 -8
  98. package/dist/agent-operations/door-clearance.d.ts.map +1 -1
  99. package/dist/agent-operations/door-clearance.js +127 -20
  100. package/dist/agent-operations/dress-targets.d.ts +23 -0
  101. package/dist/agent-operations/dress-targets.d.ts.map +1 -0
  102. package/dist/agent-operations/dress-targets.js +34 -0
  103. package/dist/agent-operations/duplicate-node.d.ts +14 -0
  104. package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
  105. package/dist/agent-operations/duplicate-node.js +173 -0
  106. package/dist/agent-operations/find-by-type.d.ts.map +1 -1
  107. package/dist/agent-operations/find-by-type.js +3 -0
  108. package/dist/agent-operations/furnish-room.d.ts +2 -0
  109. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  110. package/dist/agent-operations/furnish-room.js +15 -4
  111. package/dist/agent-operations/furniture-kind.d.ts +28 -1
  112. package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
  113. package/dist/agent-operations/furniture-kind.js +105 -6
  114. package/dist/agent-operations/ground-reader.d.ts +10 -0
  115. package/dist/agent-operations/ground-reader.d.ts.map +1 -0
  116. package/dist/agent-operations/ground-reader.js +25 -0
  117. package/dist/agent-operations/index.d.ts +118 -12
  118. package/dist/agent-operations/index.d.ts.map +1 -1
  119. package/dist/agent-operations/index.js +26 -1
  120. package/dist/agent-operations/item-solids.d.ts +39 -0
  121. package/dist/agent-operations/item-solids.d.ts.map +1 -0
  122. package/dist/agent-operations/item-solids.js +128 -0
  123. package/dist/agent-operations/layout-clearance.d.ts +91 -11
  124. package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
  125. package/dist/agent-operations/layout-clearance.js +280 -73
  126. package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
  127. package/dist/agent-operations/level-height-fill.js +7 -1
  128. package/dist/agent-operations/level-reads.d.ts +5 -0
  129. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  130. package/dist/agent-operations/level-reads.js +38 -2
  131. package/dist/agent-operations/list-levels.d.ts.map +1 -1
  132. package/dist/agent-operations/list-levels.js +2 -4
  133. package/dist/agent-operations/move-node.d.ts +12 -0
  134. package/dist/agent-operations/move-node.d.ts.map +1 -0
  135. package/dist/agent-operations/move-node.js +28 -0
  136. package/dist/agent-operations/move-plan.d.ts +28 -0
  137. package/dist/agent-operations/move-plan.d.ts.map +1 -0
  138. package/dist/agent-operations/move-plan.js +257 -0
  139. package/dist/agent-operations/node-patch.d.ts.map +1 -1
  140. package/dist/agent-operations/node-patch.js +15 -0
  141. package/dist/agent-operations/paint.d.ts +3 -1
  142. package/dist/agent-operations/paint.d.ts.map +1 -1
  143. package/dist/agent-operations/paint.js +14 -1
  144. package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
  145. package/dist/agent-operations/photo-elevation.js +2 -1
  146. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  147. package/dist/agent-operations/place-in-room.js +1 -0
  148. package/dist/agent-operations/place-items.d.ts.map +1 -1
  149. package/dist/agent-operations/place-items.js +3 -4
  150. package/dist/agent-operations/plan-clearance.d.ts +28 -0
  151. package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
  152. package/dist/agent-operations/plan-clearance.js +47 -0
  153. package/dist/agent-operations/plan-geometry.d.ts +2 -0
  154. package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
  155. package/dist/agent-operations/plan-geometry.js +10 -0
  156. package/dist/agent-operations/project-files.d.ts +10 -0
  157. package/dist/agent-operations/project-files.d.ts.map +1 -1
  158. package/dist/agent-operations/reachability.d.ts +41 -0
  159. package/dist/agent-operations/reachability.d.ts.map +1 -0
  160. package/dist/agent-operations/reachability.js +199 -0
  161. package/dist/agent-operations/room-checks.d.ts +60 -0
  162. package/dist/agent-operations/room-checks.d.ts.map +1 -0
  163. package/dist/agent-operations/room-checks.js +226 -0
  164. package/dist/agent-operations/room-faces.d.ts +30 -0
  165. package/dist/agent-operations/room-faces.d.ts.map +1 -0
  166. package/dist/agent-operations/room-faces.js +31 -0
  167. package/dist/agent-operations/room-findings.d.ts +5 -2
  168. package/dist/agent-operations/room-findings.d.ts.map +1 -1
  169. package/dist/agent-operations/room-findings.js +30 -0
  170. package/dist/agent-operations/room-finishes.d.ts +87 -0
  171. package/dist/agent-operations/room-finishes.d.ts.map +1 -0
  172. package/dist/agent-operations/room-finishes.js +193 -0
  173. package/dist/agent-operations/room-floor-script.d.ts +3 -3
  174. package/dist/agent-operations/room-floor-script.js +3 -3
  175. package/dist/agent-operations/room-readings.d.ts +90 -0
  176. package/dist/agent-operations/room-readings.d.ts.map +1 -0
  177. package/dist/agent-operations/room-readings.js +369 -0
  178. package/dist/agent-operations/room-tile.d.ts +15 -0
  179. package/dist/agent-operations/room-tile.d.ts.map +1 -0
  180. package/dist/agent-operations/room-tile.js +30 -0
  181. package/dist/agent-operations/room-wet.d.ts +55 -0
  182. package/dist/agent-operations/room-wet.d.ts.map +1 -0
  183. package/dist/agent-operations/room-wet.js +203 -0
  184. package/dist/agent-operations/scene-check-policy.d.ts +5 -0
  185. package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
  186. package/dist/agent-operations/scene-check-policy.js +24 -0
  187. package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
  188. package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
  189. package/dist/agent-operations/scene-checkpoint.js +31 -0
  190. package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
  191. package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
  192. package/dist/agent-operations/scene-issue-groups.js +71 -0
  193. package/dist/agent-operations/scene-materials.d.ts +23 -0
  194. package/dist/agent-operations/scene-materials.d.ts.map +1 -1
  195. package/dist/agent-operations/scene-materials.js +41 -0
  196. package/dist/agent-operations/scene-queries.d.ts +1667 -866
  197. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  198. package/dist/agent-operations/scene-queries.js +3 -3
  199. package/dist/agent-operations/scene-review.d.ts.map +1 -1
  200. package/dist/agent-operations/scene-review.js +3 -2
  201. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  202. package/dist/agent-operations/scene-view.js +91 -21
  203. package/dist/agent-operations/search-assets.d.ts +10 -6
  204. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  205. package/dist/agent-operations/search-assets.js +37 -22
  206. package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
  207. package/dist/agent-operations/set-checkpoint.js +1 -0
  208. package/dist/agent-operations/set-ground-level.d.ts +1 -1
  209. package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
  210. package/dist/agent-operations/set-ground-level.js +3 -14
  211. package/dist/agent-operations/site.js +3 -2
  212. package/dist/agent-operations/slab-surface-script.d.ts +25 -0
  213. package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
  214. package/dist/agent-operations/slab-surface-script.js +60 -0
  215. package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
  216. package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
  217. package/dist/agent-operations/stair-plan-footprint.js +50 -0
  218. package/dist/agent-operations/types.d.ts +10 -5
  219. package/dist/agent-operations/types.d.ts.map +1 -1
  220. package/dist/agent-operations/units.d.ts +26 -0
  221. package/dist/agent-operations/units.d.ts.map +1 -0
  222. package/dist/agent-operations/units.js +110 -0
  223. package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
  224. package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
  225. package/dist/agent-operations/unreachable-rooms-check.js +35 -0
  226. package/dist/agent-operations/usage-checks.d.ts +2 -0
  227. package/dist/agent-operations/usage-checks.d.ts.map +1 -0
  228. package/dist/agent-operations/usage-checks.js +12 -0
  229. package/dist/agent-operations/verify-scene.d.ts +8 -11
  230. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  231. package/dist/agent-operations/verify-scene.js +55 -11
  232. package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
  233. package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
  234. package/dist/agent-operations/wall-face-defaults.js +229 -0
  235. package/dist/agent-operations/wall-joins.d.ts +119 -0
  236. package/dist/agent-operations/wall-joins.d.ts.map +1 -0
  237. package/dist/agent-operations/wall-joins.js +308 -0
  238. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  239. package/dist/agent-operations/wall-object-observations.js +4 -6
  240. package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
  241. package/dist/agent-operations/wall-skirting.js +2 -0
  242. package/dist/agent-operations/wall-type.d.ts +49 -0
  243. package/dist/agent-operations/wall-type.d.ts.map +1 -0
  244. package/dist/agent-operations/wall-type.js +31 -0
  245. package/dist/agent-operations/zone-coverage.d.ts +85 -0
  246. package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
  247. package/dist/agent-operations/zone-coverage.js +208 -0
  248. package/dist/agent-tools/add-object.d.ts +31 -0
  249. package/dist/agent-tools/add-object.d.ts.map +1 -1
  250. package/dist/agent-tools/add-object.js +44 -7
  251. package/dist/agent-tools/assets.d.ts +4 -0
  252. package/dist/agent-tools/assets.d.ts.map +1 -1
  253. package/dist/agent-tools/assets.js +11 -1
  254. package/dist/agent-tools/author-scene.d.ts +810 -15
  255. package/dist/agent-tools/author-scene.d.ts.map +1 -1
  256. package/dist/agent-tools/author-scene.js +275 -34
  257. package/dist/agent-tools/batch.d.ts +1 -1
  258. package/dist/agent-tools/batch.d.ts.map +1 -1
  259. package/dist/agent-tools/batch.js +5 -1
  260. package/dist/agent-tools/checkpoints.js +1 -1
  261. package/dist/agent-tools/columns.d.ts +14 -0
  262. package/dist/agent-tools/columns.d.ts.map +1 -1
  263. package/dist/agent-tools/columns.js +14 -2
  264. package/dist/agent-tools/contract.d.ts +10 -0
  265. package/dist/agent-tools/contract.d.ts.map +1 -1
  266. package/dist/agent-tools/contract.js +5 -1
  267. package/dist/agent-tools/corner-window.d.ts +1 -0
  268. package/dist/agent-tools/corner-window.d.ts.map +1 -1
  269. package/dist/agent-tools/corner-window.js +1 -1
  270. package/dist/agent-tools/create-room.d.ts +85 -0
  271. package/dist/agent-tools/create-room.d.ts.map +1 -1
  272. package/dist/agent-tools/create-room.js +8 -1
  273. package/dist/agent-tools/design-brief.d.ts +513 -7
  274. package/dist/agent-tools/design-brief.d.ts.map +1 -1
  275. package/dist/agent-tools/design-brief.js +192 -14
  276. package/dist/agent-tools/designs.js +1 -1
  277. package/dist/agent-tools/find-by-type.js +1 -1
  278. package/dist/agent-tools/index.d.ts +658 -10
  279. package/dist/agent-tools/index.d.ts.map +1 -1
  280. package/dist/agent-tools/index.js +9 -1
  281. package/dist/agent-tools/levels.js +4 -4
  282. package/dist/agent-tools/move-duplicate.d.ts +65 -0
  283. package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
  284. package/dist/agent-tools/move-duplicate.js +68 -0
  285. package/dist/agent-tools/paint.d.ts +6 -0
  286. package/dist/agent-tools/paint.d.ts.map +1 -1
  287. package/dist/agent-tools/paint.js +7 -3
  288. package/dist/agent-tools/photo-elevation.js +1 -1
  289. package/dist/agent-tools/project-files.d.ts +2 -2
  290. package/dist/agent-tools/project-files.d.ts.map +1 -1
  291. package/dist/agent-tools/project-files.js +1 -1
  292. package/dist/agent-tools/refusal.d.ts +9 -1
  293. package/dist/agent-tools/refusal.d.ts.map +1 -1
  294. package/dist/agent-tools/refusal.js +5 -1
  295. package/dist/agent-tools/roofs.js +1 -1
  296. package/dist/agent-tools/room-structure.d.ts +60 -0
  297. package/dist/agent-tools/room-structure.d.ts.map +1 -1
  298. package/dist/agent-tools/room-structure.js +20 -1
  299. package/dist/agent-tools/search-materials.d.ts +1 -0
  300. package/dist/agent-tools/search-materials.d.ts.map +1 -1
  301. package/dist/agent-tools/site.js +1 -1
  302. package/dist/agent-tools/stairs.js +1 -1
  303. package/dist/agent-tools/units.d.ts +84 -0
  304. package/dist/agent-tools/units.d.ts.map +1 -0
  305. package/dist/agent-tools/units.js +54 -0
  306. package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
  307. package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
  308. package/dist/agent-tools/verify-scene-usage.js +146 -0
  309. package/dist/agent-tools/verify-scene.d.ts +12 -1
  310. package/dist/agent-tools/verify-scene.d.ts.map +1 -1
  311. package/dist/agent-tools/verify-scene.js +183 -3
  312. package/dist/agent-tools/view-scene.d.ts +3 -0
  313. package/dist/agent-tools/view-scene.d.ts.map +1 -1
  314. package/dist/agent-tools/view-scene.js +4 -1
  315. package/dist/agent-tools/wall-openings.d.ts +121 -2
  316. package/dist/agent-tools/wall-openings.d.ts.map +1 -1
  317. package/dist/agent-tools/wall-openings.js +123 -18
  318. package/dist/agent-tools/walls.d.ts +30 -0
  319. package/dist/agent-tools/walls.d.ts.map +1 -1
  320. package/dist/agent-tools/walls.js +54 -2
  321. package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
  322. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  323. package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
  324. package/dist/building/code-profile.d.ts +231 -0
  325. package/dist/building/code-profile.d.ts.map +1 -0
  326. package/dist/building/code-profile.js +208 -0
  327. package/dist/building/corner-window.d.ts +2 -2
  328. package/dist/building/corner-window.d.ts.map +1 -1
  329. package/dist/building/corner-window.js +11 -2
  330. package/dist/building/door-types.d.ts +1 -0
  331. package/dist/building/door-types.d.ts.map +1 -1
  332. package/dist/building/door-types.js +2 -0
  333. package/dist/building/floor-item-fit.d.ts.map +1 -1
  334. package/dist/building/floor-item-fit.js +2 -4
  335. package/dist/building/ground-level.d.ts +1 -3
  336. package/dist/building/ground-level.d.ts.map +1 -1
  337. package/dist/building/ground-level.js +3 -5
  338. package/dist/building/index.d.ts +2 -0
  339. package/dist/building/index.d.ts.map +1 -1
  340. package/dist/building/index.js +2 -0
  341. package/dist/building/level-duplication.d.ts +5951 -4351
  342. package/dist/building/level-duplication.d.ts.map +1 -1
  343. package/dist/building/level-insertion.d.ts +1 -1
  344. package/dist/building/level-wall-copy.d.ts +24 -0
  345. package/dist/building/level-wall-copy.d.ts.map +1 -0
  346. package/dist/building/level-wall-copy.js +53 -0
  347. package/dist/building/merge-windows.d.ts.map +1 -1
  348. package/dist/building/merge-windows.js +1 -0
  349. package/dist/building/opening-style-presets.d.ts +2 -0
  350. package/dist/building/opening-style-presets.d.ts.map +1 -1
  351. package/dist/building/opening-style-presets.js +26 -5
  352. package/dist/building/room-use.d.ts +26 -0
  353. package/dist/building/room-use.d.ts.map +1 -0
  354. package/dist/building/room-use.js +102 -0
  355. package/dist/building/wall-openings.d.ts +115 -7
  356. package/dist/building/wall-openings.d.ts.map +1 -1
  357. package/dist/building/wall-openings.js +121 -29
  358. package/dist/building/window-types.d.ts +1 -0
  359. package/dist/building/window-types.d.ts.map +1 -1
  360. package/dist/building/window-types.js +3 -0
  361. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
  362. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
  363. package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
  364. package/dist/commands/structure/attached-walls.d.ts +16 -0
  365. package/dist/commands/structure/attached-walls.d.ts.map +1 -0
  366. package/dist/commands/structure/attached-walls.js +53 -0
  367. package/dist/commands/structure/index.d.ts +3 -0
  368. package/dist/commands/structure/index.d.ts.map +1 -1
  369. package/dist/commands/structure/index.js +3 -0
  370. package/dist/commands/structure/move-separators.d.ts +62 -0
  371. package/dist/commands/structure/move-separators.d.ts.map +1 -0
  372. package/dist/commands/structure/move-separators.js +346 -0
  373. package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
  374. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
  375. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
  376. package/dist/commands/structure/set-wall-geometry.js +44 -11
  377. package/dist/commands/structure/set-zone-intent.d.ts +26 -0
  378. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
  379. package/dist/commands/structure/set-zone-intent.js +107 -2
  380. package/dist/commands/structure/shared.d.ts +888 -88
  381. package/dist/commands/structure/shared.d.ts.map +1 -1
  382. package/dist/commands/structure/wall-overlap.d.ts +45 -0
  383. package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
  384. package/dist/commands/structure/wall-overlap.js +289 -0
  385. package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
  386. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  387. package/dist/contracts/reference-discovery.d.ts +2 -2
  388. package/dist/contracts/reference-discovery.d.ts.map +1 -1
  389. package/dist/contracts/reference-discovery.js +5 -3
  390. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  391. package/dist/contracts/reference-inventory.js +75 -24
  392. package/dist/events/bus.d.ts +15 -2
  393. package/dist/events/bus.d.ts.map +1 -1
  394. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
  395. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
  396. package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
  397. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  398. package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
  399. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
  400. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  401. package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
  402. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
  403. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  404. package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
  405. package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
  406. package/dist/i18n/format.d.ts +41 -0
  407. package/dist/i18n/format.d.ts.map +1 -0
  408. package/dist/i18n/format.js +124 -0
  409. package/dist/i18n/index.d.ts +5 -0
  410. package/dist/i18n/index.d.ts.map +1 -0
  411. package/dist/i18n/index.js +3 -0
  412. package/dist/i18n/registry.d.ts +78 -0
  413. package/dist/i18n/registry.d.ts.map +1 -0
  414. package/dist/i18n/registry.js +252 -0
  415. package/dist/i18n/use-translate.d.ts +16 -0
  416. package/dist/i18n/use-translate.d.ts.map +1 -0
  417. package/dist/i18n/use-translate.js +23 -0
  418. package/dist/index.d.ts +32 -16
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +31 -15
  421. package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
  422. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  423. package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
  424. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  425. package/dist/lib/beam.d.ts +137 -0
  426. package/dist/lib/beam.d.ts.map +1 -0
  427. package/dist/lib/beam.js +297 -0
  428. package/dist/lib/below-grade-footprints.d.ts +13 -5
  429. package/dist/lib/below-grade-footprints.d.ts.map +1 -1
  430. package/dist/lib/below-grade-footprints.js +53 -10
  431. package/dist/lib/build-up.d.ts +89 -0
  432. package/dist/lib/build-up.d.ts.map +1 -0
  433. package/dist/lib/build-up.js +216 -0
  434. package/dist/lib/corner-pair.d.ts +205 -4
  435. package/dist/lib/corner-pair.d.ts.map +1 -1
  436. package/dist/lib/deck-boards.d.ts +80 -0
  437. package/dist/lib/deck-boards.d.ts.map +1 -0
  438. package/dist/lib/deck-boards.js +184 -0
  439. package/dist/lib/deck-framing.d.ts +150 -0
  440. package/dist/lib/deck-framing.d.ts.map +1 -0
  441. package/dist/lib/deck-framing.js +515 -0
  442. package/dist/lib/deepest-drawn.d.ts +3 -6
  443. package/dist/lib/deepest-drawn.d.ts.map +1 -1
  444. package/dist/lib/deepest-drawn.js +4 -8
  445. package/dist/lib/door-opening.d.ts +19 -0
  446. package/dist/lib/door-opening.d.ts.map +1 -0
  447. package/dist/lib/door-opening.js +27 -0
  448. package/dist/lib/door-operation.d.ts +2 -0
  449. package/dist/lib/door-operation.d.ts.map +1 -1
  450. package/dist/lib/door-operation.js +4 -0
  451. package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
  452. package/dist/lib/exterior-wall-loops.js +2 -1
  453. package/dist/lib/finish-script.d.ts +5 -5
  454. package/dist/lib/finish-script.d.ts.map +1 -1
  455. package/dist/lib/finish-script.js +12 -5
  456. package/dist/lib/floor-footprint-name.d.ts +17 -0
  457. package/dist/lib/floor-footprint-name.d.ts.map +1 -1
  458. package/dist/lib/floor-footprint-name.js +17 -4
  459. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  460. package/dist/lib/floor-intent-changes.js +60 -35
  461. package/dist/lib/floor-opening-footprints.d.ts +1 -1
  462. package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
  463. package/dist/lib/floor-opening-footprints.js +10 -4
  464. package/dist/lib/floor-plate-paint.d.ts +2 -0
  465. package/dist/lib/floor-plate-paint.d.ts.map +1 -1
  466. package/dist/lib/floor-plate-paint.js +12 -0
  467. package/dist/lib/floor-plates.d.ts +250 -0
  468. package/dist/lib/floor-plates.d.ts.map +1 -1
  469. package/dist/lib/floor-plates.js +43 -4
  470. package/dist/lib/floor-script.d.ts +35 -6
  471. package/dist/lib/floor-script.d.ts.map +1 -1
  472. package/dist/lib/floor-script.js +96 -16
  473. package/dist/lib/foundation-construction.d.ts +4 -13
  474. package/dist/lib/foundation-construction.d.ts.map +1 -1
  475. package/dist/lib/foundation-construction.js +4 -14
  476. package/dist/lib/foundation-standard.d.ts +2 -3
  477. package/dist/lib/foundation-standard.d.ts.map +1 -1
  478. package/dist/lib/foundation-standard.js +2 -3
  479. package/dist/lib/foundation-wall.d.ts +1 -2
  480. package/dist/lib/foundation-wall.d.ts.map +1 -1
  481. package/dist/lib/foundation-wall.js +1 -2
  482. package/dist/lib/framing-post.d.ts +91 -0
  483. package/dist/lib/framing-post.d.ts.map +1 -0
  484. package/dist/lib/framing-post.js +174 -0
  485. package/dist/lib/geometry-script-node.d.ts +11 -0
  486. package/dist/lib/geometry-script-node.d.ts.map +1 -1
  487. package/dist/lib/geometry-script-node.js +35 -0
  488. package/dist/lib/grade-standing.d.ts +16 -2
  489. package/dist/lib/grade-standing.d.ts.map +1 -1
  490. package/dist/lib/grade-standing.js +129 -9
  491. package/dist/lib/ground-seat.d.ts +2 -22
  492. package/dist/lib/ground-seat.d.ts.map +1 -1
  493. package/dist/lib/ground-seat.js +2 -17
  494. package/dist/lib/ground-window.d.ts +2 -1
  495. package/dist/lib/ground-window.d.ts.map +1 -1
  496. package/dist/lib/ground-window.js +5 -2
  497. package/dist/lib/level-footprints.d.ts +2 -0
  498. package/dist/lib/level-footprints.d.ts.map +1 -1
  499. package/dist/lib/level-footprints.js +7 -0
  500. package/dist/lib/opening-casing.d.ts +67 -0
  501. package/dist/lib/opening-casing.d.ts.map +1 -0
  502. package/dist/lib/opening-casing.js +131 -0
  503. package/dist/lib/opening-exterior-face.d.ts +6 -0
  504. package/dist/lib/opening-exterior-face.d.ts.map +1 -0
  505. package/dist/lib/opening-exterior-face.js +15 -0
  506. package/dist/lib/opening-floor-datum.d.ts +11 -5
  507. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  508. package/dist/lib/opening-floor-datum.js +38 -6
  509. package/dist/lib/opening-frame-depth.d.ts +18 -0
  510. package/dist/lib/opening-frame-depth.d.ts.map +1 -0
  511. package/dist/lib/opening-frame-depth.js +22 -0
  512. package/dist/lib/outdoor-room.d.ts +32 -0
  513. package/dist/lib/outdoor-room.d.ts.map +1 -0
  514. package/dist/lib/outdoor-room.js +66 -0
  515. package/dist/lib/plate-surface.d.ts +8 -0
  516. package/dist/lib/plate-surface.d.ts.map +1 -1
  517. package/dist/lib/plate-surface.js +53 -3
  518. package/dist/lib/porch-framing-sync.d.ts +46 -0
  519. package/dist/lib/porch-framing-sync.d.ts.map +1 -0
  520. package/dist/lib/porch-framing-sync.js +206 -0
  521. package/dist/lib/porch-framing.d.ts +44 -0
  522. package/dist/lib/porch-framing.d.ts.map +1 -0
  523. package/dist/lib/porch-framing.js +159 -0
  524. package/dist/lib/railing-rooms.d.ts +13 -0
  525. package/dist/lib/railing-rooms.d.ts.map +1 -0
  526. package/dist/lib/railing-rooms.js +37 -0
  527. package/dist/lib/roof-eave.d.ts +135 -0
  528. package/dist/lib/roof-eave.d.ts.map +1 -0
  529. package/dist/lib/roof-eave.js +186 -0
  530. package/dist/lib/room-floor-plate.d.ts +3 -1
  531. package/dist/lib/room-floor-plate.d.ts.map +1 -1
  532. package/dist/lib/room-floor-plate.js +7 -0
  533. package/dist/lib/space-detection.d.ts +13 -0
  534. package/dist/lib/space-detection.d.ts.map +1 -1
  535. package/dist/lib/space-detection.js +112 -24
  536. package/dist/lib/structure-kernel.d.ts +22 -9
  537. package/dist/lib/structure-kernel.d.ts.map +1 -1
  538. package/dist/lib/structure-kernel.js +146 -28
  539. package/dist/lib/structure-reconcile.d.ts +1 -1
  540. package/dist/lib/structure-reconcile.d.ts.map +1 -1
  541. package/dist/lib/structure-reconcile.js +7 -4
  542. package/dist/lib/surface-intent.d.ts +10 -0
  543. package/dist/lib/surface-intent.d.ts.map +1 -0
  544. package/dist/lib/surface-intent.js +18 -0
  545. package/dist/lib/terrain-source.d.ts.map +1 -1
  546. package/dist/lib/terrain-source.js +2 -1
  547. package/dist/lib/wall-face-script.d.ts.map +1 -1
  548. package/dist/lib/wall-face-script.js +5 -2
  549. package/dist/material-kinds.d.ts +1 -1
  550. package/dist/material-kinds.d.ts.map +1 -1
  551. package/dist/material-kinds.js +1 -0
  552. package/dist/material-library.d.ts +15 -0
  553. package/dist/material-library.d.ts.map +1 -1
  554. package/dist/material-library.js +458 -59
  555. package/dist/node-slots/door.d.ts +3 -4
  556. package/dist/node-slots/door.d.ts.map +1 -1
  557. package/dist/node-slots/door.js +4 -3
  558. package/dist/node-slots/wall.d.ts.map +1 -1
  559. package/dist/node-slots/wall.js +21 -3
  560. package/dist/node-slots/window.d.ts +2 -2
  561. package/dist/node-slots/window.d.ts.map +1 -1
  562. package/dist/node-slots/window.js +6 -1
  563. package/dist/procedural-items/design.d.ts +8 -0
  564. package/dist/procedural-items/design.d.ts.map +1 -1
  565. package/dist/procedural-items/design.js +169 -21
  566. package/dist/procedural-items/motion-controller.d.ts +2 -0
  567. package/dist/procedural-items/motion-controller.d.ts.map +1 -1
  568. package/dist/procedural-items/motion-controller.js +2 -1
  569. package/dist/registry/index.d.ts +2 -2
  570. package/dist/registry/index.d.ts.map +1 -1
  571. package/dist/registry/index.js +1 -1
  572. package/dist/registry/mechanism.d.ts +4 -1
  573. package/dist/registry/mechanism.d.ts.map +1 -1
  574. package/dist/registry/mechanism.js +10 -0
  575. package/dist/registry/types.d.ts +65 -23
  576. package/dist/registry/types.d.ts.map +1 -1
  577. package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
  578. package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
  579. package/dist/runtime/__fixtures__/live-scene.js +64 -0
  580. package/dist/runtime/apply.d.ts +42 -0
  581. package/dist/runtime/apply.d.ts.map +1 -0
  582. package/dist/runtime/apply.js +274 -0
  583. package/dist/runtime/dependencies.d.ts +97 -0
  584. package/dist/runtime/dependencies.d.ts.map +1 -0
  585. package/dist/runtime/dependencies.js +42 -0
  586. package/dist/runtime/ids.d.ts +11 -0
  587. package/dist/runtime/ids.d.ts.map +1 -0
  588. package/dist/runtime/ids.js +80 -0
  589. package/dist/runtime/index.d.ts +14 -0
  590. package/dist/runtime/index.d.ts.map +1 -0
  591. package/dist/runtime/index.js +11 -0
  592. package/dist/runtime/node-queries.d.ts +16 -0
  593. package/dist/runtime/node-queries.d.ts.map +1 -0
  594. package/dist/runtime/node-queries.js +30 -0
  595. package/dist/runtime/patch.d.ts +26 -0
  596. package/dist/runtime/patch.d.ts.map +1 -0
  597. package/dist/runtime/patch.js +165 -0
  598. package/dist/runtime/reader.d.ts +104 -0
  599. package/dist/runtime/reader.d.ts.map +1 -0
  600. package/dist/runtime/reader.js +455 -0
  601. package/dist/runtime/scene-runtime.d.ts +112 -0
  602. package/dist/runtime/scene-runtime.d.ts.map +1 -0
  603. package/dist/runtime/scene-runtime.js +302 -0
  604. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  605. package/dist/schema/__fixtures__/node-fixtures.js +1 -0
  606. package/dist/schema/assembly.d.ts +3 -0
  607. package/dist/schema/assembly.d.ts.map +1 -1
  608. package/dist/schema/assembly.js +13 -0
  609. package/dist/schema/asset-url.d.ts +37 -2
  610. package/dist/schema/asset-url.d.ts.map +1 -1
  611. package/dist/schema/asset-url.js +80 -11
  612. package/dist/schema/base.d.ts +8 -0
  613. package/dist/schema/base.d.ts.map +1 -1
  614. package/dist/schema/base.js +19 -1
  615. package/dist/schema/build-up.d.ts +247 -0
  616. package/dist/schema/build-up.d.ts.map +1 -0
  617. package/dist/schema/build-up.js +83 -0
  618. package/dist/schema/geometry-source.d.ts +80 -0
  619. package/dist/schema/geometry-source.d.ts.map +1 -1
  620. package/dist/schema/geometry-source.js +38 -0
  621. package/dist/schema/index.d.ts +12 -7
  622. package/dist/schema/index.d.ts.map +1 -1
  623. package/dist/schema/index.js +12 -6
  624. package/dist/schema/material.d.ts +5 -0
  625. package/dist/schema/material.d.ts.map +1 -1
  626. package/dist/schema/material.js +6 -0
  627. package/dist/schema/nodes/beam.d.ts +264 -0
  628. package/dist/schema/nodes/beam.d.ts.map +1 -0
  629. package/dist/schema/nodes/beam.js +139 -0
  630. package/dist/schema/nodes/box-vent.d.ts +5 -0
  631. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  632. package/dist/schema/nodes/cabinet.d.ts +10 -0
  633. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  634. package/dist/schema/nodes/ceiling.d.ts +48 -0
  635. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  636. package/dist/schema/nodes/ceiling.js +5 -0
  637. package/dist/schema/nodes/chimney.d.ts +10 -0
  638. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  639. package/dist/schema/nodes/column.d.ts +42 -0
  640. package/dist/schema/nodes/column.d.ts.map +1 -1
  641. package/dist/schema/nodes/column.js +11 -1
  642. package/dist/schema/nodes/cupola.d.ts +5 -0
  643. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  644. package/dist/schema/nodes/door.d.ts +54 -3
  645. package/dist/schema/nodes/door.d.ts.map +1 -1
  646. package/dist/schema/nodes/door.js +41 -7
  647. package/dist/schema/nodes/dormer.d.ts +20 -0
  648. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  649. package/dist/schema/nodes/downspout.d.ts +5 -0
  650. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  651. package/dist/schema/nodes/elevator.d.ts +5 -0
  652. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  653. package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
  654. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  655. package/dist/schema/nodes/fence.d.ts +5 -0
  656. package/dist/schema/nodes/fence.d.ts.map +1 -1
  657. package/dist/schema/nodes/guide.d.ts +14 -0
  658. package/dist/schema/nodes/guide.d.ts.map +1 -1
  659. package/dist/schema/nodes/guide.js +2 -0
  660. package/dist/schema/nodes/gutter.d.ts +5 -0
  661. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  662. package/dist/schema/nodes/item.d.ts +71 -0
  663. package/dist/schema/nodes/item.d.ts.map +1 -1
  664. package/dist/schema/nodes/item.js +5 -1
  665. package/dist/schema/nodes/level.d.ts +1 -1
  666. package/dist/schema/nodes/level.d.ts.map +1 -1
  667. package/dist/schema/nodes/opening-types.d.ts +13 -0
  668. package/dist/schema/nodes/opening-types.d.ts.map +1 -1
  669. package/dist/schema/nodes/opening-types.js +8 -1
  670. package/dist/schema/nodes/railing-wall.d.ts +112 -0
  671. package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
  672. package/dist/schema/nodes/railing-wall.js +160 -0
  673. package/dist/schema/nodes/ridge-vent.d.ts +5 -0
  674. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  675. package/dist/schema/nodes/roof-segment.d.ts +224 -1
  676. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  677. package/dist/schema/nodes/roof-segment.js +57 -10
  678. package/dist/schema/nodes/roof-types.d.ts +11 -0
  679. package/dist/schema/nodes/roof-types.d.ts.map +1 -1
  680. package/dist/schema/nodes/roof-types.js +6 -0
  681. package/dist/schema/nodes/roof.d.ts +60 -0
  682. package/dist/schema/nodes/roof.d.ts.map +1 -1
  683. package/dist/schema/nodes/roof.js +4 -0
  684. package/dist/schema/nodes/shelf.d.ts +5 -0
  685. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  686. package/dist/schema/nodes/site.d.ts +80 -0
  687. package/dist/schema/nodes/site.d.ts.map +1 -1
  688. package/dist/schema/nodes/site.js +7 -0
  689. package/dist/schema/nodes/skylight.d.ts +10 -0
  690. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  691. package/dist/schema/nodes/slab.d.ts +137 -0
  692. package/dist/schema/nodes/slab.d.ts.map +1 -1
  693. package/dist/schema/nodes/slab.js +3 -0
  694. package/dist/schema/nodes/solar-panel.d.ts +10 -0
  695. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  696. package/dist/schema/nodes/stair-segment.d.ts +5 -0
  697. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  698. package/dist/schema/nodes/stair-structure.d.ts +69 -0
  699. package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
  700. package/dist/schema/nodes/stair-structure.js +39 -0
  701. package/dist/schema/nodes/stair.d.ts +46 -0
  702. package/dist/schema/nodes/stair.d.ts.map +1 -1
  703. package/dist/schema/nodes/stair.js +3 -0
  704. package/dist/schema/nodes/turbine-vent.d.ts +5 -0
  705. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  706. package/dist/schema/nodes/wall.d.ts +135 -2
  707. package/dist/schema/nodes/wall.d.ts.map +1 -1
  708. package/dist/schema/nodes/wall.js +42 -6
  709. package/dist/schema/nodes/window.d.ts +66 -1
  710. package/dist/schema/nodes/window.d.ts.map +1 -1
  711. package/dist/schema/nodes/window.js +50 -5
  712. package/dist/schema/nodes/zone.d.ts +68 -0
  713. package/dist/schema/nodes/zone.d.ts.map +1 -1
  714. package/dist/schema/nodes/zone.js +32 -0
  715. package/dist/schema/scene-material.d.ts +5 -0
  716. package/dist/schema/scene-material.d.ts.map +1 -1
  717. package/dist/schema/types.d.ts +1079 -4
  718. package/dist/schema/types.d.ts.map +1 -1
  719. package/dist/schema/types.js +2 -0
  720. package/dist/schema/wall-type.d.ts +95 -0
  721. package/dist/schema/wall-type.d.ts.map +1 -0
  722. package/dist/schema/wall-type.js +32 -0
  723. package/dist/services/roof-bearing.d.ts.map +1 -1
  724. package/dist/services/roof-bearing.js +6 -3
  725. package/dist/services/roof-level.d.ts.map +1 -1
  726. package/dist/services/roof-level.js +4 -3
  727. package/dist/services/roof-move.d.ts.map +1 -1
  728. package/dist/services/roof-move.js +13 -7
  729. package/dist/services/storey.d.ts.map +1 -1
  730. package/dist/services/storey.js +13 -8
  731. package/dist/spatial/usage-field/beds.d.ts +51 -0
  732. package/dist/spatial/usage-field/beds.d.ts.map +1 -0
  733. package/dist/spatial/usage-field/beds.js +346 -0
  734. package/dist/spatial/usage-field/blocked.d.ts +28 -0
  735. package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
  736. package/dist/spatial/usage-field/blocked.js +185 -0
  737. package/dist/spatial/usage-field/boxes.d.ts +17 -0
  738. package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
  739. package/dist/spatial/usage-field/boxes.js +82 -0
  740. package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
  741. package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
  742. package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
  743. package/dist/spatial/usage-field/catalogue.d.ts +6 -0
  744. package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
  745. package/dist/spatial/usage-field/catalogue.js +11 -0
  746. package/dist/spatial/usage-field/clash.d.ts +40 -0
  747. package/dist/spatial/usage-field/clash.d.ts.map +1 -0
  748. package/dist/spatial/usage-field/clash.js +187 -0
  749. package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
  750. package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
  751. package/dist/spatial/usage-field/door-stairs.js +129 -0
  752. package/dist/spatial/usage-field/entry-way.d.ts +14 -0
  753. package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
  754. package/dist/spatial/usage-field/entry-way.js +219 -0
  755. package/dist/spatial/usage-field/fences.d.ts +18 -0
  756. package/dist/spatial/usage-field/fences.d.ts.map +1 -0
  757. package/dist/spatial/usage-field/fences.js +253 -0
  758. package/dist/spatial/usage-field/field.d.ts +44 -0
  759. package/dist/spatial/usage-field/field.d.ts.map +1 -0
  760. package/dist/spatial/usage-field/field.js +145 -0
  761. package/dist/spatial/usage-field/findings.d.ts +76 -0
  762. package/dist/spatial/usage-field/findings.d.ts.map +1 -0
  763. package/dist/spatial/usage-field/findings.js +252 -0
  764. package/dist/spatial/usage-field/fixtures.d.ts +18 -0
  765. package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
  766. package/dist/spatial/usage-field/fixtures.js +160 -0
  767. package/dist/spatial/usage-field/flag.d.ts +10 -0
  768. package/dist/spatial/usage-field/flag.d.ts.map +1 -0
  769. package/dist/spatial/usage-field/flag.js +12 -0
  770. package/dist/spatial/usage-field/floors.d.ts +13 -0
  771. package/dist/spatial/usage-field/floors.d.ts.map +1 -0
  772. package/dist/spatial/usage-field/floors.js +36 -0
  773. package/dist/spatial/usage-field/index.d.ts +7 -0
  774. package/dist/spatial/usage-field/index.d.ts.map +1 -0
  775. package/dist/spatial/usage-field/index.js +5 -0
  776. package/dist/spatial/usage-field/items.d.ts +38 -0
  777. package/dist/spatial/usage-field/items.d.ts.map +1 -0
  778. package/dist/spatial/usage-field/items.js +261 -0
  779. package/dist/spatial/usage-field/labels.d.ts +8 -0
  780. package/dist/spatial/usage-field/labels.d.ts.map +1 -0
  781. package/dist/spatial/usage-field/labels.js +14 -0
  782. package/dist/spatial/usage-field/level-field.d.ts +47 -0
  783. package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
  784. package/dist/spatial/usage-field/level-field.js +96 -0
  785. package/dist/spatial/usage-field/measure.d.ts +324 -0
  786. package/dist/spatial/usage-field/measure.d.ts.map +1 -0
  787. package/dist/spatial/usage-field/measure.js +458 -0
  788. package/dist/spatial/usage-field/obstacles.d.ts +63 -0
  789. package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
  790. package/dist/spatial/usage-field/obstacles.js +215 -0
  791. package/dist/spatial/usage-field/openings.d.ts +12 -0
  792. package/dist/spatial/usage-field/openings.d.ts.map +1 -0
  793. package/dist/spatial/usage-field/openings.js +162 -0
  794. package/dist/spatial/usage-field/path.d.ts +48 -0
  795. package/dist/spatial/usage-field/path.d.ts.map +1 -0
  796. package/dist/spatial/usage-field/path.js +354 -0
  797. package/dist/spatial/usage-field/pieces.d.ts +27 -0
  798. package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
  799. package/dist/spatial/usage-field/pieces.js +89 -0
  800. package/dist/spatial/usage-field/shapes.d.ts +18 -0
  801. package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
  802. package/dist/spatial/usage-field/shapes.js +92 -0
  803. package/dist/spatial/usage-field/stairs.d.ts +23 -0
  804. package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
  805. package/dist/spatial/usage-field/stairs.js +163 -0
  806. package/dist/spatial/usage-field/support.d.ts +24 -0
  807. package/dist/spatial/usage-field/support.d.ts.map +1 -0
  808. package/dist/spatial/usage-field/support.js +46 -0
  809. package/dist/spatial/usage-field/swings.d.ts +846 -0
  810. package/dist/spatial/usage-field/swings.d.ts.map +1 -0
  811. package/dist/spatial/usage-field/swings.js +427 -0
  812. package/dist/spatial/usage-field/types.d.ts +65 -0
  813. package/dist/spatial/usage-field/types.d.ts.map +1 -0
  814. package/dist/spatial/usage-field/types.js +1 -0
  815. package/dist/spatial/usage-field/walls.d.ts +1057 -0
  816. package/dist/spatial/usage-field/walls.d.ts.map +1 -0
  817. package/dist/spatial/usage-field/walls.js +166 -0
  818. package/dist/spatial/usage-field/way-in.d.ts +26 -0
  819. package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
  820. package/dist/spatial/usage-field/way-in.js +113 -0
  821. package/dist/store/actions/node-actions.d.ts +2124 -1322
  822. package/dist/store/actions/node-actions.d.ts.map +1 -1
  823. package/dist/store/actions/node-actions.js +42 -16
  824. package/dist/store/derived-node-guard.d.ts +10 -2
  825. package/dist/store/derived-node-guard.d.ts.map +1 -1
  826. package/dist/store/derived-node-guard.js +31 -11
  827. package/dist/store/document-settling.d.ts +9 -0
  828. package/dist/store/document-settling.d.ts.map +1 -0
  829. package/dist/store/document-settling.js +22 -0
  830. package/dist/store/history-control.d.ts +19 -10
  831. package/dist/store/history-control.d.ts.map +1 -1
  832. package/dist/store/history-control.js +176 -127
  833. package/dist/store/history-drafts.d.ts.map +1 -1
  834. package/dist/store/history-drafts.js +21 -17
  835. package/dist/store/live-previews.d.ts +9 -0
  836. package/dist/store/live-previews.d.ts.map +1 -0
  837. package/dist/store/live-previews.js +19 -0
  838. package/dist/store/scene-annotations.d.ts +6751 -5151
  839. package/dist/store/scene-annotations.d.ts.map +1 -1
  840. package/dist/store/scene-environment.d.ts +33 -0
  841. package/dist/store/scene-environment.d.ts.map +1 -0
  842. package/dist/store/scene-environment.js +54 -0
  843. package/dist/store/scene-hydration.d.ts.map +1 -1
  844. package/dist/store/scene-hydration.js +41 -30
  845. package/dist/store/use-interactive.d.ts +9 -3
  846. package/dist/store/use-interactive.d.ts.map +1 -1
  847. package/dist/store/use-interactive.js +43 -11
  848. package/dist/store/use-live-node-overrides.d.ts.map +1 -1
  849. package/dist/store/use-live-node-overrides.js +3 -0
  850. package/dist/store/use-scene.d.ts +25 -0
  851. package/dist/store/use-scene.d.ts.map +1 -1
  852. package/dist/store/use-scene.js +408 -336
  853. package/dist/systems/document-reconcile.d.ts +40 -0
  854. package/dist/systems/document-reconcile.d.ts.map +1 -0
  855. package/dist/systems/document-reconcile.js +159 -0
  856. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  857. package/dist/systems/elevator/elevator-opening-system.js +9 -24
  858. package/dist/systems/fence/guard-layout.d.ts +69 -0
  859. package/dist/systems/fence/guard-layout.d.ts.map +1 -0
  860. package/dist/systems/fence/guard-layout.js +194 -0
  861. package/dist/systems/owned-floor-openings.d.ts +13 -1
  862. package/dist/systems/owned-floor-openings.d.ts.map +1 -1
  863. package/dist/systems/owned-floor-openings.js +58 -2
  864. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
  865. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
  866. package/dist/systems/reconcile-owned-floor-openings.js +4 -4
  867. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
  868. package/dist/systems/roof/roof-elevation-system.js +8 -26
  869. package/dist/systems/roof/roof-elevation.d.ts +16 -1
  870. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  871. package/dist/systems/roof/roof-elevation.js +85 -4
  872. package/dist/systems/roof/roof-footprint.d.ts +42 -1
  873. package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
  874. package/dist/systems/roof/roof-footprint.js +160 -4
  875. package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
  876. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  877. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
  878. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  879. package/dist/systems/stair/stair-clearance.d.ts +7 -0
  880. package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
  881. package/dist/systems/stair/stair-clearance.js +31 -11
  882. package/dist/systems/stair/stair-construction.d.ts +8 -3
  883. package/dist/systems/stair/stair-construction.d.ts.map +1 -1
  884. package/dist/systems/stair/stair-construction.js +55 -4
  885. package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
  886. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  887. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  888. package/dist/systems/stair/stair-opening-system.js +18 -34
  889. package/dist/systems/stair/stair-presets.d.ts +36 -0
  890. package/dist/systems/stair/stair-presets.d.ts.map +1 -1
  891. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
  892. package/dist/systems/stair/stair-rise-query.js +3 -2
  893. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  894. package/dist/systems/stair/stair-rise.js +6 -0
  895. package/dist/systems/stair/stair-sizing.d.ts +42 -11
  896. package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
  897. package/dist/systems/stair/stair-sizing.js +10 -1
  898. package/dist/systems/stair/stair-structure.d.ts +277 -0
  899. package/dist/systems/stair/stair-structure.d.ts.map +1 -0
  900. package/dist/systems/stair/stair-structure.js +496 -0
  901. package/dist/systems/wall/wall-assembly.d.ts +84 -6
  902. package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
  903. package/dist/systems/wall/wall-assembly.js +204 -5
  904. package/dist/systems/wall/wall-finish.d.ts +38 -2
  905. package/dist/systems/wall/wall-finish.d.ts.map +1 -1
  906. package/dist/systems/wall/wall-finish.js +70 -2
  907. package/dist/systems/wall/wall-footprint.js +2 -2
  908. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  909. package/dist/systems/wall/wall-merge.js +28 -7
  910. package/dist/systems/wall/wall-mitering.d.ts +1 -0
  911. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  912. package/dist/systems/wall/wall-mitering.js +152 -52
  913. package/dist/systems/wall/wall-move.d.ts +23 -6
  914. package/dist/systems/wall/wall-move.d.ts.map +1 -1
  915. package/dist/systems/wall/wall-move.js +65 -0
  916. package/dist/systems/wall/wall-top.d.ts +2 -2
  917. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  918. package/dist/systems/wall/wall-top.js +6 -1
  919. package/dist/systems/wall/wall-topology.d.ts +32 -1
  920. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  921. package/dist/systems/wall/wall-topology.js +118 -10
  922. package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
  923. package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
  924. package/dist/systems/wall/wall-trim-profiles.js +191 -0
  925. package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
  926. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  927. package/dist/utils/floor-piece-adoption.d.ts +5 -0
  928. package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
  929. package/dist/utils/floor-plate-migration.d.ts +1930 -1130
  930. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  931. package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
  932. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  933. package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
  934. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  935. package/dist/utils/structure-id.d.ts.map +1 -1
  936. package/dist/utils/structure-id.js +4 -0
  937. package/package.json +22 -5
  938. package/dist/lib/generic-foundation.d.ts +0 -40
  939. package/dist/lib/generic-foundation.d.ts.map +0 -1
  940. package/dist/lib/generic-foundation.js +0 -200
@@ -21,7 +21,9 @@ type NumericSanitizeIssue = {
21
21
  action: 'clamped' | 'dropped' | 'rounded';
22
22
  };
23
23
  export declare function numericSanitizeIssuesToMessage(issues: NumericSanitizeIssue[] | null | undefined): string;
24
- /** Authored updates whose deferred dirty intent has not reached render systems yet. */
24
+ export declare function shouldRefreshDefaultRidgeVents(data: Partial<AnyNode>): boolean;
25
+ export declare function shouldRefreshDefaultGutters(data: Partial<AnyNode>): boolean;
26
+ /** The current environment's authored updates whose deferred dirty intent has not reached render systems yet. */
25
27
  export declare function getPendingNodeUpdateCount(): number;
26
28
  declare const createNodesActionImpl: (set: (fn: (state: SceneState) => Partial<SceneState>) => void, get: () => SceneState, ops: NodeCreateOp[], options?: DerivedWriteOptions) => void;
27
29
  /**
@@ -84,7 +86,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
84
86
  delete?: AnyNodeId[];
85
87
  wallDeletionPlan?: StructurePlan;
86
88
  }): {
87
- nodes: Record<`block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`, {
89
+ nodes: Record<`beam_${string}` | `block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`, {
88
90
  object: "node";
89
91
  name?: string | undefined;
90
92
  parentId: string | null;
@@ -108,29 +110,54 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
108
110
  fromIds: string[];
109
111
  } | undefined;
110
112
  } | undefined;
111
- id: `block_${string}`;
112
- children: string[];
113
+ id: `elevator_${string}`;
114
+ material?: {
115
+ id?: string | undefined;
116
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
117
+ properties?: {
118
+ color: string;
119
+ roughness: number;
120
+ metalness: number;
121
+ opacity: number;
122
+ transparent: boolean;
123
+ side: "back" | "double" | "front";
124
+ } | undefined;
125
+ texture?: {
126
+ url: string;
127
+ repeat?: [number, number] | undefined;
128
+ scale?: number | undefined;
129
+ offset?: [number, number] | undefined;
130
+ normalMap?: string | undefined;
131
+ normalScale?: number | undefined;
132
+ bumpMap?: string | undefined;
133
+ bumpScale?: number | undefined;
134
+ } | undefined;
135
+ } | undefined;
136
+ materialPreset?: string | undefined;
137
+ slots?: Record<string, string> | undefined;
113
138
  position: [number, number, number];
114
139
  rotation: number;
115
- supportSlabId?: string | undefined;
116
- topology: {
117
- vertices: {
118
- id: string;
119
- position: [number, number, number];
120
- }[];
121
- edges: {
122
- id: string;
123
- vertexIds: [string, string];
124
- }[];
125
- faces: {
126
- id: string;
127
- vertexIds: string[];
128
- materialSlot: string;
129
- }[];
130
- };
131
- slots: Record<string, string>;
132
- slotNames: Record<string, string>;
133
- type: "block";
140
+ width: number;
141
+ depth: number;
142
+ shaftWidth?: number | undefined;
143
+ shaftDepth?: number | undefined;
144
+ shaftWallThickness: number;
145
+ shaftStyle: "glass" | "solid";
146
+ cabHeight: number;
147
+ doorWidth: number;
148
+ doorHeight: number;
149
+ doorStyle: "center-opening" | "single-left" | "single-right";
150
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
151
+ fromLevelId: string | null;
152
+ toLevelId: string | null;
153
+ servedLevelIds?: string[] | undefined;
154
+ disabledLevelIds: string[];
155
+ serviceOnlyLevelIds: string[];
156
+ defaultLevelId: string | null;
157
+ speed: number;
158
+ doorDurationMs: number;
159
+ dwellMs: number;
160
+ type: "elevator";
134
161
  } | {
135
162
  object: "node";
136
163
  name?: string | undefined;
@@ -155,11 +182,21 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
155
182
  fromIds: string[];
156
183
  } | undefined;
157
184
  } | undefined;
158
- id: `column_${string}`;
159
- children: string[];
185
+ type: "item";
186
+ id: `item_${string}`;
160
187
  position: [number, number, number];
161
- rotation: number;
188
+ rotation: [number, number, number];
189
+ scale: [number, number, number];
190
+ side?: "back" | "front" | undefined;
191
+ children: string[];
192
+ wallId?: string | undefined;
193
+ wallT?: number | undefined;
194
+ roofSegmentId?: string | undefined;
195
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
196
+ blockFaceId?: string | undefined;
162
197
  supportSlabId?: string | undefined;
198
+ collectionIds?: `collection_${string}`[] | undefined;
199
+ slots?: Record<string, string> | undefined;
163
200
  source?: {
164
201
  kind: "script";
165
202
  meta?: {
@@ -222,6 +259,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
222
259
  color: string;
223
260
  intensity: number;
224
261
  distance?: number | undefined;
262
+ spot?: {
263
+ direction: [number, number, number];
264
+ angle: number;
265
+ softness: number;
266
+ } | undefined;
267
+ shadows?: boolean | undefined;
268
+ glow?: {
269
+ size: number;
270
+ strength: number;
271
+ } | undefined;
225
272
  }[];
226
273
  undersides: {
227
274
  part?: string | undefined;
@@ -240,6 +287,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
240
287
  }[] | undefined;
241
288
  cutout: boolean;
242
289
  collider: boolean;
290
+ shape?: {
291
+ tolerance: number;
292
+ bands: {
293
+ y0: number;
294
+ y1: number;
295
+ polygons: {
296
+ outer: [number, number][];
297
+ holes?: [number, number][][] | undefined;
298
+ }[];
299
+ }[];
300
+ } | undefined;
243
301
  triangles: number;
244
302
  coverage?: number | undefined;
245
303
  uncovered?: {
@@ -253,98 +311,76 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
253
311
  floorPlan: string;
254
312
  } | undefined;
255
313
  } | undefined;
256
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
257
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
258
- height: number;
259
- radius: number;
260
- width: number;
261
- depth: number;
262
- edgeSoftness: number;
263
- baseHeight: number;
264
- capitalHeight: number;
265
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
266
- shaftTaper: number;
267
- shaftBulge: number;
268
- shaftStartScale: number;
269
- shaftEndScale: number;
270
- shaftSegmentCount: number;
271
- shaftTwistStep: number;
272
- shaftCornerRadius: number;
273
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
274
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
275
- baseWidthScale: number;
276
- baseDepthScale: number;
277
- baseTierCount: number;
278
- baseStepSpread: number;
279
- basePlinthHeightRatio: number;
280
- baseRoundBandScale: number;
281
- baseNeckScale: number;
282
- baseRoundBandCount: number;
283
- baseRibCount: number;
284
- baseCarvingLevel: number;
285
- basePanelInset: number;
286
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
287
- capitalWidthScale: number;
288
- capitalDepthScale: number;
289
- capitalTierCount: number;
290
- capitalStepSpread: number;
291
- capitalBandCount: number;
292
- voluteSize: number;
293
- voluteCount: number;
294
- leafCount: number;
295
- leafRows: number;
296
- bracketDepth: number;
297
- bracketTierCount: number;
298
- pendantCount: number;
299
- capitalCarvingLevel: number;
300
- ringCount: number;
301
- ringPlacement: "bottom" | "ends" | "even" | "top";
302
- ringThickness: number;
303
- ringSpread: number;
304
- fluteCount: number;
305
- fluteDepth: number;
306
- fluteWidth: number;
307
- spiralTwist: number;
308
- spiralRibCount: number;
309
- panelCount: number;
310
- panelInsetDepth: number;
311
- panelShape: "arched" | "diamond" | "rectangle";
312
- latheRingCount: number;
313
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
314
- carvingLevel: number;
315
- carvingPlacement: "all" | "base" | "capital" | "shaft";
316
- lowerBandEnabled: boolean;
317
- lowerBandHeight: number;
318
- lowerBandCarvingLevel: number;
319
- dentilCount: number;
320
- beadCount: number;
321
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
322
- braceWidth: number;
323
- braceDepth: number;
324
- braceBottomSpread: number;
325
- braceTopSpread: number;
326
- bracePlateEnabled: boolean;
327
- role?: "ornament" | undefined;
328
- material?: {
329
- id?: string | undefined;
330
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
331
- properties?: {
332
- color: string;
333
- roughness: number;
334
- metalness: number;
335
- opacity: number;
336
- transparent: boolean;
337
- side: "back" | "double" | "front";
314
+ asset: {
315
+ id: string;
316
+ category: string;
317
+ name: string;
318
+ thumbnail: string;
319
+ floorPlanUrl?: string | undefined;
320
+ source: "community" | "library" | "mine";
321
+ isDraft?: boolean | undefined;
322
+ src: string;
323
+ dimensions: [number, number, number];
324
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
325
+ recessed?: boolean | undefined;
326
+ tags?: string[] | undefined;
327
+ functionTags?: string[] | undefined;
328
+ offset: [number, number, number];
329
+ rotation: [number, number, number];
330
+ scale: [number, number, number];
331
+ surface?: {
332
+ height: number;
338
333
  } | undefined;
339
- texture?: {
340
- url: string;
341
- repeat?: [number, number] | undefined;
342
- scale?: number | undefined;
334
+ interactive?: {
335
+ controls: ({
336
+ kind: "toggle";
337
+ label?: string | undefined;
338
+ default?: boolean | undefined;
339
+ } | {
340
+ kind: "slider";
341
+ label: string;
342
+ min: number;
343
+ max: number;
344
+ step: number;
345
+ unit?: string | undefined;
346
+ displayMode: "dial" | "slider" | "stepper";
347
+ default?: number | undefined;
348
+ } | {
349
+ kind: "temperature";
350
+ label: string;
351
+ min: number;
352
+ max: number;
353
+ unit: "C" | "F";
354
+ default?: number | undefined;
355
+ })[];
356
+ effects: ({
357
+ kind: "animation";
358
+ mode?: "ambient" | "open-close" | undefined;
359
+ control?: number | undefined;
360
+ clips: {
361
+ on?: string | undefined;
362
+ off?: string | undefined;
363
+ loop?: string | undefined;
364
+ };
365
+ } | {
366
+ kind: "light";
367
+ color: string;
368
+ intensityRange: [number, number];
369
+ distance?: number | undefined;
370
+ offset: [number, number, number];
371
+ spot?: {
372
+ direction: [number, number, number];
373
+ angle: number;
374
+ softness: number;
375
+ } | undefined;
376
+ shadows?: boolean | undefined;
377
+ glow?: {
378
+ size: number;
379
+ strength: number;
380
+ } | undefined;
381
+ })[];
343
382
  } | undefined;
344
- } | undefined;
345
- materialPreset?: string | undefined;
346
- slots?: Record<string, string> | undefined;
347
- type: "column";
383
+ };
348
384
  } | {
349
385
  object: "node";
350
386
  name?: string | undefined;
@@ -369,70 +405,74 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
369
405
  fromIds: string[];
370
406
  } | undefined;
371
407
  } | undefined;
372
- id: `duct-fitting_${string}`;
373
- position: [number, number, number];
374
- rotation: [number, number, number];
375
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
376
- shape: "oval" | "rect" | "round";
377
- inletShape?: "oval" | "rect" | "round" | undefined;
378
- outletShape?: "oval" | "rect" | "round" | undefined;
379
- width: number;
380
- height: number;
381
- shape2: "oval" | "rect" | "round";
382
- width2: number;
383
- height2: number;
384
- angle: number;
385
- branchAngle: number;
386
- diameter: number;
387
- diameter2: number;
388
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
389
- system: "return" | "supply";
390
- damperAngle: number;
391
- panelWidth: number;
392
- panelHeight: number;
393
- slots?: Record<string, string> | undefined;
394
- type: "duct-fitting";
395
- } | {
396
- object: "node";
397
- name?: string | undefined;
398
- parentId: string | null;
399
- visible: boolean;
400
- camera?: {
401
- position: [number, number, number];
402
- target: [number, number, number];
403
- mode: "orthographic" | "perspective";
404
- fov?: number | undefined;
405
- zoom?: number | undefined;
408
+ id: `ceiling_${string}`;
409
+ children: (`item_${string}` | `procedural-item_${string}`)[];
410
+ material?: {
411
+ id?: string | undefined;
412
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
413
+ properties?: {
414
+ color: string;
415
+ roughness: number;
416
+ metalness: number;
417
+ opacity: number;
418
+ transparent: boolean;
419
+ side: "back" | "double" | "front";
420
+ } | undefined;
421
+ texture?: {
422
+ url: string;
423
+ repeat?: [number, number] | undefined;
424
+ scale?: number | undefined;
425
+ offset?: [number, number] | undefined;
426
+ normalMap?: string | undefined;
427
+ normalScale?: number | undefined;
428
+ bumpMap?: string | undefined;
429
+ bumpScale?: number | undefined;
430
+ } | undefined;
406
431
  } | undefined;
407
- metadata: Record<string, unknown>;
408
- provenance?: {
409
- refs: {
410
- ns?: string | undefined;
411
- id: string;
412
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
413
- }[];
414
- lineage?: {
415
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
416
- fromIds: string[];
432
+ materialPreset?: string | undefined;
433
+ slots?: Record<string, string> | undefined;
434
+ polygon: [number, number][];
435
+ holes: [number, number][][];
436
+ holeMetadata: {
437
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
438
+ openingId?: string | undefined;
439
+ stairId?: string | undefined;
440
+ elevatorId?: string | undefined;
441
+ }[];
442
+ openingIds?: string[] | undefined;
443
+ height?: number | undefined;
444
+ buildUp?: {
445
+ presetId?: string | undefined;
446
+ finish?: {
447
+ kind: "drywall" | "plaster" | "wood-plank";
448
+ thickness: number;
449
+ name?: string | undefined;
450
+ } | undefined;
451
+ framing?: {
452
+ system: "joists" | "truss-chords";
453
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
454
+ spacing: number;
455
+ } | undefined;
456
+ decking?: {
457
+ kind: "osb" | "plywood";
458
+ thickness: number;
459
+ name?: string | undefined;
460
+ } | undefined;
461
+ insulation?: {
462
+ kind: "batt" | "blown" | "rigid";
463
+ thickness: number;
464
+ name?: string | undefined;
417
465
  } | undefined;
418
466
  } | undefined;
419
- id: `hvac-equipment_${string}`;
420
- position: [number, number, number];
421
- rotation: number;
422
- supportSlabId?: string | undefined;
423
- equipmentType: "air-handler" | "condenser" | "furnace";
424
- width: number;
425
- depth: number;
426
- height: number;
427
- supplyShape: "oval" | "rect" | "round";
428
- returnShape: "oval" | "rect" | "round";
429
- supplyDiameter: number;
430
- returnDiameter: number;
431
- supplyWidth: number;
432
- supplyHeight: number;
433
- returnWidth: number;
434
- returnHeight: number;
435
- type: "hvac-equipment";
467
+ regions?: {
468
+ id: string;
469
+ polygon: [number, number][];
470
+ finish: string | Record<string, unknown>;
471
+ }[] | undefined;
472
+ boundary?: "auto" | undefined;
473
+ zoneId?: string | undefined;
474
+ autoFromWalls: boolean;
475
+ type: "ceiling";
436
476
  } | {
437
477
  object: "node";
438
478
  name?: string | undefined;
@@ -457,17 +497,42 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
457
497
  fromIds: string[];
458
498
  } | undefined;
459
499
  } | undefined;
460
- id: `pipe-fitting_${string}`;
461
- position: [number, number, number];
462
- rotation: [number, number, number];
463
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
464
- angle: number;
465
- diameter: number;
466
- diameter2: number;
467
- cleanoutStyle: "end" | "inline";
468
- pipeMaterial: "abs" | "cast-iron" | "pvc";
469
- system: "vent" | "waste";
470
- type: "pipe-fitting";
500
+ id: `construction-dimension_${string}`;
501
+ anchors: ({
502
+ kind: "feature";
503
+ reference: {
504
+ nodeId: string;
505
+ featureId: string;
506
+ parameters?: Record<string, string | number | boolean> | undefined;
507
+ };
508
+ fallback: [number, number, number];
509
+ } | [number, number, number])[];
510
+ baseline: {
511
+ origin: [number, number];
512
+ direction: [number, number];
513
+ };
514
+ chainMode: "continuous" | "point-to-point";
515
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
516
+ featureCount: number;
517
+ showCenterMark: boolean;
518
+ prefix: string;
519
+ suffix: string;
520
+ textOverride: string | null;
521
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
522
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
523
+ textPosition: "above" | "centered";
524
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
525
+ metricNotation: "meters" | "millimeters";
526
+ extensionStartGap: number;
527
+ extensionOvershoot: number;
528
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
529
+ drawingOverrides: {
530
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
531
+ presentation: "controlled" | "omit" | "shown";
532
+ suppressedSegmentIndexes: number[];
533
+ }[];
534
+ controllingDimensionId: `construction-dimension_${string}` | null;
535
+ type: "construction-dimension";
471
536
  } | {
472
537
  object: "node";
473
538
  name?: string | undefined;
@@ -492,198 +557,198 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
492
557
  fromIds: string[];
493
558
  } | undefined;
494
559
  } | undefined;
495
- id: `rseg_${string}`;
496
- material?: {
497
- id?: string | undefined;
498
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
499
- properties?: {
500
- color: string;
501
- roughness: number;
502
- metalness: number;
503
- opacity: number;
504
- transparent: boolean;
505
- side: "back" | "double" | "front";
506
- } | undefined;
507
- texture?: {
508
- url: string;
509
- repeat?: [number, number] | undefined;
510
- scale?: number | undefined;
511
- } | undefined;
560
+ id: `site_${string}`;
561
+ polygon: {
562
+ type: "polygon";
563
+ points: [number, number][];
564
+ };
565
+ terrain?: {
566
+ type: "heightfield";
567
+ origin: [number, number];
568
+ spacing: number;
569
+ cols: number;
570
+ rows: number;
571
+ step: number;
572
+ heights: string;
512
573
  } | undefined;
513
- materialPreset?: string | undefined;
514
- topMaterial?: {
515
- id?: string | undefined;
516
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
517
- properties?: {
518
- color: string;
519
- roughness: number;
520
- metalness: number;
521
- opacity: number;
522
- transparent: boolean;
523
- side: "back" | "double" | "front";
524
- } | undefined;
525
- texture?: {
526
- url: string;
527
- repeat?: [number, number] | undefined;
528
- scale?: number | undefined;
574
+ showGround?: boolean | undefined;
575
+ presentation?: {
576
+ theme?: string | undefined;
577
+ exposure?: number | undefined;
578
+ shading?: "rendered" | "solid" | undefined;
579
+ edges?: "off" | "soft" | "strong" | undefined;
580
+ shadows?: boolean | undefined;
581
+ lighting?: {
582
+ background?: string | undefined;
583
+ backgroundSky?: string | null | undefined;
584
+ ground?: string | undefined;
585
+ ambient?: {
586
+ color: string;
587
+ intensity: number;
588
+ } | undefined;
589
+ hemi?: {
590
+ sky: string;
591
+ ground: string;
592
+ intensity: number;
593
+ } | undefined;
594
+ lights?: {
595
+ color: string;
596
+ intensity: number;
597
+ position: [number, number, number];
598
+ target?: [number, number, number] | undefined;
599
+ castShadow?: boolean | undefined;
600
+ shadow?: {
601
+ intensity?: number | undefined;
602
+ bias?: number | undefined;
603
+ normalBias?: number | undefined;
604
+ radius?: number | undefined;
605
+ mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
606
+ camera?: {
607
+ left: number;
608
+ right: number;
609
+ top: number;
610
+ bottom: number;
611
+ near: number;
612
+ far: number;
613
+ } | undefined;
614
+ } | undefined;
615
+ }[] | undefined;
616
+ environment?: {
617
+ source: "gradient" | "none" | "room";
618
+ intensity: number;
619
+ } | undefined;
529
620
  } | undefined;
530
- } | undefined;
531
- topMaterialPreset?: string | undefined;
532
- edgeMaterial?: {
533
- id?: string | undefined;
534
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
535
- properties?: {
536
- color: string;
537
- roughness: number;
538
- metalness: number;
539
- opacity: number;
540
- transparent: boolean;
541
- side: "back" | "double" | "front";
621
+ postprocessing?: {
622
+ ambientOcclusion?: boolean | undefined;
623
+ colorGrading?: boolean | undefined;
542
624
  } | undefined;
543
- texture?: {
544
- url: string;
545
- repeat?: [number, number] | undefined;
546
- scale?: number | undefined;
625
+ display?: {
626
+ mode?: "construction" | "finished" | "systems" | undefined;
627
+ families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
628
+ disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
629
+ xray?: boolean | undefined;
630
+ colorBy?: "material" | "service" | undefined;
547
631
  } | undefined;
548
632
  } | undefined;
549
- edgeMaterialPreset?: string | undefined;
550
- wallMaterial?: {
551
- id?: string | undefined;
552
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
553
- properties?: {
554
- color: string;
555
- roughness: number;
556
- metalness: number;
557
- opacity: number;
558
- transparent: boolean;
559
- side: "back" | "double" | "front";
560
- } | undefined;
561
- texture?: {
562
- url: string;
563
- repeat?: [number, number] | undefined;
564
- scale?: number | undefined;
565
- } | undefined;
633
+ address?: {
634
+ street?: string | undefined;
635
+ city?: string | undefined;
636
+ state?: string | undefined;
637
+ zip?: string | undefined;
566
638
  } | undefined;
567
- wallMaterialPreset?: string | undefined;
568
- position: [number, number, number];
569
- rotation: number;
570
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
571
- barrelRise?: number | undefined;
572
- barrelSegments?: number | undefined;
573
- roofSystem?: "glazed" | "standard" | undefined;
574
- glazing?: {
575
- across: {
576
- layout: "count" | "fixed-spacing" | "maximum-spacing";
577
- count: number;
578
- spacing: number;
579
- alignment: "center" | "end" | "start";
580
- };
581
- along: {
582
- layout: "count" | "fixed-spacing" | "maximum-spacing";
583
- count: number;
584
- spacing: number;
585
- alignment: "center" | "end" | "start";
586
- };
587
- frameWidth: number;
588
- frameDepth: number;
589
- glassThickness: number;
590
- frameColor: string;
591
- glassColor: string;
592
- glassOpacity: number;
593
- glassRoughness: number;
594
- glazedEnds: boolean;
595
- panelType: "empty" | "glass" | "solid";
596
- panels: {
597
- face: string;
598
- column: number;
599
- row: number;
600
- type: "empty" | "glass" | "solid";
601
- }[];
639
+ parcel?: {
640
+ apn?: string | undefined;
641
+ source?: string | undefined;
642
+ county?: string | undefined;
643
+ state?: string | undefined;
644
+ lotAreaSqFt?: number | undefined;
645
+ originLngLat?: [number, number] | undefined;
646
+ resolvedAt?: string | undefined;
647
+ layer?: string | undefined;
648
+ notes?: string[] | undefined;
602
649
  } | undefined;
603
- slots?: Record<string, string> | undefined;
604
- width: number;
605
- depth: number;
606
- conicalStartAngle?: number | undefined;
607
- conicalSweepAngle?: number | undefined;
608
- conicalFullCircle?: boolean | undefined;
609
- trim: {
610
- left: number;
611
- right: number;
650
+ setbacks?: {
612
651
  front: number;
613
- back: number;
614
- frontLeft: number;
615
- frontRight: number;
616
- backLeft: number;
617
- backRight: number;
618
- frontLeftX: number;
619
- frontLeftZ: number;
620
- frontRightX: number;
621
- frontRightZ: number;
622
- backLeftX: number;
623
- backLeftZ: number;
624
- backRightX: number;
625
- backRightZ: number;
626
- };
627
- wallHeight: number;
628
- pitch: number;
629
- wallThickness: number;
630
- deckThickness: number;
631
- overhang: number;
632
- gableOverhang?: number | undefined;
633
- shingleThickness: number;
634
- arc?: {
635
- centerX: number;
636
- centerZ: number;
637
- radius: number;
638
- } | undefined;
639
- shedSideInfillSpan?: number | undefined;
640
- shedSideInfillMinX?: number | undefined;
641
- shedSideInfillMaxX?: number | undefined;
642
- shedFootprintPieces?: [number, number][][] | undefined;
643
- shedOpenEndSides?: ("left" | "right")[] | undefined;
644
- shedJointFrame?: {
645
- position: [number, number, number];
646
- rotation: number;
652
+ side: number;
653
+ rear: number;
654
+ left?: number | undefined;
655
+ right?: number | undefined;
656
+ streetSide?: number | undefined;
647
657
  } | undefined;
648
- shedJointOwnerId?: string | undefined;
649
- shedJointNeighborIds?: string[] | undefined;
650
- shedJointScopeId?: string | undefined;
651
- managedByParent: boolean;
652
- wallShell: "auto" | "include" | "omit";
653
- shedInsetEndPanels: boolean;
654
- fascia?: boolean | undefined;
655
- fasciaHighEdge?: boolean | undefined;
656
- fasciaHeight?: number | undefined;
657
- fasciaDepth?: number | undefined;
658
- fasciaMaterial?: {
659
- id?: string | undefined;
660
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
661
- properties?: {
662
- color: string;
663
- roughness: number;
664
- metalness: number;
665
- opacity: number;
666
- transparent: boolean;
667
- side: "back" | "double" | "front";
658
+ setbacksSource?: string | undefined;
659
+ zone?: string | undefined;
660
+ frontEdge?: number | undefined;
661
+ streetEdges?: number[] | undefined;
662
+ sightTriangleFt?: number | undefined;
663
+ northRotation?: number | undefined;
664
+ dossier?: {
665
+ [x: string]: unknown;
666
+ provider: string;
667
+ asOf: string;
668
+ point?: {
669
+ lat?: number | undefined;
670
+ lng?: number | undefined;
671
+ source?: string | undefined;
668
672
  } | undefined;
669
- texture?: {
670
- url: string;
671
- repeat?: [number, number] | undefined;
672
- scale?: number | undefined;
673
+ address?: {
674
+ formatted?: string | undefined;
675
+ precision?: string | undefined;
673
676
  } | undefined;
677
+ sections: Record<string, {
678
+ [x: string]: unknown;
679
+ status: string;
680
+ summary?: string | undefined;
681
+ reason?: string | undefined;
682
+ source?: {
683
+ name?: string | undefined;
684
+ kind?: string | undefined;
685
+ vintage?: string | undefined;
686
+ attribution?: string | undefined;
687
+ } | undefined;
688
+ }>;
689
+ parcel?: Record<string, unknown> | undefined;
690
+ flood?: Record<string, unknown> | undefined;
691
+ codeBasis?: Record<string, unknown> | undefined;
692
+ zoning?: Record<string, unknown> | undefined;
693
+ utilities?: Record<string, unknown> | undefined;
694
+ soils?: Record<string, unknown> | undefined;
695
+ wetlands?: Record<string, unknown> | undefined;
696
+ structures?: Record<string, unknown> | undefined;
697
+ elevation?: Record<string, unknown> | undefined;
698
+ boundaries?: Record<string, unknown> | undefined;
674
699
  } | undefined;
675
- fasciaMaterialPreset?: string | undefined;
676
- gambrelLowerWidthRatio: number;
677
- gambrelLowerHeightRatio: number;
678
- mansardSteepWidthRatio: number;
679
- mansardSteepHeightRatio: number;
680
- dutchHipWidthRatio: number;
681
- dutchHipHeightRatio: number;
682
- dutchWaistLengthRatio: number;
683
- dutchGabletRake: number;
684
- dutchTopRakeThickness: number;
700
+ contourIntervalIn?: number | undefined;
701
+ contours3d?: boolean | undefined;
702
+ terrainContours?: {
703
+ datum: string;
704
+ intervalFt: number;
705
+ source?: string | undefined;
706
+ lines: {
707
+ elevationFt: number;
708
+ points: [number, number][];
709
+ }[];
710
+ } | undefined;
711
+ wallTypes?: {
712
+ id: string;
713
+ label: string;
714
+ assembly: {
715
+ layers: {
716
+ id: string;
717
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
718
+ thickness: number;
719
+ core?: true | undefined;
720
+ spacing?: number | undefined;
721
+ material?: string | undefined;
722
+ slot?: string | undefined;
723
+ returns?: boolean | undefined;
724
+ display?: "construction" | "finished" | undefined;
725
+ inset?: number | undefined;
726
+ bottom?: number | undefined;
727
+ lift?: number | undefined;
728
+ src?: string | undefined;
729
+ }[];
730
+ backing?: {
731
+ id: string;
732
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
733
+ thickness: number;
734
+ core?: true | undefined;
735
+ spacing?: number | undefined;
736
+ material?: string | undefined;
737
+ slot?: string | undefined;
738
+ returns?: boolean | undefined;
739
+ display?: "construction" | "finished" | undefined;
740
+ inset?: number | undefined;
741
+ bottom?: number | undefined;
742
+ lift?: number | undefined;
743
+ src?: string | undefined;
744
+ }[] | undefined;
745
+ face?: "exterior" | "front" | undefined;
746
+ presetId?: string | undefined;
747
+ cavityInsulation?: string | undefined;
748
+ };
749
+ }[] | undefined;
685
750
  children: string[];
686
- type: "roof-segment";
751
+ type: "site";
687
752
  } | {
688
753
  object: "node";
689
754
  name?: string | undefined;
@@ -708,7 +773,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
708
773
  fromIds: string[];
709
774
  } | undefined;
710
775
  } | undefined;
711
- id: `slab_${string}`;
776
+ id: `door_${string}`;
712
777
  material?: {
713
778
  id?: string | undefined;
714
779
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -724,102 +789,21 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
724
789
  url: string;
725
790
  repeat?: [number, number] | undefined;
726
791
  scale?: number | undefined;
792
+ offset?: [number, number] | undefined;
793
+ normalMap?: string | undefined;
794
+ normalScale?: number | undefined;
795
+ bumpMap?: string | undefined;
796
+ bumpScale?: number | undefined;
727
797
  } | undefined;
728
798
  } | undefined;
729
- materialPreset?: string | undefined;
730
799
  slots?: Record<string, string> | undefined;
731
- polygon: [number, number][];
732
- holes: [number, number][][];
733
- holeMetadata: {
734
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
735
- openingId?: string | undefined;
736
- stairId?: string | undefined;
737
- elevatorId?: string | undefined;
738
- }[];
739
- elevation: number;
740
- floorHeight?: number | undefined;
741
- referenceFloorElevation?: number | undefined;
742
- foundation?: {
743
- type: "none" | "solid";
744
- material?: string | {
745
- id?: string | undefined;
746
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
747
- properties?: {
748
- color: string;
749
- roughness: number;
750
- metalness: number;
751
- opacity: number;
752
- transparent: boolean;
753
- side: "back" | "double" | "front";
754
- } | undefined;
755
- texture?: {
756
- url: string;
757
- repeat?: [number, number] | undefined;
758
- scale?: number | undefined;
759
- } | undefined;
760
- } | undefined;
761
- } | undefined;
762
- thickness: number;
763
- recessed: boolean;
764
- recessedRimElevation?: number | undefined;
765
- fillToTerrain?: boolean | undefined;
766
- boundary?: "auto" | undefined;
767
- support?: "open" | undefined;
768
- plateRole?: "base" | "platform" | "sunken" | undefined;
769
- railing?: {
770
- start: [number, number];
771
- end: [number, number];
772
- }[] | undefined;
773
- zoneIds?: string[] | undefined;
774
- associatedZoneIds?: string[] | undefined;
775
- autoFromWalls: boolean;
776
- type: "slab";
777
- } | {
778
- object: "node";
779
- name?: string | undefined;
780
- parentId: string | null;
781
- visible: boolean;
782
- camera?: {
783
- position: [number, number, number];
784
- target: [number, number, number];
785
- mode: "orthographic" | "perspective";
786
- fov?: number | undefined;
787
- zoom?: number | undefined;
788
- } | undefined;
789
- metadata: Record<string, unknown>;
790
- provenance?: {
791
- refs: {
792
- ns?: string | undefined;
793
- id: string;
794
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
795
- }[];
796
- lineage?: {
797
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
798
- fromIds: string[];
799
- } | undefined;
800
- } | undefined;
801
- type: "item";
802
- id: `item_${string}`;
803
- position: [number, number, number];
804
- rotation: [number, number, number];
805
- scale: [number, number, number];
806
- side?: "back" | "front" | undefined;
807
- children: string[];
808
- wallId?: string | undefined;
809
- wallT?: number | undefined;
810
- roofSegmentId?: string | undefined;
811
- roofFace?: "back" | "front" | "left" | "right" | undefined;
812
- blockFaceId?: string | undefined;
813
- supportSlabId?: string | undefined;
814
- collectionIds?: `collection_${string}`[] | undefined;
815
- slots?: Record<string, string> | undefined;
816
- source?: {
817
- kind: "script";
818
- meta?: {
819
- description?: string | undefined;
820
- category?: string | undefined;
821
- tags?: string[] | undefined;
822
- parent?: string | undefined;
800
+ source?: {
801
+ kind: "script";
802
+ meta?: {
803
+ description?: string | undefined;
804
+ category?: string | undefined;
805
+ tags?: string[] | undefined;
806
+ parent?: string | undefined;
823
807
  } | undefined;
824
808
  language: "bpy" | "three";
825
809
  script: string;
@@ -875,6 +859,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
875
859
  color: string;
876
860
  intensity: number;
877
861
  distance?: number | undefined;
862
+ spot?: {
863
+ direction: [number, number, number];
864
+ angle: number;
865
+ softness: number;
866
+ } | undefined;
867
+ shadows?: boolean | undefined;
868
+ glow?: {
869
+ size: number;
870
+ strength: number;
871
+ } | undefined;
878
872
  }[];
879
873
  undersides: {
880
874
  part?: string | undefined;
@@ -893,6 +887,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
893
887
  }[] | undefined;
894
888
  cutout: boolean;
895
889
  collider: boolean;
890
+ shape?: {
891
+ tolerance: number;
892
+ bands: {
893
+ y0: number;
894
+ y1: number;
895
+ polygons: {
896
+ outer: [number, number][];
897
+ holes?: [number, number][][] | undefined;
898
+ }[];
899
+ }[];
900
+ } | undefined;
896
901
  triangles: number;
897
902
  coverage?: number | undefined;
898
903
  uncovered?: {
@@ -906,66 +911,72 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
906
911
  floorPlan: string;
907
912
  } | undefined;
908
913
  } | undefined;
909
- asset: {
910
- id: string;
911
- category: string;
912
- name: string;
913
- thumbnail: string;
914
- floorPlanUrl?: string | undefined;
915
- source: "community" | "library" | "mine";
916
- isDraft?: boolean | undefined;
917
- src: string;
918
- dimensions: [number, number, number];
919
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
920
- recessed?: boolean | undefined;
921
- tags?: string[] | undefined;
922
- functionTags?: string[] | undefined;
923
- offset: [number, number, number];
924
- rotation: [number, number, number];
925
- scale: [number, number, number];
926
- surface?: {
927
- height: number;
928
- } | undefined;
929
- interactive?: {
930
- controls: ({
931
- kind: "toggle";
932
- label?: string | undefined;
933
- default?: boolean | undefined;
934
- } | {
935
- kind: "slider";
936
- label: string;
937
- min: number;
938
- max: number;
939
- step: number;
940
- unit?: string | undefined;
941
- displayMode: "dial" | "slider" | "stepper";
942
- default?: number | undefined;
943
- } | {
944
- kind: "temperature";
945
- label: string;
946
- min: number;
947
- max: number;
948
- unit: "C" | "F";
949
- default?: number | undefined;
950
- })[];
951
- effects: ({
952
- kind: "animation";
953
- mode?: "ambient" | "open-close" | undefined;
954
- control?: number | undefined;
955
- clips: {
956
- on?: string | undefined;
957
- off?: string | undefined;
958
- loop?: string | undefined;
959
- };
960
- } | {
961
- kind: "light";
962
- color: string;
963
- intensityRange: [number, number];
964
- distance?: number | undefined;
965
- offset: [number, number, number];
966
- })[];
967
- } | undefined;
968
- };
914
+ position: [number, number, number];
915
+ rotation: [number, number, number];
916
+ side?: "back" | "front" | undefined;
917
+ verticalAnchor?: "floor" | "wall" | undefined;
918
+ floorThresholdVersion: 0 | 1;
919
+ wallId?: string | undefined;
920
+ roofSegmentId?: string | undefined;
921
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
922
+ width: number;
923
+ height: number;
924
+ sidelightLeft?: number | undefined;
925
+ sidelightRight?: number | undefined;
926
+ transomHeight?: number | undefined;
927
+ slidingStyle?: "bypass" | "patio" | undefined;
928
+ mark?: string | undefined;
929
+ constructionType: "framed" | "masonry";
930
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
931
+ roughOpeningWidth?: number | undefined;
932
+ roughOpeningHeight?: number | undefined;
933
+ masonryOpeningWidth?: number | undefined;
934
+ masonryOpeningHeight?: number | undefined;
935
+ finishOpeningWidth?: number | undefined;
936
+ finishOpeningHeight?: number | undefined;
937
+ doorCategory: "garage" | "interior";
938
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
939
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
940
+ operationState: number;
941
+ slideDirection: "left" | "right";
942
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
943
+ garagePanelCount: number;
944
+ openingKind: "door" | "opening";
945
+ openingShape: "arch" | "rectangle" | "rounded";
946
+ openingRadiusMode: "all" | "individual";
947
+ openingTopRadii: [number, number];
948
+ cornerRadius: number;
949
+ archHeight: number;
950
+ openingRevealRadius: number;
951
+ frameThickness: number;
952
+ frameDepth?: number | undefined;
953
+ threshold: boolean;
954
+ thresholdHeight: number;
955
+ casingFaceA?: boolean | undefined;
956
+ casingFaceB?: boolean | undefined;
957
+ casingWidth?: number | undefined;
958
+ hingesSide: "left" | "right";
959
+ swingDirection: "inward" | "outward";
960
+ swingAngle: number;
961
+ segments: {
962
+ type: "empty" | "glass" | "panel";
963
+ heightRatio: number;
964
+ columnRatios: number[];
965
+ dividerThickness: number;
966
+ panelDepth: number;
967
+ panelInset: number;
968
+ }[];
969
+ handle: boolean;
970
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
971
+ handleHeight: number;
972
+ handleSide: "left" | "right";
973
+ contentPadding: [number, number];
974
+ doorCloser: boolean;
975
+ panicBar: boolean;
976
+ panicBarStyle: "crossbar" | "touchbar";
977
+ panicBarRods: boolean;
978
+ panicBarHeight: number;
979
+ type: "door";
969
980
  } | {
970
981
  object: "node";
971
982
  name?: string | undefined;
@@ -990,7 +1001,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
990
1001
  fromIds: string[];
991
1002
  } | undefined;
992
1003
  } | undefined;
993
- id: `door_${string}`;
1004
+ id: `window_${string}`;
994
1005
  material?: {
995
1006
  id?: string | undefined;
996
1007
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1006,6 +1017,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1006
1017
  url: string;
1007
1018
  repeat?: [number, number] | undefined;
1008
1019
  scale?: number | undefined;
1020
+ offset?: [number, number] | undefined;
1021
+ normalMap?: string | undefined;
1022
+ normalScale?: number | undefined;
1023
+ bumpMap?: string | undefined;
1024
+ bumpScale?: number | undefined;
1009
1025
  } | undefined;
1010
1026
  } | undefined;
1011
1027
  slots?: Record<string, string> | undefined;
@@ -1071,6 +1087,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1071
1087
  color: string;
1072
1088
  intensity: number;
1073
1089
  distance?: number | undefined;
1090
+ spot?: {
1091
+ direction: [number, number, number];
1092
+ angle: number;
1093
+ softness: number;
1094
+ } | undefined;
1095
+ shadows?: boolean | undefined;
1096
+ glow?: {
1097
+ size: number;
1098
+ strength: number;
1099
+ } | undefined;
1074
1100
  }[];
1075
1101
  undersides: {
1076
1102
  part?: string | undefined;
@@ -1089,6 +1115,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1089
1115
  }[] | undefined;
1090
1116
  cutout: boolean;
1091
1117
  collider: boolean;
1118
+ shape?: {
1119
+ tolerance: number;
1120
+ bands: {
1121
+ y0: number;
1122
+ y1: number;
1123
+ polygons: {
1124
+ outer: [number, number][];
1125
+ holes?: [number, number][][] | undefined;
1126
+ }[];
1127
+ }[];
1128
+ } | undefined;
1092
1129
  triangles: number;
1093
1130
  coverage?: number | undefined;
1094
1131
  uncovered?: {
@@ -1108,6 +1145,8 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1108
1145
  verticalAnchor?: "floor" | "wall" | undefined;
1109
1146
  floorThresholdVersion: 0 | 1;
1110
1147
  wallId?: string | undefined;
1148
+ dormerId?: string | undefined;
1149
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1111
1150
  roofSegmentId?: string | undefined;
1112
1151
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1113
1152
  width: number;
@@ -1121,43 +1160,827 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1121
1160
  masonryOpeningHeight?: number | undefined;
1122
1161
  finishOpeningWidth?: number | undefined;
1123
1162
  finishOpeningHeight?: number | undefined;
1124
- doorCategory: "garage" | "interior";
1125
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1126
- leafCount: 1 | 2 | 3 | 4;
1163
+ openingKind: "opening" | "window";
1164
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1127
1165
  operationState: number;
1128
- slideDirection: "left" | "right";
1129
- trackStyle: "none" | "overhead" | "pocket" | "visible";
1130
- garagePanelCount: number;
1131
- openingKind: "door" | "opening";
1166
+ openingDirection?: "inward" | "outward" | undefined;
1167
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1168
+ awningDirection: "down" | "up";
1169
+ casementStyle: "french" | "single";
1170
+ hingesSide: "left" | "right";
1132
1171
  openingShape: "arch" | "rectangle" | "rounded";
1133
1172
  openingRadiusMode: "all" | "individual";
1134
- openingTopRadii: [number, number];
1173
+ openingCornerRadii: [number, number, number, number];
1135
1174
  cornerRadius: number;
1136
1175
  archHeight: number;
1137
1176
  openingRevealRadius: number;
1138
1177
  frameThickness: number;
1139
- frameDepth: number;
1140
- threshold: boolean;
1141
- thresholdHeight: number;
1142
- hingesSide: "left" | "right";
1143
- swingDirection: "inward" | "outward";
1144
- swingAngle: number;
1145
- segments: {
1146
- type: "empty" | "glass" | "panel";
1147
- heightRatio: number;
1148
- columnRatios: number[];
1149
- dividerThickness: number;
1150
- panelDepth: number;
1151
- panelInset: number;
1152
- }[];
1153
- handle: boolean;
1154
- handleHeight: number;
1155
- handleSide: "left" | "right";
1156
- contentPadding: [number, number];
1157
- doorCloser: boolean;
1158
- panicBar: boolean;
1159
- panicBarHeight: number;
1160
- type: "door";
1178
+ frameDepth?: number | undefined;
1179
+ windowHandle?: boolean | undefined;
1180
+ sashGrid?: boolean | undefined;
1181
+ columnRatios: number[];
1182
+ rowRatios: number[];
1183
+ columnDividerThickness: number;
1184
+ rowDividerThickness: number;
1185
+ corner?: {
1186
+ end: "end" | "start";
1187
+ partnerId: string;
1188
+ post: "none" | "post";
1189
+ } | undefined;
1190
+ sill: boolean;
1191
+ sillDepth: number;
1192
+ sillThickness: number;
1193
+ sillOverhang?: number | undefined;
1194
+ sillInterior?: boolean | undefined;
1195
+ sillInteriorDepth?: number | undefined;
1196
+ sillInteriorThickness?: number | undefined;
1197
+ sillInteriorOverhang?: number | undefined;
1198
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1199
+ shutterWidth?: number | undefined;
1200
+ shutterOpen?: number | undefined;
1201
+ shutterSides?: "both" | "left" | "right" | undefined;
1202
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1203
+ rollerShutterBoxHeight?: number | undefined;
1204
+ rollerShutterOpen?: number | undefined;
1205
+ casingFaceA?: boolean | undefined;
1206
+ casingFaceB?: boolean | undefined;
1207
+ casingWidth?: number | undefined;
1208
+ type: "window";
1209
+ } | {
1210
+ object: "node";
1211
+ name?: string | undefined;
1212
+ parentId: string | null;
1213
+ visible: boolean;
1214
+ camera?: {
1215
+ position: [number, number, number];
1216
+ target: [number, number, number];
1217
+ mode: "orthographic" | "perspective";
1218
+ fov?: number | undefined;
1219
+ zoom?: number | undefined;
1220
+ } | undefined;
1221
+ metadata: Record<string, unknown>;
1222
+ provenance?: {
1223
+ refs: {
1224
+ ns?: string | undefined;
1225
+ id: string;
1226
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1227
+ }[];
1228
+ lineage?: {
1229
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1230
+ fromIds: string[];
1231
+ } | undefined;
1232
+ } | undefined;
1233
+ id: `column_${string}`;
1234
+ children: string[];
1235
+ position: [number, number, number];
1236
+ rotation: number;
1237
+ supportSlabId?: string | undefined;
1238
+ source?: {
1239
+ kind: "script";
1240
+ meta?: {
1241
+ description?: string | undefined;
1242
+ category?: string | undefined;
1243
+ tags?: string[] | undefined;
1244
+ parent?: string | undefined;
1245
+ } | undefined;
1246
+ language: "bpy" | "three";
1247
+ script: string;
1248
+ params: Record<string, string | number | boolean>;
1249
+ artifact: string;
1250
+ manifest: {
1251
+ bounds: {
1252
+ min: [number, number, number];
1253
+ max: [number, number, number];
1254
+ };
1255
+ params: {
1256
+ id: string;
1257
+ label?: string | undefined;
1258
+ kind: "boolean" | "number" | "string";
1259
+ default: string | number | boolean;
1260
+ min?: number | undefined;
1261
+ max?: number | undefined;
1262
+ step?: number | undefined;
1263
+ unit?: string | undefined;
1264
+ options?: string[] | undefined;
1265
+ }[];
1266
+ parts: {
1267
+ id: string;
1268
+ label?: string | undefined;
1269
+ type?: string | undefined;
1270
+ bounds?: {
1271
+ min: [number, number, number];
1272
+ max: [number, number, number];
1273
+ } | undefined;
1274
+ }[];
1275
+ surfaces: {
1276
+ part?: string | undefined;
1277
+ y: number;
1278
+ polygon: [number, number][];
1279
+ }[];
1280
+ slots: {
1281
+ id: string;
1282
+ label?: string | undefined;
1283
+ color?: string | undefined;
1284
+ roughness?: number | undefined;
1285
+ metalness?: number | undefined;
1286
+ transparent?: boolean | undefined;
1287
+ emissive?: boolean | undefined;
1288
+ }[];
1289
+ anchors: {
1290
+ id: string;
1291
+ position: [number, number, number];
1292
+ normal?: [number, number, number] | undefined;
1293
+ }[];
1294
+ lights: {
1295
+ id: string;
1296
+ position: [number, number, number];
1297
+ color: string;
1298
+ intensity: number;
1299
+ distance?: number | undefined;
1300
+ spot?: {
1301
+ direction: [number, number, number];
1302
+ angle: number;
1303
+ softness: number;
1304
+ } | undefined;
1305
+ shadows?: boolean | undefined;
1306
+ glow?: {
1307
+ size: number;
1308
+ strength: number;
1309
+ } | undefined;
1310
+ }[];
1311
+ undersides: {
1312
+ part?: string | undefined;
1313
+ polygon: [number, number][];
1314
+ plane: [number, number, number, number];
1315
+ }[];
1316
+ animations: {
1317
+ name: string;
1318
+ duration: number;
1319
+ }[];
1320
+ cutters?: {
1321
+ host: "ceiling" | "mounted" | "slab" | "wall";
1322
+ polygon: number[][];
1323
+ minY: number;
1324
+ maxY: number;
1325
+ }[] | undefined;
1326
+ cutout: boolean;
1327
+ collider: boolean;
1328
+ shape?: {
1329
+ tolerance: number;
1330
+ bands: {
1331
+ y0: number;
1332
+ y1: number;
1333
+ polygons: {
1334
+ outer: [number, number][];
1335
+ holes?: [number, number][][] | undefined;
1336
+ }[];
1337
+ }[];
1338
+ } | undefined;
1339
+ triangles: number;
1340
+ coverage?: number | undefined;
1341
+ uncovered?: {
1342
+ min: [number, number];
1343
+ max: [number, number];
1344
+ }[] | undefined;
1345
+ };
1346
+ images?: {
1347
+ artifact: string;
1348
+ thumbnail: string;
1349
+ floorPlan: string;
1350
+ } | undefined;
1351
+ } | undefined;
1352
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1353
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1354
+ height: number;
1355
+ radius: number;
1356
+ width: number;
1357
+ depth: number;
1358
+ edgeSoftness: number;
1359
+ baseHeight: number;
1360
+ capitalHeight: number;
1361
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1362
+ shaftTaper: number;
1363
+ shaftBulge: number;
1364
+ shaftStartScale: number;
1365
+ shaftEndScale: number;
1366
+ shaftSegmentCount: number;
1367
+ shaftTwistStep: number;
1368
+ shaftCornerRadius: number;
1369
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1370
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1371
+ baseWidthScale: number;
1372
+ baseDepthScale: number;
1373
+ baseTierCount: number;
1374
+ baseStepSpread: number;
1375
+ basePlinthHeightRatio: number;
1376
+ baseRoundBandScale: number;
1377
+ baseNeckScale: number;
1378
+ baseRoundBandCount: number;
1379
+ baseRibCount: number;
1380
+ baseCarvingLevel: number;
1381
+ basePanelInset: number;
1382
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1383
+ capitalWidthScale: number;
1384
+ capitalDepthScale: number;
1385
+ capitalTierCount: number;
1386
+ capitalStepSpread: number;
1387
+ capitalBandCount: number;
1388
+ voluteSize: number;
1389
+ voluteCount: number;
1390
+ leafCount: number;
1391
+ leafRows: number;
1392
+ bracketDepth: number;
1393
+ bracketTierCount: number;
1394
+ pendantCount: number;
1395
+ capitalCarvingLevel: number;
1396
+ ringCount: number;
1397
+ ringPlacement: "bottom" | "ends" | "even" | "top";
1398
+ ringThickness: number;
1399
+ ringSpread: number;
1400
+ fluteCount: number;
1401
+ fluteDepth: number;
1402
+ fluteWidth: number;
1403
+ spiralTwist: number;
1404
+ spiralRibCount: number;
1405
+ panelCount: number;
1406
+ panelInsetDepth: number;
1407
+ panelShape: "arched" | "diamond" | "rectangle";
1408
+ latheRingCount: number;
1409
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
1410
+ carvingLevel: number;
1411
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
1412
+ lowerBandEnabled: boolean;
1413
+ lowerBandHeight: number;
1414
+ lowerBandCarvingLevel: number;
1415
+ dentilCount: number;
1416
+ beadCount: number;
1417
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1418
+ braceWidth: number;
1419
+ braceDepth: number;
1420
+ braceBottomSpread: number;
1421
+ braceTopSpread: number;
1422
+ bracePlateEnabled: boolean;
1423
+ role?: "ornament" | "post" | undefined;
1424
+ postBase?: "none" | "pier" | "post-base" | undefined;
1425
+ material?: {
1426
+ id?: string | undefined;
1427
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1428
+ properties?: {
1429
+ color: string;
1430
+ roughness: number;
1431
+ metalness: number;
1432
+ opacity: number;
1433
+ transparent: boolean;
1434
+ side: "back" | "double" | "front";
1435
+ } | undefined;
1436
+ texture?: {
1437
+ url: string;
1438
+ repeat?: [number, number] | undefined;
1439
+ scale?: number | undefined;
1440
+ offset?: [number, number] | undefined;
1441
+ normalMap?: string | undefined;
1442
+ normalScale?: number | undefined;
1443
+ bumpMap?: string | undefined;
1444
+ bumpScale?: number | undefined;
1445
+ } | undefined;
1446
+ } | undefined;
1447
+ materialPreset?: string | undefined;
1448
+ slots?: Record<string, string> | undefined;
1449
+ type: "column";
1450
+ } | {
1451
+ object: "node";
1452
+ name?: string | undefined;
1453
+ parentId: string | null;
1454
+ visible: boolean;
1455
+ camera?: {
1456
+ position: [number, number, number];
1457
+ target: [number, number, number];
1458
+ mode: "orthographic" | "perspective";
1459
+ fov?: number | undefined;
1460
+ zoom?: number | undefined;
1461
+ } | undefined;
1462
+ metadata: Record<string, unknown>;
1463
+ provenance?: {
1464
+ refs: {
1465
+ ns?: string | undefined;
1466
+ id: string;
1467
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1468
+ }[];
1469
+ lineage?: {
1470
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1471
+ fromIds: string[];
1472
+ } | undefined;
1473
+ } | undefined;
1474
+ id: `rseg_${string}`;
1475
+ material?: {
1476
+ id?: string | undefined;
1477
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1478
+ properties?: {
1479
+ color: string;
1480
+ roughness: number;
1481
+ metalness: number;
1482
+ opacity: number;
1483
+ transparent: boolean;
1484
+ side: "back" | "double" | "front";
1485
+ } | undefined;
1486
+ texture?: {
1487
+ url: string;
1488
+ repeat?: [number, number] | undefined;
1489
+ scale?: number | undefined;
1490
+ offset?: [number, number] | undefined;
1491
+ normalMap?: string | undefined;
1492
+ normalScale?: number | undefined;
1493
+ bumpMap?: string | undefined;
1494
+ bumpScale?: number | undefined;
1495
+ } | undefined;
1496
+ } | undefined;
1497
+ materialPreset?: string | undefined;
1498
+ topMaterial?: {
1499
+ id?: string | undefined;
1500
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1501
+ properties?: {
1502
+ color: string;
1503
+ roughness: number;
1504
+ metalness: number;
1505
+ opacity: number;
1506
+ transparent: boolean;
1507
+ side: "back" | "double" | "front";
1508
+ } | undefined;
1509
+ texture?: {
1510
+ url: string;
1511
+ repeat?: [number, number] | undefined;
1512
+ scale?: number | undefined;
1513
+ offset?: [number, number] | undefined;
1514
+ normalMap?: string | undefined;
1515
+ normalScale?: number | undefined;
1516
+ bumpMap?: string | undefined;
1517
+ bumpScale?: number | undefined;
1518
+ } | undefined;
1519
+ } | undefined;
1520
+ topMaterialPreset?: string | undefined;
1521
+ edgeMaterial?: {
1522
+ id?: string | undefined;
1523
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1524
+ properties?: {
1525
+ color: string;
1526
+ roughness: number;
1527
+ metalness: number;
1528
+ opacity: number;
1529
+ transparent: boolean;
1530
+ side: "back" | "double" | "front";
1531
+ } | undefined;
1532
+ texture?: {
1533
+ url: string;
1534
+ repeat?: [number, number] | undefined;
1535
+ scale?: number | undefined;
1536
+ offset?: [number, number] | undefined;
1537
+ normalMap?: string | undefined;
1538
+ normalScale?: number | undefined;
1539
+ bumpMap?: string | undefined;
1540
+ bumpScale?: number | undefined;
1541
+ } | undefined;
1542
+ } | undefined;
1543
+ edgeMaterialPreset?: string | undefined;
1544
+ wallMaterial?: {
1545
+ id?: string | undefined;
1546
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1547
+ properties?: {
1548
+ color: string;
1549
+ roughness: number;
1550
+ metalness: number;
1551
+ opacity: number;
1552
+ transparent: boolean;
1553
+ side: "back" | "double" | "front";
1554
+ } | undefined;
1555
+ texture?: {
1556
+ url: string;
1557
+ repeat?: [number, number] | undefined;
1558
+ scale?: number | undefined;
1559
+ offset?: [number, number] | undefined;
1560
+ normalMap?: string | undefined;
1561
+ normalScale?: number | undefined;
1562
+ bumpMap?: string | undefined;
1563
+ bumpScale?: number | undefined;
1564
+ } | undefined;
1565
+ } | undefined;
1566
+ wallMaterialPreset?: string | undefined;
1567
+ position: [number, number, number];
1568
+ rotation: number;
1569
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
1570
+ barrelRise?: number | undefined;
1571
+ barrelSegments?: number | undefined;
1572
+ roofSystem?: "glazed" | "standard" | undefined;
1573
+ glazing?: {
1574
+ across: {
1575
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
1576
+ count: number;
1577
+ spacing: number;
1578
+ alignment: "center" | "end" | "start";
1579
+ };
1580
+ along: {
1581
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
1582
+ count: number;
1583
+ spacing: number;
1584
+ alignment: "center" | "end" | "start";
1585
+ };
1586
+ frameWidth: number;
1587
+ frameDepth: number;
1588
+ glassThickness: number;
1589
+ frameColor: string;
1590
+ glassColor: string;
1591
+ glassOpacity: number;
1592
+ glassRoughness: number;
1593
+ glazedEnds: boolean;
1594
+ panelType: "empty" | "glass" | "solid";
1595
+ panels: {
1596
+ face: string;
1597
+ column: number;
1598
+ row: number;
1599
+ type: "empty" | "glass" | "solid";
1600
+ }[];
1601
+ } | undefined;
1602
+ slots?: Record<string, string> | undefined;
1603
+ width: number;
1604
+ depth: number;
1605
+ conicalStartAngle?: number | undefined;
1606
+ conicalSweepAngle?: number | undefined;
1607
+ conicalFullCircle?: boolean | undefined;
1608
+ trim: {
1609
+ left: number;
1610
+ right: number;
1611
+ front: number;
1612
+ back: number;
1613
+ frontLeft: number;
1614
+ frontRight: number;
1615
+ backLeft: number;
1616
+ backRight: number;
1617
+ frontLeftX: number;
1618
+ frontLeftZ: number;
1619
+ frontRightX: number;
1620
+ frontRightZ: number;
1621
+ backLeftX: number;
1622
+ backLeftZ: number;
1623
+ backRightX: number;
1624
+ backRightZ: number;
1625
+ };
1626
+ wallHeight: number;
1627
+ pitch: number;
1628
+ wallThickness: number;
1629
+ deckThickness: number;
1630
+ overhang: number;
1631
+ gableOverhang?: number | undefined;
1632
+ shingleThickness: number;
1633
+ buildUp?: {
1634
+ presetId?: string | undefined;
1635
+ roofing: {
1636
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
1637
+ thickness: number;
1638
+ name?: string | undefined;
1639
+ };
1640
+ underlayment?: {
1641
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
1642
+ thickness: number;
1643
+ name?: string | undefined;
1644
+ } | undefined;
1645
+ sheathing: {
1646
+ kind: "osb" | "plywood";
1647
+ thickness: number;
1648
+ name?: string | undefined;
1649
+ };
1650
+ structure: {
1651
+ system: "rafters" | "trusses";
1652
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
1653
+ spacing: number;
1654
+ };
1655
+ insulation?: {
1656
+ kind: "batt" | "blown" | "rigid";
1657
+ thickness: number;
1658
+ name?: string | undefined;
1659
+ } | undefined;
1660
+ finish?: {
1661
+ kind: "drywall" | "plaster" | "wood-plank";
1662
+ thickness: number;
1663
+ name?: string | undefined;
1664
+ } | undefined;
1665
+ } | undefined;
1666
+ arc?: {
1667
+ centerX: number;
1668
+ centerZ: number;
1669
+ radius: number;
1670
+ } | undefined;
1671
+ shedSideInfillSpan?: number | undefined;
1672
+ shedSideInfillMinX?: number | undefined;
1673
+ shedSideInfillMaxX?: number | undefined;
1674
+ shedFootprintPieces?: [number, number][][] | undefined;
1675
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
1676
+ shedJointFrame?: {
1677
+ position: [number, number, number];
1678
+ rotation: number;
1679
+ } | undefined;
1680
+ shedJointOwnerId?: string | undefined;
1681
+ shedJointNeighborIds?: string[] | undefined;
1682
+ shedJointScopeId?: string | undefined;
1683
+ managedByParent: boolean;
1684
+ wallShell: "auto" | "include" | "omit";
1685
+ shedInsetEndPanels: boolean;
1686
+ fascia?: boolean | undefined;
1687
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
1688
+ fasciaHighEdge?: boolean | undefined;
1689
+ fasciaHeight?: number | undefined;
1690
+ fasciaDepth?: number | undefined;
1691
+ fasciaMaterial?: {
1692
+ id?: string | undefined;
1693
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1694
+ properties?: {
1695
+ color: string;
1696
+ roughness: number;
1697
+ metalness: number;
1698
+ opacity: number;
1699
+ transparent: boolean;
1700
+ side: "back" | "double" | "front";
1701
+ } | undefined;
1702
+ texture?: {
1703
+ url: string;
1704
+ repeat?: [number, number] | undefined;
1705
+ scale?: number | undefined;
1706
+ offset?: [number, number] | undefined;
1707
+ normalMap?: string | undefined;
1708
+ normalScale?: number | undefined;
1709
+ bumpMap?: string | undefined;
1710
+ bumpScale?: number | undefined;
1711
+ } | undefined;
1712
+ } | undefined;
1713
+ fasciaMaterialPreset?: string | undefined;
1714
+ heelMaterial?: {
1715
+ id?: string | undefined;
1716
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1717
+ properties?: {
1718
+ color: string;
1719
+ roughness: number;
1720
+ metalness: number;
1721
+ opacity: number;
1722
+ transparent: boolean;
1723
+ side: "back" | "double" | "front";
1724
+ } | undefined;
1725
+ texture?: {
1726
+ url: string;
1727
+ repeat?: [number, number] | undefined;
1728
+ scale?: number | undefined;
1729
+ offset?: [number, number] | undefined;
1730
+ normalMap?: string | undefined;
1731
+ normalScale?: number | undefined;
1732
+ bumpMap?: string | undefined;
1733
+ bumpScale?: number | undefined;
1734
+ } | undefined;
1735
+ } | undefined;
1736
+ heelMaterialPreset?: string | undefined;
1737
+ gableLeftMaterial?: {
1738
+ id?: string | undefined;
1739
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1740
+ properties?: {
1741
+ color: string;
1742
+ roughness: number;
1743
+ metalness: number;
1744
+ opacity: number;
1745
+ transparent: boolean;
1746
+ side: "back" | "double" | "front";
1747
+ } | undefined;
1748
+ texture?: {
1749
+ url: string;
1750
+ repeat?: [number, number] | undefined;
1751
+ scale?: number | undefined;
1752
+ offset?: [number, number] | undefined;
1753
+ normalMap?: string | undefined;
1754
+ normalScale?: number | undefined;
1755
+ bumpMap?: string | undefined;
1756
+ bumpScale?: number | undefined;
1757
+ } | undefined;
1758
+ } | undefined;
1759
+ gableLeftMaterialPreset?: string | undefined;
1760
+ gableRightMaterial?: {
1761
+ id?: string | undefined;
1762
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1763
+ properties?: {
1764
+ color: string;
1765
+ roughness: number;
1766
+ metalness: number;
1767
+ opacity: number;
1768
+ transparent: boolean;
1769
+ side: "back" | "double" | "front";
1770
+ } | undefined;
1771
+ texture?: {
1772
+ url: string;
1773
+ repeat?: [number, number] | undefined;
1774
+ scale?: number | undefined;
1775
+ offset?: [number, number] | undefined;
1776
+ normalMap?: string | undefined;
1777
+ normalScale?: number | undefined;
1778
+ bumpMap?: string | undefined;
1779
+ bumpScale?: number | undefined;
1780
+ } | undefined;
1781
+ } | undefined;
1782
+ gableRightMaterialPreset?: string | undefined;
1783
+ gambrelLowerWidthRatio: number;
1784
+ gambrelLowerHeightRatio: number;
1785
+ mansardSteepWidthRatio: number;
1786
+ mansardSteepHeightRatio: number;
1787
+ dutchHipWidthRatio: number;
1788
+ dutchHipHeightRatio: number;
1789
+ dutchWaistLengthRatio: number;
1790
+ dutchGabletRake: number;
1791
+ dutchTopRakeThickness: number;
1792
+ children: string[];
1793
+ type: "roof-segment";
1794
+ } | {
1795
+ object: "node";
1796
+ name?: string | undefined;
1797
+ parentId: string | null;
1798
+ visible: boolean;
1799
+ camera?: {
1800
+ position: [number, number, number];
1801
+ target: [number, number, number];
1802
+ mode: "orthographic" | "perspective";
1803
+ fov?: number | undefined;
1804
+ zoom?: number | undefined;
1805
+ } | undefined;
1806
+ metadata: Record<string, unknown>;
1807
+ provenance?: {
1808
+ refs: {
1809
+ ns?: string | undefined;
1810
+ id: string;
1811
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1812
+ }[];
1813
+ lineage?: {
1814
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1815
+ fromIds: string[];
1816
+ } | undefined;
1817
+ } | undefined;
1818
+ id: `roof_${string}`;
1819
+ material?: {
1820
+ id?: string | undefined;
1821
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1822
+ properties?: {
1823
+ color: string;
1824
+ roughness: number;
1825
+ metalness: number;
1826
+ opacity: number;
1827
+ transparent: boolean;
1828
+ side: "back" | "double" | "front";
1829
+ } | undefined;
1830
+ texture?: {
1831
+ url: string;
1832
+ repeat?: [number, number] | undefined;
1833
+ scale?: number | undefined;
1834
+ offset?: [number, number] | undefined;
1835
+ normalMap?: string | undefined;
1836
+ normalScale?: number | undefined;
1837
+ bumpMap?: string | undefined;
1838
+ bumpScale?: number | undefined;
1839
+ } | undefined;
1840
+ } | undefined;
1841
+ materialPreset?: string | undefined;
1842
+ topMaterial?: {
1843
+ id?: string | undefined;
1844
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1845
+ properties?: {
1846
+ color: string;
1847
+ roughness: number;
1848
+ metalness: number;
1849
+ opacity: number;
1850
+ transparent: boolean;
1851
+ side: "back" | "double" | "front";
1852
+ } | undefined;
1853
+ texture?: {
1854
+ url: string;
1855
+ repeat?: [number, number] | undefined;
1856
+ scale?: number | undefined;
1857
+ offset?: [number, number] | undefined;
1858
+ normalMap?: string | undefined;
1859
+ normalScale?: number | undefined;
1860
+ bumpMap?: string | undefined;
1861
+ bumpScale?: number | undefined;
1862
+ } | undefined;
1863
+ } | undefined;
1864
+ topMaterialPreset?: string | undefined;
1865
+ edgeMaterial?: {
1866
+ id?: string | undefined;
1867
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1868
+ properties?: {
1869
+ color: string;
1870
+ roughness: number;
1871
+ metalness: number;
1872
+ opacity: number;
1873
+ transparent: boolean;
1874
+ side: "back" | "double" | "front";
1875
+ } | undefined;
1876
+ texture?: {
1877
+ url: string;
1878
+ repeat?: [number, number] | undefined;
1879
+ scale?: number | undefined;
1880
+ offset?: [number, number] | undefined;
1881
+ normalMap?: string | undefined;
1882
+ normalScale?: number | undefined;
1883
+ bumpMap?: string | undefined;
1884
+ bumpScale?: number | undefined;
1885
+ } | undefined;
1886
+ } | undefined;
1887
+ edgeMaterialPreset?: string | undefined;
1888
+ wallMaterial?: {
1889
+ id?: string | undefined;
1890
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1891
+ properties?: {
1892
+ color: string;
1893
+ roughness: number;
1894
+ metalness: number;
1895
+ opacity: number;
1896
+ transparent: boolean;
1897
+ side: "back" | "double" | "front";
1898
+ } | undefined;
1899
+ texture?: {
1900
+ url: string;
1901
+ repeat?: [number, number] | undefined;
1902
+ scale?: number | undefined;
1903
+ offset?: [number, number] | undefined;
1904
+ normalMap?: string | undefined;
1905
+ normalScale?: number | undefined;
1906
+ bumpMap?: string | undefined;
1907
+ bumpScale?: number | undefined;
1908
+ } | undefined;
1909
+ } | undefined;
1910
+ wallMaterialPreset?: string | undefined;
1911
+ heelMaterial?: {
1912
+ id?: string | undefined;
1913
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1914
+ properties?: {
1915
+ color: string;
1916
+ roughness: number;
1917
+ metalness: number;
1918
+ opacity: number;
1919
+ transparent: boolean;
1920
+ side: "back" | "double" | "front";
1921
+ } | undefined;
1922
+ texture?: {
1923
+ url: string;
1924
+ repeat?: [number, number] | undefined;
1925
+ scale?: number | undefined;
1926
+ offset?: [number, number] | undefined;
1927
+ normalMap?: string | undefined;
1928
+ normalScale?: number | undefined;
1929
+ bumpMap?: string | undefined;
1930
+ bumpScale?: number | undefined;
1931
+ } | undefined;
1932
+ } | undefined;
1933
+ heelMaterialPreset?: string | undefined;
1934
+ position: [number, number, number];
1935
+ rotation: number;
1936
+ support: {
1937
+ kind: "level";
1938
+ } | {
1939
+ kind: "walls";
1940
+ } | {
1941
+ kind: "roof";
1942
+ roofSegmentId: `rseg_${string}`;
1943
+ localPosition: [number, number];
1944
+ curbHeight: number;
1945
+ };
1946
+ assembly?: {
1947
+ layers: {
1948
+ id: string;
1949
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1950
+ thickness: number;
1951
+ core?: true | undefined;
1952
+ spacing?: number | undefined;
1953
+ material?: string | undefined;
1954
+ slot?: string | undefined;
1955
+ returns?: boolean | undefined;
1956
+ display?: "construction" | "finished" | undefined;
1957
+ inset?: number | undefined;
1958
+ bottom?: number | undefined;
1959
+ lift?: number | undefined;
1960
+ src?: string | undefined;
1961
+ }[];
1962
+ backing?: {
1963
+ id: string;
1964
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1965
+ thickness: number;
1966
+ core?: true | undefined;
1967
+ spacing?: number | undefined;
1968
+ material?: string | undefined;
1969
+ slot?: string | undefined;
1970
+ returns?: boolean | undefined;
1971
+ display?: "construction" | "finished" | undefined;
1972
+ inset?: number | undefined;
1973
+ bottom?: number | undefined;
1974
+ lift?: number | undefined;
1975
+ src?: string | undefined;
1976
+ }[] | undefined;
1977
+ face?: "exterior" | "front" | undefined;
1978
+ presetId?: string | undefined;
1979
+ cavityInsulation?: string | undefined;
1980
+ } | undefined;
1981
+ slots?: Record<string, string> | undefined;
1982
+ children: `rseg_${string}`[];
1983
+ type: "roof";
1161
1984
  } | {
1162
1985
  object: "node";
1163
1986
  name?: string | undefined;
@@ -1182,7 +2005,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1182
2005
  fromIds: string[];
1183
2006
  } | undefined;
1184
2007
  } | undefined;
1185
- id: `window_${string}`;
2008
+ id: `slab_${string}`;
1186
2009
  material?: {
1187
2010
  id?: string | undefined;
1188
2011
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1198,10 +2021,66 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1198
2021
  url: string;
1199
2022
  repeat?: [number, number] | undefined;
1200
2023
  scale?: number | undefined;
2024
+ offset?: [number, number] | undefined;
2025
+ normalMap?: string | undefined;
2026
+ normalScale?: number | undefined;
2027
+ bumpMap?: string | undefined;
2028
+ bumpScale?: number | undefined;
1201
2029
  } | undefined;
1202
2030
  } | undefined;
2031
+ materialPreset?: string | undefined;
1203
2032
  slots?: Record<string, string> | undefined;
1204
- source?: {
2033
+ polygon: [number, number][];
2034
+ holes: [number, number][][];
2035
+ holeMetadata: {
2036
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
2037
+ openingId?: string | undefined;
2038
+ stairId?: string | undefined;
2039
+ elevatorId?: string | undefined;
2040
+ }[];
2041
+ elevation: number;
2042
+ floorHeight?: number | undefined;
2043
+ referenceFloorElevation?: number | undefined;
2044
+ foundation?: {
2045
+ type: "none" | "solid";
2046
+ material?: string | {
2047
+ id?: string | undefined;
2048
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2049
+ properties?: {
2050
+ color: string;
2051
+ roughness: number;
2052
+ metalness: number;
2053
+ opacity: number;
2054
+ transparent: boolean;
2055
+ side: "back" | "double" | "front";
2056
+ } | undefined;
2057
+ texture?: {
2058
+ url: string;
2059
+ repeat?: [number, number] | undefined;
2060
+ scale?: number | undefined;
2061
+ offset?: [number, number] | undefined;
2062
+ normalMap?: string | undefined;
2063
+ normalScale?: number | undefined;
2064
+ bumpMap?: string | undefined;
2065
+ bumpScale?: number | undefined;
2066
+ } | undefined;
2067
+ } | undefined;
2068
+ } | undefined;
2069
+ thickness: number;
2070
+ recessed: boolean;
2071
+ recessedRimElevation?: number | undefined;
2072
+ fillToTerrain?: boolean | undefined;
2073
+ boundary?: "auto" | undefined;
2074
+ support?: "open" | undefined;
2075
+ plateRole?: "base" | "platform" | "sunken" | undefined;
2076
+ railing?: {
2077
+ start: [number, number];
2078
+ end: [number, number];
2079
+ }[] | undefined;
2080
+ zoneIds?: string[] | undefined;
2081
+ associatedZoneIds?: string[] | undefined;
2082
+ autoFromWalls: boolean;
2083
+ surfaceScript?: {
1205
2084
  kind: "script";
1206
2085
  meta?: {
1207
2086
  description?: string | undefined;
@@ -1263,6 +2142,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1263
2142
  color: string;
1264
2143
  intensity: number;
1265
2144
  distance?: number | undefined;
2145
+ spot?: {
2146
+ direction: [number, number, number];
2147
+ angle: number;
2148
+ softness: number;
2149
+ } | undefined;
2150
+ shadows?: boolean | undefined;
2151
+ glow?: {
2152
+ size: number;
2153
+ strength: number;
2154
+ } | undefined;
1266
2155
  }[];
1267
2156
  undersides: {
1268
2157
  part?: string | undefined;
@@ -1277,216 +2166,36 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1277
2166
  host: "ceiling" | "mounted" | "slab" | "wall";
1278
2167
  polygon: number[][];
1279
2168
  minY: number;
1280
- maxY: number;
1281
- }[] | undefined;
1282
- cutout: boolean;
1283
- collider: boolean;
1284
- triangles: number;
1285
- coverage?: number | undefined;
1286
- uncovered?: {
1287
- min: [number, number];
1288
- max: [number, number];
1289
- }[] | undefined;
1290
- };
1291
- images?: {
1292
- artifact: string;
1293
- thumbnail: string;
1294
- floorPlan: string;
1295
- } | undefined;
1296
- } | undefined;
1297
- position: [number, number, number];
1298
- rotation: [number, number, number];
1299
- side?: "back" | "front" | undefined;
1300
- verticalAnchor?: "floor" | "wall" | undefined;
1301
- floorThresholdVersion: 0 | 1;
1302
- wallId?: string | undefined;
1303
- dormerId?: string | undefined;
1304
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1305
- roofSegmentId?: string | undefined;
1306
- roofFace?: "back" | "front" | "left" | "right" | undefined;
1307
- width: number;
1308
- height: number;
1309
- mark?: string | undefined;
1310
- constructionType: "framed" | "masonry";
1311
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1312
- roughOpeningWidth?: number | undefined;
1313
- roughOpeningHeight?: number | undefined;
1314
- masonryOpeningWidth?: number | undefined;
1315
- masonryOpeningHeight?: number | undefined;
1316
- finishOpeningWidth?: number | undefined;
1317
- finishOpeningHeight?: number | undefined;
1318
- openingKind: "opening" | "window";
1319
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding";
1320
- operationState: number;
1321
- awningDirection: "down" | "up";
1322
- casementStyle: "french" | "single";
1323
- hingesSide: "left" | "right";
1324
- openingShape: "arch" | "rectangle" | "rounded";
1325
- openingRadiusMode: "all" | "individual";
1326
- openingCornerRadii: [number, number, number, number];
1327
- cornerRadius: number;
1328
- archHeight: number;
1329
- openingRevealRadius: number;
1330
- frameThickness: number;
1331
- frameDepth: number;
1332
- columnRatios: number[];
1333
- rowRatios: number[];
1334
- columnDividerThickness: number;
1335
- rowDividerThickness: number;
1336
- corner?: {
1337
- end: "end" | "start";
1338
- partnerId: string;
1339
- post: "none" | "post";
1340
- } | undefined;
1341
- sill: boolean;
1342
- sillDepth: number;
1343
- sillThickness: number;
1344
- type: "window";
1345
- } | {
1346
- object: "node";
1347
- name?: string | undefined;
1348
- parentId: string | null;
1349
- visible: boolean;
1350
- camera?: {
1351
- position: [number, number, number];
1352
- target: [number, number, number];
1353
- mode: "orthographic" | "perspective";
1354
- fov?: number | undefined;
1355
- zoom?: number | undefined;
1356
- } | undefined;
1357
- metadata: Record<string, unknown>;
1358
- provenance?: {
1359
- refs: {
1360
- ns?: string | undefined;
1361
- id: string;
1362
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1363
- }[];
1364
- lineage?: {
1365
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1366
- fromIds: string[];
1367
- } | undefined;
1368
- } | undefined;
1369
- id: `roof_${string}`;
1370
- material?: {
1371
- id?: string | undefined;
1372
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1373
- properties?: {
1374
- color: string;
1375
- roughness: number;
1376
- metalness: number;
1377
- opacity: number;
1378
- transparent: boolean;
1379
- side: "back" | "double" | "front";
1380
- } | undefined;
1381
- texture?: {
1382
- url: string;
1383
- repeat?: [number, number] | undefined;
1384
- scale?: number | undefined;
1385
- } | undefined;
1386
- } | undefined;
1387
- materialPreset?: string | undefined;
1388
- topMaterial?: {
1389
- id?: string | undefined;
1390
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1391
- properties?: {
1392
- color: string;
1393
- roughness: number;
1394
- metalness: number;
1395
- opacity: number;
1396
- transparent: boolean;
1397
- side: "back" | "double" | "front";
1398
- } | undefined;
1399
- texture?: {
1400
- url: string;
1401
- repeat?: [number, number] | undefined;
1402
- scale?: number | undefined;
1403
- } | undefined;
1404
- } | undefined;
1405
- topMaterialPreset?: string | undefined;
1406
- edgeMaterial?: {
1407
- id?: string | undefined;
1408
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1409
- properties?: {
1410
- color: string;
1411
- roughness: number;
1412
- metalness: number;
1413
- opacity: number;
1414
- transparent: boolean;
1415
- side: "back" | "double" | "front";
1416
- } | undefined;
1417
- texture?: {
1418
- url: string;
1419
- repeat?: [number, number] | undefined;
1420
- scale?: number | undefined;
1421
- } | undefined;
1422
- } | undefined;
1423
- edgeMaterialPreset?: string | undefined;
1424
- wallMaterial?: {
1425
- id?: string | undefined;
1426
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1427
- properties?: {
1428
- color: string;
1429
- roughness: number;
1430
- metalness: number;
1431
- opacity: number;
1432
- transparent: boolean;
1433
- side: "back" | "double" | "front";
1434
- } | undefined;
1435
- texture?: {
1436
- url: string;
1437
- repeat?: [number, number] | undefined;
1438
- scale?: number | undefined;
2169
+ maxY: number;
2170
+ }[] | undefined;
2171
+ cutout: boolean;
2172
+ collider: boolean;
2173
+ shape?: {
2174
+ tolerance: number;
2175
+ bands: {
2176
+ y0: number;
2177
+ y1: number;
2178
+ polygons: {
2179
+ outer: [number, number][];
2180
+ holes?: [number, number][][] | undefined;
2181
+ }[];
2182
+ }[];
2183
+ } | undefined;
2184
+ triangles: number;
2185
+ coverage?: number | undefined;
2186
+ uncovered?: {
2187
+ min: [number, number];
2188
+ max: [number, number];
2189
+ }[] | undefined;
2190
+ };
2191
+ images?: {
2192
+ artifact: string;
2193
+ thumbnail: string;
2194
+ floorPlan: string;
1439
2195
  } | undefined;
2196
+ inputs: string;
1440
2197
  } | undefined;
1441
- wallMaterialPreset?: string | undefined;
1442
- position: [number, number, number];
1443
- rotation: number;
1444
- support: {
1445
- kind: "level";
1446
- } | {
1447
- kind: "walls";
1448
- } | {
1449
- kind: "roof";
1450
- roofSegmentId: `rseg_${string}`;
1451
- localPosition: [number, number];
1452
- curbHeight: number;
1453
- };
1454
- assembly?: {
1455
- layers: {
1456
- id: string;
1457
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1458
- thickness: number;
1459
- core?: true | undefined;
1460
- material?: string | undefined;
1461
- slot?: string | undefined;
1462
- returns?: boolean | undefined;
1463
- display?: "construction" | "finished" | undefined;
1464
- inset?: number | undefined;
1465
- bottom?: number | undefined;
1466
- lift?: number | undefined;
1467
- src?: string | undefined;
1468
- }[];
1469
- backing?: {
1470
- id: string;
1471
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1472
- thickness: number;
1473
- core?: true | undefined;
1474
- material?: string | undefined;
1475
- slot?: string | undefined;
1476
- returns?: boolean | undefined;
1477
- display?: "construction" | "finished" | undefined;
1478
- inset?: number | undefined;
1479
- bottom?: number | undefined;
1480
- lift?: number | undefined;
1481
- src?: string | undefined;
1482
- }[] | undefined;
1483
- face?: "exterior" | "front" | undefined;
1484
- presetId?: string | undefined;
1485
- cavityInsulation?: string | undefined;
1486
- } | undefined;
1487
- slots?: Record<string, string> | undefined;
1488
- children: `rseg_${string}`[];
1489
- type: "roof";
2198
+ type: "slab";
1490
2199
  } | {
1491
2200
  object: "node";
1492
2201
  name?: string | undefined;
@@ -1612,7 +2321,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1612
2321
  } | undefined;
1613
2322
  } | undefined;
1614
2323
  id: `wall_${string}`;
1615
- wallType?: "curtain" | "standard" | undefined;
2324
+ wallType?: "curtain" | "railing" | "standard" | undefined;
1616
2325
  curtainWall?: {
1617
2326
  construction: "stick" | "unitized";
1618
2327
  framing: "capped" | "horizontal-caps" | "structural-glazing" | "vertical-caps";
@@ -1646,6 +2355,15 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1646
2355
  type: "empty" | "glass" | "solid";
1647
2356
  }[];
1648
2357
  } | undefined;
2358
+ railing?: {
2359
+ style: "balusters" | "boards" | "cable" | "glass" | "metal" | "post-and-rail";
2360
+ postSpacing: number;
2361
+ postSize: number;
2362
+ infillSize: number;
2363
+ infillGap: number;
2364
+ bottomClearance: number;
2365
+ cap: boolean;
2366
+ } | undefined;
1649
2367
  children: (`door_${string}` | `item_${string}` | `leanto_${string}` | `procedural-item_${string}` | `window_${string}`)[];
1650
2368
  material?: {
1651
2369
  id?: string | undefined;
@@ -1662,6 +2380,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1662
2380
  url: string;
1663
2381
  repeat?: [number, number] | undefined;
1664
2382
  scale?: number | undefined;
2383
+ offset?: [number, number] | undefined;
2384
+ normalMap?: string | undefined;
2385
+ normalScale?: number | undefined;
2386
+ bumpMap?: string | undefined;
2387
+ bumpScale?: number | undefined;
1665
2388
  } | undefined;
1666
2389
  } | undefined;
1667
2390
  materialPreset?: string | undefined;
@@ -1680,6 +2403,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1680
2403
  url: string;
1681
2404
  repeat?: [number, number] | undefined;
1682
2405
  scale?: number | undefined;
2406
+ offset?: [number, number] | undefined;
2407
+ normalMap?: string | undefined;
2408
+ normalScale?: number | undefined;
2409
+ bumpMap?: string | undefined;
2410
+ bumpScale?: number | undefined;
1683
2411
  } | undefined;
1684
2412
  } | undefined;
1685
2413
  interiorMaterialPreset?: string | undefined;
@@ -1698,6 +2426,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1698
2426
  url: string;
1699
2427
  repeat?: [number, number] | undefined;
1700
2428
  scale?: number | undefined;
2429
+ offset?: [number, number] | undefined;
2430
+ normalMap?: string | undefined;
2431
+ normalScale?: number | undefined;
2432
+ bumpMap?: string | undefined;
2433
+ bumpScale?: number | undefined;
1701
2434
  } | undefined;
1702
2435
  } | undefined;
1703
2436
  exteriorMaterialPreset?: string | undefined;
@@ -1719,6 +2452,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1719
2452
  url: string;
1720
2453
  repeat?: [number, number] | undefined;
1721
2454
  scale?: number | undefined;
2455
+ offset?: [number, number] | undefined;
2456
+ normalMap?: string | undefined;
2457
+ normalScale?: number | undefined;
2458
+ bumpMap?: string | undefined;
2459
+ bumpScale?: number | undefined;
1722
2460
  } | undefined;
1723
2461
  } | undefined;
1724
2462
  materialPreset?: string | undefined;
@@ -1739,6 +2477,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1739
2477
  url: string;
1740
2478
  repeat?: [number, number] | undefined;
1741
2479
  scale?: number | undefined;
2480
+ offset?: [number, number] | undefined;
2481
+ normalMap?: string | undefined;
2482
+ normalScale?: number | undefined;
2483
+ bumpMap?: string | undefined;
2484
+ bumpScale?: number | undefined;
1742
2485
  } | undefined;
1743
2486
  } | undefined;
1744
2487
  materialPreset?: string | undefined;
@@ -1760,6 +2503,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1760
2503
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1761
2504
  thickness: number;
1762
2505
  core?: true | undefined;
2506
+ spacing?: number | undefined;
1763
2507
  material?: string | undefined;
1764
2508
  slot?: string | undefined;
1765
2509
  returns?: boolean | undefined;
@@ -1774,6 +2518,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1774
2518
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1775
2519
  thickness: number;
1776
2520
  core?: true | undefined;
2521
+ spacing?: number | undefined;
1777
2522
  material?: string | undefined;
1778
2523
  slot?: string | undefined;
1779
2524
  returns?: boolean | undefined;
@@ -1891,6 +2636,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1891
2636
  color: string;
1892
2637
  intensity: number;
1893
2638
  distance?: number | undefined;
2639
+ spot?: {
2640
+ direction: [number, number, number];
2641
+ angle: number;
2642
+ softness: number;
2643
+ } | undefined;
2644
+ shadows?: boolean | undefined;
2645
+ glow?: {
2646
+ size: number;
2647
+ strength: number;
2648
+ } | undefined;
1894
2649
  }[];
1895
2650
  undersides: {
1896
2651
  part?: string | undefined;
@@ -1909,6 +2664,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1909
2664
  }[] | undefined;
1910
2665
  cutout: boolean;
1911
2666
  collider: boolean;
2667
+ shape?: {
2668
+ tolerance: number;
2669
+ bands: {
2670
+ y0: number;
2671
+ y1: number;
2672
+ polygons: {
2673
+ outer: [number, number][];
2674
+ holes?: [number, number][][] | undefined;
2675
+ }[];
2676
+ }[];
2677
+ } | undefined;
1912
2678
  triangles: number;
1913
2679
  coverage?: number | undefined;
1914
2680
  uncovered?: {
@@ -1986,6 +2752,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
1986
2752
  color: string;
1987
2753
  intensity: number;
1988
2754
  distance?: number | undefined;
2755
+ spot?: {
2756
+ direction: [number, number, number];
2757
+ angle: number;
2758
+ softness: number;
2759
+ } | undefined;
2760
+ shadows?: boolean | undefined;
2761
+ glow?: {
2762
+ size: number;
2763
+ strength: number;
2764
+ } | undefined;
1989
2765
  }[];
1990
2766
  undersides: {
1991
2767
  part?: string | undefined;
@@ -2004,6 +2780,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2004
2780
  }[] | undefined;
2005
2781
  cutout: boolean;
2006
2782
  collider: boolean;
2783
+ shape?: {
2784
+ tolerance: number;
2785
+ bands: {
2786
+ y0: number;
2787
+ y1: number;
2788
+ polygons: {
2789
+ outer: [number, number][];
2790
+ holes?: [number, number][][] | undefined;
2791
+ }[];
2792
+ }[];
2793
+ } | undefined;
2007
2794
  triangles: number;
2008
2795
  coverage?: number | undefined;
2009
2796
  uncovered?: {
@@ -2130,6 +2917,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2130
2917
  url: string;
2131
2918
  repeat?: [number, number] | undefined;
2132
2919
  scale?: number | undefined;
2920
+ offset?: [number, number] | undefined;
2921
+ normalMap?: string | undefined;
2922
+ normalScale?: number | undefined;
2923
+ bumpMap?: string | undefined;
2924
+ bumpScale?: number | undefined;
2133
2925
  } | undefined;
2134
2926
  } | undefined;
2135
2927
  materialPreset?: string | undefined;
@@ -2202,42 +2994,65 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2202
2994
  fromIds: string[];
2203
2995
  } | undefined;
2204
2996
  } | undefined;
2205
- id: `construction-dimension_${string}`;
2206
- anchors: ({
2207
- kind: "feature";
2208
- reference: {
2209
- nodeId: string;
2210
- featureId: string;
2211
- parameters?: Record<string, string | number | boolean> | undefined;
2212
- };
2213
- fallback: [number, number, number];
2214
- } | [number, number, number])[];
2215
- baseline: {
2216
- origin: [number, number];
2217
- direction: [number, number];
2997
+ id: `beam_${string}`;
2998
+ start: [number, number];
2999
+ end: [number, number];
3000
+ width: number;
3001
+ depth: number;
3002
+ size?: string | undefined;
3003
+ plies: number;
3004
+ material: "glulam" | "lvl" | "pressure-treated" | "sawn" | "steel";
3005
+ placement: "dropped" | "flush";
3006
+ topElevation?: number | undefined;
3007
+ supportSlabId?: string | undefined;
3008
+ type: "beam";
3009
+ } | {
3010
+ object: "node";
3011
+ name?: string | undefined;
3012
+ parentId: string | null;
3013
+ visible: boolean;
3014
+ camera?: {
3015
+ position: [number, number, number];
3016
+ target: [number, number, number];
3017
+ mode: "orthographic" | "perspective";
3018
+ fov?: number | undefined;
3019
+ zoom?: number | undefined;
3020
+ } | undefined;
3021
+ metadata: Record<string, unknown>;
3022
+ provenance?: {
3023
+ refs: {
3024
+ ns?: string | undefined;
3025
+ id: string;
3026
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3027
+ }[];
3028
+ lineage?: {
3029
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3030
+ fromIds: string[];
3031
+ } | undefined;
3032
+ } | undefined;
3033
+ id: `block_${string}`;
3034
+ children: string[];
3035
+ position: [number, number, number];
3036
+ rotation: number;
3037
+ supportSlabId?: string | undefined;
3038
+ topology: {
3039
+ vertices: {
3040
+ id: string;
3041
+ position: [number, number, number];
3042
+ }[];
3043
+ edges: {
3044
+ id: string;
3045
+ vertexIds: [string, string];
3046
+ }[];
3047
+ faces: {
3048
+ id: string;
3049
+ vertexIds: string[];
3050
+ materialSlot: string;
3051
+ }[];
2218
3052
  };
2219
- chainMode: "continuous" | "point-to-point";
2220
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2221
- featureCount: number;
2222
- showCenterMark: boolean;
2223
- prefix: string;
2224
- suffix: string;
2225
- textOverride: string | null;
2226
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2227
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2228
- textPosition: "above" | "centered";
2229
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2230
- metricNotation: "meters" | "millimeters";
2231
- extensionStartGap: number;
2232
- extensionOvershoot: number;
2233
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2234
- drawingOverrides: {
2235
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2236
- presentation: "controlled" | "omit" | "shown";
2237
- suppressedSegmentIndexes: number[];
2238
- }[];
2239
- controllingDimensionId: `construction-dimension_${string}` | null;
2240
- type: "construction-dimension";
3053
+ slots: Record<string, string>;
3054
+ slotNames: Record<string, string>;
3055
+ type: "block";
2241
3056
  } | {
2242
3057
  object: "node";
2243
3058
  name?: string | undefined;
@@ -2614,6 +3429,16 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2614
3429
  color: string;
2615
3430
  intensity: number;
2616
3431
  distance?: number | undefined;
3432
+ spot?: {
3433
+ direction: [number, number, number];
3434
+ angle: number;
3435
+ softness: number;
3436
+ } | undefined;
3437
+ shadows?: boolean | undefined;
3438
+ glow?: {
3439
+ size: number;
3440
+ strength: number;
3441
+ } | undefined;
2617
3442
  }[];
2618
3443
  undersides: {
2619
3444
  part?: string | undefined;
@@ -2632,6 +3457,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2632
3457
  }[] | undefined;
2633
3458
  cutout: boolean;
2634
3459
  collider: boolean;
3460
+ shape?: {
3461
+ tolerance: number;
3462
+ bands: {
3463
+ y0: number;
3464
+ y1: number;
3465
+ polygons: {
3466
+ outer: [number, number][];
3467
+ holes?: [number, number][][] | undefined;
3468
+ }[];
3469
+ }[];
3470
+ } | undefined;
2635
3471
  triangles: number;
2636
3472
  coverage?: number | undefined;
2637
3473
  uncovered?: {
@@ -2646,105 +3482,54 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2646
3482
  } | undefined;
2647
3483
  inputs: string;
2648
3484
  } | undefined;
3485
+ drop?: number | undefined;
2649
3486
  } | undefined;
2650
- ceiling?: {
2651
- regions?: {
2652
- id: string;
2653
- polygon: [number, number][];
2654
- finish: string | Record<string, unknown>;
2655
- }[] | undefined;
2656
- } | undefined;
2657
- floorStepFinish?: string | undefined;
2658
- floorStepOverrides?: {
2659
- key: string;
2660
- step?: number | undefined;
2661
- finish: string;
2662
- }[] | undefined;
2663
- floorEdgeFinish?: string | undefined;
2664
- wallMaterial?: string | undefined;
2665
- wallOverrides?: {
2666
- wallId: string;
2667
- face: "a" | "b";
2668
- finish: string;
2669
- }[] | undefined;
2670
- hasFloor?: false | undefined;
2671
- hasCeiling?: false | undefined;
2672
- spaceRole: "generic" | "room";
2673
- roomNumber: string;
2674
- enclosureStatus: "auto" | "enclosed" | "open";
2675
- floorFinish: string;
2676
- wallFinish: string;
2677
- ceilingFinish: string;
2678
- ceilingHeight: number;
2679
- occupancy: string;
2680
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
2681
- color: string;
2682
- metadata: Record<string, unknown>;
2683
- type: "zone";
2684
- } | {
2685
- object: "node";
2686
- name?: string | undefined;
2687
- parentId: string | null;
2688
- visible: boolean;
2689
- camera?: {
2690
- position: [number, number, number];
2691
- target: [number, number, number];
2692
- mode: "orthographic" | "perspective";
2693
- fov?: number | undefined;
2694
- zoom?: number | undefined;
2695
- } | undefined;
2696
- metadata: Record<string, unknown>;
2697
- provenance?: {
2698
- refs: {
2699
- ns?: string | undefined;
2700
- id: string;
2701
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2702
- }[];
2703
- lineage?: {
2704
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2705
- fromIds: string[];
2706
- } | undefined;
3487
+ roomType?: "deck" | "patio" | "porch" | undefined;
3488
+ porchFraming?: {
3489
+ auto?: boolean | undefined;
3490
+ postSize?: string | undefined;
3491
+ postSpacing?: number | undefined;
3492
+ beamSize?: string | undefined;
2707
3493
  } | undefined;
2708
- id: `ceiling_${string}`;
2709
- children: (`item_${string}` | `procedural-item_${string}`)[];
2710
- material?: {
2711
- id?: string | undefined;
2712
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2713
- properties?: {
2714
- color: string;
2715
- roughness: number;
2716
- metalness: number;
2717
- opacity: number;
2718
- transparent: boolean;
2719
- side: "back" | "double" | "front";
2720
- } | undefined;
2721
- texture?: {
2722
- url: string;
2723
- repeat?: [number, number] | undefined;
2724
- scale?: number | undefined;
2725
- } | undefined;
3494
+ decking?: {
3495
+ boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
3496
+ gap?: number | undefined;
3497
+ direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
2726
3498
  } | undefined;
2727
- materialPreset?: string | undefined;
2728
- slots?: Record<string, string> | undefined;
2729
- polygon: [number, number][];
2730
- holes: [number, number][][];
2731
- holeMetadata: {
2732
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
2733
- openingId?: string | undefined;
2734
- stairId?: string | undefined;
2735
- elevatorId?: string | undefined;
2736
- }[];
2737
- openingIds?: string[] | undefined;
2738
- height?: number | undefined;
2739
- regions?: {
2740
- id: string;
2741
- polygon: [number, number][];
2742
- finish: string | Record<string, unknown>;
3499
+ ceiling?: {
3500
+ regions?: {
3501
+ id: string;
3502
+ polygon: [number, number][];
3503
+ finish: string | Record<string, unknown>;
3504
+ }[] | undefined;
3505
+ } | undefined;
3506
+ floorStepFinish?: string | undefined;
3507
+ floorStepOverrides?: {
3508
+ key: string;
3509
+ step?: number | undefined;
3510
+ finish: string;
2743
3511
  }[] | undefined;
2744
- boundary?: "auto" | undefined;
2745
- zoneId?: string | undefined;
2746
- autoFromWalls: boolean;
2747
- type: "ceiling";
3512
+ floorEdgeFinish?: string | undefined;
3513
+ wallMaterial?: string | undefined;
3514
+ wallOverrides?: {
3515
+ wallId: string;
3516
+ face: "a" | "b";
3517
+ finish: string;
3518
+ }[] | undefined;
3519
+ hasFloor?: false | undefined;
3520
+ hasCeiling?: false | undefined;
3521
+ spaceRole: "generic" | "room";
3522
+ roomNumber: string;
3523
+ enclosureStatus: "auto" | "enclosed" | "open";
3524
+ floorFinish: string;
3525
+ wallFinish: string;
3526
+ ceilingFinish: string;
3527
+ ceilingHeight: number;
3528
+ occupancy: string;
3529
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3530
+ color: string;
3531
+ metadata: Record<string, unknown>;
3532
+ type: "zone";
2748
3533
  } | {
2749
3534
  object: "node";
2750
3535
  name?: string | undefined;
@@ -2785,6 +3570,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2785
3570
  url: string;
2786
3571
  repeat?: [number, number] | undefined;
2787
3572
  scale?: number | undefined;
3573
+ offset?: [number, number] | undefined;
3574
+ normalMap?: string | undefined;
3575
+ normalScale?: number | undefined;
3576
+ bumpMap?: string | undefined;
3577
+ bumpScale?: number | undefined;
2788
3578
  } | undefined;
2789
3579
  } | undefined;
2790
3580
  materialPreset?: string | undefined;
@@ -2857,6 +3647,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2857
3647
  url: string;
2858
3648
  repeat?: [number, number] | undefined;
2859
3649
  scale?: number | undefined;
3650
+ offset?: [number, number] | undefined;
3651
+ normalMap?: string | undefined;
3652
+ normalScale?: number | undefined;
3653
+ bumpMap?: string | undefined;
3654
+ bumpScale?: number | undefined;
2860
3655
  } | undefined;
2861
3656
  } | undefined;
2862
3657
  materialPreset?: string | undefined;
@@ -2875,6 +3670,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2875
3670
  url: string;
2876
3671
  repeat?: [number, number] | undefined;
2877
3672
  scale?: number | undefined;
3673
+ offset?: [number, number] | undefined;
3674
+ normalMap?: string | undefined;
3675
+ normalScale?: number | undefined;
3676
+ bumpMap?: string | undefined;
3677
+ bumpScale?: number | undefined;
2878
3678
  } | undefined;
2879
3679
  } | undefined;
2880
3680
  railingMaterialPreset?: string | undefined;
@@ -2893,6 +3693,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2893
3693
  url: string;
2894
3694
  repeat?: [number, number] | undefined;
2895
3695
  scale?: number | undefined;
3696
+ offset?: [number, number] | undefined;
3697
+ normalMap?: string | undefined;
3698
+ normalScale?: number | undefined;
3699
+ bumpMap?: string | undefined;
3700
+ bumpScale?: number | undefined;
2896
3701
  } | undefined;
2897
3702
  } | undefined;
2898
3703
  treadMaterialPreset?: string | undefined;
@@ -2911,6 +3716,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2911
3716
  url: string;
2912
3717
  repeat?: [number, number] | undefined;
2913
3718
  scale?: number | undefined;
3719
+ offset?: [number, number] | undefined;
3720
+ normalMap?: string | undefined;
3721
+ normalScale?: number | undefined;
3722
+ bumpMap?: string | undefined;
3723
+ bumpScale?: number | undefined;
2914
3724
  } | undefined;
2915
3725
  } | undefined;
2916
3726
  sideMaterialPreset?: string | undefined;
@@ -2949,6 +3759,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
2949
3759
  stringerWidth: number;
2950
3760
  stringerDepth: number;
2951
3761
  } | undefined;
3762
+ structure?: {
3763
+ type: "concrete" | "steel-stringers" | "wood-stringers";
3764
+ stringerStock: "2x10" | "2x12";
3765
+ stringerType: "cut" | "housed";
3766
+ stringerSpacing: number;
3767
+ stringerCount?: number | undefined;
3768
+ treadStock?: "2x12" | "2x6-pair" | "5/4x6-pair" | "plywood-finish" | undefined;
3769
+ closedRisers?: boolean | undefined;
3770
+ treated?: boolean | undefined;
3771
+ nosing?: number | undefined;
3772
+ } | undefined;
2952
3773
  innerRadius: number;
2953
3774
  sweepAngle: number;
2954
3775
  topLandingMode: "integrated" | "none";
@@ -3054,6 +3875,8 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3054
3875
  realLengthMeters: number;
3055
3876
  measuredLengthUnits: number;
3056
3877
  metersPerUnit: number;
3878
+ displayLength?: number | undefined;
3879
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
3057
3880
  label: string;
3058
3881
  } | null;
3059
3882
  type: "guide";
@@ -3248,6 +4071,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3248
4071
  url: string;
3249
4072
  repeat?: [number, number] | undefined;
3250
4073
  scale?: number | undefined;
4074
+ offset?: [number, number] | undefined;
4075
+ normalMap?: string | undefined;
4076
+ normalScale?: number | undefined;
4077
+ bumpMap?: string | undefined;
4078
+ bumpScale?: number | undefined;
3251
4079
  } | undefined;
3252
4080
  } | undefined;
3253
4081
  materialPreset?: string | undefined;
@@ -3331,123 +4159,29 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3331
4159
  fromIds: string[];
3332
4160
  } | undefined;
3333
4161
  } | undefined;
3334
- id: `duct-terminal_${string}`;
4162
+ id: `duct-fitting_${string}`;
3335
4163
  position: [number, number, number];
3336
- rotation: number;
3337
- supportSlabId?: string | undefined;
3338
- terminalType: "diffuser" | "return-grille" | "supply-register";
3339
- mount: "ceiling" | "floor" | "wall";
4164
+ rotation: [number, number, number];
4165
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4166
+ shape: "oval" | "rect" | "round";
4167
+ inletShape?: "oval" | "rect" | "round" | undefined;
4168
+ outletShape?: "oval" | "rect" | "round" | undefined;
3340
4169
  width: number;
3341
- depth: number;
3342
- collarShape: "oval" | "rect" | "round";
3343
- collarDiameter: number;
3344
- collarWidth: number;
3345
- collarHeight: number;
3346
- type: "duct-terminal";
3347
- } | {
3348
- object: "node";
3349
- name?: string | undefined;
3350
- parentId: string | null;
3351
- visible: boolean;
3352
- camera?: {
3353
- position: [number, number, number];
3354
- target: [number, number, number];
3355
- mode: "orthographic" | "perspective";
3356
- fov?: number | undefined;
3357
- zoom?: number | undefined;
3358
- } | undefined;
3359
- metadata: Record<string, unknown>;
3360
- provenance?: {
3361
- refs: {
3362
- ns?: string | undefined;
3363
- id: string;
3364
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3365
- }[];
3366
- lineage?: {
3367
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3368
- fromIds: string[];
3369
- } | undefined;
3370
- } | undefined;
3371
- id: `lineset_${string}`;
3372
- path: [number, number, number][];
3373
- suctionDiameter: number;
3374
- liquidDiameter: number;
3375
- insulated: boolean;
3376
- type: "lineset";
3377
- } | {
3378
- object: "node";
3379
- name?: string | undefined;
3380
- parentId: string | null;
3381
- visible: boolean;
3382
- camera?: {
3383
- position: [number, number, number];
3384
- target: [number, number, number];
3385
- mode: "orthographic" | "perspective";
3386
- fov?: number | undefined;
3387
- zoom?: number | undefined;
3388
- } | undefined;
3389
- metadata: Record<string, unknown>;
3390
- provenance?: {
3391
- refs: {
3392
- ns?: string | undefined;
3393
- id: string;
3394
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3395
- }[];
3396
- lineage?: {
3397
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3398
- fromIds: string[];
3399
- } | undefined;
3400
- } | undefined;
3401
- id: `liquid-line_${string}`;
3402
- path: [number, number, number][];
3403
- diameter: number;
3404
- type: "liquid-line";
3405
- } | {
3406
- object: "node";
3407
- name?: string | undefined;
3408
- parentId: string | null;
3409
- visible: boolean;
3410
- camera?: {
3411
- position: [number, number, number];
3412
- target: [number, number, number];
3413
- mode: "orthographic" | "perspective";
3414
- fov?: number | undefined;
3415
- zoom?: number | undefined;
3416
- } | undefined;
3417
- metadata: Record<string, unknown>;
3418
- provenance?: {
3419
- refs: {
3420
- ns?: string | undefined;
3421
- id: string;
3422
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3423
- }[];
3424
- lineage?: {
3425
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3426
- fromIds: string[];
3427
- } | undefined;
3428
- } | undefined;
3429
- id: `pipe-segment_${string}`;
3430
- path: [number, number, number][];
3431
- autoHangers?: boolean | undefined;
3432
- hangerOverrides?: Record<string, {
3433
- fraction?: number | undefined;
3434
- skipped?: boolean | undefined;
3435
- hostId?: string | undefined;
3436
- }> | undefined;
3437
- hangerStyle?: "double" | "single" | undefined;
3438
- hangerSpacing?: number | undefined;
3439
- hangerMaxReach?: number | undefined;
3440
- wallAttachment?: {
3441
- wallId: `wall_${string}`;
3442
- side: "back" | "front";
3443
- startUV: [number, number];
3444
- endUV: [number, number];
3445
- offset: number;
3446
- } | undefined;
4170
+ height: number;
4171
+ shape2: "oval" | "rect" | "round";
4172
+ width2: number;
4173
+ height2: number;
4174
+ angle: number;
4175
+ branchAngle: number;
3447
4176
  diameter: number;
3448
- pipeMaterial: "abs" | "cast-iron" | "pvc";
3449
- system: "vent" | "waste";
3450
- type: "pipe-segment";
4177
+ diameter2: number;
4178
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
4179
+ system: "return" | "supply";
4180
+ damperAngle: number;
4181
+ panelWidth: number;
4182
+ panelHeight: number;
4183
+ slots?: Record<string, string> | undefined;
4184
+ type: "duct-fitting";
3451
4185
  } | {
3452
4186
  object: "node";
3453
4187
  name?: string | undefined;
@@ -3472,13 +4206,19 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3472
4206
  fromIds: string[];
3473
4207
  } | undefined;
3474
4208
  } | undefined;
3475
- id: `pipe-trap_${string}`;
4209
+ id: `duct-terminal_${string}`;
3476
4210
  position: [number, number, number];
3477
4211
  rotation: number;
3478
- diameter: number;
3479
- pipeMaterial: "abs" | "cast-iron" | "pvc";
3480
- armLengthM: number;
3481
- type: "pipe-trap";
4212
+ supportSlabId?: string | undefined;
4213
+ terminalType: "diffuser" | "return-grille" | "supply-register";
4214
+ mount: "ceiling" | "floor" | "wall";
4215
+ width: number;
4216
+ depth: number;
4217
+ collarShape: "oval" | "rect" | "round";
4218
+ collarDiameter: number;
4219
+ collarWidth: number;
4220
+ collarHeight: number;
4221
+ type: "duct-terminal";
3482
4222
  } | {
3483
4223
  object: "node";
3484
4224
  name?: string | undefined;
@@ -3503,12 +4243,23 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3503
4243
  fromIds: string[];
3504
4244
  } | undefined;
3505
4245
  } | undefined;
3506
- id: `level_${string}`;
3507
- children: (`block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
3508
- level: number;
3509
- baseElevation: number;
3510
- height?: number | undefined;
3511
- type: "level";
4246
+ id: `hvac-equipment_${string}`;
4247
+ position: [number, number, number];
4248
+ rotation: number;
4249
+ supportSlabId?: string | undefined;
4250
+ equipmentType: "air-handler" | "condenser" | "furnace";
4251
+ width: number;
4252
+ depth: number;
4253
+ height: number;
4254
+ supplyShape: "oval" | "rect" | "round";
4255
+ returnShape: "oval" | "rect" | "round";
4256
+ supplyDiameter: number;
4257
+ returnDiameter: number;
4258
+ supplyWidth: number;
4259
+ supplyHeight: number;
4260
+ returnWidth: number;
4261
+ returnHeight: number;
4262
+ type: "hvac-equipment";
3512
4263
  } | {
3513
4264
  object: "node";
3514
4265
  name?: string | undefined;
@@ -3533,51 +4284,15 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3533
4284
  fromIds: string[];
3534
4285
  } | undefined;
3535
4286
  } | undefined;
3536
- id: `elevator_${string}`;
3537
- material?: {
3538
- id?: string | undefined;
3539
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3540
- properties?: {
3541
- color: string;
3542
- roughness: number;
3543
- metalness: number;
3544
- opacity: number;
3545
- transparent: boolean;
3546
- side: "back" | "double" | "front";
3547
- } | undefined;
3548
- texture?: {
3549
- url: string;
3550
- repeat?: [number, number] | undefined;
3551
- scale?: number | undefined;
3552
- } | undefined;
3553
- } | undefined;
3554
- materialPreset?: string | undefined;
3555
- slots?: Record<string, string> | undefined;
3556
- position: [number, number, number];
3557
- rotation: number;
3558
- width: number;
3559
- depth: number;
3560
- shaftWidth?: number | undefined;
3561
- shaftDepth?: number | undefined;
3562
- shaftWallThickness: number;
3563
- shaftStyle: "glass" | "solid";
3564
- cabHeight: number;
3565
- doorWidth: number;
3566
- doorHeight: number;
3567
- doorStyle: "center-opening" | "single-left" | "single-right";
3568
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
3569
- fromLevelId: string | null;
3570
- toLevelId: string | null;
3571
- servedLevelIds?: string[] | undefined;
3572
- disabledLevelIds: string[];
3573
- serviceOnlyLevelIds: string[];
3574
- defaultLevelId: string | null;
3575
- speed: number;
3576
- doorDurationMs: number;
3577
- dwellMs: number;
3578
- type: "elevator";
4287
+ id: `lineset_${string}`;
4288
+ path: [number, number, number][];
4289
+ suctionDiameter: number;
4290
+ liquidDiameter: number;
4291
+ insulated: boolean;
4292
+ type: "lineset";
3579
4293
  } | {
3580
4294
  object: "node";
4295
+ name?: string | undefined;
3581
4296
  parentId: string | null;
3582
4297
  visible: boolean;
3583
4298
  camera?: {
@@ -3587,6 +4302,7 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3587
4302
  fov?: number | undefined;
3588
4303
  zoom?: number | undefined;
3589
4304
  } | undefined;
4305
+ metadata: Record<string, unknown>;
3590
4306
  provenance?: {
3591
4307
  refs: {
3592
4308
  ns?: string | undefined;
@@ -3598,13 +4314,10 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3598
4314
  fromIds: string[];
3599
4315
  } | undefined;
3600
4316
  } | undefined;
3601
- id: `unit_${string}`;
3602
- name: string;
3603
- kind: "apartment" | "commercial" | "common" | "hotel-room";
3604
- members: `zone_${string}`[];
3605
- color: string;
3606
- metadata: Record<string, unknown>;
3607
- type: "unit";
4317
+ id: `liquid-line_${string}`;
4318
+ path: [number, number, number][];
4319
+ diameter: number;
4320
+ type: "liquid-line";
3608
4321
  } | {
3609
4322
  object: "node";
3610
4323
  name?: string | undefined;
@@ -3629,12 +4342,28 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3629
4342
  fromIds: string[];
3630
4343
  } | undefined;
3631
4344
  } | undefined;
3632
- id: `building_${string}`;
3633
- children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
3634
- position: [number, number, number];
3635
- rotation: [number, number, number];
3636
- groundLevelId?: `level_${string}` | undefined;
3637
- type: "building";
4345
+ id: `pipe-segment_${string}`;
4346
+ path: [number, number, number][];
4347
+ autoHangers?: boolean | undefined;
4348
+ hangerOverrides?: Record<string, {
4349
+ fraction?: number | undefined;
4350
+ skipped?: boolean | undefined;
4351
+ hostId?: string | undefined;
4352
+ }> | undefined;
4353
+ hangerStyle?: "double" | "single" | undefined;
4354
+ hangerSpacing?: number | undefined;
4355
+ hangerMaxReach?: number | undefined;
4356
+ wallAttachment?: {
4357
+ wallId: `wall_${string}`;
4358
+ side: "back" | "front";
4359
+ startUV: [number, number];
4360
+ endUV: [number, number];
4361
+ offset: number;
4362
+ } | undefined;
4363
+ diameter: number;
4364
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4365
+ system: "vent" | "waste";
4366
+ type: "pipe-segment";
3638
4367
  } | {
3639
4368
  object: "node";
3640
4369
  name?: string | undefined;
@@ -3659,106 +4388,17 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3659
4388
  fromIds: string[];
3660
4389
  } | undefined;
3661
4390
  } | undefined;
3662
- id: `dormer_${string}`;
3663
- material?: {
3664
- id?: string | undefined;
3665
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3666
- properties?: {
3667
- color: string;
3668
- roughness: number;
3669
- metalness: number;
3670
- opacity: number;
3671
- transparent: boolean;
3672
- side: "back" | "double" | "front";
3673
- } | undefined;
3674
- texture?: {
3675
- url: string;
3676
- repeat?: [number, number] | undefined;
3677
- scale?: number | undefined;
3678
- } | undefined;
3679
- } | undefined;
3680
- materialPreset?: string | undefined;
3681
- topMaterial?: {
3682
- id?: string | undefined;
3683
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3684
- properties?: {
3685
- color: string;
3686
- roughness: number;
3687
- metalness: number;
3688
- opacity: number;
3689
- transparent: boolean;
3690
- side: "back" | "double" | "front";
3691
- } | undefined;
3692
- texture?: {
3693
- url: string;
3694
- repeat?: [number, number] | undefined;
3695
- scale?: number | undefined;
3696
- } | undefined;
3697
- } | undefined;
3698
- topMaterialPreset?: string | undefined;
3699
- sideMaterial?: {
3700
- id?: string | undefined;
3701
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3702
- properties?: {
3703
- color: string;
3704
- roughness: number;
3705
- metalness: number;
3706
- opacity: number;
3707
- transparent: boolean;
3708
- side: "back" | "double" | "front";
3709
- } | undefined;
3710
- texture?: {
3711
- url: string;
3712
- repeat?: [number, number] | undefined;
3713
- scale?: number | undefined;
3714
- } | undefined;
3715
- } | undefined;
3716
- sideMaterialPreset?: string | undefined;
3717
- wallMaterial?: {
3718
- id?: string | undefined;
3719
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3720
- properties?: {
3721
- color: string;
3722
- roughness: number;
3723
- metalness: number;
3724
- opacity: number;
3725
- transparent: boolean;
3726
- side: "back" | "double" | "front";
3727
- } | undefined;
3728
- texture?: {
3729
- url: string;
3730
- repeat?: [number, number] | undefined;
3731
- scale?: number | undefined;
3732
- } | undefined;
3733
- } | undefined;
3734
- wallMaterialPreset?: string | undefined;
3735
- roofSegmentId?: string | undefined;
4391
+ id: `pipe-fitting_${string}`;
3736
4392
  position: [number, number, number];
3737
- rotation: number;
3738
- width: number;
3739
- depth: number;
3740
- height: number;
3741
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
3742
- roofHeight: number;
3743
- shedHighSide: "back" | "front";
3744
- wallSkirtHeight: number;
3745
- windowWidth: number;
3746
- windowHeight: number;
3747
- windowOffsetX: number;
3748
- windowOffsetY: number;
3749
- windowFrameThickness: number;
3750
- windowFrameDepth: number;
3751
- windowColumns: number;
3752
- windowRows: number;
3753
- windowDividerThickness: number;
3754
- windowShape: "arch" | "rectangle" | "rounded";
3755
- windowArchHeight: number;
3756
- windowCornerRadii: [number, number, number, number];
3757
- windowSill: boolean;
3758
- windowSillDepth: number;
3759
- windowSillThickness: number;
3760
- children: `window_${string}`[];
3761
- type: "dormer";
4393
+ rotation: [number, number, number];
4394
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4395
+ angle: number;
4396
+ diameter: number;
4397
+ diameter2: number;
4398
+ cleanoutStyle: "end" | "inline";
4399
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4400
+ system: "vent" | "waste";
4401
+ type: "pipe-fitting";
3762
4402
  } | {
3763
4403
  object: "node";
3764
4404
  name?: string | undefined;
@@ -3783,159 +4423,102 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
3783
4423
  fromIds: string[];
3784
4424
  } | undefined;
3785
4425
  } | undefined;
3786
- id: `site_${string}`;
3787
- polygon: {
3788
- type: "polygon";
3789
- points: [number, number][];
3790
- };
3791
- terrain?: {
3792
- type: "heightfield";
3793
- origin: [number, number];
3794
- spacing: number;
3795
- cols: number;
3796
- rows: number;
3797
- step: number;
3798
- heights: string;
3799
- } | undefined;
3800
- showGround?: boolean | undefined;
3801
- presentation?: {
3802
- theme?: string | undefined;
3803
- exposure?: number | undefined;
3804
- shading?: "rendered" | "solid" | undefined;
3805
- edges?: "off" | "soft" | "strong" | undefined;
3806
- shadows?: boolean | undefined;
3807
- lighting?: {
3808
- background?: string | undefined;
3809
- backgroundSky?: string | null | undefined;
3810
- ground?: string | undefined;
3811
- ambient?: {
3812
- color: string;
3813
- intensity: number;
3814
- } | undefined;
3815
- hemi?: {
3816
- sky: string;
3817
- ground: string;
3818
- intensity: number;
3819
- } | undefined;
3820
- lights?: {
3821
- color: string;
3822
- intensity: number;
3823
- position: [number, number, number];
3824
- target?: [number, number, number] | undefined;
3825
- castShadow?: boolean | undefined;
3826
- shadow?: {
3827
- intensity?: number | undefined;
3828
- bias?: number | undefined;
3829
- normalBias?: number | undefined;
3830
- radius?: number | undefined;
3831
- mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
3832
- camera?: {
3833
- left: number;
3834
- right: number;
3835
- top: number;
3836
- bottom: number;
3837
- near: number;
3838
- far: number;
3839
- } | undefined;
3840
- } | undefined;
3841
- }[] | undefined;
3842
- environment?: {
3843
- source: "gradient" | "none" | "room";
3844
- intensity: number;
3845
- } | undefined;
3846
- } | undefined;
3847
- postprocessing?: {
3848
- ambientOcclusion?: boolean | undefined;
3849
- colorGrading?: boolean | undefined;
3850
- } | undefined;
3851
- display?: {
3852
- mode?: "construction" | "finished" | "systems" | undefined;
3853
- families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
3854
- disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
3855
- xray?: boolean | undefined;
3856
- colorBy?: "material" | "service" | undefined;
3857
- } | undefined;
3858
- } | undefined;
3859
- address?: {
3860
- street?: string | undefined;
3861
- city?: string | undefined;
3862
- state?: string | undefined;
3863
- zip?: string | undefined;
3864
- } | undefined;
3865
- parcel?: {
3866
- apn?: string | undefined;
3867
- source?: string | undefined;
3868
- county?: string | undefined;
3869
- state?: string | undefined;
3870
- lotAreaSqFt?: number | undefined;
3871
- originLngLat?: [number, number] | undefined;
3872
- resolvedAt?: string | undefined;
3873
- layer?: string | undefined;
3874
- notes?: string[] | undefined;
3875
- } | undefined;
3876
- setbacks?: {
3877
- front: number;
3878
- side: number;
3879
- rear: number;
3880
- left?: number | undefined;
3881
- right?: number | undefined;
3882
- streetSide?: number | undefined;
4426
+ id: `pipe-trap_${string}`;
4427
+ position: [number, number, number];
4428
+ rotation: number;
4429
+ diameter: number;
4430
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4431
+ armLengthM: number;
4432
+ type: "pipe-trap";
4433
+ } | {
4434
+ object: "node";
4435
+ name?: string | undefined;
4436
+ parentId: string | null;
4437
+ visible: boolean;
4438
+ camera?: {
4439
+ position: [number, number, number];
4440
+ target: [number, number, number];
4441
+ mode: "orthographic" | "perspective";
4442
+ fov?: number | undefined;
4443
+ zoom?: number | undefined;
3883
4444
  } | undefined;
3884
- setbacksSource?: string | undefined;
3885
- zone?: string | undefined;
3886
- frontEdge?: number | undefined;
3887
- streetEdges?: number[] | undefined;
3888
- sightTriangleFt?: number | undefined;
3889
- northRotation?: number | undefined;
3890
- dossier?: {
3891
- [x: string]: unknown;
3892
- provider: string;
3893
- asOf: string;
3894
- point?: {
3895
- lat?: number | undefined;
3896
- lng?: number | undefined;
3897
- source?: string | undefined;
4445
+ metadata: Record<string, unknown>;
4446
+ provenance?: {
4447
+ refs: {
4448
+ ns?: string | undefined;
4449
+ id: string;
4450
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4451
+ }[];
4452
+ lineage?: {
4453
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4454
+ fromIds: string[];
3898
4455
  } | undefined;
3899
- address?: {
3900
- formatted?: string | undefined;
3901
- precision?: string | undefined;
4456
+ } | undefined;
4457
+ id: `level_${string}`;
4458
+ children: (`beam_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
4459
+ level: number;
4460
+ baseElevation: number;
4461
+ height?: number | undefined;
4462
+ type: "level";
4463
+ } | {
4464
+ object: "node";
4465
+ parentId: string | null;
4466
+ visible: boolean;
4467
+ camera?: {
4468
+ position: [number, number, number];
4469
+ target: [number, number, number];
4470
+ mode: "orthographic" | "perspective";
4471
+ fov?: number | undefined;
4472
+ zoom?: number | undefined;
4473
+ } | undefined;
4474
+ provenance?: {
4475
+ refs: {
4476
+ ns?: string | undefined;
4477
+ id: string;
4478
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4479
+ }[];
4480
+ lineage?: {
4481
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4482
+ fromIds: string[];
3902
4483
  } | undefined;
3903
- sections: Record<string, {
3904
- [x: string]: unknown;
3905
- status: string;
3906
- summary?: string | undefined;
3907
- reason?: string | undefined;
3908
- source?: {
3909
- name?: string | undefined;
3910
- kind?: string | undefined;
3911
- vintage?: string | undefined;
3912
- attribution?: string | undefined;
3913
- } | undefined;
3914
- }>;
3915
- parcel?: Record<string, unknown> | undefined;
3916
- flood?: Record<string, unknown> | undefined;
3917
- codeBasis?: Record<string, unknown> | undefined;
3918
- zoning?: Record<string, unknown> | undefined;
3919
- utilities?: Record<string, unknown> | undefined;
3920
- soils?: Record<string, unknown> | undefined;
3921
- wetlands?: Record<string, unknown> | undefined;
3922
- structures?: Record<string, unknown> | undefined;
3923
- elevation?: Record<string, unknown> | undefined;
3924
- boundaries?: Record<string, unknown> | undefined;
3925
4484
  } | undefined;
3926
- contourIntervalIn?: number | undefined;
3927
- contours3d?: boolean | undefined;
3928
- terrainContours?: {
3929
- datum: string;
3930
- intervalFt: number;
3931
- source?: string | undefined;
3932
- lines: {
3933
- elevationFt: number;
3934
- points: [number, number][];
4485
+ id: `unit_${string}`;
4486
+ name: string;
4487
+ kind: "apartment" | "commercial" | "common" | "hotel-room";
4488
+ members: `zone_${string}`[];
4489
+ color: string;
4490
+ metadata: Record<string, unknown>;
4491
+ type: "unit";
4492
+ } | {
4493
+ object: "node";
4494
+ name?: string | undefined;
4495
+ parentId: string | null;
4496
+ visible: boolean;
4497
+ camera?: {
4498
+ position: [number, number, number];
4499
+ target: [number, number, number];
4500
+ mode: "orthographic" | "perspective";
4501
+ fov?: number | undefined;
4502
+ zoom?: number | undefined;
4503
+ } | undefined;
4504
+ metadata: Record<string, unknown>;
4505
+ provenance?: {
4506
+ refs: {
4507
+ ns?: string | undefined;
4508
+ id: string;
4509
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3935
4510
  }[];
4511
+ lineage?: {
4512
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4513
+ fromIds: string[];
4514
+ } | undefined;
3936
4515
  } | undefined;
3937
- children: string[];
3938
- type: "site";
4516
+ id: `building_${string}`;
4517
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
4518
+ position: [number, number, number];
4519
+ rotation: [number, number, number];
4520
+ groundLevelId?: `level_${string}` | undefined;
4521
+ type: "building";
3939
4522
  } | {
3940
4523
  object: "node";
3941
4524
  name?: string | undefined;
@@ -4076,6 +4659,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4076
4659
  url: string;
4077
4660
  repeat?: [number, number] | undefined;
4078
4661
  scale?: number | undefined;
4662
+ offset?: [number, number] | undefined;
4663
+ normalMap?: string | undefined;
4664
+ normalScale?: number | undefined;
4665
+ bumpMap?: string | undefined;
4666
+ bumpScale?: number | undefined;
4079
4667
  } | undefined;
4080
4668
  } | undefined;
4081
4669
  materialPreset?: string | undefined;
@@ -4236,6 +4824,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4236
4824
  url: string;
4237
4825
  repeat?: [number, number] | undefined;
4238
4826
  scale?: number | undefined;
4827
+ offset?: [number, number] | undefined;
4828
+ normalMap?: string | undefined;
4829
+ normalScale?: number | undefined;
4830
+ bumpMap?: string | undefined;
4831
+ bumpScale?: number | undefined;
4239
4832
  } | undefined;
4240
4833
  } | undefined;
4241
4834
  materialPreset?: string | undefined;
@@ -4372,6 +4965,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4372
4965
  url: string;
4373
4966
  repeat?: [number, number] | undefined;
4374
4967
  scale?: number | undefined;
4968
+ offset?: [number, number] | undefined;
4969
+ normalMap?: string | undefined;
4970
+ normalScale?: number | undefined;
4971
+ bumpMap?: string | undefined;
4972
+ bumpScale?: number | undefined;
4375
4973
  } | undefined;
4376
4974
  } | undefined;
4377
4975
  slots?: Record<string, string> | undefined;
@@ -4432,6 +5030,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4432
5030
  url: string;
4433
5031
  repeat?: [number, number] | undefined;
4434
5032
  scale?: number | undefined;
5033
+ offset?: [number, number] | undefined;
5034
+ normalMap?: string | undefined;
5035
+ normalScale?: number | undefined;
5036
+ bumpMap?: string | undefined;
5037
+ bumpScale?: number | undefined;
4435
5038
  } | undefined;
4436
5039
  } | undefined;
4437
5040
  materialPreset?: string | undefined;
@@ -4484,6 +5087,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4484
5087
  url: string;
4485
5088
  repeat?: [number, number] | undefined;
4486
5089
  scale?: number | undefined;
5090
+ offset?: [number, number] | undefined;
5091
+ normalMap?: string | undefined;
5092
+ normalScale?: number | undefined;
5093
+ bumpMap?: string | undefined;
5094
+ bumpScale?: number | undefined;
4487
5095
  } | undefined;
4488
5096
  } | undefined;
4489
5097
  slots?: Record<string, string> | undefined;
@@ -4539,6 +5147,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4539
5147
  url: string;
4540
5148
  repeat?: [number, number] | undefined;
4541
5149
  scale?: number | undefined;
5150
+ offset?: [number, number] | undefined;
5151
+ normalMap?: string | undefined;
5152
+ normalScale?: number | undefined;
5153
+ bumpMap?: string | undefined;
5154
+ bumpScale?: number | undefined;
4542
5155
  } | undefined;
4543
5156
  } | undefined;
4544
5157
  slots?: Record<string, string> | undefined;
@@ -4592,6 +5205,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4592
5205
  url: string;
4593
5206
  repeat?: [number, number] | undefined;
4594
5207
  scale?: number | undefined;
5208
+ offset?: [number, number] | undefined;
5209
+ normalMap?: string | undefined;
5210
+ normalScale?: number | undefined;
5211
+ bumpMap?: string | undefined;
5212
+ bumpScale?: number | undefined;
4595
5213
  } | undefined;
4596
5214
  } | undefined;
4597
5215
  slots?: Record<string, string> | undefined;
@@ -4646,6 +5264,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4646
5264
  url: string;
4647
5265
  repeat?: [number, number] | undefined;
4648
5266
  scale?: number | undefined;
5267
+ offset?: [number, number] | undefined;
5268
+ normalMap?: string | undefined;
5269
+ normalScale?: number | undefined;
5270
+ bumpMap?: string | undefined;
5271
+ bumpScale?: number | undefined;
4649
5272
  } | undefined;
4650
5273
  } | undefined;
4651
5274
  slots?: Record<string, string> | undefined;
@@ -4713,6 +5336,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4713
5336
  url: string;
4714
5337
  repeat?: [number, number] | undefined;
4715
5338
  scale?: number | undefined;
5339
+ offset?: [number, number] | undefined;
5340
+ normalMap?: string | undefined;
5341
+ normalScale?: number | undefined;
5342
+ bumpMap?: string | undefined;
5343
+ bumpScale?: number | undefined;
4716
5344
  } | undefined;
4717
5345
  } | undefined;
4718
5346
  materialPreset?: string | undefined;
@@ -4731,6 +5359,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4731
5359
  url: string;
4732
5360
  repeat?: [number, number] | undefined;
4733
5361
  scale?: number | undefined;
5362
+ offset?: [number, number] | undefined;
5363
+ normalMap?: string | undefined;
5364
+ normalScale?: number | undefined;
5365
+ bumpMap?: string | undefined;
5366
+ bumpScale?: number | undefined;
4734
5367
  } | undefined;
4735
5368
  } | undefined;
4736
5369
  topMaterialPreset?: string | undefined;
@@ -4812,6 +5445,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4812
5445
  url: string;
4813
5446
  repeat?: [number, number] | undefined;
4814
5447
  scale?: number | undefined;
5448
+ offset?: [number, number] | undefined;
5449
+ normalMap?: string | undefined;
5450
+ normalScale?: number | undefined;
5451
+ bumpMap?: string | undefined;
5452
+ bumpScale?: number | undefined;
4815
5453
  } | undefined;
4816
5454
  } | undefined;
4817
5455
  materialPreset?: string | undefined;
@@ -4830,6 +5468,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4830
5468
  url: string;
4831
5469
  repeat?: [number, number] | undefined;
4832
5470
  scale?: number | undefined;
5471
+ offset?: [number, number] | undefined;
5472
+ normalMap?: string | undefined;
5473
+ normalScale?: number | undefined;
5474
+ bumpMap?: string | undefined;
5475
+ bumpScale?: number | undefined;
4833
5476
  } | undefined;
4834
5477
  } | undefined;
4835
5478
  panelMaterialPreset?: string | undefined;
@@ -4890,6 +5533,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4890
5533
  url: string;
4891
5534
  repeat?: [number, number] | undefined;
4892
5535
  scale?: number | undefined;
5536
+ offset?: [number, number] | undefined;
5537
+ normalMap?: string | undefined;
5538
+ normalScale?: number | undefined;
5539
+ bumpMap?: string | undefined;
5540
+ bumpScale?: number | undefined;
4893
5541
  } | undefined;
4894
5542
  } | undefined;
4895
5543
  materialPreset?: string | undefined;
@@ -4908,6 +5556,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4908
5556
  url: string;
4909
5557
  repeat?: [number, number] | undefined;
4910
5558
  scale?: number | undefined;
5559
+ offset?: [number, number] | undefined;
5560
+ normalMap?: string | undefined;
5561
+ normalScale?: number | undefined;
5562
+ bumpMap?: string | undefined;
5563
+ bumpScale?: number | undefined;
4911
5564
  } | undefined;
4912
5565
  } | undefined;
4913
5566
  glassMaterialPreset?: string | undefined;
@@ -4935,6 +5588,150 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4935
5588
  cutoutOffset: number;
4936
5589
  surfaceNormal?: [number, number, number] | undefined;
4937
5590
  type: "skylight";
5591
+ } | {
5592
+ object: "node";
5593
+ name?: string | undefined;
5594
+ parentId: string | null;
5595
+ visible: boolean;
5596
+ camera?: {
5597
+ position: [number, number, number];
5598
+ target: [number, number, number];
5599
+ mode: "orthographic" | "perspective";
5600
+ fov?: number | undefined;
5601
+ zoom?: number | undefined;
5602
+ } | undefined;
5603
+ metadata: Record<string, unknown>;
5604
+ provenance?: {
5605
+ refs: {
5606
+ ns?: string | undefined;
5607
+ id: string;
5608
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5609
+ }[];
5610
+ lineage?: {
5611
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5612
+ fromIds: string[];
5613
+ } | undefined;
5614
+ } | undefined;
5615
+ id: `dormer_${string}`;
5616
+ material?: {
5617
+ id?: string | undefined;
5618
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5619
+ properties?: {
5620
+ color: string;
5621
+ roughness: number;
5622
+ metalness: number;
5623
+ opacity: number;
5624
+ transparent: boolean;
5625
+ side: "back" | "double" | "front";
5626
+ } | undefined;
5627
+ texture?: {
5628
+ url: string;
5629
+ repeat?: [number, number] | undefined;
5630
+ scale?: number | undefined;
5631
+ offset?: [number, number] | undefined;
5632
+ normalMap?: string | undefined;
5633
+ normalScale?: number | undefined;
5634
+ bumpMap?: string | undefined;
5635
+ bumpScale?: number | undefined;
5636
+ } | undefined;
5637
+ } | undefined;
5638
+ materialPreset?: string | undefined;
5639
+ topMaterial?: {
5640
+ id?: string | undefined;
5641
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5642
+ properties?: {
5643
+ color: string;
5644
+ roughness: number;
5645
+ metalness: number;
5646
+ opacity: number;
5647
+ transparent: boolean;
5648
+ side: "back" | "double" | "front";
5649
+ } | undefined;
5650
+ texture?: {
5651
+ url: string;
5652
+ repeat?: [number, number] | undefined;
5653
+ scale?: number | undefined;
5654
+ offset?: [number, number] | undefined;
5655
+ normalMap?: string | undefined;
5656
+ normalScale?: number | undefined;
5657
+ bumpMap?: string | undefined;
5658
+ bumpScale?: number | undefined;
5659
+ } | undefined;
5660
+ } | undefined;
5661
+ topMaterialPreset?: string | undefined;
5662
+ sideMaterial?: {
5663
+ id?: string | undefined;
5664
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5665
+ properties?: {
5666
+ color: string;
5667
+ roughness: number;
5668
+ metalness: number;
5669
+ opacity: number;
5670
+ transparent: boolean;
5671
+ side: "back" | "double" | "front";
5672
+ } | undefined;
5673
+ texture?: {
5674
+ url: string;
5675
+ repeat?: [number, number] | undefined;
5676
+ scale?: number | undefined;
5677
+ offset?: [number, number] | undefined;
5678
+ normalMap?: string | undefined;
5679
+ normalScale?: number | undefined;
5680
+ bumpMap?: string | undefined;
5681
+ bumpScale?: number | undefined;
5682
+ } | undefined;
5683
+ } | undefined;
5684
+ sideMaterialPreset?: string | undefined;
5685
+ wallMaterial?: {
5686
+ id?: string | undefined;
5687
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5688
+ properties?: {
5689
+ color: string;
5690
+ roughness: number;
5691
+ metalness: number;
5692
+ opacity: number;
5693
+ transparent: boolean;
5694
+ side: "back" | "double" | "front";
5695
+ } | undefined;
5696
+ texture?: {
5697
+ url: string;
5698
+ repeat?: [number, number] | undefined;
5699
+ scale?: number | undefined;
5700
+ offset?: [number, number] | undefined;
5701
+ normalMap?: string | undefined;
5702
+ normalScale?: number | undefined;
5703
+ bumpMap?: string | undefined;
5704
+ bumpScale?: number | undefined;
5705
+ } | undefined;
5706
+ } | undefined;
5707
+ wallMaterialPreset?: string | undefined;
5708
+ roofSegmentId?: string | undefined;
5709
+ position: [number, number, number];
5710
+ rotation: number;
5711
+ width: number;
5712
+ depth: number;
5713
+ height: number;
5714
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
5715
+ roofHeight: number;
5716
+ shedHighSide: "back" | "front";
5717
+ wallSkirtHeight: number;
5718
+ windowWidth: number;
5719
+ windowHeight: number;
5720
+ windowOffsetX: number;
5721
+ windowOffsetY: number;
5722
+ windowFrameThickness: number;
5723
+ windowFrameDepth: number;
5724
+ windowColumns: number;
5725
+ windowRows: number;
5726
+ windowDividerThickness: number;
5727
+ windowShape: "arch" | "rectangle" | "rounded";
5728
+ windowArchHeight: number;
5729
+ windowCornerRadii: [number, number, number, number];
5730
+ windowSill: boolean;
5731
+ windowSillDepth: number;
5732
+ windowSillThickness: number;
5733
+ children: `window_${string}`[];
5734
+ type: "dormer";
4938
5735
  } | {
4939
5736
  object: "node";
4940
5737
  name?: string | undefined;
@@ -4975,6 +5772,11 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4975
5772
  url: string;
4976
5773
  repeat?: [number, number] | undefined;
4977
5774
  scale?: number | undefined;
5775
+ offset?: [number, number] | undefined;
5776
+ normalMap?: string | undefined;
5777
+ normalScale?: number | undefined;
5778
+ bumpMap?: string | undefined;
5779
+ bumpScale?: number | undefined;
4978
5780
  } | undefined;
4979
5781
  } | undefined;
4980
5782
  slots?: Record<string, string> | undefined;
@@ -4991,9 +5793,9 @@ export declare function planSceneNodeChanges(snapshot: Pick<SceneState, 'nodes'
4991
5793
  terminal: "kickout" | "splash" | "straight";
4992
5794
  type: "downspout";
4993
5795
  }>;
4994
- rootNodeIds: (`block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`)[];
5796
+ rootNodeIds: (`beam_${string}` | `block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`)[];
4995
5797
  collections: Record<`collection_${string}`, Collection>;
4996
- dirtyIds: (`block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`)[];
5798
+ dirtyIds: (`beam_${string}` | `block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`)[];
4997
5799
  };
4998
5800
  export declare const createNodesAction: (set: Parameters<typeof createNodesActionImpl>[0], get: Parameters<typeof createNodesActionImpl>[1], ops: NodeCreateOp[], options?: DerivedWriteOptions) => void;
4999
5801
  export declare const applyNodeChangesAction: (set: Parameters<typeof applyNodeChangesActionImpl>[0], get: Parameters<typeof applyNodeChangesActionImpl>[1], changes: Parameters<typeof applyNodeChangesActionImpl>[2], options?: DerivedWriteOptions) => void;