@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
@@ -1,5 +1,6 @@
1
1
  import type { AnyNode } from '../schema/index.js';
2
2
  import type { SceneNodes } from './types.js';
3
+ export { orderedChildIds, queryNodes } from '../runtime/node-queries.js';
3
4
  export type LevelRole = 'occupied' | 'roof' | 'support';
4
5
  export type ContentCounts = {
5
6
  walls: number;
@@ -45,7 +46,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
45
46
  fromIds: string[];
46
47
  } | undefined;
47
48
  } | undefined;
48
- id: `elevator_${string}`;
49
+ id: `bvent_${string}`;
49
50
  material?: {
50
51
  id?: string | undefined;
51
52
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -61,33 +62,31 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
61
62
  url: string;
62
63
  repeat?: [number, number] | undefined;
63
64
  scale?: number | undefined;
65
+ offset?: [number, number] | undefined;
66
+ normalMap?: string | undefined;
67
+ normalScale?: number | undefined;
68
+ bumpMap?: string | undefined;
69
+ bumpScale?: number | undefined;
64
70
  } | undefined;
65
71
  } | undefined;
66
- materialPreset?: string | undefined;
67
72
  slots?: Record<string, string> | undefined;
73
+ materialPreset: string;
74
+ roofSegmentId?: string | undefined;
68
75
  position: [number, number, number];
69
76
  rotation: number;
70
77
  width: number;
71
78
  depth: number;
72
- shaftWidth?: number | undefined;
73
- shaftDepth?: number | undefined;
74
- shaftWallThickness: number;
75
- shaftStyle: "glass" | "solid";
76
- cabHeight: number;
77
- doorWidth: number;
78
- doorHeight: number;
79
- doorStyle: "center-opening" | "single-left" | "single-right";
80
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
81
- fromLevelId: string | null;
82
- toLevelId: string | null;
83
- servedLevelIds?: string[] | undefined;
84
- disabledLevelIds: string[];
85
- serviceOnlyLevelIds: string[];
86
- defaultLevelId: string | null;
87
- speed: number;
88
- doorDurationMs: number;
89
- dwellMs: number;
90
- type: "elevator";
79
+ height: number;
80
+ hoodOverhang: number;
81
+ topTaper: number;
82
+ capHeight: number;
83
+ capGap: number;
84
+ domeCurvature: number;
85
+ baseInset: number;
86
+ baseHeight: number;
87
+ cornerBevel: number;
88
+ style: "box" | "cap" | "dome";
89
+ type: "box-vent";
91
90
  } | {
92
91
  object: "node";
93
92
  name?: string | undefined;
@@ -112,143 +111,223 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
112
111
  fromIds: string[];
113
112
  } | undefined;
114
113
  } | undefined;
115
- id: `measurement_${string}`;
116
- measurement: {
117
- kind: "volume";
118
- base: ({
119
- kind: "feature";
120
- reference: {
121
- nodeId: string;
122
- featureId: string;
123
- parameters?: Record<string, string | number | boolean> | undefined;
124
- };
125
- fallback: [number, number, number];
126
- } | [number, number, number])[];
127
- extrusion: [number, number, number];
128
- } | {
129
- kind: "distance";
130
- points: [{
131
- kind: "feature";
132
- reference: {
133
- nodeId: string;
134
- featureId: string;
135
- parameters?: Record<string, string | number | boolean> | undefined;
136
- };
137
- fallback: [number, number, number];
138
- } | [number, number, number], {
139
- kind: "feature";
140
- reference: {
141
- nodeId: string;
142
- featureId: string;
143
- parameters?: Record<string, string | number | boolean> | undefined;
144
- };
145
- fallback: [number, number, number];
146
- } | [number, number, number]];
147
- } | {
148
- kind: "angle";
149
- points: [{
150
- kind: "feature";
151
- reference: {
152
- nodeId: string;
153
- featureId: string;
154
- parameters?: Record<string, string | number | boolean> | undefined;
155
- };
156
- fallback: [number, number, number];
157
- } | [number, number, number], {
158
- kind: "feature";
159
- reference: {
160
- nodeId: string;
161
- featureId: string;
162
- parameters?: Record<string, string | number | boolean> | undefined;
163
- };
164
- fallback: [number, number, number];
165
- } | [number, number, number], {
166
- kind: "feature";
167
- reference: {
168
- nodeId: string;
169
- featureId: string;
170
- parameters?: Record<string, string | number | boolean> | undefined;
171
- };
172
- fallback: [number, number, number];
173
- } | [number, number, number]];
174
- } | {
175
- kind: "area";
176
- base: ({
177
- kind: "feature";
178
- reference: {
179
- nodeId: string;
180
- featureId: string;
181
- parameters?: Record<string, string | number | boolean> | undefined;
182
- };
183
- fallback: [number, number, number];
184
- } | [number, number, number])[];
185
- } | {
186
- kind: "perimeter";
187
- base: ({
188
- kind: "feature";
189
- reference: {
190
- nodeId: string;
191
- featureId: string;
192
- parameters?: Record<string, string | number | boolean> | undefined;
114
+ id: `column_${string}`;
115
+ children: string[];
116
+ position: [number, number, number];
117
+ rotation: number;
118
+ supportSlabId?: string | undefined;
119
+ source?: {
120
+ kind: "script";
121
+ meta?: {
122
+ description?: string | undefined;
123
+ category?: string | undefined;
124
+ tags?: string[] | undefined;
125
+ parent?: string | undefined;
126
+ } | undefined;
127
+ language: "bpy" | "three";
128
+ script: string;
129
+ params: Record<string, string | number | boolean>;
130
+ artifact: string;
131
+ manifest: {
132
+ bounds: {
133
+ min: [number, number, number];
134
+ max: [number, number, number];
193
135
  };
194
- fallback: [number, number, number];
195
- } | [number, number, number])[];
196
- };
197
- type: "measurement";
198
- } | {
199
- object: "node";
200
- name?: string | undefined;
201
- parentId: string | null;
202
- visible: boolean;
203
- camera?: {
204
- position: [number, number, number];
205
- target: [number, number, number];
206
- mode: "orthographic" | "perspective";
207
- fov?: number | undefined;
208
- zoom?: number | undefined;
209
- } | undefined;
210
- metadata: Record<string, unknown>;
211
- provenance?: {
212
- refs: {
213
- ns?: string | undefined;
214
- id: string;
215
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
216
- }[];
217
- lineage?: {
218
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
219
- fromIds: string[];
136
+ params: {
137
+ id: string;
138
+ label?: string | undefined;
139
+ kind: "boolean" | "number" | "string";
140
+ default: string | number | boolean;
141
+ min?: number | undefined;
142
+ max?: number | undefined;
143
+ step?: number | undefined;
144
+ unit?: string | undefined;
145
+ options?: string[] | undefined;
146
+ }[];
147
+ parts: {
148
+ id: string;
149
+ label?: string | undefined;
150
+ type?: string | undefined;
151
+ bounds?: {
152
+ min: [number, number, number];
153
+ max: [number, number, number];
154
+ } | undefined;
155
+ }[];
156
+ surfaces: {
157
+ part?: string | undefined;
158
+ y: number;
159
+ polygon: [number, number][];
160
+ }[];
161
+ slots: {
162
+ id: string;
163
+ label?: string | undefined;
164
+ color?: string | undefined;
165
+ roughness?: number | undefined;
166
+ metalness?: number | undefined;
167
+ transparent?: boolean | undefined;
168
+ emissive?: boolean | undefined;
169
+ }[];
170
+ anchors: {
171
+ id: string;
172
+ position: [number, number, number];
173
+ normal?: [number, number, number] | undefined;
174
+ }[];
175
+ lights: {
176
+ id: string;
177
+ position: [number, number, number];
178
+ color: string;
179
+ intensity: number;
180
+ distance?: number | undefined;
181
+ spot?: {
182
+ direction: [number, number, number];
183
+ angle: number;
184
+ softness: number;
185
+ } | undefined;
186
+ shadows?: boolean | undefined;
187
+ glow?: {
188
+ size: number;
189
+ strength: number;
190
+ } | undefined;
191
+ }[];
192
+ undersides: {
193
+ part?: string | undefined;
194
+ polygon: [number, number][];
195
+ plane: [number, number, number, number];
196
+ }[];
197
+ animations: {
198
+ name: string;
199
+ duration: number;
200
+ }[];
201
+ cutters?: {
202
+ host: "ceiling" | "mounted" | "slab" | "wall";
203
+ polygon: number[][];
204
+ minY: number;
205
+ maxY: number;
206
+ }[] | undefined;
207
+ cutout: boolean;
208
+ collider: boolean;
209
+ shape?: {
210
+ tolerance: number;
211
+ bands: {
212
+ y0: number;
213
+ y1: number;
214
+ polygons: {
215
+ outer: [number, number][];
216
+ holes?: [number, number][][] | undefined;
217
+ }[];
218
+ }[];
219
+ } | undefined;
220
+ triangles: number;
221
+ coverage?: number | undefined;
222
+ uncovered?: {
223
+ min: [number, number];
224
+ max: [number, number];
225
+ }[] | undefined;
226
+ };
227
+ images?: {
228
+ artifact: string;
229
+ thumbnail: string;
230
+ floorPlan: string;
220
231
  } | undefined;
221
232
  } | undefined;
222
- id: `duct-segment_${string}`;
223
- path: [number, number, number][];
224
- autoHangers?: boolean | undefined;
225
- hangerOverrides?: Record<string, {
226
- fraction?: number | undefined;
227
- skipped?: boolean | undefined;
228
- hostId?: string | undefined;
229
- }> | undefined;
230
- hangerStyle?: "double" | "single" | undefined;
231
- hangerSpacing?: number | undefined;
232
- hangerMaxReach?: number | undefined;
233
- wallAttachment?: {
234
- wallId: `wall_${string}`;
235
- side: "back" | "front";
236
- startUV: [number, number];
237
- endUV: [number, number];
238
- offset: number;
239
- } | undefined;
240
- shape: "oval" | "rect" | "round";
241
- diameter: number;
242
- width: number;
233
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
234
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
243
235
  height: number;
244
- roll: number;
245
- ductMaterial: "duct-board" | "flex" | "sheet-metal" | "spiral";
246
- seamDetail: boolean;
247
- insulated: boolean;
248
- insulationR: number;
249
- system: "return" | "supply";
236
+ radius: number;
237
+ width: number;
238
+ depth: number;
239
+ edgeSoftness: number;
240
+ baseHeight: number;
241
+ capitalHeight: number;
242
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
243
+ shaftTaper: number;
244
+ shaftBulge: number;
245
+ shaftStartScale: number;
246
+ shaftEndScale: number;
247
+ shaftSegmentCount: number;
248
+ shaftTwistStep: number;
249
+ shaftCornerRadius: number;
250
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
251
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
252
+ baseWidthScale: number;
253
+ baseDepthScale: number;
254
+ baseTierCount: number;
255
+ baseStepSpread: number;
256
+ basePlinthHeightRatio: number;
257
+ baseRoundBandScale: number;
258
+ baseNeckScale: number;
259
+ baseRoundBandCount: number;
260
+ baseRibCount: number;
261
+ baseCarvingLevel: number;
262
+ basePanelInset: number;
263
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
264
+ capitalWidthScale: number;
265
+ capitalDepthScale: number;
266
+ capitalTierCount: number;
267
+ capitalStepSpread: number;
268
+ capitalBandCount: number;
269
+ voluteSize: number;
270
+ voluteCount: number;
271
+ leafCount: number;
272
+ leafRows: number;
273
+ bracketDepth: number;
274
+ bracketTierCount: number;
275
+ pendantCount: number;
276
+ capitalCarvingLevel: number;
277
+ ringCount: number;
278
+ ringPlacement: "bottom" | "ends" | "even" | "top";
279
+ ringThickness: number;
280
+ ringSpread: number;
281
+ fluteCount: number;
282
+ fluteDepth: number;
283
+ fluteWidth: number;
284
+ spiralTwist: number;
285
+ spiralRibCount: number;
286
+ panelCount: number;
287
+ panelInsetDepth: number;
288
+ panelShape: "arched" | "diamond" | "rectangle";
289
+ latheRingCount: number;
290
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
291
+ carvingLevel: number;
292
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
293
+ lowerBandEnabled: boolean;
294
+ lowerBandHeight: number;
295
+ lowerBandCarvingLevel: number;
296
+ dentilCount: number;
297
+ beadCount: number;
298
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
299
+ braceWidth: number;
300
+ braceDepth: number;
301
+ braceBottomSpread: number;
302
+ braceTopSpread: number;
303
+ bracePlateEnabled: boolean;
304
+ role?: "ornament" | "post" | undefined;
305
+ postBase?: "none" | "pier" | "post-base" | undefined;
306
+ material?: {
307
+ id?: string | undefined;
308
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
309
+ properties?: {
310
+ color: string;
311
+ roughness: number;
312
+ metalness: number;
313
+ opacity: number;
314
+ transparent: boolean;
315
+ side: "back" | "double" | "front";
316
+ } | undefined;
317
+ texture?: {
318
+ url: string;
319
+ repeat?: [number, number] | undefined;
320
+ scale?: number | undefined;
321
+ offset?: [number, number] | undefined;
322
+ normalMap?: string | undefined;
323
+ normalScale?: number | undefined;
324
+ bumpMap?: string | undefined;
325
+ bumpScale?: number | undefined;
326
+ } | undefined;
327
+ } | undefined;
328
+ materialPreset?: string | undefined;
250
329
  slots?: Record<string, string> | undefined;
251
- type: "duct-segment";
330
+ type: "column";
252
331
  } | {
253
332
  object: "node";
254
333
  name?: string | undefined;
@@ -273,18 +352,29 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
273
352
  fromIds: string[];
274
353
  } | undefined;
275
354
  } | undefined;
276
- id: `floor-opening_${string}`;
277
- polygon: [number, number][];
278
- hostZoneId?: string | undefined;
279
- legacyPlateCuts?: Record<string, [number, number][][]> | undefined;
280
- legacyCeilingCuts?: Record<string, [number, number][][]> | undefined;
281
- source: string;
282
- ownerId?: string | undefined;
283
- surfaceId?: string | undefined;
284
- drawnOn: "ceiling" | "floor";
285
- cutsPrimary: boolean;
286
- cutsAdjacent: boolean;
287
- type: "floor-opening";
355
+ id: `duct-fitting_${string}`;
356
+ position: [number, number, number];
357
+ rotation: [number, number, number];
358
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
359
+ shape: "oval" | "rect" | "round";
360
+ inletShape?: "oval" | "rect" | "round" | undefined;
361
+ outletShape?: "oval" | "rect" | "round" | undefined;
362
+ width: number;
363
+ height: number;
364
+ shape2: "oval" | "rect" | "round";
365
+ width2: number;
366
+ height2: number;
367
+ angle: number;
368
+ branchAngle: number;
369
+ diameter: number;
370
+ diameter2: number;
371
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
372
+ system: "return" | "supply";
373
+ damperAngle: number;
374
+ panelWidth: number;
375
+ panelHeight: number;
376
+ slots?: Record<string, string> | undefined;
377
+ type: "duct-fitting";
288
378
  } | {
289
379
  object: "node";
290
380
  name?: string | undefined;
@@ -309,12 +399,23 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
309
399
  fromIds: string[];
310
400
  } | undefined;
