@seatlayer/js 0.56.0 → 0.58.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.
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
2
- export { ExpandedSeat, PickerMapTheme, PickerSelectionValidity, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
3
- export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-CFxx1jp3.cjs';
1
+ import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
2
+ export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
3
+ export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.cjs';
4
4
 
5
5
  /**
6
6
  * Buyer access context — the browser half of the Sales Channels contract
@@ -576,6 +576,8 @@ interface SeatingChartOptions {
576
576
  selectableObjects?: string[] | null;
577
577
  /** Require exactly this many seated/table guest units before the selection is valid. */
578
578
  numberOfPlacesToSelect?: number;
579
+ /** Optional local selection guards, enforced again before hold. */
580
+ selectionValidators?: PickerSelectionValidator[];
579
581
  /**
580
582
  * BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
581
583
  * the browser language, then English. Built-in: en, es, de, fr. The German
@@ -613,11 +615,11 @@ interface SeatingChartOptions {
613
615
  */
614
616
  onSeatHover?: (details: SeatHoverDetails | null) => void;
615
617
  onSelectionChange?: (seats: SelectedSeat[]) => void;
616
- /** Exact-count state after each selection change. */
618
+ /** Selection-rule state after each selection change. */
617
619
  onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
618
- /** The exact configured count has just been reached. */
620
+ /** The configured selection rules have just become valid. */
619
621
  onSelectionValid?: (seats: SelectedSeat[]) => void;
620
- /** The current selection does not match the configured exact count. */
622
+ /** The configured selection rules have just become invalid. */
621
623
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
622
624
  /** A manual or programmatic selection reached the active maximum. */
623
625
  onSelectionLimit?: (maxSelection: number) => void;
@@ -731,7 +733,7 @@ declare class SeatingChart {
731
733
  setSelectableObjects(objects: string[] | null): void;
732
734
  /** Change the selection cap without remounting. */
733
735
  setMaxSelection(maxSelection: number): void;
734
- /** Current exact-count validity, or null when no exact count was configured. */
736
+ /** Current selection-rule validity, or null when no rules were configured. */
735
737
  getSelectionValidity(): PickerSelectionValidity | null;
736
738
  /** Hold the current selection. Resolves the hold, or null on a 409 conflict. */
737
739
  hold(options?: {
@@ -973,10 +975,10 @@ declare function bindSeatingChartHandle(getInstance: () => SeatingChart | null):
973
975
  * two behaviours. React already treated them this way; Vue and Angular did not
974
976
  * expose them at all.
975
977
  */
976
- declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
978
+ declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
977
979
  type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
978
980
  /** Non-callback options a wrapper accepts as props/inputs and passes straight through. */
979
- declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
981
+ declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
980
982
  type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
981
983
  /** Every callback option a wrapper wires to its own event mechanism. */
982
984
  declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
@@ -1513,6 +1515,9 @@ interface SeatPickerOptions {
1513
1515
  selectableObjects?: string[] | null;
1514
1516
  /** Require exactly this many total seated/table/GA guest units before checkout. */
1515
1517
  numberOfPlacesToSelect?: number;
1518
+ /** Optional sale guards evaluated after every change and enforced before a
1519
+ * hold: minimum quantity, consecutive seats, and/or no stranded singles. */
1520
+ selectionValidators?: PickerSelectionValidator[];
1516
1521
  /** BCP 47 language for the widget UI. Built-in: en, es, de, fr. */
1517
1522
  locale?: string;
1518
1523
  /** Per-key string overrides layered over the active locale. */
@@ -1738,11 +1743,11 @@ interface SeatPickerOptions {
1738
1743
  onBooked?: (handoff: CheckoutHandoff) => void;
1739
1744
  /** Selection changed (tap or best-available). */
1740
1745
  onSelectionChange?: (seats: PickerSeat[]) => void;
1741
- /** Exact-count state after each selection change. */
1746
+ /** Selection-rule state after each selection change. */
1742
1747
  onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
1743
- /** The configured exact ticket count has just been reached. */
1748
+ /** The configured selection rules have just become valid. */
1744
1749
  onSelectionValid?: (seats: PickerSeat[]) => void;
1745
- /** The current selection does not match the configured exact ticket count. */
1750
+ /** The configured selection rules have just become invalid. */
1746
1751
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
1747
1752
  /** A selection attempt reached the active maximum. */
1748
1753
  onSelectionLimit?: (maxSelection: number) => void;
@@ -1818,7 +1823,7 @@ declare class SeatPicker {
1818
1823
  private maxTickets;
1819
1824
  /** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
1820
1825
  private readonly exactTickets;
1821
- private lastExactSelectionValidity;
1826
+ private lastSelectionValidity;
1822
1827
  /** Original host pricing, kept separate from live server offer overrides. */
1823
1828
  private readonly hostPricing;
1824
1829
  private root;
@@ -2300,7 +2305,7 @@ declare class SeatPicker {
2300
2305
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
2301
2306
  private evictTakenSelections;
2302
2307
  private syncTray;
2303
- private emitExactSelectionValidity;
2308
+ private emitSelectionValidity;
2304
2309
  /** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
2305
2310
  private renderPeek;
2306
2311
  private removeHeldLabel;
@@ -2385,7 +2390,7 @@ declare class SeatPicker {
2385
2390
  setSelectableObjects(objects: string[] | null): void;
2386
2391
  /** Change the order selection cap without remounting. */
2387
2392
  setMaxSelection(maxSelection: number): void;
2388
- /** Current exact-count validity, including held and pending GA tickets. */
2393
+ /** Current selection-rule validity, including held and pending GA tickets. */
2389
2394
  getSelectionValidity(): PickerSelectionValidity | null;
2390
2395
  /**
2391
2396
  * Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
2
- export { ExpandedSeat, PickerMapTheme, PickerSelectionValidity, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
3
- export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-CFxx1jp3.js';
1
+ import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
2
+ export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
3
+ export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.js';
4
4
 
5
5
  /**
6
6
  * Buyer access context — the browser half of the Sales Channels contract
@@ -576,6 +576,8 @@ interface SeatingChartOptions {
576
576
  selectableObjects?: string[] | null;
577
577
  /** Require exactly this many seated/table guest units before the selection is valid. */
578
578
  numberOfPlacesToSelect?: number;
579
+ /** Optional local selection guards, enforced again before hold. */
580
+ selectionValidators?: PickerSelectionValidator[];
579
581
  /**
580
582
  * BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
581
583
  * the browser language, then English. Built-in: en, es, de, fr. The German
@@ -613,11 +615,11 @@ interface SeatingChartOptions {
613
615
  */
614
616
  onSeatHover?: (details: SeatHoverDetails | null) => void;
615
617
  onSelectionChange?: (seats: SelectedSeat[]) => void;
616
- /** Exact-count state after each selection change. */
618
+ /** Selection-rule state after each selection change. */
617
619
  onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
618
- /** The exact configured count has just been reached. */
620
+ /** The configured selection rules have just become valid. */
619
621
  onSelectionValid?: (seats: SelectedSeat[]) => void;
620
- /** The current selection does not match the configured exact count. */
622
+ /** The configured selection rules have just become invalid. */
621
623
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
622
624
  /** A manual or programmatic selection reached the active maximum. */
623
625
  onSelectionLimit?: (maxSelection: number) => void;
@@ -731,7 +733,7 @@ declare class SeatingChart {
731
733
  setSelectableObjects(objects: string[] | null): void;
732
734
  /** Change the selection cap without remounting. */
733
735
  setMaxSelection(maxSelection: number): void;
734
- /** Current exact-count validity, or null when no exact count was configured. */
736
+ /** Current selection-rule validity, or null when no rules were configured. */
735
737
  getSelectionValidity(): PickerSelectionValidity | null;
736
738
  /** Hold the current selection. Resolves the hold, or null on a 409 conflict. */
737
739
  hold(options?: {
@@ -973,10 +975,10 @@ declare function bindSeatingChartHandle(getInstance: () => SeatingChart | null):
973
975
  * two behaviours. React already treated them this way; Vue and Angular did not
974
976
  * expose them at all.
975
977
  */
976
- declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
978
+ declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
977
979
  type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
978
980
  /** Non-callback options a wrapper accepts as props/inputs and passes straight through. */
979
- declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
981
+ declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
980
982
  type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
981
983
  /** Every callback option a wrapper wires to its own event mechanism. */
982
984
  declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
@@ -1513,6 +1515,9 @@ interface SeatPickerOptions {
1513
1515
  selectableObjects?: string[] | null;
1514
1516
  /** Require exactly this many total seated/table/GA guest units before checkout. */
1515
1517
  numberOfPlacesToSelect?: number;
1518
+ /** Optional sale guards evaluated after every change and enforced before a
1519
+ * hold: minimum quantity, consecutive seats, and/or no stranded singles. */
1520
+ selectionValidators?: PickerSelectionValidator[];
1516
1521
  /** BCP 47 language for the widget UI. Built-in: en, es, de, fr. */
1517
1522
  locale?: string;
1518
1523
  /** Per-key string overrides layered over the active locale. */
@@ -1738,11 +1743,11 @@ interface SeatPickerOptions {
1738
1743
  onBooked?: (handoff: CheckoutHandoff) => void;
1739
1744
  /** Selection changed (tap or best-available). */
1740
1745
  onSelectionChange?: (seats: PickerSeat[]) => void;
1741
- /** Exact-count state after each selection change. */
1746
+ /** Selection-rule state after each selection change. */
1742
1747
  onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
1743
- /** The configured exact ticket count has just been reached. */
1748
+ /** The configured selection rules have just become valid. */
1744
1749
  onSelectionValid?: (seats: PickerSeat[]) => void;
1745
- /** The current selection does not match the configured exact ticket count. */
1750
+ /** The configured selection rules have just become invalid. */
1746
1751
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
1747
1752
  /** A selection attempt reached the active maximum. */
1748
1753
  onSelectionLimit?: (maxSelection: number) => void;
@@ -1818,7 +1823,7 @@ declare class SeatPicker {
1818
1823
  private maxTickets;
1819
1824
  /** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
1820
1825
  private readonly exactTickets;
1821
- private lastExactSelectionValidity;
1826
+ private lastSelectionValidity;
1822
1827
  /** Original host pricing, kept separate from live server offer overrides. */
1823
1828
  private readonly hostPricing;
1824
1829
  private root;
@@ -2300,7 +2305,7 @@ declare class SeatPicker {
2300
2305
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
2301
2306
  private evictTakenSelections;
2302
2307
  private syncTray;
2303
- private emitExactSelectionValidity;
2308
+ private emitSelectionValidity;
2304
2309
  /** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
2305
2310
  private renderPeek;
2306
2311
  private removeHeldLabel;
@@ -2385,7 +2390,7 @@ declare class SeatPicker {
2385
2390
  setSelectableObjects(objects: string[] | null): void;
2386
2391
  /** Change the order selection cap without remounting. */
2387
2392
  setMaxSelection(maxSelection: number): void;
2388
- /** Current exact-count validity, including held and pending GA tickets. */
2393
+ /** Current selection-rule validity, including held and pending GA tickets. */
2389
2394
  getSelectionValidity(): PickerSelectionValidity | null;
2390
2395
  /**
2391
2396
  * Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette