@seatlayer/core 0.101.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/dist/ar-D6ASWQBI.js +1 -0
  2. package/dist/be-T23MSCFC.js +1 -0
  3. package/dist/bg-2MMSY43I.js +1 -0
  4. package/dist/ca-EXRTYE33.js +1 -0
  5. package/dist/{categoryInventory-H77A_8pF.d.cts → categoryInventory-D_gpkfsq.d.cts} +1 -1
  6. package/dist/{categoryInventory-DZ5IcDOy.d.ts → categoryInventory-i-mGCBD3.d.ts} +1 -1
  7. package/dist/chunk-2STEWCI2.js +1 -0
  8. package/dist/chunk-33SRM2CP.js +1 -0
  9. package/dist/chunk-3W4ZMU4G.js +1 -0
  10. package/dist/chunk-76AUT55N.js +1 -0
  11. package/dist/chunk-B75VUM6L.js +1 -0
  12. package/dist/{chunk-L34T3APU.js → chunk-FAY7ARLB.js} +1 -1
  13. package/dist/{chunk-2RNZOV5I.js → chunk-GPZFVQXV.js} +1 -1
  14. package/dist/chunk-JRZHC75P.js +1 -0
  15. package/dist/chunk-KTMZ3QAO.js +1 -0
  16. package/dist/chunk-NWRHKTMV.js +1 -0
  17. package/dist/{chunk-5HXTEMRE.js → chunk-QG7ZFUNX.js} +1 -1
  18. package/dist/{chunk-GLGXP5I7.js → chunk-R2TRYVOY.js} +1 -1
  19. package/dist/chunk-RF4QU72N.js +1 -0
  20. package/dist/chunk-TFYAMLCK.js +1 -0
  21. package/dist/chunk-TZBJCAXH.js +1 -0
  22. package/dist/chunk-UEDS3HJ3.js +1 -0
  23. package/dist/chunk-UEYHH7Y5.js +1 -0
  24. package/dist/chunk-WH2EVBIG.js +1 -0
  25. package/dist/chunk-WKWXU5QM.js +1 -0
  26. package/dist/{chunk-P4J57TK6.js → chunk-YPVYZYMH.js} +1 -1
  27. package/dist/core/chart-ops/index.cjs +1 -1
  28. package/dist/core/chart-ops/index.d.cts +491 -18
  29. package/dist/core/chart-ops/index.d.ts +491 -18
  30. package/dist/core/chart-ops/index.js +1 -1
  31. package/dist/core/color.d.cts +1 -1
  32. package/dist/core/color.d.ts +1 -1
  33. package/dist/core/inventory/index.cjs +1 -1
  34. package/dist/core/inventory/index.d.cts +72 -5
  35. package/dist/core/inventory/index.d.ts +72 -5
  36. package/dist/core/inventory/index.js +1 -1
  37. package/dist/core/layout/index.cjs +1 -1
  38. package/dist/core/layout/index.d.cts +63 -6
  39. package/dist/core/layout/index.d.ts +63 -6
  40. package/dist/core/layout/index.js +1 -1
  41. package/dist/core/quality/index.cjs +1 -1
  42. package/dist/core/quality/index.d.cts +18 -4
  43. package/dist/core/quality/index.d.ts +18 -4
  44. package/dist/core/quality/index.js +1 -1
  45. package/dist/core/render-assets/index.cjs +1 -1
  46. package/dist/core/render-assets/index.d.cts +45 -5
  47. package/dist/core/render-assets/index.d.ts +45 -5
  48. package/dist/core/render-assets/index.js +1 -1
  49. package/dist/core/seatConfidence.d.cts +1 -1
  50. package/dist/core/seatConfidence.d.ts +1 -1
  51. package/dist/core/sections/index.cjs +1 -1
  52. package/dist/core/sections/index.d.cts +5 -5
  53. package/dist/core/sections/index.d.ts +5 -5
  54. package/dist/core/sections/index.js +1 -1
  55. package/dist/cs-L5EG7LLR.js +1 -0
  56. package/dist/cy-AB2Q6XHI.js +1 -0
  57. package/dist/da-EGJO7W4Q.js +1 -0
  58. package/dist/de-Q56NNVPD.js +1 -0
  59. package/dist/el-JW2YADAL.js +1 -0
  60. package/dist/es-N35HVHMD.js +1 -0
  61. package/dist/et-53UYPQR7.js +1 -0
  62. package/dist/{eventConfigurations-ClFqXQi9.d.cts → eventConfigurations-C0x_OtjQ.d.cts} +1 -1
  63. package/dist/{eventConfigurations-B6aS6c-_.d.ts → eventConfigurations-CDPqKz_8.d.ts} +1 -1
  64. package/dist/fa-JL3HW42Q.js +1 -0
  65. package/dist/fi-ZFWROLPU.js +1 -0
  66. package/dist/fr-6EKBGKIT.js +1 -0
  67. package/dist/he-KSOTIRJW.js +1 -0
  68. package/dist/hi-RWHSYCVV.js +1 -0
  69. package/dist/hr-ECH5LYKR.js +1 -0
  70. package/dist/hu-BAXHRRWC.js +1 -0
  71. package/dist/id-ECFNLK3G.js +1 -0
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.d.cts +65 -17
  74. package/dist/index.d.ts +65 -17
  75. package/dist/index.js +1 -1
  76. package/dist/it-HT57FDFI.js +1 -0
  77. package/dist/ja-LHVHSM5J.js +1 -0
  78. package/dist/ko-G2HVHBKT.js +1 -0
  79. package/dist/ku-MNPV6BJJ.js +1 -0
  80. package/dist/{labeling-ByEZkLee.d.cts → labeling-20iLar-Q.d.ts} +11 -3
  81. package/dist/{labeling-CP3GhUrf.d.ts → labeling-DW_pEMgl.d.cts} +11 -3
  82. package/dist/localeLoaders-L36RHPNS.js +1 -0
  83. package/dist/lt-GB2GJDNS.js +1 -0
  84. package/dist/lv-3ZE6IM47.js +1 -0
  85. package/dist/ms-YH2PYOHG.js +1 -0
  86. package/dist/nl-D4FX7T7U.js +1 -0
  87. package/dist/no-5YNLYHN4.js +1 -0
  88. package/dist/pl-RUXCR6JV.js +1 -0
  89. package/dist/pt-TKFGIUL6.js +1 -0
  90. package/dist/{renderedQuality--H0toc-2.d.cts → renderedQuality-BIWwSRMS.d.cts} +1 -1
  91. package/dist/{renderedQuality-Bo4k99GE.d.ts → renderedQuality-CdpKQidA.d.ts} +1 -1
  92. package/dist/{renderer-BPhSZUGh.d.cts → renderer-BSjyHBDK.d.cts} +8 -1
  93. package/dist/{renderer-CWbam_zr.d.ts → renderer-BurPZ2Io.d.ts} +8 -1
  94. package/dist/ro-UFIOIOVH.js +1 -0
  95. package/dist/ru-VMRD53B7.js +1 -0
  96. package/dist/{seatTypeIcons-CSt1isBY.d.ts → seatTypeIcons-BlEzPXFf.d.cts} +2 -2
  97. package/dist/{seatTypeIcons-B2tvcQ0H.d.cts → seatTypeIcons-D_T5HfJs.d.ts} +2 -2
  98. package/dist/{sections-C_AKwOIh.d.cts → sections-BySKMsFE.d.ts} +5 -2
  99. package/dist/{sections-JHox6Lsw.d.ts → sections-DXUcW0ZT.d.cts} +5 -2
  100. package/dist/{segmentedRowModel-DQO0vHR1.d.ts → segmentedRowModel-C5qFY6jJ.d.ts} +1 -1
  101. package/dist/{segmentedRowModel-CZ0Ciea-.d.cts → segmentedRowModel-CyW-LFuI.d.cts} +1 -1
  102. package/dist/sk-XIK2KO3F.js +1 -0
  103. package/dist/sl-CDZGH6C6.js +1 -0
  104. package/dist/sr-A3TESNV3.js +1 -0
  105. package/dist/sv-HKGKDGSG.js +1 -0
  106. package/dist/{tableSizing-ClgbhNks.d.ts → tableSizing-Bos5ueqg.d.cts} +5 -4
  107. package/dist/{tableSizing-Cp5T_6Lw.d.cts → tableSizing-CAiE_oii.d.ts} +5 -4
  108. package/dist/th-ZPGRIY7D.js +1 -0
  109. package/dist/{ticketRestrictions-DUdzkp4F.d.ts → ticketRestrictions-DKdJWh9u.d.cts} +39 -3
  110. package/dist/{ticketRestrictions-BHNbxzFT.d.cts → ticketRestrictions-DRDtAVKw.d.ts} +39 -3
  111. package/dist/tr-IUB54G3R.js +1 -0
  112. package/dist/{types-5AlKCD4j.d.ts → types-ZviQR7ch.d.cts} +194 -9
  113. package/dist/{types-5AlKCD4j.d.cts → types-ZviQR7ch.d.ts} +194 -9
  114. package/dist/uk-JQKEV42K.js +1 -0
  115. package/dist/vi-KRM5S2Q7.js +1 -0
  116. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  117. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  118. package/dist/view3d/index.cjs +54 -54
  119. package/dist/view3d/index.d.cts +13 -3
  120. package/dist/view3d/index.d.ts +13 -3
  121. package/dist/view3d/index.js +44 -44
  122. package/dist/view3d/scene/scene.worker.cjs +1 -1
  123. package/dist/view3d/scene/scene.worker.js +1 -1
  124. package/dist/zh-Hans-FEUYIOYS.js +1 -0
  125. package/dist/zh-Hant-PK2XOE2G.js +1 -0
  126. package/package.json +1 -1
  127. package/dist/ar-Q44JP5JY.js +0 -1
  128. package/dist/be-CGFFSIQL.js +0 -1
  129. package/dist/bg-WOYK6OLH.js +0 -1
  130. package/dist/ca-77ZVI3X5.js +0 -1
  131. package/dist/chunk-52XO3LA7.js +0 -1
  132. package/dist/chunk-5BMXWOE7.js +0 -1
  133. package/dist/chunk-5ITK5236.js +0 -1
  134. package/dist/chunk-5N4H3KMR.js +0 -1
  135. package/dist/chunk-5PFYIYM5.js +0 -1
  136. package/dist/chunk-CTIGUXXK.js +0 -1
  137. package/dist/chunk-D723OZEY.js +0 -1
  138. package/dist/chunk-FLZKBXHA.js +0 -1
  139. package/dist/chunk-HO4MFTVX.js +0 -1
  140. package/dist/chunk-JK3DUFRX.js +0 -1
  141. package/dist/chunk-N4J4CT6P.js +0 -1
  142. package/dist/chunk-NO6OLVTT.js +0 -1
  143. package/dist/chunk-TQN2VWQO.js +0 -1
  144. package/dist/chunk-UISTXRO5.js +0 -1
  145. package/dist/cs-OSBZYCSR.js +0 -1
  146. package/dist/cy-ZCOJW2WH.js +0 -1
  147. package/dist/da-2PDK6JTR.js +0 -1
  148. package/dist/de-R5LLVFUU.js +0 -1
  149. package/dist/el-ZPFVDCWA.js +0 -1
  150. package/dist/es-7YASJP32.js +0 -1
  151. package/dist/et-J4TV6KQL.js +0 -1
  152. package/dist/fa-4TEO7UGM.js +0 -1
  153. package/dist/fi-GIUDDKMH.js +0 -1
  154. package/dist/fr-J5J2XJLA.js +0 -1
  155. package/dist/he-OCEHSVUJ.js +0 -1
  156. package/dist/hi-EK5CTBW5.js +0 -1
  157. package/dist/hr-SLDTQOYC.js +0 -1
  158. package/dist/hu-2QNE77NO.js +0 -1
  159. package/dist/id-LGDAFQJK.js +0 -1
  160. package/dist/it-DT4Y3IYB.js +0 -1
  161. package/dist/ja-D5EY2XCQ.js +0 -1
  162. package/dist/ko-DD2NV45Q.js +0 -1
  163. package/dist/ku-KZCMVLBE.js +0 -1
  164. package/dist/localeLoaders-GGAKX22E.js +0 -1
  165. package/dist/lt-QWGTJ47Y.js +0 -1
  166. package/dist/lv-LYAIG3VK.js +0 -1
  167. package/dist/ms-XTF4KNGD.js +0 -1
  168. package/dist/nl-QEXY6XHS.js +0 -1
  169. package/dist/no-HCOXN2CN.js +0 -1
  170. package/dist/pl-BWY53TSD.js +0 -1
  171. package/dist/pt-2UJUBCPL.js +0 -1
  172. package/dist/ro-GGXOLTED.js +0 -1
  173. package/dist/ru-ZTFK3WCU.js +0 -1
  174. package/dist/sk-KU543Y2U.js +0 -1
  175. package/dist/sl-FT576R7A.js +0 -1
  176. package/dist/sr-WE3J46JE.js +0 -1
  177. package/dist/sv-YEAOPSEB.js +0 -1
  178. package/dist/th-BEBRDHJA.js +0 -1
  179. package/dist/tr-LOAHUPSH.js +0 -1
  180. package/dist/uk-2GMICSHN.js +0 -1
  181. package/dist/vi-TC5B6AUR.js +0 -1
  182. package/dist/zh-Hans-TSZWTZQY.js +0 -1
  183. package/dist/zh-Hant-TLB4FZYM.js +0 -1