311
401
  } | undefined;
312
- id: `lineset_${string}`;
313
- path: [number, number, number][];
314
- suctionDiameter: number;
315
- liquidDiameter: number;
316
- insulated: boolean;
317
- type: "lineset";
402
+ id: `hvac-equipment_${string}`;
403
+ position: [number, number, number];
404
+ rotation: number;
405
+ supportSlabId?: string | undefined;
406
+ equipmentType: "air-handler" | "condenser" | "furnace";
407
+ width: number;
408
+ depth: number;
409
+ height: number;
410
+ supplyShape: "oval" | "rect" | "round";
411
+ returnShape: "oval" | "rect" | "round";
412
+ supplyDiameter: number;
413
+ returnDiameter: number;
414
+ supplyWidth: number;
415
+ supplyHeight: number;
416
+ returnWidth: number;
417
+ returnHeight: number;
418
+ type: "hvac-equipment";
318
419
  } | {
319
420
  object: "node";
320
421
  name?: string | undefined;
@@ -339,13 +440,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
339
440
  fromIds: string[];
340
441
  } | undefined;
341
442
  } | undefined;
342
- id: `pipe-trap_${string}`;
443
+ id: `pipe-fitting_${string}`;
343
444
  position: [number, number, number];
344
- rotation: number;
445
+ rotation: [number, number, number];
446
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
447
+ angle: number;
345
448
  diameter: number;
449
+ diameter2: number;
450
+ cleanoutStyle: "end" | "inline";
346
451
  pipeMaterial: "abs" | "cast-iron" | "pvc";
347
- armLengthM: number;
348
- type: "pipe-trap";
452
+ system: "vent" | "waste";
453
+ type: "pipe-fitting";
349
454
  } | {
350
455
  object: "node";
351
456
  name?: string | undefined;
@@ -386,6 +491,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
386
491
  url: string;
387
492
  repeat?: [number, number] | undefined;
388
493
  scale?: number | undefined;
494
+ offset?: [number, number] | undefined;
495
+ normalMap?: string | undefined;
496
+ normalScale?: number | undefined;
497
+ bumpMap?: string | undefined;
498
+ bumpScale?: number | undefined;
389
499
  } | undefined;
390
500
  } | undefined;
391
501
  materialPreset?: string | undefined;
@@ -404,6 +514,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
404
514
  url: string;
405
515
  repeat?: [number, number] | undefined;
406
516
  scale?: number | undefined;
517
+ offset?: [number, number] | undefined;
518
+ normalMap?: string | undefined;
519
+ normalScale?: number | undefined;
520
+ bumpMap?: string | undefined;
521
+ bumpScale?: number | undefined;
407
522
  } | undefined;
408
523
  } | undefined;
409
524
  topMaterialPreset?: string | undefined;
@@ -422,6 +537,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
422
537
  url: string;
423
538
  repeat?: [number, number] | undefined;
424
539
  scale?: number | undefined;
540
+ offset?: [number, number] | undefined;
541
+ normalMap?: string | undefined;
542
+ normalScale?: number | undefined;
543
+ bumpMap?: string | undefined;
544
+ bumpScale?: number | undefined;
425
545
  } | undefined;
426
546
  } | undefined;
427
547
  edgeMaterialPreset?: string | undefined;
@@ -440,6 +560,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
440
560
  url: string;
441
561
  repeat?: [number, number] | undefined;
442
562
  scale?: number | undefined;
563
+ offset?: [number, number] | undefined;
564
+ normalMap?: string | undefined;
565
+ normalScale?: number | undefined;
566
+ bumpMap?: string | undefined;
567
+ bumpScale?: number | undefined;
443
568
  } | undefined;
444
569
  } | undefined;
445
570
  wallMaterialPreset?: string | undefined;
@@ -509,6 +634,39 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
509
634
  overhang: number;
510
635
  gableOverhang?: number | undefined;
511
636
  shingleThickness: number;
637
+ buildUp?: {
638
+ presetId?: string | undefined;
639
+ roofing: {
640
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
641
+ thickness: number;
642
+ name?: string | undefined;
643
+ };
644
+ underlayment?: {
645
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
646
+ thickness: number;
647
+ name?: string | undefined;
648
+ } | undefined;
649
+ sheathing: {
650
+ kind: "osb" | "plywood";
651
+ thickness: number;
652
+ name?: string | undefined;
653
+ };
654
+ structure: {
655
+ system: "rafters" | "trusses";
656
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
657
+ spacing: number;
658
+ };
659
+ insulation?: {
660
+ kind: "batt" | "blown" | "rigid";
661
+ thickness: number;
662
+ name?: string | undefined;
663
+ } | undefined;
664
+ finish?: {
665
+ kind: "drywall" | "plaster" | "wood-plank";
666
+ thickness: number;
667
+ name?: string | undefined;
668
+ } | undefined;
669
+ } | undefined;
512
670
  arc?: {
513
671
  centerX: number;
514
672
  centerZ: number;
@@ -530,6 +688,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
530
688
  wallShell: "auto" | "include" | "omit";
531
689
  shedInsetEndPanels: boolean;
532
690
  fascia?: boolean | undefined;
691
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
533
692
  fasciaHighEdge?: boolean | undefined;
534
693
  fasciaHeight?: number | undefined;
535
694
  fasciaDepth?: number | undefined;
@@ -548,9 +707,83 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
548
707
  url: string;
549
708
  repeat?: [number, number] | undefined;
550
709
  scale?: number | undefined;
710
+ offset?: [number, number] | undefined;
711
+ normalMap?: string | undefined;
712
+ normalScale?: number | undefined;
713
+ bumpMap?: string | undefined;
714
+ bumpScale?: number | undefined;
551
715
  } | undefined;
552
716
  } | undefined;
553
717
  fasciaMaterialPreset?: string | undefined;
718
+ heelMaterial?: {
719
+ id?: string | undefined;
720
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
721
+ properties?: {
722
+ color: string;
723
+ roughness: number;
724
+ metalness: number;
725
+ opacity: number;
726
+ transparent: boolean;
727
+ side: "back" | "double" | "front";
728
+ } | undefined;
729
+ texture?: {
730
+ url: string;
731
+ repeat?: [number, number] | undefined;
732
+ scale?: number | undefined;
733
+ offset?: [number, number] | undefined;
734
+ normalMap?: string | undefined;
735
+ normalScale?: number | undefined;
736
+ bumpMap?: string | undefined;
737
+ bumpScale?: number | undefined;
738
+ } | undefined;
739
+ } | undefined;
740
+ heelMaterialPreset?: string | undefined;
741
+ gableLeftMaterial?: {
742
+ id?: string | undefined;
743
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
744
+ properties?: {
745
+ color: string;
746
+ roughness: number;
747
+ metalness: number;
748
+ opacity: number;
749
+ transparent: boolean;
750
+ side: "back" | "double" | "front";
751
+ } | undefined;
752
+ texture?: {
753
+ url: string;
754
+ repeat?: [number, number] | undefined;
755
+ scale?: number | undefined;
756
+ offset?: [number, number] | undefined;
757
+ normalMap?: string | undefined;
758
+ normalScale?: number | undefined;
759
+ bumpMap?: string | undefined;
760
+ bumpScale?: number | undefined;
761
+ } | undefined;
762
+ } | undefined;
763
+ gableLeftMaterialPreset?: string | undefined;
764
+ gableRightMaterial?: {
765
+ id?: string | undefined;
766
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
767
+ properties?: {
768
+ color: string;
769
+ roughness: number;
770
+ metalness: number;
771
+ opacity: number;
772
+ transparent: boolean;
773
+ side: "back" | "double" | "front";
774
+ } | undefined;
775
+ texture?: {
776
+ url: string;
777
+ repeat?: [number, number] | undefined;
778
+ scale?: number | undefined;
779
+ offset?: [number, number] | undefined;
780
+ normalMap?: string | undefined;
781
+ normalScale?: number | undefined;
782
+ bumpMap?: string | undefined;
783
+ bumpScale?: number | undefined;
784
+ } | undefined;
785
+ } | undefined;
786
+ gableRightMaterialPreset?: string | undefined;
554
787
  gambrelLowerWidthRatio: number;
555
788
  gambrelLowerHeightRatio: number;
556
789
  mansardSteepWidthRatio: number;
@@ -564,7 +797,6 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
564
797
  type: "roof-segment";
565
798
  } | {
566
799
  object: "node";
567
- name?: string | undefined;
568
800
  parentId: string | null;
569
801
  visible: boolean;
570
802
  camera?: {
@@ -574,7 +806,6 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
574
806
  fov?: number | undefined;
575
807
  zoom?: number | undefined;
576
808
  } | undefined;
577
- metadata: Record<string, unknown>;
578
809
  provenance?: {
579
810
  refs: {
580
811
  ns?: string | undefined;
@@ -586,29 +817,209 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
586
817
  fromIds: string[];
587
818
  } | undefined;
588
819
  } | undefined;
589
- id: `separator_${string}`;
590
- start: [number, number];
591
- end: [number, number];
592
- type: "separator";
593
- } | {
594
- object: "node";
595
- name?: string | undefined;
596
- parentId: string | null;
597
- visible: boolean;
598
- camera?: {
599
- position: [number, number, number];
600
- target: [number, number, number];
601
- mode: "orthographic" | "perspective";
602
- fov?: number | undefined;
603
- zoom?: number | undefined;
604
- } | undefined;
605
- metadata: Record<string, unknown>;
606
- provenance?: {
607
- refs: {
608
- ns?: string | undefined;
609
- id: string;
610
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
611
- }[];
820
+ id: `zone_${string}`;
821
+ name: string;
822
+ polygon: [number, number][];
823
+ holes: [number, number][][];
824
+ autoFromWalls: boolean;
825
+ boundaryWallIds: `wall_${string}`[];
826
+ boundarySeparatorIds: string[];
827
+ hostZoneId?: string | undefined;
828
+ seed?: [number, number] | undefined;
829
+ floor?: {
830
+ elevation?: number | undefined;
831
+ support?: "open" | undefined;
832
+ footprint?: string | undefined;
833
+ thickness?: number | undefined;
834
+ sourceSlabId?: `slab_${string}` | undefined;
835
+ finish?: string | Record<string, unknown> | undefined;
836
+ regions?: {
837
+ id: string;
838
+ polygon: [number, number][];
839
+ finish: string | Record<string, unknown>;
840
+ }[] | undefined;
841
+ script?: {
842
+ kind: "script";
843
+ meta?: {
844
+ description?: string | undefined;
845
+ category?: string | undefined;
846
+ tags?: string[] | undefined;
847
+ parent?: string | undefined;
848
+ } | undefined;
849
+ language: "bpy" | "three";
850
+ script: string;
851
+ params: Record<string, string | number | boolean>;
852
+ artifact: string;
853
+ manifest: {
854
+ bounds: {
855
+ min: [number, number, number];
856
+ max: [number, number, number];
857
+ };
858
+ params: {
859
+ id: string;
860
+ label?: string | undefined;
861
+ kind: "boolean" | "number" | "string";
862
+ default: string | number | boolean;
863
+ min?: number | undefined;
864
+ max?: number | undefined;
865
+ step?: number | undefined;
866
+ unit?: string | undefined;
867
+ options?: string[] | undefined;
868
+ }[];
869
+ parts: {
870
+ id: string;
871
+ label?: string | undefined;
872
+ type?: string | undefined;
873
+ bounds?: {
874
+ min: [number, number, number];
875
+ max: [number, number, number];
876
+ } | undefined;
877
+ }[];
878
+ surfaces: {
879
+ part?: string | undefined;
880
+ y: number;
881
+ polygon: [number, number][];
882
+ }[];
883
+ slots: {
884
+ id: string;
885
+ label?: string | undefined;
886
+ color?: string | undefined;
887
+ roughness?: number | undefined;
888
+ metalness?: number | undefined;
889
+ transparent?: boolean | undefined;
890
+ emissive?: boolean | undefined;
891
+ }[];
892
+ anchors: {
893
+ id: string;
894
+ position: [number, number, number];
895
+ normal?: [number, number, number] | undefined;
896
+ }[];
897
+ lights: {
898
+ id: string;
899
+ position: [number, number, number];
900
+ color: string;
901
+ intensity: number;
902
+ distance?: number | undefined;
903
+ spot?: {
904
+ direction: [number, number, number];
905
+ angle: number;
906
+ softness: number;
907
+ } | undefined;
908
+ shadows?: boolean | undefined;
909
+ glow?: {
910
+ size: number;
911
+ strength: number;
912
+ } | undefined;
913
+ }[];
914
+ undersides: {
915
+ part?: string | undefined;
916
+ polygon: [number, number][];
917
+ plane: [number, number, number, number];
918
+ }[];
919
+ animations: {
920
+ name: string;
921
+ duration: number;
922
+ }[];
923
+ cutters?: {
924
+ host: "ceiling" | "mounted" | "slab" | "wall";
925
+ polygon: number[][];
926
+ minY: number;
927
+ maxY: number;
928
+ }[] | undefined;
929
+ cutout: boolean;
930
+ collider: boolean;
931
+ shape?: {
932
+ tolerance: number;
933
+ bands: {
934
+ y0: number;
935
+ y1: number;
936
+ polygons: {
937
+ outer: [number, number][];
938
+ holes?: [number, number][][] | undefined;
939
+ }[];
940
+ }[];
941
+ } | undefined;
942
+ triangles: number;
943
+ coverage?: number | undefined;
944
+ uncovered?: {
945
+ min: [number, number];
946
+ max: [number, number];
947
+ }[] | undefined;
948
+ };
949
+ images?: {
950
+ artifact: string;
951
+ thumbnail: string;
952
+ floorPlan: string;
953
+ } | undefined;
954
+ inputs: string;
955
+ } | undefined;
956
+ drop?: number | undefined;
957
+ } | undefined;
958
+ roomType?: "deck" | "patio" | "porch" | undefined;
959
+ porchFraming?: {
960
+ auto?: boolean | undefined;
961
+ postSize?: string | undefined;
962
+ postSpacing?: number | undefined;
963
+ beamSize?: string | undefined;
964
+ } | undefined;
965
+ decking?: {
966
+ boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
967
+ gap?: number | undefined;
968
+ direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
969
+ } | undefined;
970
+ ceiling?: {
971
+ regions?: {
972
+ id: string;
973
+ polygon: [number, number][];
974
+ finish: string | Record<string, unknown>;
975
+ }[] | undefined;
976
+ } | undefined;
977
+ floorStepFinish?: string | undefined;
978
+ floorStepOverrides?: {
979
+ key: string;
980
+ step?: number | undefined;
981
+ finish: string;
982
+ }[] | undefined;
983
+ floorEdgeFinish?: string | undefined;
984
+ wallMaterial?: string | undefined;
985
+ wallOverrides?: {
986
+ wallId: string;
987
+ face: "a" | "b";
988
+ finish: string;
989
+ }[] | undefined;
990
+ hasFloor?: false | undefined;
991
+ hasCeiling?: false | undefined;
992
+ spaceRole: "generic" | "room";
993
+ roomNumber: string;
994
+ enclosureStatus: "auto" | "enclosed" | "open";
995
+ floorFinish: string;
996
+ wallFinish: string;
997
+ ceilingFinish: string;
998
+ ceilingHeight: number;
999
+ occupancy: string;
1000
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
1001
+ color: string;
1002
+ metadata: Record<string, unknown>;
1003
+ type: "zone";
1004
+ } | {
1005
+ object: "node";
1006
+ name?: string | undefined;
1007
+ parentId: string | null;
1008
+ visible: boolean;
1009
+ camera?: {
1010
+ position: [number, number, number];
1011
+ target: [number, number, number];
1012
+ mode: "orthographic" | "perspective";
1013
+ fov?: number | undefined;
1014
+ zoom?: number | undefined;
1015
+ } | undefined;
1016
+ metadata: Record<string, unknown>;
1017
+ provenance?: {
1018
+ refs: {
1019
+ ns?: string | undefined;
1020
+ id: string;
1021
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1022
+ }[];
612
1023
  lineage?: {
613
1024
  op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
614
1025
  fromIds: string[];
@@ -630,6 +1041,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
630
1041
  url: string;
631
1042
  repeat?: [number, number] | undefined;
632
1043
  scale?: number | undefined;
1044
+ offset?: [number, number] | undefined;
1045
+ normalMap?: string | undefined;
1046
+ normalScale?: number | undefined;
1047
+ bumpMap?: string | undefined;
1048
+ bumpScale?: number | undefined;
633
1049
  } | undefined;
634
1050
  } | undefined;
635
1051
  materialPreset?: string | undefined;
@@ -702,6 +1118,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
702
1118
  url: string;
703
1119
  repeat?: [number, number] | undefined;
704
1120
  scale?: number | undefined;
1121
+ offset?: [number, number] | undefined;
1122
+ normalMap?: string | undefined;
1123
+ normalScale?: number | undefined;
1124
+ bumpMap?: string | undefined;
1125
+ bumpScale?: number | undefined;
705
1126
  } | undefined;
706
1127
  } | undefined;
