@pascal-app/core 1.0.0-beta.5 → 1.0.0

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/capture/index.d.ts +3 -0
  4. package/dist/capture/index.d.ts.map +1 -0
  5. package/dist/capture/index.js +2 -0
  6. package/dist/capture/schema.d.ts +417 -0
  7. package/dist/capture/schema.d.ts.map +1 -0
  8. package/dist/capture/schema.js +348 -0
  9. package/dist/capture/source.d.ts +60 -0
  10. package/dist/capture/source.d.ts.map +1 -0
  11. package/dist/capture/source.js +254 -0
  12. package/dist/events/bus.d.ts +55 -7
  13. package/dist/events/bus.d.ts.map +1 -1
  14. package/dist/events/hidden-wall-pointer-hold.d.ts +28 -0
  15. package/dist/events/hidden-wall-pointer-hold.d.ts.map +1 -0
  16. package/dist/events/hidden-wall-pointer-hold.js +37 -0
  17. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2785 -1
  18. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  19. package/dist/hooks/spatial-grid/spatial-grid-sync.js +132 -19
  20. package/dist/hooks/spatial-grid/support-host-patch.d.ts +45 -1
  21. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  22. package/dist/hooks/spatial-grid/support-host-patch.js +171 -6
  23. package/dist/index.d.ts +14 -6
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +16 -5
  26. package/dist/lib/asset-storage.d.ts.map +1 -1
  27. package/dist/lib/asset-storage.js +4 -1
  28. package/dist/lib/polygon-union.d.ts +4 -0
  29. package/dist/lib/polygon-union.d.ts.map +1 -0
  30. package/dist/lib/polygon-union.js +306 -0
  31. package/dist/lib/roof-overlap.d.ts +32 -0
  32. package/dist/lib/roof-overlap.d.ts.map +1 -0
  33. package/dist/lib/roof-overlap.js +72 -0
  34. package/dist/lib/slab-polygon.d.ts +35 -2
  35. package/dist/lib/slab-polygon.d.ts.map +1 -1
  36. package/dist/lib/slab-polygon.js +133 -27
  37. package/dist/lib/space-detection.d.ts +11 -0
  38. package/dist/lib/space-detection.d.ts.map +1 -1
  39. package/dist/lib/space-detection.js +42 -14
  40. package/dist/registry/handles.d.ts +24 -3
  41. package/dist/registry/handles.d.ts.map +1 -1
  42. package/dist/registry/index.d.ts +3 -4
  43. package/dist/registry/index.d.ts.map +1 -1
  44. package/dist/registry/index.js +1 -2
  45. package/dist/registry/registry.d.ts +13 -6
  46. package/dist/registry/registry.d.ts.map +1 -1
  47. package/dist/registry/registry.js +37 -4
  48. package/dist/registry/scene-api.d.ts +16 -0
  49. package/dist/registry/scene-api.d.ts.map +1 -1
  50. package/dist/registry/scene-api.js +49 -1
  51. package/dist/registry/types.d.ts +226 -13
  52. package/dist/registry/types.d.ts.map +1 -1
  53. package/dist/schema/__bench__/node-parsers.bench.d.ts +24 -0
  54. package/dist/schema/__bench__/node-parsers.bench.d.ts.map +1 -0
  55. package/dist/schema/__bench__/node-parsers.bench.js +314 -0
  56. package/dist/schema/__fixtures__/node-fixtures.d.ts +28 -0
  57. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -0
  58. package/dist/schema/__fixtures__/node-fixtures.js +125 -0
  59. package/dist/schema/base.d.ts +1 -1
  60. package/dist/schema/base.d.ts.map +1 -1
  61. package/dist/schema/base.js +8 -1
  62. package/dist/schema/compiled-node-parsers.d.ts +40 -0
  63. package/dist/schema/compiled-node-parsers.d.ts.map +1 -0
  64. package/dist/schema/compiled-node-parsers.js +95 -0
  65. package/dist/schema/index.d.ts +19 -15
  66. package/dist/schema/index.d.ts.map +1 -1
  67. package/dist/schema/index.js +17 -12
  68. package/dist/schema/material.d.ts +2 -1
  69. package/dist/schema/material.d.ts.map +1 -1
  70. package/dist/schema/material.js +1 -0
  71. package/dist/schema/nodes/automatic-downspout.d.ts +17 -0
  72. package/dist/schema/nodes/automatic-downspout.d.ts.map +1 -0
  73. package/dist/schema/nodes/automatic-downspout.js +237 -0
  74. package/dist/schema/nodes/block.d.ts +107 -0
  75. package/dist/schema/nodes/block.d.ts.map +1 -0
  76. package/dist/schema/nodes/block.js +207 -0
  77. package/dist/schema/nodes/box-vent.d.ts +8 -2
  78. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  79. package/dist/schema/nodes/box-vent.js +2 -0
  80. package/dist/schema/nodes/building.d.ts +1 -1
  81. package/dist/schema/nodes/cabinet.d.ts +25 -3
  82. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  83. package/dist/schema/nodes/cabinet.js +26 -5
  84. package/dist/schema/nodes/ceiling.d.ts +1 -1
  85. package/dist/schema/nodes/chimney.d.ts +2 -2
  86. package/dist/schema/nodes/column.d.ts +6 -6
  87. package/dist/schema/nodes/construction-dimension.d.ts +4 -4
  88. package/dist/schema/nodes/cupola.d.ts +9 -1
  89. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  90. package/dist/schema/nodes/cupola.js +2 -0
  91. package/dist/schema/nodes/door.d.ts +1 -1
  92. package/dist/schema/nodes/dormer.d.ts +44 -1
  93. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  94. package/dist/schema/nodes/dormer.js +131 -7
  95. package/dist/schema/nodes/downspout.d.ts +11 -1
  96. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  97. package/dist/schema/nodes/downspout.js +24 -0
  98. package/dist/schema/nodes/duct-fitting.d.ts +18 -1
  99. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  100. package/dist/schema/nodes/duct-fitting.js +25 -4
  101. package/dist/schema/nodes/duct-segment.d.ts +23 -1
  102. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  103. package/dist/schema/nodes/duct-segment.js +20 -0
  104. package/dist/schema/nodes/duct-terminal.d.ts +1 -1
  105. package/dist/schema/nodes/elevator.d.ts +1 -1
  106. package/dist/schema/nodes/eyebrow-vent.d.ts +8 -2
  107. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  108. package/dist/schema/nodes/eyebrow-vent.js +2 -0
  109. package/dist/schema/nodes/fence.d.ts +1 -1
  110. package/dist/schema/nodes/guide.d.ts +1 -1
  111. package/dist/schema/nodes/gutter.d.ts +36 -2
  112. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  113. package/dist/schema/nodes/gutter.js +308 -1
  114. package/dist/schema/nodes/hanger-overrides.d.ts +7 -0
  115. package/dist/schema/nodes/hanger-overrides.d.ts.map +1 -0
  116. package/dist/schema/nodes/hanger-overrides.js +6 -0
  117. package/dist/schema/nodes/hvac-equipment.d.ts +1 -1
  118. package/dist/schema/nodes/item.d.ts +4 -3
  119. package/dist/schema/nodes/item.d.ts.map +1 -1
  120. package/dist/schema/nodes/item.js +5 -0
  121. package/dist/schema/nodes/lean-to-extension.d.ts +212 -0
  122. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -0
  123. package/dist/schema/nodes/lean-to-extension.js +114 -0
  124. package/dist/schema/nodes/level.d.ts +2 -2
  125. package/dist/schema/nodes/level.d.ts.map +1 -1
  126. package/dist/schema/nodes/lineset.d.ts +1 -1
  127. package/dist/schema/nodes/liquid-line.d.ts +1 -1
  128. package/dist/schema/nodes/measurement.d.ts +1 -1
  129. package/dist/schema/nodes/pipe-fitting.d.ts +9 -1
  130. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  131. package/dist/schema/nodes/pipe-fitting.js +6 -2
  132. package/dist/schema/nodes/pipe-segment.d.ts +23 -1
  133. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  134. package/dist/schema/nodes/pipe-segment.js +20 -0
  135. package/dist/schema/nodes/pipe-trap.d.ts +1 -1
  136. package/dist/schema/nodes/ridge-vent.d.ts +1 -1
  137. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  138. package/dist/schema/nodes/ridge-vent.js +4 -1
  139. package/dist/schema/nodes/roof-segment-shape.d.ts +4 -0
  140. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
  141. package/dist/schema/nodes/roof-segment-shape.js +64 -1
  142. package/dist/schema/nodes/roof-segment-walls.d.ts +3 -1
  143. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  144. package/dist/schema/nodes/roof-segment-walls.js +1 -1
  145. package/dist/schema/nodes/roof-segment.d.ts +41 -1
  146. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  147. package/dist/schema/nodes/roof-segment.js +79 -2
  148. package/dist/schema/nodes/roof.d.ts +22 -1
  149. package/dist/schema/nodes/roof.d.ts.map +1 -1
  150. package/dist/schema/nodes/roof.js +14 -0
  151. package/dist/schema/nodes/scan.d.ts +19 -2
  152. package/dist/schema/nodes/scan.d.ts.map +1 -1
  153. package/dist/schema/nodes/scan.js +11 -1
  154. package/dist/schema/nodes/shelf.d.ts +2 -2
  155. package/dist/schema/nodes/site.d.ts +1 -1
  156. package/dist/schema/nodes/skylight.d.ts +1 -1
  157. package/dist/schema/nodes/slab.d.ts +1 -1
  158. package/dist/schema/nodes/solar-panel.d.ts +1 -1
  159. package/dist/schema/nodes/spawn.d.ts +1 -1
  160. package/dist/schema/nodes/stair-segment.d.ts +1 -1
  161. package/dist/schema/nodes/stair.d.ts +1 -1
  162. package/dist/schema/nodes/structural-grid.d.ts +1 -1
  163. package/dist/schema/nodes/turbine-vent.d.ts +7 -1
  164. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  165. package/dist/schema/nodes/turbine-vent.js +2 -0
  166. package/dist/schema/nodes/wall.d.ts +4 -4
  167. package/dist/schema/nodes/wall.d.ts.map +1 -1
  168. package/dist/schema/nodes/wall.js +7 -1
  169. package/dist/schema/nodes/window.d.ts +10 -3
  170. package/dist/schema/nodes/window.d.ts.map +1 -1
  171. package/dist/schema/nodes/window.js +4 -0
  172. package/dist/schema/nodes/zone.d.ts +2 -2
  173. package/dist/schema/nodes/zone.js +1 -1
  174. package/dist/schema/types.d.ts +484 -109
  175. package/dist/schema/types.d.ts.map +1 -1
  176. package/dist/schema/types.js +27 -1
  177. package/dist/services/hosting.d.ts +2 -2
  178. package/dist/services/hosting.d.ts.map +1 -1
  179. package/dist/services/hosting.js +4 -4
  180. package/dist/services/index.d.ts +1 -1
  181. package/dist/services/index.d.ts.map +1 -1
  182. package/dist/services/index.js +1 -1
  183. package/dist/services/system-graph.d.ts +11 -0
  184. package/dist/services/system-graph.d.ts.map +1 -1
  185. package/dist/services/system-graph.js +35 -5
  186. package/dist/store/actions/node-actions.d.ts +7 -0
  187. package/dist/store/actions/node-actions.d.ts.map +1 -1
  188. package/dist/store/actions/node-actions.js +429 -17
  189. package/dist/store/history-invalidation.d.ts +3 -0
  190. package/dist/store/history-invalidation.d.ts.map +1 -0
  191. package/dist/store/history-invalidation.js +72 -0
  192. package/dist/store/scene-hydration.d.ts +5 -0
  193. package/dist/store/scene-hydration.d.ts.map +1 -0
  194. package/dist/store/scene-hydration.js +57 -0
  195. package/dist/store/use-scene.d.ts +3 -0
  196. package/dist/store/use-scene.d.ts.map +1 -1
  197. package/dist/store/use-scene.js +332 -64
  198. package/dist/systems/roof/roof-elevation-system.d.ts +3 -0
  199. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -0
  200. package/dist/systems/roof/roof-elevation-system.js +94 -0
  201. package/dist/systems/roof/roof-elevation.d.ts +4 -0
  202. package/dist/systems/roof/roof-elevation.d.ts.map +1 -0
  203. package/dist/systems/roof/roof-elevation.js +95 -0
  204. package/dist/systems/roof/roof-footprint.d.ts +17 -0
  205. package/dist/systems/roof/roof-footprint.d.ts.map +1 -0
  206. package/dist/systems/roof/roof-footprint.js +83 -0
  207. package/dist/systems/stair/stair-flight.d.ts +17 -0
  208. package/dist/systems/stair/stair-flight.d.ts.map +1 -0
  209. package/dist/systems/stair/stair-flight.js +27 -0
  210. package/dist/systems/stair/stair-opening-preview.d.ts +1555 -1328
  211. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  212. package/dist/systems/stair/stair-opening-system.d.ts +1 -0
  213. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  214. package/dist/systems/stair/stair-opening-system.js +93 -96
  215. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  216. package/dist/systems/stair/stair-rise.js +20 -21
  217. package/dist/systems/wall/wall-curve.d.ts +1 -0
  218. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  219. package/dist/systems/wall/wall-curve.js +73 -0
  220. package/dist/systems/wall/wall-footprint.d.ts +1 -0
  221. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  222. package/dist/systems/wall/wall-footprint.js +1 -0
  223. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  224. package/dist/utils/clone-scene-graph.js +26 -0
  225. package/dist/validation/validate-build-json.d.ts +3 -0
  226. package/dist/validation/validate-build-json.d.ts.map +1 -1
  227. package/dist/validation/validate-build-json.js +49 -2
  228. package/package.json +10 -3
  229. package/dist/systems/elevator/elevator-runtime-system.d.ts +0 -2
  230. package/dist/systems/elevator/elevator-runtime-system.d.ts.map +0 -1
  231. package/dist/systems/elevator/elevator-runtime-system.js +0 -8
