@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
@@ -598,6 +598,120 @@ interface RadialClearanceLayoutConstraint {
598
598
  }
599
599
  type ChartLayoutConstraint = RadialClearanceLayoutConstraint;
600
600
 
601
+ /**
602
+ * Gates and step-free routes: the named ways in and out of a venue (board 3).
603
+ *
604
+ * THE MODEL. A gate is a `ShapeObject` with `role: 'entrance' | 'exit'` that
605
+ * carries a `gate` record. The shape's `label` is the gate's name ("Gate C")
606
+ * and its box is the pill drawn on the map, so every path that already knows
607
+ * shapes (move, rotate, floors, copy, 3D gate signs, selection layers) handles
608
+ * a gate with no new object type. An old décor Entrance or Exit (no `gate`)
609
+ * keeps rendering exactly as before, and "Make this a gate" adds the record.
610
+ *
611
+ * Sections, rows, tables, booths and standing areas point at a gate with
612
+ * `entranceGateId`. Their free-text `entrance` stays: while a gate is assigned
613
+ * it holds the gate's name, so a buyer runtime that only knows `entrance`
614
+ * still reads "Gate C". Typing a different entrance by hand detaches the gate.
615
+ *
616
+ * A step-free route is an open path (`line`/`polyline`) carrying `route`; its
617
+ * `label` is the route's name.
618
+ */
619
+
620
+ type GateUse = 'in' | 'out' | 'both';
621
+ interface GateInfo {
622
+ /** What people use it for: coming in, leaving, or both. */
623
+ use: GateUse;
624
+ /** Step-free access (level or ramped, no stairs). Stored only when true. */
625
+ stepFree?: boolean;
626
+ /** When it opens, in the organizer's words ("90 min before"). ≤40 characters. */
627
+ opens?: string;
628
+ /** Organizer-only: buyers get no sign and no "Enter by" line. Stored only when true. */
629
+ hideFromBuyers?: boolean;
630
+ }
631
+ interface RouteInfo {
632
+ /** The path is step-free. Stored only when true. */
633
+ stepFree?: boolean;
634
+ }
635
+ /** Fields a shape gains to be a gate or a route. */
636
+ interface GateFields {
637
+ gate?: GateInfo;
638
+ route?: RouteInfo;
639
+ }
640
+ /** The gate a place's buyers enter by. */
641
+ interface GateEntranceRef {
642
+ /** Id of a gate shape anywhere in the chart (any floor). */
643
+ entranceGateId?: string;
644
+ }
645
+ type GateShape = ShapeObject & {
646
+ gate: GateInfo;
647
+ };
648
+ type RouteShape = ShapeObject & {
649
+ route: RouteInfo;
650
+ };
651
+
652
+ /**
653
+ * Real lengths in the organizer's unit (board 8, "Real sizes").
654
+ *
655
+ * The chart stores geometry in chart units. What a person reads is metres or
656
+ * feet, chosen per chart in Chart settings. Every place that shows a distance
657
+ * (canvas labels, rulers, the scale bar, panel fields, venue advice) formats it
658
+ * here, so a size never reads differently in two places.
659
+ *
660
+ * Pure: no DOM, no chart document.
661
+ */
662
+ type LengthUnit = 'm' | 'ft';
663
+
664
+ /**
665
+ * Organizer-only chart settings for real sizes and venue advice (boards 8, 9).
666
+ *
667
+ * THE FIELD. `ChartDoc.designerSettings` is optional; a chart without it reads
668
+ * in metres at the standard seat scale with no advice limits, exactly as every
669
+ * chart did before. Nothing here is buyer-facing: the buyer projection drops
670
+ * the whole field (`buyerFacingChartDoc`), and the confidence view basis
671
+ * ignores it, so changing a limit never re-stamps a published view.
672
+ *
673
+ * Readers never trust the stored shape: an imported or agent-written value
674
+ * that is out of range reads as "not set", never as a throw.
675
+ */
676
+
677
+ /** Venue advice limits. Each is off until the organizer sets it. */
678
+ interface AdviceLimits {
679
+ /** Most seats in a row between two aisles. */
680
+ maxSeatsBetweenAisles?: number;
681
+ /** Narrowest aisle, in metres. */
682
+ minAisleWidthM?: number;
683
+ /** Farthest any seat may be from an exit, in metres, along the aisles. */
684
+ maxExitDistanceM?: number;
685
+ /** Warn when booths, tables or standing areas overlap each other. */
686
+ warnOverlaps?: boolean;
687
+ }
688
+ /** One advice item the organizer marked "Fine as it is". */
689
+ interface AdviceFineMark {
690
+ /** The advice item's stable key ("seats:row_12", "aisle:sec_a|sec_b"). */
691
+ key: string;
692
+ /** What it was about, as the list named it ("Row A, Circle"). */
693
+ subject: string;
694
+ /** Who marked it, by first name, when known. */
695
+ by?: string;
696
+ /** When, in epoch milliseconds. */
697
+ at: number;
698
+ }
699
+ interface ChartDesignerSettings {
700
+ /** The unit every size reads in. Absent = metres. */
701
+ units?: LengthUnit;
702
+ /**
703
+ * Chart units per metre, from "Set the scale" on a chart without a plan.
704
+ * A plan's own calibration wins over it; absent = the standard seat scale.
705
+ */
706
+ unitsPerMetre?: number;
707
+ advice?: AdviceLimits;
708
+ adviceFine?: AdviceFineMark[];
709
+ }
710
+ /** What a chart document gains to carry these settings. */
711
+ interface DesignerSettingsFields {
712
+ designerSettings?: ChartDesignerSettings;
713
+ }
714
+
601
715
  interface Point {
602
716
  x: number;
603
717
  y: number;
@@ -1051,7 +1165,10 @@ interface ChartTheme {
1051
1165
  /** Premium, bounded material palette for the optional 3D venue renderer. */
1052
1166
  venue3d?: Venue3DMaterialPalette;
1053
1167
  }
1054
- interface RowObject extends AuthoringObjectState {
1168
+ /** A row's aisle-seat ends, when the author overrides the automatic ones. */
1169
+ type RowAisleSeats = 'start' | 'end' | 'both' | 'none';
1170
+ declare const ROW_AISLE_SEATS: readonly RowAisleSeats[];
1171
+ interface RowObject extends AuthoringObjectState, GateEntranceRef {
1055
1172
  type: 'row';
1056
1173
  id: string;
1057
1174
  /** Present when this row was materialized by the in-canvas reference scan.
@@ -1095,6 +1212,16 @@ interface RowObject extends AuthoringObjectState {
1095
1212
  * booking identity, is untouched.
1096
1213
  */
1097
1214
  seatDisplayLabelMode?: 'number';
1215
+ /**
1216
+ * Which ENDS of this physical row are aisle seats for buyers ("Aisle seat"
1217
+ * on the seat card). Absent = automatic: the first and last seat, except
1218
+ * at a segmented-row junction declared `continuous`. Set, it replaces those
1219
+ * two ends only; a seat beside a skipped seat is an aisle seat either way.
1220
+ * Pure presentation: never an accessibility type (that is
1221
+ * `designated-aisle`, "Aisle transfer"), and never booking identity.
1222
+ * See `core/layout/aisleSeats`.
1223
+ */
1224
+ aisleSeats?: RowAisleSeats;
1098
1225
  /** Buyer-facing row name. `label` remains the legacy inventory prefix. */
1099
1226
  displayLabel?: string;
1100
1227
  /**
@@ -1269,7 +1396,7 @@ interface RowObject extends AuthoringObjectState {
1269
1396
  /** Default commercial attributes inherited by seats without an override. */
1270
1397
  commercial?: SeatCommercialAttributes;
1271
1398
  }
1272
- interface GAAreaObject extends AuthoringObjectState {
1399
+ interface GAAreaObject extends AuthoringObjectState, GateEntranceRef {
1273
1400
  type: 'gaArea';
1274
1401
  id: string;
1275
1402
  /** Stable technical/inventory label. */
@@ -1307,6 +1434,24 @@ interface GAAreaObject extends AuthoringObjectState {
1307
1434
  */
1308
1435
  inventorySegments?: GAInventorySegment[];
1309
1436
  referenceInventorySource?: ReferenceInventorySource;
1437
+ /** Sold as a box (model-2 events only): one party takes the whole area at
1438
+ * exactly `capacity` guests. One inventory unit labelled `label`. */
1439
+ bookAsWhole?: boolean;
1440
+ /** Sold as a box to one party choosing a guest count within the bounds below. */
1441
+ variableOccupancy?: boolean;
1442
+ /** Required inclusive guest bounds when `variableOccupancy` is true. */
1443
+ minOccupancy?: number;
1444
+ maxOccupancy?: number;
1445
+ /** How many of the `capacity` places are wheelchair places (0 ≤ n ≤ capacity).
1446
+ * The last n standing units carry `accessibility: ['wheelchair']`; a box
1447
+ * area's single unit carries it when n > 0. Labels never change. */
1448
+ wheelchairPlaces?: number;
1449
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1450
+ * Designer renderers). Absent = shown at the default size. */
1451
+ labelPresentation?: LabelPresentation;
1452
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1453
+ * section's entrance, if any. Pure presentation. */
1454
+ entrance?: string;
1310
1455
  }
1311
1456
  interface GAInventorySegment {
1312
1457
  sourceAreaId: string;
@@ -1367,7 +1512,7 @@ type ShapeLineCap = 'butt' | 'round' | 'square';
1367
1512
  type ShapeLineJoin = 'miter' | 'round' | 'bevel';
1368
1513
  type ShapeLineEnding = 'none' | 'arrow';
1369
1514
  /** Non-bookable décor: stage, walls, exits. */
1370
- interface ShapeObject extends AuthoringObjectState {
1515
+ interface ShapeObject extends AuthoringObjectState, GateFields {
1371
1516
  type: 'shape';
1372
1517
  id: string;
1373
1518
  /**
@@ -1386,6 +1531,11 @@ interface ShapeObject extends AuthoringObjectState {
1386
1531
  height?: number;
1387
1532
  /** For polygon/line/polyline. */
1388
1533
  points?: Point[];
1534
+ /** Polygon only: one curve per side of {@link points} (side `i` runs from point `i` to `i+1`), -100..100,
1535
+ * 0 = straight, as {@link SectionObject.edgeCurvature}. The points stay authoritative. */
1536
+ edgeCurvature?: number[];
1537
+ /** Polygon only: cut-outs (a pillar, a ring bar's middle): simple polygons inside the outline, never overlapping. */
1538
+ holes?: Point[][];
1389
1539
  fill?: string;
1390
1540
  /** Optional outline. `width` is in chart units; both fields are required together. */
1391
1541
  stroke?: {
@@ -1444,7 +1594,7 @@ interface RectTableSeatCounts {
1444
1594
  /** Seats arranged around a table. Grouped selling is activated only by an
1445
1595
  * event's explicit inventory-model-2 snapshot; model-1 events continue to
1446
1596
  * treat every authored chair as an independent unit. */
1447
- interface TableObject extends AuthoringObjectState {
1597
+ interface TableObject extends AuthoringObjectState, GateEntranceRef {
1448
1598
  type: 'table';
1449
1599
  id: string;
1450
1600
  /** e.g. "T1" — seat labels are `${label}-${n}`. */
@@ -1503,9 +1653,30 @@ interface TableObject extends AuthoringObjectState {
1503
1653
  assetId: string;
1504
1654
  sectionId?: string;
1505
1655
  };
1656
+ /** How chairs are NUMBERED for buyers (display only). Booking labels stay
1657
+ * `${label}-${index + 1}` whatever this says. Absent = today's "T1-1…" order. */
1658
+ chairNumbering?: TableChairNumbering;
1659
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1660
+ * Designer renderers). Absent = shown at the default size. */
1661
+ labelPresentation?: LabelPresentation;
1662
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1663
+ * section's entrance, if any. Pure presentation. */
1664
+ entrance?: string;
1506
1665
  }
1666
+ /** Buyer-facing chair numbering of a table. Changes only what buyers read. */
1667
+ interface TableChairNumbering {
1668
+ /** First chair's number, 0–999. Default 1. */
1669
+ start?: number;
1670
+ /** Walk the chairs in the authored order (clockwise) or reversed. Default clockwise. */
1671
+ direction?: 'clockwise' | 'anticlockwise';
1672
+ /** "T1-1" (table name + number), "1", or "A". Default 'table-number'. */
1673
+ format?: 'table-number' | 'number' | 'letter';
1674
+ }
1675
+ /** How many sides of a booth are open to the aisle: inline 1, corner 2, peninsula 3, island 4. */
1676
+ type BoothType = 'inline' | 'corner' | 'peninsula' | 'island';
1677
+ declare const BOOTH_TYPES: readonly BoothType[];
1507
1678
  /** A booth: one bookable unit rendered as a block (trade shows, VIP boxes). */
1508
- interface BoothObject extends AuthoringObjectState {
1679
+ interface BoothObject extends AuthoringObjectState, GateEntranceRef {
1509
1680
  type: 'booth';
1510
1681
  id: string;
1511
1682
  /** Stable technical/inventory label. */
@@ -1531,6 +1702,18 @@ interface BoothObject extends AuthoringObjectState {
1531
1702
  points?: Point[];
1532
1703
  categoryKey: string;
1533
1704
  referenceInventorySource?: ReferenceInventorySource;
1705
+ /** Open sides of the stand (inline/corner/peninsula/island). Buyer-facing. */
1706
+ boothType?: BoothType;
1707
+ /** Buyer note (≤160 chars, normalised like a seat note), shown wherever a seat note is. */
1708
+ commercial?: {
1709
+ note?: string;
1710
+ };
1711
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1712
+ * Designer renderers). Absent = shown at the default size. */
1713
+ labelPresentation?: LabelPresentation;
1714
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1715
+ * section's entrance, if any. Pure presentation. */
1716
+ entrance?: string;
1534
1717
  }
1535
1718
  /**
1536
1719
  * A named region of the venue (Balcony Left, Floor B…). Sections are outlines
@@ -1539,7 +1722,7 @@ interface BoothObject extends AuthoringObjectState {
1539
1722
  * Renderer: far zoom shows section shapes/labels instead of seats; clicking
1540
1723
  * a section zooms into it.
1541
1724
  */
1542
- interface SectionObject extends AuthoringObjectState {
1725
+ interface SectionObject extends AuthoringObjectState, GateEntranceRef {
1543
1726
  type: 'section';
1544
1727
  id: string;
1545
1728
  label: string;
@@ -1681,7 +1864,9 @@ interface SectionObject extends AuthoringObjectState {
1681
1864
  *
1682
1865
  * Positive bows to the LEFT of that edge's own direction. The sign is relative
1683
1866
  * to the edge, never to world axes, which is what lets curvature survive
1684
- * rotate / flip / mirror / radial repeat with no per-operation handling.
1867
+ * move / rotate / scale / radial repeat with no per-operation handling. A
1868
+ * flip or mirror reverses the winding, so it must negate every entry
1869
+ * (`reflectEdgeCurvature`) or the curves come out inside out.
1685
1870
  *
1686
1871
  * Coordinate-free like {@link cornerSmoothing}, so it round-trips over MCP and
1687
1872
  * the server never accepts client geometry. Absent/all-zero = straight edges;
@@ -1925,7 +2110,7 @@ interface ChartDeliveryPerformance {
1925
2110
  /** Whether the transformed chart body was served from a warm edge copy. */
1926
2111
  cache: 'hit' | 'miss' | 'materialized';
1927
2112
  }
1928
- interface ChartDoc {
2113
+ interface ChartDoc extends DesignerSettingsFields {
1929
2114
  version: 1;
1930
2115
  name: string;
1931
2116
  venueType: 'SIMPLE' | 'MIXED';
@@ -1998,4 +2183,4 @@ interface ChartDoc {
1998
2183
  derivedRestrictedView?: boolean;
1999
2184
  }
2000
2185
 
2001
- export { type ReferenceDirectLandmarkCandidate as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type AuthoringObjectState as D, type ChartDeliveryPerformance as E, type FloorLabelStyle as F, type GAAreaObject as G, type ChartLayoutConstraint as H, type ChartTheme as I, type ConfidenceEvidenceScope as J, type DecorImageObject as K, type LabelStyle as L, LABEL_STYLE_MAX_SIZE as M, LABEL_STYLE_MIN_SIZE as N, type LabelPresentation as O, type Point as P, type ObjectEditorState as Q, type RowObject as R, type SeatCommercialMark as S, type TableObject as T, type Physical3dEvidence as U, type RadialClearanceLayoutConstraint as V, type ReferenceAccessibilitySource as W, type ReferenceCalibration as X, type ReferenceCategorySource as Y, type ReferenceDerivedScale as Z, type ReferenceDirectAnnotationSource as _, type ChartObject as a, type ReferenceDirectLandmarkDisposition as a0, type ReferenceDirectLandmarkRole as a1, type ReferenceDirectLandmarkSource as a2, type ReferenceDirectSeatGroup as a3, type ReferenceDirectSeatImportSource as a4, type ReferenceDirectSeatPlan as a5, type ReferenceDirectStageSource as a6, type ReferenceEnrichmentStatus as a7, type ReferenceExtractEmptyReason as a8, type ReferenceExtractEnrichment as a9, type StageLabelStyle as aA, type TextAlignment as aB, type TextBackground as aC, type TicketTierApplicability as aD, type TicketTierEvidence as aE, type TicketTierRestriction as aF, type Venue3DMaterialPalette as aG, type VenueSurveyRegistrationEvidence as aH, type ZoneDef as aI, accessibilityMeta as aJ, accessibilityRingColor as aK, layerOf as aL, seatCommercialMeta as aM, type ReferenceExtractInput as aa, type ReferenceExtractProposal as ab, type ReferenceExtractRegionSeats as ac, type ReferenceInventoryExclusionSource as ad, type ReferenceInventorySource as ae, type ReferenceMatchReport as af, type ReferenceScanProposal as ag, type ReferenceScanRowProposal as ah, type ReferenceScanSectionProposal as ai, type ReferenceSeatSeed as aj, type ReferenceSectionTraceBatchInput as ak, type ReferenceSectionTraceBatchProposal as al, type ReferenceSectionTraceInput as am, type ReferenceSectionTraceProposal as an, SEAT_COMMERCIAL_MARKS as ao, STAGE_LABEL_STYLE_MAX_SIZE as ap, SURROUNDINGS_SHAPE_ROLES as aq, type SeatCommercialMeta as ar, type SeatConfidenceCoverage as as, type SeatConfidenceEvidence as at, type SeatConfidenceModelLevel as au, type SeatConfidenceModeledTarget as av, type SeatConfidenceRealityLevel as aw, type SeatViewVariant as ax, type SelectionLayer as ay, type StageLabelDirection as az, type SeatCommercialAttributes as b, type SeatViewMetadata as c, type ResolvedSeatConfidenceEvidence as d, type SeatGlyphKind as e, type SeatViewCoverage as f, type SectionOutlinePath as g, type SectionPathSegment as h, type SectionObject as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type RectTableSeatCounts as m, type ChartReferenceImage as n, type Category as o, type ShapeLineCap as p, type ShapeLineEnding as q, type ShapeLineJoin as r, type ShapeObject as s, type CubicPath as t, type TextObject as u, type GAInventorySegment as v, type CategoryTier as w, ACCESSIBILITY_RING_COLOR as x, ACCESSIBILITY_TYPES as y, type AccessibilityMeta as z };
2186
+ export { type ReferenceAccessibilitySource as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, ACCESSIBILITY_RING_COLOR as D, ACCESSIBILITY_TYPES as E, type FloorLabelStyle as F, type GAAreaObject as G, type AccessibilityMeta as H, type AuthoringObjectState as I, BOOTH_TYPES as J, type ChartDeliveryPerformance as K, type LabelStyle as L, type ChartLayoutConstraint as M, type ChartTheme as N, type ConfidenceEvidenceScope as O, type Point as P, type DecorImageObject as Q, type RowObject as R, type SeatCommercialMark as S, type TableObject as T, LABEL_STYLE_MAX_SIZE as U, LABEL_STYLE_MIN_SIZE as V, type LabelPresentation as W, type ObjectEditorState as X, type Physical3dEvidence as Y, ROW_AISLE_SEATS as Z, type RadialClearanceLayoutConstraint as _, type ChartObject as a, type ReferenceCalibration as a0, type ReferenceCategorySource as a1, type ReferenceDerivedScale as a2, type ReferenceDirectAnnotationSource as a3, type ReferenceDirectLandmarkCandidate as a4, type ReferenceDirectLandmarkDisposition as a5, type ReferenceDirectLandmarkRole as a6, type ReferenceDirectLandmarkSource as a7, type ReferenceDirectSeatGroup as a8, type ReferenceDirectSeatImportSource as a9, type SeatConfidenceModeledTarget as aA, type SeatConfidenceRealityLevel as aB, type SeatViewVariant as aC, type SelectionLayer as aD, type StageLabelDirection as aE, type StageLabelStyle as aF, type TextAlignment as aG, type TextBackground as aH, type TicketTierApplicability as aI, type TicketTierEvidence as aJ, type TicketTierRestriction as aK, type Venue3DMaterialPalette as aL, type VenueSurveyRegistrationEvidence as aM, type ZoneDef as aN, accessibilityMeta as aO, accessibilityRingColor as aP, layerOf as aQ, seatCommercialMeta as aR, type GateUse as aS, type GateShape as aT, type RouteShape as aU, type ReferenceDirectSeatPlan as aa, type ReferenceDirectStageSource as ab, type ReferenceEnrichmentStatus as ac, type ReferenceExtractEmptyReason as ad, type ReferenceExtractEnrichment as ae, type ReferenceExtractInput as af, type ReferenceExtractProposal as ag, type ReferenceExtractRegionSeats as ah, type ReferenceInventoryExclusionSource as ai, type ReferenceInventorySource as aj, type ReferenceMatchReport as ak, type ReferenceScanProposal as al, type ReferenceScanRowProposal as am, type ReferenceScanSectionProposal as an, type ReferenceSeatSeed as ao, type ReferenceSectionTraceBatchInput as ap, type ReferenceSectionTraceBatchProposal as aq, type ReferenceSectionTraceInput as ar, type ReferenceSectionTraceProposal as as, SEAT_COMMERCIAL_MARKS as at, STAGE_LABEL_STYLE_MAX_SIZE as au, SURROUNDINGS_SHAPE_ROLES as av, type SeatCommercialMeta as aw, type SeatConfidenceCoverage as ax, type SeatConfidenceEvidence as ay, type SeatConfidenceModelLevel as az, type SeatCommercialAttributes as b, type SeatViewMetadata as c, type ResolvedSeatConfidenceEvidence as d, type SeatGlyphKind as e, type SeatViewCoverage as f, type SectionOutlinePath as g, type SectionPathSegment as h, type SectionObject as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type RectTableSeatCounts as m, type ChartReferenceImage as n, type Category as o, type ShapeLineCap as p, type ShapeLineEnding as q, type ShapeLineJoin as r, type ShapeObject as s, type GAInventorySegment as t, type CategoryTier as u, type CubicPath as v, type TextObject as w, type TableChairNumbering as x, type RowAisleSeats as y, type BoothType as z };
@@ -598,6 +598,120 @@ interface RadialClearanceLayoutConstraint {
598
598
  }
599
599
  type ChartLayoutConstraint = RadialClearanceLayoutConstraint;
600
600
 
601
+ /**
602
+ * Gates and step-free routes: the named ways in and out of a venue (board 3).
603
+ *
604
+ * THE MODEL. A gate is a `ShapeObject` with `role: 'entrance' | 'exit'` that
605
+ * carries a `gate` record. The shape's `label` is the gate's name ("Gate C")
606
+ * and its box is the pill drawn on the map, so every path that already knows
607
+ * shapes (move, rotate, floors, copy, 3D gate signs, selection layers) handles
608
+ * a gate with no new object type. An old décor Entrance or Exit (no `gate`)
609
+ * keeps rendering exactly as before, and "Make this a gate" adds the record.
610
+ *
611
+ * Sections, rows, tables, booths and standing areas point at a gate with
612
+ * `entranceGateId`. Their free-text `entrance` stays: while a gate is assigned
613
+ * it holds the gate's name, so a buyer runtime that only knows `entrance`
614
+ * still reads "Gate C". Typing a different entrance by hand detaches the gate.
615
+ *
616
+ * A step-free route is an open path (`line`/`polyline`) carrying `route`; its
617
+ * `label` is the route's name.
618
+ */
619
+
620
+ type GateUse = 'in' | 'out' | 'both';
621
+ interface GateInfo {
622
+ /** What people use it for: coming in, leaving, or both. */
623
+ use: GateUse;
624
+ /** Step-free access (level or ramped, no stairs). Stored only when true. */
625
+ stepFree?: boolean;
626
+ /** When it opens, in the organizer's words ("90 min before"). ≤40 characters. */
627
+ opens?: string;
628
+ /** Organizer-only: buyers get no sign and no "Enter by" line. Stored only when true. */
629
+ hideFromBuyers?: boolean;
630
+ }
631
+ interface RouteInfo {
632
+ /** The path is step-free. Stored only when true. */
633
+ stepFree?: boolean;
634
+ }
635
+ /** Fields a shape gains to be a gate or a route. */
636
+ interface GateFields {
637
+ gate?: GateInfo;
638
+ route?: RouteInfo;
639
+ }
640
+ /** The gate a place's buyers enter by. */
641
+ interface GateEntranceRef {
642
+ /** Id of a gate shape anywhere in the chart (any floor). */
643
+ entranceGateId?: string;
644
+ }
645
+ type GateShape = ShapeObject & {
646
+ gate: GateInfo;
647
+ };
648
+ type RouteShape = ShapeObject & {
649
+ route: RouteInfo;
650
+ };
651
+
652
+ /**
653
+ * Real lengths in the organizer's unit (board 8, "Real sizes").
654
+ *
655
+ * The chart stores geometry in chart units. What a person reads is metres or
656
+ * feet, chosen per chart in Chart settings. Every place that shows a distance
657
+ * (canvas labels, rulers, the scale bar, panel fields, venue advice) formats it
658
+ * here, so a size never reads differently in two places.
659
+ *
660
+ * Pure: no DOM, no chart document.
661
+ */
662
+ type LengthUnit = 'm' | 'ft';
663
+
664
+ /**
665
+ * Organizer-only chart settings for real sizes and venue advice (boards 8, 9).
666
+ *
667
+ * THE FIELD. `ChartDoc.designerSettings` is optional; a chart without it reads
668
+ * in metres at the standard seat scale with no advice limits, exactly as every
669
+ * chart did before. Nothing here is buyer-facing: the buyer projection drops
670
+ * the whole field (`buyerFacingChartDoc`), and the confidence view basis
671
+ * ignores it, so changing a limit never re-stamps a published view.
672
+ *
673
+ * Readers never trust the stored shape: an imported or agent-written value
674
+ * that is out of range reads as "not set", never as a throw.
675
+ */
676
+
677
+ /** Venue advice limits. Each is off until the organizer sets it. */
678
+ interface AdviceLimits {
679
+ /** Most seats in a row between two aisles. */
680
+ maxSeatsBetweenAisles?: number;
681
+ /** Narrowest aisle, in metres. */
682
+ minAisleWidthM?: number;
683
+ /** Farthest any seat may be from an exit, in metres, along the aisles. */
684
+ maxExitDistanceM?: number;
685
+ /** Warn when booths, tables or standing areas overlap each other. */
686
+ warnOverlaps?: boolean;
687
+ }
688
+ /** One advice item the organizer marked "Fine as it is". */
689
+ interface AdviceFineMark {
690
+ /** The advice item's stable key ("seats:row_12", "aisle:sec_a|sec_b"). */
691
+ key: string;
692
+ /** What it was about, as the list named it ("Row A, Circle"). */
693
+ subject: string;
694
+ /** Who marked it, by first name, when known. */
695
+ by?: string;
696
+ /** When, in epoch milliseconds. */
697
+ at: number;
698
+ }
699
+ interface ChartDesignerSettings {
700
+ /** The unit every size reads in. Absent = metres. */
701
+ units?: LengthUnit;
702
+ /**
703
+ * Chart units per metre, from "Set the scale" on a chart without a plan.
704
+ * A plan's own calibration wins over it; absent = the standard seat scale.
705
+ */
706
+ unitsPerMetre?: number;
707
+ advice?: AdviceLimits;
708
+ adviceFine?: AdviceFineMark[];
709
+ }
710
+ /** What a chart document gains to carry these settings. */
711
+ interface DesignerSettingsFields {
712
+ designerSettings?: ChartDesignerSettings;
713
+ }
714
+
601
715
  interface Point {
602
716
  x: number;
603
717
  y: number;
@@ -1051,7 +1165,10 @@ interface ChartTheme {
1051
1165
  /** Premium, bounded material palette for the optional 3D venue renderer. */
1052
1166
  venue3d?: Venue3DMaterialPalette;
1053
1167
  }
1054
- interface RowObject extends AuthoringObjectState {
1168
+ /** A row's aisle-seat ends, when the author overrides the automatic ones. */
1169
+ type RowAisleSeats = 'start' | 'end' | 'both' | 'none';
1170
+ declare const ROW_AISLE_SEATS: readonly RowAisleSeats[];
1171
+ interface RowObject extends AuthoringObjectState, GateEntranceRef {
1055
1172
  type: 'row';
1056
1173
  id: string;
1057
1174
  /** Present when this row was materialized by the in-canvas reference scan.
@@ -1095,6 +1212,16 @@ interface RowObject extends AuthoringObjectState {
1095
1212
  * booking identity, is untouched.
1096
1213
  */
1097
1214
  seatDisplayLabelMode?: 'number';
1215
+ /**
1216
+ * Which ENDS of this physical row are aisle seats for buyers ("Aisle seat"
1217
+ * on the seat card). Absent = automatic: the first and last seat, except
1218
+ * at a segmented-row junction declared `continuous`. Set, it replaces those
1219
+ * two ends only; a seat beside a skipped seat is an aisle seat either way.
1220
+ * Pure presentation: never an accessibility type (that is
1221
+ * `designated-aisle`, "Aisle transfer"), and never booking identity.
1222
+ * See `core/layout/aisleSeats`.
1223
+ */
1224
+ aisleSeats?: RowAisleSeats;
1098
1225
  /** Buyer-facing row name. `label` remains the legacy inventory prefix. */
1099
1226
  displayLabel?: string;
1100
1227
  /**
@@ -1269,7 +1396,7 @@ interface RowObject extends AuthoringObjectState {
1269
1396
  /** Default commercial attributes inherited by seats without an override. */
1270
1397
  commercial?: SeatCommercialAttributes;
1271
1398
  }
1272
- interface GAAreaObject extends AuthoringObjectState {
1399
+ interface GAAreaObject extends AuthoringObjectState, GateEntranceRef {
1273
1400
  type: 'gaArea';
1274
1401
  id: string;
1275
1402
  /** Stable technical/inventory label. */
@@ -1307,6 +1434,24 @@ interface GAAreaObject extends AuthoringObjectState {
1307
1434
  */
1308
1435
  inventorySegments?: GAInventorySegment[];
1309
1436
  referenceInventorySource?: ReferenceInventorySource;
1437
+ /** Sold as a box (model-2 events only): one party takes the whole area at
1438
+ * exactly `capacity` guests. One inventory unit labelled `label`. */
1439
+ bookAsWhole?: boolean;
1440
+ /** Sold as a box to one party choosing a guest count within the bounds below. */
1441
+ variableOccupancy?: boolean;
1442
+ /** Required inclusive guest bounds when `variableOccupancy` is true. */
1443
+ minOccupancy?: number;
1444
+ maxOccupancy?: number;
1445
+ /** How many of the `capacity` places are wheelchair places (0 ≤ n ≤ capacity).
1446
+ * The last n standing units carry `accessibility: ['wheelchair']`; a box
1447
+ * area's single unit carries it when n > 0. Labels never change. */
1448
+ wheelchairPlaces?: number;
1449
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1450
+ * Designer renderers). Absent = shown at the default size. */
1451
+ labelPresentation?: LabelPresentation;
1452
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1453
+ * section's entrance, if any. Pure presentation. */
1454
+ entrance?: string;
1310
1455
  }
1311
1456
  interface GAInventorySegment {
1312
1457
  sourceAreaId: string;
@@ -1367,7 +1512,7 @@ type ShapeLineCap = 'butt' | 'round' | 'square';
1367
1512
  type ShapeLineJoin = 'miter' | 'round' | 'bevel';
1368
1513
  type ShapeLineEnding = 'none' | 'arrow';
1369
1514
  /** Non-bookable décor: stage, walls, exits. */
1370
- interface ShapeObject extends AuthoringObjectState {
1515
+ interface ShapeObject extends AuthoringObjectState, GateFields {
1371
1516
  type: 'shape';
1372
1517
  id: string;
1373
1518
  /**
@@ -1386,6 +1531,11 @@ interface ShapeObject extends AuthoringObjectState {
1386
1531
  height?: number;
1387
1532
  /** For polygon/line/polyline. */
1388
1533
  points?: Point[];
1534
+ /** Polygon only: one curve per side of {@link points} (side `i` runs from point `i` to `i+1`), -100..100,
1535
+ * 0 = straight, as {@link SectionObject.edgeCurvature}. The points stay authoritative. */
1536
+ edgeCurvature?: number[];
1537
+ /** Polygon only: cut-outs (a pillar, a ring bar's middle): simple polygons inside the outline, never overlapping. */
1538
+ holes?: Point[][];
1389
1539
  fill?: string;
1390
1540
  /** Optional outline. `width` is in chart units; both fields are required together. */
1391
1541
  stroke?: {
@@ -1444,7 +1594,7 @@ interface RectTableSeatCounts {
1444
1594
  /** Seats arranged around a table. Grouped selling is activated only by an
1445
1595
  * event's explicit inventory-model-2 snapshot; model-1 events continue to
1446
1596
  * treat every authored chair as an independent unit. */
1447
- interface TableObject extends AuthoringObjectState {
1597
+ interface TableObject extends AuthoringObjectState, GateEntranceRef {
1448
1598
  type: 'table';
1449
1599
  id: string;
1450
1600
  /** e.g. "T1" — seat labels are `${label}-${n}`. */
@@ -1503,9 +1653,30 @@ interface TableObject extends AuthoringObjectState {
1503
1653
  assetId: string;
1504
1654
  sectionId?: string;
1505
1655
  };
1656
+ /** How chairs are NUMBERED for buyers (display only). Booking labels stay
1657
+ * `${label}-${index + 1}` whatever this says. Absent = today's "T1-1…" order. */
1658
+ chairNumbering?: TableChairNumbering;
1659
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1660
+ * Designer renderers). Absent = shown at the default size. */
1661
+ labelPresentation?: LabelPresentation;
1662
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1663
+ * section's entrance, if any. Pure presentation. */
1664
+ entrance?: string;
1506
1665
  }
1666
+ /** Buyer-facing chair numbering of a table. Changes only what buyers read. */
1667
+ interface TableChairNumbering {
1668
+ /** First chair's number, 0–999. Default 1. */
1669
+ start?: number;
1670
+ /** Walk the chairs in the authored order (clockwise) or reversed. Default clockwise. */
1671
+ direction?: 'clockwise' | 'anticlockwise';
1672
+ /** "T1-1" (table name + number), "1", or "A". Default 'table-number'. */
1673
+ format?: 'table-number' | 'number' | 'letter';
1674
+ }
1675
+ /** How many sides of a booth are open to the aisle: inline 1, corner 2, peninsula 3, island 4. */
1676
+ type BoothType = 'inline' | 'corner' | 'peninsula' | 'island';
1677
+ declare const BOOTH_TYPES: readonly BoothType[];
1507
1678
  /** A booth: one bookable unit rendered as a block (trade shows, VIP boxes). */
1508
- interface BoothObject extends AuthoringObjectState {
1679
+ interface BoothObject extends AuthoringObjectState, GateEntranceRef {
1509
1680
  type: 'booth';
1510
1681
  id: string;
1511
1682
  /** Stable technical/inventory label. */
@@ -1531,6 +1702,18 @@ interface BoothObject extends AuthoringObjectState {
1531
1702
  points?: Point[];
1532
1703
  categoryKey: string;
1533
1704
  referenceInventorySource?: ReferenceInventorySource;
1705
+ /** Open sides of the stand (inline/corner/peninsula/island). Buyer-facing. */
1706
+ boothType?: BoothType;
1707
+ /** Buyer note (≤160 chars, normalised like a seat note), shown wherever a seat note is. */
1708
+ commercial?: {
1709
+ note?: string;
1710
+ };
1711
+ /** Name drawn on the map: `visible` and `labelStyle.size` only (buyer and
1712
+ * Designer renderers). Absent = shown at the default size. */
1713
+ labelPresentation?: LabelPresentation;
1714
+ /** Buyer-facing entrance/door hint ("Door 4"), ≤40 chars. Absent = the owning
1715
+ * section's entrance, if any. Pure presentation. */
1716
+ entrance?: string;
1534
1717
  }
1535
1718
  /**
1536
1719
  * A named region of the venue (Balcony Left, Floor B…). Sections are outlines
@@ -1539,7 +1722,7 @@ interface BoothObject extends AuthoringObjectState {
1539
1722
  * Renderer: far zoom shows section shapes/labels instead of seats; clicking
1540
1723
  * a section zooms into it.
1541
1724
  */
1542
- interface SectionObject extends AuthoringObjectState {
1725
+ interface SectionObject extends AuthoringObjectState, GateEntranceRef {
1543
1726
  type: 'section';
1544
1727
  id: string;
1545
1728
  label: string;
@@ -1681,7 +1864,9 @@ interface SectionObject extends AuthoringObjectState {
1681
1864
  *
1682
1865
  * Positive bows to the LEFT of that edge's own direction. The sign is relative
1683
1866
  * to the edge, never to world axes, which is what lets curvature survive
1684
- * rotate / flip / mirror / radial repeat with no per-operation handling.
1867
+ * move / rotate / scale / radial repeat with no per-operation handling. A
1868
+ * flip or mirror reverses the winding, so it must negate every entry
1869
+ * (`reflectEdgeCurvature`) or the curves come out inside out.
1685
1870
  *
1686
1871
  * Coordinate-free like {@link cornerSmoothing}, so it round-trips over MCP and
1687
1872
  * the server never accepts client geometry. Absent/all-zero = straight edges;
@@ -1925,7 +2110,7 @@ interface ChartDeliveryPerformance {
1925
2110
  /** Whether the transformed chart body was served from a warm edge copy. */
1926
2111
  cache: 'hit' | 'miss' | 'materialized';
1927
2112
  }
1928
- interface ChartDoc {
2113
+ interface ChartDoc extends DesignerSettingsFields {
1929
2114
  version: 1;
1930
2115
  name: string;
1931
2116
  venueType: 'SIMPLE' | 'MIXED';
@@ -1998,4 +2183,4 @@ interface ChartDoc {
1998
2183
  derivedRestrictedView?: boolean;
1999
2184
  }
2000
2185
 
2001
- export { type ReferenceDirectLandmarkCandidate as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type AuthoringObjectState as D, type ChartDeliveryPerformance as E, type FloorLabelStyle as F, type GAAreaObject as G, type ChartLayoutConstraint as H, type ChartTheme as I, type ConfidenceEvidenceScope as J, type DecorImageObject as K, type LabelStyle as L, LABEL_STYLE_MAX_SIZE as M, LABEL_STYLE_MIN_SIZE as N, type LabelPresentation as O, type Point as P, type ObjectEditorState as Q, type RowObject as R, type SeatCommercialMark as S, type TableObject as T, type Physical3dEvidence as U, type RadialClearanceLayoutConstraint as V, type ReferenceAccessibilitySource as W, type ReferenceCalibration as X, type ReferenceCategorySource as Y, type ReferenceDerivedScale as Z, type ReferenceDirectAnnotationSource as _, type ChartObject as a, type ReferenceDirectLandmarkDisposition as a0, type ReferenceDirectLandmarkRole as a1, type ReferenceDirectLandmarkSource as a2, type ReferenceDirectSeatGroup as a3, type ReferenceDirectSeatImportSource as a4, type ReferenceDirectSeatPlan as a5, type ReferenceDirectStageSource as a6, type ReferenceEnrichmentStatus as a7, type ReferenceExtractEmptyReason as a8, type ReferenceExtractEnrichment as a9, type StageLabelStyle as aA, type TextAlignment as aB, type TextBackground as aC, type TicketTierApplicability as aD, type TicketTierEvidence as aE, type TicketTierRestriction as aF, type Venue3DMaterialPalette as aG, type VenueSurveyRegistrationEvidence as aH, type ZoneDef as aI, accessibilityMeta as aJ, accessibilityRingColor as aK, layerOf as aL, seatCommercialMeta as aM, type ReferenceExtractInput as aa, type ReferenceExtractProposal as ab, type ReferenceExtractRegionSeats as ac, type ReferenceInventoryExclusionSource as ad, type ReferenceInventorySource as ae, type ReferenceMatchReport as af, type ReferenceScanProposal as ag, type ReferenceScanRowProposal as ah, type ReferenceScanSectionProposal as ai, type ReferenceSeatSeed as aj, type ReferenceSectionTraceBatchInput as ak, type ReferenceSectionTraceBatchProposal as al, type ReferenceSectionTraceInput as am, type ReferenceSectionTraceProposal as an, SEAT_COMMERCIAL_MARKS as ao, STAGE_LABEL_STYLE_MAX_SIZE as ap, SURROUNDINGS_SHAPE_ROLES as aq, type SeatCommercialMeta as ar, type SeatConfidenceCoverage as as, type SeatConfidenceEvidence as at, type SeatConfidenceModelLevel as au, type SeatConfidenceModeledTarget as av, type SeatConfidenceRealityLevel as aw, type SeatViewVariant as ax, type SelectionLayer as ay, type StageLabelDirection as az, type SeatCommercialAttributes as b, type SeatViewMetadata as c, type ResolvedSeatConfidenceEvidence as d, type SeatGlyphKind as e, type SeatViewCoverage as f, type SectionOutlinePath as g, type SectionPathSegment as h, type SectionObject as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type RectTableSeatCounts as m, type ChartReferenceImage as n, type Category as o, type ShapeLineCap as p, type ShapeLineEnding as q, type ShapeLineJoin as r, type ShapeObject as s, type CubicPath as t, type TextObject as u, type GAInventorySegment as v, type CategoryTier as w, ACCESSIBILITY_RING_COLOR as x, ACCESSIBILITY_TYPES as y, type AccessibilityMeta as z };
2186
+ export { type ReferenceAccessibilitySource as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, ACCESSIBILITY_RING_COLOR as D, ACCESSIBILITY_TYPES as E, type FloorLabelStyle as F, type GAAreaObject as G, type AccessibilityMeta as H, type AuthoringObjectState as I, BOOTH_TYPES as J, type ChartDeliveryPerformance as K, type LabelStyle as L, type ChartLayoutConstraint as M, type ChartTheme as N, type ConfidenceEvidenceScope as O, type Point as P, type DecorImageObject as Q, type RowObject as R, type SeatCommercialMark as S, type TableObject as T, LABEL_STYLE_MAX_SIZE as U, LABEL_STYLE_MIN_SIZE as V, type LabelPresentation as W, type ObjectEditorState as X, type Physical3dEvidence as Y, ROW_AISLE_SEATS as Z, type RadialClearanceLayoutConstraint as _, type ChartObject as a, type ReferenceCalibration as a0, type ReferenceCategorySource as a1, type ReferenceDerivedScale as a2, type ReferenceDirectAnnotationSource as a3, type ReferenceDirectLandmarkCandidate as a4, type ReferenceDirectLandmarkDisposition as a5, type ReferenceDirectLandmarkRole as a6, type ReferenceDirectLandmarkSource as a7, type ReferenceDirectSeatGroup as a8, type ReferenceDirectSeatImportSource as a9, type SeatConfidenceModeledTarget as aA, type SeatConfidenceRealityLevel as aB, type SeatViewVariant as aC, type SelectionLayer as aD, type StageLabelDirection as aE, type StageLabelStyle as aF, type TextAlignment as aG, type TextBackground as aH, type TicketTierApplicability as aI, type TicketTierEvidence as aJ, type TicketTierRestriction as aK, type Venue3DMaterialPalette as aL, type VenueSurveyRegistrationEvidence as aM, type ZoneDef as aN, accessibilityMeta as aO, accessibilityRingColor as aP, layerOf as aQ, seatCommercialMeta as aR, type GateUse as aS, type GateShape as aT, type RouteShape as aU, type ReferenceDirectSeatPlan as aa, type ReferenceDirectStageSource as ab, type ReferenceEnrichmentStatus as ac, type ReferenceExtractEmptyReason as ad, type ReferenceExtractEnrichment as ae, type ReferenceExtractInput as af, type ReferenceExtractProposal as ag, type ReferenceExtractRegionSeats as ah, type ReferenceInventoryExclusionSource as ai, type ReferenceInventorySource as aj, type ReferenceMatchReport as ak, type ReferenceScanProposal as al, type ReferenceScanRowProposal as am, type ReferenceScanSectionProposal as an, type ReferenceSeatSeed as ao, type ReferenceSectionTraceBatchInput as ap, type ReferenceSectionTraceBatchProposal as aq, type ReferenceSectionTraceInput as ar, type ReferenceSectionTraceProposal as as, SEAT_COMMERCIAL_MARKS as at, STAGE_LABEL_STYLE_MAX_SIZE as au, SURROUNDINGS_SHAPE_ROLES as av, type SeatCommercialMeta as aw, type SeatConfidenceCoverage as ax, type SeatConfidenceEvidence as ay, type SeatConfidenceModelLevel as az, type SeatCommercialAttributes as b, type SeatViewMetadata as c, type ResolvedSeatConfidenceEvidence as d, type SeatGlyphKind as e, type SeatViewCoverage as f, type SectionOutlinePath as g, type SectionPathSegment as h, type SectionObject as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type RectTableSeatCounts as m, type ChartReferenceImage as n, type Category as o, type ShapeLineCap as p, type ShapeLineEnding as q, type ShapeLineJoin as r, type ShapeObject as s, type GAInventorySegment as t, type CategoryTier as u, type CubicPath as v, type TextObject as w, type TableChairNumbering as x, type RowAisleSeats as y, type BoothType as z };