707
1128
  materialPreset?: string | undefined;
@@ -720,6 +1141,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
720
1141
  url: string;
721
1142
  repeat?: [number, number] | undefined;
722
1143
  scale?: number | undefined;
1144
+ offset?: [number, number] | undefined;
1145
+ normalMap?: string | undefined;
1146
+ normalScale?: number | undefined;
1147
+ bumpMap?: string | undefined;
1148
+ bumpScale?: number | undefined;
723
1149
  } | undefined;
724
1150
  } | undefined;
725
1151
  railingMaterialPreset?: string | undefined;
@@ -738,6 +1164,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
738
1164
  url: string;
739
1165
  repeat?: [number, number] | undefined;
740
1166
  scale?: number | undefined;
1167
+ offset?: [number, number] | undefined;
1168
+ normalMap?: string | undefined;
1169
+ normalScale?: number | undefined;
1170
+ bumpMap?: string | undefined;
1171
+ bumpScale?: number | undefined;
741
1172
  } | undefined;
742
1173
  } | undefined;
743
1174
  treadMaterialPreset?: string | undefined;
@@ -756,6 +1187,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
756
1187
  url: string;
757
1188
  repeat?: [number, number] | undefined;
758
1189
  scale?: number | undefined;
1190
+ offset?: [number, number] | undefined;
1191
+ normalMap?: string | undefined;
1192
+ normalScale?: number | undefined;
1193
+ bumpMap?: string | undefined;
1194
+ bumpScale?: number | undefined;
759
1195
  } | undefined;
760
1196
  } | undefined;
761
1197
  sideMaterialPreset?: string | undefined;
@@ -765,280 +1201,77 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
765
1201
  supportSlabId?: string | undefined;
766
1202
  stairType: "curved" | "spiral" | "straight";
767
1203
  fromLevelId: string | null;
768
- toLevelId: string | null;
769
- deckSlabId?: string | undefined;
770
- slabOpeningMode: "destination" | "none";
771
- openingOffset: number;
772
- width: number;
773
- totalRise?: number | undefined;
774
- designTargets?: {
775
- maxRiserHeight: number;
776
- minimumGoing: number;
777
- targetGoing: number;
778
- minimumHeadroom: number;
779
- } | undefined;
780
- uniformRisers?: boolean | undefined;
781
- stepCount: number;
782
- autoSurfaceSnap?: boolean | undefined;
783
- destinationSurfaceId?: string | undefined;
784
- thickness: number;
785
- fillToFloor: boolean;
786
- construction?: {
787
- mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
788
- waistThickness: number;
789
- treadThickness: number;
790
- riserThickness: number;
791
- nosing: number;
792
- finishThickness: number;
793
- closedRisers: boolean;
794
- stringerWidth: number;
795
- stringerDepth: number;
796
- } | undefined;
797
- innerRadius: number;
798
- sweepAngle: number;
799
- topLandingMode: "integrated" | "none";
800
- topLandingDepth: number;
801
- showCenterColumn: boolean;
802
- showStepSupports: boolean;
803
- railingMode: "both" | "left" | "none" | "right";
804
- railingHeight: number;
805
- railingStyle?: "balusters" | "boards" | "cable" | "glass" | "metal" | "post-and-rail" | undefined;
806
- railingPath?: "continuous" | "original" | undefined;
807
- handrail?: {
808
- mode: "both" | "left" | "none" | "right";
809
- height: number;
810
- diameter: number;
811
- offset: number;
812
- bottom?: {
813
- extension: number;
814
- return: "floor" | "none" | "post" | "wall";
815
- returnLength: number;
816
- } | undefined;
817
- top?: {
818
- extension: number;
819
- return: "floor" | "none" | "post" | "wall";
820
- returnLength: number;
821
- } | undefined;
822
- } | undefined;
823
- railingTopPost?: boolean | undefined;
824
- railingTopReach?: number | undefined;
825
- railingPostThrough?: boolean | undefined;
826
- children: `sseg_${string}`[];
827
- type: "stair";
828
- } | {
829
- object: "node";
830
- name?: string | undefined;
831
- parentId: string | null;
832
- visible: boolean;
833
- camera?: {
834
- position: [number, number, number];
835
- target: [number, number, number];
836
- mode: "orthographic" | "perspective";
837
- fov?: number | undefined;
838
- zoom?: number | undefined;
839
- } | undefined;
840
- metadata: Record<string, unknown>;
841
- provenance?: {
842
- refs: {
843
- ns?: string | undefined;
844
- id: string;
845
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
846
- }[];
847
- lineage?: {
848
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
849
- fromIds: string[];
850
- } | undefined;
851
- } | undefined;
852
- id: `column_${string}`;
853
- children: string[];
854
- position: [number, number, number];
855
- rotation: number;
856
- supportSlabId?: string | undefined;
857
- source?: {
858
- kind: "script";
859
- meta?: {
860
- description?: string | undefined;
861
- category?: string | undefined;
862
- tags?: string[] | undefined;
863
- parent?: string | undefined;
864
- } | undefined;
865
- language: "bpy" | "three";
866
- script: string;
867
- params: Record<string, string | number | boolean>;
868
- artifact: string;
869
- manifest: {
870
- bounds: {
871
- min: [number, number, number];
872
- max: [number, number, number];
873
- };
874
- params: {
875
- id: string;
876
- label?: string | undefined;
877
- kind: "boolean" | "number" | "string";
878
- default: string | number | boolean;
879
- min?: number | undefined;
880
- max?: number | undefined;
881
- step?: number | undefined;
882
- unit?: string | undefined;
883
- options?: string[] | undefined;
884
- }[];
885
- parts: {
886
- id: string;
887
- label?: string | undefined;
888
- type?: string | undefined;
889
- bounds?: {
890
- min: [number, number, number];
891
- max: [number, number, number];
892
- } | undefined;
893
- }[];
894
- surfaces: {
895
- part?: string | undefined;
896
- y: number;
897
- polygon: [number, number][];
898
- }[];
899
- slots: {
900
- id: string;
901
- label?: string | undefined;
902
- color?: string | undefined;
903
- roughness?: number | undefined;
904
- metalness?: number | undefined;
905
- transparent?: boolean | undefined;
906
- emissive?: boolean | undefined;
907
- }[];
908
- anchors: {
909
- id: string;
910
- position: [number, number, number];
911
- normal?: [number, number, number] | undefined;
912
- }[];
913
- lights: {
914
- id: string;
915
- position: [number, number, number];
916
- color: string;
917
- intensity: number;
918
- distance?: number | undefined;
919
- }[];
920
- undersides: {
921
- part?: string | undefined;
922
- polygon: [number, number][];
923
- plane: [number, number, number, number];
924
- }[];
925
- animations: {
926
- name: string;
927
- duration: number;
928
- }[];
929
- cutters?: {
930
- host: "ceiling" | "mounted" | "slab" | "wall";
931
- polygon: number[][];
932
- minY: number;
933
- maxY: number;
934
- }[] | undefined;
935
- cutout: boolean;
936
- collider: boolean;
937
- triangles: number;
938
- coverage?: number | undefined;
939
- uncovered?: {
940
- min: [number, number];
941
- max: [number, number];
942
- }[] | undefined;
943
- };
944
- images?: {
945
- artifact: string;
946
- thumbnail: string;
947
- floorPlan: string;
948
- } | undefined;
949
- } | undefined;
950
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
951
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
952
- height: number;
953
- radius: number;
954
- width: number;
955
- depth: number;
956
- edgeSoftness: number;
957
- baseHeight: number;
958
- capitalHeight: number;
959
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
960
- shaftTaper: number;
961
- shaftBulge: number;
962
- shaftStartScale: number;
963
- shaftEndScale: number;
964
- shaftSegmentCount: number;
965
- shaftTwistStep: number;
966
- shaftCornerRadius: number;
967
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
968
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
969
- baseWidthScale: number;
970
- baseDepthScale: number;
971
- baseTierCount: number;
972
- baseStepSpread: number;
973
- basePlinthHeightRatio: number;
974
- baseRoundBandScale: number;
975
- baseNeckScale: number;
976
- baseRoundBandCount: number;
977
- baseRibCount: number;
978
- baseCarvingLevel: number;
979
- basePanelInset: number;
980
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
981
- capitalWidthScale: number;
982
- capitalDepthScale: number;
983
- capitalTierCount: number;
984
- capitalStepSpread: number;
985
- capitalBandCount: number;
986
- voluteSize: number;
987
- voluteCount: number;
988
- leafCount: number;
989
- leafRows: number;
990
- bracketDepth: number;
991
- bracketTierCount: number;
992
- pendantCount: number;
993
- capitalCarvingLevel: number;
994
- ringCount: number;
995
- ringPlacement: "bottom" | "ends" | "even" | "top";
996
- ringThickness: number;
997
- ringSpread: number;
998
- fluteCount: number;
999
- fluteDepth: number;
1000
- fluteWidth: number;
1001
- spiralTwist: number;
1002
- spiralRibCount: number;
1003
- panelCount: number;
1004
- panelInsetDepth: number;
1005
- panelShape: "arched" | "diamond" | "rectangle";
1006
- latheRingCount: number;
1007
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
1008
- carvingLevel: number;
1009
- carvingPlacement: "all" | "base" | "capital" | "shaft";
1010
- lowerBandEnabled: boolean;
1011
- lowerBandHeight: number;
1012
- lowerBandCarvingLevel: number;
1013
- dentilCount: number;
1014
- beadCount: number;
1015
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1016
- braceWidth: number;
1017
- braceDepth: number;
1018
- braceBottomSpread: number;
1019
- braceTopSpread: number;
1020
- bracePlateEnabled: boolean;
1021
- role?: "ornament" | undefined;
1022
- material?: {
1023
- id?: string | undefined;
1024
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1025
- properties?: {
1026
- color: string;
1027
- roughness: number;
1028
- metalness: number;
1029
- opacity: number;
1030
- transparent: boolean;
1031
- side: "back" | "double" | "front";
1204
+ toLevelId: string | null;
1205
+ deckSlabId?: string | undefined;
1206
+ slabOpeningMode: "destination" | "none";
1207
+ openingOffset: number;
1208
+ width: number;
1209
+ totalRise?: number | undefined;
1210
+ designTargets?: {
1211
+ maxRiserHeight: number;
1212
+ minimumGoing: number;
1213
+ targetGoing: number;
1214
+ minimumHeadroom: number;
1215
+ } | undefined;
1216
+ uniformRisers?: boolean | undefined;
1217
+ stepCount: number;
1218
+ autoSurfaceSnap?: boolean | undefined;
1219
+ destinationSurfaceId?: string | undefined;
1220
+ thickness: number;
1221
+ fillToFloor: boolean;
1222
+ construction?: {
1223
+ mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
1224
+ waistThickness: number;
1225
+ treadThickness: number;
1226
+ riserThickness: number;
1227
+ nosing: number;
1228
+ finishThickness: number;
1229
+ closedRisers: boolean;
1230
+ stringerWidth: number;
1231
+ stringerDepth: number;
1232
+ } | undefined;
1233
+ structure?: {
1234
+ type: "concrete" | "steel-stringers" | "wood-stringers";
1235
+ stringerStock: "2x10" | "2x12";
1236
+ stringerType: "cut" | "housed";
1237
+ stringerSpacing: number;
1238
+ stringerCount?: number | undefined;
1239
+ treadStock?: "2x12" | "2x6-pair" | "5/4x6-pair" | "plywood-finish" | undefined;
1240
+ closedRisers?: boolean | undefined;
1241
+ treated?: boolean | undefined;
1242
+ nosing?: number | undefined;
1243
+ } | undefined;
1244
+ innerRadius: number;
1245
+ sweepAngle: number;
1246
+ topLandingMode: "integrated" | "none";
1247
+ topLandingDepth: number;
1248
+ showCenterColumn: boolean;
1249
+ showStepSupports: boolean;
1250
+ railingMode: "both" | "left" | "none" | "right";
1251
+ railingHeight: number;
1252
+ railingStyle?: "balusters" | "boards" | "cable" | "glass" | "metal" | "post-and-rail" | undefined;
1253
+ railingPath?: "continuous" | "original" | undefined;
1254
+ handrail?: {
1255
+ mode: "both" | "left" | "none" | "right";
1256
+ height: number;
1257
+ diameter: number;
1258
+ offset: number;
1259
+ bottom?: {
1260
+ extension: number;
1261
+ return: "floor" | "none" | "post" | "wall";
1262
+ returnLength: number;
1032
1263
  } | undefined;
1033
- texture?: {
1034
- url: string;
1035
- repeat?: [number, number] | undefined;
1036
- scale?: number | undefined;
1264
+ top?: {
1265
+ extension: number;
1266
+ return: "floor" | "none" | "post" | "wall";
1267
+ returnLength: number;
1037
1268
  } | undefined;
1038
1269
  } | undefined;
1039
- materialPreset?: string | undefined;
1040
- slots?: Record<string, string> | undefined;
1041
- type: "column";
1270
+ railingTopPost?: boolean | undefined;
1271
+ railingTopReach?: number | undefined;
1272
+ railingPostThrough?: boolean | undefined;
1273
+ children: `sseg_${string}`[];
1274
+ type: "stair";
1042
1275
  } | {
1043
1276
  object: "node";
1044
1277
  name?: string | undefined;
@@ -1079,6 +1312,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1079
1312
  url: string;
1080
1313
  repeat?: [number, number] | undefined;
1081
1314
  scale?: number | undefined;
1315
+ offset?: [number, number] | undefined;
1316
+ normalMap?: string | undefined;
1317
+ normalScale?: number | undefined;
1318
+ bumpMap?: string | undefined;
1319
+ bumpScale?: number | undefined;
1082
1320
  } | undefined;
1083
1321
  } | undefined;
1084
1322
  materialPreset?: string | undefined;
@@ -1097,6 +1335,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1097
1335
  url: string;
1098
1336
  repeat?: [number, number] | undefined;
1099
1337
  scale?: number | undefined;
1338
+ offset?: [number, number] | undefined;
1339
+ normalMap?: string | undefined;
1340
+ normalScale?: number | undefined;
1341
+ bumpMap?: string | undefined;
1342
+ bumpScale?: number | undefined;
1100
1343
  } | undefined;
1101
1344
  } | undefined;