@@ -1,5 +1,29 @@
1
1
  import z from 'zod';
2
- export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2
+ /** A node schema as authored: `type` is a literal wrapped by `nodeType()`'s `.default()`. */
3
+ type NodeMember = z.ZodObject<{
4
+ type: z.ZodDefault<z.ZodLiteral<string>>;
5
+ } & z.core.$ZodLooseShape>;
6
+ /** The same schema with the discriminator narrowed back to its bare literal. */
7
+ type BareDiscriminator<T extends NodeMember> = z.ZodObject<Omit<T['shape'], 'type'> & {
8
+ type: ReturnType<T['shape']['type']['unwrap']>;
9
+ }>;
10
+ /**
11
+ * Assembles the node union on discriminators that claim exactly one value.
12
+ *
13
+ * `nodeType()` defaults the literal so a per-kind schema can fill `type` in
14
+ * (`WallNode.parse({ start, end })`), but a `.default()`-wrapped discriminator
15
+ * also claims `undefined` from zod 4.5 on (upstream #6432). With 48 members
16
+ * doing it, the union's lazily-built discriminator map collides on
17
+ * `undefined` and throws `Duplicate discriminator value` — as a plain Error,
18
+ * so it escapes `safeParse` and surfaces as a crash at the first parse.
19
+ *
20
+ * Each member is therefore projected to a clone whose `type` is the bare
21
+ * literal. Per-kind schemas keep their default; only the union's view of the
22
+ * discriminator narrows. Metadata lives in zod's global registry keyed by
23
+ * instance, so `.describe()` text has to be carried over to the clone by hand.
24
+ */
25
+ export declare const nodeUnion: <const T extends readonly [NodeMember, ...NodeMember[]]>(members: T) => z.ZodDiscriminatedUnion<{ [K in keyof T]: BareDiscriminator<T[K]>; }, "type">;
26
+ export declare const AnyNode: z.ZodDiscriminatedUnion<readonly [BareDiscriminator<z.ZodObject<{
3
27
  object: z.ZodDefault<z.ZodLiteral<"node">>;
4
28
  name: z.ZodOptional<z.ZodString>;
5
29
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -14,7 +38,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
38
  fov: z.ZodOptional<z.ZodNumber>;
15
39
  zoom: z.ZodOptional<z.ZodNumber>;
16
40
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
41
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
42
  id: z.ZodDefault<z.ZodTemplateLiteral<`site_${string}`>>;
19
43
  type: z.ZodDefault<z.ZodLiteral<"site">>;
20
44
  polygon: z.ZodDefault<z.ZodOptional<z.ZodObject<{
@@ -31,7 +55,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
31
55
  heights: z.ZodString;
32
56
  }, z.core.$strip>>;
33
57
  children: z.ZodDefault<z.ZodArray<z.ZodString>>;
34
- }, z.core.$strip>, z.ZodObject<{
58
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
35
59
  object: z.ZodDefault<z.ZodLiteral<"node">>;
36
60
  name: z.ZodOptional<z.ZodString>;
37
61
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -46,13 +70,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
46
70
  fov: z.ZodOptional<z.ZodNumber>;
47
71
  zoom: z.ZodOptional<z.ZodNumber>;
48
72
  }, z.core.$strip>>;
49
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
73
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
50
74
  id: z.ZodDefault<z.ZodTemplateLiteral<`building_${string}`>>;
51
75
  type: z.ZodDefault<z.ZodLiteral<"building">>;
52
76
  children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`elevator_${string}`>>]>>>;
53
77
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
54
78
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
55
- }, z.core.$strip>, z.ZodObject<{
79
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
56
80
  object: z.ZodDefault<z.ZodLiteral<"node">>;
57
81
  name: z.ZodOptional<z.ZodString>;
58
82
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -67,7 +91,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
67
91
  fov: z.ZodOptional<z.ZodNumber>;
68
92
  zoom: z.ZodOptional<z.ZodNumber>;
69
93
  }, z.core.$strip>>;
70
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
94
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
71
95
  id: z.ZodDefault<z.ZodTemplateLiteral<`elevator_${string}`>>;
72
96
  type: z.ZodDefault<z.ZodLiteral<"elevator">>;
73
97
  material: z.ZodOptional<z.ZodObject<{
@@ -137,7 +161,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
137
161
  speed: z.ZodDefault<z.ZodNumber>;
138
162
  doorDurationMs: z.ZodDefault<z.ZodNumber>;
139
163
  dwellMs: z.ZodDefault<z.ZodNumber>;
140
- }, z.core.$strip>, z.ZodObject<{
164
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
141
165
  object: z.ZodDefault<z.ZodLiteral<"node">>;
142
166
  name: z.ZodOptional<z.ZodString>;
143
167
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -152,14 +176,14 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
152
176
  fov: z.ZodOptional<z.ZodNumber>;
153
177
  zoom: z.ZodOptional<z.ZodNumber>;
154
178
  }, z.core.$strip>>;
155
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
179
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
156
180
  id: z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>;
157
181
  type: z.ZodDefault<z.ZodLiteral<"level">>;
158
- children: z.ZodDefault<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`item_${string}` | `ceiling_${string}` | `column_${string}` | `wall_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `slab_${string}` | `roof_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`, string>>>>;
182
+ children: z.ZodDefault<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`item_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `wall_${string}` | `roof_${string}` | `slab_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`, string>>>>;
159
183
  level: z.ZodDefault<z.ZodNumber>;
160
184
  baseElevation: z.ZodDefault<z.ZodNumber>;
161
185
  height: z.ZodOptional<z.ZodNumber>;
162
- }, z.core.$strip>, z.ZodObject<{
186
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
163
187
  object: z.ZodDefault<z.ZodLiteral<"node">>;
164
188
  name: z.ZodOptional<z.ZodString>;
165
189
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -174,7 +198,157 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
174
198
  fov: z.ZodOptional<z.ZodNumber>;
175
199
  zoom: z.ZodOptional<z.ZodNumber>;
176
200
  }, z.core.$strip>>;
