@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
@@ -324,45 +324,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
324
324
  fromIds: string[];
325
325
  } | undefined;
326
326
  } | undefined;
327
- id: `scan_${string}`;
328
- url: string | null;
329
- captureSession: {
330
- sessionId: string;
331
- schemaVersion?: number | undefined;
332
- revisionId?: string | undefined;
333
- manifestUrl?: string | undefined;
334
- } | null;
335
- layers: Record<string, boolean>;
336
- position: [number, number, number];
337
- rotation: [number, number, number];
338
- scale: number;
339
- opacity: number;
340
- type: "scan";
341
- } | {
342
- object: "node";
343
- name?: string | undefined;
344
- parentId: string | null;
345
- visible: boolean;
346
- camera?: {
347
- position: [number, number, number];
348
- target: [number, number, number];
349
- mode: "orthographic" | "perspective";
350
- fov?: number | undefined;
351
- zoom?: number | undefined;
352
- } | undefined;
353
- metadata: Record<string, unknown>;
354
- provenance?: {
355
- refs: {
356
- ns?: string | undefined;
357
- id: string;
358
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
359
- }[];
360
- lineage?: {
361
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
362
- fromIds: string[];
363
- } | undefined;
364
- } | undefined;
365
- id: `slab_${string}`;
327
+ id: `rseg_${string}`;
366
328
  material?: {
367
329
  id?: string | undefined;
368
330
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -386,259 +348,223 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
386
348
  } | undefined;
387
349
  } | undefined;
388
350
  materialPreset?: string | undefined;