1102
1345
  topMaterialPreset?: string | undefined;
@@ -1115,6 +1358,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1115
1358
  url: string;
1116
1359
  repeat?: [number, number] | undefined;
1117
1360
  scale?: number | undefined;
1361
+ offset?: [number, number] | undefined;
1362
+ normalMap?: string | undefined;
1363
+ normalScale?: number | undefined;
1364
+ bumpMap?: string | undefined;
1365
+ bumpScale?: number | undefined;
1118
1366
  } | undefined;
1119
1367
  } | undefined;
1120
1368
  edgeMaterialPreset?: string | undefined;
@@ -1133,9 +1381,37 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1133
1381
  url: string;
1134
1382
  repeat?: [number, number] | undefined;
1135
1383
  scale?: number | undefined;
1384
+ offset?: [number, number] | undefined;
1385
+ normalMap?: string | undefined;
1386
+ normalScale?: number | undefined;
1387
+ bumpMap?: string | undefined;
1388
+ bumpScale?: number | undefined;
1136
1389
  } | undefined;
1137
1390
  } | undefined;
1138
1391
  wallMaterialPreset?: string | undefined;
1392
+ heelMaterial?: {
1393
+ id?: string | undefined;
1394
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1395
+ properties?: {
1396
+ color: string;
1397
+ roughness: number;
1398
+ metalness: number;
1399
+ opacity: number;
1400
+ transparent: boolean;
1401
+ side: "back" | "double" | "front";
1402
+ } | undefined;
1403
+ texture?: {
1404
+ url: string;
1405
+ repeat?: [number, number] | undefined;
1406
+ scale?: number | undefined;
1407
+ offset?: [number, number] | undefined;
1408
+ normalMap?: string | undefined;
1409
+ normalScale?: number | undefined;
1410
+ bumpMap?: string | undefined;
1411
+ bumpScale?: number | undefined;
1412
+ } | undefined;
1413
+ } | undefined;
1414
+ heelMaterialPreset?: string | undefined;
1139
1415
  position: [number, number, number];
1140
1416
  rotation: number;
1141
1417
  support: {
@@ -1154,6 +1430,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1154
1430
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1155
1431
  thickness: number;
1156
1432
  core?: true | undefined;
1433
+ spacing?: number | undefined;
1157
1434
  material?: string | undefined;
1158
1435
  slot?: string | undefined;
1159
1436
  returns?: boolean | undefined;
@@ -1168,6 +1445,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1168
1445
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1169
1446
  thickness: number;
1170
1447
  core?: true | undefined;
1448
+ spacing?: number | undefined;
1171
1449
  material?: string | undefined;
1172
1450
  slot?: string | undefined;
1173
1451
  returns?: boolean | undefined;
@@ -1224,6 +1502,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1224
1502
  url: string;
1225
1503
  repeat?: [number, number] | undefined;
1226
1504
  scale?: number | undefined;
1505
+ offset?: [number, number] | undefined;
1506
+ normalMap?: string | undefined;
1507
+ normalScale?: number | undefined;
1508
+ bumpMap?: string | undefined;
1509
+ bumpScale?: number | undefined;
1227
1510
  } | undefined;
1228
1511
  } | undefined;
1229
1512
  materialPreset?: string | undefined;
@@ -1256,6 +1539,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1256
1539
  url: string;
1257
1540
  repeat?: [number, number] | undefined;
1258
1541
  scale?: number | undefined;
1542
+ offset?: [number, number] | undefined;
1543
+ normalMap?: string | undefined;
1544
+ normalScale?: number | undefined;
1545
+ bumpMap?: string | undefined;
1546
+ bumpScale?: number | undefined;
1259
1547
  } | undefined;
1260
1548
  } | undefined;
1261
1549
  } | undefined;
@@ -1273,6 +1561,121 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1273
1561
  zoneIds?: string[] | undefined;
1274
1562
  associatedZoneIds?: string[] | undefined;
1275
1563
  autoFromWalls: boolean;
1564
+ surfaceScript?: {
1565
+ kind: "script";
1566
+ meta?: {
1567
+ description?: string | undefined;
1568
+ category?: string | undefined;
1569
+ tags?: string[] | undefined;
1570
+ parent?: string | undefined;
1571
+ } | undefined;
1572
+ language: "bpy" | "three";
1573
+ script: string;
1574
+ params: Record<string, string | number | boolean>;
1575
+ artifact: string;
1576
+ manifest: {
1577
+ bounds: {
1578
+ min: [number, number, number];
1579
+ max: [number, number, number];
1580
+ };
1581
+ params: {
1582
+ id: string;
1583
+ label?: string | undefined;
1584
+ kind: "boolean" | "number" | "string";
1585
+ default: string | number | boolean;
1586
+ min?: number | undefined;
1587
+ max?: number | undefined;
1588
+ step?: number | undefined;
1589
+ unit?: string | undefined;
1590
+ options?: string[] | undefined;
1591
+ }[];
1592
+ parts: {
1593
+ id: string;
1594
+ label?: string | undefined;
1595
+ type?: string | undefined;
1596
+ bounds?: {
1597
+ min: [number, number, number];
1598
+ max: [number, number, number];
1599
+ } | undefined;
1600
+ }[];
1601
+ surfaces: {
1602
+ part?: string | undefined;
1603
+ y: number;
1604
+ polygon: [number, number][];
1605
+ }[];
1606
+ slots: {
1607
+ id: string;
1608
+ label?: string | undefined;
1609
+ color?: string | undefined;
1610
+ roughness?: number | undefined;
1611
+ metalness?: number | undefined;
1612
+ transparent?: boolean | undefined;
1613
+ emissive?: boolean | undefined;
1614
+ }[];
1615
+ anchors: {
1616
+ id: string;
1617
+ position: [number, number, number];
1618
+ normal?: [number, number, number] | undefined;
1619
+ }[];
1620
+ lights: {
1621
+ id: string;
1622
+ position: [number, number, number];
1623
+ color: string;
1624
+ intensity: number;
1625
+ distance?: number | undefined;
1626
+ spot?: {
1627
+ direction: [number, number, number];
1628
+ angle: number;
1629
+ softness: number;
1630
+ } | undefined;
1631
+ shadows?: boolean | undefined;
1632
+ glow?: {
1633
+ size: number;
1634
+ strength: number;
1635
+ } | undefined;
1636
+ }[];
1637
+ undersides: {
1638
+ part?: string | undefined;
1639
+ polygon: [number, number][];
1640
+ plane: [number, number, number, number];
1641
+ }[];
1642
+ animations: {
1643
+ name: string;
1644
+ duration: number;
1645
+ }[];
1646
+ cutters?: {
1647
+ host: "ceiling" | "mounted" | "slab" | "wall";
1648
+ polygon: number[][];
1649
+ minY: number;
1650
+ maxY: number;
1651
+ }[] | undefined;
1652
+ cutout: boolean;
1653
+ collider: boolean;
1654
+ shape?: {
1655
+ tolerance: number;
1656
+ bands: {
1657
+ y0: number;
1658
+ y1: number;
1659
+ polygons: {
1660
+ outer: [number, number][];
1661
+ holes?: [number, number][][] | undefined;
1662
+ }[];
1663
+ }[];
1664
+ } | undefined;
1665
+ triangles: number;
1666
+ coverage?: number | undefined;
1667
+ uncovered?: {
1668
+ min: [number, number];
1669
+ max: [number, number];
1670
+ }[] | undefined;
1671
+ };
1672
+ images?: {
1673
+ artifact: string;
1674
+ thumbnail: string;
1675
+ floorPlan: string;
1676
+ } | undefined;
1677
+ inputs: string;
1678
+ } | undefined;
1276
1679
  type: "slab";
1277
1680
  } | {
1278
1681
  object: "node";
@@ -1475,6 +1878,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1475
1878
  color: string;
1476
1879
  intensity: number;
1477
1880
  distance?: number | undefined;
1881
+ spot?: {
1882
+ direction: [number, number, number];
1883
+ angle: number;
1884
+ softness: number;
1885
+ } | undefined;
1886
+ shadows?: boolean | undefined;
1887
+ glow?: {
1888
+ size: number;
1889
+ strength: number;
1890
+ } | undefined;
1478
1891
  }[];
1479
1892
  undersides: {
1480
1893
  part?: string | undefined;
@@ -1493,6 +1906,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1493
1906
  }[] | undefined;
1494
1907
  cutout: boolean;
1495
1908
  collider: boolean;
1909
+ shape?: {
1910
+ tolerance: number;
1911
+ bands: {
1912
+ y0: number;
1913
+ y1: number;
1914
+ polygons: {
1915
+ outer: [number, number][];
1916
+ holes?: [number, number][][] | undefined;
1917
+ }[];
1918
+ }[];
1919
+ } | undefined;
1496
1920
  triangles: number;
1497
1921
  coverage?: number | undefined;
1498
1922
  uncovered?: {
@@ -1563,6 +1987,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1563
1987
  intensityRange: [number, number];
1564
1988
  distance?: number | undefined;
1565
1989
  offset: [number, number, number];
1990
+ spot?: {
1991
+ direction: [number, number, number];
1992
+ angle: number;
1993
+ softness: number;
1994
+ } | undefined;
1995
+ shadows?: boolean | undefined;
1996
+ glow?: {
1997
+ size: number;
1998
+ strength: number;
1999
+ } | undefined;
1566
2000
  })[];
1567
2001
  } | undefined;
1568
2002
  };
@@ -1606,6 +2040,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1606
2040
  url: string;
1607
2041
  repeat?: [number, number] | undefined;
1608
2042
  scale?: number | undefined;
2043
+ offset?: [number, number] | undefined;
2044
+ normalMap?: string | undefined;
2045
+ normalScale?: number | undefined;
2046
+ bumpMap?: string | undefined;
2047
+ bumpScale?: number | undefined;
1609
2048
  } | undefined;
1610
2049
  } | undefined;
1611
2050
  slots?: Record<string, string> | undefined;
@@ -1671,6 +2110,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1671
2110
  color: string;
1672
2111
  intensity: number;
1673
2112
  distance?: number | undefined;
2113
+ spot?: {
2114
+ direction: [number, number, number];
2115
+ angle: number;
2116
+ softness: number;
2117
+ } | undefined;
2118
+ shadows?: boolean | undefined;
2119
+ glow?: {
2120
+ size: number;
2121
+ strength: number;
2122
+ } | undefined;
1674
2123
  }[];
1675
2124
  undersides: {
1676
2125
  part?: string | undefined;
@@ -1689,6 +2138,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1689
2138
  }[] | undefined;
1690
2139
  cutout: boolean;
1691
2140
  collider: boolean;
2141
+ shape?: {
2142
+ tolerance: number;
2143
+ bands: {
2144
+ y0: number;
2145
+ y1: number;
2146
+ polygons: {
2147
+ outer: [number, number][];
2148
+ holes?: [number, number][][] | undefined;
2149
+ }[];
2150
+ }[];
2151
+ } | undefined;
1692
2152
  triangles: number;
1693
2153
  coverage?: number | undefined;