@@ -1,8 +1,8 @@
1
- import { c as SeatViewMetadata, i as SectionObject, aI as ZoneDef, C as ChartDoc, P as Point, t as CubicPath, o as Category, w as CategoryTier, a4 as ReferenceDirectSeatImportSource, I as ChartTheme, R as RowObject, ai as ReferenceScanSectionProposal, ag as ReferenceScanProposal, B as BoothObject, G as GAAreaObject, s as ShapeObject, T as TableObject, u as TextObject, aC as TextBackground, j as SeatOverride, a as ChartObject, e as SeatGlyphKind, A as AccessibilityType, at as SeatConfidenceEvidence, J as ConfidenceEvidenceScope } from '../../types-5AlKCD4j.cjs';
1
+ import { c as SeatViewMetadata, i as SectionObject, aN as ZoneDef, C as ChartDoc, P as Point, v as CubicPath, o as Category, u as CategoryTier, a9 as ReferenceDirectSeatImportSource, e as SeatGlyphKind, N as ChartTheme, R as RowObject, an as ReferenceScanSectionProposal, al as ReferenceScanProposal, B as BoothObject, z as BoothType, G as GAAreaObject, y as RowAisleSeats, s as ShapeObject, T as TableObject, x as TableChairNumbering, w as TextObject, aH as TextBackground, j as SeatOverride, a as ChartObject, A as AccessibilityType, ay as SeatConfidenceEvidence, O as ConfidenceEvidenceScope, aS as GateUse, aT as GateShape, aU as RouteShape } from '../../types-ZviQR7ch.cjs';
2
2
  import { S as StageKind } from '../../stage-CKb7aNoH.cjs';