389
- slots?: Record<string, string> | undefined;
390
- polygon: [number, number][];
391
- holes: [number, number][][];
392
- holeMetadata: {
393
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
394
- openingId?: string | undefined;
395
- stairId?: string | undefined;
396
- elevatorId?: string | undefined;
397
- }[];
398
- elevation: number;
399
- floorHeight?: number | undefined;
400
- referenceFloorElevation?: number | undefined;
401
- foundation?: {
402
- type: "none" | "solid";
403
- material?: string | {
404
- id?: string | undefined;
405
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
406
- properties?: {
407
- color: string;
408
- roughness: number;
409
- metalness: number;
410
- opacity: number;
411
- transparent: boolean;
412
- side: "back" | "double" | "front";
413
- } | undefined;
414
- texture?: {
415
- url: string;
416
- repeat?: [number, number] | undefined;
417
- scale?: number | undefined;
418
- offset?: [number, number] | undefined;
419
- normalMap?: string | undefined;
420
- normalScale?: number | undefined;
421
- bumpMap?: string | undefined;
422
- bumpScale?: number | undefined;
423
- } | undefined;
351
+ topMaterial?: {
352
+ id?: string | undefined;
353
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
354
+ properties?: {
355
+ color: string;
356
+ roughness: number;
357
+ metalness: number;
358
+ opacity: number;
359
+ transparent: boolean;
360
+ side: "back" | "double" | "front";
361
+ } | undefined;
362
+ texture?: {
363
+ url: string;
364
+ repeat?: [number, number] | undefined;
365
+ scale?: number | undefined;
366
+ offset?: [number, number] | undefined;
367
+ normalMap?: string | undefined;
368
+ normalScale?: number | undefined;
369
+ bumpMap?: string | undefined;
370
+ bumpScale?: number | undefined;
424
371
  } | undefined;
425
372
  } | undefined;
426
- thickness: number;
427
- recessed: boolean;
428
- recessedRimElevation?: number | undefined;
429
- fillToTerrain?: boolean | undefined;
430
- boundary?: "auto" | undefined;
431
- support?: "open" | undefined;
432
- plateRole?: "base" | "platform" | "sunken" | undefined;
433
- railing?: {
434
- start: [number, number];
435
- end: [number, number];
436
- }[] | undefined;
437
- zoneIds?: string[] | undefined;
438
- associatedZoneIds?: string[] | undefined;
439
- autoFromWalls: boolean;
440
- surfaceScript?: {
441
- kind: "script";
442
- meta?: {
443
- description?: string | undefined;
444
- category?: string | undefined;
445
- tags?: string[] | undefined;
446
- parent?: string | undefined;
373
+ topMaterialPreset?: string | undefined;
374
+ edgeMaterial?: {
375
+ id?: string | undefined;
376
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
377
+ properties?: {
378
+ color: string;
379
+ roughness: number;
380
+ metalness: number;
381
+ opacity: number;
382
+ transparent: boolean;
383
+ side: "back" | "double" | "front";
447
384
  } | undefined;
448
- language: "bpy" | "three";
449
- script: string;
450
- params: Record<string, string | number | boolean>;
451
- artifact: string;
452
- manifest: {
453
- bounds: {
454
- min: [number, number, number];
455
- max: [number, number, number];
456
- };
457
- params: {
458
- id: string;
459
- label?: string | undefined;
460
- kind: "boolean" | "number" | "string";
461
- default: string | number | boolean;
462
- min?: number | undefined;
463
- max?: number | undefined;
464
- step?: number | undefined;
465
- unit?: string | undefined;
466
- options?: string[] | undefined;
467
- }[];
468
- parts: {
469
- id: string;
470
- label?: string | undefined;
471
- type?: string | undefined;
472
- bounds?: {
473
- min: [number, number, number];
474
- max: [number, number, number];
475
- } | undefined;
476
- }[];
477
- surfaces: {
478
- part?: string | undefined;
479
- y: number;
480
- polygon: [number, number][];
481
- }[];
482
- slots: {
483
- id: string;
484
- label?: string | undefined;
485
- color?: string | undefined;
486
- roughness?: number | undefined;
487
- metalness?: number | undefined;
488
- transparent?: boolean | undefined;
489
- emissive?: boolean | undefined;
490
- }[];
491
- anchors: {
492
- id: string;
493
- position: [number, number, number];
494
- normal?: [number, number, number] | undefined;
495
- }[];
496
- lights: {
497
- id: string;
498
- position: [number, number, number];
499
- color: string;
500
- intensity: number;
501
- distance?: number | undefined;
502
- spot?: {
503
- direction: [number, number, number];
504
- angle: number;
505
- softness: number;
506
- } | undefined;
507
- shadows?: boolean | undefined;
508
- glow?: {
509
- size: number;
510
- strength: number;
511
- } | undefined;
512
- }[];
513
- undersides: {
514
- part?: string | undefined;
515
- polygon: [number, number][];
516
- plane: [number, number, number, number];
517
- }[];
518
- animations: {
519
- name: string;
520
- duration: number;
521
- }[];
522
- cutters?: {
523
- host: "ceiling" | "mounted" | "slab" | "wall";
524
- polygon: number[][];
525
- minY: number;
526
- maxY: number;
527
- }[] | undefined;
528
- cutout: boolean;
529
- collider: boolean;
530
- shape?: {
531
- tolerance: number;
532
- bands: {
533
- y0: number;
534
- y1: number;
535
- polygons: {
536
- outer: [number, number][];
537
- holes?: [number, number][][] | undefined;
538
- }[];
539
- }[];
540
- } | undefined;
541
- triangles: number;
542
- coverage?: number | undefined;
543
- uncovered?: {
544
- min: [number, number];
545
- max: [number, number];
546
- }[] | undefined;
547
- };
548
- images?: {
549
- artifact: string;
550
- thumbnail: string;
551
- floorPlan: string;
385
+ texture?: {
386
+ url: string;
387
+ repeat?: [number, number] | undefined;
388
+ scale?: number | undefined;
389
+ offset?: [number, number] | undefined;
390
+ normalMap?: string | undefined;
391
+ normalScale?: number | undefined;
392
+ bumpMap?: string | undefined;
393
+ bumpScale?: number | undefined;
552
394
  } | undefined;
553
- inputs: string;
554
- } | undefined;
555
- type: "slab";
556
- } | {
557
- object: "node";
558
- name?: string | undefined;
559
- parentId: string | null;
560
- visible: boolean;
561
- camera?: {
562
- position: [number, number, number];
563
- target: [number, number, number];
564
- mode: "orthographic" | "perspective";
565
- fov?: number | undefined;
566
- zoom?: number | undefined;
567
395
  } | undefined;
568
- metadata: Record<string, unknown>;
569
- provenance?: {
570
- refs: {
571
- ns?: string | undefined;
572
- id: string;
573
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
574
- }[];
575
- lineage?: {
576
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
577
- fromIds: string[];
396
+ edgeMaterialPreset?: string | undefined;
397
+ wallMaterial?: {
398
+ id?: string | undefined;
399
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
400
+ properties?: {
401
+ color: string;
402
+ roughness: number;
403
+ metalness: number;
404
+ opacity: number;
405
+ transparent: boolean;
406
+ side: "back" | "double" | "front";
407
+ } | undefined;
408
+ texture?: {
409
+ url: string;
410
+ repeat?: [number, number] | undefined;
411
+ scale?: number | undefined;
412
+ offset?: [number, number] | undefined;
413
+ normalMap?: string | undefined;
414
+ normalScale?: number | undefined;
415
+ bumpMap?: string | undefined;
416
+ bumpScale?: number | undefined;
578
417
  } | undefined;
579
418
  } | undefined;
580
- id: `structural-grid_${string}`;
581
- start: [number, number];
582
- end: [number, number];
583
- label: string;
584
- showStartBubble: boolean;
585
- showEndBubble: boolean;
586
- type: "structural-grid";
587
- } | {
588
- object: "node";
589
- parentId: string | null;
590
- visible: boolean;
591
- camera?: {
592
- position: [number, number, number];
593
- target: [number, number, number];
594
- mode: "orthographic" | "perspective";
595
- fov?: number | undefined;
596
- zoom?: number | undefined;
597
- } | undefined;
598
- provenance?: {
599
- refs: {
600
- ns?: string | undefined;
601
- id: string;
602
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
419
+ wallMaterialPreset?: string | undefined;
420
+ position: [number, number, number];
421
+ rotation: number;
422
+ roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
423
+ barrelRise?: number | undefined;
424
+ barrelSegments?: number | undefined;
425
+ roofSystem?: "glazed" | "standard" | undefined;
426
+ glazing?: {
427
+ across: {
428
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
429
+ count: number;
430
+ spacing: number;
431
+ alignment: "center" | "end" | "start";
432
+ };
433
+ along: {
434
+ layout: "count" | "fixed-spacing" | "maximum-spacing";
435
+ count: number;
436
+ spacing: number;
437
+ alignment: "center" | "end" | "start";
438
+ };
439
+ frameWidth: number;
440
+ frameDepth: number;
441
+ glassThickness: number;
442
+ frameColor: string;
443
+ glassColor: string;
444
+ glassOpacity: number;
445
+ glassRoughness: number;
446
+ glazedEnds: boolean;
447
+ panelType: "empty" | "glass" | "solid";
448
+ panels: {
449
+ face: string;
450
+ column: number;
451
+ row: number;
452
+ type: "empty" | "glass" | "solid";
603
453
  }[];
604
- lineage?: {
605
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
606
- fromIds: string[];
454
+ } | undefined;
455
+ slots?: Record<string, string> | undefined;
456
+ width: number;
457
+ depth: number;
458
+ conicalStartAngle?: number | undefined;
459
+ conicalSweepAngle?: number | undefined;
460
+ conicalFullCircle?: boolean | undefined;
461
+ trim: {
462
+ left: number;
463
+ right: number;
464
+ front: number;
465
+ back: number;
466
+ frontLeft: number;
467
+ frontRight: number;
468
+ backLeft: number;
469
+ backRight: number;
470
+ frontLeftX: number;
471
+ frontLeftZ: number;
472
+ frontRightX: number;
473
+ frontRightZ: number;
474
+ backLeftX: number;
475
+ backLeftZ: number;
476
+ backRightX: number;
477
+ backRightZ: number;
478
+ };
479
+ wallHeight: number;
480
+ pitch: number;
481
+ wallThickness: number;
482
+ deckThickness: number;
483
+ overhang: number;
484
+ gableOverhang?: number | undefined;
485
+ shingleThickness: number;
486
+ buildUp?: {
487
+ presetId?: string | undefined;
488
+ roofing: {
489
+ kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
490
+ thickness: number;
491
+ name?: string | undefined;
492
+ };
493
+ underlayment?: {
494
+ kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
495
+ thickness: number;
496
+ name?: string | undefined;
497
+ } | undefined;
498
+ sheathing: {
499
+ kind: "osb" | "plywood";
500
+ thickness: number;
501
+ name?: string | undefined;
502
+ };
503
+ structure: {
504
+ system: "rafters" | "trusses";
505
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
506
+ spacing: number;
507
+ };
508
+ insulation?: {
509
+ kind: "batt" | "blown" | "rigid";
510
+ thickness: number;
511
+ name?: string | undefined;
512
+ } | undefined;
513
+ finish?: {
514
+ kind: "drywall" | "plaster" | "wood-plank";
515
+ thickness: number;
516
+ name?: string | undefined;
607
517
  } | undefined;
608
518
  } | undefined;
609
- id: `unit_${string}`;
610
- name: string;
611
- kind: "apartment" | "commercial" | "common" | "hotel-room";
612
- members: `zone_${string}`[];
613
- color: string;
614
- metadata: Record<string, unknown>;
615
- type: "unit";
616
- } | {
617
- object: "node";
618
- name?: string | undefined;
619
- parentId: string | null;
620
- visible: boolean;
621
- camera?: {
519
+ arc?: {
520
+ centerX: number;
521
+ centerZ: number;
522
+ radius: number;
523
+ } | undefined;
524
+ shedSideInfillSpan?: number | undefined;
525
+ shedSideInfillMinX?: number | undefined;
526
+ shedSideInfillMaxX?: number | undefined;
527
+ shedFootprintPieces?: [number, number][][] | undefined;
528
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
529
+ shedJointFrame?: {
622
530
  position: [number, number, number];
623
- target: [number, number, number];
624
- mode: "orthographic" | "perspective";
625
- fov?: number | undefined;
626
- zoom?: number | undefined;
531
+ rotation: number;
627
532
  } | undefined;
628
- metadata: Record<string, unknown>;
629
- provenance?: {
630
- refs: {
631
- ns?: string | undefined;
632
- id: string;
633
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
634
- }[];
635
- lineage?: {
636
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
637
- fromIds: string[];
533
+ shedJointOwnerId?: string | undefined;
534
+ shedJointNeighborIds?: string[] | undefined;
535
+ shedJointScopeId?: string | undefined;
536
+ managedByParent: boolean;
537
+ wallShell: "auto" | "include" | "omit";
538
+ shedInsetEndPanels: boolean;
539
+ fascia?: boolean | undefined;
540
+ eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
541
+ fasciaHighEdge?: boolean | undefined;
542
+ fasciaHeight?: number | undefined;
543
+ fasciaDepth?: number | undefined;
544
+ fasciaMaterial?: {
545
+ id?: string | undefined;
546
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
547
+ properties?: {
548
+ color: string;
549
+ roughness: number;
550
+ metalness: number;
551
+ opacity: number;
552
+ transparent: boolean;
553
+ side: "back" | "double" | "front";
554
+ } | undefined;
555
+ texture?: {
556
+ url: string;
557
+ repeat?: [number, number] | undefined;
558
+ scale?: number | undefined;
559
+ offset?: [number, number] | undefined;
560
+ normalMap?: string | undefined;
561
+ normalScale?: number | undefined;
562
+ bumpMap?: string | undefined;
563
+ bumpScale?: number | undefined;
638
564
  } | undefined;
639
565
  } | undefined;
640
- id: `cupola_${string}`;
641
- material?: {
566
+ fasciaMaterialPreset?: string | undefined;
567
+ heelMaterial?: {
642
568
  id?: string | undefined;
643
569
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
644
570
  properties?: {
@@ -660,94 +586,64 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
660
586
  bumpScale?: number | undefined;
661
587
  } | undefined;
662
588
  } | undefined;
663
- slots?: Record<string, string> | undefined;
664
- materialPreset: string;
665
- roofSegmentId?: string | undefined;
666
- position: [number, number, number];
667
- rotation: number;
668
- width: number;
669
- depth: number;
670
- height: number;
671
- roofStyle: "dome" | "pyramid";
672
- finial: boolean;
673
- type: "cupola";
674
- } | {
675
- object: "node";
676
- name?: string | undefined;
677
- parentId: string | null;
678
- visible: boolean;
679
- camera?: {
680
- position: [number, number, number];
681
- target: [number, number, number];
682
- mode: "orthographic" | "perspective";
683
- fov?: number | undefined;
684
- zoom?: number | undefined;
685
- } | undefined;
686
- metadata: Record<string, unknown>;
687
- provenance?: {
688
- refs: {
689
- ns?: string | undefined;
690
- id: string;
691
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
692
- }[];
693
- lineage?: {
694
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
695
- fromIds: string[];
589
+ heelMaterialPreset?: string | undefined;
590
+ gableLeftMaterial?: {
591
+ id?: string | undefined;
592
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
593
+ properties?: {
594
+ color: string;
595
+ roughness: number;
596
+ metalness: number;
597
+ opacity: number;
598
+ transparent: boolean;
599
+ side: "back" | "double" | "front";
600
+ } | undefined;
601
+ texture?: {
602
+ url: string;
603
+ repeat?: [number, number] | undefined;
604
+ scale?: number | undefined;
605
+ offset?: [number, number] | undefined;
606
+ normalMap?: string | undefined;
607
+ normalScale?: number | undefined;
608
+ bumpMap?: string | undefined;
609
+ bumpScale?: number | undefined;
696
610
  } | undefined;
697
611
  } | undefined;
698
- matchFenceStyle?: boolean | undefined;
699
- matchFenceHeight?: boolean | undefined;
700
- leafType?: "double" | "single" | undefined;
701
- style?: "guard" | "horizontal" | "match" | "picket" | "privacy" | "rail" | "slat" | undefined;
702
- height?: number | undefined;
703
- clearance?: number | undefined;
704
- thickness?: number | undefined;
705
- frameWidth?: number | undefined;
706
- spacing?: number | undefined;
707
- boardWidth?: number | undefined;
708
- hinge?: "left" | "right" | undefined;
709
- swing?: "inward" | "outward" | undefined;
710
- openAngle?: number | undefined;
711
- leafSplit?: number | undefined;
712
- brace?: "cross" | "diagonal" | "none" | undefined;
713
- showHardware?: boolean | undefined;
714
- showPosts?: boolean | undefined;
715
- id: `fence-gate_${string}`;
716
- center: number;
717
- width: number;
718
- type: "fence-gate";
719
- } | {
720
- object: "node";
721
- name?: string | undefined;
722
- parentId: string | null;
723
- visible: boolean;
724
- camera?: {
725
- position: [number, number, number];
726
- target: [number, number, number];
727
- mode: "orthographic" | "perspective";
728
- fov?: number | undefined;
729
- zoom?: number | undefined;
730
- } | undefined;
731
- metadata: Record<string, unknown>;
732
- provenance?: {
733
- refs: {
734
- ns?: string | undefined;
735
- id: string;
736
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
737
- }[];
738
- lineage?: {
739
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
740
- fromIds: string[];
612
+ gableLeftMaterialPreset?: string | undefined;
613
+ gableRightMaterial?: {
614
+ id?: string | undefined;
615
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
616
+ properties?: {
617
+ color: string;
618
+ roughness: number;
619
+ metalness: number;
620
+ opacity: number;
621
+ transparent: boolean;
622
+ side: "back" | "double" | "front";
623
+ } | undefined;
624
+ texture?: {
625
+ url: string;
626
+ repeat?: [number, number] | undefined;
627
+ scale?: number | undefined;
628
+ offset?: [number, number] | undefined;
629
+ normalMap?: string | undefined;
630
+ normalScale?: number | undefined;
631
+ bumpMap?: string | undefined;
632
+ bumpScale?: number | undefined;
741
633
  } | undefined;
742
634
  } | undefined;
743
- center: number;
744
- width: number;
745
- matchFenceStyle?: boolean | undefined;
746
- matchFenceHeight?: boolean | undefined;
747
- height?: number | undefined;
748
- showPosts: boolean;
749
- id: `fence-opening_${string}`;
750
- type: "fence-opening";
635
+ gableRightMaterialPreset?: string | undefined;
636
+ gambrelLowerWidthRatio: number;
637
+ gambrelLowerHeightRatio: number;
638
+ mansardSteepWidthRatio: number;
639
+ mansardSteepHeightRatio: number;
640
+ dutchHipWidthRatio: number;
641
+ dutchHipHeightRatio: number;
642
+ dutchWaistLengthRatio: number;
643
+ dutchGabletRake: number;
644
+ dutchTopRakeThickness: number;
645
+ children: string[];
646
+ type: "roof-segment";
751
647
  } | {
752
648
  object: "node";
753
649
  name?: string | undefined;
@@ -772,7 +668,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
772
668
  fromIds: string[];
773
669
  } | undefined;
774
670
  } | undefined;
775
- id: `skylight_${string}`;
671
+ id: `roof_${string}`;
776
672
  material?: {
777
673
  id?: string | undefined;
778
674
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -796,7 +692,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
796
692
  } | undefined;
797
693
  } | undefined;
798
694
  materialPreset?: string | undefined;
799
- glassMaterial?: {
695
+ topMaterial?: {
800
696
  id?: string | undefined;
801
697
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
802
698
  properties?: {
@@ -818,31 +714,126 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
818
714
  bumpScale?: number | undefined;
819
715
  } | undefined;
820
716
  } | undefined;
821
- glassMaterialPreset?: string | undefined;
822
- roofSegmentId?: string | undefined;
717
+ topMaterialPreset?: string | undefined;
718
+ edgeMaterial?: {
719
+ id?: string | undefined;
720
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
721
+ properties?: {
722
+ color: string;
723
+ roughness: number;
724
+ metalness: number;
725
+ opacity: number;
726
+ transparent: boolean;
727
+ side: "back" | "double" | "front";
728
+ } | undefined;
729
+ texture?: {
730
+ url: string;
731
+ repeat?: [number, number] | undefined;
732
+ scale?: number | undefined;
733
+ offset?: [number, number] | undefined;
734
+ normalMap?: string | undefined;
735
+ normalScale?: number | undefined;
736
+ bumpMap?: string | undefined;
737
+ bumpScale?: number | undefined;
738
+ } | undefined;
739
+ } | undefined;
740
+ edgeMaterialPreset?: string | undefined;
741
+ wallMaterial?: {
742
+ id?: string | undefined;
743
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
744
+ properties?: {
745
+ color: string;
746
+ roughness: number;
747
+ metalness: number;
748
+ opacity: number;
749
+ transparent: boolean;
750
+ side: "back" | "double" | "front";
751
+ } | undefined;
752
+ texture?: {
753
+ url: string;
754
+ repeat?: [number, number] | undefined;
755
+ scale?: number | undefined;
756
+ offset?: [number, number] | undefined;
757
+ normalMap?: string | undefined;
758
+ normalScale?: number | undefined;
759
+ bumpMap?: string | undefined;
760
+ bumpScale?: number | undefined;
761
+ } | undefined;
762
+ } | undefined;
763
+ wallMaterialPreset?: string | undefined;
764
+ heelMaterial?: {
765
+ id?: string | undefined;
766
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
767
+ properties?: {
768
+ color: string;
769
+ roughness: number;
770
+ metalness: number;
771
+ opacity: number;
772
+ transparent: boolean;
773
+ side: "back" | "double" | "front";
774
+ } | undefined;
775
+ texture?: {
776
+ url: string;
777
+ repeat?: [number, number] | undefined;
778
+ scale?: number | undefined;
779
+ offset?: [number, number] | undefined;
780
+ normalMap?: string | undefined;
781
+ normalScale?: number | undefined;
782
+ bumpMap?: string | undefined;
783
+ bumpScale?: number | undefined;
784
+ } | undefined;
785
+ } | undefined;
786
+ heelMaterialPreset?: string | undefined;
823
787
  position: [number, number, number];
824
788
  rotation: number;
825
- width: number;
826
- height: number;
827
- frameThickness: number;
828
- frameDepth: number;
829
- skylightType: "flat" | "lantern" | "opening" | "sliding" | "walk-on";
830
- glassThickness: number;
831
- lanternHeight: number;
832
- lanternTopScale: number;
833
- openingAngle: number;
834
- openingSide: "bottom" | "left" | "right" | "top";
835
- operationState: number;
836
- motorHousing: boolean;
837
- slideFraction: number;
838
- slideDirection: "x" | "z";
839
- trackWidth: number;
840
- motorHousingSize: number;
841
- curb: boolean;
842
- curbHeight: number;
843
- cutoutOffset: number;
844
- surfaceNormal?: [number, number, number] | undefined;
845
- type: "skylight";
789
+ support: {
790
+ kind: "level";
791
+ } | {
792
+ kind: "walls";
793
+ } | {
794
+ kind: "roof";
795
+ roofSegmentId: `rseg_${string}`;
796
+ localPosition: [number, number];
797
+ curbHeight: number;
798
+ };
799
+ assembly?: {
800
+ layers: {
801
+ id: string;
802
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
803
+ thickness: number;
804
+ core?: true | undefined;
805
+ spacing?: number | undefined;
806
+ material?: string | undefined;
807
+ slot?: string | undefined;
808
+ returns?: boolean | undefined;
809
+ display?: "construction" | "finished" | undefined;
810
+ inset?: number | undefined;
811
+ bottom?: number | undefined;
812
+ lift?: number | undefined;
813
+ src?: string | undefined;
814
+ }[];
815
+ backing?: {
816
+ id: string;
817
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
818
+ thickness: number;
819
+ core?: true | undefined;
820
+ spacing?: number | undefined;
821
+ material?: string | undefined;
822
+ slot?: string | undefined;
823
+ returns?: boolean | undefined;
824
+ display?: "construction" | "finished" | undefined;
825
+ inset?: number | undefined;
826
+ bottom?: number | undefined;
827
+ lift?: number | undefined;
828
+ src?: string | undefined;
829
+ }[] | undefined;
830
+ face?: "exterior" | "front" | undefined;
831
+ presetId?: string | undefined;
832
+ cavityInsulation?: string | undefined;
833
+ } | undefined;
834
+ slots?: Record<string, string> | undefined;
835
+ children: string[];
836
+ type: "roof";
846
837
  } | {
847
838
  object: "node";
848
839
  name?: string | undefined;
@@ -867,421 +858,47 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
867
858
  fromIds: string[];
868
859
  } | undefined;
869
860
  } | undefined;
870
- id: `site_${string}`;
871
- polygon: {
872
- type: "polygon";
873
- points: [number, number][];
874
- };
875
- terrain?: {
876
- type: "heightfield";
877
- origin: [number, number];
878
- spacing: number;
879
- cols: number;
880
- rows: number;
881
- step: number;
882
- heights: string;
883
- } | undefined;
884
- showGround?: boolean | undefined;
885
- presentation?: {
886
- theme?: string | undefined;
887
- exposure?: number | undefined;
888
- shading?: "rendered" | "solid" | undefined;
889
- edges?: "off" | "soft" | "strong" | undefined;
890
- shadows?: boolean | undefined;
891
- lighting?: {
892
- background?: string | undefined;
893
- backgroundSky?: string | null | undefined;
894
- ground?: string | undefined;
895
- ambient?: {
896
- color: string;
897
- intensity: number;
898
- } | undefined;
899
- hemi?: {
900
- sky: string;
901
- ground: string;
902
- intensity: number;
903
- } | undefined;
904
- lights?: {
905
- color: string;
906
- intensity: number;
907
- position: [number, number, number];
908
- target?: [number, number, number] | undefined;
909
- castShadow?: boolean | undefined;
910
- shadow?: {
911
- intensity?: number | undefined;
912
- bias?: number | undefined;
913
- normalBias?: number | undefined;
914
- radius?: number | undefined;
915
- mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
916
- camera?: {
917
- left: number;
918
- right: number;
919
- top: number;
920
- bottom: number;
921
- near: number;
922
- far: number;
923
- } | undefined;
924
- } | undefined;
925
- }[] | undefined;
926
- environment?: {
927
- source: "gradient" | "none" | "room";
928
- intensity: number;
929
- } | undefined;
930
- } | undefined;
931
- postprocessing?: {
932
- ambientOcclusion?: boolean | undefined;
933
- colorGrading?: boolean | undefined;
934
- } | undefined;
935
- display?: {
936
- mode?: "construction" | "finished" | "systems" | undefined;
937
- families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
938
- disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
939
- xray?: boolean | undefined;
940
- colorBy?: "material" | "service" | undefined;
941
- } | undefined;
942
- } | undefined;
943
- address?: {
944
- street?: string | undefined;
945
- city?: string | undefined;
946
- state?: string | undefined;
947
- zip?: string | undefined;
948
- } | undefined;
949
- parcel?: {
950
- apn?: string | undefined;
951
- source?: string | undefined;
952
- county?: string | undefined;
953
- state?: string | undefined;
954
- lotAreaSqFt?: number | undefined;
955
- originLngLat?: [number, number] | undefined;
956
- resolvedAt?: string | undefined;
957
- layer?: string | undefined;
958
- notes?: string[] | undefined;
959
- } | undefined;
960
- setbacks?: {
961
- front: number;
962
- side: number;
963
- rear: number;
964
- left?: number | undefined;
965
- right?: number | undefined;
966
- streetSide?: number | undefined;
967
- } | undefined;
968
- setbacksSource?: string | undefined;
969
- zone?: string | undefined;
970
- frontEdge?: number | undefined;
971
- streetEdges?: number[] | undefined;
972
- sightTriangleFt?: number | undefined;
973
- northRotation?: number | undefined;
974
- dossier?: {
975
- [x: string]: unknown;
976
- provider: string;
977
- asOf: string;
978
- point?: {
979
- lat?: number | undefined;
980
- lng?: number | undefined;
981
- source?: string | undefined;
861
+ id: `shelf_${string}`;
862
+ children: string[];
863
+ position: [number, number, number];
864
+ rotation: [number, number, number];
865
+ supportSlabId?: string | undefined;
866
+ width: number;
867
+ depth: number;
868
+ thickness: number;
869
+ height: number;
870
+ style: "bookshelf" | "cubby" | "open-rack" | "wall-shelf";
871
+ rows: number;
872
+ columns: number;
873
+ withBack: boolean;
874
+ withSides: boolean;
875
+ withBottom: boolean;
876
+ bracketStyle: "hidden" | "industrial" | "minimal";
877
+ material?: {
878
+ id?: string | undefined;
879
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
880
+ properties?: {
881
+ color: string;
882
+ roughness: number;
883
+ metalness: number;
884
+ opacity: number;
885
+ transparent: boolean;
886
+ side: "back" | "double" | "front";
982
887
  } | undefined;
983
- address?: {
984
- formatted?: string | undefined;
985
- precision?: string | undefined;
888
+ texture?: {
889
+ url: string;
890
+ repeat?: [number, number] | undefined;
891
+ scale?: number | undefined;
892
+ offset?: [number, number] | undefined;
893
+ normalMap?: string | undefined;
894
+ normalScale?: number | undefined;
895
+ bumpMap?: string | undefined;
896
+ bumpScale?: number | undefined;
986
897
  } | undefined;
987
- sections: Record<string, {
988
- [x: string]: unknown;
989
- status: string;
990
- summary?: string | undefined;
991
- reason?: string | undefined;
992
- source?: {
993
- name?: string | undefined;
994
- kind?: string | undefined;
995
- vintage?: string | undefined;
996
- attribution?: string | undefined;
997
- } | undefined;
998
- }>;
999
- parcel?: Record<string, unknown> | undefined;
1000
- flood?: Record<string, unknown> | undefined;
1001
- codeBasis?: Record<string, unknown> | undefined;
1002
- zoning?: Record<string, unknown> | undefined;
1003
- utilities?: Record<string, unknown> | undefined;
1004
- soils?: Record<string, unknown> | undefined;
1005
- wetlands?: Record<string, unknown> | undefined;
1006
- structures?: Record<string, unknown> | undefined;
1007
- elevation?: Record<string, unknown> | undefined;
1008
- boundaries?: Record<string, unknown> | undefined;
1009
- } | undefined;
1010
- contourIntervalIn?: number | undefined;
1011
- contours3d?: boolean | undefined;
1012
- terrainContours?: {
1013
- datum: string;
1014
- intervalFt: number;
1015
- source?: string | undefined;
1016
- lines: {
1017
- elevationFt: number;
1018
- points: [number, number][];
1019
- }[];
1020
898
  } | undefined;
1021
- wallTypes?: {
1022
- id: string;
1023
- label: string;
1024
- assembly: {
1025
- layers: {
1026
- id: string;
1027
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1028
- thickness: number;
1029
- core?: true | undefined;
1030
- spacing?: number | undefined;
1031
- material?: string | undefined;
1032
- slot?: string | undefined;
1033
- returns?: boolean | undefined;
1034
- display?: "construction" | "finished" | undefined;
1035
- inset?: number | undefined;
1036
- bottom?: number | undefined;
1037
- lift?: number | undefined;
1038
- src?: string | undefined;
1039
- }[];
1040
- backing?: {
1041
- id: string;
1042
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
1043
- thickness: number;
1044
- core?: true | undefined;
1045
- spacing?: number | undefined;
1046
- material?: string | undefined;
1047
- slot?: string | undefined;
1048
- returns?: boolean | undefined;
1049
- display?: "construction" | "finished" | undefined;
1050
- inset?: number | undefined;
1051
- bottom?: number | undefined;
1052
- lift?: number | undefined;
1053
- src?: string | undefined;
1054
- }[] | undefined;
1055
- face?: "exterior" | "front" | undefined;
1056
- presetId?: string | undefined;
1057
- cavityInsulation?: string | undefined;
1058
- };
1059
- }[] | undefined;
1060
- children: string[];
1061
- type: "site";
1062
- } | {
1063
- object: "node";
1064
- name?: string | undefined;
1065
- parentId: string | null;
1066
- visible: boolean;
1067
- camera?: {
1068
- position: [number, number, number];
1069
- target: [number, number, number];
1070
- mode: "orthographic" | "perspective";
1071
- fov?: number | undefined;
1072
- zoom?: number | undefined;
1073
- } | undefined;
1074
- metadata: Record<string, unknown>;
1075
- provenance?: {
1076
- refs: {
1077
- ns?: string | undefined;
1078
- id: string;
1079
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1080
- }[];
1081
- lineage?: {
1082
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1083
- fromIds: string[];
1084
- } | undefined;
1085
- } | undefined;
1086
- type: "item";
1087
- id: `item_${string}`;
1088
- position: [number, number, number];
1089
- rotation: [number, number, number];
1090
- scale: [number, number, number];
1091
- side?: "back" | "front" | undefined;
1092
- children: string[];
1093
- wallId?: string | undefined;
1094
- wallT?: number | undefined;
1095
- roofSegmentId?: string | undefined;
1096
- roofFace?: "back" | "front" | "left" | "right" | undefined;
1097
- blockFaceId?: string | undefined;
1098
- supportSlabId?: string | undefined;
1099
- collectionIds?: `collection_${string}`[] | undefined;
1100
- slots?: Record<string, string> | undefined;
1101
- source?: {
1102
- kind: "script";
1103
- meta?: {
1104
- description?: string | undefined;
1105
- category?: string | undefined;
1106
- tags?: string[] | undefined;
1107
- parent?: string | undefined;
1108
- } | undefined;
1109
- language: "bpy" | "three";
1110
- script: string;
1111
- params: Record<string, string | number | boolean>;
1112
- artifact: string;
1113
- manifest: {
1114
- bounds: {
1115
- min: [number, number, number];
1116
- max: [number, number, number];
1117
- };
1118
- params: {
1119
- id: string;
1120
- label?: string | undefined;
1121
- kind: "boolean" | "number" | "string";
1122
- default: string | number | boolean;
1123
- min?: number | undefined;
1124
- max?: number | undefined;
1125
- step?: number | undefined;
1126
- unit?: string | undefined;
1127
- options?: string[] | undefined;
1128
- }[];
1129
- parts: {
1130
- id: string;
1131
- label?: string | undefined;
1132
- type?: string | undefined;
1133
- bounds?: {
1134
- min: [number, number, number];
1135
- max: [number, number, number];
1136
- } | undefined;
1137
- }[];
1138
- surfaces: {
1139
- part?: string | undefined;
1140
- y: number;
1141
- polygon: [number, number][];
1142
- }[];
1143
- slots: {
1144
- id: string;
1145
- label?: string | undefined;
1146
- color?: string | undefined;
1147
- roughness?: number | undefined;
1148
- metalness?: number | undefined;
1149
- transparent?: boolean | undefined;
1150
- emissive?: boolean | undefined;
1151
- }[];
1152
- anchors: {
1153
- id: string;
1154
- position: [number, number, number];
1155
- normal?: [number, number, number] | undefined;
1156
- }[];
1157
- lights: {
1158
- id: string;
1159
- position: [number, number, number];
1160
- color: string;
1161
- intensity: number;
1162
- distance?: number | undefined;
1163
- spot?: {
1164
- direction: [number, number, number];
1165
- angle: number;
1166
- softness: number;
1167
- } | undefined;
1168
- shadows?: boolean | undefined;
1169
- glow?: {
1170
- size: number;
1171
- strength: number;
1172
- } | undefined;
1173
- }[];
1174
- undersides: {
1175
- part?: string | undefined;
1176
- polygon: [number, number][];
1177
- plane: [number, number, number, number];
1178
- }[];
1179
- animations: {
1180
- name: string;
1181
- duration: number;
1182
- }[];
1183
- cutters?: {
1184
- host: "ceiling" | "mounted" | "slab" | "wall";
1185
- polygon: number[][];
1186
- minY: number;
1187
- maxY: number;
1188
- }[] | undefined;
1189
- cutout: boolean;
1190
- collider: boolean;
1191
- shape?: {
1192
- tolerance: number;
1193
- bands: {
1194
- y0: number;
1195
- y1: number;
1196
- polygons: {
1197
- outer: [number, number][];
1198
- holes?: [number, number][][] | undefined;
1199
- }[];
1200
- }[];
1201
- } | undefined;
1202
- triangles: number;
1203
- coverage?: number | undefined;
1204
- uncovered?: {
1205
- min: [number, number];
1206
- max: [number, number];
1207
- }[] | undefined;
1208
- };
1209
- images?: {
1210
- artifact: string;
1211
- thumbnail: string;
1212
- floorPlan: string;
1213
- } | undefined;
1214
- } | undefined;
1215
- asset: {
1216
- id: string;
1217
- category: string;
1218
- name: string;
1219
- thumbnail: string;
1220
- floorPlanUrl?: string | undefined;
1221
- source: "community" | "library" | "mine";
1222
- isDraft?: boolean | undefined;
1223
- src: string;
1224
- dimensions: [number, number, number];
1225
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
1226
- recessed?: boolean | undefined;
1227
- tags?: string[] | undefined;
1228
- functionTags?: string[] | undefined;
1229
- offset: [number, number, number];
1230
- rotation: [number, number, number];
1231
- scale: [number, number, number];
1232
- surface?: {
1233
- height: number;
1234
- } | undefined;
1235
- interactive?: {
1236
- controls: ({
1237
- kind: "toggle";
1238
- label?: string | undefined;
1239
- default?: boolean | undefined;
1240
- } | {
1241
- kind: "slider";
1242
- label: string;
1243
- min: number;
1244
- max: number;
1245
- step: number;
1246
- unit?: string | undefined;
1247
- displayMode: "dial" | "slider" | "stepper";
1248
- default?: number | undefined;
1249
- } | {
1250
- kind: "temperature";
1251
- label: string;
1252
- min: number;
1253
- max: number;
1254
- unit: "C" | "F";
1255
- default?: number | undefined;
1256
- })[];
1257
- effects: ({
1258
- kind: "animation";
1259
- mode?: "ambient" | "open-close" | undefined;
1260
- control?: number | undefined;
1261
- clips: {
1262
- on?: string | undefined;
1263
- off?: string | undefined;
1264
- loop?: string | undefined;
1265
- };
1266
- } | {
1267
- kind: "light";
1268
- color: string;
1269
- intensityRange: [number, number];
1270
- distance?: number | undefined;
1271
- offset: [number, number, number];
1272
- spot?: {
1273
- direction: [number, number, number];
1274
- angle: number;
1275
- softness: number;
1276
- } | undefined;
1277
- shadows?: boolean | undefined;
1278
- glow?: {
1279
- size: number;
1280
- strength: number;
1281
- } | undefined;
1282
- })[];
1283
- } | undefined;
1284
- };
899
+ materialPreset?: string | undefined;
900
+ slots?: Record<string, string> | undefined;
901
+ type: "shelf";
1285
902
  } | {
1286
903
  object: "node";
1287
904
  name?: string | undefined;
@@ -1534,29 +1151,20 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1534
1151
  fromIds: string[];
1535
1152
  } | undefined;
1536
1153
  } | undefined;
1537
- id: `window_${string}`;
1538
- material?: {
1539
- id?: string | undefined;
1540
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1541
- properties?: {
1542
- color: string;
1543
- roughness: number;
1544
- metalness: number;
1545
- opacity: number;
1546
- transparent: boolean;
1547
- side: "back" | "double" | "front";
1548
- } | undefined;
1549
- texture?: {
1550
- url: string;
1551
- repeat?: [number, number] | undefined;
1552
- scale?: number | undefined;
1553
- offset?: [number, number] | undefined;
1554
- normalMap?: string | undefined;
1555
- normalScale?: number | undefined;
1556
- bumpMap?: string | undefined;
1557
- bumpScale?: number | undefined;
1558
- } | undefined;
1559
- } | undefined;
1154
+ type: "item";
1155
+ id: `item_${string}`;
1156
+ position: [number, number, number];
1157
+ rotation: [number, number, number];
1158
+ scale: [number, number, number];
1159
+ side?: "back" | "front" | undefined;
1160
+ children: string[];
1161
+ wallId?: string | undefined;
1162
+ wallT?: number | undefined;
1163
+ roofSegmentId?: string | undefined;
1164
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
1165
+ blockFaceId?: string | undefined;
1166
+ supportSlabId?: string | undefined;
1167
+ collectionIds?: `collection_${string}`[] | undefined;
1560
1168
  slots?: Record<string, string> | undefined;
1561
1169
  source?: {
1562
1170
  kind: "script";
@@ -1672,73 +1280,76 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1672
1280
  floorPlan: string;
1673
1281
  } | undefined;
1674
1282
  } | undefined;
1675
- position: [number, number, number];
1676
- rotation: [number, number, number];
1677
- side?: "back" | "front" | undefined;
1678
- verticalAnchor?: "floor" | "wall" | undefined;
1679
- floorThresholdVersion: 0 | 1;
1680
- wallId?: string | undefined;
1681
- dormerId?: string | undefined;
1682
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1683
- roofSegmentId?: string | undefined;
1684
- roofFace?: "back" | "front" | "left" | "right" | undefined;
1685
- width: number;
1686
- height: number;
1687
- mark?: string | undefined;
1688
- constructionType: "framed" | "masonry";
1689
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1690
- roughOpeningWidth?: number | undefined;
1691
- roughOpeningHeight?: number | undefined;
1692
- masonryOpeningWidth?: number | undefined;
1693
- masonryOpeningHeight?: number | undefined;
1694
- finishOpeningWidth?: number | undefined;
1695
- finishOpeningHeight?: number | undefined;
1696
- openingKind: "opening" | "window";
1697
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1698
- operationState: number;
1699
- openingDirection?: "inward" | "outward" | undefined;
1700
- tiltTurnMode?: "tilt" | "turn" | undefined;
1701
- awningDirection: "down" | "up";
1702
- casementStyle: "french" | "single";
1703
- hingesSide: "left" | "right";
1704
- openingShape: "arch" | "rectangle" | "rounded";
1705
- openingRadiusMode: "all" | "individual";
1706
- openingCornerRadii: [number, number, number, number];
1707
- cornerRadius: number;
1708
- archHeight: number;
1709
- openingRevealRadius: number;
1710
- frameThickness: number;
1711
- frameDepth?: number | undefined;
1712
- windowHandle?: boolean | undefined;
1713
- sashGrid?: boolean | undefined;
1714
- columnRatios: number[];
1715
- rowRatios: number[];
1716
- columnDividerThickness: number;
1717
- rowDividerThickness: number;
1718
- corner?: {
1719
- end: "end" | "start";
1720
- partnerId: string;
1721
- post: "none" | "post";
1722
- } | undefined;
1723
- sill: boolean;
1724
- sillDepth: number;
1725
- sillThickness: number;
1726
- sillOverhang?: number | undefined;
1727
- sillInterior?: boolean | undefined;
1728
- sillInteriorDepth?: number | undefined;
1729
- sillInteriorThickness?: number | undefined;
1730
- sillInteriorOverhang?: number | undefined;
1731
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1732
- shutterWidth?: number | undefined;
1733
- shutterOpen?: number | undefined;
1734
- shutterSides?: "both" | "left" | "right" | undefined;
1735
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1736
- rollerShutterBoxHeight?: number | undefined;
1737
- rollerShutterOpen?: number | undefined;
1738
- casingFaceA?: boolean | undefined;
1739
- casingFaceB?: boolean | undefined;
1740
- casingWidth?: number | undefined;
1741
- type: "window";
1283
+ asset: {
1284
+ id: string;
1285
+ category: string;
1286
+ name: string;
1287
+ thumbnail: string;
1288
+ floorPlanUrl?: string | undefined;
1289
+ source: "community" | "library" | "mine";
1290
+ isDraft?: boolean | undefined;
1291
+ src: string;
1292
+ dimensions: [number, number, number];
1293
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
1294
+ recessed?: boolean | undefined;
1295
+ tags?: string[] | undefined;
1296
+ functionTags?: string[] | undefined;
1297
+ offset: [number, number, number];
1298
+ rotation: [number, number, number];
1299
+ scale: [number, number, number];
1300
+ surface?: {
1301
+ height: number;
1302
+ } | undefined;
1303
+ interactive?: {
1304
+ controls: ({
1305
+ kind: "toggle";
1306
+ label?: string | undefined;
1307
+ default?: boolean | undefined;
1308
+ } | {
1309
+ kind: "slider";
1310
+ label: string;
1311
+ min: number;
1312
+ max: number;
1313
+ step: number;
1314
+ unit?: string | undefined;
1315
+ displayMode: "dial" | "slider" | "stepper";
1316
+ default?: number | undefined;
1317
+ } | {
1318
+ kind: "temperature";
1319
+ label: string;
1320
+ min: number;
1321
+ max: number;
1322
+ unit: "C" | "F";
1323
+ default?: number | undefined;
1324
+ })[];
1325
+ effects: ({
1326
+ kind: "animation";
1327
+ mode?: "ambient" | "open-close" | undefined;
1328
+ control?: number | undefined;
1329
+ clips: {
1330
+ on?: string | undefined;
1331
+ off?: string | undefined;
1332
+ loop?: string | undefined;
1333
+ };
1334
+ } | {
1335
+ kind: "light";
1336
+ color: string;
1337
+ intensityRange: [number, number];
1338
+ distance?: number | undefined;
1339
+ offset: [number, number, number];
1340
+ spot?: {
1341
+ direction: [number, number, number];
1342
+ angle: number;
1343
+ softness: number;
1344
+ } | undefined;
1345
+ shadows?: boolean | undefined;
1346
+ glow?: {
1347
+ size: number;
1348
+ strength: number;
1349
+ } | undefined;
1350
+ })[];
1351
+ } | undefined;
1352
+ };
1742
1353
  } | {
1743
1354
  object: "node";
1744
1355
  name?: string | undefined;
@@ -1763,11 +1374,30 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1763
1374
  fromIds: string[];
1764
1375
  } | undefined;
1765
1376
  } | undefined;
1766
- id: `column_${string}`;
1767
- children: string[];
1768
- position: [number, number, number];
1769
- rotation: number;
1770
- supportSlabId?: string | undefined;
1377
+ id: `window_${string}`;
1378
+ material?: {
1379
+ id?: string | undefined;
1380
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1381
+ properties?: {
1382
+ color: string;
1383
+ roughness: number;
1384
+ metalness: number;
1385
+ opacity: number;
1386
+ transparent: boolean;
1387
+ side: "back" | "double" | "front";
1388
+ } | undefined;
1389
+ texture?: {
1390
+ url: string;
1391
+ repeat?: [number, number] | undefined;
1392
+ scale?: number | undefined;
1393
+ offset?: [number, number] | undefined;
1394
+ normalMap?: string | undefined;
1395
+ normalScale?: number | undefined;
1396
+ bumpMap?: string | undefined;
1397
+ bumpScale?: number | undefined;
1398
+ } | undefined;
1399
+ } | undefined;
1400
+ slots?: Record<string, string> | undefined;
1771
1401
  source?: {
1772
1402
  kind: "script";
1773
1403
  meta?: {
@@ -1882,115 +1512,84 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
1882
1512
  floorPlan: string;
1883
1513
  } | undefined;
1884
1514
  } | undefined;
1885
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1886
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1887
- height: number;
1888
- radius: number;
1515
+ position: [number, number, number];
1516
+ rotation: [number, number, number];
1517
+ side?: "back" | "front" | undefined;
1518
+ verticalAnchor?: "floor" | "wall" | undefined;
1519
+ floorThresholdVersion: 0 | 1;
1520
+ wallId?: string | undefined;
1521
+ dormerId?: string | undefined;
1522
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1523
+ roofSegmentId?: string | undefined;
1524
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
1889
1525
  width: number;
1890
- depth: number;
1891
- edgeSoftness: number;
1892
- baseHeight: number;
1893
- capitalHeight: number;
1894
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1895
- shaftTaper: number;
1896
- shaftBulge: number;
1897
- shaftStartScale: number;
1898
- shaftEndScale: number;
1899
- shaftSegmentCount: number;
1900
- shaftTwistStep: number;
1901
- shaftCornerRadius: number;
1902
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1903
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1904
- baseWidthScale: number;
1905
- baseDepthScale: number;
1906
- baseTierCount: number;
1907
- baseStepSpread: number;
1908
- basePlinthHeightRatio: number;
1909
- baseRoundBandScale: number;
1910
- baseNeckScale: number;
1911
- baseRoundBandCount: number;
1912
- baseRibCount: number;
1913
- baseCarvingLevel: number;
1914
- basePanelInset: number;
1915
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1916
- capitalWidthScale: number;
1917
- capitalDepthScale: number;
1918
- capitalTierCount: number;
1919
- capitalStepSpread: number;
1920
- capitalBandCount: number;
1921
- voluteSize: number;
1922
- voluteCount: number;
1923
- leafCount: number;
1924
- leafRows: number;
1925
- bracketDepth: number;
1926
- bracketTierCount: number;
1927
- pendantCount: number;
1928
- capitalCarvingLevel: number;
1929
- ringCount: number;
1930
- ringPlacement: "bottom" | "ends" | "even" | "top";
1931
- ringThickness: number;
1932
- ringSpread: number;
1933
- fluteCount: number;
1934
- fluteDepth: number;
1935
- fluteWidth: number;
1936
- spiralTwist: number;
1937
- spiralRibCount: number;
1938
- panelCount: number;
1939
- panelInsetDepth: number;
1940
- panelShape: "arched" | "diamond" | "rectangle";
1941
- latheRingCount: number;
1942
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
1943
- carvingLevel: number;
1944
- carvingPlacement: "all" | "base" | "capital" | "shaft";
1945
- lowerBandEnabled: boolean;
1946
- lowerBandHeight: number;
1947
- lowerBandCarvingLevel: number;
1948
- dentilCount: number;
1949
- beadCount: number;
1950
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1951
- braceWidth: number;
1952
- braceDepth: number;
1953
- braceBottomSpread: number;
1954
- braceTopSpread: number;
1955
- bracePlateEnabled: boolean;
1956
- role?: "ornament" | "post" | undefined;
1957
- postBase?: "none" | "pier" | "post-base" | undefined;
1958
- material?: {
1959
- id?: string | undefined;
1960
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1961
- properties?: {
1962
- color: string;
1963
- roughness: number;
1964
- metalness: number;
1965
- opacity: number;
1966
- transparent: boolean;
1967
- side: "back" | "double" | "front";
1968
- } | undefined;
1969
- texture?: {
1970
- url: string;
1971
- repeat?: [number, number] | undefined;
1972
- scale?: number | undefined;
1973
- offset?: [number, number] | undefined;
1974
- normalMap?: string | undefined;
1975
- normalScale?: number | undefined;
1976
- bumpMap?: string | undefined;
1977
- bumpScale?: number | undefined;
1978
- } | undefined;
1979
- } | undefined;
1980
- materialPreset?: string | undefined;
1981
- slots?: Record<string, string> | undefined;
1982
- type: "column";
1983
- } | {
1984
- object: "node";
1985
- name?: string | undefined;
1986
- parentId: string | null;
1987
- visible: boolean;
1988
- camera?: {
1989
- position: [number, number, number];
1990
- target: [number, number, number];
1991
- mode: "orthographic" | "perspective";
1992
- fov?: number | undefined;
1993
- zoom?: number | undefined;
1526
+ height: number;
1527
+ mark?: string | undefined;
1528
+ constructionType: "framed" | "masonry";
1529
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1530
+ roughOpeningWidth?: number | undefined;
1531
+ roughOpeningHeight?: number | undefined;
1532
+ masonryOpeningWidth?: number | undefined;
1533
+ masonryOpeningHeight?: number | undefined;
1534
+ finishOpeningWidth?: number | undefined;
1535
+ finishOpeningHeight?: number | undefined;
1536
+ openingKind: "opening" | "window";
1537
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1538
+ operationState: number;
1539
+ openingDirection?: "inward" | "outward" | undefined;
1540
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1541
+ awningDirection: "down" | "up";
1542
+ casementStyle: "french" | "single";
1543
+ hingesSide: "left" | "right";
1544
+ openingShape: "arch" | "rectangle" | "rounded";
1545
+ openingRadiusMode: "all" | "individual";
1546
+ openingCornerRadii: [number, number, number, number];
1547
+ cornerRadius: number;
1548
+ archHeight: number;
1549
+ openingRevealRadius: number;
1550
+ frameThickness: number;
1551
+ frameDepth?: number | undefined;
1552
+ windowHandle?: boolean | undefined;
1553
+ sashGrid?: boolean | undefined;
1554
+ columnRatios: number[];
1555
+ rowRatios: number[];
1556
+ columnDividerThickness: number;
1557
+ rowDividerThickness: number;
1558
+ corner?: {
1559
+ end: "end" | "start";
1560
+ partnerId: string;
1561
+ post: "none" | "post";
1562
+ } | undefined;
1563
+ sill: boolean;
1564
+ sillDepth: number;
1565
+ sillThickness: number;
1566
+ sillOverhang?: number | undefined;
1567
+ sillInterior?: boolean | undefined;
1568
+ sillInteriorDepth?: number | undefined;
1569
+ sillInteriorThickness?: number | undefined;
1570
+ sillInteriorOverhang?: number | undefined;
1571
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1572
+ shutterWidth?: number | undefined;
1573
+ shutterOpen?: number | undefined;
1574
+ shutterSides?: "both" | "left" | "right" | undefined;
1575
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1576
+ rollerShutterBoxHeight?: number | undefined;
1577
+ rollerShutterOpen?: number | undefined;
1578
+ casingFaceA?: boolean | undefined;
1579
+ casingFaceB?: boolean | undefined;
1580
+ casingWidth?: number | undefined;
1581
+ type: "window";
1582
+ } | {
1583
+ object: "node";
1584
+ name?: string | undefined;
1585
+ parentId: string | null;
1586
+ visible: boolean;
1587
+ camera?: {
1588
+ position: [number, number, number];
1589
+ target: [number, number, number];
1590
+ mode: "orthographic" | "perspective";
1591
+ fov?: number | undefined;
1592
+ zoom?: number | undefined;
1994
1593
  } | undefined;
1995
1594
  metadata: Record<string, unknown>;
1996
1595
  provenance?: {
@@ -2004,224 +1603,199 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2004
1603
  fromIds: string[];
2005
1604
  } | undefined;
2006
1605
  } | undefined;
2007
- id: `rseg_${string}`;
2008
- material?: {
2009
- id?: string | undefined;
2010
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2011
- properties?: {
2012
- color: string;
2013
- roughness: number;
2014
- metalness: number;
2015
- opacity: number;
2016
- transparent: boolean;
2017
- side: "back" | "double" | "front";
2018
- } | undefined;
2019
- texture?: {
2020
- url: string;
2021
- repeat?: [number, number] | undefined;
2022
- scale?: number | undefined;
2023
- offset?: [number, number] | undefined;
2024
- normalMap?: string | undefined;
2025
- normalScale?: number | undefined;
2026
- bumpMap?: string | undefined;
2027
- bumpScale?: number | undefined;
2028
- } | undefined;
2029
- } | undefined;
2030
- materialPreset?: string | undefined;
2031
- topMaterial?: {
2032
- id?: string | undefined;
2033
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2034
- properties?: {
2035
- color: string;
2036
- roughness: number;
2037
- metalness: number;
2038
- opacity: number;
2039
- transparent: boolean;
2040
- side: "back" | "double" | "front";
2041
- } | undefined;
2042
- texture?: {
2043
- url: string;
2044
- repeat?: [number, number] | undefined;
2045
- scale?: number | undefined;
2046
- offset?: [number, number] | undefined;
2047
- normalMap?: string | undefined;
2048
- normalScale?: number | undefined;
2049
- bumpMap?: string | undefined;
2050
- bumpScale?: number | undefined;
2051
- } | undefined;
2052
- } | undefined;
2053
- topMaterialPreset?: string | undefined;
2054
- edgeMaterial?: {
2055
- id?: string | undefined;
2056
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2057
- properties?: {
2058
- color: string;
2059
- roughness: number;
2060
- metalness: number;
2061
- opacity: number;
2062
- transparent: boolean;
2063
- side: "back" | "double" | "front";
2064
- } | undefined;
2065
- texture?: {
2066
- url: string;
2067
- repeat?: [number, number] | undefined;
2068
- scale?: number | undefined;
2069
- offset?: [number, number] | undefined;
2070
- normalMap?: string | undefined;
2071
- normalScale?: number | undefined;
2072
- bumpMap?: string | undefined;
2073
- bumpScale?: number | undefined;
2074
- } | undefined;
2075
- } | undefined;
2076
- edgeMaterialPreset?: string | undefined;
2077
- wallMaterial?: {
2078
- id?: string | undefined;
2079
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2080
- properties?: {
2081
- color: string;
2082
- roughness: number;
2083
- metalness: number;
2084
- opacity: number;
2085
- transparent: boolean;
2086
- side: "back" | "double" | "front";
2087
- } | undefined;
2088
- texture?: {
2089
- url: string;
2090
- repeat?: [number, number] | undefined;
2091
- scale?: number | undefined;
2092
- offset?: [number, number] | undefined;
2093
- normalMap?: string | undefined;
2094
- normalScale?: number | undefined;
2095
- bumpMap?: string | undefined;
2096
- bumpScale?: number | undefined;
2097
- } | undefined;
2098
- } | undefined;
2099
- wallMaterialPreset?: string | undefined;
1606
+ id: `column_${string}`;
1607
+ children: string[];
2100
1608
  position: [number, number, number];
2101
1609
  rotation: number;
2102
- roofType: "barrel" | "conical" | "dutch" | "flat" | "gable" | "gambrel" | "hip" | "mansard" | "shed";
2103
- barrelRise?: number | undefined;
2104
- barrelSegments?: number | undefined;
2105
- roofSystem?: "glazed" | "standard" | undefined;
2106
- glazing?: {
2107
- across: {
2108
- layout: "count" | "fixed-spacing" | "maximum-spacing";
2109
- count: number;
2110
- spacing: number;
2111
- alignment: "center" | "end" | "start";
2112
- };
2113
- along: {
2114
- layout: "count" | "fixed-spacing" | "maximum-spacing";
2115
- count: number;
2116
- spacing: number;
2117
- alignment: "center" | "end" | "start";
2118
- };
2119
- frameWidth: number;
2120
- frameDepth: number;
2121
- glassThickness: number;
2122
- frameColor: string;
2123
- glassColor: string;
2124
- glassOpacity: number;
2125
- glassRoughness: number;
2126
- glazedEnds: boolean;
2127
- panelType: "empty" | "glass" | "solid";
2128
- panels: {
2129
- face: string;
2130
- column: number;
2131
- row: number;
2132
- type: "empty" | "glass" | "solid";
2133
- }[];
2134
- } | undefined;
2135
- slots?: Record<string, string> | undefined;
2136
- width: number;
2137
- depth: number;
2138
- conicalStartAngle?: number | undefined;
2139
- conicalSweepAngle?: number | undefined;
2140
- conicalFullCircle?: boolean | undefined;
2141
- trim: {
2142
- left: number;
2143
- right: number;
2144
- front: number;
2145
- back: number;
2146
- frontLeft: number;
2147
- frontRight: number;
2148
- backLeft: number;
2149
- backRight: number;
2150
- frontLeftX: number;
2151
- frontLeftZ: number;
2152
- frontRightX: number;
2153
- frontRightZ: number;
2154
- backLeftX: number;
2155
- backLeftZ: number;
2156
- backRightX: number;
2157
- backRightZ: number;
2158
- };
2159
- wallHeight: number;
2160
- pitch: number;
2161
- wallThickness: number;
2162
- deckThickness: number;
2163
- overhang: number;
2164
- gableOverhang?: number | undefined;
2165
- shingleThickness: number;
2166
- buildUp?: {
2167
- presetId?: string | undefined;
2168
- roofing: {
2169
- kind: "architectural-shingle" | "asphalt-3-tab" | "clay-tile" | "concrete-tile" | "slate" | "standing-seam-metal" | "wood-shake";
2170
- thickness: number;
2171
- name?: string | undefined;
2172
- };
2173
- underlayment?: {
2174
- kind: "felt-15" | "felt-30" | "ice-and-water" | "synthetic";
2175
- thickness: number;
2176
- name?: string | undefined;
1610
+ supportSlabId?: string | undefined;
1611
+ source?: {
1612
+ kind: "script";
1613
+ meta?: {
1614
+ description?: string | undefined;
1615
+ category?: string | undefined;
1616
+ tags?: string[] | undefined;
1617
+ parent?: string | undefined;
2177
1618
  } | undefined;
2178
- sheathing: {
2179
- kind: "osb" | "plywood";
2180
- thickness: number;
2181
- name?: string | undefined;
2182
- };
2183
- structure: {
2184
- system: "rafters" | "trusses";
2185
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
2186
- spacing: number;
2187
- };
2188
- insulation?: {
2189
- kind: "batt" | "blown" | "rigid";
2190
- thickness: number;
2191
- name?: string | undefined;
2192
- } | undefined;
2193
- finish?: {
2194
- kind: "drywall" | "plaster" | "wood-plank";
2195
- thickness: number;
2196
- name?: string | undefined;
1619
+ language: "bpy" | "three";
1620
+ script: string;
1621
+ params: Record<string, string | number | boolean>;
1622
+ artifact: string;
1623
+ manifest: {
1624
+ bounds: {
1625
+ min: [number, number, number];
1626
+ max: [number, number, number];
1627
+ };
1628
+ params: {
1629
+ id: string;
1630
+ label?: string | undefined;
1631
+ kind: "boolean" | "number" | "string";
1632
+ default: string | number | boolean;
1633
+ min?: number | undefined;
1634
+ max?: number | undefined;
1635
+ step?: number | undefined;
1636
+ unit?: string | undefined;
1637
+ options?: string[] | undefined;
1638
+ }[];
1639
+ parts: {
1640
+ id: string;
1641
+ label?: string | undefined;
1642
+ type?: string | undefined;
1643
+ bounds?: {
1644
+ min: [number, number, number];
1645
+ max: [number, number, number];
1646
+ } | undefined;
1647
+ }[];
1648
+ surfaces: {
1649
+ part?: string | undefined;
1650
+ y: number;
1651
+ polygon: [number, number][];
1652
+ }[];
1653
+ slots: {
1654
+ id: string;
1655
+ label?: string | undefined;
1656
+ color?: string | undefined;
1657
+ roughness?: number | undefined;
1658
+ metalness?: number | undefined;
1659
+ transparent?: boolean | undefined;
1660
+ emissive?: boolean | undefined;
1661
+ }[];
1662
+ anchors: {
1663
+ id: string;
1664
+ position: [number, number, number];
1665
+ normal?: [number, number, number] | undefined;
1666
+ }[];
1667
+ lights: {
1668
+ id: string;
1669
+ position: [number, number, number];
1670
+ color: string;
1671
+ intensity: number;
1672
+ distance?: number | undefined;
1673
+ spot?: {
1674
+ direction: [number, number, number];
1675
+ angle: number;
1676
+ softness: number;
1677
+ } | undefined;
1678
+ shadows?: boolean | undefined;
1679
+ glow?: {
1680
+ size: number;
1681
+ strength: number;
1682
+ } | undefined;
1683
+ }[];
1684
+ undersides: {
1685
+ part?: string | undefined;
1686
+ polygon: [number, number][];
1687
+ plane: [number, number, number, number];
1688
+ }[];
1689
+ animations: {
1690
+ name: string;
1691
+ duration: number;
1692
+ }[];
1693
+ cutters?: {
1694
+ host: "ceiling" | "mounted" | "slab" | "wall";
1695
+ polygon: number[][];
1696
+ minY: number;
1697
+ maxY: number;
1698
+ }[] | undefined;
1699
+ cutout: boolean;
1700
+ collider: boolean;
1701
+ shape?: {
1702
+ tolerance: number;
1703
+ bands: {
1704
+ y0: number;
1705
+ y1: number;
1706
+ polygons: {
1707
+ outer: [number, number][];
1708
+ holes?: [number, number][][] | undefined;
1709
+ }[];
1710
+ }[];
1711
+ } | undefined;
1712
+ triangles: number;
1713
+ coverage?: number | undefined;
1714
+ uncovered?: {
1715
+ min: [number, number];
1716
+ max: [number, number];
1717
+ }[] | undefined;
1718
+ };
1719
+ images?: {
1720
+ artifact: string;
1721
+ thumbnail: string;
1722
+ floorPlan: string;
2197
1723
  } | undefined;
2198
1724
  } | undefined;
2199
- arc?: {
2200
- centerX: number;
2201
- centerZ: number;
2202
- radius: number;
2203
- } | undefined;
2204
- shedSideInfillSpan?: number | undefined;
2205
- shedSideInfillMinX?: number | undefined;
2206
- shedSideInfillMaxX?: number | undefined;
2207
- shedFootprintPieces?: [number, number][][] | undefined;
2208
- shedOpenEndSides?: ("left" | "right")[] | undefined;
2209
- shedJointFrame?: {
2210
- position: [number, number, number];
2211
- rotation: number;
2212
- } | undefined;
2213
- shedJointOwnerId?: string | undefined;
2214
- shedJointNeighborIds?: string[] | undefined;
2215
- shedJointScopeId?: string | undefined;
2216
- managedByParent: boolean;
2217
- wallShell: "auto" | "include" | "omit";
2218
- shedInsetEndPanels: boolean;
2219
- fascia?: boolean | undefined;
2220
- eaveCut?: "plumb" | "plumb-level" | "square" | undefined;
2221
- fasciaHighEdge?: boolean | undefined;
2222
- fasciaHeight?: number | undefined;
2223
- fasciaDepth?: number | undefined;
2224
- fasciaMaterial?: {
1725
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1726
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1727
+ height: number;
1728
+ radius: number;
1729
+ width: number;
1730
+ depth: number;
1731
+ edgeSoftness: number;
1732
+ baseHeight: number;
1733
+ capitalHeight: number;
1734
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1735
+ shaftTaper: number;
1736
+ shaftBulge: number;
1737
+ shaftStartScale: number;
1738
+ shaftEndScale: number;
1739
+ shaftSegmentCount: number;
1740
+ shaftTwistStep: number;
1741
+ shaftCornerRadius: number;
1742
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1743
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1744
+ baseWidthScale: number;
1745
+ baseDepthScale: number;
1746
+ baseTierCount: number;
1747
+ baseStepSpread: number;
1748
+ basePlinthHeightRatio: number;
1749
+ baseRoundBandScale: number;
1750
+ baseNeckScale: number;
1751
+ baseRoundBandCount: number;
1752
+ baseRibCount: number;
1753
+ baseCarvingLevel: number;
1754
+ basePanelInset: number;
1755
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1756
+ capitalWidthScale: number;
1757
+ capitalDepthScale: number;
1758
+ capitalTierCount: number;
1759
+ capitalStepSpread: number;
1760
+ capitalBandCount: number;
1761
+ voluteSize: number;
1762
+ voluteCount: number;
1763
+ leafCount: number;
1764
+ leafRows: number;
1765
+ bracketDepth: number;
1766
+ bracketTierCount: number;
1767
+ pendantCount: number;
1768
+ capitalCarvingLevel: number;
1769
+ ringCount: number;
1770
+ ringPlacement: "bottom" | "ends" | "even" | "top";
1771
+ ringThickness: number;
1772
+ ringSpread: number;
1773
+ fluteCount: number;
1774
+ fluteDepth: number;
1775
+ fluteWidth: number;
1776
+ spiralTwist: number;
1777
+ spiralRibCount: number;
1778
+ panelCount: number;
1779
+ panelInsetDepth: number;
1780
+ panelShape: "arched" | "diamond" | "rectangle";
1781
+ latheRingCount: number;
1782
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
1783
+ carvingLevel: number;
1784
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
1785
+ lowerBandEnabled: boolean;
1786
+ lowerBandHeight: number;
1787
+ lowerBandCarvingLevel: number;
1788
+ dentilCount: number;
1789
+ beadCount: number;
1790
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1791
+ braceWidth: number;
1792
+ braceDepth: number;
1793
+ braceBottomSpread: number;
1794
+ braceTopSpread: number;
1795
+ bracePlateEnabled: boolean;
1796
+ role?: "ornament" | "post" | undefined;
1797
+ postBase?: "none" | "pier" | "post-base" | undefined;
1798
+ material?: {
2225
1799
  id?: string | undefined;
2226
1800
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2227
1801
  properties?: {
@@ -2243,8 +1817,35 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2243
1817
  bumpScale?: number | undefined;
2244
1818
  } | undefined;
2245
1819
  } | undefined;
2246
- fasciaMaterialPreset?: string | undefined;
2247
- heelMaterial?: {
1820
+ materialPreset?: string | undefined;
1821
+ slots?: Record<string, string> | undefined;
1822
+ type: "column";
1823
+ } | {
1824
+ object: "node";
1825
+ name?: string | undefined;
1826
+ parentId: string | null;
1827
+ visible: boolean;
1828
+ camera?: {
1829
+ position: [number, number, number];
1830
+ target: [number, number, number];
1831
+ mode: "orthographic" | "perspective";
1832
+ fov?: number | undefined;
1833
+ zoom?: number | undefined;
1834
+ } | undefined;
1835
+ metadata: Record<string, unknown>;
1836
+ provenance?: {
1837
+ refs: {
1838
+ ns?: string | undefined;
1839
+ id: string;
1840
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
1841
+ }[];
1842
+ lineage?: {
1843
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
1844
+ fromIds: string[];
1845
+ } | undefined;
1846
+ } | undefined;
1847
+ id: `slab_${string}`;
1848
+ material?: {
2248
1849
  id?: string | undefined;
2249
1850
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2250
1851
  properties?: {
@@ -2266,254 +1867,174 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
2266
1867
  bumpScale?: number | undefined;
2267
1868
  } | undefined;
2268
1869
  } | undefined;
2269
- heelMaterialPreset?: string | undefined;
2270
- gableLeftMaterial?: {
2271
- id?: string | undefined;
2272
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2273
- properties?: {
2274
- color: string;
2275
- roughness: number;
2276
- metalness: number;
2277
- opacity: number;
2278
- transparent: boolean;
2279
- side: "back" | "double" | "front";
2280
- } | undefined;
2281
- texture?: {
2282
- url: string;
2283
- repeat?: [number, number] | undefined;
2284
- scale?: number | undefined;
2285
- offset?: [number, number] | undefined;
2286
- normalMap?: string | undefined;
2287
- normalScale?: number | undefined;
2288
- bumpMap?: string | undefined;
2289
- bumpScale?: number | undefined;
1870
+ materialPreset?: string | undefined;
1871
+ slots?: Record<string, string> | undefined;
1872
+ polygon: [number, number][];
1873
+ holes: [number, number][][];
1874
+ holeMetadata: {
1875
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
1876
+ openingId?: string | undefined;
1877
+ stairId?: string | undefined;
1878
+ elevatorId?: string | undefined;
1879
+ }[];
1880
+ elevation: number;
1881
+ floorHeight?: number | undefined;
1882
+ referenceFloorElevation?: number | undefined;
1883
+ foundation?: {
1884
+ type: "none" | "solid";
1885
+ material?: string | {
1886
+ id?: string | undefined;
1887
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1888
+ properties?: {
1889
+ color: string;
1890
+ roughness: number;
1891
+ metalness: number;
1892
+ opacity: number;
1893
+ transparent: boolean;
1894
+ side: "back" | "double" | "front";
1895
+ } | undefined;
1896
+ texture?: {
1897
+ url: string;
1898
+ repeat?: [number, number] | undefined;
1899
+ scale?: number | undefined;
1900
+ offset?: [number, number] | undefined;
1901
+ normalMap?: string | undefined;
1902
+ normalScale?: number | undefined;
1903
+ bumpMap?: string | undefined;
1904
+ bumpScale?: number | undefined;
1905
+ } | undefined;
2290
1906
  } | undefined;
2291
1907
  } | undefined;
2292
- gableLeftMaterialPreset?: string | undefined;
2293
- gableRightMaterial?: {
2294
- id?: string | undefined;
2295
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2296
- properties?: {
2297
- color: string;
2298
- roughness: number;
2299
- metalness: number;
2300
- opacity: number;
2301
- transparent: boolean;
2302
- side: "back" | "double" | "front";
1908
+ thickness: number;
1909
+ recessed: boolean;
1910
+ recessedRimElevation?: number | undefined;
1911
+ fillToTerrain?: boolean | undefined;
1912
+ boundary?: "auto" | undefined;
1913
+ support?: "open" | undefined;
1914
+ plateRole?: "base" | "platform" | "sunken" | undefined;
1915
+ railing?: {
1916
+ start: [number, number];
1917
+ end: [number, number];
1918
+ }[] | undefined;
1919
+ zoneIds?: string[] | undefined;
1920
+ associatedZoneIds?: string[] | undefined;
1921
+ autoFromWalls: boolean;
1922
+ surfaceScript?: {
1923
+ kind: "script";
1924
+ meta?: {
1925
+ description?: string | undefined;
1926
+ category?: string | undefined;
1927
+ tags?: string[] | undefined;
1928
+ parent?: string | undefined;
2303
1929
  } | undefined;
2304
- texture?: {
2305
- url: string;
2306
- repeat?: [number, number] | undefined;
2307
- scale?: number | undefined;
2308
- offset?: [number, number] | undefined;
2309
- normalMap?: string | undefined;
2310
- normalScale?: number | undefined;
2311
- bumpMap?: string | undefined;
2312
- bumpScale?: number | undefined;
1930
+ language: "bpy" | "three";
1931
+ script: string;
1932
+ params: Record<string, string | number | boolean>;
1933
+ artifact: string;
1934
+ manifest: {
1935
+ bounds: {
1936
+ min: [number, number, number];
1937
+ max: [number, number, number];
1938
+ };
1939
+ params: {
1940
+ id: string;
1941
+ label?: string | undefined;
1942
+ kind: "boolean" | "number" | "string";
1943
+ default: string | number | boolean;
1944
+ min?: number | undefined;
1945
+ max?: number | undefined;
1946
+ step?: number | undefined;
1947
+ unit?: string | undefined;
1948
+ options?: string[] | undefined;
1949
+ }[];
1950
+ parts: {
1951
+ id: string;
1952
+ label?: string | undefined;
1953
+ type?: string | undefined;
1954
+ bounds?: {
1955
+ min: [number, number, number];
1956
+ max: [number, number, number];
1957
+ } | undefined;
1958
+ }[];
1959
+ surfaces: {
1960
+ part?: string | undefined;
1961
+ y: number;
1962
+ polygon: [number, number][];
1963
+ }[];
1964
+ slots: {
1965
+ id: string;
1966
+ label?: string | undefined;
1967
+ color?: string | undefined;
1968
+ roughness?: number | undefined;
1969
+ metalness?: number | undefined;
1970
+ transparent?: boolean | undefined;
1971
+ emissive?: boolean | undefined;
1972
+ }[];
1973
+ anchors: {
1974
+ id: string;
1975
+ position: [number, number, number];
1976
+ normal?: [number, number, number] | undefined;
1977
+ }[];
1978
+ lights: {
1979
+ id: string;
1980
+ position: [number, number, number];
1981
+ color: string;
1982
+ intensity: number;
1983
+ distance?: number | undefined;
1984
+ spot?: {
1985
+ direction: [number, number, number];
1986
+ angle: number;
1987
+ softness: number;
1988
+ } | undefined;
1989
+ shadows?: boolean | undefined;
1990
+ glow?: {
1991
+ size: number;
1992
+ strength: number;
1993
+ } | undefined;
1994
+ }[];
1995
+ undersides: {
1996
+ part?: string | undefined;
1997
+ polygon: [number, number][];
1998
+ plane: [number, number, number, number];
1999
+ }[];
2000
+ animations: {
2001
+ name: string;
2002
+ duration: number;
2003
+ }[];
2004
+ cutters?: {
2005
+ host: "ceiling" | "mounted" | "slab" | "wall";
2006
+ polygon: number[][];
2007
+ minY: number;
2008
+ maxY: number;
2009
+ }[] | undefined;
2010
+ cutout: boolean;
2011
+ collider: boolean;
2012
+ shape?: {
2013
+ tolerance: number;
2014
+ bands: {
2015
+ y0: number;
2016
+ y1: number;
2017
+ polygons: {
2018
+ outer: [number, number][];
2019
+ holes?: [number, number][][] | undefined;
2020
+ }[];
2021
+ }[];
2022
+ } | undefined;
2023
+ triangles: number;
2024
+ coverage?: number | undefined;
2025
+ uncovered?: {
2026
+ min: [number, number];
2027
+ max: [number, number];
2028
+ }[] | undefined;
2029
+ };
2030
+ images?: {
2031
+ artifact: string;
2032
+ thumbnail: string;
2033
+ floorPlan: string;
2313
2034
  } | undefined;
2035
+ inputs: string;
2314
2036
  } | undefined;
2315
- gableRightMaterialPreset?: string | undefined;
2316
- gambrelLowerWidthRatio: number;
2317
- gambrelLowerHeightRatio: number;
2318
- mansardSteepWidthRatio: number;
2319
- mansardSteepHeightRatio: number;
2320
- dutchHipWidthRatio: number;
2321
- dutchHipHeightRatio: number;
2322
- dutchWaistLengthRatio: number;
2323
- dutchGabletRake: number;
2324
- dutchTopRakeThickness: number;
2325
- children: string[];
2326
- type: "roof-segment";
2327
- } | {
2328
- object: "node";
2329
- name?: string | undefined;
2330
- parentId: string | null;
2331
- visible: boolean;
2332
- camera?: {
2333
- position: [number, number, number];
2334
- target: [number, number, number];
2335
- mode: "orthographic" | "perspective";
2336
- fov?: number | undefined;
2337
- zoom?: number | undefined;
2338
- } | undefined;
2339
- metadata: Record<string, unknown>;
2340
- provenance?: {
2341
- refs: {
2342
- ns?: string | undefined;
2343
- id: string;
2344
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2345
- }[];
2346
- lineage?: {
2347
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2348
- fromIds: string[];
2349
- } | undefined;
2350
- } | undefined;
2351
- id: `roof_${string}`;
2352
- material?: {
2353
- id?: string | undefined;
2354
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2355
- properties?: {
2356
- color: string;
2357
- roughness: number;
2358
- metalness: number;
2359
- opacity: number;
2360
- transparent: boolean;
2361
- side: "back" | "double" | "front";
2362
- } | undefined;
2363
- texture?: {
2364
- url: string;
2365
- repeat?: [number, number] | undefined;
2366
- scale?: number | undefined;
2367
- offset?: [number, number] | undefined;
2368
- normalMap?: string | undefined;
2369
- normalScale?: number | undefined;
2370
- bumpMap?: string | undefined;
2371
- bumpScale?: number | undefined;
2372
- } | undefined;
2373
- } | undefined;
2374
- materialPreset?: string | undefined;
2375
- topMaterial?: {
2376
- id?: string | undefined;
2377
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2378
- properties?: {
2379
- color: string;
2380
- roughness: number;
2381
- metalness: number;
2382
- opacity: number;
2383
- transparent: boolean;
2384
- side: "back" | "double" | "front";
2385
- } | undefined;
2386
- texture?: {
2387
- url: string;
2388
- repeat?: [number, number] | undefined;
2389
- scale?: number | undefined;
2390
- offset?: [number, number] | undefined;
2391
- normalMap?: string | undefined;
2392
- normalScale?: number | undefined;
2393
- bumpMap?: string | undefined;
2394
- bumpScale?: number | undefined;
2395
- } | undefined;
2396
- } | undefined;
2397
- topMaterialPreset?: string | undefined;
2398
- edgeMaterial?: {
2399
- id?: string | undefined;
2400
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2401
- properties?: {
2402
- color: string;
2403
- roughness: number;
2404
- metalness: number;
2405
- opacity: number;
2406
- transparent: boolean;
2407
- side: "back" | "double" | "front";
2408
- } | undefined;
2409
- texture?: {
2410
- url: string;
2411
- repeat?: [number, number] | undefined;
2412
- scale?: number | undefined;
2413
- offset?: [number, number] | undefined;
2414
- normalMap?: string | undefined;
2415
- normalScale?: number | undefined;
2416
- bumpMap?: string | undefined;
2417
- bumpScale?: number | undefined;
2418
- } | undefined;
2419
- } | undefined;
2420
- edgeMaterialPreset?: string | undefined;
2421
- wallMaterial?: {
2422
- id?: string | undefined;
2423
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2424
- properties?: {
2425
- color: string;
2426
- roughness: number;
2427
- metalness: number;
2428
- opacity: number;
2429
- transparent: boolean;
2430
- side: "back" | "double" | "front";
2431
- } | undefined;
2432
- texture?: {
2433
- url: string;
2434
- repeat?: [number, number] | undefined;
2435
- scale?: number | undefined;
2436
- offset?: [number, number] | undefined;
2437
- normalMap?: string | undefined;
2438
- normalScale?: number | undefined;
2439
- bumpMap?: string | undefined;
2440
- bumpScale?: number | undefined;
2441
- } | undefined;
2442
- } | undefined;
2443
- wallMaterialPreset?: string | undefined;
2444
- heelMaterial?: {
2445
- id?: string | undefined;
2446
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2447
- properties?: {
2448
- color: string;
2449
- roughness: number;
2450
- metalness: number;
2451
- opacity: number;
2452
- transparent: boolean;
2453
- side: "back" | "double" | "front";
2454
- } | undefined;
2455
- texture?: {
2456
- url: string;
2457
- repeat?: [number, number] | undefined;
2458
- scale?: number | undefined;
2459
- offset?: [number, number] | undefined;
2460
- normalMap?: string | undefined;
2461
- normalScale?: number | undefined;
2462
- bumpMap?: string | undefined;
2463
- bumpScale?: number | undefined;
2464
- } | undefined;
2465
- } | undefined;
2466
- heelMaterialPreset?: string | undefined;
2467
- position: [number, number, number];
2468
- rotation: number;
2469
- support: {
2470
- kind: "level";
2471
- } | {
2472
- kind: "walls";
2473
- } | {
2474
- kind: "roof";
2475
- roofSegmentId: `rseg_${string}`;
2476
- localPosition: [number, number];
2477
- curbHeight: number;
2478
- };
2479
- assembly?: {
2480
- layers: {
2481
- id: string;
2482
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2483
- thickness: number;
2484
- core?: true | undefined;
2485
- spacing?: number | undefined;
2486
- material?: string | undefined;
2487
- slot?: string | undefined;
2488
- returns?: boolean | undefined;
2489
- display?: "construction" | "finished" | undefined;
2490
- inset?: number | undefined;
2491
- bottom?: number | undefined;
2492
- lift?: number | undefined;
2493
- src?: string | undefined;
2494
- }[];
2495
- backing?: {
2496
- id: string;
2497
- role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
2498
- thickness: number;
2499
- core?: true | undefined;
2500
- spacing?: number | undefined;
2501
- material?: string | undefined;
2502
- slot?: string | undefined;
2503
- returns?: boolean | undefined;
2504
- display?: "construction" | "finished" | undefined;
2505
- inset?: number | undefined;
2506
- bottom?: number | undefined;
2507
- lift?: number | undefined;
2508
- src?: string | undefined;
2509
- }[] | undefined;
2510
- face?: "exterior" | "front" | undefined;
2511
- presetId?: string | undefined;
2512
- cavityInsulation?: string | undefined;
2513
- } | undefined;
2514
- slots?: Record<string, string> | undefined;
2515
- children: `rseg_${string}`[];
2516
- type: "roof";
2037
+ type: "slab";
2517
2038
  } | {
2518
2039
  object: "node";
2519
2040
  name?: string | undefined;
@@ -3126,11 +2647,761 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
3126
2647
  toHeight?: number | undefined;
3127
2648
  } | undefined;
3128
2649
  } | undefined;
3129
- start: [number, number];
3130
- end: [number, number];
3131
- frontSide: "exterior" | "interior" | "unknown";
3132
- backSide: "exterior" | "interior" | "unknown";
3133
- type: "wall";
2650
+ start: [number, number];
2651
+ end: [number, number];
2652
+ frontSide: "exterior" | "interior" | "unknown";
2653
+ backSide: "exterior" | "interior" | "unknown";
2654
+ type: "wall";
2655
+ } | {
2656
+ object: "node";
2657
+ name?: string | undefined;
2658
+ parentId: string | null;
2659
+ visible: boolean;
2660
+ camera?: {
2661
+ position: [number, number, number];
2662
+ target: [number, number, number];
2663
+ mode: "orthographic" | "perspective";
2664
+ fov?: number | undefined;
2665
+ zoom?: number | undefined;
2666
+ } | undefined;
2667
+ metadata: Record<string, unknown>;
2668
+ provenance?: {
2669
+ refs: {
2670
+ ns?: string | undefined;
2671
+ id: string;
2672
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2673
+ }[];
2674
+ lineage?: {
2675
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2676
+ fromIds: string[];
2677
+ } | undefined;
2678
+ } | undefined;
2679
+ position: [number, number, number];
2680
+ rotation: number;
2681
+ supportSlabId?: string | undefined;
2682
+ width: number;
2683
+ depth: number;
2684
+ carcassHeight: number;
2685
+ operationState: number;
2686
+ plinthHeight: number;
2687
+ toeKickDepth: number;
2688
+ boardThickness: number;
2689
+ countertopThickness: number;
2690
+ countertopOverhang: number;
2691
+ countertopBackOverhang: number;
2692
+ withFinishedBack: boolean;
2693
+ frontThickness: number;
2694
+ frontGap: number;
2695
+ frontStyle: "raised-arch" | "shaker" | "slab";
2696
+ panelReady: boolean;
2697
+ handleStyle: "bar" | "cutout" | "hole" | "knob" | "none";
2698
+ handlePosition: "auto" | "center" | "top";
2699
+ frontOverlay: "full" | "inset";
2700
+ withBottomPanel: boolean;
2701
+ showPlinth: boolean;
2702
+ withCountertop: boolean;
2703
+ material?: {
2704
+ id?: string | undefined;
2705
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2706
+ properties?: {
2707
+ color: string;
2708
+ roughness: number;
2709
+ metalness: number;
2710
+ opacity: number;
2711
+ transparent: boolean;
2712
+ side: "back" | "double" | "front";
2713
+ } | undefined;
2714
+ texture?: {
2715
+ url: string;
2716
+ repeat?: [number, number] | undefined;
2717
+ scale?: number | undefined;
2718
+ offset?: [number, number] | undefined;
2719
+ normalMap?: string | undefined;
2720
+ normalScale?: number | undefined;
2721
+ bumpMap?: string | undefined;
2722
+ bumpScale?: number | undefined;
2723
+ } | undefined;
2724
+ } | undefined;
2725
+ materialPreset?: string | undefined;
2726
+ slots?: Record<string, string> | undefined;
2727
+ stack?: ({
2728
+ id: string;
2729
+ height?: number | undefined;
2730
+ type: "shelf";
2731
+ shelfCount?: number | undefined;
2732
+ } | {
2733
+ id: string;
2734
+ height?: number | undefined;
2735
+ type: "drawer";
2736
+ drawerCount?: number | undefined;
2737
+ } | {
2738
+ id: string;
2739
+ height?: number | undefined;
2740
+ type: "door";
2741
+ doorType?: "double" | "glass" | "single-left" | "single-right" | undefined;
2742
+ shelfCount?: number | undefined;
2743
+ } | {
2744
+ id: string;
2745
+ height?: number | undefined;
2746
+ type: "sink";
2747
+ sinkLayout?: "double" | "double-offset" | "single" | undefined;
2748
+ } | {
2749
+ id: string;
2750
+ height?: number | undefined;
2751
+ type: "oven";
2752
+ } | {
2753
+ id: string;
2754
+ height?: number | undefined;
2755
+ type: "microwave";
2756
+ } | {
2757
+ id: string;
2758
+ height?: number | undefined;
2759
+ type: "dishwasher";
2760
+ } | {
2761
+ id: string;
2762
+ height?: number | undefined;
2763
+ cooktopBurnersOn?: boolean | undefined;
2764
+ cooktopActiveBurners?: number[] | undefined;
2765
+ cooktopKnobProgress?: number[] | undefined;
2766
+ cooktopShowGrate?: boolean | undefined;
2767
+ type: "cooktop-gas";
2768
+ cooktopLayout?: "gas-2burner" | "gas-4burner" | "gas-5burner-wok" | "gas-6burner" | undefined;
2769
+ } | {
2770
+ id: string;
2771
+ height?: number | undefined;
2772
+ cooktopBurnersOn?: boolean | undefined;
2773
+ cooktopActiveBurners?: number[] | undefined;
2774
+ cooktopKnobProgress?: number[] | undefined;
2775
+ cooktopShowGrate?: boolean | undefined;
2776
+ type: "cooktop-induction";
2777
+ cooktopLayout?: "induction-2zone" | "induction-4zone" | undefined;
2778
+ } | {
2779
+ id: string;
2780
+ height?: number | undefined;
2781
+ type: "pull-out-pantry";
2782
+ shelfCount?: number | undefined;
2783
+ pantryRackStyle?: "glass" | "tray" | "wire" | undefined;
2784
+ } | {
2785
+ id: string;
2786
+ height?: number | undefined;
2787
+ type: "fridge-single";
2788
+ } | {
2789
+ id: string;
2790
+ height?: number | undefined;
2791
+ type: "fridge-double";
2792
+ } | {
2793
+ id: string;
2794
+ height?: number | undefined;
2795
+ type: "fridge-top-freezer";
2796
+ } | {
2797
+ id: string;
2798
+ height?: number | undefined;
2799
+ type: "fridge-bottom-freezer";
2800
+ } | {
2801
+ id: string;
2802
+ height?: number | undefined;
2803
+ type: "hood-pyramid";
2804
+ } | {
2805
+ id: string;
2806
+ height?: number | undefined;
2807
+ type: "hood-curved-glass";
2808
+ })[] | undefined;
2809
+ id: `cabinet_${string}`;
2810
+ runTier: "base" | "tall" | "wall";
2811
+ children: string[];
2812
+ barLedge?: {
2813
+ edge: "back" | "left" | "right";
2814
+ height: number;
2815
+ depth: number;
2816
+ } | undefined;
2817
+ withWaterfall: boolean;
2818
+ withFinishedEnds: boolean;
2819
+ type: "cabinet";
2820
+ } | {
2821
+ object: "node";
2822
+ name?: string | undefined;
2823
+ parentId: string | null;
2824
+ visible: boolean;
2825
+ camera?: {
2826
+ position: [number, number, number];
2827
+ target: [number, number, number];
2828
+ mode: "orthographic" | "perspective";
2829
+ fov?: number | undefined;
2830
+ zoom?: number | undefined;
2831
+ } | undefined;
2832
+ metadata: Record<string, unknown>;
2833
+ provenance?: {
2834
+ refs: {
2835
+ ns?: string | undefined;
2836
+ id: string;
2837
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2838
+ }[];
2839
+ lineage?: {
2840
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2841
+ fromIds: string[];
2842
+ } | undefined;
2843
+ } | undefined;
2844
+ position: [number, number, number];
2845
+ rotation: number;
2846
+ supportSlabId?: string | undefined;
2847
+ width: number;
2848
+ depth: number;
2849
+ carcassHeight: number;
2850
+ operationState: number;
2851
+ plinthHeight: number;
2852
+ toeKickDepth: number;
2853
+ boardThickness: number;
2854
+ countertopThickness: number;
2855
+ countertopOverhang: number;
2856
+ countertopBackOverhang: number;
2857
+ withFinishedBack: boolean;
2858
+ frontThickness: number;
2859
+ frontGap: number;
2860
+ frontStyle: "raised-arch" | "shaker" | "slab";
2861
+ panelReady: boolean;
2862
+ handleStyle: "bar" | "cutout" | "hole" | "knob" | "none";
2863
+ handlePosition: "auto" | "center" | "top";
2864
+ frontOverlay: "full" | "inset";
2865
+ withBottomPanel: boolean;
2866
+ showPlinth: boolean;
2867
+ withCountertop: boolean;
2868
+ material?: {
2869
+ id?: string | undefined;
2870
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2871
+ properties?: {
2872
+ color: string;
2873
+ roughness: number;
2874
+ metalness: number;
2875
+ opacity: number;
2876
+ transparent: boolean;
2877
+ side: "back" | "double" | "front";
2878
+ } | undefined;
2879
+ texture?: {
2880
+ url: string;
2881
+ repeat?: [number, number] | undefined;
2882
+ scale?: number | undefined;
2883
+ offset?: [number, number] | undefined;
2884
+ normalMap?: string | undefined;
2885
+ normalScale?: number | undefined;
2886
+ bumpMap?: string | undefined;
2887
+ bumpScale?: number | undefined;
2888
+ } | undefined;
2889
+ } | undefined;
2890
+ materialPreset?: string | undefined;
2891
+ slots?: Record<string, string> | undefined;
2892
+ stack?: ({
2893
+ id: string;
2894
+ height?: number | undefined;
2895
+ type: "shelf";
2896
+ shelfCount?: number | undefined;
2897
+ } | {
2898
+ id: string;
2899
+ height?: number | undefined;
2900
+ type: "drawer";
2901
+ drawerCount?: number | undefined;
2902
+ } | {
2903
+ id: string;
2904
+ height?: number | undefined;
2905
+ type: "door";
2906
+ doorType?: "double" | "glass" | "single-left" | "single-right" | undefined;
2907
+ shelfCount?: number | undefined;
2908
+ } | {
2909
+ id: string;
2910
+ height?: number | undefined;
2911
+ type: "sink";
2912
+ sinkLayout?: "double" | "double-offset" | "single" | undefined;
2913
+ } | {
2914
+ id: string;
2915
+ height?: number | undefined;
2916
+ type: "oven";
2917
+ } | {
2918
+ id: string;
2919
+ height?: number | undefined;
2920
+ type: "microwave";
2921
+ } | {
2922
+ id: string;
2923
+ height?: number | undefined;
2924
+ type: "dishwasher";
2925
+ } | {
2926
+ id: string;
2927
+ height?: number | undefined;
2928
+ cooktopBurnersOn?: boolean | undefined;
2929
+ cooktopActiveBurners?: number[] | undefined;
2930
+ cooktopKnobProgress?: number[] | undefined;
2931
+ cooktopShowGrate?: boolean | undefined;
2932
+ type: "cooktop-gas";
2933
+ cooktopLayout?: "gas-2burner" | "gas-4burner" | "gas-5burner-wok" | "gas-6burner" | undefined;
2934
+ } | {
2935
+ id: string;
2936
+ height?: number | undefined;
2937
+ cooktopBurnersOn?: boolean | undefined;
2938
+ cooktopActiveBurners?: number[] | undefined;
2939
+ cooktopKnobProgress?: number[] | undefined;
2940
+ cooktopShowGrate?: boolean | undefined;
2941
+ type: "cooktop-induction";
2942
+ cooktopLayout?: "induction-2zone" | "induction-4zone" | undefined;
2943
+ } | {
2944
+ id: string;
2945
+ height?: number | undefined;
2946
+ type: "pull-out-pantry";
2947
+ shelfCount?: number | undefined;
2948
+ pantryRackStyle?: "glass" | "tray" | "wire" | undefined;
2949
+ } | {
2950
+ id: string;
2951
+ height?: number | undefined;
2952
+ type: "fridge-single";
2953
+ } | {
2954
+ id: string;
2955
+ height?: number | undefined;
2956
+ type: "fridge-double";
2957
+ } | {
2958
+ id: string;
2959
+ height?: number | undefined;
2960
+ type: "fridge-top-freezer";
2961
+ } | {
2962
+ id: string;
2963
+ height?: number | undefined;
2964
+ type: "fridge-bottom-freezer";
2965
+ } | {
2966
+ id: string;
2967
+ height?: number | undefined;
2968
+ type: "hood-pyramid";
2969
+ } | {
2970
+ id: string;
2971
+ height?: number | undefined;
2972
+ type: "hood-curved-glass";
2973
+ })[] | undefined;
2974
+ id: `cabinet-module_${string}`;
2975
+ children: string[];
2976
+ cabinetType: "base" | "tall";
2977
+ moduleKind: "corner-filler" | "standard" | "wall-filler";
2978
+ openSide?: "left" | "right" | undefined;
2979
+ cornerShelf?: boolean | undefined;
2980
+ topFinish: "none" | "top-cabinet" | "trim";
2981
+ topFinishHeight: number;
2982
+ topFinishDepth: number;
2983
+ type: "cabinet-module";
2984
+ } | {
2985
+ object: "node";
2986
+ name?: string | undefined;
2987
+ parentId: string | null;
2988
+ visible: boolean;
2989
+ camera?: {
2990
+ position: [number, number, number];
2991
+ target: [number, number, number];
2992
+ mode: "orthographic" | "perspective";
2993
+ fov?: number | undefined;
2994
+ zoom?: number | undefined;
2995
+ } | undefined;
2996
+ metadata: Record<string, unknown>;
2997
+ provenance?: {
2998
+ refs: {
2999
+ ns?: string | undefined;
3000
+ id: string;
3001
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3002
+ }[];
3003
+ lineage?: {
3004
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3005
+ fromIds: string[];
3006
+ } | undefined;
3007
+ } | undefined;
3008
+ id: `downspout_${string}`;
3009
+ material?: {
3010
+ id?: string | undefined;
3011
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3012
+ properties?: {
3013
+ color: string;
3014
+ roughness: number;
3015
+ metalness: number;
3016
+ opacity: number;
3017
+ transparent: boolean;
3018
+ side: "back" | "double" | "front";
3019
+ } | undefined;
3020
+ texture?: {
3021
+ url: string;
3022
+ repeat?: [number, number] | undefined;
3023
+ scale?: number | undefined;
3024
+ offset?: [number, number] | undefined;
3025
+ normalMap?: string | undefined;
3026
+ normalScale?: number | undefined;
3027
+ bumpMap?: string | undefined;
3028
+ bumpScale?: number | undefined;
3029
+ } | undefined;
3030
+ } | undefined;
3031
+ slots?: Record<string, string> | undefined;
3032
+ materialPreset: string;
3033
+ gutterId?: string | undefined;
3034
+ outletId?: string | undefined;
3035
+ length: number;
3036
+ lengthMode?: "manual" | "to-ground" | undefined;
3037
+ diameter: number;
3038
+ standoff: number;
3039
+ shape: "auto" | "rect" | "round";
3040
+ strapStyle: "band" | "none";
3041
+ strapSpacing: number;
3042
+ terminal: "kickout" | "splash" | "straight";
3043
+ type: "downspout";
3044
+ } | {
3045
+ object: "node";
3046
+ name?: string | undefined;
3047
+ parentId: string | null;
3048
+ visible: boolean;
3049
+ camera?: {
3050
+ position: [number, number, number];
3051
+ target: [number, number, number];
3052
+ mode: "orthographic" | "perspective";
3053
+ fov?: number | undefined;
3054
+ zoom?: number | undefined;
3055
+ } | undefined;
3056
+ metadata: Record<string, unknown>;
3057
+ provenance?: {
3058
+ refs: {
3059
+ ns?: string | undefined;
3060
+ id: string;
3061
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3062
+ }[];
3063
+ lineage?: {
3064
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3065
+ fromIds: string[];
3066
+ } | undefined;
3067
+ } | undefined;
3068
+ id: `rvent_${string}`;
3069
+ material?: {
3070
+ id?: string | undefined;
3071
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3072
+ properties?: {
3073
+ color: string;
3074
+ roughness: number;
3075
+ metalness: number;
3076
+ opacity: number;
3077
+ transparent: boolean;
3078
+ side: "back" | "double" | "front";
3079
+ } | undefined;
3080
+ texture?: {
3081
+ url: string;
3082
+ repeat?: [number, number] | undefined;
3083
+ scale?: number | undefined;
3084
+ offset?: [number, number] | undefined;
3085
+ normalMap?: string | undefined;
3086
+ normalScale?: number | undefined;
3087
+ bumpMap?: string | undefined;
3088
+ bumpScale?: number | undefined;
3089
+ } | undefined;
3090
+ } | undefined;
3091
+ materialPreset?: string | undefined;
3092
+ roofSegmentId?: string | undefined;
3093
+ position: [number, number, number];
3094
+ rotation: number;
3095
+ length: number;
3096
+ width: number;
3097
+ height: number;
3098
+ style: "metal" | "shingled" | "standard";
3099
+ endCaps: boolean;
3100
+ type: "ridge-vent";
3101
+ } | {
3102
+ object: "node";
3103
+ name?: string | undefined;
3104
+ parentId: string | null;
3105
+ visible: boolean;
3106
+ camera?: {
3107
+ position: [number, number, number];
3108
+ target: [number, number, number];
3109
+ mode: "orthographic" | "perspective";
3110
+ fov?: number | undefined;
3111
+ zoom?: number | undefined;
3112
+ } | undefined;
3113
+ metadata: Record<string, unknown>;
3114
+ provenance?: {
3115
+ refs: {
3116
+ ns?: string | undefined;
3117
+ id: string;
3118
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3119
+ }[];
3120
+ lineage?: {
3121
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3122
+ fromIds: string[];
3123
+ } | undefined;
3124
+ } | undefined;
3125
+ id: `solarpanel_${string}`;
3126
+ material?: {
3127
+ id?: string | undefined;
3128
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3129
+ properties?: {
3130
+ color: string;
3131
+ roughness: number;
3132
+ metalness: number;
3133
+ opacity: number;
3134
+ transparent: boolean;
3135
+ side: "back" | "double" | "front";
3136
+ } | undefined;
3137
+ texture?: {
3138
+ url: string;
3139
+ repeat?: [number, number] | undefined;
3140
+ scale?: number | undefined;
3141
+ offset?: [number, number] | undefined;
3142
+ normalMap?: string | undefined;
3143
+ normalScale?: number | undefined;
3144
+ bumpMap?: string | undefined;
3145
+ bumpScale?: number | undefined;
3146
+ } | undefined;
3147
+ } | undefined;
3148
+ materialPreset?: string | undefined;
3149
+ panelMaterial?: {
3150
+ id?: string | undefined;
3151
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3152
+ properties?: {
3153
+ color: string;
3154
+ roughness: number;
3155
+ metalness: number;
3156
+ opacity: number;
3157
+ transparent: boolean;
3158
+ side: "back" | "double" | "front";
3159
+ } | undefined;
3160
+ texture?: {
3161
+ url: string;
3162
+ repeat?: [number, number] | undefined;
3163
+ scale?: number | undefined;
3164
+ offset?: [number, number] | undefined;
3165
+ normalMap?: string | undefined;
3166
+ normalScale?: number | undefined;
3167
+ bumpMap?: string | undefined;
3168
+ bumpScale?: number | undefined;
3169
+ } | undefined;
3170
+ } | undefined;
3171
+ panelMaterialPreset?: string | undefined;
3172
+ panelTypePreset?: "compact" | "frameless" | "residential" | "residential-large" | undefined;
3173
+ roofSegmentId?: string | undefined;
3174
+ position: [number, number, number];
3175
+ rotation: number;
3176
+ rows: number;
3177
+ columns: number;
3178
+ panelWidth: number;
3179
+ panelHeight: number;
3180
+ gapX: number;
3181
+ gapY: number;
3182
+ mountingType: "flush" | "tilted";
3183
+ tiltAngle: number;
3184
+ standoffHeight: number;
3185
+ frameThickness: number;
3186
+ frameDepth: number;
3187
+ surfaceNormal?: [number, number, number] | undefined;
3188
+ type: "solar-panel";
3189
+ } | {
3190
+ object: "node";
3191
+ name?: string | undefined;
3192
+ parentId: string | null;
3193
+ visible: boolean;
3194
+ camera?: {
3195
+ position: [number, number, number];
3196
+ target: [number, number, number];
3197
+ mode: "orthographic" | "perspective";
3198
+ fov?: number | undefined;
3199
+ zoom?: number | undefined;
3200
+ } | undefined;
3201
+ metadata: Record<string, unknown>;
3202
+ provenance?: {
3203
+ refs: {
3204
+ ns?: string | undefined;
3205
+ id: string;
3206
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3207
+ }[];
3208
+ lineage?: {
3209
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3210
+ fromIds: string[];
3211
+ } | undefined;
3212
+ } | undefined;
3213
+ id: `site_${string}`;
3214
+ polygon: {
3215
+ type: "polygon";
3216
+ points: [number, number][];
3217
+ };
3218
+ terrain?: {
3219
+ type: "heightfield";
3220
+ origin: [number, number];
3221
+ spacing: number;
3222
+ cols: number;
3223
+ rows: number;
3224
+ step: number;
3225
+ heights: string;
3226
+ } | undefined;
3227
+ showGround?: boolean | undefined;
3228
+ presentation?: {
3229
+ theme?: string | undefined;
3230
+ exposure?: number | undefined;
3231
+ shading?: "rendered" | "solid" | undefined;
3232
+ edges?: "off" | "soft" | "strong" | undefined;
3233
+ shadows?: boolean | undefined;
3234
+ lighting?: {
3235
+ background?: string | undefined;
3236
+ backgroundSky?: string | null | undefined;
3237
+ ground?: string | undefined;
3238
+ ambient?: {
3239
+ color: string;
3240
+ intensity: number;
3241
+ } | undefined;
3242
+ hemi?: {
3243
+ sky: string;
3244
+ ground: string;
3245
+ intensity: number;
3246
+ } | undefined;
3247
+ lights?: {
3248
+ color: string;
3249
+ intensity: number;
3250
+ position: [number, number, number];
3251
+ target?: [number, number, number] | undefined;
3252
+ castShadow?: boolean | undefined;
3253
+ shadow?: {
3254
+ intensity?: number | undefined;
3255
+ bias?: number | undefined;
3256
+ normalBias?: number | undefined;
3257
+ radius?: number | undefined;
3258
+ mapSize?: 512 | 1024 | 2048 | 4096 | undefined;
3259
+ camera?: {
3260
+ left: number;
3261
+ right: number;
3262
+ top: number;
3263
+ bottom: number;
3264
+ near: number;
3265
+ far: number;
3266
+ } | undefined;
3267
+ } | undefined;
3268
+ }[] | undefined;
3269
+ environment?: {
3270
+ source: "gradient" | "none" | "room";
3271
+ intensity: number;
3272
+ } | undefined;
3273
+ } | undefined;
3274
+ postprocessing?: {
3275
+ ambientOcclusion?: boolean | undefined;
3276
+ colorGrading?: boolean | undefined;
3277
+ } | undefined;
3278
+ display?: {
3279
+ mode?: "construction" | "finished" | "systems" | undefined;
3280
+ families?: Partial<Record<"device" | "exposed-structure" | "fill" | "finish" | "foundation" | "framing" | "inspection" | "insulation" | "masonry" | "membrane" | "run" | "service-space" | "sheathing", boolean>> | undefined;
3281
+ disciplines?: Partial<Record<"electrical" | "fire" | "low-voltage" | "mechanical" | "plumbing", boolean>> | undefined;
3282
+ xray?: boolean | undefined;
3283
+ colorBy?: "material" | "service" | undefined;
3284
+ } | undefined;
3285
+ } | undefined;
3286
+ address?: {
3287
+ street?: string | undefined;
3288
+ city?: string | undefined;
3289
+ state?: string | undefined;
3290
+ zip?: string | undefined;
3291
+ } | undefined;
3292
+ parcel?: {
3293
+ apn?: string | undefined;
3294
+ source?: string | undefined;
3295
+ county?: string | undefined;
3296
+ state?: string | undefined;
3297
+ lotAreaSqFt?: number | undefined;
3298
+ originLngLat?: [number, number] | undefined;
3299
+ resolvedAt?: string | undefined;
3300
+ layer?: string | undefined;
3301
+ notes?: string[] | undefined;
3302
+ } | undefined;
3303
+ setbacks?: {
3304
+ front: number;
3305
+ side: number;
3306
+ rear: number;
3307
+ left?: number | undefined;
3308
+ right?: number | undefined;
3309
+ streetSide?: number | undefined;
3310
+ } | undefined;
3311
+ setbacksSource?: string | undefined;
3312
+ zone?: string | undefined;
3313
+ frontEdge?: number | undefined;
3314
+ streetEdges?: number[] | undefined;
3315
+ sightTriangleFt?: number | undefined;
3316
+ northRotation?: number | undefined;
3317
+ dossier?: {
3318
+ [x: string]: unknown;
3319
+ provider: string;
3320
+ asOf: string;
3321
+ point?: {
3322
+ lat?: number | undefined;
3323
+ lng?: number | undefined;
3324
+ source?: string | undefined;
3325
+ } | undefined;
3326
+ address?: {
3327
+ formatted?: string | undefined;
3328
+ precision?: string | undefined;
3329
+ } | undefined;
3330
+ sections: Record<string, {
3331
+ [x: string]: unknown;
3332
+ status: string;
3333
+ summary?: string | undefined;
3334
+ reason?: string | undefined;
3335
+ source?: {
3336
+ name?: string | undefined;
3337
+ kind?: string | undefined;
3338
+ vintage?: string | undefined;
3339
+ attribution?: string | undefined;
3340
+ } | undefined;
3341
+ }>;
3342
+ parcel?: Record<string, unknown> | undefined;
3343
+ flood?: Record<string, unknown> | undefined;
3344
+ codeBasis?: Record<string, unknown> | undefined;
3345
+ zoning?: Record<string, unknown> | undefined;
3346
+ utilities?: Record<string, unknown> | undefined;
3347
+ soils?: Record<string, unknown> | undefined;
3348
+ wetlands?: Record<string, unknown> | undefined;
3349
+ structures?: Record<string, unknown> | undefined;
3350
+ elevation?: Record<string, unknown> | undefined;
3351
+ boundaries?: Record<string, unknown> | undefined;
3352
+ } | undefined;
3353
+ contourIntervalIn?: number | undefined;
3354
+ contours3d?: boolean | undefined;
3355
+ terrainContours?: {
3356
+ datum: string;
3357
+ intervalFt: number;
3358
+ source?: string | undefined;
3359
+ lines: {
3360
+ elevationFt: number;
3361
+ points: [number, number][];
3362
+ }[];
3363
+ } | undefined;
3364
+ wallTypes?: {
3365
+ id: string;
3366
+ label: string;
3367
+ assembly: {
3368
+ layers: {
3369
+ id: string;
3370
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
3371
+ thickness: number;
3372
+ core?: true | undefined;
3373
+ spacing?: number | undefined;
3374
+ material?: string | undefined;
3375
+ slot?: string | undefined;
3376
+ returns?: boolean | undefined;
3377
+ display?: "construction" | "finished" | undefined;
3378
+ inset?: number | undefined;
3379
+ bottom?: number | undefined;
3380
+ lift?: number | undefined;
3381
+ src?: string | undefined;
3382
+ }[];
3383
+ backing?: {
3384
+ id: string;
3385
+ role: "air" | "covering" | "deck" | "fill" | "finish" | "furring" | "glazing" | "insulation" | "lining" | "membrane" | "sheathing" | "shell" | "structure" | "substrate" | "underlay";
3386
+ thickness: number;
3387
+ core?: true | undefined;
3388
+ spacing?: number | undefined;
3389
+ material?: string | undefined;
3390
+ slot?: string | undefined;
3391
+ returns?: boolean | undefined;
3392
+ display?: "construction" | "finished" | undefined;
3393
+ inset?: number | undefined;
3394
+ bottom?: number | undefined;
3395
+ lift?: number | undefined;
3396
+ src?: string | undefined;
3397
+ }[] | undefined;
3398
+ face?: "exterior" | "front" | undefined;
3399
+ presetId?: string | undefined;
3400
+ cavityInsulation?: string | undefined;
3401
+ };
3402
+ }[] | undefined;
3403
+ children: string[];
3404
+ type: "site";
3134
3405
  } | {
3135
3406
  object: "node";
3136
3407
  name?: string | undefined;
@@ -3360,6 +3631,37 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
3360
3631
  slots: Record<string, string>;
3361
3632
  slotNames: Record<string, string>;
3362
3633
  type: "block";
3634
+ } | {
3635
+ object: "node";
3636
+ name?: string | undefined;
3637
+ parentId: string | null;
3638
+ visible: boolean;
3639
+ camera?: {
3640
+ position: [number, number, number];
3641
+ target: [number, number, number];
3642
+ mode: "orthographic" | "perspective";
3643
+ fov?: number | undefined;
3644
+ zoom?: number | undefined;
3645
+ } | undefined;
3646
+ metadata: Record<string, unknown>;
3647
+ provenance?: {
3648
+ refs: {
3649
+ ns?: string | undefined;
3650
+ id: string;
3651
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3652
+ }[];
3653
+ lineage?: {
3654
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3655
+ fromIds: string[];
3656
+ } | undefined;
3657
+ } | undefined;
3658
+ id: `structural-grid_${string}`;
3659
+ start: [number, number];
3660
+ end: [number, number];
3661
+ label: string;
3662
+ showStartBubble: boolean;
3663
+ showEndBubble: boolean;
3664
+ type: "structural-grid";
3363
3665
  } | {
3364
3666
  object: "node";
3365
3667
  name?: string | undefined;
@@ -4193,52 +4495,20 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4193
4495
  fromIds: string[];
4194
4496
  } | undefined;
4195
4497
  } | undefined;
4196
- id: `guide_${string}`;
4197
- url: string;
4498
+ id: `scan_${string}`;
4499
+ url: string | null;
4500
+ captureSession: {
4501
+ sessionId: string;
4502
+ schemaVersion?: number | undefined;
4503
+ revisionId?: string | undefined;
4504
+ manifestUrl?: string | undefined;
4505
+ } | null;
4506
+ layers: Record<string, boolean>;
4198
4507
  position: [number, number, number];
4199
4508
  rotation: [number, number, number];
4200
4509
  scale: number;
4201
4510
  opacity: number;
4202
- scaleReference: {
4203
- start: [number, number];
4204
- end: [number, number];
4205
- realLengthMeters: number;
4206
- measuredLengthUnits: number;
4207
- metersPerUnit: number;
4208
- displayLength?: number | undefined;
4209
- displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
4210
- label: string;
4211
- } | null;
4212
- type: "guide";
4213
- } | {
4214
- object: "node";
4215
- name?: string | undefined;
4216
- parentId: string | null;
4217
- visible: boolean;
4218
- camera?: {
4219
- position: [number, number, number];
4220
- target: [number, number, number];
4221
- mode: "orthographic" | "perspective";
4222
- fov?: number | undefined;
4223
- zoom?: number | undefined;
4224
- } | undefined;
4225
- metadata: Record<string, unknown>;
4226
- provenance?: {
4227
- refs: {
4228
- ns?: string | undefined;
4229
- id: string;
4230
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4231
- }[];
4232
- lineage?: {
4233
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4234
- fromIds: string[];
4235
- } | undefined;
4236
- } | undefined;
4237
- id: `spawn_${string}`;
4238
- position: [number, number, number];
4239
- rotation: number;
4240
- supportSlabId?: string | undefined;
4241
- type: "spawn";
4511
+ type: "scan";
4242
4512
  } | {
4243
4513
  object: "node";
4244
4514
  name?: string | undefined;
@@ -4263,47 +4533,52 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4263
4533
  fromIds: string[];
4264
4534
  } | undefined;
4265
4535
  } | undefined;
4266
- id: `shelf_${string}`;
4267
- children: string[];
4536
+ id: `guide_${string}`;
4537
+ url: string;
4268
4538
  position: [number, number, number];
4269
4539
  rotation: [number, number, number];
4270
- supportSlabId?: string | undefined;
4271
- width: number;
4272
- depth: number;
4273
- thickness: number;
4274
- height: number;
4275
- style: "bookshelf" | "cubby" | "open-rack" | "wall-shelf";
4276
- rows: number;
4277
- columns: number;
4278
- withBack: boolean;
4279
- withSides: boolean;
4280
- withBottom: boolean;
4281
- bracketStyle: "hidden" | "industrial" | "minimal";
4282
- material?: {
4283
- id?: string | undefined;
4284
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4285
- properties?: {
4286
- color: string;
4287
- roughness: number;
4288
- metalness: number;
4289
- opacity: number;
4290
- transparent: boolean;
4291
- side: "back" | "double" | "front";
4292
- } | undefined;
4293
- texture?: {
4294
- url: string;
4295
- repeat?: [number, number] | undefined;
4296
- scale?: number | undefined;
4297
- offset?: [number, number] | undefined;
4298
- normalMap?: string | undefined;
4299
- normalScale?: number | undefined;
4300
- bumpMap?: string | undefined;
4301
- bumpScale?: number | undefined;
4540
+ scale: number;
4541
+ opacity: number;
4542
+ scaleReference: {
4543
+ start: [number, number];
4544
+ end: [number, number];
4545
+ realLengthMeters: number;
4546
+ measuredLengthUnits: number;
4547
+ metersPerUnit: number;
4548
+ displayLength?: number | undefined;
4549
+ displayUnit?: "centimeters" | "feet" | "inches" | "meters" | undefined;
4550
+ label: string;
4551
+ } | null;
4552
+ type: "guide";
4553
+ } | {
4554
+ object: "node";
4555
+ name?: string | undefined;
4556
+ parentId: string | null;
4557
+ visible: boolean;
4558
+ camera?: {
4559
+ position: [number, number, number];
4560
+ target: [number, number, number];
4561
+ mode: "orthographic" | "perspective";
4562
+ fov?: number | undefined;
4563
+ zoom?: number | undefined;
4564
+ } | undefined;
4565
+ metadata: Record<string, unknown>;
4566
+ provenance?: {
4567
+ refs: {
4568
+ ns?: string | undefined;
4569
+ id: string;
4570
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4571
+ }[];
4572
+ lineage?: {
4573
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4574
+ fromIds: string[];
4302
4575
  } | undefined;
4303
4576
  } | undefined;
4304
- materialPreset?: string | undefined;
4305
- slots?: Record<string, string> | undefined;
4306
- type: "shelf";
4577
+ id: `spawn_${string}`;
4578
+ position: [number, number, number];
4579
+ rotation: number;
4580
+ supportSlabId?: string | undefined;
4581
+ type: "spawn";
4307
4582
  } | {
4308
4583
  object: "node";
4309
4584
  name?: string | undefined;
@@ -4642,7 +4917,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4642
4917
  type: "elevator";
4643
4918
  } | {
4644
4919
  object: "node";
4645
- name?: string | undefined;
4646
4920
  parentId: string | null;
4647
4921
  visible: boolean;
4648
4922
  camera?: {
@@ -4652,7 +4926,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4652
4926
  fov?: number | undefined;
4653
4927
  zoom?: number | undefined;
4654
4928
  } | undefined;
4655
- metadata: Record<string, unknown>;
4656
4929
  provenance?: {
4657
4930
  refs: {
4658
4931
  ns?: string | undefined;
@@ -4664,12 +4937,13 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4664
4937
  fromIds: string[];
4665
4938
  } | undefined;
4666
4939
  } | undefined;
4667
- id: `building_${string}`;
4668
- children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
4669
- position: [number, number, number];
4670
- rotation: [number, number, number];
4671
- groundLevelId?: `level_${string}` | undefined;
4672
- type: "building";
4940
+ id: `unit_${string}`;
4941
+ name: string;
4942
+ kind: "apartment" | "commercial" | "common" | "hotel-room";
4943
+ members: `zone_${string}`[];
4944
+ color: string;
4945
+ metadata: Record<string, unknown>;
4946
+ type: "unit";
4673
4947
  } | {
4674
4948
  object: "node";
4675
4949
  name?: string | undefined;
@@ -4694,147 +4968,12 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4694
4968
  fromIds: string[];
4695
4969
  } | undefined;
4696
4970
  } | undefined;
4971
+ id: `building_${string}`;
4972
+ children: (`elevator_${string}` | `level_${string}` | `unit_${string}`)[];
4697
4973
  position: [number, number, number];
4698
- rotation: number;
4699
- supportSlabId?: string | undefined;
4700
- width: number;
4701
- depth: number;
4702
- carcassHeight: number;
4703
- operationState: number;
4704
- plinthHeight: number;
4705
- toeKickDepth: number;
4706
- boardThickness: number;
4707
- countertopThickness: number;
4708
- countertopOverhang: number;
4709
- countertopBackOverhang: number;
4710
- withFinishedBack: boolean;
4711
- frontThickness: number;
4712
- frontGap: number;
4713
- frontStyle: "raised-arch" | "shaker" | "slab";
4714
- panelReady: boolean;
4715
- handleStyle: "bar" | "cutout" | "hole" | "knob" | "none";
4716
- handlePosition: "auto" | "center" | "top";
4717
- frontOverlay: "full" | "inset";
4718
- withBottomPanel: boolean;
4719
- showPlinth: boolean;
4720
- withCountertop: boolean;
4721
- material?: {
4722
- id?: string | undefined;
4723
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4724
- properties?: {
4725
- color: string;
4726
- roughness: number;
4727
- metalness: number;
4728
- opacity: number;
4729
- transparent: boolean;
4730
- side: "back" | "double" | "front";
4731
- } | undefined;
4732
- texture?: {
4733
- url: string;
4734
- repeat?: [number, number] | undefined;
4735
- scale?: number | undefined;
4736
- offset?: [number, number] | undefined;
4737
- normalMap?: string | undefined;
4738
- normalScale?: number | undefined;
4739
- bumpMap?: string | undefined;
4740
- bumpScale?: number | undefined;
4741
- } | undefined;
4742
- } | undefined;
4743
- materialPreset?: string | undefined;
4744
- slots?: Record<string, string> | undefined;
4745
- stack?: ({
4746
- id: string;
4747
- height?: number | undefined;
4748
- type: "shelf";
4749
- shelfCount?: number | undefined;
4750
- } | {
4751
- id: string;
4752
- height?: number | undefined;
4753
- type: "drawer";
4754
- drawerCount?: number | undefined;
4755
- } | {
4756
- id: string;
4757
- height?: number | undefined;
4758
- type: "door";
4759
- doorType?: "double" | "glass" | "single-left" | "single-right" | undefined;
4760
- shelfCount?: number | undefined;
4761
- } | {
4762
- id: string;
4763
- height?: number | undefined;
4764
- type: "sink";
4765
- sinkLayout?: "double" | "double-offset" | "single" | undefined;
4766
- } | {
4767
- id: string;
4768
- height?: number | undefined;
4769
- type: "oven";
4770
- } | {
4771
- id: string;
4772
- height?: number | undefined;
4773
- type: "microwave";
4774
- } | {
4775
- id: string;
4776
- height?: number | undefined;
4777
- type: "dishwasher";
4778
- } | {
4779
- id: string;
4780
- height?: number | undefined;
4781
- cooktopBurnersOn?: boolean | undefined;
4782
- cooktopActiveBurners?: number[] | undefined;
4783
- cooktopKnobProgress?: number[] | undefined;
4784
- cooktopShowGrate?: boolean | undefined;
4785
- type: "cooktop-gas";
4786
- cooktopLayout?: "gas-2burner" | "gas-4burner" | "gas-5burner-wok" | "gas-6burner" | undefined;
4787
- } | {
4788
- id: string;
4789
- height?: number | undefined;
4790
- cooktopBurnersOn?: boolean | undefined;
4791
- cooktopActiveBurners?: number[] | undefined;
4792
- cooktopKnobProgress?: number[] | undefined;
4793
- cooktopShowGrate?: boolean | undefined;
4794
- type: "cooktop-induction";
4795
- cooktopLayout?: "induction-2zone" | "induction-4zone" | undefined;
4796
- } | {
4797
- id: string;
4798
- height?: number | undefined;
4799
- type: "pull-out-pantry";
4800
- shelfCount?: number | undefined;
4801
- pantryRackStyle?: "glass" | "tray" | "wire" | undefined;
4802
- } | {
4803
- id: string;
4804
- height?: number | undefined;
4805
- type: "fridge-single";
4806
- } | {
4807
- id: string;
4808
- height?: number | undefined;
4809
- type: "fridge-double";
4810
- } | {
4811
- id: string;
4812
- height?: number | undefined;
4813
- type: "fridge-top-freezer";
4814
- } | {
4815
- id: string;
4816
- height?: number | undefined;
4817
- type: "fridge-bottom-freezer";
4818
- } | {
4819
- id: string;
4820
- height?: number | undefined;
4821
- type: "hood-pyramid";
4822
- } | {
4823
- id: string;
4824
- height?: number | undefined;
4825
- type: "hood-curved-glass";
4826
- })[] | undefined;
4827
- id: `cabinet_${string}`;
4828
- runTier: "base" | "tall" | "wall";
4829
- children: string[];
4830
- barLedge?: {
4831
- edge: "back" | "left" | "right";
4832
- height: number;
4833
- depth: number;
4834
- } | undefined;
4835
- withWaterfall: boolean;
4836
- withFinishedEnds: boolean;
4837
- type: "cabinet";
4974
+ rotation: [number, number, number];
4975
+ groundLevelId?: `level_${string}` | undefined;
4976
+ type: "building";
4838
4977
  } | {
4839
4978
  object: "node";
4840
4979
  name?: string | undefined;
@@ -4859,146 +4998,59 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
4859
4998
  fromIds: string[];
4860
4999
  } | undefined;
4861
5000
  } | undefined;
4862
- position: [number, number, number];
4863
- rotation: number;
4864
- supportSlabId?: string | undefined;
4865
- width: number;
4866
- depth: number;
4867
- carcassHeight: number;
4868
- operationState: number;
4869
- plinthHeight: number;
4870
- toeKickDepth: number;
4871
- boardThickness: number;
4872
- countertopThickness: number;
4873
- countertopOverhang: number;
4874
- countertopBackOverhang: number;
4875
- withFinishedBack: boolean;
4876
- frontThickness: number;
4877
- frontGap: number;
4878
- frontStyle: "raised-arch" | "shaker" | "slab";
4879
- panelReady: boolean;
4880
- handleStyle: "bar" | "cutout" | "hole" | "knob" | "none";
4881
- handlePosition: "auto" | "center" | "top";
4882
- frontOverlay: "full" | "inset";
4883
- withBottomPanel: boolean;
4884
- showPlinth: boolean;
4885
- withCountertop: boolean;
4886
- material?: {
4887
- id?: string | undefined;
4888
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4889
- properties?: {
4890
- color: string;
4891
- roughness: number;
4892
- metalness: number;
4893
- opacity: number;
4894
- transparent: boolean;
4895
- side: "back" | "double" | "front";
4896
- } | undefined;
4897
- texture?: {
4898
- url: string;
4899
- repeat?: [number, number] | undefined;
4900
- scale?: number | undefined;
4901
- offset?: [number, number] | undefined;
4902
- normalMap?: string | undefined;
4903
- normalScale?: number | undefined;
4904
- bumpMap?: string | undefined;
4905
- bumpScale?: number | undefined;
5001
+ matchFenceStyle?: boolean | undefined;
5002
+ matchFenceHeight?: boolean | undefined;
5003
+ leafType?: "double" | "single" | undefined;
5004
+ style?: "guard" | "horizontal" | "match" | "picket" | "privacy" | "rail" | "slat" | undefined;
5005
+ height?: number | undefined;
5006
+ clearance?: number | undefined;
5007
+ thickness?: number | undefined;
5008
+ frameWidth?: number | undefined;
5009
+ spacing?: number | undefined;
5010
+ boardWidth?: number | undefined;
5011
+ hinge?: "left" | "right" | undefined;
5012
+ swing?: "inward" | "outward" | undefined;
5013
+ openAngle?: number | undefined;
5014
+ leafSplit?: number | undefined;
5015
+ brace?: "cross" | "diagonal" | "none" | undefined;
5016
+ showHardware?: boolean | undefined;
5017
+ showPosts?: boolean | undefined;
5018
+ id: `fence-gate_${string}`;
5019
+ center: number;
5020
+ width: number;
5021
+ type: "fence-gate";
5022
+ } | {
5023
+ object: "node";
5024
+ name?: string | undefined;
5025
+ parentId: string | null;
5026
+ visible: boolean;
5027
+ camera?: {
5028
+ position: [number, number, number];
5029
+ target: [number, number, number];
5030
+ mode: "orthographic" | "perspective";
5031
+ fov?: number | undefined;
5032
+ zoom?: number | undefined;
5033
+ } | undefined;
5034
+ metadata: Record<string, unknown>;
5035
+ provenance?: {
5036
+ refs: {
5037
+ ns?: string | undefined;
5038
+ id: string;
5039
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5040
+ }[];
5041
+ lineage?: {
5042
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5043
+ fromIds: string[];
4906
5044
  } | undefined;
4907
5045
  } | undefined;
4908
- materialPreset?: string | undefined;
4909
- slots?: Record<string, string> | undefined;
4910
- stack?: ({
4911
- id: string;
4912
- height?: number | undefined;
4913
- type: "shelf";
4914
- shelfCount?: number | undefined;
4915
- } | {
4916
- id: string;
4917
- height?: number | undefined;
4918
- type: "drawer";
4919
- drawerCount?: number | undefined;
4920
- } | {
4921
- id: string;
4922
- height?: number | undefined;
4923
- type: "door";
4924
- doorType?: "double" | "glass" | "single-left" | "single-right" | undefined;
4925
- shelfCount?: number | undefined;
4926
- } | {
4927
- id: string;
4928
- height?: number | undefined;
4929
- type: "sink";
4930
- sinkLayout?: "double" | "double-offset" | "single" | undefined;
4931
- } | {
4932
- id: string;
4933
- height?: number | undefined;
4934
- type: "oven";
4935
- } | {
4936
- id: string;
4937
- height?: number | undefined;
4938
- type: "microwave";
4939
- } | {
4940
- id: string;
4941
- height?: number | undefined;
4942
- type: "dishwasher";
4943
- } | {
4944
- id: string;
4945
- height?: number | undefined;
4946
- cooktopBurnersOn?: boolean | undefined;
4947
- cooktopActiveBurners?: number[] | undefined;
4948
- cooktopKnobProgress?: number[] | undefined;
4949
- cooktopShowGrate?: boolean | undefined;
4950
- type: "cooktop-gas";
4951
- cooktopLayout?: "gas-2burner" | "gas-4burner" | "gas-5burner-wok" | "gas-6burner" | undefined;
4952
- } | {
4953
- id: string;
4954
- height?: number | undefined;
4955
- cooktopBurnersOn?: boolean | undefined;
4956
- cooktopActiveBurners?: number[] | undefined;
4957
- cooktopKnobProgress?: number[] | undefined;
4958
- cooktopShowGrate?: boolean | undefined;
4959
- type: "cooktop-induction";
4960
- cooktopLayout?: "induction-2zone" | "induction-4zone" | undefined;
4961
- } | {
4962
- id: string;
4963
- height?: number | undefined;
4964
- type: "pull-out-pantry";
4965
- shelfCount?: number | undefined;
4966
- pantryRackStyle?: "glass" | "tray" | "wire" | undefined;
4967
- } | {
4968
- id: string;
4969
- height?: number | undefined;
4970
- type: "fridge-single";
4971
- } | {
4972
- id: string;
4973
- height?: number | undefined;
4974
- type: "fridge-double";
4975
- } | {
4976
- id: string;
4977
- height?: number | undefined;
4978
- type: "fridge-top-freezer";
4979
- } | {
4980
- id: string;
4981
- height?: number | undefined;
4982
- type: "fridge-bottom-freezer";
4983
- } | {
4984
- id: string;
4985
- height?: number | undefined;
4986
- type: "hood-pyramid";
4987
- } | {
4988
- id: string;
4989
- height?: number | undefined;
4990
- type: "hood-curved-glass";
4991
- })[] | undefined;
4992
- id: `cabinet-module_${string}`;
4993
- children: string[];
4994
- cabinetType: "base" | "tall";
4995
- moduleKind: "corner-filler" | "standard" | "wall-filler";
4996
- openSide?: "left" | "right" | undefined;
4997
- cornerShelf?: boolean | undefined;
4998
- topFinish: "none" | "top-cabinet" | "trim";
4999
- topFinishHeight: number;
5000
- topFinishDepth: number;
5001
- type: "cabinet-module";
5046
+ center: number;
5047
+ width: number;
5048
+ matchFenceStyle?: boolean | undefined;
5049
+ matchFenceHeight?: boolean | undefined;
5050
+ height?: number | undefined;
5051
+ showPosts: boolean;
5052
+ id: `fence-opening_${string}`;
5053
+ type: "fence-opening";
5002
5054
  } | {
5003
5055
  object: "node";
5004
5056
  name?: string | undefined;
@@ -5088,7 +5140,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5088
5140
  fromIds: string[];
5089
5141
  } | undefined;
5090
5142
  } | undefined;
5091
- id: `rvent_${string}`;
5143
+ id: `tvent_${string}`;
5092
5144
  material?: {
5093
5145
  id?: string | undefined;
5094
5146
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -5111,16 +5163,19 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5111
5163
  bumpScale?: number | undefined;
5112
5164
  } | undefined;
5113
5165
  } | undefined;
5114
- materialPreset?: string | undefined;
5166
+ slots?: Record<string, string> | undefined;
5167
+ materialPreset: string;
5115
5168
  roofSegmentId?: string | undefined;
5116
5169
  position: [number, number, number];
5117
5170
  rotation: number;
5118
- length: number;
5119
- width: number;
5171
+ diameter: number;
5120
5172
  height: number;
5121
- style: "metal" | "shingled" | "standard";
5122
- endCaps: boolean;
5123
- type: "ridge-vent";
5173
+ neckHeight: number;
5174
+ baseOverhang: number;
5175
+ vaneCount: number;
5176
+ spinSpeed: number;
5177
+ style: "cylinder" | "globe";
5178
+ type: "turbine-vent";
5124
5179
  } | {
5125
5180
  object: "node";
5126
5181
  name?: string | undefined;
@@ -5145,7 +5200,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5145
5200
  fromIds: string[];
5146
5201
  } | undefined;
5147
5202
  } | undefined;
5148
- id: `tvent_${string}`;
5203
+ id: `cupola_${string}`;
5149
5204
  material?: {
5150
5205
  id?: string | undefined;
5151
5206
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -5173,14 +5228,12 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5173
5228
  roofSegmentId?: string | undefined;
5174
5229
  position: [number, number, number];
5175
5230
  rotation: number;
5176
- diameter: number;
5231
+ width: number;
5232
+ depth: number;
5177
5233
  height: number;
5178
- neckHeight: number;
5179
- baseOverhang: number;
5180
- vaneCount: number;
5181
- spinSpeed: number;
5182
- style: "cylinder" | "globe";
5183
- type: "turbine-vent";
5234
+ roofStyle: "dome" | "pyramid";
5235
+ finial: boolean;
5236
+ type: "cupola";
5184
5237
  } | {
5185
5238
  object: "node";
5186
5239
  name?: string | undefined;
@@ -5445,7 +5498,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5445
5498
  fromIds: string[];
5446
5499
  } | undefined;
5447
5500
  } | undefined;
5448
- id: `solarpanel_${string}`;
5501
+ id: `skylight_${string}`;
5449
5502
  material?: {
5450
5503
  id?: string | undefined;
5451
5504
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -5469,7 +5522,7 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5469
5522
  } | undefined;
5470
5523
  } | undefined;
5471
5524
  materialPreset?: string | undefined;
5472
- panelMaterial?: {
5525
+ glassMaterial?: {
5473
5526
  id?: string | undefined;
5474
5527
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5475
5528
  properties?: {
@@ -5491,24 +5544,31 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5491
5544
  bumpScale?: number | undefined;
5492
5545
  } | undefined;
5493
5546
  } | undefined;
5494
- panelMaterialPreset?: string | undefined;
5495
- panelTypePreset?: "compact" | "frameless" | "residential" | "residential-large" | undefined;
5547
+ glassMaterialPreset?: string | undefined;
5496
5548
  roofSegmentId?: string | undefined;
5497
5549
  position: [number, number, number];
5498
5550
  rotation: number;
5499
- rows: number;
5500
- columns: number;
5501
- panelWidth: number;
5502
- panelHeight: number;
5503
- gapX: number;
5504
- gapY: number;
5505
- mountingType: "flush" | "tilted";
5506
- tiltAngle: number;
5507
- standoffHeight: number;
5551
+ width: number;
5552
+ height: number;
5508
5553
  frameThickness: number;
5509
5554
  frameDepth: number;
5555
+ skylightType: "flat" | "lantern" | "opening" | "sliding" | "walk-on";
5556
+ glassThickness: number;
5557
+ lanternHeight: number;
5558
+ lanternTopScale: number;
5559
+ openingAngle: number;
5560
+ openingSide: "bottom" | "left" | "right" | "top";
5561
+ operationState: number;
5562
+ motorHousing: boolean;
5563
+ slideFraction: number;
5564
+ slideDirection: "x" | "z";
5565
+ trackWidth: number;
5566
+ motorHousingSize: number;
5567
+ curb: boolean;
5568
+ curbHeight: number;
5569
+ cutoutOffset: number;
5510
5570
  surfaceNormal?: [number, number, number] | undefined;
5511
- type: "solar-panel";
5571
+ type: "skylight";
5512
5572
  } | {
5513
5573
  object: "node";
5514
5574
  name?: string | undefined;
@@ -5653,66 +5713,6 @@ export declare function getNodesWithLiveStairOpeningInputs(nodes: Record<string,
5653
5713
  windowSillThickness: number;
5654
5714
  children: `window_${string}`[];
5655
5715
  type: "dormer";
5656
- } | {
5657
- object: "node";
5658
- name?: string | undefined;
5659
- parentId: string | null;
5660
- visible: boolean;
5661
- camera?: {
5662
- position: [number, number, number];
5663
- target: [number, number, number];
5664
- mode: "orthographic" | "perspective";
5665
- fov?: number | undefined;
5666
- zoom?: number | undefined;
5667
- } | undefined;
5668
- metadata: Record<string, unknown>;
5669
- provenance?: {
5670
- refs: {
5671
- ns?: string | undefined;
5672
- id: string;
5673
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5674
- }[];
5675
- lineage?: {
5676
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5677
- fromIds: string[];
5678
- } | undefined;
5679
- } | undefined;
5680
- id: `downspout_${string}`;
5681
- material?: {
5682
- id?: string | undefined;
5683
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
5684
- properties?: {
5685
- color: string;
5686
- roughness: number;
5687
- metalness: number;
5688
- opacity: number;
5689
- transparent: boolean;
5690
- side: "back" | "double" | "front";
5691
- } | undefined;
5692
- texture?: {
5693
- url: string;
5694
- repeat?: [number, number] | undefined;
5695
- scale?: number | undefined;
5696
- offset?: [number, number] | undefined;
5697
- normalMap?: string | undefined;
5698
- normalScale?: number | undefined;
5699
- bumpMap?: string | undefined;
5700
- bumpScale?: number | undefined;
5701
- } | undefined;
5702
- } | undefined;
5703
- slots?: Record<string, string> | undefined;
5704
- materialPreset: string;
5705
- gutterId?: string | undefined;
5706
- outletId?: string | undefined;
5707
- length: number;
5708
- lengthMode?: "manual" | "to-ground" | undefined;
5709
- diameter: number;
5710
- standoff: number;
5711
- shape: "auto" | "rect" | "round";
5712
- strapStyle: "band" | "none";
5713
- strapSpacing: number;
5714
- terminal: "kickout" | "splash" | "straight";
5715
- type: "downspout";
5716
5716
  }>;
5717
5717
  export declare function createSurfaceOpeningPreviewController(): {
5718
5718
  previewSurfaceIds: Set<`beam_${string}` | `block_${string}` | `building_${string}` | `bvent_${string}` | `cabinet-module_${string}` | `cabinet_${string}` | `ceiling_${string}` | `chimney_${string}` | `column_${string}` | `construction-dimension_${string}` | `cupola_${string}` | `door_${string}` | `dormer_${string}` | `downspout_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `elevator_${string}` | `eyebrow-vent_${string}` | `fence-gate_${string}` | `fence-opening_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `gutter_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `leanto_${string}` | `level_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `rseg_${string}` | `rvent_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `site_${string}` | `skylight_${string}` | `slab_${string}` | `solarpanel_${string}` | `spawn_${string}` | `sseg_${string}` | `stair_${string}` | `structural-grid_${string}` | `tvent_${string}` | `unit_${string}` | `wall_${string}` | `window_${string}` | `zone_${string}`>;