1694
2154
  uncovered?: {
@@ -1712,6 +2172,10 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1712
2172
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1713
2173
  width: number;
1714
2174
  height: number;
2175
+ sidelightLeft?: number | undefined;
2176
+ sidelightRight?: number | undefined;
2177
+ transomHeight?: number | undefined;
2178
+ slidingStyle?: "bypass" | "patio" | undefined;
1715
2179
  mark?: string | undefined;
1716
2180
  constructionType: "framed" | "masonry";
1717
2181
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -1723,7 +2187,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1723
2187
  finishOpeningHeight?: number | undefined;
1724
2188
  doorCategory: "garage" | "interior";
1725
2189
  doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1726
- leafCount: 1 | 2 | 3 | 4;
2190
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
1727
2191
  operationState: number;
1728
2192
  slideDirection: "left" | "right";
1729
2193
  trackStyle: "none" | "overhead" | "pocket" | "visible";
@@ -1736,9 +2200,12 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1736
2200
  archHeight: number;
1737
2201
  openingRevealRadius: number;
1738
2202
  frameThickness: number;
1739
- frameDepth: number;
2203
+ frameDepth?: number | undefined;
1740
2204
  threshold: boolean;
1741
2205
  thresholdHeight: number;
2206
+ casingFaceA?: boolean | undefined;
2207
+ casingFaceB?: boolean | undefined;
2208
+ casingWidth?: number | undefined;
1742
2209
  hingesSide: "left" | "right";
1743
2210
  swingDirection: "inward" | "outward";
1744
2211
  swingAngle: number;
@@ -1751,11 +2218,14 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1751
2218
  panelInset: number;
1752
2219
  }[];
1753
2220
  handle: boolean;
2221
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1754
2222
  handleHeight: number;
1755
2223
  handleSide: "left" | "right";
1756
2224
  contentPadding: [number, number];
1757
2225
  doorCloser: boolean;
1758
2226
  panicBar: boolean;
2227
+ panicBarStyle: "crossbar" | "touchbar";
2228
+ panicBarRods: boolean;
1759
2229
  panicBarHeight: number;
1760
2230
  type: "door";
1761
2231
  } | {
@@ -1798,6 +2268,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1798
2268
  url: string;
1799
2269
  repeat?: [number, number] | undefined;
1800
2270
  scale?: number | undefined;
2271
+ offset?: [number, number] | undefined;
2272
+ normalMap?: string | undefined;
2273
+ normalScale?: number | undefined;
2274
+ bumpMap?: string | undefined;
2275
+ bumpScale?: number | undefined;
1801
2276
  } | undefined;
1802
2277
  } | undefined;
1803
2278
  slots?: Record<string, string> | undefined;
@@ -1863,6 +2338,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1863
2338
  color: string;
1864
2339
  intensity: number;
1865
2340
  distance?: number | undefined;
2341
+ spot?: {
2342
+ direction: [number, number, number];
2343
+ angle: number;
2344
+ softness: number;
2345
+ } | undefined;
2346
+ shadows?: boolean | undefined;
2347
+ glow?: {
2348
+ size: number;
2349
+ strength: number;
2350
+ } | undefined;
1866
2351
  }[];
1867
2352
  undersides: {
1868
2353
  part?: string | undefined;
@@ -1881,6 +2366,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1881
2366
  }[] | undefined;
1882
2367
  cutout: boolean;
1883
2368
  collider: boolean;
2369
+ shape?: {
2370
+ tolerance: number;
2371
+ bands: {
2372
+ y0: number;
2373
+ y1: number;
2374
+ polygons: {
2375
+ outer: [number, number][];
2376
+ holes?: [number, number][][] | undefined;
2377
+ }[];
2378
+ }[];
2379
+ } | undefined;
1884
2380
  triangles: number;
1885
2381
  coverage?: number | undefined;
1886
2382
  uncovered?: {
@@ -1916,8 +2412,10 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1916
2412
  finishOpeningWidth?: number | undefined;
1917
2413
  finishOpeningHeight?: number | undefined;
1918
2414
  openingKind: "opening" | "window";
1919
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding";
2415
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1920
2416
  operationState: number;
2417
+ openingDirection?: "inward" | "outward" | undefined;
2418
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1921
2419
  awningDirection: "down" | "up";
1922
2420
  casementStyle: "french" | "single";
1923
2421
  hingesSide: "left" | "right";
@@ -1928,7 +2426,9 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1928
2426
  archHeight: number;
1929
2427
  openingRevealRadius: number;
1930
2428
  frameThickness: number;
1931
- frameDepth: number;
2429
+ frameDepth?: number | undefined;
2430
+ windowHandle?: boolean | undefined;
2431
+ sashGrid?: boolean | undefined;
1932
2432
  columnRatios: number[];
1933
2433
  rowRatios: number[];
1934
2434
  columnDividerThickness: number;
@@ -1941,6 +2441,21 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1941
2441
  sill: boolean;
1942
2442
  sillDepth: number;
1943
2443
  sillThickness: number;
2444
+ sillOverhang?: number | undefined;
2445
+ sillInterior?: boolean | undefined;
2446
+ sillInteriorDepth?: number | undefined;
2447
+ sillInteriorThickness?: number | undefined;
2448
+ sillInteriorOverhang?: number | undefined;
2449
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
2450
+ shutterWidth?: number | undefined;
2451
+ shutterOpen?: number | undefined;
2452
+ shutterSides?: "both" | "left" | "right" | undefined;
2453
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
2454
+ rollerShutterBoxHeight?: number | undefined;
2455
+ rollerShutterOpen?: number | undefined;
2456
+ casingFaceA?: boolean | undefined;
2457
+ casingFaceB?: boolean | undefined;
2458
+ casingWidth?: number | undefined;
1944
2459
  type: "window";
1945
2460
  } | {
1946
2461
  object: "node";
@@ -1967,7 +2482,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
1967
2482
  } | undefined;
1968
2483
  } | undefined;
1969
2484
  id: `wall_${string}`;
1970
- wallType?: "curtain" | "standard" | undefined;
2485
+ wallType?: "curtain" | "railing" | "standard" | undefined;
1971
2486
  curtainWall?: {
1972
2487
  construction: "stick" | "unitized";
1973
2488
  framing: "capped" | "horizontal-caps" | "structural-glazing" | "vertical-caps";
@@ -2001,6 +2516,15 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2001
2516
  type: "empty" | "glass" | "solid";
2002
2517
  }[];
2003
2518
  } | undefined;
2519
+ railing?: {
2520
+ style: "balusters" | "boards" | "cable" | "glass" | "metal" | "post-and-rail";
2521
+ postSpacing: number;
2522
+ postSize: number;
2523
+ infillSize: number;
2524
+ infillGap: number;
2525
+ bottomClearance: number;
2526
+ cap: boolean;
2527
+ } | undefined;
2004
2528
  children: (`door_${string}` | `item_${string}` | `leanto_${string}` | `procedural-item_${string}` | `window_${string}`)[];
2005
2529
  material?: {
2006
2530
  id?: string | undefined;
@@ -2017,6 +2541,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2017
2541
  url: string;
2018
2542
  repeat?: [number, number] | undefined;
2019
2543
  scale?: number | undefined;
2544
+ offset?: [number, number] | undefined;
2545
+ normalMap?: string | undefined;
2546
+ normalScale?: number | undefined;
2547
+ bumpMap?: string | undefined;
2548
+ bumpScale?: number | undefined;
2020
2549
  } | undefined;
2021
2550
  } | undefined;
2022
2551
  materialPreset?: string | undefined;
@@ -2035,6 +2564,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2035
2564
  url: string;
2036
2565
  repeat?: [number, number] | undefined;
2037
2566
  scale?: number | undefined;
2567
+ offset?: [number, number] | undefined;
2568
+ normalMap?: string | undefined;
2569
+ normalScale?: number | undefined;
2570
+ bumpMap?: string | undefined;
2571
+ bumpScale?: number | undefined;
2038
2572
  } | undefined;
2039
2573
  } | undefined;
2040
2574
  interiorMaterialPreset?: string | undefined;
@@ -2053,6 +2587,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2053
2587
  url: string;
2054
2588
  repeat?: [number, number] | undefined;
2055
2589
  scale?: number | undefined;
2590
+ offset?: [number, number] | undefined;
2591
+ normalMap?: string | undefined;
2592
+ normalScale?: number | undefined;
2593
+ bumpMap?: string | undefined;
2594
+ bumpScale?: number | undefined;
2056
2595
  } | undefined;
2057
2596
  } | undefined;
2058
2597
  exteriorMaterialPreset?: string | undefined;
@@ -2074,6 +2613,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2074
2613
  url: string;
2075
2614
  repeat?: [number, number] | undefined;
2076
2615
  scale?: number | undefined;
2616
+ offset?: [number, number] | undefined;
2617
+ normalMap?: string | undefined;
2618
+ normalScale?: number | undefined;
2619
+ bumpMap?: string | undefined;
2620
+ bumpScale?: number | undefined;
2077
2621
  } | undefined;
2078
2622
  } | undefined;
2079
2623
  materialPreset?: string | undefined;
@@ -2094,6 +2638,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2094
2638
  url: string;
2095
2639
  repeat?: [number, number] | undefined;
2096
2640
  scale?: number | undefined;
2641
+ offset?: [number, number] | undefined;
2642
+ normalMap?: string | undefined;
2643
+ normalScale?: number | undefined;
2644
+ bumpMap?: string | undefined;
2645
+ bumpScale?: number | undefined;
2097
2646
  } | undefined;
2098
2647
  } | undefined;
2099
2648
  materialPreset?: string | undefined;
@@ -2115,6 +2664,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2115
2664
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2116
2665
  thickness: number;
2117
2666
  core?: true | undefined;
2667
+ spacing?: number | undefined;
2118
2668
  material?: string | undefined;
2119
2669
  slot?: string | undefined;
2120
2670
  returns?: boolean | undefined;
@@ -2129,6 +2679,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2129
2679
  role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2130
2680
  thickness: number;
2131
2681
  core?: true | undefined;
2682
+ spacing?: number | undefined;
2132
2683
  material?: string | undefined;
2133
2684
  slot?: string | undefined;
2134
2685
  returns?: boolean | undefined;
@@ -2246,6 +2797,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2246
2797
  color: string;
2247
2798
  intensity: number;
2248
2799
  distance?: number | undefined;
2800
+ spot?: {
2801
+ direction: [number, number, number];
2802
+ angle: number;
2803
+ softness: number;
2804
+ } | undefined;
2805
+ shadows?: boolean | undefined;
2806
+ glow?: {
2807
+ size: number;
2808
+ strength: number;
2809
+ } | undefined;
2249
2810
  }[];
2250
2811
  undersides: {
2251
2812
  part?: string | undefined;
@@ -2264,6 +2825,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2264
2825
  }[] | undefined;
2265
2826
  cutout: boolean;
2266
2827
  collider: boolean;
2828
+ shape?: {
2829
+ tolerance: number;
2830
+ bands: {
2831
+ y0: number;
2832
+ y1: number;
2833
+ polygons: {
2834
+ outer: [number, number][];
2835
+ holes?: [number, number][][] | undefined;
2836
+ }[];
2837
+ }[];
2838
+ } | undefined;
2267
2839
  triangles: number;
2268
2840
  coverage?: number | undefined;
2269
2841
  uncovered?: {
@@ -2341,6 +2913,16 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2341
2913
  color: string;
2342
2914
  intensity: number;
2343
2915
  distance?: number | undefined;
2916
+ spot?: {
2917
+ direction: [number, number, number];
2918
+ angle: number;
2919
+ softness: number;
2920
+ } | undefined;
2921
+ shadows?: boolean | undefined;
2922
+ glow?: {
2923
+ size: number;
2924
+ strength: number;
2925
+ } | undefined;
2344
2926
  }[];
2345
2927
  undersides: {
2346
2928
  part?: string | undefined;
@@ -2359,6 +2941,17 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2359
2941
  }[] | undefined;
2360
2942
  cutout: boolean;
2361
2943
  collider: boolean;
2944
+ shape?: {
2945
+ tolerance: number;
2946
+ bands: {
2947
+ y0: number;
2948
+ y1: number;
2949
+ polygons: {
2950
+ outer: [number, number][];
2951
+ holes?: [number, number][][] | undefined;
2952
+ }[];
2953
+ }[];
2954
+ } | undefined;
2362
2955
  triangles: number;
2363
2956
  coverage?: number | undefined;
2364
2957
  uncovered?: {
@@ -2380,6 +2973,70 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2380
2973
  frontSide: "exterior" | "interior" | "unknown";
2381
2974
  backSide: "exterior" | "interior" | "unknown";
2382
2975
  type: "wall";
2976
+ } | {
2977
+ object: "node";
2978
+ name?: string | undefined;
2979
+ parentId: string | null;
2980
+ visible: boolean;
2981
+ camera?: {
2982
+ position: [number, number, number];
2983
+ target: [number, number, number];
2984
+ mode: "orthographic" | "perspective";
2985
+ fov?: number | undefined;
2986
+ zoom?: number | undefined;
2987
+ } | undefined;
2988
+ metadata: Record<string, unknown>;
2989
+ provenance?: {
2990
+ refs: {
2991
+ ns?: string | undefined;
2992
+ id: string;
2993
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2994
+ }[];
2995
+ lineage?: {
2996
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2997
+ fromIds: string[];
2998
+ } | undefined;
2999
+ } | undefined;
3000
+ id: `separator_${string}`;
3001
+ start: [number, number];
3002
+ end: [number, number];
3003
+ type: "separator";
3004
+ } | {
3005
+ object: "node";
3006
+ name?: string | undefined;
3007
+ parentId: string | null;
3008
+ visible: boolean;
3009
+ camera?: {
3010
+ position: [number, number, number];
3011
+ target: [number, number, number];
3012
+ mode: "orthographic" | "perspective";
3013
+ fov?: number | undefined;
3014
+ zoom?: number | undefined;
3015
+ } | undefined;
3016
+ metadata: Record<string, unknown>;
3017
+ provenance?: {
3018
+ refs: {
3019
+ ns?: string | undefined;
3020
+ id: string;
3021
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3022
+ }[];
3023
+ lineage?: {
3024
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3025
+ fromIds: string[];
3026
+ } | undefined;
3027
+ } | undefined;
3028
+ id: `floor-opening_${string}`;
3029
+ polygon: [number, number][];
3030
+ hostZoneId?: string | undefined;
3031
+ legacyPlateCuts?: Record<string, [number, number][][]> | undefined;
3032
+ legacyCeilingCuts?: Record<string, [number, number][][]> | undefined;
3033
+ source: string;
3034
+ ownerId?: string | undefined;
3035
+ surfaceId?: string | undefined;
3036
+ drawnOn: "ceiling" | "floor";
3037
+ cutsPrimary: boolean;
3038
+ cutsAdjacent: boolean;
3039
+ type: "floor-opening";
2383
3040
  } | {
2384
3041
  object: "node";
2385
3042
  name?: string | undefined;
@@ -2421,6 +3078,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2421
3078
  url: string;
2422
3079
  repeat?: [number, number] | undefined;
2423
3080
  scale?: number | undefined;
3081
+ offset?: [number, number] | undefined;
3082
+ normalMap?: string | undefined;
3083
+ normalScale?: number | undefined;
3084
+ bumpMap?: string | undefined;
3085
+ bumpScale?: number | undefined;
2424
3086
  } | undefined;