3
- import { e as CategoryInventoryObjectType } from '../../categoryInventory-H77A_8pF.cjs';
4
- import { R as RelabelOptions } from '../../labeling-ByEZkLee.cjs';
5
- export { D as DEFAULT_SECTION_CORNER_SMOOTHING } from '../../labeling-ByEZkLee.cjs';
3
+ import { e as CategoryInventoryObjectType } from '../../categoryInventory-D_gpkfsq.cjs';
4
+ import { R as RelabelOptions } from '../../labeling-DW_pEMgl.cjs';
5
+ export { D as DEFAULT_SECTION_CORNER_SMOOTHING } from '../../labeling-DW_pEMgl.cjs';
6
6
 
7
7
  type ChartObjectIdFactory = (prefix: string) => string;
8
8
  type AutomaticPlacement = 'auto' | 'front' | 'rear' | 'left' | 'right';
@@ -402,7 +402,7 @@ declare function applySectionRowFit(doc: ChartDoc, input: SectionRowFitInput): S
402
402
  interface PolygonHolePreview {
403
403
  floorId: string;
404
404
  objectId: string;
405
- objectType: 'section' | 'gaArea';
405
+ objectType: 'section' | 'gaArea' | 'shape';
406
406
  holeIndex: number;
407
407
  vertexCount: number;
408
408
  excludedObjectIds: string[];
@@ -437,6 +437,15 @@ declare function removePolygonHole(doc: ChartDoc, input: {
437
437
  changed: true;
438
438
  };
439
439
 
440
+ /** Okabe-Ito colorblind-safe hues (black dropped — unreadable on dark charts).
441
+ * Single source of truth for the colorblind-safe palette. The author-time
442
+ * preview, the new-category seed, the reassign op in chart-ops/categories, and
443
+ * SeatmapRenderer's colorblind mode all key off THIS array by category document
444
+ * order, so a reassigned chart reads identically with colorblind mode on or off.
445
+ * A dependency-free leaf so render assets (the venue pictogram badges) can use
446
+ * it without importing the chart-ops graph. */
447
+ declare const COLORBLIND_SAFE_PALETTE: readonly ["#e69f00", "#56b4e9", "#009e73", "#f0e442", "#0072b2", "#d55e00", "#cc79a7"];
448
+
440
449
  type SharedCategoryPatch = Partial<Pick<Category, 'label' | 'color' | 'price' | 'notForSale' | 'seatGlyph'>> & {
441
450
  tiers?: CategoryTier[] | null;
442
451
  };
@@ -476,12 +485,7 @@ declare function reorderChartCategories(doc: ChartDoc, input: {
476
485
  categoryKeys: string[];
477
486
  categories: Category[];
478
487
  };
479
- /** Okabe-Ito colorblind-safe hues (black dropped — unreadable on dark charts).
480
- * Single source of truth for the colorblind-safe palette. The author-time
481
- * preview, the new-category seed, the reassign op below, and SeatmapRenderer's
482
- * colorblind mode all key off THIS array by category document order, so a
483
- * reassigned chart reads identically with colorblind mode on or off. */
484
- declare const COLORBLIND_SAFE_PALETTE: readonly ["#e69f00", "#56b4e9", "#009e73", "#f0e442", "#0072b2", "#d55e00", "#cc79a7"];
488
+
485
489
  /**
486
490
  * First Okabe-Ito hue that stays distinct from every color already in use, so
487
491
  * the next category seeds a colorblind-safe hue. Falls back to indexing into the
@@ -536,9 +540,26 @@ declare function addChartCategory(doc: ChartDoc, input: {
536
540
  category: Category;
537
541
  categories: Category[];
538
542
  };
543
+ /**
544
+ * Distinct, contrast-safe hues for auto-created inventory-family categories.
545
+ * Members are widely separated so a minted sibling never trips the palette
546
+ * contrast or colorblind-similarity warnings on the default authoring path.
547
+ *
548
+ * Board 10, N5 "First colours": teal, indigo, amber, purple, and red never
549
+ * first. Red reads as "sold" or "error" on a seat map, so the reds sit at the
550
+ * end and are only reached once every calmer hue is taken. This seeds NEW
551
+ * categories only; a chart's existing colours never change. The purple is a
552
+ * touch warmer than the board's first #9b6bd1, which sits ΔE 19 from the
553
+ * indigo, and the amber a touch deeper than #d9922b so a standing area filled
554
+ * with it still reads 3:1 on a light and a dark map (board 10, N5).
555
+ */
556
+ declare const FIRST_CATEGORY_COLOURS: readonly ["#3e8e7e", "#6e7ff0", "#b0700f", "#b05fc4"];
539
557
  /** Plain-language derived name for a family sibling, e.g. “Standard – Tables”.
540
558
  * Any family suffix already on the base is stripped first so the words never
541
- * stack (“Standard – Tables” + booth → “Standard – Booths”). */
559
+ * stack (“Standard – Tables” + booth → “Standard – Booths”). A base that is
560
+ * itself a plain kind word (“Seats”, the name a first row is given) says
561
+ * nothing about the new place, so its sibling is the plain word too: “Tables”,
562
+ * never “Seats – Tables” (board 10, N4). */
542
563
  declare function familyCategoryLabel(baseLabel: string, objectType: CategoryInventoryObjectType): string;
543
564
  interface ResolveCreationCategoryOptions {
544
565
  idFactory: ChartObjectIdFactory;
@@ -576,7 +597,10 @@ declare function planCreationCategory(doc: ChartDoc, activeCategoryKey: string,
576
597
  * designer's active key stays empty through that first mint;
577
598
  * 3. else reuse an existing, still family-safe sibling with the derived name
578
599
  * (e.g. “Standard – Tables”) if one already exists;
579
- * 4. else mint a sibling from the base category — same price and ticket tiers,
600
+ * 4. else reuse the category this family is already priced by, even with an
601
+ * active category of another kind (the Standing tool with “Seats” active
602
+ * takes the standing category the chart already has);
603
+ * 5. else mint a sibling from the base category — same price and ticket tiers,
580
604
  * a plain “<Base> – Tables/Booths/Standing/Seats” name, and a distinct
581
605
  * colorblind-safe color so no contrast/CVD warning appears. With no active
582
606
  * category there is no author intent to inherit, so the mint is a plain
@@ -595,6 +619,42 @@ declare function removeChartCategory(doc: ChartDoc, input: {
595
619
  categories: Category[];
596
620
  };
597
621
 
622
+ interface CategoryDraft {
623
+ label: string;
624
+ color: string;
625
+ price?: number;
626
+ tiers?: CategoryTier[];
627
+ notForSale?: boolean;
628
+ seatGlyph?: SeatGlyphKind;
629
+ }
630
+ /**
631
+ * Add every draft in order. Labels that are already taken get " 2", " 3"… so
632
+ * a starter set or a plan's key never fails on one duplicate name.
633
+ */
634
+ declare function addChartCategories(doc: ChartDoc, input: {
635
+ drafts: readonly CategoryDraft[];
636
+ idFactory: ChartObjectIdFactory;
637
+ }): {
638
+ categoryKeys: string[];
639
+ categories: Category[];
640
+ };
641
+ /** "Stalls", or "Stalls 2" when that name is taken (names are unique, ignoring case). */
642
+ declare function uniqueCategoryLabel(categories: readonly Pick<Category, 'label'>[], wanted: string): string;
643
+ /**
644
+ * Everything that uses `categoryKey` (rows, tables, booths, standing areas,
645
+ * seat overrides and a section's default for new seats) moves to
646
+ * `toCategoryKey`, then the category is removed. Returns how many objects
647
+ * changed. Reference-backed categories and the last category stay protected,
648
+ * exactly as `removeChartCategory` enforces.
649
+ */
650
+ declare function removeCategoryMovingInventory(doc: ChartDoc, input: {
651
+ categoryKey: string;
652
+ toCategoryKey?: string;
653
+ }): {
654
+ movedObjectIds: string[];
655
+ categories: Category[];
656
+ };
657
+
598
658
  type SharedThemePatch = {
599
659
  background?: string | null;
600
660
  seatLabelColor?: string | null;
@@ -916,7 +976,12 @@ interface ReferenceScanApplyResult extends ReferenceScanPreview {
916
976
  }
917
977
  declare function applyReferenceScanRows(doc: ChartDoc, proposal: ReferenceScanProposal, opts: ReferenceScanRowsOptions): ReferenceScanApplyResult;
918
978
 
919
- type SharedRowPatch = Partial<Omit<RowObject, 'type' | 'id' | 'arcFanGeneration' | 'segmentedRow' | 'rowBlockGeneration'>> & {
979
+ type SharedRowPatch = Partial<Omit<RowObject, 'type' | 'id' | 'arcFanGeneration' | 'segmentedRow' | 'rowBlockGeneration' | 'aisleSeats'>> & {
980
+ /**
981
+ * Which ends of the row are aisle seats for buyers. null restores the
982
+ * automatic ends (see core/layout/aisleSeats). Pure presentation.
983
+ */
984
+ aisleSeats?: RowAisleSeats | null;
920
985
  /**
921
986
  * Coordinate-free label size/color/visibility merge directive. Applied on top
922
987
  * of any `labelPresentation` in the same patch and, unlike a geometry edit,
@@ -941,15 +1006,31 @@ type SharedRowPatch = Partial<Omit<RowObject, 'type' | 'id' | 'arcFanGeneration'
941
1006
  */
942
1007
  labelStyleShape?: 'plain' | 'pill';
943
1008
  };
944
- type SharedTablePatch = Partial<Pick<TableObject, 'label' | 'displayLabel' | 'displayType' | 'shape' | 'seatCount' | 'sides' | 'seatCountsBySide' | 'rotation' | 'radius' | 'automaticRadius' | 'seatArc' | 'width' | 'height' | 'categoryKey' | 'bookAsWhole' | 'variableOccupancy' | 'minOccupancy' | 'maxOccupancy'>> & {
1009
+ /** Buyer-facing presentation shared by tables, booths and standing areas. */
1010
+ interface BookablePresentationPatch {
1011
+ /** Name on the map: `visible` and `size` (see LabelStylePatch). Colour is not offered here. */
1012
+ labelStyle?: LabelStylePatch;
1013
+ /** Entrance/door hint, ≤40 chars after NFKC + trim. null or '' clears it. */
1014
+ entrance?: string | null;
1015
+ }
1016
+ type SharedTablePatch = Partial<Pick<TableObject, 'label' | 'displayLabel' | 'displayType' | 'shape' | 'seatCount' | 'sides' | 'seatCountsBySide' | 'rotation' | 'radius' | 'automaticRadius' | 'seatArc' | 'width' | 'height' | 'categoryKey' | 'bookAsWhole' | 'variableOccupancy' | 'minOccupancy' | 'maxOccupancy'>> & BookablePresentationPatch & {
945
1017
  fill?: string | null;
1018
+ /** Buyer-facing chair numbering (display only). Merged into the stored
1019
+ * numbering; null restores today's "T1-1, T1-2 …". Booking labels never change. */
1020
+ chairNumbering?: TableChairNumbering | null;
946
1021
  };
947
- type SharedBoothPatch = Partial<Pick<BoothObject, 'label' | 'displayLabel' | 'displayType' | 'width' | 'height' | 'rotation' | 'categoryKey'>> & {
1022
+ type SharedBoothPatch = Partial<Pick<BoothObject, 'label' | 'displayLabel' | 'displayType' | 'width' | 'height' | 'rotation' | 'categoryKey'>> & BookablePresentationPatch & {
948
1023
  /** Custom booth outline (closed polygon, local coordinates relative to the
949
1024
  * booth centre). `null` clears it, restoring the rectangle. */
950
1025
  points?: Point[] | null;
1026
+ /** Open sides of the stand. null clears it. */
1027
+ boothType?: BoothType | null;
1028
+ /** Buyer note (≤160 chars). null/'' note clears it. */
1029
+ commercial?: {
1030
+ note?: string | null;
1031
+ } | null;
951
1032
  };
952
- type SharedGAAreaPatch = Partial<Pick<GAAreaObject, 'label' | 'displayLabel' | 'displayType' | 'capacity' | 'categoryKey' | 'cornerRadius'>>;
1033
+ type SharedGAAreaPatch = Partial<Pick<GAAreaObject, 'label' | 'displayLabel' | 'displayType' | 'capacity' | 'categoryKey' | 'cornerRadius' | 'bookAsWhole' | 'variableOccupancy' | 'minOccupancy' | 'maxOccupancy' | 'wheelchairPlaces'>> & BookablePresentationPatch;
953
1034
  interface StageLabelStylePatch {
954
1035
  size?: number | null;
955
1036
  color?: string | null;
@@ -976,6 +1057,14 @@ type SharedShapePatch = Partial<Pick<ShapeObject, 'kind'>> & {
976
1057
  opacity?: number | null;
977
1058
  /** Physical 3D extrusion in metres. null restores the semantic-role default. */
978
1059
  heightM?: number | null;
1060
+ /** Degrees clockwise about the shape's own centre, as the canvas rotate handle
1061
+ * stores it (normalised to 0–360). null or 0 clears it. */
1062
+ rotation?: number | null;
1063
+ /** Custom outline (polygon) only, one shape at a time: one curve per side,
1064
+ * -100..100, side `i` from point `i` to point `i+1`, positive bows left of
1065
+ * that side's direction. Same meaning as a section's edgeCurvature. null or
1066
+ * an all-zero list makes every side straight again. */
1067
+ edgeCurvature?: number[] | null;
979
1068
  /** Event layouts that include this structure. null makes it common to all. */
980
1069
  eventConfigurationIds?: string[] | null;
981
1070
  /** Open line/polyline only. null restores the legacy round cap. */
@@ -1263,6 +1352,19 @@ declare function joinGAAreas(doc: ChartDoc, input: {
1263
1352
  changed: true;
1264
1353
  };
1265
1354
 
1355
+ /**
1356
+ * A rectangle becomes a custom outline with the same four corners, fill,
1357
+ * outline and turn, so it looks identical and can then be reshaped, curved
1358
+ * and cut. Stages keep their own generated outline and are refused.
1359
+ */
1360
+ declare function convertShapeToOutline(doc: ChartDoc, input: {
1361
+ floorId?: string;
1362
+ shapeId: string;
1363
+ }): {
1364
+ floorId: string;
1365
+ changed: boolean;
1366
+ shapeId: string;
1367
+ };
1266
1368
  declare function updateShapes(doc: ChartDoc, input: {
1267
1369
  floorId?: string;
1268
1370
  shapeIds: string[];
@@ -1395,6 +1497,8 @@ declare function insertSeatingBlock(doc: ChartDoc, input: {
1395
1497
  idFactory: ChartObjectIdFactory;
1396
1498
  /** Section workspaces already provide the owning boundary. */
1397
1499
  wrapInSection?: boolean;
1500
+ /** Degrees clockwise about `center` (the Designer's aimed ghost, R). */
1501
+ rotation?: number;
1398
1502
  }): {
1399
1503
  floorId: string;
1400
1504
  blockKey: string;
@@ -1467,4 +1571,373 @@ declare function approveConfidenceEvidence(doc: ChartDoc, input: ConfidenceEvide
1467
1571
  }): ConfidenceEvidenceMutation;
1468
1572
  declare function retractConfidenceEvidence(doc: ChartDoc, target: ConfidenceEvidenceTarget): ConfidenceEvidenceMutation;
1469
1573
 
1470
- export { type AddBoothArrayInput, type AddGAAreaInput, type AddRowBlockInput, type AddTableArrayInput, type ArcFanRowsInput, type ArcFanRowsPreview, type AutomaticPlacement, type BookableGridArrayInput, type BookableGridArrayOptions, type BookableGridArrayPreview, COLORBLIND_SAFE_PALETTE, type ChartObjectIdFactory, ChartOperationError, type ConfidenceEvidenceChange, type ConfidenceEvidenceIndex, type ConfidenceEvidenceIndexEntry, type ConfidenceEvidenceMutation, ConfidenceEvidenceScope, type ConfidenceEvidenceTarget, type CreationCategoryPlan, DEFAULT_FLOOR_HEIGHT_STEP_M, type GeneratedSectionPolygonConversionPreview, type JoinGAAreasOptions, type JoinGAAreasPreview, type LabelStylePatch, MAX_BUYER_IMAGE_URL_LENGTH, MAX_FLOOR_BASE_HEIGHT_M, type MergeRowsResult, type PolygonHolePreview, type ReassignColorblindSafeResult, type ReferenceScanApplyResult, type ReferenceScanPreview, type ReferenceScanRowsOptions, type ReferenceScanSectionOutcome, type ReferenceScanSkippedSection, type ReplaceRowBlockInput, type ReplaceRowBlockResult, type ResolveCreationCategoryOptions, type RowBlockSpacingResult, type RowCubicPathPreview, type SeatRef, type SectionBoundaryTransform, type SectionBoundaryTransformResult, type SectionEstimate, type SectionInventorySelectionSummary, type SectionRowFitInput, type SectionRowFitPreview, type SegmentedRowGroupResult, type SharedBoothPatch, type SharedCategoryPatch, type SharedGAAreaPatch, type SharedRowPatch, type SharedSeatOverridePatch, type SharedSectionMetadataPatch, type SharedShapePatch, type SharedTablePatch, type SharedTextPatch, type SharedThemePatch, type SharedZonePatch, type SplitRowResult, type StageLabelStylePatch, type StraightenAndSpaceResult, type VenueEstimateAim, addArcFanRows, addBookableGridArray, addBoothArray, addChartCategory, addChartFloor, addChartZone, addGAArea, addRowBlock, addTableArray, applyPolygonHole, applyReferenceScanRows, applySectionCornerSmoothing, applySectionEstimates, applySectionOutlineShaping, applySectionRowFit, approveConfidenceEvidence, arcFanInputForGroup, assignSectionInventoryCategory, automaticPlacementCenter, clearConfidenceEvidence, compactChartDoc, compactRowOverrides, compactTableOverrides, confidenceEvidenceChangeRequiresPublish, confidenceEvidenceChanges, confidenceEvidenceIndex, confirmReferenceCategoryOutputColor, convertGeneratedSectionToPolygon, countCoveredInventory, detectSeatLabelRun, dropRedundantSeatOverrideFields, familyCategoryLabel, gaAreaFootprint, groupRowsAsSegmented, insertSeatingBlock, isSafeBuyerImageUrl, joinGAAreas, mergeRows, mirrorFirstFloor, normalizeBuyerImageUrl, normalizeDraftEvidence, parseSeatRefId, pickColorblindSafeCategoryColor, planCreationCategory, previewArcFanRows, previewBookableGridArray, previewGeneratedSectionPolygonConversion, previewJoinGAAreas, previewPolygonHole, previewRemovePolygonHole, previewRowCubicPath, previewSectionRowFit, reassignColorblindSafeCategoryColors, relabelChartRows, removeChartCategory, removeChartFloor, removeChartObjects, removeChartZone, removePolygonHole, renameChartFloor, renameDirectSeatImportCategory, reorderChartCategories, replaceArcFanRows, replaceRowBlock, resetSeatOverrides, resizeShapes, resolveCreationCategory, retractConfidenceEvidence, roundBuyerCoordinates, seatRefId, seatSemanticsSignature, sectionInventorySelectionSummary, setConfidenceEvidence, setRowBlockSpacing, splitRow, straightenAndSpaceRows, transformSectionBoundary, transformSectionBoundaryObject, ungroupSegmentedRow, updateBooths, updateCategoryDefinitions, updateChartFloorBaseHeight, updateChartTheme, updateChartZones, updateGAAreas, updateRowCubicPath, updateRows, updateSeatOverrides, updateSectionExactPath, updateSectionMetadata, updateSegmentedRow, updateShapes, updateStageKinds, updateTables, updateTextObjects, updateViewFromSeatFallback };
1574
+ /** The step-free route's stroke: the accessibility blue buyers know. */
1575
+ declare const ROUTE_STROKE: {
1576
+ readonly color: string;
1577
+ readonly width: 4;
1578
+ };
1579
+ declare const DEFAULT_ROUTE_NAME = "Step-free route";
1580
+ interface GateSettings {
1581
+ name?: string;
1582
+ use?: GateUse;
1583
+ stepFree?: boolean;
1584
+ /** null clears. */
1585
+ opens?: string | null;
1586
+ hideFromBuyers?: boolean;
1587
+ }
1588
+ /** A new gate pill centred on `center`. Pure: nothing is added to a chart. */
1589
+ declare function gateShape(id: string, center: Point, settings: GateSettings & {
1590
+ name: string;
1591
+ }, rotation?: number): GateShape;
1592
+ /** Add a named gate on a floor (the first when none is given). */
1593
+ declare function addGate(doc: ChartDoc, input: GateSettings & {
1594
+ floorId?: string;
1595
+ center: Point;
1596
+ rotation?: number;
1597
+ idFactory: ChartObjectIdFactory;
1598
+ }): {
1599
+ changed: true;
1600
+ floorId: string;
1601
+ gate: GateShape;
1602
+ };
1603
+ /** Rename a gate or change what it is for; the places it serves follow. */
1604
+ declare function updateGate(doc: ChartDoc, input: {
1605
+ gateId: string;
1606
+ patch: GateSettings;
1607
+ }): {
1608
+ changed: boolean;
1609
+ gate: GateShape;
1610
+ servedObjectIds: string[];
1611
+ };
1612
+ /** "Make this a gate": an old décor Entrance/Exit becomes a named gate in place. */
1613
+ declare function makeGate(doc: ChartDoc, input: GateSettings & {
1614
+ shapeId: string;
1615
+ }): {
1616
+ changed: true;
1617
+ gate: GateShape;
1618
+ };
1619
+ /**
1620
+ * Point places at a gate (or at none, with `gateId: null`). A section is set
1621
+ * with every part of its logical section, so its parts never disagree.
1622
+ */
1623
+ declare function setObjectEntrance(doc: ChartDoc, input: {
1624
+ objectIds: string[];
1625
+ gateId: string | null;
1626
+ }): {
1627
+ changed: boolean;
1628
+ objectIds: string[];
1629
+ };
1630
+ /**
1631
+ * Removing gates: the places they served lose the reference, and the gate's
1632
+ * name too where it came from the gate. Hand-typed entrances stay.
1633
+ */
1634
+ declare function releaseGateReferences(doc: ChartDoc, removed: readonly ChartObject[]): string[];
1635
+ /** Copies that include their gate point at the copied gate; the rest keep the original. */
1636
+ declare function remapGateReferences(objects: readonly ChartObject[], ids: ReadonlyMap<string, string>): void;
1637
+ /** A named step-free route along `points`. Pure: nothing is added to a chart. */
1638
+ declare function routeShape(id: string, points: readonly Point[], name?: string, stepFree?: boolean): RouteShape;
1639
+ /** Add a named route (two or more points) on a floor. */
1640
+ declare function addRoute(doc: ChartDoc, input: {
1641
+ floorId?: string;
1642
+ points: Point[];
1643
+ name?: string;
1644
+ stepFree?: boolean;
1645
+ idFactory: ChartObjectIdFactory;
1646
+ }): {
1647
+ changed: true;
1648
+ floorId: string;
1649
+ route: RouteShape;
1650
+ };
1651
+ /** Make an open path a named route, change it, or (`route: null`) make it a plain line again. */
1652
+ declare function setRoute(doc: ChartDoc, input: {
1653
+ shapeId: string;
1654
+ route: {
1655
+ stepFree?: boolean;
1656
+ name?: string;
1657
+ } | null;
1658
+ }): {
1659
+ changed: boolean;
1660
+ shape: ShapeObject;
1661
+ };
1662
+
1663
+ /**
1664
+ * Décor landmark palette — styled, ready-to-drop non-bookable objects that make
1665
+ * a buyer map legible (bar, entrances, restrooms, screen, sound booth…). Today
1666
+ * these are just `ShapeObject`s with an emoji-prefixed label, so they render
1667
+ * with the current engine; the Batch-C designer palette drops them by preset
1668
+ * and the renderer can later special-case icons/styling by the `role` field.
1669
+ *
1670
+ * A good seats.io-grade map is not only seats — it's the surroundings that let a
1671
+ * buyer orient ("I want to sit near the bar / away from the speakers"). This
1672
+ * palette is that vocabulary.
1673
+ */
1674
+
1675
+ type DecorRole = 'bar' | 'entrance' | 'exit' | 'restroom' | 'screen' | 'sound' | 'concession' | 'coat' | 'wall' | 'rail' | 'suite' | 'obstruction';
1676
+
1677
+ /** Chart units per metre, as everywhere in the reference and 3D pipelines. */
1678
+ declare const DECOR_UNITS_PER_METRE = 40;
1679
+ type DecorSide = 'front' | 'rear' | 'left' | 'right';
1680
+ type DecorPlacement = AutomaticPlacement | 'center';
1681
+ interface DecorPlacementInput {
1682
+ floorId?: string;
1683
+ /** Beside the whole layout, or 'center' for the middle of it. Ignored when nearObjectId is set. */
1684
+ placement?: DecorPlacement;
1685
+ /** Place beside this object instead of beside the whole layout. */
1686
+ nearObjectId?: string;
1687
+ /** Which side of nearObjectId. Default rear. */
1688
+ side?: DecorSide;
1689
+ /** For front: move seats already in front of the stage back to make room (building a whole venue). */
1690
+ makeRoom?: boolean;
1691
+ }
1692
+ /** Where a width x height addition goes, and a note when it could not go exactly there. */
1693
+ declare function decorPlacement(doc: ChartDoc, input: DecorPlacementInput & {
1694
+ width: number;
1695
+ height: number;
1696
+ }): {
1697
+ center: Point;
1698
+ note?: string;
1699
+ };
1700
+ /** Centre for a width x height addition, placed as the caller described in words. */
1701
+ declare function decorPlacementCenter(doc: ChartDoc, input: DecorPlacementInput & {
1702
+ width: number;
1703
+ height: number;
1704
+ }): Point;
1705
+ interface AddStageInput extends DecorPlacementInput {
1706
+ kind: StageKind;
1707
+ label?: string;
1708
+ widthM?: number;
1709
+ depthM?: number;
1710
+ idFactory: ChartObjectIdFactory;
1711
+ }
1712
+ /**
1713
+ * Add a stage (or playing surface). When the floor had no stage, the floor's
1714
+ * focal point moves to its front edge, as the Designer does, so seat views
1715
+ * and sightlines look at it.
1716
+ */
1717
+ declare function addStage(doc: ChartDoc, input: AddStageInput): {
1718
+ floorId: string;
1719
+ stageId: string;
1720
+ label: string;
1721
+ focalPointMoved: boolean;
1722
+ createdIds: string[];
1723
+ };
1724
+ interface AddLandmarkInput extends DecorPlacementInput {
1725
+ role: DecorRole;
1726
+ label?: string;
1727
+ idFactory: ChartObjectIdFactory;
1728
+ }
1729
+ /** Add a landmark from the Designer's décor palette: bar, entrance, exit, restrooms, screen… */
1730
+ declare function addLandmark(doc: ChartDoc, input: AddLandmarkInput): {
1731
+ floorId: string;
1732
+ landmarkId: string;
1733
+ label: string | null;
1734
+ createdIds: string[];
1735
+ note?: string;
1736
+ };
1737
+ type DecorTextSize = 'small' | 'medium' | 'large';
1738
+ type DecorShowAt = 'always' | 'when-it-fits' | 'close-up';
1739
+ interface AddTextInput extends DecorPlacementInput {
1740
+ text: string;
1741
+ size?: DecorTextSize;
1742
+ color?: string;
1743
+ bold?: boolean;
1744
+ showAt?: DecorShowAt;
1745
+ idFactory: ChartObjectIdFactory;
1746
+ }
1747
+ /** Add a free text label, e.g. "Gate C", "Level 2 bar", "Step-free route". */
1748
+ declare function addText(doc: ChartDoc, input: AddTextInput): {
1749
+ floorId: string;
1750
+ textId: string;
1751
+ createdIds: string[];
1752
+ note?: string;
1753
+ };
1754
+ interface AddIconInput extends DecorPlacementInput {
1755
+ iconKey: string;
1756
+ showAt?: DecorShowAt;
1757
+ idFactory: ChartObjectIdFactory;
1758
+ }
1759
+ /** Add a wayfinding icon from the venue icon set (restrooms, first aid, stairs, lift…). */
1760
+ declare function addIcon(doc: ChartDoc, input: AddIconInput): {
1761
+ floorId: string;
1762
+ iconId: string;
1763
+ createdIds: string[];
1764
+ note?: string;
1765
+ };
1766
+ /**
1767
+ * A named area's default floor. Every renderer writes a plain shape's name in
1768
+ * light ink (#cbd5e1), so the floor must be dark enough for that name to read:
1769
+ * a pale floor made "Dance floor" invisible in the Designer.
1770
+ */
1771
+ declare const NAMED_AREA_FILL = "#4b5568";
1772
+ interface AddAreaInput extends DecorPlacementInput {
1773
+ label: string;
1774
+ shape?: 'rect' | 'ellipse';
1775
+ widthM: number;
1776
+ depthM: number;
1777
+ fill?: string;
1778
+ idFactory: ChartObjectIdFactory;
1779
+ }
1780
+ /** Add a plain named area that is not sold: a dance floor, a registration desk, a lobby. */
1781
+ declare function addArea(doc: ChartDoc, input: AddAreaInput): {
1782
+ floorId: string;
1783
+ areaId: string;
1784
+ createdIds: string[];
1785
+ note?: string;
1786
+ };
1787
+ /** Every landmark role an agent may ask for, with its Designer name. */
1788
+ declare function landmarkRoles(): Array<{
1789
+ role: DecorRole;
1790
+ label: string;
1791
+ }>;
1792
+
1793
+ /** Row curve in words, as degrees of bend. */
1794
+ declare const ROW_CURVE_DEGREES: {
1795
+ readonly straight: 0;
1796
+ readonly gentle: 15;
1797
+ readonly medium: 30;
1798
+ readonly strong: 45;
1799
+ };
1800
+ type RowCurveStyle = keyof typeof ROW_CURVE_DEGREES;
1801
+ interface AddPlacedRowBlocksInput {
1802
+ floorId?: string;
1803
+ rowCount: number;
1804
+ seatsPerRow: number;
1805
+ categoryKey: string;
1806
+ placement?: AutomaticPlacement;
1807
+ curveStyle?: RowCurveStyle;
1808
+ blockStyle?: 'multiple' | 'intertwined';
1809
+ /** focal-tangent turns a single block to face the stage. */
1810
+ orientation?: 'focal-tangent' | 'horizontal';
1811
+ /** Side-by-side blocks with an aisle between each. Default 1. */
1812
+ blocks?: number;
1813
+ aisleWidth?: number;
1814
+ /** One section name per block, or none. */
1815
+ sectionLabels?: string[];
1816
+ /** Seats per row in each block, when blocks differ (e.g. 13 and 12); default seatsPerRow in every block. */
1817
+ blockSeats?: number[];
1818
+ /** For front: move seats already in front of the stage back to make room (building a whole venue). */
1819
+ makeRoom?: boolean;
1820
+ idFactory: ChartObjectIdFactory;
1821
+ }
1822
+ /**
1823
+ * One block of rows beside the layout (two passes: place the flat footprint,
1824
+ * derive the bearing there, then reserve the ROTATED footprint so an angled
1825
+ * block cannot land on geometry its flat box would have cleared), or several
1826
+ * blocks side by side with aisles between them.
1827
+ */
1828
+ declare function addPlacedRowBlocks(doc: ChartDoc, input: AddPlacedRowBlocksInput): {
1829
+ floorId: string;
1830
+ rowIds: string[];
1831
+ sectionIds: string[];
1832
+ createdIds: string[];
1833
+ note?: string;
1834
+ };
1835
+ /** Names for side-by-side blocks of one named section: Stalls Left, Stalls Right. */
1836
+ declare function blockSectionLabels(name: string, blocks: number): string[];
1837
+ declare function addPlacedTableArray(doc: ChartDoc, input: {
1838
+ floorId?: string;
1839
+ tableRows: number;
1840
+ tableColumns: number;
1841
+ seatsPerTable?: number;
1842
+ shape?: 'round' | 'rect';
1843
+ categoryKey: string;
1844
+ placement?: AutomaticPlacement;
1845
+ makeRoom?: boolean;
1846
+ idFactory: ChartObjectIdFactory;
1847
+ }): {
1848
+ floorId: string;
1849
+ tableIds: string[];
1850
+ createdIds: string[];
1851
+ } | {
1852
+ note: string;
1853
+ floorId: string;
1854
+ tableIds: string[];
1855
+ createdIds: string[];
1856
+ };
1857
+ declare function addPlacedGAArea(doc: ChartDoc, input: {
1858
+ floorId?: string;
1859
+ capacity: number;
1860
+ categoryKey: string;
1861
+ label?: string;
1862
+ displayLabel?: string;
1863
+ placement?: AutomaticPlacement;
1864
+ makeRoom?: boolean;
1865
+ idFactory: ChartObjectIdFactory;
1866
+ }): {
1867
+ floorId: string;
1868
+ gaAreaId: string;
1869
+ label: string;
1870
+ createdIds: string[];
1871
+ } | {
1872
+ note: string;
1873
+ floorId: string;
1874
+ gaAreaId: string;
1875
+ label: string;
1876
+ createdIds: string[];
1877
+ };
1878
+ declare function addPlacedBoothArray(doc: ChartDoc, input: {
1879
+ floorId?: string;
1880
+ boothRows: number;
1881
+ boothColumns: number;
1882
+ categoryKey: string;
1883
+ placement?: AutomaticPlacement;
1884
+ makeRoom?: boolean;
1885
+ idFactory: ChartObjectIdFactory;
1886
+ }): {
1887
+ floorId: string;
1888
+ boothIds: string[];
1889
+ createdIds: string[];
1890
+ } | {
1891
+ note: string;
1892
+ floorId: string;
1893
+ boothIds: string[];
1894
+ createdIds: string[];
1895
+ };
1896
+ /**
1897
+ * Where a fan of curved rows goes: centred on the floor's focal point, aimed
1898
+ * at where the audience already is (bearing in degrees, 0 = straight down the
1899
+ * page, the arc-fan convention), and starting beyond the seats already in
1900
+ * that direction.
1901
+ */
1902
+ declare function curvedRowsPlacement(doc: ChartDoc, floorId: string | undefined, spreadDegrees: number): {
1903
+ center: Point;
1904
+ bearing: number;
1905
+ occupiedRadius: number;
1906
+ floorId: string;
1907
+ clearRadius: (spread: number) => number;
1908
+ };
1909
+ interface AddCurvedRowsInput {
1910
+ floorId?: string;
1911
+ rowCount: number;
1912
+ /** How wide the fan is; 180 = semicircle. Default: fits seatsPerRow, else 100. */
1913
+ spreadDegrees?: number;
1914
+ /** Seats in every row; default fits seats at the standard pitch. */
1915
+ seatsPerRow?: number;
1916
+ /** Metres from the stage to the first row. Default 4. */
1917
+ firstRowDistanceM?: number;
1918
+ aisles?: 'none' | 'center' | 'two';
1919
+ categoryKey: string;
1920
+ sectionLabel?: string;
1921
+ idFactory: ChartObjectIdFactory;
1922
+ }
1923
+ /** Curved rows around the stage, beyond any seats already in that direction. */
1924
+ declare function addCurvedRows(doc: ChartDoc, input: AddCurvedRowsInput): {
1925
+ spreadDegrees: number;
1926
+ movedBackIds: string[];
1927
+ floorId: string;
1928
+ logicalRowCount: number;
1929
+ rowSegmentCount: number;
1930
+ totalSeats: number;
1931
+ innerRadius: number;
1932
+ outerRadius: number;
1933
+ minSeatSpacing: number;
1934
+ maxSeatSpacing: number;
1935
+ maxPitchDeviation: number;
1936
+ aisleCount: number;
1937
+ warnings: string[];
1938
+ rowIds: string[];
1939
+ sectionId: string | null;
1940
+ groupId: string;
1941
+ };
1942
+
1943
+ export { type AddAreaInput, type AddBoothArrayInput, type AddCurvedRowsInput, type AddGAAreaInput, type AddIconInput, type AddLandmarkInput, type AddPlacedRowBlocksInput, type AddRowBlockInput, type AddStageInput, type AddTableArrayInput, type AddTextInput, type ArcFanRowsInput, type ArcFanRowsPreview, type AutomaticPlacement, type BookableGridArrayInput, type BookableGridArrayOptions, type BookableGridArrayPreview, type BookablePresentationPatch, COLORBLIND_SAFE_PALETTE, type CategoryDraft, type ChartObjectIdFactory, ChartOperationError, type ConfidenceEvidenceChange, type ConfidenceEvidenceIndex, type ConfidenceEvidenceIndexEntry, type ConfidenceEvidenceMutation, ConfidenceEvidenceScope, type ConfidenceEvidenceTarget, type CreationCategoryPlan, DECOR_UNITS_PER_METRE, DEFAULT_FLOOR_HEIGHT_STEP_M, DEFAULT_ROUTE_NAME, type DecorPlacement, type DecorPlacementInput, type DecorShowAt, type DecorSide, type DecorTextSize, FIRST_CATEGORY_COLOURS, type GateSettings, type GeneratedSectionPolygonConversionPreview, type JoinGAAreasOptions, type JoinGAAreasPreview, type LabelStylePatch, MAX_BUYER_IMAGE_URL_LENGTH, MAX_FLOOR_BASE_HEIGHT_M, type MergeRowsResult, NAMED_AREA_FILL, type PolygonHolePreview, ROUTE_STROKE, ROW_CURVE_DEGREES, type ReassignColorblindSafeResult, type ReferenceScanApplyResult, type ReferenceScanPreview, type ReferenceScanRowsOptions, type ReferenceScanSectionOutcome, type ReferenceScanSkippedSection, type ReplaceRowBlockInput, type ReplaceRowBlockResult, type ResolveCreationCategoryOptions, type RowBlockSpacingResult, type RowCubicPathPreview, type RowCurveStyle, type SeatRef, type SectionBoundaryTransform, type SectionBoundaryTransformResult, type SectionEstimate, type SectionInventorySelectionSummary, type SectionRowFitInput, type SectionRowFitPreview, type SegmentedRowGroupResult, type SharedBoothPatch, type SharedCategoryPatch, type SharedGAAreaPatch, type SharedRowPatch, type SharedSeatOverridePatch, type SharedSectionMetadataPatch, type SharedShapePatch, type SharedTablePatch, type SharedTextPatch, type SharedThemePatch, type SharedZonePatch, type SplitRowResult, type StageLabelStylePatch, type StraightenAndSpaceResult, type VenueEstimateAim, addArcFanRows, addArea, addBookableGridArray, addBoothArray, addChartCategories, addChartCategory, addChartFloor, addChartZone, addCurvedRows, addGAArea, addGate, addIcon, addLandmark, addPlacedBoothArray, addPlacedGAArea, addPlacedRowBlocks, addPlacedTableArray, addRoute, addRowBlock, addStage, addTableArray, addText, applyPolygonHole, applyReferenceScanRows, applySectionCornerSmoothing, applySectionEstimates, applySectionOutlineShaping, applySectionRowFit, approveConfidenceEvidence, arcFanInputForGroup, assignSectionInventoryCategory, automaticPlacementCenter, blockSectionLabels, clearConfidenceEvidence, compactChartDoc, compactRowOverrides, compactTableOverrides, confidenceEvidenceChangeRequiresPublish, confidenceEvidenceChanges, confidenceEvidenceIndex, confirmReferenceCategoryOutputColor, convertGeneratedSectionToPolygon, convertShapeToOutline, countCoveredInventory, curvedRowsPlacement, decorPlacement, decorPlacementCenter, detectSeatLabelRun, dropRedundantSeatOverrideFields, familyCategoryLabel, gaAreaFootprint, gateShape, groupRowsAsSegmented, insertSeatingBlock, isSafeBuyerImageUrl, joinGAAreas, landmarkRoles, makeGate, mergeRows, mirrorFirstFloor, normalizeBuyerImageUrl, normalizeDraftEvidence, parseSeatRefId, pickColorblindSafeCategoryColor, planCreationCategory, previewArcFanRows, previewBookableGridArray, previewGeneratedSectionPolygonConversion, previewJoinGAAreas, previewPolygonHole, previewRemovePolygonHole, previewRowCubicPath, previewSectionRowFit, reassignColorblindSafeCategoryColors, relabelChartRows, releaseGateReferences, remapGateReferences, removeCategoryMovingInventory, removeChartCategory, removeChartFloor, removeChartObjects, removeChartZone, removePolygonHole, renameChartFloor, renameDirectSeatImportCategory, reorderChartCategories, replaceArcFanRows, replaceRowBlock, resetSeatOverrides, resizeShapes, resolveCreationCategory, retractConfidenceEvidence, roundBuyerCoordinates, routeShape, seatRefId, seatSemanticsSignature, sectionInventorySelectionSummary, setConfidenceEvidence, setObjectEntrance, setRoute, setRowBlockSpacing, splitRow, straightenAndSpaceRows, transformSectionBoundary, transformSectionBoundaryObject, ungroupSegmentedRow, uniqueCategoryLabel, updateBooths, updateCategoryDefinitions, updateChartFloorBaseHeight, updateChartTheme, updateChartZones, updateGAAreas, updateGate, updateRowCubicPath, updateRows, updateSeatOverrides, updateSectionExactPath, updateSectionMetadata, updateSegmentedRow, updateShapes, updateStageKinds, updateTables, updateTextObjects, updateViewFromSeatFallback };