@pascal-app/core 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/agent-operations/__fixtures__/cases.d.ts +3 -2
  2. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/place-items-cases.js +28 -0
  5. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +12209 -12209
  6. package/dist/agent-operations/asset-catalog.d.ts +21 -11
  7. package/dist/agent-operations/asset-catalog.d.ts.map +1 -1
  8. package/dist/agent-operations/asset-catalog.js +28 -10
  9. package/dist/agent-operations/asset-views.d.ts +8 -3
  10. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  11. package/dist/agent-operations/asset-views.js +19 -3
  12. package/dist/agent-operations/batch.d.ts +7 -1
  13. package/dist/agent-operations/batch.d.ts.map +1 -1
  14. package/dist/agent-operations/batch.js +17 -2
  15. package/dist/agent-operations/catalog-asset.d.ts +15 -0
  16. package/dist/agent-operations/catalog-asset.d.ts.map +1 -0
  17. package/dist/agent-operations/catalog-asset.js +4 -0
  18. package/dist/agent-operations/circulation-spaces.d.ts +2963 -2963
  19. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  20. package/dist/agent-operations/design-brief.js +2 -0
  21. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  22. package/dist/agent-operations/furnish-room.js +2 -1
  23. package/dist/agent-operations/index.d.ts +3 -0
  24. package/dist/agent-operations/index.d.ts.map +1 -1
  25. package/dist/agent-operations/index.js +4 -1
  26. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  27. package/dist/agent-operations/level-reads.js +4 -1
  28. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  29. package/dist/agent-operations/place-in-room.js +2 -1
  30. package/dist/agent-operations/place-items.d.ts.map +1 -1
  31. package/dist/agent-operations/place-items.js +2 -1
  32. package/dist/agent-operations/scene-queries.d.ts +585 -585
  33. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  34. package/dist/agent-operations/scene-view.js +38 -13
  35. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  36. package/dist/agent-operations/search-assets.js +6 -0
  37. package/dist/agent-operations/types.d.ts +3 -2
  38. package/dist/agent-operations/types.d.ts.map +1 -1
  39. package/dist/agent-operations/usage-checks.js +18 -3
  40. package/dist/agent-tools/assets.js +1 -1
  41. package/dist/building/__fixtures__/wall-opening-cases.d.ts +234 -234
  42. package/dist/building/level-duplication.d.ts +3516 -3516
  43. package/dist/building/level-duplication.d.ts.map +1 -1
  44. package/dist/building/level-duplication.js +3 -1
  45. package/dist/building/wall-openings.d.ts +75 -75
  46. package/dist/commands/structure/shared.d.ts +3407 -3407
  47. package/dist/commands/structure/zone-wall-merge.d.ts +566 -566
  48. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +585 -585
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/lib/__fixtures__/mezzanine.d.ts +9262 -9262
  53. package/dist/lib/absorb-wall-separators.d.ts +1344 -1344
  54. package/dist/lib/asset-storage.d.ts.map +1 -1
  55. package/dist/lib/asset-storage.js +3 -0
  56. package/dist/lib/floor-foundation-datum.d.ts.map +1 -1
  57. package/dist/lib/floor-foundation-datum.js +5 -1
  58. package/dist/lib/floorplan/context.d.ts +95 -0
  59. package/dist/lib/floorplan/context.d.ts.map +1 -0
  60. package/dist/lib/floorplan/context.js +155 -0
  61. package/dist/lib/floorplan/index.d.ts +6 -0
  62. package/dist/lib/floorplan/index.d.ts.map +1 -0
  63. package/dist/lib/floorplan/index.js +5 -0
  64. package/dist/lib/floorplan/marks.d.ts +71 -0
  65. package/dist/lib/floorplan/marks.d.ts.map +1 -0
  66. package/dist/lib/floorplan/marks.js +157 -0
  67. package/dist/lib/floorplan/plan-math.d.ts +18 -0
  68. package/dist/lib/floorplan/plan-math.d.ts.map +1 -0
  69. package/dist/lib/floorplan/plan-math.js +82 -0
  70. package/dist/lib/floorplan/svg-paths.d.ts +17 -0
  71. package/dist/lib/floorplan/svg-paths.d.ts.map +1 -0
  72. package/dist/lib/floorplan/svg-paths.js +92 -0
  73. package/dist/lib/floorplan/wall-affordances.d.ts +31 -0
  74. package/dist/lib/floorplan/wall-affordances.d.ts.map +1 -0
  75. package/dist/lib/floorplan/wall-affordances.js +24 -0
  76. package/dist/registry/__fixtures__/roof-planes.d.ts +69 -0
  77. package/dist/registry/__fixtures__/roof-planes.d.ts.map +1 -0
  78. package/dist/registry/__fixtures__/roof-planes.js +59 -0
  79. package/dist/registry/index.d.ts +2 -1
  80. package/dist/registry/index.d.ts.map +1 -1
  81. package/dist/registry/index.js +1 -0
  82. package/dist/registry/roofs.d.ts +34 -0
  83. package/dist/registry/roofs.d.ts.map +1 -0
  84. package/dist/registry/roofs.js +61 -0
  85. package/dist/registry/types.d.ts +30 -0
  86. package/dist/registry/types.d.ts.map +1 -1
  87. package/dist/registry/validate-relations.d.ts +5 -1
  88. package/dist/registry/validate-relations.d.ts.map +1 -1
  89. package/dist/registry/validate-relations.js +6 -2
  90. package/dist/schema/asset-url.d.ts +8 -0
  91. package/dist/schema/asset-url.d.ts.map +1 -1
  92. package/dist/schema/asset-url.js +17 -0
  93. package/dist/schema/nodes/roof.d.ts +1 -1
  94. package/dist/schema/nodes/roof.d.ts.map +1 -1
  95. package/dist/schema/nodes/roof.js +13 -8
  96. package/dist/schema/types.d.ts +1 -1
  97. package/dist/services/roof-level.d.ts.map +1 -1
  98. package/dist/services/roof-level.js +12 -2
  99. package/dist/services/roof-move.d.ts +4 -2
  100. package/dist/services/roof-move.d.ts.map +1 -1
  101. package/dist/services/roof-move.js +21 -9
  102. package/dist/spatial/usage-field/findings.d.ts +7 -1
  103. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  104. package/dist/spatial/usage-field/findings.js +42 -10
  105. package/dist/spatial/usage-field/path.d.ts.map +1 -1
  106. package/dist/spatial/usage-field/path.js +28 -18
  107. package/dist/store/actions/node-actions.d.ts +1641 -1641
  108. package/dist/store/scene-annotations.d.ts +1778 -1778
  109. package/dist/systems/document-reconcile.d.ts.map +1 -1
  110. package/dist/systems/document-reconcile.js +1 -2
  111. package/dist/systems/roof/roof-elevation.d.ts +11 -6
  112. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  113. package/dist/systems/roof/roof-elevation.js +24 -11
  114. package/dist/systems/slab/__fixtures__/floor-step.d.ts +1622 -1622
  115. package/dist/systems/slab/__fixtures__/raised-room.d.ts +585 -585
  116. package/dist/systems/stair/stair-opening-preview.d.ts +1919 -1919
  117. package/dist/utils/ensure-scene-openings.d.ts +3409 -3409
  118. package/dist/utils/floor-plate-migration.d.ts +1344 -1344
  119. package/dist/utils/owned-floor-opening-migration.d.ts +1344 -1344
  120. package/dist/utils/reconcile-structure-on-load.d.ts +1641 -1641
  121. package/dist/utils/scene-bounds.d.ts +32 -0
  122. package/dist/utils/scene-bounds.d.ts.map +1 -0
  123. package/dist/utils/scene-bounds.js +201 -0
  124. package/package.json +1 -1
@@ -1036,34 +1036,6 @@ export declare function floorStepFixture(separator?: boolean): {
1036
1036
  backSide: "exterior" | "interior" | "unknown";
1037
1037
  };