2425
3087
  } | undefined;
2426
3088
  materialPreset?: string | undefined;
@@ -2469,6 +3131,42 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2469
3131
  color: string;
2470
3132
  style: "guard" | "horizontal" | "picket" | "privacy" | "rail" | "slat";
2471
3133
  type: "fence";
3134
+ } | {
3135
+ object: "node";
3136
+ name?: string | undefined;
3137
+ parentId: string | null;
3138
+ visible: boolean;
3139
+ camera?: {
3140
+ position: [number, number, number];
3141
+ target: [number, number, number];
3142
+ mode: "orthographic" | "perspective";
3143
+ fov?: number | undefined;
3144
+ zoom?: number | undefined;
3145
+ } | undefined;
3146
+ metadata: Record<string, unknown>;
3147
+ provenance?: {
3148
+ refs: {
3149
+ ns?: string | undefined;
3150
+ id: string;
3151
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3152
+ }[];
3153
+ lineage?: {
3154
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3155
+ fromIds: string[];
3156
+ } | undefined;
3157
+ } | undefined;
3158
+ id: `beam_${string}`;
3159
+ start: [number, number];
3160
+ end: [number, number];
3161
+ width: number;
3162
+ depth: number;
3163
+ size?: string | undefined;
3164
+ plies: number;
3165
+ material: "glulam" | "lvl" | "pressure-treated" | "sawn" | "steel";
3166
+ placement: "dropped" | "flush";
3167
+ topElevation?: number | undefined;
3168
+ supportSlabId?: string | undefined;
3169
+ type: "beam";
2472
3170
  } | {
2473
3171
  object: "node";
2474
3172
  name?: string | undefined;
@@ -2772,253 +3470,81 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
2772
3470
  rotation?: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr] | undefined;
2773
3471
  } | {
2774
3472
  support?: boolean | undefined;
2775
- when?: import("../procedural-items/index.js").Expr | undefined;
2776
- id: string;
2777
- primitive: "revolve";
2778
- slot: string;
2779
- profile: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr][];
2780
- segments?: number | undefined;
2781
- arc?: import("../procedural-items/index.js").Expr | undefined;
2782
- position: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
2783
- rotation?: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr] | undefined;
2784
- })[];
2785
- }[];
2786
- joints?: {
2787
- delay?: import("../procedural-items/index.js").Expr | undefined;
2788
- duration?: import("../procedural-items/index.js").Expr | undefined;
2789
- easing?: "linear" | "smooth" | "soft" | undefined;
2790
- child: string;
2791
- kind: "continuous" | "fixed" | "prismatic" | "revolute";
2792
- origin: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
2793
- axis: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
2794
- open?: import("../procedural-items/index.js").Expr | undefined;
2795
- rest?: import("../procedural-items/index.js").Expr | undefined;
2796
- range?: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr] | undefined;
2797
- speed?: import("../procedural-items/index.js").Expr | undefined;
2798
- }[] | undefined;
2799
- constraints: {
2800
- left: import("../procedural-items/index.js").Expr;
2801
- relation: "gte" | "lte";
2802
- right: import("../procedural-items/index.js").Expr;
2803
- message: string;
2804
- }[];
2805
- };
2806
- parameters: Record<string, number>;
2807
- slots: Record<string, string>;
2808
- position: [number, number, number];
2809
- rotation: [number, number, number];
2810
- wallId?: string | undefined;
2811
- side?: "back" | "front" | undefined;
2812
- supportSlabId?: string | undefined;
2813
- children: string[];
2814
- attachments: Record<string, string>;
2815
- } | {
2816
- object: "node";
2817
- name?: string | undefined;
2818
- parentId: string | null;
2819
- visible: boolean;
2820
- camera?: {
2821
- position: [number, number, number];
2822
- target: [number, number, number];
2823
- mode: "orthographic" | "perspective";
2824
- fov?: number | undefined;
2825
- zoom?: number | undefined;
2826
- } | undefined;
2827
- metadata: Record<string, unknown>;
2828
- provenance?: {
2829
- refs: {
2830
- ns?: string | undefined;
2831
- id: string;
2832
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2833
- }[];
2834
- lineage?: {
2835
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2836
- fromIds: string[];
2837
- } | undefined;
2838
- } | undefined;
2839
- id: `imesh_${string}`;
2840
- position: [number, number, number];
2841
- rotation: [number, number, number];
2842
- primitives: {
2843
- positions: number[];
2844
- normals?: number[] | undefined;
2845
- indices: number[];
2846
- color: string;
2847
- opacity: number;
2848
- }[];
2849
- type: "imported-mesh";
2850
- } | {
2851
- object: "node";
2852
- parentId: string | null;
2853
- visible: boolean;
2854
- camera?: {
2855
- position: [number, number, number];
2856
- target: [number, number, number];
2857
- mode: "orthographic" | "perspective";
2858
- fov?: number | undefined;
2859
- zoom?: number | undefined;
2860
- } | undefined;
2861
- provenance?: {
2862
- refs: {
2863
- ns?: string | undefined;
2864
- id: string;
2865
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2866
- }[];
2867
- lineage?: {
2868
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2869
- fromIds: string[];
2870
- } | undefined;
2871
- } | undefined;
2872
- id: `zone_${string}`;
2873
- name: string;
2874
- polygon: [number, number][];
2875
- holes: [number, number][][];
2876
- autoFromWalls: boolean;
2877
- boundaryWallIds: `wall_${string}`[];
2878
- boundarySeparatorIds: string[];
2879
- hostZoneId?: string | undefined;
2880
- seed?: [number, number] | undefined;
2881
- floor?: {
2882
- elevation?: number | undefined;
2883
- support?: "open" | undefined;
2884
- footprint?: string | undefined;
2885
- thickness?: number | undefined;
2886
- sourceSlabId?: `slab_${string}` | undefined;
2887
- finish?: string | Record<string, unknown> | undefined;
2888
- regions?: {
2889
- id: string;
2890
- polygon: [number, number][];
2891
- finish: string | Record<string, unknown>;
2892
- }[] | undefined;
2893
- script?: {
2894
- kind: "script";
2895
- meta?: {
2896
- description?: string | undefined;
2897
- category?: string | undefined;
2898
- tags?: string[] | undefined;
2899
- parent?: string | undefined;
2900
- } | undefined;
2901
- language: "bpy" | "three";
2902
- script: string;
2903
- params: Record<string, string | number | boolean>;
2904
- artifact: string;
2905
- manifest: {
2906
- bounds: {
2907
- min: [number, number, number];
2908
- max: [number, number, number];
2909
- };
2910
- params: {
2911
- id: string;
2912
- label?: string | undefined;
2913
- kind: "boolean" | "number" | "string";
2914
- default: string | number | boolean;
2915
- min?: number | undefined;
2916
- max?: number | undefined;
2917
- step?: number | undefined;
2918
- unit?: string | undefined;
2919
- options?: string[] | undefined;
2920
- }[];
2921
- parts: {
2922
- id: string;
2923
- label?: string | undefined;
2924
- type?: string | undefined;
2925
- bounds?: {
2926
- min: [number, number, number];
2927
- max: [number, number, number];
2928
- } | undefined;
2929
- }[];
2930
- surfaces: {
2931
- part?: string | undefined;
2932
- y: number;
2933
- polygon: [number, number][];
2934
- }[];
2935
- slots: {
2936
- id: string;
2937
- label?: string | undefined;
2938
- color?: string | undefined;
2939
- roughness?: number | undefined;
2940
- metalness?: number | undefined;
2941
- transparent?: boolean | undefined;
2942
- emissive?: boolean | undefined;
2943
- }[];
2944
- anchors: {
2945
- id: string;
2946
- position: [number, number, number];
2947
- normal?: [number, number, number] | undefined;
2948
- }[];
2949
- lights: {
2950
- id: string;
2951
- position: [number, number, number];
2952
- color: string;
2953
- intensity: number;
2954
- distance?: number | undefined;
2955
- }[];
2956
- undersides: {
2957
- part?: string | undefined;
2958
- polygon: [number, number][];
2959
- plane: [number, number, number, number];
2960
- }[];
2961
- animations: {
2962
- name: string;
2963
- duration: number;
2964
- }[];
2965
- cutters?: {
2966
- host: "ceiling" | "mounted" | "slab" | "wall";
2967
- polygon: number[][];
2968
- minY: number;
2969
- maxY: number;
2970
- }[] | undefined;
2971
- cutout: boolean;
2972
- collider: boolean;
2973
- triangles: number;
2974
- coverage?: number | undefined;
2975
- uncovered?: {
2976
- min: [number, number];
2977
- max: [number, number];
2978
- }[] | undefined;
2979
- };
2980
- images?: {
2981
- artifact: string;
2982
- thumbnail: string;
2983
- floorPlan: string;
2984
- } | undefined;
2985
- inputs: string;
2986
- } | undefined;
2987
- } | undefined;
2988
- ceiling?: {
2989
- regions?: {
2990
- id: string;
2991
- polygon: [number, number][];
2992
- finish: string | Record<string, unknown>;
3473
+ when?: import("../procedural-items/index.js").Expr | undefined;
3474
+ id: string;
3475
+ primitive: "revolve";
3476
+ slot: string;
3477
+ profile: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr][];
3478
+ segments?: number | undefined;
3479
+ arc?: import("../procedural-items/index.js").Expr | undefined;
3480
+ position: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
3481
+ rotation?: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr] | undefined;
3482
+ })[];
3483
+ }[];
3484
+ joints?: {
3485
+ delay?: import("../procedural-items/index.js").Expr | undefined;
3486
+ duration?: import("../procedural-items/index.js").Expr | undefined;
3487
+ easing?: "linear" | "smooth" | "soft" | undefined;
3488
+ child: string;
3489
+ kind: "continuous" | "fixed" | "prismatic" | "revolute";
3490
+ origin: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
3491
+ axis: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr];
3492
+ open?: import("../procedural-items/index.js").Expr | undefined;
3493
+ rest?: import("../procedural-items/index.js").Expr | undefined;
3494
+ range?: [import("../procedural-items/index.js").Expr, import("../procedural-items/index.js").Expr] | undefined;
3495
+ speed?: import("../procedural-items/index.js").Expr | undefined;
2993
3496
  }[] | undefined;
3497
+ constraints: {
3498
+ left: import("../procedural-items/index.js").Expr;
3499
+ relation: "gte" | "lte";
3500
+ right: import("../procedural-items/index.js").Expr;
3501
+ message: string;
3502
+ }[];
3503
+ };
3504
+ parameters: Record<string, number>;
3505
+ slots: Record<string, string>;
3506
+ position: [number, number, number];
3507
+ rotation: [number, number, number];
3508
+ wallId?: string | undefined;
3509
+ side?: "back" | "front" | undefined;
3510
+ supportSlabId?: string | undefined;
3511
+ children: string[];
3512
+ attachments: Record<string, string>;
3513
+ } | {
3514
+ object: "node";
3515
+ name?: string | undefined;
3516
+ parentId: string | null;
3517
+ visible: boolean;
3518
+ camera?: {
3519
+ position: [number, number, number];
3520
+ target: [number, number, number];
3521
+ mode: "orthographic" | "perspective";
3522
+ fov?: number | undefined;
3523
+ zoom?: number | undefined;
2994
3524
  } | undefined;
2995
- floorStepFinish?: string | undefined;
2996
- floorStepOverrides?: {
2997
- key: string;
2998
- step?: number | undefined;
2999
- finish: string;
3000
- }[] | undefined;
3001
- floorEdgeFinish?: string | undefined;
3002
- wallMaterial?: string | undefined;
3003
- wallOverrides?: {
3004
- wallId: string;
3005
- face: "a" | "b";
3006
- finish: string;
3007
- }[] | undefined;
3008
- hasFloor?: false | undefined;
3009
- hasCeiling?: false | undefined;
3010
- spaceRole: "generic" | "room";
3011
- roomNumber: string;
3012
- enclosureStatus: "auto" | "enclosed" | "open";
3013
- floorFinish: string;
3014
- wallFinish: string;
3015
- ceilingFinish: string;
3016
- ceilingHeight: number;
3017
- occupancy: string;
3018
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3019
- color: string;
3020
3525
  metadata: Record<string, unknown>;
3021
- type: "zone";
3526
+ provenance?: {
3527
+ refs: {
3528
+ ns?: string | undefined;
3529
+ id: string;
3530
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3531
+ }[];
3532
+ lineage?: {
3533
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3534
+ fromIds: string[];
3535
+ } | undefined;
3536
+ } | undefined;
3537
+ id: `imesh_${string}`;
3538
+ position: [number, number, number];
3539
+ rotation: [number, number, number];
3540
+ primitives: {
3541
+ positions: number[];
3542
+ normals?: number[] | undefined;
3543
+ indices: number[];
3544
+ color: string;
3545
+ opacity: number;
3546
+ }[];
3547
+ type: "imported-mesh";
3022
3548
  } | {
3023
3549
  object: "node";
3024
3550
  name?: string | undefined;
@@ -3060,6 +3586,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3060
3586
  url: string;
3061
3587
  repeat?: [number, number] | undefined;
3062
3588
  scale?: number | undefined;
3589
+ offset?: [number, number] | undefined;
3590
+ normalMap?: string | undefined;
3591
+ normalScale?: number | undefined;
3592
+ bumpMap?: string | undefined;
3593
+ bumpScale?: number | undefined;
3063
3594
  } | undefined;
3064
3595
  } | undefined;
3065
3596
  materialPreset?: string | undefined;
@@ -3074,6 +3605,29 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3074
3605
  }[];
3075
3606
  openingIds?: string[] | undefined;
3076
3607
  height?: number | undefined;
3608
+ buildUp?: {
3609
+ presetId?: string | undefined;
3610
+ finish?: {
3611
+ kind: "drywall" | "plaster" | "wood-plank";
3612
+ thickness: number;
3613
+ name?: string | undefined;
3614
+ } | undefined;
3615
+ framing?: {
3616
+ system: "joists" | "truss-chords";
3617
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3618
+ spacing: number;
3619
+ } | undefined;
3620
+ decking?: {
3621
+ kind: "osb" | "plywood";
3622
+ thickness: number;
3623
+ name?: string | undefined;
3624
+ } | undefined;
3625
+ insulation?: {
3626
+ kind: "batt" | "blown" | "rigid";
3627
+ thickness: number;
3628
+ name?: string | undefined;
3629
+ } | undefined;
3630
+ } | undefined;
3077
3631
  regions?: {
3078
3632
  id: string;
3079
3633
  polygon: [number, number][];
@@ -3157,9 +3711,118 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3157
3711
  realLengthMeters: number;
3158
3712
  measuredLengthUnits: number;
3159
3713
  metersPerUnit: number;
3714
+ displayLength?: number | undefined;
3715
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
3160
3716
  label: string;
3161
3717
  } | null;
3162
3718
  type: "guide";
3719
+ } | {
3720
+ object: "node";
3721
+ name?: string | undefined;
3722
+ parentId: string | null;
3723
+ visible: boolean;
3724
+ camera?: {
3725
+ position: [number, number, number];
3726
+ target: [number, number, number];
3727
+ mode: "orthographic" | "perspective";
3728
+ fov?: number | undefined;
3729
+ zoom?: number | undefined;
3730
+ } | undefined;
3731
+ metadata: Record<string, unknown>;
3732
+ provenance?: {
3733
+ refs: {
3734
+ ns?: string | undefined;
3735
+ id: string;
3736
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3737
+ }[];
3738
+ lineage?: {
3739
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3740
+ fromIds: string[];
3741
+ } | undefined;
3742
+ } | undefined;
3743
+ id: `measurement_${string}`;
3744
+ measurement: {
3745
+ kind: "distance";
3746
+ points: [{
3747
+ kind: "feature";
3748
+ reference: {
3749
+ nodeId: string;
3750
+ featureId: string;
3751
+ parameters?: Record<string, string | number | boolean> | undefined;
3752
+ };
3753
+ fallback: [number, number, number];
3754
+ } | [number, number, number], {
3755
+ kind: "feature";
3756
+ reference: {
3757
+ nodeId: string;
3758
+ featureId: string;
3759
+ parameters?: Record<string, string | number | boolean> | undefined;
3760
+ };
3761
+ fallback: [number, number, number];
3762
+ } | [number, number, number]];
3763
+ } | {
3764
+ kind: "angle";
3765
+ points: [{
3766
+ kind: "feature";
3767
+ reference: {
3768
+ nodeId: string;
3769
+ featureId: string;
3770
+ parameters?: Record<string, string | number | boolean> | undefined;
3771
+ };
3772
+ fallback: [number, number, number];
3773
+ } | [number, number, number], {
3774
+ kind: "feature";
3775
+ reference: {
3776
+ nodeId: string;
3777
+ featureId: string;
3778
+ parameters?: Record<string, string | number | boolean> | undefined;
3779
+ };
3780
+ fallback: [number, number, number];
3781
+ } | [number, number, number], {
3782
+ kind: "feature";
3783
+ reference: {
3784
+ nodeId: string;
3785
+ featureId: string;
3786
+ parameters?: Record<string, string | number | boolean> | undefined;
3787
+ };
3788
+ fallback: [number, number, number];
3789
+ } | [number, number, number]];
3790
+ } | {
3791
+ kind: "area";
3792
+ base: ({
3793
+ kind: "feature";
3794
+ reference: {
3795
+ nodeId: string;
3796
+ featureId: string;
3797
+ parameters?: Record<string, string | number | boolean> | undefined;
3798
+ };
3799
+ fallback: [number, number, number];
3800
+ } | [number, number, number])[];
3801
+ } | {
3802
+ kind: "perimeter";
3803
+ base: ({
3804
+ kind: "feature";
3805
+ reference: {
3806
+ nodeId: string;
3807
+ featureId: string;
3808
+ parameters?: Record<string, string | number | boolean> | undefined;
3809
+ };
3810
+ fallback: [number, number, number];
3811
+ } | [number, number, number])[];
3812
+ } | {
3813
+ kind: "volume";
3814
+ base: ({
3815
+ kind: "feature";
3816
+ reference: {
3817
+ nodeId: string;
3818
+ featureId: string;
3819
+ parameters?: Record<string, string | number | boolean> | undefined;
3820
+ };
3821
+ fallback: [number, number, number];
3822
+ } | [number, number, number])[];
3823
+ extrusion: [number, number, number];
3824
+ };
3825
+ type: "measurement";
3163
3826
  } | {
3164
3827
  object: "node";
3165
3828
  name?: string | undefined;
@@ -3244,6 +3907,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3244
3907
  url: string;
3245
3908
  repeat?: [number, number] | undefined;
3246
3909
  scale?: number | undefined;
3910
+ offset?: [number, number] | undefined;
3911
+ normalMap?: string | undefined;
3912
+ normalScale?: number | undefined;
3913
+ bumpMap?: string | undefined;
3914
+ bumpScale?: number | undefined;
3247
3915
  } | undefined;
3248
3916
  } | undefined;
3249
3917
  materialPreset?: string | undefined;
@@ -3273,29 +3941,36 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3273
3941
  fromIds: string[];
3274
3942
  } | undefined;
3275
3943
  } | undefined;
3276
- id: `duct-fitting_${string}`;
3277
- position: [number, number, number];
3278
- rotation: [number, number, number];
3279
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
3944
+ id: `duct-segment_${string}`;
3945
+ path: [number, number, number][];
3946
+ autoHangers?: boolean | undefined;
3947
+ hangerOverrides?: Record<string, {
3948
+ fraction?: number | undefined;
3949
+ skipped?: boolean | undefined;
3950
+ hostId?: string | undefined;
3951
+ }> | undefined;
3952
+ hangerStyle?: "double" | "single" | undefined;
3953
+ hangerSpacing?: number | undefined;
3954
+ hangerMaxReach?: number | undefined;
3955
+ wallAttachment?: {
3956
+ wallId: `wall_${string}`;
3957
+ side: "back" | "front";
3958
+ startUV: [number, number];
3959
+ endUV: [number, number];
3960
+ offset: number;
3961
+ } | undefined;
3280
3962
  shape: "oval" | "rect" | "round";
3281
- inletShape?: "oval" | "rect" | "round" | undefined;
3282
- outletShape?: "oval" | "rect" | "round" | undefined;
3963
+ diameter: number;
3283
3964
  width: number;
3284
3965
  height: number;
3285
- shape2: "oval" | "rect" | "round";
3286
- width2: number;
3287
- height2: number;
3288
- angle: number;
3289
- branchAngle: number;
3290
- diameter: number;
3291
- diameter2: number;
3292
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
3966
+ roll: number;
3967
+ ductMaterial: "duct-board" | "flex" | "sheet-metal" | "spiral";
3968
+ seamDetail: boolean;
3969
+ insulated: boolean;
3970
+ insulationR: number;
3293
3971
  system: "return" | "supply";
3294
- damperAngle: number;
3295
- panelWidth: number;
3296
- panelHeight: number;
3297
3972
  slots?: Record<string, string> | undefined;
3298
- type: "duct-fitting";
3973
+ type: "duct-segment";
3299
3974
  } | {
3300
3975
  object: "node";
3301
3976
  name?: string | undefined;
@@ -3357,23 +4032,12 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3357
4032
  fromIds: string[];
3358
4033
  } | undefined;
3359
4034
  } | undefined;
3360
- id: `hvac-equipment_${string}`;
3361
- position: [number, number, number];
3362
- rotation: number;
3363
- supportSlabId?: string | undefined;
3364
- equipmentType: "air-handler" | "condenser" | "furnace";
3365
- width: number;
3366
- depth: number;
3367
- height: number;
3368
- supplyShape: "oval" | "rect" | "round";
3369
- returnShape: "oval" | "rect" | "round";
3370
- supplyDiameter: number;
3371
- returnDiameter: number;
3372
- supplyWidth: number;
3373
- supplyHeight: number;
3374
- returnWidth: number;
3375
- returnHeight: number;
3376
- type: "hvac-equipment";
4035
+ id: `lineset_${string}`;
4036
+ path: [number, number, number][];
4037
+ suctionDiameter: number;
4038
+ liquidDiameter: number;
4039
+ insulated: boolean;
4040
+ type: "lineset";
3377
4041
  } | {
3378
4042
  object: "node";
3379
4043
  name?: string | undefined;
@@ -3472,17 +4136,13 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3472
4136
  fromIds: string[];
3473
4137
  } | undefined;
3474
4138
  } | undefined;
3475
- id: `pipe-fitting_${string}`;
4139
+ id: `pipe-trap_${string}`;
3476
4140
  position: [number, number, number];
3477
- rotation: [number, number, number];
3478
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
3479
- angle: number;
4141
+ rotation: number;
3480
4142
  diameter: number;
3481
- diameter2: number;
3482
- cleanoutStyle: "end" | "inline";
3483
4143
  pipeMaterial: "abs" | "cast-iron" | "pvc";
3484
- system: "vent" | "waste";
3485
- type: "pipe-fitting";
4144
+ armLengthM: number;
4145
+ type: "pipe-trap";
3486
4146
  } | {
3487
4147
  object: "node";
3488
4148
  name?: string | undefined;
@@ -3508,7 +4168,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3508
4168
  } | undefined;
3509
4169
  } | undefined;
3510
4170
  id: `level_${string}`;
3511
- 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}`)[];
4171
+ 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}`)[];
3512
4172
  level: number;
3513
4173
  baseElevation: number;
3514
4174
  height?: number | undefined;
@@ -3553,6 +4213,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3553
4213
  url: string;
3554
4214
  repeat?: [number, number] | undefined;
3555
4215
  scale?: number | undefined;
4216
+ offset?: [number, number] | undefined;
4217
+ normalMap?: string | undefined;
4218
+ normalScale?: number | undefined;
4219
+ bumpMap?: string | undefined;
4220
+ bumpScale?: number | undefined;
3556
4221
  } | undefined;
3557
4222
  } | undefined;
3558
4223
  materialPreset?: string | undefined;
@@ -3571,6 +4236,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3571
4236
  url: string;
3572
4237
  repeat?: [number, number] | undefined;
3573
4238
  scale?: number | undefined;
4239
+ offset?: [number, number] | undefined;
4240
+ normalMap?: string | undefined;
4241
+ normalScale?: number | undefined;
4242
+ bumpMap?: string | undefined;
4243
+ bumpScale?: number | undefined;
3574
4244
  } | undefined;
3575
4245
  } | undefined;
3576
4246
  topMaterialPreset?: string | undefined;
@@ -3652,6 +4322,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3652
4322
  url: string;
3653
4323
  repeat?: [number, number] | undefined;
3654
4324
  scale?: number | undefined;
4325
+ offset?: [number, number] | undefined;
4326
+ normalMap?: string | undefined;
4327
+ normalScale?: number | undefined;
4328
+ bumpMap?: string | undefined;
4329
+ bumpScale?: number | undefined;
3655
4330
  } | undefined;
3656
4331
  } | undefined;
3657
4332
  slots?: Record<string, string> | undefined;
@@ -3706,6 +4381,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3706
4381
  url: string;
3707
4382
  repeat?: [number, number] | undefined;
3708
4383
  scale?: number | undefined;
4384
+ offset?: [number, number] | undefined;
4385
+ normalMap?: string | undefined;
4386
+ normalScale?: number | undefined;
4387
+ bumpMap?: string | undefined;
4388
+ bumpScale?: number | undefined;
3709
4389
  } | undefined;
3710
4390
  } | undefined;
3711
4391
  materialPreset?: string | undefined;
@@ -3718,6 +4398,94 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3718
4398
  style: "metal" | "shingled" | "standard";
3719
4399
  endCaps: boolean;
3720
4400
  type: "ridge-vent";
4401
+ } | {
4402
+ object: "node";
4403
+ name?: string | undefined;
4404
+ parentId: string | null;
4405
+ visible: boolean;
4406
+ camera?: {
4407
+ position: [number, number, number];
4408
+ target: [number, number, number];
4409
+ mode: "orthographic" | "perspective";
4410
+ fov?: number | undefined;
4411
+ zoom?: number | undefined;
4412
+ } | undefined;
4413
+ metadata: Record<string, unknown>;
4414
+ provenance?: {
4415
+ refs: {
4416
+ ns?: string | undefined;
4417
+ id: string;
4418
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4419
+ }[];
4420
+ lineage?: {
4421
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4422
+ fromIds: string[];
4423
+ } | undefined;
4424
+ } | undefined;
4425
+ id: `solarpanel_${string}`;
4426
+ material?: {
4427
+ id?: string | undefined;
4428
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4429
+ properties?: {
4430
+ color: string;
4431
+ roughness: number;
4432
+ metalness: number;
4433
+ opacity: number;
4434
+ transparent: boolean;
4435
+ side: "back" | "double" | "front";
4436
+ } | undefined;
4437
+ texture?: {
4438
+ url: string;
4439
+ repeat?: [number, number] | undefined;
4440
+ scale?: number | undefined;
4441
+ offset?: [number, number] | undefined;
4442
+ normalMap?: string | undefined;
4443
+ normalScale?: number | undefined;
4444
+ bumpMap?: string | undefined;
4445
+ bumpScale?: number | undefined;
4446
+ } | undefined;
4447
+ } | undefined;
4448
+ materialPreset?: string | undefined;
4449
+ panelMaterial?: {
4450
+ id?: string | undefined;
4451
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4452
+ properties?: {
4453
+ color: string;
4454
+ roughness: number;
4455
+ metalness: number;
4456
+ opacity: number;
4457
+ transparent: boolean;
4458
+ side: "back" | "double" | "front";
4459
+ } | undefined;
4460
+ texture?: {
4461
+ url: string;
4462
+ repeat?: [number, number] | undefined;
4463
+ scale?: number | undefined;
4464
+ offset?: [number, number] | undefined;
4465
+ normalMap?: string | undefined;
4466
+ normalScale?: number | undefined;
4467
+ bumpMap?: string | undefined;
4468
+ bumpScale?: number | undefined;
4469
+ } | undefined;
4470
+ } | undefined;
4471
+ panelMaterialPreset?: string | undefined;
4472
+ panelTypePreset?: "compact" | "frameless" | "residential" | "residential-large" | undefined;
4473
+ roofSegmentId?: string | undefined;
4474
+ position: [number, number, number];
4475
+ rotation: number;
4476
+ rows: number;
4477
+ columns: number;
4478
+ panelWidth: number;
4479
+ panelHeight: number;
4480
+ gapX: number;
4481
+ gapY: number;
4482
+ mountingType: "flush" | "tilted";
4483
+ tiltAngle: number;
4484
+ standoffHeight: number;
4485
+ frameThickness: number;
4486
+ frameDepth: number;
4487
+ surfaceNormal?: [number, number, number] | undefined;
4488
+ type: "solar-panel";
3721
4489
  } | {
3722
4490
  object: "node";
3723
4491
  name?: string | undefined;
@@ -3893,6 +4661,45 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3893
4661
  points: [number, number][];
3894
4662
  }[];