177
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
201
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
202
+ id: z.ZodDefault<z.ZodTemplateLiteral<`leanto_${string}`>>;
203
+ type: z.ZodDefault<z.ZodLiteral<"lean-to-extension">>;
204
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
205
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
206
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`column_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>]>>>;
207
+ canopyForm: z.ZodDefault<z.ZodEnum<{
208
+ gable: "gable";
209
+ mono: "mono";
210
+ butterfly: "butterfly";
211
+ }>>;
212
+ hostKind: z.ZodDefault<z.ZodEnum<{
213
+ wall: "wall";
214
+ "slab-edge": "slab-edge";
215
+ freestanding: "freestanding";
216
+ "conical-roof": "conical-roof";
217
+ }>>;
218
+ hostHeightOffset: z.ZodDefault<z.ZodNumber>;
219
+ hostSlabId: z.ZodOptional<z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>>;
220
+ hostSlabEdgeIndex: z.ZodOptional<z.ZodNumber>;
221
+ hostSlabEdgeT: z.ZodOptional<z.ZodNumber>;
222
+ span: z.ZodDefault<z.ZodNumber>;
223
+ autoSpan: z.ZodDefault<z.ZodBoolean>;
224
+ projection: z.ZodDefault<z.ZodNumber>;
225
+ spanArcCenterZ: z.ZodOptional<z.ZodNumber>;
226
+ spanArcRadius: z.ZodOptional<z.ZodNumber>;
227
+ highEdgeHeight: z.ZodDefault<z.ZodNumber>;
228
+ lowEdgeHeight: z.ZodDefault<z.ZodNumber>;
229
+ pitch: z.ZodDefault<z.ZodNumber>;
230
+ resizeLock: z.ZodDefault<z.ZodEnum<{
231
+ "preserve-high-edge": "preserve-high-edge";
232
+ "preserve-low-edge": "preserve-low-edge";
233
+ "preserve-pitch": "preserve-pitch";
234
+ }>>;
235
+ leftEndCondition: z.ZodDefault<z.ZodEnum<{
236
+ open: "open";
237
+ "wall-abutment": "wall-abutment";
238
+ joined: "joined";
239
+ }>>;
240
+ rightEndCondition: z.ZodDefault<z.ZodEnum<{
241
+ open: "open";
242
+ "wall-abutment": "wall-abutment";
243
+ joined: "joined";
244
+ }>>;
245
+ autoMiterCorners: z.ZodDefault<z.ZodBoolean>;
246
+ sideFlashing: z.ZodDefault<z.ZodBoolean>;
247
+ flashingProjection: z.ZodDefault<z.ZodNumber>;
248
+ flashingHeight: z.ZodDefault<z.ZodNumber>;
249
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
250
+ highSideMode: z.ZodDefault<z.ZodEnum<{
251
+ "wall-ledger": "wall-ledger";
252
+ "independent-high-beam": "independent-high-beam";
253
+ }>>;
254
+ ledgerVerticalOffset: z.ZodDefault<z.ZodNumber>;
255
+ lowBeamInset: z.ZodDefault<z.ZodNumber>;
256
+ gutterEnabled: z.ZodDefault<z.ZodBoolean>;
257
+ gutterProfile: z.ZodDefault<z.ZodEnum<{
258
+ box: "box";
259
+ "k-style": "k-style";
260
+ "half-round": "half-round";
261
+ }>>;
262
+ gutterSize: z.ZodDefault<z.ZodNumber>;
263
+ downspoutEnabled: z.ZodDefault<z.ZodBoolean>;
264
+ downspoutPosition: z.ZodDefault<z.ZodNumber>;
265
+ connectionMode: z.ZodDefault<z.ZodEnum<{
266
+ manual: "manual";
267
+ auto: "auto";
268
+ }>>;
269
+ hostRoofId: z.ZodOptional<z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>>;
270
+ hostRoofSegmentId: z.ZodOptional<z.ZodString>;
271
+ hostRoofEdge: z.ZodOptional<z.ZodEnum<{
272
+ "+X": "+X";
273
+ "-X": "-X";
274
+ "+Z": "+Z";
275
+ "-Z": "-Z";
276
+ }>>;
277
+ hostRoofEdgeRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
278
+ connectionOffset: z.ZodDefault<z.ZodNumber>;
279
+ connectionInset: z.ZodDefault<z.ZodNumber>;
280
+ matchHostRoofMaterial: z.ZodDefault<z.ZodBoolean>;
281
+ matchHostRoofStructure: z.ZodDefault<z.ZodBoolean>;
282
+ roofThickness: z.ZodDefault<z.ZodNumber>;
283
+ shingleThickness: z.ZodDefault<z.ZodNumber>;
284
+ highOverhang: z.ZodDefault<z.ZodNumber>;
285
+ lowOverhang: z.ZodDefault<z.ZodNumber>;
286
+ leftOverhang: z.ZodDefault<z.ZodNumber>;
287
+ rightOverhang: z.ZodDefault<z.ZodNumber>;
288
+ coveringType: z.ZodDefault<z.ZodEnum<{
289
+ generic: "generic";
290
+ shingle: "shingle";
291
+ "metal-panel": "metal-panel";
292
+ }>>;
293
+ beamWidth: z.ZodDefault<z.ZodNumber>;
294
+ beamHeight: z.ZodDefault<z.ZodNumber>;
295
+ ledgerDepth: z.ZodDefault<z.ZodNumber>;
296
+ ledgerHeight: z.ZodDefault<z.ZodNumber>;
297
+ rafterWidth: z.ZodDefault<z.ZodNumber>;
298
+ rafterHeight: z.ZodDefault<z.ZodNumber>;
299
+ rafterSpacing: z.ZodDefault<z.ZodNumber>;
300
+ rafterEndInset: z.ZodDefault<z.ZodNumber>;
301
+ framingStrategy: z.ZodDefault<z.ZodEnum<{
302
+ hidden: "hidden";
303
+ rafters: "rafters";
304
+ purlins: "purlins";
305
+ "covering-specific": "covering-specific";
306
+ }>>;
307
+ purlinWidth: z.ZodDefault<z.ZodNumber>;
308
+ purlinHeight: z.ZodDefault<z.ZodNumber>;
309
+ purlinSpacing: z.ZodDefault<z.ZodNumber>;
310
+ postWidth: z.ZodDefault<z.ZodNumber>;
311
+ postDepth: z.ZodDefault<z.ZodNumber>;
312
+ postCount: z.ZodDefault<z.ZodNumber>;
313
+ postLayoutMode: z.ZodDefault<z.ZodEnum<{
314
+ count: "count";
315
+ "target-spacing": "target-spacing";
316
+ }>>;
317
+ postSpacing: z.ZodDefault<z.ZodNumber>;
318
+ postInset: z.ZodDefault<z.ZodNumber>;
319
+ omittedPostSlots: z.ZodDefault<z.ZodArray<z.ZodObject<{
320
+ side: z.ZodEnum<{
321
+ low: "low";
322
+ high: "high";
323
+ }>;
324
+ index: z.ZodNumber;
325
+ layoutCount: z.ZodNumber;
326
+ }, z.core.$strip>>>;
327
+ postBracing: z.ZodDefault<z.ZodEnum<{
328
+ none: "none";
329
+ knee: "knee";
330
+ }>>;
331
+ footingStyle: z.ZodDefault<z.ZodEnum<{
332
+ none: "none";
333
+ "base-plate": "base-plate";
334
+ "concrete-pad": "concrete-pad";
335
+ }>>;
336
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
337
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
338
+ name: z.ZodOptional<z.ZodString>;
339
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
340
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
341
+ camera: z.ZodOptional<z.ZodObject<{
342
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
343
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
344
+ mode: z.ZodDefault<z.ZodEnum<{
345
+ perspective: "perspective";
346
+ orthographic: "orthographic";
347
+ }>>;
348
+ fov: z.ZodOptional<z.ZodNumber>;
349
+ zoom: z.ZodOptional<z.ZodNumber>;
350
+ }, z.core.$strip>>;
351
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
178
352
  id: z.ZodDefault<z.ZodTemplateLiteral<`column_${string}`>>;
179
353
  type: z.ZodDefault<z.ZodLiteral<"column">>;
180
354
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -273,9 +447,9 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
273
447
  capitalCarvingLevel: z.ZodDefault<z.ZodNumber>;
274
448
  ringCount: z.ZodDefault<z.ZodNumber>;
275
449
  ringPlacement: z.ZodDefault<z.ZodEnum<{
450
+ top: "top";
276
451
  ends: "ends";
277
452
  even: "even";
278
- top: "top";
279
453
  bottom: "bottom";
280
454
  }>>;
281
455
  ringThickness: z.ZodDefault<z.ZodNumber>;
@@ -294,15 +468,15 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
294
468
  }>>;
295
469
  latheRingCount: z.ZodDefault<z.ZodNumber>;
296
470
  latheRingSpacing: z.ZodDefault<z.ZodEnum<{
471
+ top: "top";
297
472
  ends: "ends";
298
473
  even: "even";
299
- top: "top";
300
474
  bottom: "bottom";
301
475
  }>>;
302
476
  carvingLevel: z.ZodDefault<z.ZodNumber>;
303
477
  carvingPlacement: z.ZodDefault<z.ZodEnum<{
304
- shaft: "shaft";
305
478
  base: "base";
479
+ shaft: "shaft";
306
480
  capital: "capital";
307
481
  all: "all";
308
482
  }>>;
@@ -363,7 +537,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
363
537
  }, z.core.$strip>>;
364
538
  materialPreset: z.ZodOptional<z.ZodString>;
365
539
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
366
- }, z.core.$strip>, z.ZodObject<{
540
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
367
541
  object: z.ZodDefault<z.ZodLiteral<"node">>;
368
542
  name: z.ZodOptional<z.ZodString>;
369
543
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -378,7 +552,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
378
552
  fov: z.ZodOptional<z.ZodNumber>;
379
553
  zoom: z.ZodOptional<z.ZodNumber>;
380
554
  }, z.core.$strip>>;
381
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
555
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
382
556
  id: z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>;
383
557
  type: z.ZodDefault<z.ZodLiteral<"construction-dimension">>;
384
558
  anchors: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
@@ -458,14 +632,14 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
458
632
  "site-plan": "site-plan";
459
633
  }>;
460
634
  presentation: z.ZodEnum<{
461
- shown: "shown";
462
635
  omit: "omit";
636
+ shown: "shown";
463
637
  controlled: "controlled";
464
638
  }>;
465
639
  suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
466
640
  }, z.core.$strip>>>;
467
641
  controllingDimensionId: z.ZodDefault<z.ZodNullable<z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>>>;
468
- }, z.core.$strip>, z.ZodObject<{
642
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
469
643
  object: z.ZodDefault<z.ZodLiteral<"node">>;
470
644
  name: z.ZodOptional<z.ZodString>;
471
645
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -480,7 +654,46 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
480
654
  fov: z.ZodOptional<z.ZodNumber>;
481
655
  zoom: z.ZodOptional<z.ZodNumber>;
482
656
  }, z.core.$strip>>;
483
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
657
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
658
+ id: z.ZodDefault<z.ZodTemplateLiteral<`block_${string}`>>;
659
+ type: z.ZodDefault<z.ZodLiteral<"block">>;
660
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
661
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
662
+ rotation: z.ZodDefault<z.ZodNumber>;
663
+ supportSlabId: z.ZodOptional<z.ZodString>;
664
+ topology: z.ZodDefault<z.ZodObject<{
665
+ vertices: z.ZodArray<z.ZodObject<{
666
+ id: z.ZodString;
667
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
668
+ }, z.core.$strip>>;
669
+ edges: z.ZodArray<z.ZodObject<{
670
+ id: z.ZodString;
671
+ vertexIds: z.ZodTuple<[z.ZodString, z.ZodString], null>;
672
+ }, z.core.$strip>>;
673
+ faces: z.ZodArray<z.ZodObject<{
674
+ id: z.ZodString;
675
+ vertexIds: z.ZodArray<z.ZodString>;
676
+ materialSlot: z.ZodDefault<z.ZodString>;
677
+ }, z.core.$strip>>;
678
+ }, z.core.$strip>>;
679
+ slots: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
680
+ slotNames: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
681
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
682
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
683
+ name: z.ZodOptional<z.ZodString>;
684
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
685
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
686
+ camera: z.ZodOptional<z.ZodObject<{
687
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
688
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
689
+ mode: z.ZodDefault<z.ZodEnum<{
690
+ perspective: "perspective";
691
+ orthographic: "orthographic";
692
+ }>>;
693
+ fov: z.ZodOptional<z.ZodNumber>;
694
+ zoom: z.ZodOptional<z.ZodNumber>;
695
+ }, z.core.$strip>>;
696
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
484
697
  id: z.ZodDefault<z.ZodTemplateLiteral<`structural-grid_${string}`>>;
485
698
  type: z.ZodDefault<z.ZodLiteral<"structural-grid">>;
486
699
  start: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
@@ -488,7 +701,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
488
701
  label: z.ZodDefault<z.ZodString>;
489
702
  showStartBubble: z.ZodDefault<z.ZodBoolean>;
490
703
  showEndBubble: z.ZodDefault<z.ZodBoolean>;
491
- }, z.core.$strip>, z.ZodObject<{
704
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
492
705
  object: z.ZodDefault<z.ZodLiteral<"node">>;
493
706
  name: z.ZodOptional<z.ZodString>;
494
707
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -503,10 +716,10 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
503
716
  fov: z.ZodOptional<z.ZodNumber>;
504
717
  zoom: z.ZodOptional<z.ZodNumber>;
505
718
  }, z.core.$strip>>;
506
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
719
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
507
720
  id: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
508
721
  type: z.ZodDefault<z.ZodLiteral<"wall">>;
509
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>]>>>;
722
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`leanto_${string}`>>]>>>;
510
723
  material: z.ZodOptional<z.ZodObject<{
511
724
  id: z.ZodOptional<z.ZodString>;
512
725
  preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
@@ -619,7 +832,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
619
832
  lowerHeight: z.ZodDefault<z.ZodNumber>;
620
833
  middleHeight: z.ZodDefault<z.ZodNumber>;
621
834
  upperHeight: z.ZodDefault<z.ZodNumber>;
622
- }, z.core.$strip>>>;
835
+ }, z.core.$strip>, unknown>>;
623
836
  skirting: z.ZodOptional<z.ZodObject<{
624
837
  enabled: z.ZodDefault<z.ZodBoolean>;
625
838
  sides: z.ZodDefault<z.ZodEnum<{
@@ -722,7 +935,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
722
935
  interior: "interior";
723
936
  exterior: "exterior";
724
937
  }>>;
725
- }, z.core.$strip>, z.ZodObject<{
938
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
726
939
  object: z.ZodDefault<z.ZodLiteral<"node">>;
727
940
  name: z.ZodOptional<z.ZodString>;
728
941
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -737,7 +950,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
737
950
  fov: z.ZodOptional<z.ZodNumber>;
738
951
  zoom: z.ZodOptional<z.ZodNumber>;
739
952
  }, z.core.$strip>>;
740
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
953
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
741
954
  id: z.ZodDefault<z.ZodTemplateLiteral<`fence_${string}`>>;
742
955
  type: z.ZodDefault<z.ZodLiteral<"fence">>;
743
956
  material: z.ZodOptional<z.ZodObject<{
@@ -807,7 +1020,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
807
1020
  privacy: "privacy";
808
1021
  horizontal: "horizontal";
809
1022
  }>>;
810
- }, z.core.$strip>, z.ZodObject<{
1023
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
811
1024
  object: z.ZodDefault<z.ZodLiteral<"node">>;
812
1025
  name: z.ZodOptional<z.ZodString>;
813
1026
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -822,7 +1035,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
822
1035
  fov: z.ZodOptional<z.ZodNumber>;
823
1036
  zoom: z.ZodOptional<z.ZodNumber>;
824
1037
  }, z.core.$strip>>;
825
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1038
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
826
1039
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
827
1040
  rotation: z.ZodDefault<z.ZodNumber>;
828
1041
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -844,6 +1057,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
844
1057
  shaker: "shaker";
845
1058
  "raised-arch": "raised-arch";
846
1059
  }>>;
1060
+ panelReady: z.ZodDefault<z.ZodBoolean>;
847
1061
  handleStyle: z.ZodDefault<z.ZodEnum<{
848
1062
  none: "none";
849
1063
  bar: "bar";
@@ -1007,7 +1221,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1007
1221
  base: "base";
1008
1222
  tall: "tall";
1009
1223
  }>>;
1010
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>>>;
1224
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`cabinet_${string}`>>]>>>;
1011
1225
  barLedge: z.ZodOptional<z.ZodObject<{
1012
1226
  edge: z.ZodDefault<z.ZodEnum<{
1013
1227
  back: "back";
@@ -1018,7 +1232,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1018
1232
  depth: z.ZodDefault<z.ZodNumber>;
1019
1233
  }, z.core.$strip>>;
1020
1234
  withWaterfall: z.ZodDefault<z.ZodBoolean>;
1021
- }, z.core.$strip>, z.ZodObject<{
1235
+ withFinishedEnds: z.ZodDefault<z.ZodBoolean>;
1236
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1022
1237
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1023
1238
  name: z.ZodOptional<z.ZodString>;
1024
1239
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1033,7 +1248,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1033
1248
  fov: z.ZodOptional<z.ZodNumber>;
1034
1249
  zoom: z.ZodOptional<z.ZodNumber>;
1035
1250
  }, z.core.$strip>>;
1036
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1251
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1037
1252
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1038
1253
  rotation: z.ZodDefault<z.ZodNumber>;
1039
1254
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -1055,6 +1270,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1055
1270
  shaker: "shaker";
1056
1271
  "raised-arch": "raised-arch";
1057
1272
  }>>;
1273
+ panelReady: z.ZodDefault<z.ZodBoolean>;
1058
1274
  handleStyle: z.ZodDefault<z.ZodEnum<{
1059
1275
  none: "none";
1060
1276
  bar: "bar";
@@ -1227,7 +1443,14 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1227
1443
  left: "left";
1228
1444
  }>>;
1229
1445
  cornerShelf: z.ZodOptional<z.ZodBoolean>;
1230
- }, z.core.$strip>, z.ZodObject<{
1446
+ topFinish: z.ZodDefault<z.ZodEnum<{
1447
+ trim: "trim";
1448
+ none: "none";
1449
+ "top-cabinet": "top-cabinet";
1450
+ }>>;
1451
+ topFinishHeight: z.ZodDefault<z.ZodNumber>;
1452
+ topFinishDepth: z.ZodDefault<z.ZodNumber>;
1453
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1231
1454
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1232
1455
  name: z.ZodOptional<z.ZodString>;
1233
1456
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1242,7 +1465,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1242
1465
  fov: z.ZodOptional<z.ZodNumber>;
1243
1466
  zoom: z.ZodOptional<z.ZodNumber>;
1244
1467
  }, z.core.$strip>>;
1245
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1468
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1246
1469
  id: z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>;
1247
1470
  type: z.ZodDefault<z.ZodLiteral<"item">>;
1248
1471
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -1262,6 +1485,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1262
1485
  right: "right";
1263
1486
  left: "left";
1264
1487
  }>>;
1488
+ blockFaceId: z.ZodOptional<z.ZodString>;
1265
1489
  supportSlabId: z.ZodOptional<z.ZodString>;
1266
1490
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
1267
1491
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -1281,8 +1505,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1281
1505
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1282
1506
  attachTo: z.ZodOptional<z.ZodEnum<{
1283
1507
  wall: "wall";
1284
- ceiling: "ceiling";
1285
1508
  "wall-side": "wall-side";
1509
+ ceiling: "ceiling";
1286
1510
  }>>;
1287
1511
  recessed: z.ZodOptional<z.ZodBoolean>;
1288
1512
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1338,7 +1562,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1338
1562
  }, z.core.$strip>], "kind">>>;
1339
1563
  }, z.core.$strip>>;
1340
1564
  }, z.core.$strip>;
1341
- }, z.core.$strip>, z.ZodObject<{
1565
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1342
1566
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1343
1567
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1344
1568
  visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
@@ -1365,8 +1589,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1365
1589
  roomNumber: z.ZodDefault<z.ZodString>;
1366
1590
  enclosureStatus: z.ZodDefault<z.ZodEnum<{
1367
1591
  auto: "auto";
1368
- enclosed: "enclosed";
1369
1592
  open: "open";
1593
+ enclosed: "enclosed";
1370
1594
  }>>;
1371
1595
  floorFinish: z.ZodDefault<z.ZodString>;
1372
1596
  wallFinish: z.ZodDefault<z.ZodString>;
@@ -1379,8 +1603,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1379
1603
  "finish-faces": "finish-faces";
1380
1604
  }>>;
1381
1605
  color: z.ZodDefault<z.ZodString>;
1382
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1383
- }, z.core.$strip>, z.ZodObject<{
1606
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1607
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1384
1608
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1385
1609
  name: z.ZodOptional<z.ZodString>;
1386
1610
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1395,7 +1619,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1395
1619
  fov: z.ZodOptional<z.ZodNumber>;
1396
1620
  zoom: z.ZodOptional<z.ZodNumber>;
1397
1621
  }, z.core.$strip>>;
1398
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1622
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1399
1623
  id: z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>;
1400
1624
  type: z.ZodDefault<z.ZodLiteral<"slab">>;
1401
1625
  material: z.ZodOptional<z.ZodObject<{
@@ -1449,7 +1673,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1449
1673
  recessedRimElevation: z.ZodOptional<z.ZodNumber>;
1450
1674
  fillToTerrain: z.ZodOptional<z.ZodBoolean>;
1451
1675
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
1452
- }, z.core.$strip>, z.ZodObject<{
1676
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1453
1677
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1454
1678
  name: z.ZodOptional<z.ZodString>;
1455
1679
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1464,7 +1688,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1464
1688
  fov: z.ZodOptional<z.ZodNumber>;
1465
1689
  zoom: z.ZodOptional<z.ZodNumber>;
1466
1690
  }, z.core.$strip>>;
1467
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1691
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1468
1692
  id: z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>;
1469
1693
  type: z.ZodDefault<z.ZodLiteral<"ceiling">>;
1470
1694
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
@@ -1515,7 +1739,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1515
1739
  }, z.core.$strip>>>;
1516
1740
  height: z.ZodOptional<z.ZodNumber>;
1517
1741
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
1518
- }, z.core.$strip>, z.ZodObject<{
1742
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1519
1743
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1520
1744
  name: z.ZodOptional<z.ZodString>;
1521
1745
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1530,7 +1754,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1530
1754
  fov: z.ZodOptional<z.ZodNumber>;
1531
1755
  zoom: z.ZodOptional<z.ZodNumber>;
1532
1756
  }, z.core.$strip>>;
1533
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1757
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1534
1758
  id: z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>;
1535
1759
  type: z.ZodDefault<z.ZodLiteral<"roof">>;
1536
1760
  material: z.ZodOptional<z.ZodObject<{
@@ -1667,8 +1891,18 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1667
1891
  wallMaterialPreset: z.ZodOptional<z.ZodString>;
1668
1892
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1669
1893
  rotation: z.ZodDefault<z.ZodNumber>;
1894
+ support: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
1895
+ kind: z.ZodLiteral<"level">;
1896
+ }, z.core.$strip>, z.ZodObject<{
1897
+ kind: z.ZodLiteral<"walls">;
1898
+ }, z.core.$strip>, z.ZodObject<{
1899
+ kind: z.ZodLiteral<"roof">;
1900
+ roofSegmentId: z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>;
1901
+ localPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
1902
+ curbHeight: z.ZodDefault<z.ZodNumber>;
1903
+ }, z.core.$strip>], "kind">>;
1670
1904
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>>>;
1671
- }, z.core.$strip>, z.ZodObject<{
1905
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1672
1906
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1673
1907
  name: z.ZodOptional<z.ZodString>;
1674
1908
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1683,7 +1917,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1683
1917
  fov: z.ZodOptional<z.ZodNumber>;
1684
1918
  zoom: z.ZodOptional<z.ZodNumber>;
1685
1919
  }, z.core.$strip>>;
1686
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1920
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1687
1921
  id: z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>;
1688
1922
  type: z.ZodDefault<z.ZodLiteral<"roof-segment">>;
1689
1923
  material: z.ZodOptional<z.ZodObject<{
@@ -1828,9 +2062,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1828
2062
  gambrel: "gambrel";
1829
2063
  dutch: "dutch";
1830
2064
  mansard: "mansard";
2065
+ conical: "conical";
1831
2066
  }>>;
1832
2067
  width: z.ZodDefault<z.ZodNumber>;
1833
2068
  depth: z.ZodDefault<z.ZodNumber>;
2069
+ conicalStartAngle: z.ZodOptional<z.ZodNumber>;
2070
+ conicalSweepAngle: z.ZodOptional<z.ZodNumber>;
2071
+ conicalFullCircle: z.ZodOptional<z.ZodBoolean>;
1834
2072
  trim: z.ZodDefault<z.ZodObject<{
1835
2073
  left: z.ZodDefault<z.ZodNumber>;
1836
2074
  right: z.ZodDefault<z.ZodNumber>;
@@ -1855,6 +2093,33 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1855
2093
  deckThickness: z.ZodDefault<z.ZodNumber>;
1856
2094
  overhang: z.ZodDefault<z.ZodNumber>;
1857
2095
  shingleThickness: z.ZodDefault<z.ZodNumber>;
2096
+ arc: z.ZodOptional<z.ZodObject<{
2097
+ centerX: z.ZodNumber;
2098
+ centerZ: z.ZodNumber;
2099
+ radius: z.ZodNumber;
2100
+ }, z.core.$strip>>;
2101
+ shedSideInfillSpan: z.ZodOptional<z.ZodNumber>;
2102
+ shedSideInfillMinX: z.ZodOptional<z.ZodNumber>;
2103
+ shedSideInfillMaxX: z.ZodOptional<z.ZodNumber>;
2104
+ shedFootprintPieces: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
2105
+ shedOpenEndSides: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2106
+ right: "right";
2107
+ left: "left";
2108
+ }>>>;
2109
+ shedJointFrame: z.ZodOptional<z.ZodObject<{
2110
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
2111
+ rotation: z.ZodNumber;
2112
+ }, z.core.$strip>>;
2113
+ shedJointOwnerId: z.ZodOptional<z.ZodString>;
2114
+ shedJointNeighborIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2115
+ shedJointScopeId: z.ZodOptional<z.ZodString>;
2116
+ managedByParent: z.ZodDefault<z.ZodBoolean>;
2117
+ wallShell: z.ZodDefault<z.ZodEnum<{
2118
+ auto: "auto";
2119
+ include: "include";
2120
+ omit: "omit";
2121
+ }>>;
2122
+ shedInsetEndPanels: z.ZodDefault<z.ZodBoolean>;
1858
2123
  gambrelLowerWidthRatio: z.ZodDefault<z.ZodNumber>;
1859
2124
  gambrelLowerHeightRatio: z.ZodDefault<z.ZodNumber>;
1860
2125
  mansardSteepWidthRatio: z.ZodDefault<z.ZodNumber>;
@@ -1865,7 +2130,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1865
2130
  dutchGabletRake: z.ZodDefault<z.ZodNumber>;
1866
2131
  dutchTopRakeThickness: z.ZodDefault<z.ZodNumber>;
1867
2132
  children: z.ZodDefault<z.ZodArray<z.ZodString>>;
1868
- }, z.core.$strip>, z.ZodObject<{
2133
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1869
2134
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1870
2135
  name: z.ZodOptional<z.ZodString>;
1871
2136
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1880,7 +2145,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1880
2145
  fov: z.ZodOptional<z.ZodNumber>;
1881
2146
  zoom: z.ZodOptional<z.ZodNumber>;
1882
2147
  }, z.core.$strip>>;
1883
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2148
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1884
2149
  id: z.ZodDefault<z.ZodTemplateLiteral<`shelf_${string}`>>;
1885
2150
  type: z.ZodDefault<z.ZodLiteral<"shelf">>;
1886
2151
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
@@ -1903,9 +2168,9 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1903
2168
  withSides: z.ZodDefault<z.ZodBoolean>;
1904
2169
  withBottom: z.ZodDefault<z.ZodBoolean>;
1905
2170
  bracketStyle: z.ZodDefault<z.ZodEnum<{
2171
+ hidden: "hidden";
1906
2172
  minimal: "minimal";
1907
2173
  industrial: "industrial";
1908
- hidden: "hidden";
1909
2174
  }>>;
1910
2175
  material: z.ZodOptional<z.ZodObject<{
1911
2176
  id: z.ZodOptional<z.ZodString>;
@@ -1941,7 +2206,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1941
2206
  }, z.core.$strip>>;
1942
2207
  materialPreset: z.ZodOptional<z.ZodString>;
1943
2208
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1944
- }, z.core.$strip>, z.ZodObject<{
2209
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
1945
2210
  object: z.ZodDefault<z.ZodLiteral<"node">>;
1946
2211
  name: z.ZodOptional<z.ZodString>;
1947
2212
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -1956,7 +2221,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1956
2221
  fov: z.ZodOptional<z.ZodNumber>;
1957
2222
  zoom: z.ZodOptional<z.ZodNumber>;
1958
2223
  }, z.core.$strip>>;
1959
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2224
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1960
2225
  id: z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>;
1961
2226
  type: z.ZodDefault<z.ZodLiteral<"stair">>;
1962
2227
  material: z.ZodOptional<z.ZodObject<{
@@ -2130,7 +2395,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2130
2395
  }>>;
2131
2396
  railingHeight: z.ZodDefault<z.ZodNumber>;
2132
2397
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`sseg_${string}`>>>>;
2133
- }, z.core.$strip>, z.ZodObject<{
2398
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2134
2399
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2135
2400
  name: z.ZodOptional<z.ZodString>;
2136
2401
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2145,7 +2410,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2145
2410
  fov: z.ZodOptional<z.ZodNumber>;
2146
2411
  zoom: z.ZodOptional<z.ZodNumber>;
2147
2412
  }, z.core.$strip>>;
2148
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2413
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2149
2414
  id: z.ZodDefault<z.ZodTemplateLiteral<`sseg_${string}`>>;
2150
2415
  type: z.ZodDefault<z.ZodLiteral<"stair-segment">>;
2151
2416
  material: z.ZodOptional<z.ZodObject<{
@@ -2198,7 +2463,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2198
2463
  }>>;
2199
2464
  fillToFloor: z.ZodDefault<z.ZodBoolean>;
2200
2465
  thickness: z.ZodDefault<z.ZodNumber>;
2201
- }, z.core.$strip>, z.ZodObject<{
2466
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2202
2467
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2203
2468
  name: z.ZodOptional<z.ZodString>;
2204
2469
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2213,15 +2478,22 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2213
2478
  fov: z.ZodOptional<z.ZodNumber>;
2214
2479
  zoom: z.ZodOptional<z.ZodNumber>;
2215
2480
  }, z.core.$strip>>;
2216
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2481
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2217
2482
  id: z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>;
2218
2483
  type: z.ZodDefault<z.ZodLiteral<"scan">>;
2219
- url: z.ZodString;
2484
+ url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2485
+ captureSession: z.ZodDefault<z.ZodNullable<z.ZodObject<{
2486
+ sessionId: z.ZodString;
2487
+ schemaVersion: z.ZodOptional<z.ZodNumber>;
2488
+ revisionId: z.ZodOptional<z.ZodString>;
2489
+ manifestUrl: z.ZodOptional<z.ZodString>;
2490
+ }, z.core.$strip>>>;
2491
+ layers: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodBoolean>>, z.ZodTransform<Record<string, boolean>, Record<string, boolean>>>;
2220
2492
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
2221
2493
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
2222
2494
  scale: z.ZodDefault<z.ZodNumber>;
2223
2495
  opacity: z.ZodDefault<z.ZodNumber>;
2224
- }, z.core.$strip>, z.ZodObject<{
2496
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2225
2497
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2226
2498
  name: z.ZodOptional<z.ZodString>;
2227
2499
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2236,7 +2508,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2236
2508
  fov: z.ZodOptional<z.ZodNumber>;
2237
2509
  zoom: z.ZodOptional<z.ZodNumber>;
2238
2510
  }, z.core.$strip>>;
2239
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2511
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2240
2512
  id: z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>;
2241
2513
  type: z.ZodDefault<z.ZodLiteral<"guide">>;
2242
2514
  url: z.ZodString;
@@ -2252,7 +2524,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2252
2524
  metersPerUnit: z.ZodNumber;
2253
2525
  label: z.ZodString;
2254
2526
  }, z.core.$strip>>>;
2255
- }, z.core.$strip>, z.ZodObject<{
2527
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2256
2528
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2257
2529
  name: z.ZodOptional<z.ZodString>;
2258
2530
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2267,7 +2539,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2267
2539
  fov: z.ZodOptional<z.ZodNumber>;
2268
2540
  zoom: z.ZodOptional<z.ZodNumber>;
2269
2541
  }, z.core.$strip>>;
2270
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2542
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2271
2543
  id: z.ZodDefault<z.ZodTemplateLiteral<`measurement_${string}`>>;
2272
2544
  type: z.ZodDefault<z.ZodLiteral<"measurement">>;
2273
2545
  measurement: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -2351,7 +2623,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2351
2623
  }, z.core.$strip>]>>;
2352
2624
  extrusion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
2353
2625
  }, z.core.$strip>], "kind">;
2354
- }, z.core.$strip>, z.ZodObject<{
2626
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2355
2627
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2356
2628
  name: z.ZodOptional<z.ZodString>;
2357
2629
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2366,13 +2638,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2366
2638
  fov: z.ZodOptional<z.ZodNumber>;
2367
2639
  zoom: z.ZodOptional<z.ZodNumber>;
2368
2640
  }, z.core.$strip>>;
2369
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2641
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2370
2642
  id: z.ZodDefault<z.ZodTemplateLiteral<`spawn_${string}`>>;
2371
2643
  type: z.ZodDefault<z.ZodLiteral<"spawn">>;
2372
2644
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
2373
2645
  rotation: z.ZodDefault<z.ZodNumber>;
2374
2646
  supportSlabId: z.ZodOptional<z.ZodString>;
2375
- }, z.core.$strip>, z.ZodObject<{
2647
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2376
2648
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2377
2649
  name: z.ZodOptional<z.ZodString>;
2378
2650
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2387,7 +2659,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2387
2659
  fov: z.ZodOptional<z.ZodNumber>;
2388
2660
  zoom: z.ZodOptional<z.ZodNumber>;
2389
2661
  }, z.core.$strip>>;
2390
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2662
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2391
2663
  id: z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>;
2392
2664
  type: z.ZodDefault<z.ZodLiteral<"window">>;
2393
2665
  material: z.ZodOptional<z.ZodObject<{
@@ -2430,6 +2702,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2430
2702
  back: "back";
2431
2703
  }>>;
2432
2704
  wallId: z.ZodOptional<z.ZodString>;
2705
+ dormerId: z.ZodOptional<z.ZodString>;
2706
+ dormerFace: z.ZodOptional<z.ZodEnum<{
2707
+ front: "front";
2708
+ back: "back";
2709
+ right: "right";
2710
+ left: "left";
2711
+ }>>;
2433
2712
  roofSegmentId: z.ZodOptional<z.ZodString>;
2434
2713
  roofFace: z.ZodOptional<z.ZodEnum<{
2435
2714
  front: "front";
@@ -2461,8 +2740,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2461
2740
  opening: "opening";
2462
2741
  }>>;
2463
2742
  windowType: z.ZodDefault<z.ZodEnum<{
2464
- sliding: "sliding";
2465
2743
  fixed: "fixed";
2744
+ sliding: "sliding";
2466
2745
  casement: "casement";
2467
2746
  awning: "awning";
2468
2747
  hopper: "hopper";
@@ -2507,7 +2786,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2507
2786
  sill: z.ZodDefault<z.ZodBoolean>;
2508
2787
  sillDepth: z.ZodDefault<z.ZodNumber>;
2509
2788
  sillThickness: z.ZodDefault<z.ZodNumber>;
2510
- }, z.core.$strip>, z.ZodObject<{
2789
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2511
2790
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2512
2791
  name: z.ZodOptional<z.ZodString>;
2513
2792
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2522,7 +2801,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2522
2801
  fov: z.ZodOptional<z.ZodNumber>;
2523
2802
  zoom: z.ZodOptional<z.ZodNumber>;
2524
2803
  }, z.core.$strip>>;
2525
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2804
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2526
2805
  id: z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>;
2527
2806
  type: z.ZodDefault<z.ZodLiteral<"door">>;
2528
2807
  material: z.ZodOptional<z.ZodObject<{
@@ -2672,7 +2951,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2672
2951
  doorCloser: z.ZodDefault<z.ZodBoolean>;
2673
2952
  panicBar: z.ZodDefault<z.ZodBoolean>;
2674
2953
  panicBarHeight: z.ZodDefault<z.ZodNumber>;
2675
- }, z.core.$strip>, z.ZodObject<{
2954
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2676
2955
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2677
2956
  name: z.ZodOptional<z.ZodString>;
2678
2957
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2687,7 +2966,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2687
2966
  fov: z.ZodOptional<z.ZodNumber>;
2688
2967
  zoom: z.ZodOptional<z.ZodNumber>;
2689
2968
  }, z.core.$strip>>;
2690
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
2969
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2691
2970
  id: z.ZodDefault<z.ZodTemplateLiteral<`bvent_${string}`>>;
2692
2971
  type: z.ZodDefault<z.ZodLiteral<"box-vent">>;
2693
2972
  material: z.ZodOptional<z.ZodObject<{
@@ -2722,6 +3001,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2722
3001
  scale: z.ZodOptional<z.ZodNumber>;
2723
3002
  }, z.core.$strip>>;
2724
3003
  }, z.core.$strip>>;
3004
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2725
3005
  materialPreset: z.ZodDefault<z.ZodString>;
2726
3006
  roofSegmentId: z.ZodOptional<z.ZodString>;
2727
3007
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -2741,8 +3021,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2741
3021
  box: "box";
2742
3022
  cap: "cap";
2743
3023
  dome: "dome";
2744
- }>>>;
2745
- }, z.core.$strip>, z.ZodObject<{
3024
+ }>>, unknown>;
3025
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2746
3026
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2747
3027
  name: z.ZodOptional<z.ZodString>;
2748
3028
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2757,7 +3037,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2757
3037
  fov: z.ZodOptional<z.ZodNumber>;
2758
3038
  zoom: z.ZodOptional<z.ZodNumber>;
2759
3039
  }, z.core.$strip>>;
2760
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3040
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2761
3041
  id: z.ZodDefault<z.ZodTemplateLiteral<`rvent_${string}`>>;
2762
3042
  type: z.ZodDefault<z.ZodLiteral<"ridge-vent">>;
2763
3043
  material: z.ZodOptional<z.ZodObject<{
@@ -2805,7 +3085,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2805
3085
  shingled: "shingled";
2806
3086
  }>>;
2807
3087
  endCaps: z.ZodDefault<z.ZodBoolean>;
2808
- }, z.core.$strip>, z.ZodObject<{
3088
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2809
3089
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2810
3090
  name: z.ZodOptional<z.ZodString>;
2811
3091
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2820,7 +3100,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2820
3100
  fov: z.ZodOptional<z.ZodNumber>;
2821
3101
  zoom: z.ZodOptional<z.ZodNumber>;
2822
3102
  }, z.core.$strip>>;
2823
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3103
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2824
3104
  id: z.ZodDefault<z.ZodTemplateLiteral<`tvent_${string}`>>;
2825
3105
  type: z.ZodDefault<z.ZodLiteral<"turbine-vent">>;
2826
3106
  material: z.ZodOptional<z.ZodObject<{
@@ -2855,6 +3135,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2855
3135
  scale: z.ZodOptional<z.ZodNumber>;
2856
3136
  }, z.core.$strip>>;
2857
3137
  }, z.core.$strip>>;
3138
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2858
3139
  materialPreset: z.ZodDefault<z.ZodString>;
2859
3140
  roofSegmentId: z.ZodOptional<z.ZodString>;
2860
3141
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -2869,7 +3150,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2869
3150
  globe: "globe";
2870
3151
  cylinder: "cylinder";
2871
3152
  }>>;
2872
- }, z.core.$strip>, z.ZodObject<{
3153
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2873
3154
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2874
3155
  name: z.ZodOptional<z.ZodString>;
2875
3156
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2884,7 +3165,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2884
3165
  fov: z.ZodOptional<z.ZodNumber>;
2885
3166
  zoom: z.ZodOptional<z.ZodNumber>;
2886
3167
  }, z.core.$strip>>;
2887
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3168
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2888
3169
  id: z.ZodDefault<z.ZodTemplateLiteral<`cupola_${string}`>>;
2889
3170
  type: z.ZodDefault<z.ZodLiteral<"cupola">>;
2890
3171
  material: z.ZodOptional<z.ZodObject<{
@@ -2919,6 +3200,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2919
3200
  scale: z.ZodOptional<z.ZodNumber>;
2920
3201
  }, z.core.$strip>>;
2921
3202
  }, z.core.$strip>>;
3203
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2922
3204
  materialPreset: z.ZodDefault<z.ZodString>;
2923
3205
  roofSegmentId: z.ZodOptional<z.ZodString>;
2924
3206
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -2931,7 +3213,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2931
3213
  pyramid: "pyramid";
2932
3214
  }>>;
2933
3215
  finial: z.ZodDefault<z.ZodBoolean>;
2934
- }, z.core.$strip>, z.ZodObject<{
3216
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2935
3217
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2936
3218
  name: z.ZodOptional<z.ZodString>;
2937
3219
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2946,7 +3228,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2946
3228
  fov: z.ZodOptional<z.ZodNumber>;
2947
3229
  zoom: z.ZodOptional<z.ZodNumber>;
2948
3230
  }, z.core.$strip>>;
2949
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3231
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2950
3232
  id: z.ZodDefault<z.ZodTemplateLiteral<`eyebrow-vent_${string}`>>;
2951
3233
  type: z.ZodDefault<z.ZodLiteral<"eyebrow-vent">>;
2952
3234
  material: z.ZodOptional<z.ZodObject<{
@@ -2981,6 +3263,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2981
3263
  scale: z.ZodOptional<z.ZodNumber>;
2982
3264
  }, z.core.$strip>>;
2983
3265
  }, z.core.$strip>>;
3266
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2984
3267
  materialPreset: z.ZodDefault<z.ZodString>;
2985
3268
  roofSegmentId: z.ZodOptional<z.ZodString>;
2986
3269
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -2989,13 +3272,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2989
3272
  depth: z.ZodDefault<z.ZodNumber>;
2990
3273
  height: z.ZodDefault<z.ZodNumber>;
2991
3274
  style: z.ZodDefault<z.ZodEnum<{
2992
- scoop: "scoop";
2993
3275
  "half-round": "half-round";
3276
+ scoop: "scoop";
2994
3277
  "slant-box": "slant-box";
2995
3278
  }>>;
2996
3279
  louverCount: z.ZodDefault<z.ZodNumber>;
2997
3280
  backRatio: z.ZodDefault<z.ZodNumber>;
2998
- }, z.core.$strip>, z.ZodObject<{
3281
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
2999
3282
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3000
3283
  name: z.ZodOptional<z.ZodString>;
3001
3284
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3010,7 +3293,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3010
3293
  fov: z.ZodOptional<z.ZodNumber>;
3011
3294
  zoom: z.ZodOptional<z.ZodNumber>;
3012
3295
  }, z.core.$strip>>;
3013
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3296
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3014
3297
  id: z.ZodDefault<z.ZodTemplateLiteral<`gutter_${string}`>>;
3015
3298
  type: z.ZodDefault<z.ZodLiteral<"gutter">>;
3016
3299
  material: z.ZodOptional<z.ZodObject<{
@@ -3045,17 +3328,23 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3045
3328
  scale: z.ZodOptional<z.ZodNumber>;
3046
3329
  }, z.core.$strip>>;
3047
3330
  }, z.core.$strip>>;
3331
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3048
3332
  materialPreset: z.ZodDefault<z.ZodString>;
3049
3333
  roofSegmentId: z.ZodOptional<z.ZodString>;
3050
3334
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3051
3335
  rotation: z.ZodDefault<z.ZodNumber>;
3052
3336
  length: z.ZodDefault<z.ZodNumber>;
3337
+ arc: z.ZodOptional<z.ZodObject<{
3338
+ centerX: z.ZodNumber;
3339
+ centerZ: z.ZodNumber;
3340
+ radius: z.ZodNumber;
3341
+ }, z.core.$strip>>;
3053
3342
  size: z.ZodDefault<z.ZodNumber>;
3054
3343
  thickness: z.ZodDefault<z.ZodNumber>;
3055
3344
  profile: z.ZodDefault<z.ZodEnum<{
3056
3345
  box: "box";
3057
- "half-round": "half-round";
3058
3346
  "k-style": "k-style";
3347
+ "half-round": "half-round";
3059
3348
  }>>;
3060
3349
  endCapLeft: z.ZodDefault<z.ZodBoolean>;
3061
3350
  endCapRight: z.ZodDefault<z.ZodBoolean>;
@@ -3068,8 +3357,9 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3068
3357
  id: z.ZodString;
3069
3358
  offset: z.ZodDefault<z.ZodNumber>;
3070
3359
  diameter: z.ZodDefault<z.ZodNumber>;
3360
+ generatedBy: z.ZodOptional<z.ZodLiteral<"default-downspout">>;
3071
3361
  }, z.core.$strip>>>;
3072
- }, z.core.$strip>, z.ZodObject<{
3362
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3073
3363
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3074
3364
  name: z.ZodOptional<z.ZodString>;
3075
3365
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3084,7 +3374,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3084
3374
  fov: z.ZodOptional<z.ZodNumber>;
3085
3375
  zoom: z.ZodOptional<z.ZodNumber>;
3086
3376
  }, z.core.$strip>>;
3087
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3377
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3088
3378
  id: z.ZodDefault<z.ZodTemplateLiteral<`chimney_${string}`>>;
3089
3379
  type: z.ZodDefault<z.ZodLiteral<"chimney">>;
3090
3380
  material: z.ZodOptional<z.ZodObject<{
@@ -3218,7 +3508,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3218
3508
  panelHeight: z.ZodDefault<z.ZodNumber>;
3219
3509
  panelOffsetTop: z.ZodDefault<z.ZodNumber>;
3220
3510
  panelMargin: z.ZodDefault<z.ZodNumber>;
3221
- }, z.core.$strip>, z.ZodObject<{
3511
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3222
3512
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3223
3513
  name: z.ZodOptional<z.ZodString>;
3224
3514
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3233,7 +3523,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3233
3523
  fov: z.ZodOptional<z.ZodNumber>;
3234
3524
  zoom: z.ZodOptional<z.ZodNumber>;
3235
3525
  }, z.core.$strip>>;
3236
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3526
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3237
3527
  id: z.ZodDefault<z.ZodTemplateLiteral<`solarpanel_${string}`>>;
3238
3528
  type: z.ZodDefault<z.ZodLiteral<"solar-panel">>;
3239
3529
  material: z.ZodOptional<z.ZodObject<{
@@ -3326,7 +3616,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3326
3616
  frameThickness: z.ZodDefault<z.ZodNumber>;
3327
3617
  frameDepth: z.ZodDefault<z.ZodNumber>;
3328
3618
  surfaceNormal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3329
- }, z.core.$strip>, z.ZodObject<{
3619
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3330
3620
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3331
3621
  name: z.ZodOptional<z.ZodString>;
3332
3622
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3341,7 +3631,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3341
3631
  fov: z.ZodOptional<z.ZodNumber>;
3342
3632
  zoom: z.ZodOptional<z.ZodNumber>;
3343
3633
  }, z.core.$strip>>;
3344
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3634
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3345
3635
  id: z.ZodDefault<z.ZodTemplateLiteral<`skylight_${string}`>>;
3346
3636
  type: z.ZodDefault<z.ZodLiteral<"skylight">>;
3347
3637
  material: z.ZodOptional<z.ZodObject<{
@@ -3447,7 +3737,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3447
3737
  curbHeight: z.ZodDefault<z.ZodNumber>;
3448
3738
  cutoutOffset: z.ZodDefault<z.ZodNumber>;
3449
3739
  surfaceNormal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3450
- }, z.core.$strip>, z.ZodObject<{
3740
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3451
3741
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3452
3742
  name: z.ZodOptional<z.ZodString>;
3453
3743
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3462,7 +3752,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3462
3752
  fov: z.ZodOptional<z.ZodNumber>;
3463
3753
  zoom: z.ZodOptional<z.ZodNumber>;
3464
3754
  }, z.core.$strip>>;
3465
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3755
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3466
3756
  id: z.ZodDefault<z.ZodTemplateLiteral<`dormer_${string}`>>;
3467
3757
  type: z.ZodDefault<z.ZodLiteral<"dormer">>;
3468
3758
  material: z.ZodOptional<z.ZodObject<{
@@ -3611,8 +3901,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3611
3901
  gambrel: "gambrel";
3612
3902
  dutch: "dutch";
3613
3903
  mansard: "mansard";
3904
+ conical: "conical";
3614
3905
  }>>;
3615
3906
  roofHeight: z.ZodDefault<z.ZodNumber>;
3907
+ shedHighSide: z.ZodDefault<z.ZodEnum<{
3908
+ front: "front";
3909
+ back: "back";
3910
+ }>>;
3616
3911
  wallSkirtHeight: z.ZodDefault<z.ZodNumber>;
3617
3912
  windowWidth: z.ZodDefault<z.ZodNumber>;
3618
3913
  windowHeight: z.ZodDefault<z.ZodNumber>;
@@ -3633,7 +3928,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3633
3928
  windowSill: z.ZodDefault<z.ZodBoolean>;
3634
3929
  windowSillDepth: z.ZodDefault<z.ZodNumber>;
3635
3930
  windowSillThickness: z.ZodDefault<z.ZodNumber>;
3636
- }, z.core.$strip>, z.ZodObject<{
3931
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>>>;
3932
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3637
3933
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3638
3934
  name: z.ZodOptional<z.ZodString>;
3639
3935
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3648,7 +3944,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3648
3944
  fov: z.ZodOptional<z.ZodNumber>;
3649
3945
  zoom: z.ZodOptional<z.ZodNumber>;
3650
3946
  }, z.core.$strip>>;
3651
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
3947
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3652
3948
  id: z.ZodDefault<z.ZodTemplateLiteral<`downspout_${string}`>>;
3653
3949
  type: z.ZodDefault<z.ZodLiteral<"downspout">>;
3654
3950
  material: z.ZodOptional<z.ZodObject<{
@@ -3683,10 +3979,15 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3683
3979
  scale: z.ZodOptional<z.ZodNumber>;
3684
3980
  }, z.core.$strip>>;
3685
3981
  }, z.core.$strip>>;
3982
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3686
3983
  materialPreset: z.ZodDefault<z.ZodString>;
3687
3984
  gutterId: z.ZodOptional<z.ZodString>;
3688
3985
  outletId: z.ZodOptional<z.ZodString>;
3689
3986
  length: z.ZodDefault<z.ZodNumber>;
3987
+ lengthMode: z.ZodOptional<z.ZodEnum<{
3988
+ manual: "manual";
3989
+ "to-ground": "to-ground";
3990
+ }>>;
3690
3991
  diameter: z.ZodDefault<z.ZodNumber>;
3691
3992
  standoff: z.ZodDefault<z.ZodNumber>;
3692
3993
  shape: z.ZodDefault<z.ZodEnum<{
@@ -3704,7 +4005,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3704
4005
  splash: "splash";
3705
4006
  kickout: "kickout";
3706
4007
  }>>;
3707
- }, z.core.$strip>, z.ZodObject<{
4008
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3708
4009
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3709
4010
  name: z.ZodOptional<z.ZodString>;
3710
4011
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3719,10 +4020,32 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3719
4020
  fov: z.ZodOptional<z.ZodNumber>;
3720
4021
  zoom: z.ZodOptional<z.ZodNumber>;
3721
4022
  }, z.core.$strip>>;
3722
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4023
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3723
4024
  id: z.ZodDefault<z.ZodTemplateLiteral<`duct-segment_${string}`>>;
3724
4025
  type: z.ZodDefault<z.ZodLiteral<"duct-segment">>;
3725
4026
  path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
4027
+ autoHangers: z.ZodOptional<z.ZodBoolean>;
4028
+ hangerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
4029
+ fraction: z.ZodOptional<z.ZodNumber>;
4030
+ skipped: z.ZodOptional<z.ZodBoolean>;
4031
+ hostId: z.ZodOptional<z.ZodString>;
4032
+ }, z.core.$strip>>>;
4033
+ hangerStyle: z.ZodOptional<z.ZodEnum<{
4034
+ double: "double";
4035
+ single: "single";
4036
+ }>>;
4037
+ hangerSpacing: z.ZodOptional<z.ZodNumber>;
4038
+ hangerMaxReach: z.ZodOptional<z.ZodNumber>;
4039
+ wallAttachment: z.ZodOptional<z.ZodObject<{
4040
+ wallId: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
4041
+ side: z.ZodEnum<{
4042
+ front: "front";
4043
+ back: "back";
4044
+ }>;
4045
+ startUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4046
+ endUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4047
+ offset: z.ZodNumber;
4048
+ }, z.core.$strip>>;
3726
4049
  shape: z.ZodDefault<z.ZodEnum<{
3727
4050
  round: "round";
3728
4051
  rect: "rect";
@@ -3746,7 +4069,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3746
4069
  return: "return";
3747
4070
  }>>;
3748
4071
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3749
- }, z.core.$strip>, z.ZodObject<{
4072
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3750
4073
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3751
4074
  name: z.ZodOptional<z.ZodString>;
3752
4075
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3761,7 +4084,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3761
4084
  fov: z.ZodOptional<z.ZodNumber>;
3762
4085
  zoom: z.ZodOptional<z.ZodNumber>;
3763
4086
  }, z.core.$strip>>;
3764
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4087
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3765
4088
  id: z.ZodDefault<z.ZodTemplateLiteral<`duct-fitting_${string}`>>;
3766
4089
  type: z.ZodDefault<z.ZodLiteral<"duct-fitting">>;
3767
4090
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -3772,12 +4095,26 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3772
4095
  cross: "cross";
3773
4096
  reducer: "reducer";
3774
4097
  transition: "transition";
4098
+ "end-cap": "end-cap";
4099
+ damper: "damper";
4100
+ "access-panel": "access-panel";
4101
+ coupling: "coupling";
3775
4102
  }>>;
3776
4103
  shape: z.ZodDefault<z.ZodEnum<{
3777
4104
  round: "round";
3778
4105
  rect: "rect";
3779
4106
  oval: "oval";
3780
4107
  }>>;
4108
+ inletShape: z.ZodOptional<z.ZodEnum<{
4109
+ round: "round";
4110
+ rect: "rect";
4111
+ oval: "oval";
4112
+ }>>;
4113
+ outletShape: z.ZodOptional<z.ZodEnum<{
4114
+ round: "round";
4115
+ rect: "rect";
4116
+ oval: "oval";
4117
+ }>>;
3781
4118
  width: z.ZodDefault<z.ZodNumber>;
3782
4119
  height: z.ZodDefault<z.ZodNumber>;
3783
4120
  shape2: z.ZodDefault<z.ZodEnum<{
@@ -3800,8 +4137,11 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3800
4137
  supply: "supply";
3801
4138
  return: "return";
3802
4139
  }>>;
4140
+ damperAngle: z.ZodDefault<z.ZodNumber>;
4141
+ panelWidth: z.ZodDefault<z.ZodNumber>;
4142
+ panelHeight: z.ZodDefault<z.ZodNumber>;
3803
4143
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3804
- }, z.core.$strip>, z.ZodObject<{
4144
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3805
4145
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3806
4146
  name: z.ZodOptional<z.ZodString>;
3807
4147
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3816,7 +4156,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3816
4156
  fov: z.ZodOptional<z.ZodNumber>;
3817
4157
  zoom: z.ZodOptional<z.ZodNumber>;
3818
4158
  }, z.core.$strip>>;
3819
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4159
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3820
4160
  id: z.ZodDefault<z.ZodTemplateLiteral<`duct-terminal_${string}`>>;
3821
4161
  type: z.ZodDefault<z.ZodLiteral<"duct-terminal">>;
3822
4162
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -3842,7 +4182,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3842
4182
  collarDiameter: z.ZodDefault<z.ZodNumber>;
3843
4183
  collarWidth: z.ZodDefault<z.ZodNumber>;
3844
4184
  collarHeight: z.ZodDefault<z.ZodNumber>;
3845
- }, z.core.$strip>, z.ZodObject<{
4185
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3846
4186
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3847
4187
  name: z.ZodOptional<z.ZodString>;
3848
4188
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3857,7 +4197,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3857
4197
  fov: z.ZodOptional<z.ZodNumber>;
3858
4198
  zoom: z.ZodOptional<z.ZodNumber>;
3859
4199
  }, z.core.$strip>>;
3860
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4200
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3861
4201
  id: z.ZodDefault<z.ZodTemplateLiteral<`hvac-equipment_${string}`>>;
3862
4202
  type: z.ZodDefault<z.ZodLiteral<"hvac-equipment">>;
3863
4203
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -3887,7 +4227,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3887
4227
  supplyHeight: z.ZodDefault<z.ZodNumber>;
3888
4228
  returnWidth: z.ZodDefault<z.ZodNumber>;
3889
4229
  returnHeight: z.ZodDefault<z.ZodNumber>;
3890
- }, z.core.$strip>, z.ZodObject<{
4230
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3891
4231
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3892
4232
  name: z.ZodOptional<z.ZodString>;
3893
4233
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3902,14 +4242,14 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3902
4242
  fov: z.ZodOptional<z.ZodNumber>;
3903
4243
  zoom: z.ZodOptional<z.ZodNumber>;
3904
4244
  }, z.core.$strip>>;
3905
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4245
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3906
4246
  id: z.ZodDefault<z.ZodTemplateLiteral<`lineset_${string}`>>;
3907
4247
  type: z.ZodDefault<z.ZodLiteral<"lineset">>;
3908
4248
  path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3909
4249
  suctionDiameter: z.ZodDefault<z.ZodNumber>;
3910
4250
  liquidDiameter: z.ZodDefault<z.ZodNumber>;
3911
4251
  insulated: z.ZodDefault<z.ZodBoolean>;
3912
- }, z.core.$strip>, z.ZodObject<{
4252
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3913
4253
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3914
4254
  name: z.ZodOptional<z.ZodString>;
3915
4255
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3924,12 +4264,12 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3924
4264
  fov: z.ZodOptional<z.ZodNumber>;
3925
4265
  zoom: z.ZodOptional<z.ZodNumber>;
3926
4266
  }, z.core.$strip>>;
3927
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4267
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3928
4268
  id: z.ZodDefault<z.ZodTemplateLiteral<`liquid-line_${string}`>>;
3929
4269
  type: z.ZodDefault<z.ZodLiteral<"liquid-line">>;
3930
4270
  path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3931
4271
  diameter: z.ZodDefault<z.ZodNumber>;
3932
- }, z.core.$strip>, z.ZodObject<{
4272
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3933
4273
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3934
4274
  name: z.ZodOptional<z.ZodString>;
3935
4275
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3944,10 +4284,32 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3944
4284
  fov: z.ZodOptional<z.ZodNumber>;
3945
4285
  zoom: z.ZodOptional<z.ZodNumber>;
3946
4286
  }, z.core.$strip>>;
3947
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4287
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3948
4288
  id: z.ZodDefault<z.ZodTemplateLiteral<`pipe-segment_${string}`>>;
3949
4289
  type: z.ZodDefault<z.ZodLiteral<"pipe-segment">>;
3950
4290
  path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
4291
+ autoHangers: z.ZodOptional<z.ZodBoolean>;
4292
+ hangerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
4293
+ fraction: z.ZodOptional<z.ZodNumber>;
4294
+ skipped: z.ZodOptional<z.ZodBoolean>;
4295
+ hostId: z.ZodOptional<z.ZodString>;
4296
+ }, z.core.$strip>>>;
4297
+ hangerStyle: z.ZodOptional<z.ZodEnum<{
4298
+ double: "double";
4299
+ single: "single";
4300
+ }>>;
4301
+ hangerSpacing: z.ZodOptional<z.ZodNumber>;
4302
+ hangerMaxReach: z.ZodOptional<z.ZodNumber>;
4303
+ wallAttachment: z.ZodOptional<z.ZodObject<{
4304
+ wallId: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
4305
+ side: z.ZodEnum<{
4306
+ front: "front";
4307
+ back: "back";
4308
+ }>;
4309
+ startUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4310
+ endUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4311
+ offset: z.ZodNumber;
4312
+ }, z.core.$strip>>;
3951
4313
  diameter: z.ZodDefault<z.ZodNumber>;
3952
4314
  pipeMaterial: z.ZodDefault<z.ZodEnum<{
3953
4315
  pvc: "pvc";
@@ -3958,7 +4320,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3958
4320
  waste: "waste";
3959
4321
  vent: "vent";
3960
4322
  }>>;
3961
- }, z.core.$strip>, z.ZodObject<{
4323
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
3962
4324
  object: z.ZodDefault<z.ZodLiteral<"node">>;
3963
4325
  name: z.ZodOptional<z.ZodString>;
3964
4326
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3973,7 +4335,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3973
4335
  fov: z.ZodOptional<z.ZodNumber>;
3974
4336
  zoom: z.ZodOptional<z.ZodNumber>;
3975
4337
  }, z.core.$strip>>;
3976
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4338
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3977
4339
  id: z.ZodDefault<z.ZodTemplateLiteral<`pipe-fitting_${string}`>>;
3978
4340
  type: z.ZodDefault<z.ZodLiteral<"pipe-fitting">>;
3979
4341
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -3981,12 +4343,20 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3981
4343
  fittingType: z.ZodDefault<z.ZodEnum<{
3982
4344
  elbow: "elbow";
3983
4345
  cross: "cross";
4346
+ reducer: "reducer";
4347
+ "end-cap": "end-cap";
4348
+ coupling: "coupling";
3984
4349
  wye: "wye";
3985
4350
  "sanitary-tee": "sanitary-tee";
4351
+ cleanout: "cleanout";
3986
4352
  }>>;
3987
4353
  angle: z.ZodDefault<z.ZodNumber>;
3988
4354
  diameter: z.ZodDefault<z.ZodNumber>;
3989
4355
  diameter2: z.ZodDefault<z.ZodNumber>;
4356
+ cleanoutStyle: z.ZodDefault<z.ZodEnum<{
4357
+ end: "end";
4358
+ inline: "inline";
4359
+ }>>;
3990
4360
  pipeMaterial: z.ZodDefault<z.ZodEnum<{
3991
4361
  pvc: "pvc";
3992
4362
  abs: "abs";
@@ -3996,7 +4366,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3996
4366
  waste: "waste";
3997
4367
  vent: "vent";
3998
4368
  }>>;
3999
- }, z.core.$strip>, z.ZodObject<{
4369
+ }, z.core.$strip>>, BareDiscriminator<z.ZodObject<{
4000
4370
  object: z.ZodDefault<z.ZodLiteral<"node">>;
4001
4371
  name: z.ZodOptional<z.ZodString>;
4002
4372
  parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -4011,7 +4381,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
4011
4381
  fov: z.ZodOptional<z.ZodNumber>;
4012
4382
  zoom: z.ZodOptional<z.ZodNumber>;
4013
4383
  }, z.core.$strip>>;
4014
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
4384
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4015
4385
  id: z.ZodDefault<z.ZodTemplateLiteral<`pipe-trap_${string}`>>;
4016
4386
  type: z.ZodDefault<z.ZodLiteral<"pipe-trap">>;
4017
4387
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -4023,8 +4393,13 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
4023
4393
  "cast-iron": "cast-iron";
4024
4394
  }>>;
4025
4395
  armLengthM: z.ZodDefault<z.ZodNumber>;
4026
- }, z.core.$strip>], "type">;
4396
+ }, z.core.$strip>>], "type">;
4027
4397
  export type AnyNode = z.infer<typeof AnyNode>;
4028
4398
  export type AnyNodeType = AnyNode['type'];
4029
4399
  export type AnyNodeId = AnyNode['id'];
4400
+ /** One member schema of `AnyNode`, discriminator already projected to a bare literal. */
4401
+ export type AnyNodeOption = (typeof AnyNode)['options'][number];
4402
+ /** The node kind a union member accepts, read off its bare-literal discriminator. */
4403
+ export declare const nodeKindOf: (option: AnyNodeOption) => AnyNodeType;
4404
+ export {};
4030
4405
  //# sourceMappingURL=types.d.ts.map