1038
1038
  boundary: {
1039
- object: "node";
1040
- name?: string | undefined;
1041
- parentId: string | null;
1042
- visible: boolean;
1043
- camera?: {
1044
- position: [number, number, number];
1045
- target: [number, number, number];
1046
- mode: "orthographic" | "perspective";
1047
- fov?: number | undefined;
1048
- zoom?: number | undefined;
1049
- } | undefined;
1050
- metadata: Record<string, unknown>;
1051
- provenance?: {
1052
- refs: {
1053
- ns?: string | undefined;
1054
- id: string;
1055
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1056
- }[];
1057
- lineage?: {
1058
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1059
- fromIds: string[];
1060
- } | undefined;
1061
- } | undefined;
1062
- id: `separator_${string}`;
1063
- type: "separator";
1064
- start: [number, number];
1065
- end: [number, number];
1066
- } | {
1067
1039
  object: "node";
1068
1040
  name?: string | undefined;
1069
1041
  parentId: string | null;
@@ -1580,6 +1552,34 @@ export declare function floorStepFixture(separator?: boolean): {
1580
1552
  end: [number, number];
1581
1553
  frontSide: "exterior" | "interior" | "unknown";
1582
1554
  backSide: "exterior" | "interior" | "unknown";
1555
+ } | {
1556
+ object: "node";
1557
+ name?: string | undefined;
1558
+ parentId: string | null;
1559
+ visible: boolean;
1560
+ camera?: {
1561
+ position: [number, number, number];
1562
+ target: [number, number, number];
1563
+ mode: "orthographic" | "perspective";
1564
+ fov?: number | undefined;
1565
+ zoom?: number | undefined;
1566
+ } | undefined;
1567
+ metadata: Record<string, unknown>;
1568
+ provenance?: {
1569
+ refs: {
1570
+ ns?: string | undefined;
1571
+ id: string;
1572
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1573
+ }[];
1574
+ lineage?: {
1575
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1576
+ fromIds: string[];
1577
+ } | undefined;
1578
+ } | undefined;
1579
+ id: `separator_${string}`;
1580
+ type: "separator";
1581
+ start: [number, number];
1582
+ end: [number, number];
1583
1583
  };
1584
1584
  zones: {
1585
1585
  object: "node";
@@ -2288,126 +2288,54 @@ export declare function floorStepFixture(separator?: boolean): {
2288
2288
  fromIds: string[];
2289
2289
  } | undefined;
2290
2290
  } | undefined;
2291
- id: `block_${string}`;
2292
- children: string[];
2293
- position: [number, number, number];
2294
- rotation: number;
2295
- supportSlabId?: string | undefined;
2296
- topology: {
2297
- vertices: {
2298
- id: string;
2299
- position: [number, number, number];
2300
- }[];
2301
- edges: {
2302
- id: string;
2303
- vertexIds: [string, string];
2304
- }[];
2305
- faces: {
2306
- id: string;
2307
- vertexIds: string[];
2308
- materialSlot: string;
2309
- }[];
2310
- };
2311
- slots: Record<string, string>;
2312
- slotNames: Record<string, string>;
2313
- type: "block";
2314
- } | {
2315
- object: "node";
2316
- name?: string | undefined;
2317
- parentId: string | null;
2318
- visible: boolean;
2319
- camera?: {
2320
- position: [number, number, number];
2321
- target: [number, number, number];
2322
- mode: "orthographic" | "perspective";
2323
- fov?: number | undefined;
2324
- zoom?: number | undefined;
2325
- } | undefined;
2326
- metadata: Record<string, unknown>;
2327
- provenance?: {
2328
- refs: {
2329
- ns?: string | undefined;
2330
- id: string;
2331
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2332
- }[];
2333
- lineage?: {
2334
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2335
- fromIds: string[];
2291
+ id: `elevator_${string}`;
2292
+ material?: {
2293
+ id?: string | undefined;
2294
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2295
+ properties?: {
2296
+ color: string;
2297
+ roughness: number;
2298
+ metalness: number;
2299
+ opacity: number;
2300
+ transparent: boolean;
2301
+ side: "back" | "double" | "front";
2336
2302
  } | undefined;
2337
- } | undefined;
2338
- id: `construction-dimension_${string}`;
2339
- anchors: ({
2340
- kind: "feature";
2341
- reference: {
2342
- nodeId: string;
2343
- featureId: string;
2344
- parameters?: Record<string, string | number | boolean> | undefined;
2345
- };
2346
- fallback: [number, number, number];
2347
- } | [number, number, number])[];
2348
- baseline: {
2349
- origin: [number, number];
2350
- direction: [number, number];
2351
- };
2352
- chainMode: "continuous" | "point-to-point";
2353
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2354
- featureCount: number;
2355
- showCenterMark: boolean;
2356
- prefix: string;
2357
- suffix: string;
2358
- textOverride: string | null;
2359
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2360
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2361
- textPosition: "above" | "centered";
2362
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2363
- metricNotation: "meters" | "millimeters";
2364
- extensionStartGap: number;
2365
- extensionOvershoot: number;
2366
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2367
- drawingOverrides: {
2368
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2369
- presentation: "controlled" | "omit" | "shown";
2370
- suppressedSegmentIndexes: number[];
2371
- }[];
2372
- controllingDimensionId: `construction-dimension_${string}` | null;
2373
- type: "construction-dimension";
2374
- } | {
2375
- object: "node";
2376
- name?: string | undefined;
2377
- parentId: string | null;
2378
- visible: boolean;
2379
- camera?: {
2380
- position: [number, number, number];
2381
- target: [number, number, number];
2382
- mode: "orthographic" | "perspective";
2383
- fov?: number | undefined;
2384
- zoom?: number | undefined;
2385
- } | undefined;
2386
- metadata: Record<string, unknown>;
2387
- provenance?: {
2388
- refs: {
2389
- ns?: string | undefined;
2390
- id: string;
2391
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2392
- }[];
2393
- lineage?: {
2394
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2395
- fromIds: string[];
2303
+ texture?: {
2304
+ url: string;
2305
+ repeat?: [number, number] | undefined;
2306
+ scale?: number | undefined;
2307
+ offset?: [number, number] | undefined;
2308
+ normalMap?: string | undefined;
2309
+ normalScale?: number | undefined;
2310
+ bumpMap?: string | undefined;
2311
+ bumpScale?: number | undefined;
2396
2312
  } | undefined;
2397
2313
  } | undefined;
2398
- id: `duct-terminal_${string}`;
2314
+ materialPreset?: string | undefined;
2315
+ slots?: Record<string, string> | undefined;
2399
2316
  position: [number, number, number];
2400
2317
  rotation: number;
2401
- supportSlabId?: string | undefined;
2402
- terminalType: "diffuser" | "return-grille" | "supply-register";
2403
- mount: "ceiling" | "floor" | "wall";
2404
2318
  width: number;
2405
2319
  depth: number;
2406
- collarShape: "oval" | "rect" | "round";
2407
- collarDiameter: number;
2408
- collarWidth: number;
2409
- collarHeight: number;
2410
- type: "duct-terminal";
2320
+ shaftWidth?: number | undefined;
2321
+ shaftDepth?: number | undefined;
2322
+ shaftWallThickness: number;
2323
+ shaftStyle: "glass" | "solid";
2324
+ cabHeight: number;
2325
+ doorWidth: number;
2326
+ doorHeight: number;
2327
+ doorStyle: "center-opening" | "single-left" | "single-right";
2328
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
2329
+ fromLevelId: string | null;
2330
+ toLevelId: string | null;
2331
+ servedLevelIds?: string[] | undefined;
2332
+ disabledLevelIds: string[];
2333
+ serviceOnlyLevelIds: string[];
2334
+ defaultLevelId: string | null;
2335
+ speed: number;
2336
+ doorDurationMs: number;
2337
+ dwellMs: number;
2338
+ type: "elevator";
2411
2339
  } | {
2412
2340
  object: "node";
2413
2341
  name?: string | undefined;
@@ -2432,52 +2360,206 @@ export declare function floorStepFixture(separator?: boolean): {
2432
2360
  fromIds: string[];
2433
2361
  } | undefined;
2434
2362
  } | undefined;
2435
- id: `guide_${string}`;
2436
- url: string;
2363
+ type: "item";
2364
+ id: `item_${string}`;
2437
2365
  position: [number, number, number];
2438
2366
  rotation: [number, number, number];
2439
- scale: number;
2440
- opacity: number;
2441
- scaleReference: {
2442
- start: [number, number];
2443
- end: [number, number];
2444
- realLengthMeters: number;
2445
- measuredLengthUnits: number;
2446
- metersPerUnit: number;
2447
- displayLength?: number | undefined;
2448
- displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
2449
- label: string;
2450
- } | null;
2451
- type: "guide";
2452
- } | {
2453
- object: "node";
2454
- name?: string | undefined;
2455
- parentId: string | null;
2456
- visible: boolean;
2457
- camera?: {
2458
- position: [number, number, number];
2459
- target: [number, number, number];
2460
- mode: "orthographic" | "perspective";
2461
- fov?: number | undefined;
2462
- zoom?: number | undefined;
2463
- } | undefined;
2464
- metadata: Record<string, unknown>;
2465
- provenance?: {
2466
- refs: {
2467
- ns?: string | undefined;
2468
- id: string;
2469
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2470
- }[];
2471
- lineage?: {
2472
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2473
- fromIds: string[];
2474
- } | undefined;
2475
- } | undefined;
2476
- id: `liquid-line_${string}`;
2477
- path: [number, number, number][];
2478
- diameter: number;
2479
- type: "liquid-line";
2480
- } | {
2367
+ scale: [number, number, number];
2368
+ side?: "back" | "front" | undefined;
2369
+ children: string[];
2370
+ wallId?: string | undefined;
2371
+ wallT?: number | undefined;
2372
+ roofSegmentId?: string | undefined;
2373
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
2374
+ blockFaceId?: string | undefined;
2375
+ supportSlabId?: string | undefined;
2376
+ collectionIds?: `collection_${string}`[] | undefined;
2377
+ slots?: Record<string, string> | undefined;
2378
+ source?: {
2379
+ kind: "script";
2380
+ meta?: {
2381
+ description?: string | undefined;
2382
+ category?: string | undefined;
2383
+ tags?: string[] | undefined;
2384
+ parent?: string | undefined;
2385
+ } | undefined;
2386
+ language: "bpy" | "three";
2387
+ script: string;
2388
+ params: Record<string, string | number | boolean>;
2389
+ artifact: string;
2390
+ manifest: {
2391
+ bounds: {
2392
+ min: [number, number, number];
2393
+ max: [number, number, number];
2394
+ };
2395
+ params: {
2396
+ id: string;
2397
+ label?: string | undefined;
2398
+ kind: "boolean" | "number" | "string";
2399
+ default: string | number | boolean;
2400
+ min?: number | undefined;
2401
+ max?: number | undefined;
2402
+ step?: number | undefined;
2403
+ unit?: string | undefined;
2404
+ options?: string[] | undefined;
2405
+ }[];
2406
+ parts: {
2407
+ id: string;
2408
+ label?: string | undefined;
2409
+ type?: string | undefined;
2410
+ bounds?: {
2411
+ min: [number, number, number];
2412
+ max: [number, number, number];
2413
+ } | undefined;
2414
+ }[];
2415
+ surfaces: {
2416
+ part?: string | undefined;
2417
+ y: number;
2418
+ polygon: [number, number][];
2419
+ }[];
2420
+ slots: {
2421
+ id: string;
2422
+ label?: string | undefined;
2423
+ color?: string | undefined;
2424
+ roughness?: number | undefined;
2425
+ metalness?: number | undefined;
2426
+ transparent?: boolean | undefined;
2427
+ emissive?: boolean | undefined;
2428
+ }[];
2429
+ anchors: {
2430
+ id: string;
2431
+ position: [number, number, number];
2432
+ normal?: [number, number, number] | undefined;
2433
+ }[];
2434
+ lights: {
2435
+ id: string;
2436
+ position: [number, number, number];
2437
+ color: string;
2438
+ intensity: number;
2439
+ distance?: number | undefined;
2440
+ spot?: {
2441
+ direction: [number, number, number];
2442
+ angle: number;
2443
+ softness: number;
2444
+ } | undefined;
2445
+ shadows?: boolean | undefined;
2446
+ glow?: {
2447
+ size: number;
2448
+ strength: number;
2449
+ } | undefined;
2450
+ }[];
2451
+ undersides: {
2452
+ part?: string | undefined;
2453
+ polygon: [number, number][];
2454
+ plane: [number, number, number, number];
2455
+ }[];
2456
+ animations: {
2457
+ name: string;
2458
+ duration: number;
2459
+ }[];
2460
+ cutters?: {
2461
+ host: "ceiling" | "mounted" | "slab" | "wall";
2462
+ polygon: number[][];
2463
+ minY: number;
2464
+ maxY: number;
2465
+ }[] | undefined;
2466
+ cutout: boolean;
2467
+ collider: boolean;
2468
+ shape?: {
2469
+ tolerance: number;
2470
+ bands: {
2471
+ y0: number;
2472
+ y1: number;
2473
+ polygons: {
2474
+ outer: [number, number][];
2475
+ holes?: [number, number][][] | undefined;
2476
+ }[];
2477
+ }[];
2478
+ } | undefined;
2479
+ triangles: number;
2480
+ coverage?: number | undefined;
2481
+ uncovered?: {
2482
+ min: [number, number];
2483
+ max: [number, number];
2484
+ }[] | undefined;
2485
+ };
2486
+ images?: {
2487
+ artifact: string;
2488
+ thumbnail: string;
2489
+ floorPlan: string;
2490
+ } | undefined;
2491
+ } | undefined;
2492
+ asset: {
2493
+ id: string;
2494
+ category: string;
2495
+ name: string;
2496
+ thumbnail: string;
2497
+ floorPlanUrl?: string | undefined;
2498
+ source: "community" | "library" | "mine";
2499
+ isDraft?: boolean | undefined;
2500
+ src: string;
2501
+ dimensions: [number, number, number];
2502
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
2503
+ recessed?: boolean | undefined;
2504
+ tags?: string[] | undefined;
2505
+ functionTags?: string[] | undefined;
2506
+ offset: [number, number, number];
2507
+ rotation: [number, number, number];
2508
+ scale: [number, number, number];
2509
+ surface?: {
2510
+ height: number;
2511
+ } | undefined;
2512
+ interactive?: {
2513
+ controls: ({
2514
+ kind: "toggle";
2515
+ label?: string | undefined;
2516
+ default?: boolean | undefined;
2517
+ } | {
2518
+ kind: "slider";
2519
+ label: string;
2520
+ min: number;
2521
+ max: number;
2522
+ step: number;
2523
+ unit?: string | undefined;
2524
+ displayMode: "dial" | "slider" | "stepper";
2525
+ default?: number | undefined;
2526
+ } | {
2527
+ kind: "temperature";
2528
+ label: string;
2529
+ min: number;
2530
+ max: number;
2531
+ unit: "C" | "F";
2532
+ default?: number | undefined;
2533
+ })[];
2534
+ effects: ({
2535
+ kind: "animation";
2536
+ mode?: "ambient" | "open-close" | undefined;
2537
+ control?: number | undefined;
2538
+ clips: {
2539
+ on?: string | undefined;
2540
+ off?: string | undefined;
2541
+ loop?: string | undefined;
2542
+ };
2543
+ } | {
2544
+ kind: "light";
2545
+ color: string;
2546
+ intensityRange: [number, number];
2547
+ distance?: number | undefined;
2548
+ offset: [number, number, number];
2549
+ spot?: {
2550
+ direction: [number, number, number];
2551
+ angle: number;
2552
+ softness: number;
2553
+ } | undefined;
2554
+ shadows?: boolean | undefined;
2555
+ glow?: {
2556
+ size: number;
2557
+ strength: number;
2558
+ } | undefined;
2559
+ })[];
2560
+ } | undefined;
2561
+ };
2562
+ } | {
2481
2563
  object: "node";
2482
2564
  name?: string | undefined;
2483
2565
  parentId: string | null;
@@ -2501,7 +2583,8 @@ export declare function floorStepFixture(separator?: boolean): {
2501
2583
  fromIds: string[];
2502
2584
  } | undefined;
2503
2585
  } | undefined;
2504
- id: `rseg_${string}`;
2586
+ id: `ceiling_${string}`;
2587
+ children: (`item_${string}` | `procedural-item_${string}`)[];
2505
2588
  material?: {
2506
2589
  id?: string | undefined;
2507
2590
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -2525,302 +2608,109 @@ export declare function floorStepFixture(separator?: boolean): {
2525
2608
  } | undefined;
2526
2609
  } | undefined;
2527
2610
  materialPreset?: string | undefined;
2528
- topMaterial?: {
2529
- id?: string | undefined;
2530
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2531
- properties?: {
2532
- color: string;
2533
- roughness: number;
2534
- metalness: number;
2535
- opacity: number;
2536
- transparent: boolean;
2537
- side: "back" | "double" | "front";
2611
+ slots?: Record<string, string> | undefined;
2612
+ polygon: [number, number][];
2613
+ holes: [number, number][][];
2614
+ holeMetadata: {
2615
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
2616
+ openingId?: string | undefined;
2617
+ stairId?: string | undefined;
2618
+ elevatorId?: string | undefined;
2619
+ }[];
2620
+ openingIds?: string[] | undefined;
2621
+ height?: number | undefined;
2622
+ buildUp?: {
2623
+ presetId?: string | undefined;
2624
+ finish?: {
2625
+ kind: "drywall" | "plaster" | "wood-plank";
2626
+ thickness: number;
2627
+ name?: string | undefined;
2538
2628
  } | undefined;
2539
- texture?: {
2540
- url: string;
2541
- repeat?: [number, number] | undefined;
2542
- scale?: number | undefined;
2543
- offset?: [number, number] | undefined;
2544
- normalMap?: string | undefined;
2545
- normalScale?: number | undefined;
2546
- bumpMap?: string | undefined;
2547
- bumpScale?: number | undefined;
2629
+ framing?: {
2630
+ system: "joists" | "truss-chords";
2631
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2632
+ spacing: number;
2548
2633
  } | undefined;
2549
- } | undefined;
2550
- topMaterialPreset?: string | undefined;
2551
- edgeMaterial?: {
2552
- id?: string | undefined;
2553
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2554
- properties?: {
2555
- color: string;
2556
- roughness: number;
2557
- metalness: number;
2558
- opacity: number;
2559
- transparent: boolean;
2560
- side: "back" | "double" | "front";
2634
+ decking?: {
2635
+ kind: "osb" | "plywood";
2636
+ thickness: number;
2637
+ name?: string | undefined;
2561
2638
  } | undefined;
2562
- texture?: {
2563
- url: string;
2564
- repeat?: [number, number] | undefined;
2565
- scale?: number | undefined;
2566
- offset?: [number, number] | undefined;
2567
- normalMap?: string | undefined;
2568
- normalScale?: number | undefined;
2569
- bumpMap?: string | undefined;
2570
- bumpScale?: number | undefined;
2571
- } | undefined;
2572
- } | undefined;
2573
- edgeMaterialPreset?: string | undefined;
2574
- wallMaterial?: {
2575
- id?: string | undefined;
2576
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2577
- properties?: {
2578
- color: string;
2579
- roughness: number;
2580
- metalness: number;
2581
- opacity: number;
2582
- transparent: boolean;
2583
- side: "back" | "double" | "front";
2584
- } | undefined;
2585
- texture?: {
2586
- url: string;
2587
- repeat?: [number, number] | undefined;
2588
- scale?: number | undefined;
2589
- offset?: [number, number] | undefined;
2590
- normalMap?: string | undefined;
2591
- normalScale?: number | undefined;
2592
- bumpMap?: string | undefined;
2593
- bumpScale?: number | undefined;
2594
- } | undefined;
2595
- } | undefined;
2596
- wallMaterialPreset?: string | undefined;
2597
- position: [number, number, number];
2598
- rotation: number;
2599
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
2600
- barrelRise?: number | undefined;
2601
- barrelSegments?: number | undefined;
2602
- roofSystem?: "glazed" | "standard" | undefined;
2603
- glazing?: {
2604
- across: {
2605
- layout: "count" | "fixed-spacing" | "maximum-spacing";
2606
- count: number;
2607
- spacing: number;
2608
- alignment: "center" | "end" | "start";
2609
- };
2610
- along: {
2611
- layout: "count" | "fixed-spacing" | "maximum-spacing";
2612
- count: number;
2613
- spacing: number;
2614
- alignment: "center" | "end" | "start";
2615
- };
2616
- frameWidth: number;
2617
- frameDepth: number;
2618
- glassThickness: number;
2619
- frameColor: string;
2620
- glassColor: string;
2621
- glassOpacity: number;
2622
- glassRoughness: number;
2623
- glazedEnds: boolean;
2624
- panelType: "empty" | "glass" | "solid";
2625
- panels: {
2626
- face: string;
2627
- column: number;
2628
- row: number;
2629
- type: "empty" | "glass" | "solid";
2630
- }[];
2631
- } | undefined;
2632
- slots?: Record<string, string> | undefined;
2633
- width: number;
2634
- depth: number;
2635
- conicalStartAngle?: number | undefined;
2636
- conicalSweepAngle?: number | undefined;
2637
- conicalFullCircle?: boolean | undefined;
2638
- trim: {
2639
- left: number;
2640
- right: number;
2641
- front: number;
2642
- back: number;
2643
- frontLeft: number;
2644
- frontRight: number;
2645
- backLeft: number;
2646
- backRight: number;
2647
- frontLeftX: number;
2648
- frontLeftZ: number;
2649
- frontRightX: number;
2650
- frontRightZ: number;
2651
- backLeftX: number;
2652
- backLeftZ: number;
2653
- backRightX: number;
2654
- backRightZ: number;
2655
- };
2656
- wallHeight: number;
2657
- pitch: number;
2658
- wallThickness: number;
2659
- deckThickness: number;
2660
- overhang: number;
2661
- gableOverhang?: number | undefined;
2662
- shingleThickness: number;
2663
- buildUp?: {
2664
- presetId?: string | undefined;
2665
- roofing: {
2666
- kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
2667
- thickness: number;
2668
- name?: string | undefined;
2669
- };
2670
- underlayment?: {
2671
- kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
2672
- thickness: number;
2673
- name?: string | undefined;
2674
- } | undefined;
2675
- sheathing: {
2676
- kind: "osb" | "plywood";
2677
- thickness: number;
2678
- name?: string | undefined;
2679
- };
2680
- structure: {
2681
- system: "rafters" | "trusses";
2682
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2683
- spacing: number;
2684
- };
2685
2639
  insulation?: {
2686
2640
  kind: "batt" | "blown" | "rigid";
2687
2641
  thickness: number;
2688
2642
  name?: string | undefined;
2689
2643
  } | undefined;
2690
- finish?: {
2691
- kind: "drywall" | "plaster" | "wood-plank";
2692
- thickness: number;
2693
- name?: string | undefined;
2694
- } | undefined;
2695
- } | undefined;
2696
- arc?: {
2697
- centerX: number;
2698
- centerZ: number;
2699
- radius: number;
2700
2644
  } | undefined;
2701
- shedSideInfillSpan?: number | undefined;
2702
- shedSideInfillMinX?: number | undefined;
2703
- shedSideInfillMaxX?: number | undefined;
2704
- shedFootprintPieces?: [number, number][][] | undefined;
2705
- shedOpenEndSides?: ("left" | "right")[] | undefined;
2706
- shedJointFrame?: {
2645
+ regions?: {
2646
+ id: string;
2647
+ polygon: [number, number][];
2648
+ finish: string | Record<string, unknown>;
2649
+ }[] | undefined;
2650
+ boundary?: "auto" | undefined;
2651
+ zoneId?: string | undefined;
2652
+ autoFromWalls: boolean;
2653
+ type: "ceiling";
2654
+ } | {
2655
+ object: "node";
2656
+ name?: string | undefined;
2657
+ parentId: string | null;
2658
+ visible: boolean;
2659
+ camera?: {
2707
2660
  position: [number, number, number];
2708
- rotation: number;
2709
- } | undefined;
2710
- shedJointOwnerId?: string | undefined;
2711
- shedJointNeighborIds?: string[] | undefined;
2712
- shedJointScopeId?: string | undefined;
2713
- managedByParent: boolean;
2714
- wallShell: "auto" | "include" | "omit";
2715
- shedInsetEndPanels: boolean;
2716
- fascia?: boolean | undefined;
2717
- eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
2718
- fasciaHighEdge?: boolean | undefined;
2719
- fasciaHeight?: number | undefined;
2720
- fasciaDepth?: number | undefined;
2721
- fasciaMaterial?: {
2722
- id?: string | undefined;
2723
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2724
- properties?: {
2725
- color: string;
2726
- roughness: number;
2727
- metalness: number;
2728
- opacity: number;
2729
- transparent: boolean;
2730
- side: "back" | "double" | "front";
2731
- } | undefined;
2732
- texture?: {
2733
- url: string;
2734
- repeat?: [number, number] | undefined;
2735
- scale?: number | undefined;
2736
- offset?: [number, number] | undefined;
2737
- normalMap?: string | undefined;
2738
- normalScale?: number | undefined;
2739
- bumpMap?: string | undefined;
2740
- bumpScale?: number | undefined;
2741
- } | undefined;
2742
- } | undefined;
2743
- fasciaMaterialPreset?: string | undefined;
2744
- heelMaterial?: {
2745
- id?: string | undefined;
2746
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2747
- properties?: {
2748
- color: string;
2749
- roughness: number;
2750
- metalness: number;
2751
- opacity: number;
2752
- transparent: boolean;
2753
- side: "back" | "double" | "front";
2754
- } | undefined;
2755
- texture?: {
2756
- url: string;
2757
- repeat?: [number, number] | undefined;
2758
- scale?: number | undefined;
2759
- offset?: [number, number] | undefined;
2760
- normalMap?: string | undefined;
2761
- normalScale?: number | undefined;
2762
- bumpMap?: string | undefined;
2763
- bumpScale?: number | undefined;
2764
- } | undefined;
2661
+ target: [number, number, number];
2662
+ mode: "orthographic" | "perspective";
2663
+ fov?: number | undefined;
2664
+ zoom?: number | undefined;
2765
2665
  } | undefined;
2766
- heelMaterialPreset?: string | undefined;
2767
- gableLeftMaterial?: {
2768
- id?: string | undefined;
2769
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2770
- properties?: {
2771
- color: string;
2772
- roughness: number;
2773
- metalness: number;
2774
- opacity: number;
2775
- transparent: boolean;
2776
- side: "back" | "double" | "front";
2777
- } | undefined;
2778
- texture?: {
2779
- url: string;
2780
- repeat?: [number, number] | undefined;
2781
- scale?: number | undefined;
2782
- offset?: [number, number] | undefined;
2783
- normalMap?: string | undefined;
2784
- normalScale?: number | undefined;
2785
- bumpMap?: string | undefined;
2786
- bumpScale?: number | undefined;
2666
+ metadata: Record<string, unknown>;
2667
+ provenance?: {
2668
+ refs: {
2669
+ ns?: string | undefined;
2670
+ id: string;
2671
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2672
+ }[];
2673
+ lineage?: {
2674
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2675
+ fromIds: string[];
2787
2676
  } | undefined;
2788
2677
  } | undefined;
2789
- gableLeftMaterialPreset?: string | undefined;
2790
- gableRightMaterial?: {
2791
- id?: string | undefined;
2792
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2793
- properties?: {
2794
- color: string;
2795
- roughness: number;
2796
- metalness: number;
2797
- opacity: number;
2798
- transparent: boolean;
2799
- side: "back" | "double" | "front";
2800
- } | undefined;
2801
- texture?: {
2802
- url: string;
2803
- repeat?: [number, number] | undefined;
2804
- scale?: number | undefined;
2805
- offset?: [number, number] | undefined;
2806
- normalMap?: string | undefined;
2807
- normalScale?: number | undefined;
2808
- bumpMap?: string | undefined;
2809
- bumpScale?: number | undefined;
2810
- } | undefined;
2811
- } | undefined;
2812
- gableRightMaterialPreset?: string | undefined;
2813
- gambrelLowerWidthRatio: number;
2814
- gambrelLowerHeightRatio: number;
2815
- mansardSteepWidthRatio: number;
2816
- mansardSteepHeightRatio: number;
2817
- dutchHipWidthRatio: number;
2818
- dutchHipHeightRatio: number;
2819
- dutchWaistLengthRatio: number;
2820
- dutchGabletRake: number;
2821
- dutchTopRakeThickness: number;
2822
- children: string[];
2823
- type: "roof-segment";
2678
+ id: `construction-dimension_${string}`;
2679
+ anchors: ({
2680
+ kind: "feature";
2681
+ reference: {
2682
+ nodeId: string;
2683
+ featureId: string;
2684
+ parameters?: Record<string, string | number | boolean> | undefined;
2685
+ };
2686
+ fallback: [number, number, number];
2687
+ } | [number, number, number])[];
2688
+ baseline: {
2689
+ origin: [number, number];
2690
+ direction: [number, number];
2691
+ };
2692
+ chainMode: "continuous" | "point-to-point";
2693
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2694
+ featureCount: number;
2695
+ showCenterMark: boolean;
2696
+ prefix: string;
2697
+ suffix: string;
2698
+ textOverride: string | null;
2699
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2700
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2701
+ textPosition: "above" | "centered";
2702
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2703
+ metricNotation: "meters" | "millimeters";
2704
+ extensionStartGap: number;
2705
+ extensionOvershoot: number;
2706
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2707
+ drawingOverrides: {
2708
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2709
+ presentation: "controlled" | "omit" | "shown";
2710
+ suppressedSegmentIndexes: number[];
2711
+ }[];
2712
+ controllingDimensionId: `construction-dimension_${string}` | null;
2713
+ type: "construction-dimension";
2824
2714
  } | {
2825
2715
  object: "node";
2826
2716
  name?: string | undefined;
@@ -2845,10 +2735,198 @@ export declare function floorStepFixture(separator?: boolean): {
2845
2735
  fromIds: string[];
2846
2736
  } | undefined;
2847
2737
  } | undefined;
2848
- id: `separator_${string}`;
2849
- start: [number, number];
2850
- end: [number, number];
2851
- type: "separator";
2738
+ id: `site_${string}`;
2739
+ polygon: {
2740
+ type: "polygon";
2741
+ points: [number, number][];
2742
+ };
2743
+ terrain?: {
2744
+ type: "heightfield";
2745
+ origin: [number, number];
2746
+ spacing: number;
2747
+ cols: number;
2748
+ rows: number;
2749
+ step: number;
2750
+ heights: string;
2751
+ } | undefined;
2752
+ showGround?: boolean | undefined;
2753
+ presentation?: {
2754
+ theme?: string | undefined;
2755
+ exposure?: number | undefined;
2756
+ shading?: "rendered" | "solid" | undefined;
2757
+ edges?: "off" | "soft" | "strong" | undefined;
2758
+ shadows?: boolean | undefined;
2759
+ lighting?: {
2760
+ background?: string | undefined;
2761
+ backgroundSky?: string | null | undefined;
2762
+ ground?: string | undefined;
2763
+ ambient?: {
2764
+ color: string;
2765
+ intensity: number;
2766
+ } | undefined;
2767
+ hemi?: {
2768
+ sky: string;
2769
+ ground: string;
2770
+ intensity: number;
2771
+ } | undefined;
2772
+ lights?: {
2773
+ color: string;
2774
+ intensity: number;
2775
+ position: [number, number, number];
2776
+ target?: [number, number, number] | undefined;
2777
+ castShadow?: boolean | undefined;
2778
+ shadow?: {
2779
+ intensity?: number | undefined;
2780
+ bias?: number | undefined;
2781
+ normalBias?: number | undefined;
2782
+ radius?: number | undefined;
2783
+ mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
2784
+ camera?: {
2785
+ left: number;
2786
+ right: number;
2787
+ top: number;
2788
+ bottom: number;
2789
+ near: number;
2790
+ far: number;
2791
+ } | undefined;
2792
+ } | undefined;
2793
+ }[] | undefined;
2794
+ environment?: {
2795
+ source: "gradient" | "none" | "room";
2796
+ intensity: number;
2797
+ } | undefined;
2798
+ } | undefined;
2799
+ postprocessing?: {
2800
+ ambientOcclusion?: boolean | undefined;
2801
+ colorGrading?: boolean | undefined;
2802
+ } | undefined;
2803
+ display?: {
2804
+ mode?: "construction" | "finished" | "systems" | undefined;
2805
+ families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
2806
+ disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
2807
+ xray?: boolean | undefined;
2808
+ colorBy?: "material" | "service" | undefined;
2809
+ } | undefined;
2810
+ } | undefined;
2811
+ address?: {
2812
+ street?: string | undefined;
2813
+ city?: string | undefined;
2814
+ state?: string | undefined;
2815
+ zip?: string | undefined;
2816
+ } | undefined;
2817
+ parcel?: {
2818
+ apn?: string | undefined;
2819
+ source?: string | undefined;
2820
+ county?: string | undefined;
2821
+ state?: string | undefined;
2822
+ lotAreaSqFt?: number | undefined;
2823
+ originLngLat?: [number, number] | undefined;
2824
+ resolvedAt?: string | undefined;
2825
+ layer?: string | undefined;
2826
+ notes?: string[] | undefined;
2827
+ } | undefined;
2828
+ setbacks?: {
2829
+ front: number;
2830
+ side: number;
2831
+ rear: number;
2832
+ left?: number | undefined;
2833
+ right?: number | undefined;
2834
+ streetSide?: number | undefined;
2835
+ } | undefined;
2836
+ setbacksSource?: string | undefined;
2837
+ zone?: string | undefined;
2838
+ frontEdge?: number | undefined;
2839
+ streetEdges?: number[] | undefined;
2840
+ sightTriangleFt?: number | undefined;
2841
+ northRotation?: number | undefined;
2842
+ dossier?: {
2843
+ [x: string]: unknown;
2844
+ provider: string;
2845
+ asOf: string;
2846
+ point?: {
2847
+ lat?: number | undefined;
2848
+ lng?: number | undefined;
2849
+ source?: string | undefined;
2850
+ } | undefined;
2851
+ address?: {
2852
+ formatted?: string | undefined;
2853
+ precision?: string | undefined;
2854
+ } | undefined;
2855
+ sections: Record<string, {
2856
+ [x: string]: unknown;
2857
+ status: string;
2858
+ summary?: string | undefined;
2859
+ reason?: string | undefined;
2860
+ source?: {
2861
+ name?: string | undefined;
2862
+ kind?: string | undefined;
2863
+ vintage?: string | undefined;
2864
+ attribution?: string | undefined;
2865
+ } | undefined;
2866
+ }>;
2867
+ parcel?: Record<string, unknown> | undefined;
2868
+ flood?: Record<string, unknown> | undefined;
2869
+ codeBasis?: Record<string, unknown> | undefined;
2870
+ zoning?: Record<string, unknown> | undefined;
2871
+ utilities?: Record<string, unknown> | undefined;
2872
+ soils?: Record<string, unknown> | undefined;
2873
+ wetlands?: Record<string, unknown> | undefined;
2874
+ structures?: Record<string, unknown> | undefined;
2875
+ elevation?: Record<string, unknown> | undefined;
2876
+ boundaries?: Record<string, unknown> | undefined;
2877
+ } | undefined;
2878
+ contourIntervalIn?: number | undefined;
2879
+ contours3d?: boolean | undefined;
2880
+ terrainContours?: {
2881
+ datum: string;
2882
+ intervalFt: number;
2883
+ source?: string | undefined;
2884
+ lines: {
2885
+ elevationFt: number;
2886
+ points: [number, number][];
2887
+ }[];
2888
+ } | undefined;
2889
+ wallTypes?: {
2890
+ id: string;
2891
+ label: string;
2892
+ assembly: {
2893
+ layers: {
2894
+ id: string;
2895
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2896
+ thickness: number;
2897
+ core?: true | undefined;
2898
+ spacing?: number | undefined;
2899
+ material?: string | undefined;
2900
+ slot?: string | undefined;
2901
+ returns?: boolean | undefined;
2902
+ display?: "construction" | "finished" | undefined;
2903
+ inset?: number | undefined;
2904
+ bottom?: number | undefined;
2905
+ lift?: number | undefined;
2906
+ src?: string | undefined;
2907
+ }[];
2908
+ backing?: {
2909
+ id: string;
2910
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2911
+ thickness: number;
2912
+ core?: true | undefined;
2913
+ spacing?: number | undefined;
2914
+ material?: string | undefined;
2915
+ slot?: string | undefined;
2916
+ returns?: boolean | undefined;
2917
+ display?: "construction" | "finished" | undefined;
2918
+ inset?: number | undefined;
2919
+ bottom?: number | undefined;
2920
+ lift?: number | undefined;
2921
+ src?: string | undefined;
2922
+ }[] | undefined;
2923
+ face?: "exterior" | "front" | undefined;
2924
+ presetId?: string | undefined;
2925
+ cavityInsulation?: string | undefined;
2926
+ };
2927
+ }[] | undefined;
2928
+ children: string[];
2929
+ type: "site";
2852
2930
  } | {
2853
2931
  object: "node";
2854
2932
  name?: string | undefined;
@@ -2873,36 +2951,7 @@ export declare function floorStepFixture(separator?: boolean): {
2873
2951
  fromIds: string[];
2874
2952
  } | undefined;
2875
2953
  } | undefined;
2876
- id: `spawn_${string}`;
2877
- position: [number, number, number];
2878
- rotation: number;
2879
- supportSlabId?: string | undefined;
2880
- type: "spawn";
2881
- } | {
2882
- object: "node";
2883
- name?: string | undefined;
2884
- parentId: string | null;
2885
- visible: boolean;
2886
- camera?: {
2887
- position: [number, number, number];
2888
- target: [number, number, number];
2889
- mode: "orthographic" | "perspective";
2890
- fov?: number | undefined;
2891
- zoom?: number | undefined;
2892
- } | undefined;
2893
- metadata: Record<string, unknown>;
2894
- provenance?: {
2895
- refs: {
2896
- ns?: string | undefined;
2897
- id: string;
2898
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2899
- }[];
2900
- lineage?: {
2901
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2902
- fromIds: string[];
2903
- } | undefined;
2904
- } | undefined;
2905
- id: `sseg_${string}`;
2954
+ id: `door_${string}`;
2906
2955
  material?: {
2907
2956
  id?: string | undefined;
2908
2957
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -2925,36 +2974,187 @@ export declare function floorStepFixture(separator?: boolean): {
2925
2974
  bumpScale?: number | undefined;
2926
2975
  } | undefined;
2927
2976
  } | undefined;
2928
- materialPreset?: string | undefined;
2929
2977
  slots?: Record<string, string> | undefined;
2978
+ source?: {
2979
+ kind: "script";
2980
+ meta?: {
2981
+ description?: string | undefined;
2982
+ category?: string | undefined;
2983
+ tags?: string[] | undefined;
2984
+ parent?: string | undefined;
2985
+ } | undefined;
2986
+ language: "bpy" | "three";
2987
+ script: string;
2988
+ params: Record<string, string | number | boolean>;
2989
+ artifact: string;
2990
+ manifest: {
2991
+ bounds: {
2992
+ min: [number, number, number];
2993
+ max: [number, number, number];
2994
+ };
2995
+ params: {
2996
+ id: string;
2997
+ label?: string | undefined;
2998
+ kind: "boolean" | "number" | "string";
2999
+ default: string | number | boolean;
3000
+ min?: number | undefined;
3001
+ max?: number | undefined;
3002
+ step?: number | undefined;
3003
+ unit?: string | undefined;
3004
+ options?: string[] | undefined;
3005
+ }[];
3006
+ parts: {
3007
+ id: string;
3008
+ label?: string | undefined;
3009
+ type?: string | undefined;
3010
+ bounds?: {
3011
+ min: [number, number, number];
3012
+ max: [number, number, number];
3013
+ } | undefined;
3014
+ }[];
3015
+ surfaces: {
3016
+ part?: string | undefined;
3017
+ y: number;
3018
+ polygon: [number, number][];
3019
+ }[];
3020
+ slots: {
3021
+ id: string;
3022
+ label?: string | undefined;
3023
+ color?: string | undefined;
3024
+ roughness?: number | undefined;
3025
+ metalness?: number | undefined;
3026
+ transparent?: boolean | undefined;
3027
+ emissive?: boolean | undefined;
3028
+ }[];
3029
+ anchors: {
3030
+ id: string;
3031
+ position: [number, number, number];
3032
+ normal?: [number, number, number] | undefined;
3033
+ }[];
3034
+ lights: {
3035
+ id: string;
3036
+ position: [number, number, number];
3037
+ color: string;
3038
+ intensity: number;
3039
+ distance?: number | undefined;
3040
+ spot?: {
3041
+ direction: [number, number, number];
3042
+ angle: number;
3043
+ softness: number;
3044
+ } | undefined;
3045
+ shadows?: boolean | undefined;
3046
+ glow?: {
3047
+ size: number;
3048
+ strength: number;
3049
+ } | undefined;
3050
+ }[];
3051
+ undersides: {
3052
+ part?: string | undefined;
3053
+ polygon: [number, number][];
3054
+ plane: [number, number, number, number];
3055
+ }[];
3056
+ animations: {
3057
+ name: string;
3058
+ duration: number;
3059
+ }[];
3060
+ cutters?: {
3061
+ host: "ceiling" | "mounted" | "slab" | "wall";
3062
+ polygon: number[][];
3063
+ minY: number;
3064
+ maxY: number;
3065
+ }[] | undefined;
3066
+ cutout: boolean;
3067
+ collider: boolean;
3068
+ shape?: {
3069
+ tolerance: number;
3070
+ bands: {
3071
+ y0: number;
3072
+ y1: number;
3073
+ polygons: {
3074
+ outer: [number, number][];
3075
+ holes?: [number, number][][] | undefined;
3076
+ }[];
3077
+ }[];
3078
+ } | undefined;
3079
+ triangles: number;
3080
+ coverage?: number | undefined;
3081
+ uncovered?: {
3082
+ min: [number, number];
3083
+ max: [number, number];
3084
+ }[] | undefined;
3085
+ };
3086
+ images?: {
3087
+ artifact: string;
3088
+ thumbnail: string;
3089
+ floorPlan: string;
3090
+ } | undefined;
3091
+ } | undefined;
2930
3092
  position: [number, number, number];
2931
- rotation: number;
2932
- segmentType: "landing" | "stair";
3093
+ rotation: [number, number, number];
3094
+ side?: "back" | "front" | undefined;
3095
+ verticalAnchor?: "floor" | "wall" | undefined;
3096
+ floorThresholdVersion: 0 | 1;
3097
+ wallId?: string | undefined;
3098
+ roofSegmentId?: string | undefined;
3099
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
2933
3100
  width: number;
2934
- length: number;
2935
3101
  height: number;
2936
- stepCount: number;
2937
- attachmentSide: "front" | "left" | "right";
2938
- fillToFloor: boolean;
2939
- construction?: {
2940
- mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
2941
- waistThickness: number;
2942
- treadThickness: number;
2943
- riserThickness: number;
2944
- nosing: number;
2945
- finishThickness: number;
2946
- closedRisers: boolean;
2947
- stringerWidth: number;
2948
- stringerDepth: number;
2949
- } | undefined;
2950
- winder?: {
2951
- turn: "left" | "right";
2952
- innerGap: number;
2953
- walkingLineOffset: number;
2954
- division: "equal-angle" | "equal-going";
2955
- } | undefined;
2956
- thickness: number;
2957
- type: "stair-segment";
3102
+ sidelightLeft?: number | undefined;
3103
+ sidelightRight?: number | undefined;
3104
+ transomHeight?: number | undefined;
3105
+ slidingStyle?: "bypass" | "patio" | undefined;
3106
+ mark?: string | undefined;
3107
+ constructionType: "framed" | "masonry";
3108
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3109
+ roughOpeningWidth?: number | undefined;
3110
+ roughOpeningHeight?: number | undefined;
3111
+ masonryOpeningWidth?: number | undefined;
3112
+ masonryOpeningHeight?: number | undefined;
3113
+ finishOpeningWidth?: number | undefined;
3114
+ finishOpeningHeight?: number | undefined;
3115
+ doorCategory: "garage" | "interior";
3116
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
3117
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
3118
+ operationState: number;
3119
+ slideDirection: "left" | "right";
3120
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
3121
+ garagePanelCount: number;
3122
+ openingKind: "door" | "opening";
3123
+ openingShape: "arch" | "rectangle" | "rounded";
3124
+ openingRadiusMode: "all" | "individual";
3125
+ openingTopRadii: [number, number];
3126
+ cornerRadius: number;
3127
+ archHeight: number;
3128
+ openingRevealRadius: number;
3129
+ frameThickness: number;
3130
+ frameDepth?: number | undefined;
3131
+ threshold: boolean;
3132
+ thresholdHeight: number;
3133
+ casingFaceA?: boolean | undefined;
3134
+ casingFaceB?: boolean | undefined;
3135
+ casingWidth?: number | undefined;
3136
+ hingesSide: "left" | "right";
3137
+ swingDirection: "inward" | "outward";
3138
+ swingAngle: number;
3139
+ segments: {
3140
+ type: "empty" | "glass" | "panel";
3141
+ heightRatio: number;
3142
+ columnRatios: number[];
3143
+ dividerThickness: number;
3144
+ panelDepth: number;
3145
+ panelInset: number;
3146
+ }[];
3147
+ handle: boolean;
3148
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
3149
+ handleHeight: number;
3150
+ handleSide: "left" | "right";
3151
+ contentPadding: [number, number];
3152
+ doorCloser: boolean;
3153
+ panicBar: boolean;
3154
+ panicBarStyle: "crossbar" | "touchbar";
3155
+ panicBarRods: boolean;
3156
+ panicBarHeight: number;
3157
+ type: "door";
2958
3158
  } | {
2959
3159
  object: "node";
2960
3160
  name?: string | undefined;
@@ -3208,21 +3408,11 @@ export declare function floorStepFixture(separator?: boolean): {
3208
3408
  fromIds: string[];
3209
3409
  } | undefined;
3210
3410
  } | undefined;
3211
- type: "item";
3212
- id: `item_${string}`;
3213
- position: [number, number, number];
3214
- rotation: [number, number, number];
3215
- scale: [number, number, number];
3216
- side?: "back" | "front" | undefined;
3411
+ id: `column_${string}`;
3217
3412
  children: string[];
3218
- wallId?: string | undefined;
3219
- wallT?: number | undefined;
3220
- roofSegmentId?: string | undefined;
3221
- roofFace?: "back" | "front" | "left" | "right" | undefined;
3222
- blockFaceId?: string | undefined;
3413
+ position: [number, number, number];
3414
+ rotation: number;
3223
3415
  supportSlabId?: string | undefined;
3224
- collectionIds?: `collection_${string}`[] | undefined;
3225
- slots?: Record<string, string> | undefined;
3226
3416
  source?: {
3227
3417
  kind: "script";
3228
3418
  meta?: {
@@ -3337,76 +3527,104 @@ export declare function floorStepFixture(separator?: boolean): {
3337
3527
  floorPlan: string;
3338
3528
  } | undefined;
3339
3529
  } | undefined;
3340
- asset: {
3341
- id: string;
3342
- category: string;
3343
- name: string;
3344
- thumbnail: string;
3345
- floorPlanUrl?: string | undefined;
3346
- source: "community" | "library" | "mine";
3347
- isDraft?: boolean | undefined;
3348
- src: string;
3349
- dimensions: [number, number, number];
3350
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
3351
- recessed?: boolean | undefined;
3352
- tags?: string[] | undefined;
3353
- functionTags?: string[] | undefined;
3354
- offset: [number, number, number];
3355
- rotation: [number, number, number];
3356
- scale: [number, number, number];
3357
- surface?: {
3358
- height: number;
3530
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
3531
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
3532
+ height: number;
3533
+ radius: number;
3534
+ width: number;
3535
+ depth: number;
3536
+ edgeSoftness: number;
3537
+ baseHeight: number;
3538
+ capitalHeight: number;
3539
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
3540
+ shaftTaper: number;
3541
+ shaftBulge: number;
3542
+ shaftStartScale: number;
3543
+ shaftEndScale: number;
3544
+ shaftSegmentCount: number;
3545
+ shaftTwistStep: number;
3546
+ shaftCornerRadius: number;
3547
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
3548
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
3549
+ baseWidthScale: number;
3550
+ baseDepthScale: number;
3551
+ baseTierCount: number;
3552
+ baseStepSpread: number;
3553
+ basePlinthHeightRatio: number;
3554
+ baseRoundBandScale: number;
3555
+ baseNeckScale: number;
3556
+ baseRoundBandCount: number;
3557
+ baseRibCount: number;
3558
+ baseCarvingLevel: number;
3559
+ basePanelInset: number;
3560
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
3561
+ capitalWidthScale: number;
3562
+ capitalDepthScale: number;
3563
+ capitalTierCount: number;
3564
+ capitalStepSpread: number;
3565
+ capitalBandCount: number;
3566
+ voluteSize: number;
3567
+ voluteCount: number;
3568
+ leafCount: number;
3569
+ leafRows: number;
3570
+ bracketDepth: number;
3571
+ bracketTierCount: number;
3572
+ pendantCount: number;
3573
+ capitalCarvingLevel: number;
3574
+ ringCount: number;
3575
+ ringPlacement: "bottom" | "ends" | "even" | "top";
3576
+ ringThickness: number;
3577
+ ringSpread: number;
3578
+ fluteCount: number;
3579
+ fluteDepth: number;
3580
+ fluteWidth: number;
3581
+ spiralTwist: number;
3582
+ spiralRibCount: number;
3583
+ panelCount: number;
3584
+ panelInsetDepth: number;
3585
+ panelShape: "arched" | "diamond" | "rectangle";
3586
+ latheRingCount: number;
3587
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
3588
+ carvingLevel: number;
3589
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
3590
+ lowerBandEnabled: boolean;
3591
+ lowerBandHeight: number;
3592
+ lowerBandCarvingLevel: number;
3593
+ dentilCount: number;
3594
+ beadCount: number;
3595
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
3596
+ braceWidth: number;
3597
+ braceDepth: number;
3598
+ braceBottomSpread: number;
3599
+ braceTopSpread: number;
3600
+ bracePlateEnabled: boolean;
3601
+ role?: "ornament" | "post" | undefined;
3602
+ postBase?: "none" | "pier" | "post-base" | undefined;
3603
+ material?: {
3604
+ id?: string | undefined;
3605
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3606
+ properties?: {
3607
+ color: string;
3608
+ roughness: number;
3609
+ metalness: number;
3610
+ opacity: number;
3611
+ transparent: boolean;
3612
+ side: "back" | "double" | "front";
3359
3613
  } | undefined;
3360
- interactive?: {
3361
- controls: ({
3362
- kind: "toggle";
3363
- label?: string | undefined;
3364
- default?: boolean | undefined;
3365
- } | {
3366
- kind: "slider";
3367
- label: string;
3368
- min: number;
3369
- max: number;
3370
- step: number;
3371
- unit?: string | undefined;
3372
- displayMode: "dial" | "slider" | "stepper";
3373
- default?: number | undefined;
3374
- } | {
3375
- kind: "temperature";
3376
- label: string;
3377
- min: number;
3378
- max: number;
3379
- unit: "C" | "F";
3380
- default?: number | undefined;
3381
- })[];
3382
- effects: ({
3383
- kind: "animation";
3384
- mode?: "ambient" | "open-close" | undefined;
3385
- control?: number | undefined;
3386
- clips: {
3387
- on?: string | undefined;
3388
- off?: string | undefined;
3389
- loop?: string | undefined;
3390
- };
3391
- } | {
3392
- kind: "light";
3393
- color: string;
3394
- intensityRange: [number, number];
3395
- distance?: number | undefined;
3396
- offset: [number, number, number];
3397
- spot?: {
3398
- direction: [number, number, number];
3399
- angle: number;
3400
- softness: number;
3401
- } | undefined;
3402
- shadows?: boolean | undefined;
3403
- glow?: {
3404
- size: number;
3405
- strength: number;
3406
- } | undefined;
3407
- })[];
3614
+ texture?: {
3615
+ url: string;
3616
+ repeat?: [number, number] | undefined;
3617
+ scale?: number | undefined;
3618
+ offset?: [number, number] | undefined;
3619
+ normalMap?: string | undefined;
3620
+ normalScale?: number | undefined;
3621
+ bumpMap?: string | undefined;
3622
+ bumpScale?: number | undefined;
3408
3623
  } | undefined;
3409
- };
3624
+ } | undefined;
3625
+ materialPreset?: string | undefined;
3626
+ slots?: Record<string, string> | undefined;
3627
+ type: "column";
3410
3628
  } | {
3411
3629
  object: "node";
3412
3630
  name?: string | undefined;
@@ -3431,7 +3649,7 @@ export declare function floorStepFixture(separator?: boolean): {
3431
3649
  fromIds: string[];
3432
3650
  } | undefined;
3433
3651
  } | undefined;
3434
- id: `door_${string}`;
3652
+ id: `rseg_${string}`;
3435
3653
  material?: {
3436
3654
  id?: string | undefined;
3437
3655
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -3454,404 +3672,247 @@ export declare function floorStepFixture(separator?: boolean): {
3454
3672
  bumpScale?: number | undefined;
3455
3673
  } | undefined;
3456
3674
  } | undefined;
3457
- slots?: Record<string, string> | undefined;
3458
- source?: {
3459
- kind: "script";
3460
- meta?: {
3461
- description?: string | undefined;
3462
- category?: string | undefined;
3463
- tags?: string[] | undefined;
3464
- parent?: string | undefined;
3675
+ materialPreset?: string | undefined;
3676
+ topMaterial?: {
3677
+ id?: string | undefined;
3678
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3679
+ properties?: {
3680
+ color: string;
3681
+ roughness: number;
3682
+ metalness: number;
3683
+ opacity: number;
3684
+ transparent: boolean;
3685
+ side: "back" | "double" | "front";
3465
3686
  } | undefined;
3466
- language: "bpy" | "three";
3467
- script: string;
3468
- params: Record<string, string | number | boolean>;
3469
- artifact: string;
3470
- manifest: {
3471
- bounds: {
3472
- min: [number, number, number];
3473
- max: [number, number, number];
3474
- };
3475
- params: {
3476
- id: string;
3477
- label?: string | undefined;
3478
- kind: "boolean" | "number" | "string";
3479
- default: string | number | boolean;
3480
- min?: number | undefined;
3481
- max?: number | undefined;
3482
- step?: number | undefined;
3483
- unit?: string | undefined;
3484
- options?: string[] | undefined;
3485
- }[];
3486
- parts: {
3487
- id: string;
3488
- label?: string | undefined;
3489
- type?: string | undefined;
3490
- bounds?: {
3491
- min: [number, number, number];
3492
- max: [number, number, number];
3493
- } | undefined;
3494
- }[];
3495
- surfaces: {
3496
- part?: string | undefined;
3497
- y: number;
3498
- polygon: [number, number][];
3499
- }[];
3500
- slots: {
3501
- id: string;
3502
- label?: string | undefined;
3503
- color?: string | undefined;
3504
- roughness?: number | undefined;
3505
- metalness?: number | undefined;
3506
- transparent?: boolean | undefined;
3507
- emissive?: boolean | undefined;
3508
- }[];
3509
- anchors: {
3510
- id: string;
3511
- position: [number, number, number];
3512
- normal?: [number, number, number] | undefined;
3513
- }[];
3514
- lights: {
3515
- id: string;
3516
- position: [number, number, number];
3517
- color: string;
3518
- intensity: number;
3519
- distance?: number | undefined;
3520
- spot?: {
3521
- direction: [number, number, number];
3522
- angle: number;
3523
- softness: number;
3524
- } | undefined;
3525
- shadows?: boolean | undefined;
3526
- glow?: {
3527
- size: number;
3528
- strength: number;
3529
- } | undefined;
3530
- }[];
3531
- undersides: {
3532
- part?: string | undefined;
3533
- polygon: [number, number][];
3534
- plane: [number, number, number, number];
3535
- }[];
3536
- animations: {
3537
- name: string;
3538
- duration: number;
3539
- }[];
3540
- cutters?: {
3541
- host: "ceiling" | "mounted" | "slab" | "wall";
3542
- polygon: number[][];
3543
- minY: number;
3544
- maxY: number;
3545
- }[] | undefined;
3546
- cutout: boolean;
3547
- collider: boolean;
3548
- shape?: {
3549
- tolerance: number;
3550
- bands: {
3551
- y0: number;
3552
- y1: number;
3553
- polygons: {
3554
- outer: [number, number][];
3555
- holes?: [number, number][][] | undefined;
3556
- }[];
3557
- }[];
3558
- } | undefined;
3559
- triangles: number;
3560
- coverage?: number | undefined;
3561
- uncovered?: {
3562
- min: [number, number];
3563
- max: [number, number];
3564
- }[] | undefined;
3565
- };
3566
- images?: {
3567
- artifact: string;
3568
- thumbnail: string;
3569
- floorPlan: string;
3687
+ texture?: {
3688
+ url: string;
3689
+ repeat?: [number, number] | undefined;
3690
+ scale?: number | undefined;
3691
+ offset?: [number, number] | undefined;
3692
+ normalMap?: string | undefined;
3693
+ normalScale?: number | undefined;
3694
+ bumpMap?: string | undefined;
3695
+ bumpScale?: number | undefined;
3570
3696
  } | undefined;
3571
3697
  } | undefined;
3572
- position: [number, number, number];
3573
- rotation: [number, number, number];
3574
- side?: "back" | "front" | undefined;
3575
- verticalAnchor?: "floor" | "wall" | undefined;
3576
- floorThresholdVersion: 0 | 1;
3577
- wallId?: string | undefined;
3578
- roofSegmentId?: string | undefined;
3579
- roofFace?: "back" | "front" | "left" | "right" | undefined;
3580
- width: number;
3581
- height: number;
3582
- sidelightLeft?: number | undefined;
3583
- sidelightRight?: number | undefined;
3584
- transomHeight?: number | undefined;
3585
- slidingStyle?: "bypass" | "patio" | undefined;
3586
- mark?: string | undefined;
3587
- constructionType: "framed" | "masonry";
3588
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3589
- roughOpeningWidth?: number | undefined;
3590
- roughOpeningHeight?: number | undefined;
3591
- masonryOpeningWidth?: number | undefined;
3592
- masonryOpeningHeight?: number | undefined;
3593
- finishOpeningWidth?: number | undefined;
3594
- finishOpeningHeight?: number | undefined;
3595
- doorCategory: "garage" | "interior";
3596
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
3597
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
3598
- operationState: number;
3599
- slideDirection: "left" | "right";
3600
- trackStyle: "none" | "overhead" | "pocket" | "visible";
3601
- garagePanelCount: number;
3602
- openingKind: "door" | "opening";
3603
- openingShape: "arch" | "rectangle" | "rounded";
3604
- openingRadiusMode: "all" | "individual";
3605
- openingTopRadii: [number, number];
3606
- cornerRadius: number;
3607
- archHeight: number;
3608
- openingRevealRadius: number;
3609
- frameThickness: number;
3610
- frameDepth?: number | undefined;
3611
- threshold: boolean;
3612
- thresholdHeight: number;
3613
- casingFaceA?: boolean | undefined;
3614
- casingFaceB?: boolean | undefined;
3615
- casingWidth?: number | undefined;
3616
- hingesSide: "left" | "right";
3617
- swingDirection: "inward" | "outward";
3618
- swingAngle: number;
3619
- segments: {
3620
- type: "empty" | "glass" | "panel";
3621
- heightRatio: number;
3622
- columnRatios: number[];
3623
- dividerThickness: number;
3624
- panelDepth: number;
3625
- panelInset: number;
3626
- }[];
3627
- handle: boolean;
3628
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
3629
- handleHeight: number;
3630
- handleSide: "left" | "right";
3631
- contentPadding: [number, number];
3632
- doorCloser: boolean;
3633
- panicBar: boolean;
3634
- panicBarStyle: "crossbar" | "touchbar";
3635
- panicBarRods: boolean;
3636
- panicBarHeight: number;
3637
- type: "door";
3638
- } | {
3639
- object: "node";
3640
- name?: string | undefined;
3641
- parentId: string | null;
3642
- visible: boolean;
3643
- camera?: {
3644
- position: [number, number, number];
3645
- target: [number, number, number];
3646
- mode: "orthographic" | "perspective";
3647
- fov?: number | undefined;
3648
- zoom?: number | undefined;
3698
+ topMaterialPreset?: string | undefined;
3699
+ edgeMaterial?: {
3700
+ id?: string | undefined;
3701
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3702
+ properties?: {
3703
+ color: string;
3704
+ roughness: number;
3705
+ metalness: number;
3706
+ opacity: number;
3707
+ transparent: boolean;
3708
+ side: "back" | "double" | "front";
3709
+ } | undefined;
3710
+ texture?: {
3711
+ url: string;
3712
+ repeat?: [number, number] | undefined;
3713
+ scale?: number | undefined;
3714
+ offset?: [number, number] | undefined;
3715
+ normalMap?: string | undefined;
3716
+ normalScale?: number | undefined;
3717
+ bumpMap?: string | undefined;
3718
+ bumpScale?: number | undefined;
3719
+ } | undefined;
3649
3720
  } | undefined;
3650
- metadata: Record<string, unknown>;
3651
- provenance?: {
3652
- refs: {
3653
- ns?: string | undefined;
3654
- id: string;
3655
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3656
- }[];
3657
- lineage?: {
3658
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3659
- fromIds: string[];
3721
+ edgeMaterialPreset?: string | undefined;
3722
+ wallMaterial?: {
3723
+ id?: string | undefined;
3724
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3725
+ properties?: {
3726
+ color: string;
3727
+ roughness: number;
3728
+ metalness: number;
3729
+ opacity: number;
3730
+ transparent: boolean;
3731
+ side: "back" | "double" | "front";
3732
+ } | undefined;
3733
+ texture?: {
3734
+ url: string;
3735
+ repeat?: [number, number] | undefined;
3736
+ scale?: number | undefined;
3737
+ offset?: [number, number] | undefined;
3738
+ normalMap?: string | undefined;
3739
+ normalScale?: number | undefined;
3740
+ bumpMap?: string | undefined;
3741
+ bumpScale?: number | undefined;
3660
3742
  } | undefined;
3661
3743
  } | undefined;
3662
- id: `column_${string}`;
3663
- children: string[];
3744
+ wallMaterialPreset?: string | undefined;
3664
3745
  position: [number, number, number];
3665
3746
  rotation: number;
3666
- supportSlabId?: string | undefined;
3667
- source?: {
3668
- kind: "script";
3669
- meta?: {
3670
- description?: string | undefined;
3671
- category?: string | undefined;
3672
- tags?: string[] | undefined;
3673
- parent?: string | undefined;
3747
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
3748
+ barrelRise?: number | undefined;
3749
+ barrelSegments?: number | undefined;
3750
+ roofSystem?: "glazed" | "standard" | undefined;
3751
+ glazing?: {
3752
+ across: {
3753
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
3754
+ count: number;
3755
+ spacing: number;
3756
+ alignment: "center" | "end" | "start";
3757
+ };
3758
+ along: {
3759
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
3760
+ count: number;
3761
+ spacing: number;
3762
+ alignment: "center" | "end" | "start";
3763
+ };
3764
+ frameWidth: number;
3765
+ frameDepth: number;
3766
+ glassThickness: number;
3767
+ frameColor: string;
3768
+ glassColor: string;
3769
+ glassOpacity: number;
3770
+ glassRoughness: number;
3771
+ glazedEnds: boolean;
3772
+ panelType: "empty" | "glass" | "solid";
3773
+ panels: {
3774
+ face: string;
3775
+ column: number;
3776
+ row: number;
3777
+ type: "empty" | "glass" | "solid";
3778
+ }[];
3779
+ } | undefined;
3780
+ slots?: Record<string, string> | undefined;
3781
+ width: number;
3782
+ depth: number;
3783
+ conicalStartAngle?: number | undefined;
3784
+ conicalSweepAngle?: number | undefined;
3785
+ conicalFullCircle?: boolean | undefined;
3786
+ trim: {
3787
+ left: number;
3788
+ right: number;
3789
+ front: number;
3790
+ back: number;
3791
+ frontLeft: number;
3792
+ frontRight: number;
3793
+ backLeft: number;
3794
+ backRight: number;
3795
+ frontLeftX: number;
3796
+ frontLeftZ: number;
3797
+ frontRightX: number;
3798
+ frontRightZ: number;
3799
+ backLeftX: number;
3800
+ backLeftZ: number;
3801
+ backRightX: number;
3802
+ backRightZ: number;
3803
+ };
3804
+ wallHeight: number;
3805
+ pitch: number;
3806
+ wallThickness: number;
3807
+ deckThickness: number;
3808
+ overhang: number;
3809
+ gableOverhang?: number | undefined;
3810
+ shingleThickness: number;
3811
+ buildUp?: {
3812
+ presetId?: string | undefined;
3813
+ roofing: {
3814
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
3815
+ thickness: number;
3816
+ name?: string | undefined;
3817
+ };
3818
+ underlayment?: {
3819
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
3820
+ thickness: number;
3821
+ name?: string | undefined;
3674
3822
  } | undefined;
3675
- language: "bpy" | "three";
3676
- script: string;
3677
- params: Record<string, string | number | boolean>;
3678
- artifact: string;
3679
- manifest: {
3680
- bounds: {
3681
- min: [number, number, number];
3682
- max: [number, number, number];
3683
- };
3684
- params: {
3685
- id: string;
3686
- label?: string | undefined;
3687
- kind: "boolean" | "number" | "string";
3688
- default: string | number | boolean;
3689
- min?: number | undefined;
3690
- max?: number | undefined;
3691
- step?: number | undefined;
3692
- unit?: string | undefined;
3693
- options?: string[] | undefined;
3694
- }[];
3695
- parts: {
3696
- id: string;
3697
- label?: string | undefined;
3698
- type?: string | undefined;
3699
- bounds?: {
3700
- min: [number, number, number];
3701
- max: [number, number, number];
3702
- } | undefined;
3703
- }[];
3704
- surfaces: {
3705
- part?: string | undefined;
3706
- y: number;
3707
- polygon: [number, number][];
3708
- }[];
3709
- slots: {
3710
- id: string;
3711
- label?: string | undefined;
3712
- color?: string | undefined;
3713
- roughness?: number | undefined;
3714
- metalness?: number | undefined;
3715
- transparent?: boolean | undefined;
3716
- emissive?: boolean | undefined;
3717
- }[];
3718
- anchors: {
3719
- id: string;
3720
- position: [number, number, number];
3721
- normal?: [number, number, number] | undefined;
3722
- }[];
3723
- lights: {
3724
- id: string;
3725
- position: [number, number, number];
3726
- color: string;
3727
- intensity: number;
3728
- distance?: number | undefined;
3729
- spot?: {
3730
- direction: [number, number, number];
3731
- angle: number;
3732
- softness: number;
3733
- } | undefined;
3734
- shadows?: boolean | undefined;
3735
- glow?: {
3736
- size: number;
3737
- strength: number;
3738
- } | undefined;
3739
- }[];
3740
- undersides: {
3741
- part?: string | undefined;
3742
- polygon: [number, number][];
3743
- plane: [number, number, number, number];
3744
- }[];
3745
- animations: {
3746
- name: string;
3747
- duration: number;
3748
- }[];
3749
- cutters?: {
3750
- host: "ceiling" | "mounted" | "slab" | "wall";
3751
- polygon: number[][];
3752
- minY: number;
3753
- maxY: number;
3754
- }[] | undefined;
3755
- cutout: boolean;
3756
- collider: boolean;
3757
- shape?: {
3758
- tolerance: number;
3759
- bands: {
3760
- y0: number;
3761
- y1: number;
3762
- polygons: {
3763
- outer: [number, number][];
3764
- holes?: [number, number][][] | undefined;
3765
- }[];
3766
- }[];
3767
- } | undefined;
3768
- triangles: number;
3769
- coverage?: number | undefined;
3770
- uncovered?: {
3771
- min: [number, number];
3772
- max: [number, number];
3773
- }[] | undefined;
3823
+ sheathing: {
3824
+ kind: "osb" | "plywood";
3825
+ thickness: number;
3826
+ name?: string | undefined;
3774
3827
  };
3775
- images?: {
3776
- artifact: string;
3777
- thumbnail: string;
3778
- floorPlan: string;
3828
+ structure: {
3829
+ system: "rafters" | "trusses";
3830
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3831
+ spacing: number;
3832
+ };
3833
+ insulation?: {
3834
+ kind: "batt" | "blown" | "rigid";
3835
+ thickness: number;
3836
+ name?: string | undefined;
3837
+ } | undefined;
3838
+ finish?: {
3839
+ kind: "drywall" | "plaster" | "wood-plank";
3840
+ thickness: number;
3841
+ name?: string | undefined;
3842
+ } | undefined;
3843
+ } | undefined;
3844
+ arc?: {
3845
+ centerX: number;
3846
+ centerZ: number;
3847
+ radius: number;
3848
+ } | undefined;
3849
+ shedSideInfillSpan?: number | undefined;
3850
+ shedSideInfillMinX?: number | undefined;
3851
+ shedSideInfillMaxX?: number | undefined;
3852
+ shedFootprintPieces?: [number, number][][] | undefined;
3853
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
3854
+ shedJointFrame?: {
3855
+ position: [number, number, number];
3856
+ rotation: number;
3857
+ } | undefined;
3858
+ shedJointOwnerId?: string | undefined;
3859
+ shedJointNeighborIds?: string[] | undefined;
3860
+ shedJointScopeId?: string | undefined;
3861
+ managedByParent: boolean;
3862
+ wallShell: "auto" | "include" | "omit";
3863
+ shedInsetEndPanels: boolean;
3864
+ fascia?: boolean | undefined;
3865
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
3866
+ fasciaHighEdge?: boolean | undefined;
3867
+ fasciaHeight?: number | undefined;
3868
+ fasciaDepth?: number | undefined;
3869
+ fasciaMaterial?: {
3870
+ id?: string | undefined;
3871
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3872
+ properties?: {
3873
+ color: string;
3874
+ roughness: number;
3875
+ metalness: number;
3876
+ opacity: number;
3877
+ transparent: boolean;
3878
+ side: "back" | "double" | "front";
3879
+ } | undefined;
3880
+ texture?: {
3881
+ url: string;
3882
+ repeat?: [number, number] | undefined;
3883
+ scale?: number | undefined;
3884
+ offset?: [number, number] | undefined;
3885
+ normalMap?: string | undefined;
3886
+ normalScale?: number | undefined;
3887
+ bumpMap?: string | undefined;
3888
+ bumpScale?: number | undefined;
3889
+ } | undefined;
3890
+ } | undefined;
3891
+ fasciaMaterialPreset?: string | undefined;
3892
+ heelMaterial?: {
3893
+ id?: string | undefined;
3894
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3895
+ properties?: {
3896
+ color: string;
3897
+ roughness: number;
3898
+ metalness: number;
3899
+ opacity: number;
3900
+ transparent: boolean;
3901
+ side: "back" | "double" | "front";
3902
+ } | undefined;
3903
+ texture?: {
3904
+ url: string;
3905
+ repeat?: [number, number] | undefined;
3906
+ scale?: number | undefined;
3907
+ offset?: [number, number] | undefined;
3908
+ normalMap?: string | undefined;
3909
+ normalScale?: number | undefined;
3910
+ bumpMap?: string | undefined;
3911
+ bumpScale?: number | undefined;
3779
3912
  } | undefined;
3780
3913
  } | undefined;
3781
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
3782
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
3783
- height: number;
3784
- radius: number;
3785
- width: number;
3786
- depth: number;
3787
- edgeSoftness: number;
3788
- baseHeight: number;
3789
- capitalHeight: number;
3790
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
3791
- shaftTaper: number;
3792
- shaftBulge: number;
3793
- shaftStartScale: number;
3794
- shaftEndScale: number;
3795
- shaftSegmentCount: number;
3796
- shaftTwistStep: number;
3797
- shaftCornerRadius: number;
3798
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
3799
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
3800
- baseWidthScale: number;
3801
- baseDepthScale: number;
3802
- baseTierCount: number;
3803
- baseStepSpread: number;
3804
- basePlinthHeightRatio: number;
3805
- baseRoundBandScale: number;
3806
- baseNeckScale: number;
3807
- baseRoundBandCount: number;
3808
- baseRibCount: number;
3809
- baseCarvingLevel: number;
3810
- basePanelInset: number;
3811
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
3812
- capitalWidthScale: number;
3813
- capitalDepthScale: number;
3814
- capitalTierCount: number;
3815
- capitalStepSpread: number;
3816
- capitalBandCount: number;
3817
- voluteSize: number;
3818
- voluteCount: number;
3819
- leafCount: number;
3820
- leafRows: number;
3821
- bracketDepth: number;
3822
- bracketTierCount: number;
3823
- pendantCount: number;
3824
- capitalCarvingLevel: number;
3825
- ringCount: number;
3826
- ringPlacement: "bottom" | "ends" | "even" | "top";
3827
- ringThickness: number;
3828
- ringSpread: number;
3829
- fluteCount: number;
3830
- fluteDepth: number;
3831
- fluteWidth: number;
3832
- spiralTwist: number;
3833
- spiralRibCount: number;
3834
- panelCount: number;
3835
- panelInsetDepth: number;
3836
- panelShape: "arched" | "diamond" | "rectangle";
3837
- latheRingCount: number;
3838
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
3839
- carvingLevel: number;
3840
- carvingPlacement: "all" | "base" | "capital" | "shaft";
3841
- lowerBandEnabled: boolean;
3842
- lowerBandHeight: number;
3843
- lowerBandCarvingLevel: number;
3844
- dentilCount: number;
3845
- beadCount: number;
3846
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
3847
- braceWidth: number;
3848
- braceDepth: number;
3849
- braceBottomSpread: number;
3850
- braceTopSpread: number;
3851
- bracePlateEnabled: boolean;
3852
- role?: "ornament" | "post" | undefined;
3853
- postBase?: "none" | "pier" | "post-base" | undefined;
3854
- material?: {
3914
+ heelMaterialPreset?: string | undefined;
3915
+ gableLeftMaterial?: {
3855
3916
  id?: string | undefined;
3856
3917
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3857
3918
  properties?: {
@@ -3873,9 +3934,41 @@ export declare function floorStepFixture(separator?: boolean): {
3873
3934
  bumpScale?: number | undefined;
3874
3935
  } | undefined;
3875
3936
  } | undefined;
3876
- materialPreset?: string | undefined;
3877
- slots?: Record<string, string> | undefined;
3878
- type: "column";
3937
+ gableLeftMaterialPreset?: string | undefined;
3938
+ gableRightMaterial?: {
3939
+ id?: string | undefined;
3940
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3941
+ properties?: {
3942
+ color: string;
3943
+ roughness: number;
3944
+ metalness: number;
3945
+ opacity: number;
3946
+ transparent: boolean;
3947
+ side: "back" | "double" | "front";
3948
+ } | undefined;
3949
+ texture?: {
3950
+ url: string;
3951
+ repeat?: [number, number] | undefined;
3952
+ scale?: number | undefined;
3953
+ offset?: [number, number] | undefined;
3954
+ normalMap?: string | undefined;
3955
+ normalScale?: number | undefined;
3956
+ bumpMap?: string | undefined;
3957
+ bumpScale?: number | undefined;
3958
+ } | undefined;
3959
+ } | undefined;
3960
+ gableRightMaterialPreset?: string | undefined;
3961
+ gambrelLowerWidthRatio: number;
3962
+ gambrelLowerHeightRatio: number;
3963
+ mansardSteepWidthRatio: number;
3964
+ mansardSteepHeightRatio: number;
3965
+ dutchHipWidthRatio: number;
3966
+ dutchHipHeightRatio: number;
3967
+ dutchWaistLengthRatio: number;
3968
+ dutchGabletRake: number;
3969
+ dutchTopRakeThickness: number;
3970
+ children: string[];
3971
+ type: "roof-segment";
3879
3972
  } | {
3880
3973
  object: "node";
3881
3974
  name?: string | undefined;
@@ -4064,7 +4157,7 @@ export declare function floorStepFixture(separator?: boolean): {
4064
4157
  cavityInsulation?: string | undefined;
4065
4158
  } | undefined;
4066
4159
  slots?: Record<string, string> | undefined;
4067
- children: `rseg_${string}`[];
4160
+ children: string[];
4068
4161
  type: "roof";
4069
4162
  } | {
4070
4163
  object: "node";
@@ -4898,6 +4991,34 @@ export declare function floorStepFixture(separator?: boolean): {
4898
4991
  frontSide: "exterior" | "interior" | "unknown";
4899
4992
  backSide: "exterior" | "interior" | "unknown";
4900
4993
  type: "wall";
4994
+ } | {
4995
+ object: "node";
4996
+ name?: string | undefined;
4997
+ parentId: string | null;
4998
+ visible: boolean;
4999
+ camera?: {
5000
+ position: [number, number, number];
5001
+ target: [number, number, number];
5002
+ mode: "orthographic" | "perspective";
5003
+ fov?: number | undefined;
5004
+ zoom?: number | undefined;
5005
+ } | undefined;
5006
+ metadata: Record<string, unknown>;
5007
+ provenance?: {
5008
+ refs: {
5009
+ ns?: string | undefined;
5010
+ id: string;
5011
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5012
+ }[];
5013
+ lineage?: {
5014
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5015
+ fromIds: string[];
5016
+ } | undefined;
5017
+ } | undefined;
5018
+ id: `separator_${string}`;
5019
+ start: [number, number];
5020
+ end: [number, number];
5021
+ type: "separator";
4901
5022
  } | {
4902
5023
  object: "node";
4903
5024
  name?: string | undefined;
@@ -5064,6 +5185,53 @@ export declare function floorStepFixture(separator?: boolean): {
5064
5185
  topElevation?: number | undefined;
5065
5186
  supportSlabId?: string | undefined;
5066
5187
  type: "beam";
5188
+ } | {
5189
+ object: "node";
5190
+ name?: string | undefined;
5191
+ parentId: string | null;
5192
+ visible: boolean;
5193
+ camera?: {
5194
+ position: [number, number, number];
5195
+ target: [number, number, number];
5196
+ mode: "orthographic" | "perspective";
5197
+ fov?: number | undefined;
5198
+ zoom?: number | undefined;
5199
+ } | undefined;
5200
+ metadata: Record<string, unknown>;
5201
+ provenance?: {
5202
+ refs: {
5203
+ ns?: string | undefined;
5204
+ id: string;
5205
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5206
+ }[];
5207
+ lineage?: {
5208
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5209
+ fromIds: string[];
5210
+ } | undefined;
5211
+ } | undefined;
5212
+ id: `block_${string}`;
5213
+ children: string[];
5214
+ position: [number, number, number];
5215
+ rotation: number;
5216
+ supportSlabId?: string | undefined;
5217
+ topology: {
5218
+ vertices: {
5219
+ id: string;
5220
+ position: [number, number, number];
5221
+ }[];
5222
+ edges: {
5223
+ id: string;
5224
+ vertexIds: [string, string];
5225
+ }[];
5226
+ faces: {
5227
+ id: string;
5228
+ vertexIds: string[];
5229
+ materialSlot: string;
5230
+ }[];
5231
+ };
5232
+ slots: Record<string, string>;
5233
+ slotNames: Record<string, string>;
5234
+ type: "block";
5067
5235
  } | {
5068
5236
  object: "node";
5069
5237
  name?: string | undefined;
@@ -5565,74 +5733,59 @@ export declare function floorStepFixture(separator?: boolean): {
5565
5733
  fromIds: string[];
5566
5734
  } | undefined;
5567
5735
  } | undefined;
5568
- id: `ceiling_${string}`;
5569
- children: (`item_${string}` | `procedural-item_${string}`)[];
5736
+ id: `sseg_${string}`;
5570
5737
  material?: {
5571
5738
  id?: string | undefined;
5572
5739
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5573
- properties?: {
5574
- color: string;
5575
- roughness: number;
5576
- metalness: number;
5577
- opacity: number;
5578
- transparent: boolean;
5579
- side: "back" | "double" | "front";
5580
- } | undefined;
5581
- texture?: {
5582
- url: string;
5583
- repeat?: [number, number] | undefined;
5584
- scale?: number | undefined;
5585
- offset?: [number, number] | undefined;
5586
- normalMap?: string | undefined;
5587
- normalScale?: number | undefined;
5588
- bumpMap?: string | undefined;
5589
- bumpScale?: number | undefined;
5590
- } | undefined;
5591
- } | undefined;
5592
- materialPreset?: string | undefined;
5593
- slots?: Record<string, string> | undefined;
5594
- polygon: [number, number][];
5595
- holes: [number, number][][];
5596
- holeMetadata: {
5597
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
5598
- openingId?: string | undefined;
5599
- stairId?: string | undefined;
5600
- elevatorId?: string | undefined;
5601
- }[];
5602
- openingIds?: string[] | undefined;
5603
- height?: number | undefined;
5604
- buildUp?: {
5605
- presetId?: string | undefined;
5606
- finish?: {
5607
- kind: "drywall" | "plaster" | "wood-plank";
5608
- thickness: number;
5609
- name?: string | undefined;
5610
- } | undefined;
5611
- framing?: {
5612
- system: "joists" | "truss-chords";
5613
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
5614
- spacing: number;
5615
- } | undefined;
5616
- decking?: {
5617
- kind: "osb" | "plywood";
5618
- thickness: number;
5619
- name?: string | undefined;
5740
+ properties?: {
5741
+ color: string;
5742
+ roughness: number;
5743
+ metalness: number;
5744
+ opacity: number;
5745
+ transparent: boolean;
5746
+ side: "back" | "double" | "front";
5620
5747
  } | undefined;
5621
- insulation?: {
5622
- kind: "batt" | "blown" | "rigid";
5623
- thickness: number;
5624
- name?: string | undefined;
5748
+ texture?: {
5749
+ url: string;
5750
+ repeat?: [number, number] | undefined;
5751
+ scale?: number | undefined;
5752
+ offset?: [number, number] | undefined;
5753
+ normalMap?: string | undefined;
5754
+ normalScale?: number | undefined;
5755
+ bumpMap?: string | undefined;
5756
+ bumpScale?: number | undefined;
5625
5757
  } | undefined;
5626
5758
  } | undefined;
5627
- regions?: {
5628
- id: string;
5629
- polygon: [number, number][];
5630
- finish: string | Record<string, unknown>;
5631
- }[] | undefined;
5632
- boundary?: "auto" | undefined;
5633
- zoneId?: string | undefined;
5634
- autoFromWalls: boolean;
5635
- type: "ceiling";
5759
+ materialPreset?: string | undefined;
5760
+ slots?: Record<string, string> | undefined;
5761
+ position: [number, number, number];
5762
+ rotation: number;
5763
+ segmentType: "landing" | "stair";
5764
+ width: number;
5765
+ length: number;
5766
+ height: number;
5767
+ stepCount: number;
5768
+ attachmentSide: "front" | "left" | "right";
5769
+ fillToFloor: boolean;
5770
+ construction?: {
5771
+ mode: "center-stringer" | "open" | "side-stringers" | "solid" | "waist";
5772
+ waistThickness: number;
5773
+ treadThickness: number;
5774
+ riserThickness: number;
5775
+ nosing: number;
5776
+ finishThickness: number;
5777
+ closedRisers: boolean;
5778
+ stringerWidth: number;
5779
+ stringerDepth: number;
5780
+ } | undefined;
5781
+ winder?: {
5782
+ turn: "left" | "right";
5783
+ innerGap: number;
5784
+ walkingLineOffset: number;
5785
+ division: "equal-angle" | "equal-going";
5786
+ } | undefined;
5787
+ thickness: number;
5788
+ type: "stair-segment";
5636
5789
  } | {
5637
5790
  object: "node";
5638
5791
  name?: string | undefined;
@@ -5865,6 +6018,47 @@ export declare function floorStepFixture(separator?: boolean): {
5865
6018
  scale: number;
5866
6019
  opacity: number;
5867
6020
  type: "scan";
6021
+ } | {
6022
+ object: "node";
6023
+ name?: string | undefined;
6024
+ parentId: string | null;
6025
+ visible: boolean;
6026
+ camera?: {
6027
+ position: [number, number, number];
6028
+ target: [number, number, number];
6029
+ mode: "orthographic" | "perspective";
6030
+ fov?: number | undefined;
6031
+ zoom?: number | undefined;
6032
+ } | undefined;
6033
+ metadata: Record<string, unknown>;
6034
+ provenance?: {
6035
+ refs: {
6036
+ ns?: string | undefined;
6037
+ id: string;
6038
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6039
+ }[];
6040
+ lineage?: {
6041
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6042
+ fromIds: string[];
6043
+ } | undefined;
6044
+ } | undefined;
6045
+ id: `guide_${string}`;
6046
+ url: string;
6047
+ position: [number, number, number];
6048
+ rotation: [number, number, number];
6049
+ scale: number;
6050
+ opacity: number;
6051
+ scaleReference: {
6052
+ start: [number, number];
6053
+ end: [number, number];
6054
+ realLengthMeters: number;
6055
+ measuredLengthUnits: number;
6056
+ metersPerUnit: number;
6057
+ displayLength?: number | undefined;
6058
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
6059
+ label: string;
6060
+ } | null;
6061
+ type: "guide";
5868
6062
  } | {
5869
6063
  object: "node";
5870
6064
  name?: string | undefined;
@@ -5972,6 +6166,35 @@ export declare function floorStepFixture(separator?: boolean): {
5972
6166
  extrusion: [number, number, number];
5973
6167
  };
5974
6168
  type: "measurement";
6169
+ } | {
6170
+ object: "node";
6171
+ name?: string | undefined;
6172
+ parentId: string | null;
6173
+ visible: boolean;
6174
+ camera?: {
6175
+ position: [number, number, number];
6176
+ target: [number, number, number];
6177
+ mode: "orthographic" | "perspective";
6178
+ fov?: number | undefined;
6179
+ zoom?: number | undefined;
6180
+ } | undefined;
6181
+ metadata: Record<string, unknown>;
6182
+ provenance?: {
6183
+ refs: {
6184
+ ns?: string | undefined;
6185
+ id: string;
6186
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6187
+ }[];
6188
+ lineage?: {
6189
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6190
+ fromIds: string[];
6191
+ } | undefined;
6192
+ } | undefined;
6193
+ id: `spawn_${string}`;
6194
+ position: [number, number, number];
6195
+ rotation: number;
6196
+ supportSlabId?: string | undefined;
6197
+ type: "spawn";
5975
6198
  } | {
5976
6199
  object: "node";
5977
6200
  name?: string | undefined;
@@ -6162,134 +6385,19 @@ export declare function floorStepFixture(separator?: boolean): {
6162
6385
  fromIds: string[];
6163
6386
  } | undefined;
6164
6387
  } | undefined;
6165
- id: `hvac-equipment_${string}`;
6388
+ id: `duct-terminal_${string}`;
6166
6389
  position: [number, number, number];
6167
6390
  rotation: number;
6168
6391
  supportSlabId?: string | undefined;
6169
- equipmentType: "air-handler" | "condenser" | "furnace";
6170
- width: number;
6171
- depth: number;
6172
- height: number;
6173
- supplyShape: "oval" | "rect" | "round";
6174
- returnShape: "oval" | "rect" | "round";
6175
- supplyDiameter: number;
6176
- returnDiameter: number;
6177
- supplyWidth: number;
6178
- supplyHeight: number;
6179
- returnWidth: number;
6180
- returnHeight: number;
6181
- type: "hvac-equipment";
6182
- } | {
6183
- object: "node";
6184
- name?: string | undefined;
6185
- parentId: string | null;
6186
- visible: boolean;
6187
- camera?: {
6188
- position: [number, number, number];
6189
- target: [number, number, number];
6190
- mode: "orthographic" | "perspective";
6191
- fov?: number | undefined;
6192
- zoom?: number | undefined;
6193
- } | undefined;
6194
- metadata: Record<string, unknown>;
6195
- provenance?: {
6196
- refs: {
6197
- ns?: string | undefined;
6198
- id: string;
6199
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6200
- }[];
6201
- lineage?: {
6202
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6203
- fromIds: string[];
6204
- } | undefined;
6205
- } | undefined;
6206
- id: `lineset_${string}`;
6207
- path: [number, number, number][];
6208
- suctionDiameter: number;
6209
- liquidDiameter: number;
6210
- insulated: boolean;
6211
- type: "lineset";
6212
- } | {
6213
- object: "node";
6214
- name?: string | undefined;
6215
- parentId: string | null;
6216
- visible: boolean;
6217
- camera?: {
6218
- position: [number, number, number];
6219
- target: [number, number, number];
6220
- mode: "orthographic" | "perspective";
6221
- fov?: number | undefined;
6222
- zoom?: number | undefined;
6223
- } | undefined;
6224
- metadata: Record<string, unknown>;
6225
- provenance?: {
6226
- refs: {
6227
- ns?: string | undefined;
6228
- id: string;
6229
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6230
- }[];
6231
- lineage?: {
6232
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6233
- fromIds: string[];
6234
- } | undefined;
6235
- } | undefined;
6236
- id: `pipe-segment_${string}`;
6237
- path: [number, number, number][];
6238
- autoHangers?: boolean | undefined;
6239
- hangerOverrides?: Record<string, {
6240
- fraction?: number | undefined;
6241
- skipped?: boolean | undefined;
6242
- hostId?: string | undefined;
6243
- }> | undefined;
6244
- hangerStyle?: "double" | "single" | undefined;
6245
- hangerSpacing?: number | undefined;
6246
- hangerMaxReach?: number | undefined;
6247
- wallAttachment?: {
6248
- wallId: `wall_${string}`;
6249
- side: "back" | "front";
6250
- startUV: [number, number];
6251
- endUV: [number, number];
6252
- offset: number;
6253
- } | undefined;
6254
- diameter: number;
6255
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6256
- system: "vent" | "waste";
6257
- type: "pipe-segment";
6258
- } | {
6259
- object: "node";
6260
- name?: string | undefined;
6261
- parentId: string | null;
6262
- visible: boolean;
6263
- camera?: {
6264
- position: [number, number, number];
6265
- target: [number, number, number];
6266
- mode: "orthographic" | "perspective";
6267
- fov?: number | undefined;
6268
- zoom?: number | undefined;
6269
- } | undefined;
6270
- metadata: Record<string, unknown>;
6271
- provenance?: {
6272
- refs: {
6273
- ns?: string | undefined;
6274
- id: string;
6275
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6276
- }[];
6277
- lineage?: {
6278
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6279
- fromIds: string[];
6280
- } | undefined;
6281
- } | undefined;
6282
- id: `pipe-fitting_${string}`;
6283
- position: [number, number, number];
6284
- rotation: [number, number, number];
6285
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6286
- angle: number;
6287
- diameter: number;
6288
- diameter2: number;
6289
- cleanoutStyle: "end" | "inline";
6290
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6291
- system: "vent" | "waste";
6292
- type: "pipe-fitting";
6392
+ terminalType: "diffuser" | "return-grille" | "supply-register";
6393
+ mount: "ceiling" | "floor" | "wall";
6394
+ width: number;
6395
+ depth: number;
6396
+ collarShape: "oval" | "rect" | "round";
6397
+ collarDiameter: number;
6398
+ collarWidth: number;
6399
+ collarHeight: number;
6400
+ type: "duct-terminal";
6293
6401
  } | {
6294
6402
  object: "node";
6295
6403
  name?: string | undefined;
@@ -6314,13 +6422,23 @@ export declare function floorStepFixture(separator?: boolean): {
6314
6422
  fromIds: string[];
6315
6423
  } | undefined;
6316
6424
  } | undefined;
6317
- id: `pipe-trap_${string}`;
6425
+ id: `hvac-equipment_${string}`;
6318
6426
  position: [number, number, number];
6319
6427
  rotation: number;
6320
- diameter: number;
6321
- pipeMaterial: "abs" | "cast-iron" | "pvc";
6322
- armLengthM: number;
6323
- type: "pipe-trap";
6428
+ supportSlabId?: string | undefined;
6429
+ equipmentType: "air-handler" | "condenser" | "furnace";
6430
+ width: number;
6431
+ depth: number;
6432
+ height: number;
6433
+ supplyShape: "oval" | "rect" | "round";
6434
+ returnShape: "oval" | "rect" | "round";
6435
+ supplyDiameter: number;
6436
+ returnDiameter: number;
6437
+ supplyWidth: number;
6438
+ supplyHeight: number;
6439
+ returnWidth: number;
6440
+ returnHeight: number;
6441
+ type: "hvac-equipment";
6324
6442
  } | {
6325
6443
  object: "node";
6326
6444
  name?: string | undefined;
@@ -6345,12 +6463,12 @@ export declare function floorStepFixture(separator?: boolean): {
6345
6463
  fromIds: string[];
6346
6464
  } | undefined;
6347
6465
  } | undefined;
6348
- id: `level_${string}`;
6349
- 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}`)[];
6350
- level: number;
6351
- baseElevation: number;
6352
- height?: number | undefined;
6353
- type: "level";
6466
+ id: `lineset_${string}`;
6467
+ path: [number, number, number][];
6468
+ suctionDiameter: number;
6469
+ liquidDiameter: number;
6470
+ insulated: boolean;
6471
+ type: "lineset";
6354
6472
  } | {
6355
6473
  object: "node";
6356
6474
  name?: string | undefined;
@@ -6375,56 +6493,13 @@ export declare function floorStepFixture(separator?: boolean): {
6375
6493
  fromIds: string[];
6376
6494
  } | undefined;
6377
6495
  } | undefined;
6378
- id: `elevator_${string}`;
6379
- material?: {
6380
- id?: string | undefined;
6381
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6382
- properties?: {
6383
- color: string;
6384
- roughness: number;
6385
- metalness: number;
6386
- opacity: number;
6387
- transparent: boolean;
6388
- side: "back" | "double" | "front";
6389
- } | undefined;
6390
- texture?: {
6391
- url: string;
6392
- repeat?: [number, number] | undefined;
6393
- scale?: number | undefined;
6394
- offset?: [number, number] | undefined;
6395
- normalMap?: string | undefined;
6396
- normalScale?: number | undefined;
6397
- bumpMap?: string | undefined;
6398
- bumpScale?: number | undefined;
6399
- } | undefined;
6400
- } | undefined;
6401
- materialPreset?: string | undefined;
6402
- slots?: Record<string, string> | undefined;
6403
- position: [number, number, number];
6404
- rotation: number;
6405
- width: number;
6406
- depth: number;
6407
- shaftWidth?: number | undefined;
6408
- shaftDepth?: number | undefined;
6409
- shaftWallThickness: number;
6410
- shaftStyle: "glass" | "solid";
6411
- cabHeight: number;
6412
- doorWidth: number;
6413
- doorHeight: number;
6414
- doorStyle: "center-opening" | "single-left" | "single-right";
6415
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
6416
- fromLevelId: string | null;
6417
- toLevelId: string | null;
6418
- servedLevelIds?: string[] | undefined;
6419
- disabledLevelIds: string[];
6420
- serviceOnlyLevelIds: string[];
6421
- defaultLevelId: string | null;
6422
- speed: number;
6423
- doorDurationMs: number;
6424
- dwellMs: number;
6425
- type: "elevator";
6496
+ id: `liquid-line_${string}`;
6497
+ path: [number, number, number][];
6498
+ diameter: number;
6499
+ type: "liquid-line";
6426
6500
  } | {
6427
6501
  object: "node";
6502
+ name?: string | undefined;
6428
6503
  parentId: string | null;
6429
6504
  visible: boolean;
6430
6505
  camera?: {
@@ -6434,6 +6509,7 @@ export declare function floorStepFixture(separator?: boolean): {
6434
6509
  fov?: number | undefined;
6435
6510
  zoom?: number | undefined;
6436
6511
  } | undefined;
6512
+ metadata: Record<string, unknown>;
6437
6513
  provenance?: {
6438
6514
  refs: {
6439
6515
  ns?: string | undefined;
@@ -6445,13 +6521,28 @@ export declare function floorStepFixture(separator?: boolean): {
6445
6521
  fromIds: string[];
6446
6522
  } | undefined;
6447
6523
  } | undefined;
6448
- id: `unit_${string}`;
6449
- name: string;
6450
- kind: "apartment" | "commercial" | "common" | "hotel-room";
6451
- members: `zone_${string}`[];
6452
- color: string;
6453
- metadata: Record<string, unknown>;
6454
- type: "unit";
6524
+ id: `pipe-segment_${string}`;
6525
+ path: [number, number, number][];
6526
+ autoHangers?: boolean | undefined;
6527
+ hangerOverrides?: Record<string, {
6528
+ fraction?: number | undefined;
6529
+ skipped?: boolean | undefined;
6530
+ hostId?: string | undefined;
6531
+ }> | undefined;
6532
+ hangerStyle?: "double" | "single" | undefined;
6533
+ hangerSpacing?: number | undefined;
6534
+ hangerMaxReach?: number | undefined;
6535
+ wallAttachment?: {
6536
+ wallId: `wall_${string}`;
6537
+ side: "back" | "front";
6538
+ startUV: [number, number];
6539
+ endUV: [number, number];
6540
+ offset: number;
6541
+ } | undefined;
6542
+ diameter: number;
6543
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6544
+ system: "vent" | "waste";
6545
+ type: "pipe-segment";
6455
6546
  } | {
6456
6547
  object: "node";
6457
6548
  name?: string | undefined;
@@ -6476,12 +6567,17 @@ export declare function floorStepFixture(separator?: boolean): {
6476
6567
  fromIds: string[];
6477
6568
  } | undefined;
6478
6569
  } | undefined;
6479
- id: `building_${string}`;
6480
- children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
6570
+ id: `pipe-fitting_${string}`;
6481
6571
  position: [number, number, number];
6482
6572
  rotation: [number, number, number];
6483
- groundLevelId?: `level_${string}` | undefined;
6484
- type: "building";
6573
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6574
+ angle: number;
6575
+ diameter: number;
6576
+ diameter2: number;
6577
+ cleanoutStyle: "end" | "inline";
6578
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6579
+ system: "vent" | "waste";
6580
+ type: "pipe-fitting";
6485
6581
  } | {
6486
6582
  object: "node";
6487
6583
  name?: string | undefined;
@@ -6506,126 +6602,13 @@ export declare function floorStepFixture(separator?: boolean): {
6506
6602
  fromIds: string[];
6507
6603
  } | undefined;
6508
6604
  } | undefined;
6509
- id: `dormer_${string}`;
6510
- material?: {
6511
- id?: string | undefined;
6512
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6513
- properties?: {
6514
- color: string;
6515
- roughness: number;
6516
- metalness: number;
6517
- opacity: number;
6518
- transparent: boolean;
6519
- side: "back" | "double" | "front";
6520
- } | undefined;
6521
- texture?: {
6522
- url: string;
6523
- repeat?: [number, number] | undefined;
6524
- scale?: number | undefined;
6525
- offset?: [number, number] | undefined;
6526
- normalMap?: string | undefined;
6527
- normalScale?: number | undefined;
6528
- bumpMap?: string | undefined;
6529
- bumpScale?: number | undefined;
6530
- } | undefined;
6531
- } | undefined;
6532
- materialPreset?: string | undefined;
6533
- topMaterial?: {
6534
- id?: string | undefined;
6535
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6536
- properties?: {
6537
- color: string;
6538
- roughness: number;
6539
- metalness: number;
6540
- opacity: number;
6541
- transparent: boolean;
6542
- side: "back" | "double" | "front";
6543
- } | undefined;
6544
- texture?: {
6545
- url: string;
6546
- repeat?: [number, number] | undefined;
6547
- scale?: number | undefined;
6548
- offset?: [number, number] | undefined;
6549
- normalMap?: string | undefined;
6550
- normalScale?: number | undefined;
6551
- bumpMap?: string | undefined;
6552
- bumpScale?: number | undefined;
6553
- } | undefined;
6554
- } | undefined;
6555
- topMaterialPreset?: string | undefined;
6556
- sideMaterial?: {
6557
- id?: string | undefined;
6558
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6559
- properties?: {
6560
- color: string;
6561
- roughness: number;
6562
- metalness: number;
6563
- opacity: number;
6564
- transparent: boolean;
6565
- side: "back" | "double" | "front";
6566
- } | undefined;
6567
- texture?: {
6568
- url: string;
6569
- repeat?: [number, number] | undefined;
6570
- scale?: number | undefined;
6571
- offset?: [number, number] | undefined;
6572
- normalMap?: string | undefined;
6573
- normalScale?: number | undefined;
6574
- bumpMap?: string | undefined;
6575
- bumpScale?: number | undefined;
6576
- } | undefined;
6577
- } | undefined;
6578
- sideMaterialPreset?: string | undefined;
6579
- wallMaterial?: {
6580
- id?: string | undefined;
6581
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6582
- properties?: {
6583
- color: string;
6584
- roughness: number;
6585
- metalness: number;
6586
- opacity: number;
6587
- transparent: boolean;
6588
- side: "back" | "double" | "front";
6589
- } | undefined;
6590
- texture?: {
6591
- url: string;
6592
- repeat?: [number, number] | undefined;
6593
- scale?: number | undefined;
6594
- offset?: [number, number] | undefined;
6595
- normalMap?: string | undefined;
6596
- normalScale?: number | undefined;
6597
- bumpMap?: string | undefined;
6598
- bumpScale?: number | undefined;
6599
- } | undefined;
6600
- } | undefined;
6601
- wallMaterialPreset?: string | undefined;
6602
- roofSegmentId?: string | undefined;
6605
+ id: `pipe-trap_${string}`;
6603
6606
  position: [number, number, number];
6604
- rotation: number;
6605
- width: number;
6606
- depth: number;
6607
- height: number;
6608
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
6609
- roofHeight: number;
6610
- shedHighSide: "back" | "front";
6611
- wallSkirtHeight: number;
6612
- windowWidth: number;
6613
- windowHeight: number;
6614
- windowOffsetX: number;
6615
- windowOffsetY: number;
6616
- windowFrameThickness: number;
6617
- windowFrameDepth: number;
6618
- windowColumns: number;
6619
- windowRows: number;
6620
- windowDividerThickness: number;
6621
- windowShape: "arch" | "rectangle" | "rounded";
6622
- windowArchHeight: number;
6623
- windowCornerRadii: [number, number, number, number];
6624
- windowSill: boolean;
6625
- windowSillDepth: number;
6626
- windowSillThickness: number;
6627
- children: `window_${string}`[];
6628
- type: "dormer";
6607
+ rotation: number;
6608
+ diameter: number;
6609
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6610
+ armLengthM: number;
6611
+ type: "pipe-trap";
6629
6612
  } | {
6630
6613
  object: "node";
6631
6614
  name?: string | undefined;
@@ -6650,57 +6633,14 @@ export declare function floorStepFixture(separator?: boolean): {
6650
6633
  fromIds: string[];
6651
6634
  } | undefined;
6652
6635
  } | undefined;
6653
- id: `gutter_${string}`;
6654
- material?: {
6655
- id?: string | undefined;
6656
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6657
- properties?: {
6658
- color: string;
6659
- roughness: number;
6660
- metalness: number;
6661
- opacity: number;
6662
- transparent: boolean;
6663
- side: "back" | "double" | "front";
6664
- } | undefined;
6665
- texture?: {
6666
- url: string;
6667
- repeat?: [number, number] | undefined;
6668
- scale?: number | undefined;
6669
- offset?: [number, number] | undefined;
6670
- normalMap?: string | undefined;
6671
- normalScale?: number | undefined;
6672
- bumpMap?: string | undefined;
6673
- bumpScale?: number | undefined;
6674
- } | undefined;
6675
- } | undefined;
6676
- slots?: Record<string, string> | undefined;
6677
- materialPreset: string;
6678
- roofSegmentId?: string | undefined;
6679
- position: [number, number, number];
6680
- rotation: number;
6681
- length: number;
6682
- arc?: {
6683
- centerX: number;
6684
- centerZ: number;
6685
- radius: number;
6686
- } | undefined;
6687
- size: number;
6688
- thickness: number;
6689
- profile: "box" | "half-round" | "k-style";
6690
- endCapLeft: boolean;
6691
- endCapRight: boolean;
6692
- hangerStyle: "none" | "strap";
6693
- hangerSpacing: number;
6694
- outlets: {
6695
- id: string;
6696
- offset: number;
6697
- diameter: number;
6698
- generatedBy?: "default-downspout" | undefined;
6699
- }[];
6700
- type: "gutter";
6636
+ id: `level_${string}`;
6637
+ 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}`)[];
6638
+ level: number;
6639
+ baseElevation: number;
6640
+ height?: number | undefined;
6641
+ type: "level";
6701
6642
  } | {
6702
6643
  object: "node";
6703
- name?: string | undefined;
6704
6644
  parentId: string | null;
6705
6645
  visible: boolean;
6706
6646
  camera?: {
@@ -6710,7 +6650,6 @@ export declare function floorStepFixture(separator?: boolean): {
6710
6650
  fov?: number | undefined;
6711
6651
  zoom?: number | undefined;
6712
6652
  } | undefined;
6713
- metadata: Record<string, unknown>;
6714
6653
  provenance?: {
6715
6654
  refs: {
6716
6655
  ns?: string | undefined;
@@ -6719,201 +6658,46 @@ export declare function floorStepFixture(separator?: boolean): {
6719
6658
  }[];
6720
6659
  lineage?: {
6721
6660
  op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6722
- fromIds: string[];
6723
- } | undefined;
6724
- } | undefined;
6725
- id: `site_${string}`;
6726
- polygon: {
6727
- type: "polygon";
6728
- points: [number, number][];
6729
- };
6730
- terrain?: {
6731
- type: "heightfield";
6732
- origin: [number, number];
6733
- spacing: number;
6734
- cols: number;
6735
- rows: number;
6736
- step: number;
6737
- heights: string;
6738
- } | undefined;
6739
- showGround?: boolean | undefined;
6740
- presentation?: {
6741
- theme?: string | undefined;
6742
- exposure?: number | undefined;
6743
- shading?: "rendered" | "solid" | undefined;
6744
- edges?: "off" | "soft" | "strong" | undefined;
6745
- shadows?: boolean | undefined;
6746
- lighting?: {
6747
- background?: string | undefined;
6748
- backgroundSky?: string | null | undefined;
6749
- ground?: string | undefined;
6750
- ambient?: {
6751
- color: string;
6752
- intensity: number;
6753
- } | undefined;
6754
- hemi?: {
6755
- sky: string;
6756
- ground: string;
6757
- intensity: number;
6758
- } | undefined;
6759
- lights?: {
6760
- color: string;
6761
- intensity: number;
6762
- position: [number, number, number];
6763
- target?: [number, number, number] | undefined;
6764
- castShadow?: boolean | undefined;
6765
- shadow?: {
6766
- intensity?: number | undefined;
6767
- bias?: number | undefined;
6768
- normalBias?: number | undefined;
6769
- radius?: number | undefined;
6770
- mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
6771
- camera?: {
6772
- left: number;
6773
- right: number;
6774
- top: number;
6775
- bottom: number;
6776
- near: number;
6777
- far: number;
6778
- } | undefined;
6779
- } | undefined;
6780
- }[] | undefined;
6781
- environment?: {
6782
- source: "gradient" | "none" | "room";
6783
- intensity: number;
6784
- } | undefined;
6785
- } | undefined;
6786
- postprocessing?: {
6787
- ambientOcclusion?: boolean | undefined;
6788
- colorGrading?: boolean | undefined;
6789
- } | undefined;
6790
- display?: {
6791
- mode?: "construction" | "finished" | "systems" | undefined;
6792
- families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
6793
- disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
6794
- xray?: boolean | undefined;
6795
- colorBy?: "material" | "service" | undefined;
6796
- } | undefined;
6797
- } | undefined;
6798
- address?: {
6799
- street?: string | undefined;
6800
- city?: string | undefined;
6801
- state?: string | undefined;
6802
- zip?: string | undefined;
6803
- } | undefined;
6804
- parcel?: {
6805
- apn?: string | undefined;
6806
- source?: string | undefined;
6807
- county?: string | undefined;
6808
- state?: string | undefined;
6809
- lotAreaSqFt?: number | undefined;
6810
- originLngLat?: [number, number] | undefined;
6811
- resolvedAt?: string | undefined;
6812
- layer?: string | undefined;
6813
- notes?: string[] | undefined;
6814
- } | undefined;
6815
- setbacks?: {
6816
- front: number;
6817
- side: number;
6818
- rear: number;
6819
- left?: number | undefined;
6820
- right?: number | undefined;
6821
- streetSide?: number | undefined;
6822
- } | undefined;
6823
- setbacksSource?: string | undefined;
6824
- zone?: string | undefined;
6825
- frontEdge?: number | undefined;
6826
- streetEdges?: number[] | undefined;
6827
- sightTriangleFt?: number | undefined;
6828
- northRotation?: number | undefined;
6829
- dossier?: {
6830
- [x: string]: unknown;
6831
- provider: string;
6832
- asOf: string;
6833
- point?: {
6834
- lat?: number | undefined;
6835
- lng?: number | undefined;
6836
- source?: string | undefined;
6837
- } | undefined;
6838
- address?: {
6839
- formatted?: string | undefined;
6840
- precision?: string | undefined;
6841
- } | undefined;
6842
- sections: Record<string, {
6843
- [x: string]: unknown;
6844
- status: string;
6845
- summary?: string | undefined;
6846
- reason?: string | undefined;
6847
- source?: {
6848
- name?: string | undefined;
6849
- kind?: string | undefined;
6850
- vintage?: string | undefined;
6851
- attribution?: string | undefined;
6852
- } | undefined;
6853
- }>;
6854
- parcel?: Record<string, unknown> | undefined;
6855
- flood?: Record<string, unknown> | undefined;
6856
- codeBasis?: Record<string, unknown> | undefined;
6857
- zoning?: Record<string, unknown> | undefined;
6858
- utilities?: Record<string, unknown> | undefined;
6859
- soils?: Record<string, unknown> | undefined;
6860
- wetlands?: Record<string, unknown> | undefined;
6861
- structures?: Record<string, unknown> | undefined;
6862
- elevation?: Record<string, unknown> | undefined;
6863
- boundaries?: Record<string, unknown> | undefined;
6864
- } | undefined;
6865
- contourIntervalIn?: number | undefined;
6866
- contours3d?: boolean | undefined;
6867
- terrainContours?: {
6868
- datum: string;
6869
- intervalFt: number;
6870
- source?: string | undefined;
6871
- lines: {
6872
- elevationFt: number;
6873
- points: [number, number][];
6874
- }[];
6875
- } | undefined;
6876
- wallTypes?: {
6877
- id: string;
6878
- label: string;
6879
- assembly: {
6880
- layers: {
6881
- id: string;
6882
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
6883
- thickness: number;
6884
- core?: true | undefined;
6885
- spacing?: number | undefined;
6886
- material?: string | undefined;
6887
- slot?: string | undefined;
6888
- returns?: boolean | undefined;
6889
- display?: "construction" | "finished" | undefined;
6890
- inset?: number | undefined;
6891
- bottom?: number | undefined;
6892
- lift?: number | undefined;
6893
- src?: string | undefined;
6894
- }[];
6895
- backing?: {
6896
- id: string;
6897
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
6898
- thickness: number;
6899
- core?: true | undefined;
6900
- spacing?: number | undefined;
6901
- material?: string | undefined;
6902
- slot?: string | undefined;
6903
- returns?: boolean | undefined;
6904
- display?: "construction" | "finished" | undefined;
6905
- inset?: number | undefined;
6906
- bottom?: number | undefined;
6907
- lift?: number | undefined;
6908
- src?: string | undefined;
6909
- }[] | undefined;
6910
- face?: "exterior" | "front" | undefined;
6911
- presetId?: string | undefined;
6912
- cavityInsulation?: string | undefined;
6913
- };
6914
- }[] | undefined;
6915
- children: string[];
6916
- type: "site";
6661
+ fromIds: string[];
6662
+ } | undefined;
6663
+ } | undefined;
6664
+ id: `unit_${string}`;
6665
+ name: string;
6666
+ kind: "apartment" | "commercial" | "common" | "hotel-room";
6667
+ members: `zone_${string}`[];
6668
+ color: string;
6669
+ metadata: Record<string, unknown>;
6670
+ type: "unit";
6671
+ } | {
6672
+ object: "node";
6673
+ name?: string | undefined;
6674
+ parentId: string | null;
6675
+ visible: boolean;
6676
+ camera?: {
6677
+ position: [number, number, number];
6678
+ target: [number, number, number];
6679
+ mode: "orthographic" | "perspective";
6680
+ fov?: number | undefined;
6681
+ zoom?: number | undefined;
6682
+ } | undefined;
6683
+ metadata: Record<string, unknown>;
6684
+ provenance?: {
6685
+ refs: {
6686
+ ns?: string | undefined;
6687
+ id: string;
6688
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6689
+ }[];
6690
+ lineage?: {
6691
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6692
+ fromIds: string[];
6693
+ } | undefined;
6694
+ } | undefined;
6695
+ id: `building_${string}`;
6696
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
6697
+ position: [number, number, number];
6698
+ rotation: [number, number, number];
6699
+ groundLevelId?: `level_${string}` | undefined;
6700
+ type: "building";
6917
6701
  } | {
6918
6702
  object: "node";
6919
6703
  name?: string | undefined;
@@ -7619,6 +7403,78 @@ export declare function floorStepFixture(separator?: boolean): {
7619
7403
  louverCount: number;
7620
7404
  backRatio: number;
7621
7405
  type: "eyebrow-vent";
7406
+ } | {
7407
+ object: "node";
7408
+ name?: string | undefined;
7409
+ parentId: string | null;
7410
+ visible: boolean;
7411
+ camera?: {
7412
+ position: [number, number, number];
7413
+ target: [number, number, number];
7414
+ mode: "orthographic" | "perspective";
7415
+ fov?: number | undefined;
7416
+ zoom?: number | undefined;
7417
+ } | undefined;
7418
+ metadata: Record<string, unknown>;
7419
+ provenance?: {
7420
+ refs: {
7421
+ ns?: string | undefined;
7422
+ id: string;
7423
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
7424
+ }[];
7425
+ lineage?: {
7426
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
7427
+ fromIds: string[];
7428
+ } | undefined;
7429
+ } | undefined;
7430
+ id: `gutter_${string}`;
7431
+ material?: {
7432
+ id?: string | undefined;
7433
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7434
+ properties?: {
7435
+ color: string;
7436
+ roughness: number;
7437
+ metalness: number;
7438
+ opacity: number;
7439
+ transparent: boolean;
7440
+ side: "back" | "double" | "front";
7441
+ } | undefined;
7442
+ texture?: {
7443
+ url: string;
7444
+ repeat?: [number, number] | undefined;
7445
+ scale?: number | undefined;
7446
+ offset?: [number, number] | undefined;
7447
+ normalMap?: string | undefined;
7448
+ normalScale?: number | undefined;
7449
+ bumpMap?: string | undefined;
7450
+ bumpScale?: number | undefined;
7451
+ } | undefined;
7452
+ } | undefined;
7453
+ slots?: Record<string, string> | undefined;
7454
+ materialPreset: string;
7455
+ roofSegmentId?: string | undefined;
7456
+ position: [number, number, number];
7457
+ rotation: number;
7458
+ length: number;
7459
+ arc?: {
7460
+ centerX: number;
7461
+ centerZ: number;
7462
+ radius: number;
7463
+ } | undefined;
7464
+ size: number;
7465
+ thickness: number;
7466
+ profile: "box" | "half-round" | "k-style";
7467
+ endCapLeft: boolean;
7468
+ endCapRight: boolean;
7469
+ hangerStyle: "none" | "strap";
7470
+ hangerSpacing: number;
7471
+ outlets: {
7472
+ id: string;
7473
+ offset: number;
7474
+ diameter: number;
7475
+ generatedBy?: "default-downspout" | undefined;
7476
+ }[];
7477
+ type: "gutter";
7622
7478
  } | {
7623
7479
  object: "node";
7624
7480
  name?: string | undefined;
@@ -7911,6 +7767,150 @@ export declare function floorStepFixture(separator?: boolean): {
7911
7767
  cutoutOffset: number;
7912
7768
  surfaceNormal?: [number, number, number] | undefined;
7913
7769
  type: "skylight";
7770
+ } | {
7771
+ object: "node";
7772
+ name?: string | undefined;
7773
+ parentId: string | null;
7774
+ visible: boolean;
7775
+ camera?: {
7776
+ position: [number, number, number];
7777
+ target: [number, number, number];
7778
+ mode: "orthographic" | "perspective";
7779
+ fov?: number | undefined;
7780
+ zoom?: number | undefined;
7781
+ } | undefined;
7782
+ metadata: Record<string, unknown>;
7783
+ provenance?: {
7784
+ refs: {
7785
+ ns?: string | undefined;
7786
+ id: string;
7787
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
7788
+ }[];
7789
+ lineage?: {
7790
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
7791
+ fromIds: string[];
7792
+ } | undefined;
7793
+ } | undefined;
7794
+ id: `dormer_${string}`;
7795
+ material?: {
7796
+ id?: string | undefined;
7797
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7798
+ properties?: {
7799
+ color: string;
7800
+ roughness: number;
7801
+ metalness: number;
7802
+ opacity: number;
7803
+ transparent: boolean;
7804
+ side: "back" | "double" | "front";
7805
+ } | undefined;
7806
+ texture?: {
7807
+ url: string;
7808
+ repeat?: [number, number] | undefined;
7809
+ scale?: number | undefined;
7810
+ offset?: [number, number] | undefined;
7811
+ normalMap?: string | undefined;
7812
+ normalScale?: number | undefined;
7813
+ bumpMap?: string | undefined;
7814
+ bumpScale?: number | undefined;
7815
+ } | undefined;
7816
+ } | undefined;
7817
+ materialPreset?: string | undefined;
7818
+ topMaterial?: {
7819
+ id?: string | undefined;
7820
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7821
+ properties?: {
7822
+ color: string;
7823
+ roughness: number;
7824
+ metalness: number;
7825
+ opacity: number;
7826
+ transparent: boolean;
7827
+ side: "back" | "double" | "front";
7828
+ } | undefined;
7829
+ texture?: {
7830
+ url: string;
7831
+ repeat?: [number, number] | undefined;
7832
+ scale?: number | undefined;
7833
+ offset?: [number, number] | undefined;
7834
+ normalMap?: string | undefined;
7835
+ normalScale?: number | undefined;
7836
+ bumpMap?: string | undefined;
7837
+ bumpScale?: number | undefined;
7838
+ } | undefined;
7839
+ } | undefined;
7840
+ topMaterialPreset?: string | undefined;
7841
+ sideMaterial?: {
7842
+ id?: string | undefined;
7843
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7844
+ properties?: {
7845
+ color: string;
7846
+ roughness: number;
7847
+ metalness: number;
7848
+ opacity: number;
7849
+ transparent: boolean;
7850
+ side: "back" | "double" | "front";
7851
+ } | undefined;
7852
+ texture?: {
7853
+ url: string;
7854
+ repeat?: [number, number] | undefined;
7855
+ scale?: number | undefined;
7856
+ offset?: [number, number] | undefined;
7857
+ normalMap?: string | undefined;
7858
+ normalScale?: number | undefined;
7859
+ bumpMap?: string | undefined;
7860
+ bumpScale?: number | undefined;
7861
+ } | undefined;
7862
+ } | undefined;
7863
+ sideMaterialPreset?: string | undefined;
7864
+ wallMaterial?: {
7865
+ id?: string | undefined;
7866
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7867
+ properties?: {
7868
+ color: string;
7869
+ roughness: number;
7870
+ metalness: number;
7871
+ opacity: number;
7872
+ transparent: boolean;
7873
+ side: "back" | "double" | "front";
7874
+ } | undefined;
7875
+ texture?: {
7876
+ url: string;
7877
+ repeat?: [number, number] | undefined;
7878
+ scale?: number | undefined;
7879
+ offset?: [number, number] | undefined;
7880
+ normalMap?: string | undefined;
7881
+ normalScale?: number | undefined;
7882
+ bumpMap?: string | undefined;
7883
+ bumpScale?: number | undefined;
7884
+ } | undefined;
7885
+ } | undefined;
7886
+ wallMaterialPreset?: string | undefined;
7887
+ roofSegmentId?: string | undefined;
7888
+ position: [number, number, number];
7889
+ rotation: number;
7890
+ width: number;
7891
+ depth: number;
7892
+ height: number;
7893
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
7894
+ roofHeight: number;
7895
+ shedHighSide: "back" | "front";
7896
+ wallSkirtHeight: number;
7897
+ windowWidth: number;
7898
+ windowHeight: number;
7899
+ windowOffsetX: number;
7900
+ windowOffsetY: number;
7901
+ windowFrameThickness: number;
7902
+ windowFrameDepth: number;
7903
+ windowColumns: number;
7904
+ windowRows: number;
7905
+ windowDividerThickness: number;
7906
+ windowShape: "arch" | "rectangle" | "rounded";
7907
+ windowArchHeight: number;
7908
+ windowCornerRadii: [number, number, number, number];
7909
+ windowSill: boolean;
7910
+ windowSillDepth: number;
7911
+ windowSillThickness: number;
7912
+ children: `window_${string}`[];
7913
+ type: "dormer";
7914
7914
  } | {
7915
7915
  object: "node";
7916
7916
  name?: string | undefined;