3895
4663
  } | undefined;
4664
+ wallTypes?: {
4665
+ id: string;
4666
+ label: string;
4667
+ assembly: {
4668
+ layers: {
4669
+ id: string;
4670
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
4671
+ thickness: number;
4672
+ core?: true | undefined;
4673
+ spacing?: number | undefined;
4674
+ material?: string | undefined;
4675
+ slot?: string | undefined;
4676
+ returns?: boolean | undefined;
4677
+ display?: "construction" | "finished" | undefined;
4678
+ inset?: number | undefined;
4679
+ bottom?: number | undefined;
4680
+ lift?: number | undefined;
4681
+ src?: string | undefined;
4682
+ }[];
4683
+ backing?: {
4684
+ id: string;
4685
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
4686
+ thickness: number;
4687
+ core?: true | undefined;
4688
+ spacing?: number | undefined;
4689
+ material?: string | undefined;
4690
+ slot?: string | undefined;
4691
+ returns?: boolean | undefined;
4692
+ display?: "construction" | "finished" | undefined;
4693
+ inset?: number | undefined;
4694
+ bottom?: number | undefined;
4695
+ lift?: number | undefined;
4696
+ src?: string | undefined;
4697
+ }[] | undefined;
4698
+ face?: "exterior" | "front" | undefined;
4699
+ presetId?: string | undefined;
4700
+ cavityInsulation?: string | undefined;
4701
+ };
4702
+ }[] | undefined;
3896
4703
  children: string[];
3897
4704
  type: "site";
3898
4705
  } | {
@@ -3919,7 +4726,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3919
4726
  fromIds: string[];
3920
4727
  } | undefined;
3921
4728
  } | undefined;
3922
- id: `tvent_${string}`;
4729
+ id: `elevator_${string}`;
3923
4730
  material?: {
3924
4731
  id?: string | undefined;
3925
4732
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -3935,21 +4742,38 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
3935
4742
  url: string;
3936
4743
  repeat?: [number, number] | undefined;
3937
4744
  scale?: number | undefined;
4745
+ offset?: [number, number] | undefined;
4746
+ normalMap?: string | undefined;
4747
+ normalScale?: number | undefined;
4748
+ bumpMap?: string | undefined;
4749
+ bumpScale?: number | undefined;
3938
4750
  } | undefined;
3939
4751
  } | undefined;
4752
+ materialPreset?: string | undefined;
3940
4753
  slots?: Record<string, string> | undefined;
3941
- materialPreset: string;
3942
- roofSegmentId?: string | undefined;
3943
4754
  position: [number, number, number];
3944
4755
  rotation: number;
3945
- diameter: number;
3946
- height: number;
3947
- neckHeight: number;
3948
- baseOverhang: number;
3949
- vaneCount: number;
3950
- spinSpeed: number;
3951
- style: "cylinder" | "globe";
3952
- type: "turbine-vent";
4756
+ width: number;
4757
+ depth: number;
4758
+ shaftWidth?: number | undefined;
4759
+ shaftDepth?: number | undefined;
4760
+ shaftWallThickness: number;
4761
+ shaftStyle: "glass" | "solid";
4762
+ cabHeight: number;
4763
+ doorWidth: number;
4764
+ doorHeight: number;
4765
+ doorStyle: "center-opening" | "single-left" | "single-right";
4766
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4767
+ fromLevelId: string | null;
4768
+ toLevelId: string | null;
4769
+ servedLevelIds?: string[] | undefined;
4770
+ disabledLevelIds: string[];
4771
+ serviceOnlyLevelIds: string[];
4772
+ defaultLevelId: string | null;
4773
+ speed: number;
4774
+ doorDurationMs: number;
4775
+ dwellMs: number;
4776
+ type: "elevator";
3953
4777
  } | {
3954
4778
  object: "node";
3955
4779
  parentId: string | null;
@@ -4149,6 +4973,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4149
4973
  url: string;
4150
4974
  repeat?: [number, number] | undefined;
4151
4975
  scale?: number | undefined;
4976
+ offset?: [number, number] | undefined;
4977
+ normalMap?: string | undefined;
4978
+ normalScale?: number | undefined;
4979
+ bumpMap?: string | undefined;
4980
+ bumpScale?: number | undefined;
4152
4981
  } | undefined;
4153
4982
  } | undefined;
4154
4983
  materialPreset?: string | undefined;
@@ -4309,6 +5138,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4309
5138
  url: string;
4310
5139
  repeat?: [number, number] | undefined;
4311
5140
  scale?: number | undefined;
5141
+ offset?: [number, number] | undefined;
5142
+ normalMap?: string | undefined;
5143
+ normalScale?: number | undefined;
5144
+ bumpMap?: string | undefined;
5145
+ bumpScale?: number | undefined;
4312
5146
  } | undefined;
4313
5147
  } | undefined;
4314
5148
  materialPreset?: string | undefined;
@@ -4429,7 +5263,7 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4429
5263
  fromIds: string[];
4430
5264
  } | undefined;
4431
5265
  } | undefined;
4432
- id: `bvent_${string}`;
5266
+ id: `tvent_${string}`;
4433
5267
  material?: {
4434
5268
  id?: string | undefined;
4435
5269
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -4445,6 +5279,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4445
5279
  url: string;
4446
5280
  repeat?: [number, number] | undefined;
4447
5281
  scale?: number | undefined;
5282
+ offset?: [number, number] | undefined;
5283
+ normalMap?: string | undefined;
5284
+ normalScale?: number | undefined;
5285
+ bumpMap?: string | undefined;
5286
+ bumpScale?: number | undefined;
4448
5287
  } | undefined;
4449
5288
  } | undefined;
4450
5289
  slots?: Record<string, string> | undefined;
@@ -4452,19 +5291,14 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4452
5291
  roofSegmentId?: string | undefined;
4453
5292
  position: [number, number, number];
4454
5293
  rotation: number;
4455
- width: number;
4456
- depth: number;
5294
+ diameter: number;
4457
5295
  height: number;
4458
- hoodOverhang: number;
4459
- topTaper: number;
4460
- capHeight: number;
4461
- capGap: number;
4462
- domeCurvature: number;
4463
- baseInset: number;
4464
- baseHeight: number;
4465
- cornerBevel: number;
4466
- style: "box" | "cap" | "dome";
4467
- type: "box-vent";
5296
+ neckHeight: number;
5297
+ baseOverhang: number;
5298
+ vaneCount: number;
5299
+ spinSpeed: number;
5300
+ style: "cylinder" | "globe";
5301
+ type: "turbine-vent";
4468
5302
  } | {
4469
5303
  object: "node";
4470
5304
  name?: string | undefined;
@@ -4505,6 +5339,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4505
5339
  url: string;
4506
5340
  repeat?: [number, number] | undefined;
4507
5341
  scale?: number | undefined;
5342
+ offset?: [number, number] | undefined;
5343
+ normalMap?: string | undefined;
5344
+ normalScale?: number | undefined;
5345
+ bumpMap?: string | undefined;
5346
+ bumpScale?: number | undefined;
4508
5347
  } | undefined;
4509
5348
  } | undefined;
4510
5349
  slots?: Record<string, string> | undefined;
@@ -4558,6 +5397,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4558
5397
  url: string;
4559
5398
  repeat?: [number, number] | undefined;
4560
5399
  scale?: number | undefined;
5400
+ offset?: [number, number] | undefined;
5401
+ normalMap?: string | undefined;
5402
+ normalScale?: number | undefined;
5403
+ bumpMap?: string | undefined;
5404
+ bumpScale?: number | undefined;
4561
5405
  } | undefined;
4562
5406
  } | undefined;
4563
5407
  slots?: Record<string, string> | undefined;
@@ -4585,84 +5429,6 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4585
5429
  generatedBy?: "default-downspout" | undefined;
4586
5430
  }[];
4587
5431
  type: "gutter";
4588
- } | {
4589
- object: "node";
4590
- name?: string | undefined;
4591
- parentId: string | null;
4592
- visible: boolean;
4593
- camera?: {
4594
- position: [number, number, number];
4595
- target: [number, number, number];
4596
- mode: "orthographic" | "perspective";
4597
- fov?: number | undefined;
4598
- zoom?: number | undefined;
4599
- } | undefined;
4600
- metadata: Record<string, unknown>;
4601
- provenance?: {
4602
- refs: {
4603
- ns?: string | undefined;
4604
- id: string;
4605
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4606
- }[];
4607
- lineage?: {
4608
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4609
- fromIds: string[];
4610
- } | undefined;
4611
- } | undefined;
4612
- id: `solarpanel_${string}`;
4613
- material?: {
4614
- id?: string | undefined;
4615
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4616
- properties?: {
4617
- color: string;
4618
- roughness: number;
4619
- metalness: number;
4620
- opacity: number;
4621
- transparent: boolean;
4622
- side: "back" | "double" | "front";
4623
- } | undefined;
4624
- texture?: {
4625
- url: string;
4626
- repeat?: [number, number] | undefined;
4627
- scale?: number | undefined;
4628
- } | undefined;
4629
- } | undefined;
4630
- materialPreset?: string | undefined;
4631
- panelMaterial?: {
4632
- id?: string | undefined;
4633
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4634
- properties?: {
4635
- color: string;
4636
- roughness: number;
4637
- metalness: number;
4638
- opacity: number;
4639
- transparent: boolean;
4640
- side: "back" | "double" | "front";
4641
- } | undefined;
4642
- texture?: {
4643
- url: string;
4644
- repeat?: [number, number] | undefined;
4645
- scale?: number | undefined;
4646
- } | undefined;
4647
- } | undefined;
4648
- panelMaterialPreset?: string | undefined;
4649
- panelTypePreset?: "compact" | "frameless" | "residential" | "residential-large" | undefined;
4650
- roofSegmentId?: string | undefined;
4651
- position: [number, number, number];
4652
- rotation: number;
4653
- rows: number;
4654
- columns: number;
4655
- panelWidth: number;
4656
- panelHeight: number;
4657
- gapX: number;
4658
- gapY: number;
4659
- mountingType: "flush" | "tilted";
4660
- tiltAngle: number;
4661
- standoffHeight: number;
4662
- frameThickness: number;
4663
- frameDepth: number;
4664
- surfaceNormal?: [number, number, number] | undefined;
4665
- type: "solar-panel";
4666
5432
  } | {
4667
5433
  object: "node";
4668
5434
  name?: string | undefined;
@@ -4703,6 +5469,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4703
5469
  url: string;
4704
5470
  repeat?: [number, number] | undefined;
4705
5471
  scale?: number | undefined;
5472
+ offset?: [number, number] | undefined;
5473
+ normalMap?: string | undefined;
5474
+ normalScale?: number | undefined;
5475
+ bumpMap?: string | undefined;
5476
+ bumpScale?: number | undefined;
4706
5477
  } | undefined;
4707
5478
  } | undefined;
4708
5479
  materialPreset?: string | undefined;
@@ -4721,6 +5492,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4721
5492
  url: string;
4722
5493
  repeat?: [number, number] | undefined;
4723
5494
  scale?: number | undefined;
5495
+ offset?: [number, number] | undefined;
5496
+ normalMap?: string | undefined;
5497
+ normalScale?: number | undefined;
5498
+ bumpMap?: string | undefined;
5499
+ bumpScale?: number | undefined;
4724
5500
  } | undefined;
4725
5501
  } | undefined;
4726
5502
  glassMaterialPreset?: string | undefined;
@@ -4788,6 +5564,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4788
5564
  url: string;
4789
5565
  repeat?: [number, number] | undefined;
4790
5566
  scale?: number | undefined;
5567
+ offset?: [number, number] | undefined;
5568
+ normalMap?: string | undefined;
5569
+ normalScale?: number | undefined;
5570
+ bumpMap?: string | undefined;
5571
+ bumpScale?: number | undefined;
4791
5572
  } | undefined;
4792
5573
  } | undefined;
4793
5574
  materialPreset?: string | undefined;
@@ -4806,6 +5587,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4806
5587
  url: string;
4807
5588
  repeat?: [number, number] | undefined;
4808
5589
  scale?: number | undefined;
5590
+ offset?: [number, number] | undefined;
5591
+ normalMap?: string | undefined;
5592
+ normalScale?: number | undefined;
5593
+ bumpMap?: string | undefined;
5594
+ bumpScale?: number | undefined;
4809
5595
  } | undefined;
4810
5596
  } | undefined;
4811
5597
  topMaterialPreset?: string | undefined;
@@ -4824,6 +5610,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4824
5610
  url: string;
4825
5611
  repeat?: [number, number] | undefined;
4826
5612
  scale?: number | undefined;
5613
+ offset?: [number, number] | undefined;
5614
+ normalMap?: string | undefined;
5615
+ normalScale?: number | undefined;
5616
+ bumpMap?: string | undefined;
5617
+ bumpScale?: number | undefined;
4827
5618
  } | undefined;
4828
5619
  } | undefined;
4829
5620
  sideMaterialPreset?: string | undefined;
@@ -4842,6 +5633,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4842
5633
  url: string;
4843
5634
  repeat?: [number, number] | undefined;
4844
5635
  scale?: number | undefined;
5636
+ offset?: [number, number] | undefined;
5637
+ normalMap?: string | undefined;
5638
+ normalScale?: number | undefined;
5639
+ bumpMap?: string | undefined;
5640
+ bumpScale?: number | undefined;
4845
5641
  } | undefined;
4846
5642
  } | undefined;
4847
5643
  wallMaterialPreset?: string | undefined;
@@ -4912,6 +5708,11 @@ export declare const nodesOnLevel: (nodes: SceneNodes, levelId: string) => ({
4912
5708
  url: string;
4913
5709
  repeat?: [number, number] | undefined;
4914
5710
  scale?: number | undefined;
5711
+ offset?: [number, number] | undefined;
5712
+ normalMap?: string | undefined;
5713
+ normalScale?: number | undefined;
5714
+ bumpMap?: string | undefined;
5715
+ bumpScale?: number | undefined;
4915
5716
  } | undefined;
4916
5717
  } | undefined;
4917
5718
  slots?: Record<string, string> | undefined;