@seatlayer/js 0.67.14 → 0.68.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,4 +1,4 @@
1
- import { PickerSeat, PickerGAArea, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerMapTheme, PickerTransport } from '@seatlayer/core';
1
+ import { PickerSeat, PickerGAArea, PickerSelectionValidator, PickerMapTheme, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, SectionSummary, ChartTheme, LodRung, PickerTransport } from '@seatlayer/core';
2
2
  export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
3
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
 
@@ -76,6 +76,8 @@ type BuyerAccessUnavailableReason =
76
76
  | 'group_mismatch'
77
77
  /** 403 `buyer_access_mode_mismatch` (test bearer on a live event or v.v.). */
78
78
  | 'mode_mismatch'
79
+ /** 403 `buyer_access_environment_mismatch` (session belongs to another environment). */
80
+ | 'environment_mismatch'
79
81
  /** 403 `channel_access_denied`. */
80
82
  | 'channel_denied'
81
83
  /** 422 `invalid_channel_scope` — an integration configuration error. */
@@ -642,6 +644,101 @@ interface GAAreaAvailability {
642
644
  price: number;
643
645
  }>;
644
646
  }
647
+ /**
648
+ * Serializable state exposed to hosted native picker chrome. It deliberately
649
+ * contains buyer-display data only: never API keys, buyer-access bearers,
650
+ * provider callbacks, or the active hold id.
651
+ */
652
+ interface SeatingChartPickerState {
653
+ event: {
654
+ key: string;
655
+ name: string;
656
+ venue: string | null;
657
+ startsAt: number | null;
658
+ timezone: string | null;
659
+ currency: string;
660
+ locale: string | null;
661
+ posterUrl: string | null;
662
+ mode: 'live' | 'test';
663
+ salesClosed: boolean;
664
+ };
665
+ branding: {
666
+ accent?: ChartTheme['accent'];
667
+ accentInk?: ChartTheme['accentInk'];
668
+ background?: ChartTheme['background'];
669
+ textColor?: ChartTheme['textColor'];
670
+ brandName?: ChartTheme['brandName'];
671
+ logoUrl?: ChartTheme['logoUrl'];
672
+ /** Native must render SeatLayer attribution when it owns chrome and this is true. */
673
+ attributionRequired: boolean;
674
+ };
675
+ features: {
676
+ ga: boolean;
677
+ tiers: boolean;
678
+ floors: boolean;
679
+ zones: boolean;
680
+ sections: boolean;
681
+ bestAvailable: boolean;
682
+ accessibilityFilter: boolean;
683
+ limitedViewFilter: boolean;
684
+ };
685
+ catalog: {
686
+ categories: Array<{
687
+ key: string;
688
+ label: string;
689
+ color: string;
690
+ price: number;
691
+ available: number;
692
+ tiers: Array<{
693
+ id: string;
694
+ name: string;
695
+ price: number;
696
+ currency?: string;
697
+ }>;
698
+ }>;
699
+ zones: Array<{
700
+ id: string;
701
+ label: string;
702
+ color?: string;
703
+ }>;
704
+ sections: Array<{
705
+ id: string;
706
+ label: string;
707
+ displayLabel?: string;
708
+ zoneId?: string;
709
+ }>;
710
+ gaAreas: GAAreaAvailability[];
711
+ bestAvailableZones: Array<{
712
+ id: string;
713
+ label: string;
714
+ }>;
715
+ };
716
+ map: {
717
+ floors: Array<{
718
+ id: string;
719
+ name: string;
720
+ }>;
721
+ activeFloorId: string | null;
722
+ rung: LodRung;
723
+ focusedSectionId: string | null;
724
+ focusedSection: SectionSummary | null;
725
+ viewMode: RendererViewMode;
726
+ colorblindSafe: boolean;
727
+ categoryFilter: string[] | null;
728
+ accessibilityFilter: string[] | null;
729
+ hideLimitedView: boolean;
730
+ };
731
+ selection: {
732
+ seats: SelectedSeat[];
733
+ validity: PickerSelectionValidity | null;
734
+ maxSelection: number;
735
+ };
736
+ access: {
737
+ configured: boolean;
738
+ status: 'public' | 'ready' | 'expired' | 'unavailable';
739
+ reason?: string;
740
+ };
741
+ }
645
742
  interface SeatingChartOptions {
646
743
  /** CSS selector or an HTMLElement to render into. */
647
744
  container: string | HTMLElement;
@@ -649,9 +746,11 @@ interface SeatingChartOptions {
649
746
  event: string;
650
747
  /** API origin. Defaults to https://api.seatlayer.io. */
651
748
  apiBase?: string;
652
- /** Reserved for future authenticated rendering — accepted + stored, not yet sent.
653
- * NOT the channel-access credential: a buyer access session is a different
654
- * thing with different authority, and uses the two options below. */
749
+ /**
750
+ * Publishable account key for direct Public-sale bootstrap of a Platform/SDK
751
+ * Event. It is never buyer identity and cannot request private inventory.
752
+ * An explicit buyer-access provider/token below always takes precedence.
753
+ */
655
754
  publicKey?: string;
656
755
  /**
657
756
  * Buyer access session provider — the recommended way to render private
@@ -714,6 +813,8 @@ interface SeatingChartOptions {
714
813
  * Toggleable later with setColorblindSafe().
715
814
  */
716
815
  colorblindSafe?: boolean;
816
+ /** Host-authoritative colors for the drawn canvas, separate from native chrome. */
817
+ mapTheme?: PickerMapTheme;
717
818
  /** Initial canvas projection.
718
819
  * @deprecated `'isometric'` and `'perspective'` are retired in favour of the
719
820
  * real 3D venue view (`setBuyerView('venue3d')`); they remain accepted for
@@ -725,6 +826,10 @@ interface SeatingChartOptions {
725
826
  * to draw your own popover from onSeatHover.
726
827
  */
727
828
  seatTooltip?: boolean;
829
+ /** Internal hosted-runtime control. Defaults true for direct web embeds. */
830
+ showTestModeIndicator?: boolean;
831
+ /** Internal hosted-runtime control. Defaults true, subject to white-label entitlement. */
832
+ showAttribution?: boolean;
728
833
  /**
729
834
  * Seat hover with everything a popover needs (category label/color, resolved
730
835
  * tier-aware price, live status, currency); null on hover-out. Fires whether
@@ -793,6 +898,16 @@ interface SeatingChartOptions {
793
898
  * its own floor UI (tabs, labels) with the map.
794
899
  */
795
900
  onDeckTap?: (floorId: string) => void;
901
+ /** Big-venue section focus state for host-owned navigation chrome. */
902
+ onSectionFocus?: (summary: SectionSummary | null) => void;
903
+ /** Availability changed after a live frame or explicit refresh. */
904
+ onStatusChange?: () => void;
905
+ /** The server closed sales for this event. */
906
+ onSalesClosed?: () => void;
907
+ /** A programmatic/native map-control action changed serializable map state. */
908
+ onMapStateChange?: () => void;
909
+ /** Pan/zoom/resize settled; useful for host overlays and native map controls. */
910
+ onViewChange?: () => void;
796
911
  /**
797
912
  * Non-blocking, localized selection advice — currently the orphan-seat hint
798
913
  * (the selection would strand a single free seat between taken neighbors).
@@ -803,7 +918,7 @@ interface SeatingChartOptions {
803
918
  declare class SeatingChart {
804
919
  private readonly opts;
805
920
  private readonly controller;
806
- /** Reserved for future authenticated rendering stored, not yet sent on any request. */
921
+ /** Publishable key used only by the public-only direct bootstrap path. */
807
922
  readonly publicKey?: string;
808
923
  private mount;
809
924
  private hostEl;
@@ -811,6 +926,14 @@ declare class SeatingChart {
811
926
  private eventLocale;
812
927
  private rendered;
813
928
  private mode_;
929
+ private eventInfo;
930
+ private maxSelection_;
931
+ private colorblindSafe_;
932
+ private categoryFilter_;
933
+ private accessibilityFilter_;
934
+ private hideLimitedView_;
935
+ private focusedSection_;
936
+ private accessState_;
814
937
  private tipEl;
815
938
  private tipPos;
816
939
  private onTipMove;
@@ -869,6 +992,22 @@ declare class SeatingChart {
869
992
  */
870
993
  setLocale(next: string | null | undefined): Promise<string>;
871
994
  getMode(): 'live' | 'test' | null;
995
+ /** Atomic, token-free display state for native-owned picker chrome. */
996
+ getPickerState(): SeatingChartPickerState;
997
+ getCategoryAvailability(): Record<string, number>;
998
+ getBestAvailableZones(): Array<{
999
+ id: string;
1000
+ label: string;
1001
+ }>;
1002
+ getActiveFloorId(): string | null;
1003
+ getRung(): LodRung;
1004
+ getFocusedSection(): string | null;
1005
+ focusSection(sectionId: string): void;
1006
+ overview(): void;
1007
+ setRung(rung: LodRung): void;
1008
+ setCategoryFilter(categoryKeys: string[] | null, focus?: boolean): void;
1009
+ setAccessibilityFilter(types: string[] | null): void;
1010
+ setCommercialLimitedFilter(on: boolean): void;
872
1011
  /** Current selection with prices resolved from the chart categories. */
873
1012
  getSelection(): SelectedSeat[];
874
1013
  /** Select free objects by engine id or public label. Returns newly selected objects. */
@@ -951,6 +1090,15 @@ declare class SeatingChart {
951
1090
  * reverts to the default tier.
952
1091
  */
953
1092
  setSeatTier(seatId: string, tierId: string | null): void;
1093
+ /** Confirm/update an unheld variable table's guest quantity locally. */
1094
+ setTableQuantity(label: string, quantity: number): boolean;
1095
+ /**
1096
+ * Atomically replace an active variable-table hold with a new guest count.
1097
+ * Returns null for an inapplicable/invalid quantity or a refused replacement.
1098
+ */
1099
+ replaceTableQuantity(label: string, quantity: number, ttlMs?: number): Promise<HoldResult | null>;
1100
+ /** @internal Throwing variant used by the correlated native bridge. */
1101
+ replaceTableQuantityOrThrow(label: string, quantity: number, ttlMs?: number): Promise<HoldResult | null>;
954
1102
  /**
955
1103
  * Floors of a multi-floor chart — `[{ id, name }]` (single-floor charts
956
1104
  * return one entry; empty before render()). Pair with setFloor() to build a
@@ -990,6 +1138,8 @@ declare class SeatingChart {
990
1138
  * and its own legacy frames. Nothing about the public path changes.
991
1139
  */
992
1140
  private startRealtime;
1141
+ /** Re-read live inventory without remounting or dropping buyer state. */
1142
+ refreshAvailability(): Promise<void>;
993
1143
  /**
994
1144
  * Re-acquire the buyer access session — call after your app has re-authorized
995
1145
  * the buyer (a revoked session cannot be recovered any other way). Resolves
@@ -1628,9 +1778,16 @@ interface SeatPickerOptions {
1628
1778
  * SeatLayer dashboard's own transport) or a fully local mock (demos).
1629
1779
  */
1630
1780
  transport?: PickerTransport;
1631
- /** Reserved for future authenticated rendering. NOT the channel-access
1632
- * credential a buyer access session is a different thing with different
1633
- * authority, and uses the two options below. */
1781
+ /**
1782
+ * Publishable account key (`pk_live_…` / `pk_test_…`) for a public
1783
+ * Platform/SDK Event. With no explicit buyer-access token/provider, the SDK
1784
+ * uses it to bootstrap one origin-bound, Public-sale-only session directly
1785
+ * from SeatLayer and receives chart + inventory in the same request.
1786
+ *
1787
+ * This is not buyer identity and cannot request private channels. An explicit
1788
+ * `buyerAccessTokenProvider` or `buyerAccessToken` below always takes
1789
+ * precedence for login, presale, partner or other scoped inventory.
1790
+ */
1634
1791
  publicKey?: string;
1635
1792
  /**
1636
1793
  * Buyer access session provider — the recommended way to show private channel
@@ -3230,6 +3387,115 @@ declare class PerformanceGroupPicker {
3230
3387
  private checkout;
3231
3388
  }
3232
3389
 
3390
+ type SeasonOperationState = 'preparing' | 'commit_pending' | 'committed' | 'abort_pending' | 'aborted' | 'partial_terminal' | 'expired' | 'booked';
3391
+ interface SeasonDescriptor {
3392
+ key: string;
3393
+ name: string;
3394
+ edition: string | null;
3395
+ mode: 'live' | 'test';
3396
+ currency: string;
3397
+ venue: string;
3398
+ timezone: string | null;
3399
+ audience: 'private' | 'embed_only' | 'discoverable';
3400
+ planActivationId: string;
3401
+ occurrenceCount: number;
3402
+ occurrences: Array<{
3403
+ position: number;
3404
+ eventKey: string;
3405
+ name: string;
3406
+ startsAt: number | null;
3407
+ }>;
3408
+ }
3409
+ interface SeasonAvailability {
3410
+ seats: Record<string, 'free' | 'blocked'>;
3411
+ partial: Record<string, string[]>;
3412
+ revision: string;
3413
+ comparisons: number;
3414
+ freeCount: number;
3415
+ blockedCount: number;
3416
+ }
3417
+ interface SeasonOperation {
3418
+ operationId: string;
3419
+ seasonId: string;
3420
+ kind: string;
3421
+ holdId: string;
3422
+ expiresAt: number;
3423
+ policy: 'fixed_inclusion_same_seat';
3424
+ state: SeasonOperationState;
3425
+ bookingRef: string | null;
3426
+ location: string;
3427
+ retryAfterSeconds: number;
3428
+ allocations: Array<{
3429
+ eventId: string;
3430
+ state: string;
3431
+ }>;
3432
+ }
3433
+ interface SeasonCheckoutHandoff {
3434
+ seasonKey: string;
3435
+ planActivationId: string;
3436
+ operationId: string;
3437
+ holdId: string;
3438
+ expiresAt: number;
3439
+ policy: 'fixed_inclusion_same_seat';
3440
+ state: SeasonOperationState;
3441
+ allocations: Array<{
3442
+ eventKey: string;
3443
+ state: string;
3444
+ }>;
3445
+ }
3446
+ interface SeasonRenewalIntent {
3447
+ offerId: string;
3448
+ state: 'intent_received';
3449
+ intentId: string;
3450
+ receivedAt: number;
3451
+ }
3452
+ declare class SeasonApiError extends Error {
3453
+ readonly code: string;
3454
+ readonly status: number;
3455
+ constructor(code: string, status: number);
3456
+ }
3457
+ declare class SeasonRecoveryTimeoutError extends Error {
3458
+ readonly operationId: string;
3459
+ constructor(operationId: string);
3460
+ }
3461
+
3462
+ interface SeasonStatusEvent {
3463
+ kind: 'loading' | 'ready' | 'pending' | 'held' | 'released' | 'renewal_intent' | 'partial_terminal' | 'failed';
3464
+ message: string;
3465
+ operationId?: string;
3466
+ }
3467
+ interface SeasonPickerOptions {
3468
+ container: string | HTMLElement;
3469
+ season: string;
3470
+ apiBase?: string;
3471
+ buyerAccessTokenProvider?: BuyerAccessTokenProvider;
3472
+ buyerAccessToken?: string | BuyerAccessToken;
3473
+ initialOperationId?: string;
3474
+ recoveryTimeoutMs?: number;
3475
+ fetch?: typeof fetch;
3476
+ onHold?: (handoff: SeasonCheckoutHandoff) => void;
3477
+ onHoldChange?: (handoff: SeasonCheckoutHandoff | null) => void;
3478
+ onContinue?: (handoff: SeasonCheckoutHandoff) => void;
3479
+ onRenewalIntent?: (intent: SeasonRenewalIntent) => void;
3480
+ onAccessExpired?: (event: BuyerAccessExpiredEvent) => void;
3481
+ onAccessUnavailable?: (event: BuyerAccessUnavailableEvent) => void;
3482
+ onStatusChange?: (event: SeasonStatusEvent) => void;
3483
+ onError?: (error: unknown) => void;
3484
+ }
3485
+ declare class SeasonPicker {
3486
+ #private;
3487
+ constructor(options: SeasonPickerOptions);
3488
+ render(): Promise<this>;
3489
+ holdSameSeat(labels: readonly string[], operationId: string): Promise<SeasonCheckoutHandoff>;
3490
+ restoreOperation(operationId: string): Promise<SeasonCheckoutHandoff | null>;
3491
+ release(releaseActionId: string): Promise<void>;
3492
+ createRenewalIntent(offerId: string): Promise<SeasonRenewalIntent>;
3493
+ getDescriptor(): SeasonDescriptor | null;
3494
+ getAvailability(): SeasonAvailability | null;
3495
+ getHandoff(): SeasonCheckoutHandoff | null;
3496
+ destroy(): void;
3497
+ }
3498
+
3233
3499
  /**
3234
3500
  * Host-side helper for embedding the SeatLayer picker as an iframe.
3235
3501
  *
@@ -3269,4 +3535,4 @@ interface AttachPickerFrameOptions {
3269
3535
  */
3270
3536
  declare function attachPickerFrame(iframe: HTMLIFrameElement, opts?: AttachPickerFrameOptions): () => void;
3271
3537
 
3272
- export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type GAPromptRequest, type GaPromptTier, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type PerformanceGroupAvailability, type PerformanceGroupCheckoutHandoff, type PerformanceGroupDescriptor, PerformanceGroupDestroyedError, type PerformanceGroupHold, type PerformanceGroupHoldAllocation, type PerformanceGroupOperationEvent, type PerformanceGroupOperationState, PerformanceGroupPicker, type PerformanceGroupPickerOptions, type PerformanceGroupRecoveryState, type PerformanceGroupSeatAllocation, type PerformanceGroupSelectionMode, type PerformanceGroupStatusEvent, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, shortOperationReference, ticketOfferPrices };
3538
+ export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type GAPromptRequest, type GaPromptTier, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type PerformanceGroupAvailability, type PerformanceGroupCheckoutHandoff, type PerformanceGroupDescriptor, PerformanceGroupDestroyedError, type PerformanceGroupHold, type PerformanceGroupHoldAllocation, type PerformanceGroupOperationEvent, type PerformanceGroupOperationState, PerformanceGroupPicker, type PerformanceGroupPickerOptions, type PerformanceGroupRecoveryState, type PerformanceGroupSeatAllocation, type PerformanceGroupSelectionMode, type PerformanceGroupStatusEvent, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeasonApiError, type SeasonAvailability, type SeasonCheckoutHandoff, type SeasonDescriptor, type SeasonOperation, type SeasonOperationState, SeasonPicker, type SeasonPickerOptions, SeasonRecoveryTimeoutError, type SeasonRenewalIntent, type SeasonStatusEvent, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, shortOperationReference, ticketOfferPrices };