@seatlayer/js 0.36.3 → 0.38.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
@@ -239,6 +239,52 @@ interface BestAvailableResult {
239
239
  items?: HoldResult['items'];
240
240
  zoneId?: string;
241
241
  }
242
+ /** A gateway the organizer can be connected to. */
243
+ type PaymentProviderName = 'stripe' | 'razorpay';
244
+ /**
245
+ * Why `payment-options` came back with an empty list.
246
+ *
247
+ * The three are NOT interchangeable and two of them give opposite advice:
248
+ * `not_configured` means the organizer takes payment somewhere else,
249
+ * `payments_off_for_event` means they deliberately do not sell THIS event
250
+ * online, and `unavailable_for_event` means they switched it on and it is
251
+ * broken. Collapsing them makes the widget blame a working integration for a
252
+ * decision that was made on purpose.
253
+ */
254
+ type PaymentOptionsReason = 'not_configured' | 'payments_off_for_event' | 'unavailable_for_event';
255
+ /**
256
+ * What this event can take money through. Since the per-event gateway column
257
+ * landed, `providers` holds AT MOST ONE entry — the gateway the organizer
258
+ * assigned — so no browser can choose which one charges.
259
+ *
260
+ * `reason` is optional on the wire: a widget pinned against an older worker
261
+ * still parses, and its absence means what that worker meant by an empty list.
262
+ */
263
+ interface PaymentOptionsResult {
264
+ providers: PaymentProviderName[];
265
+ currency: string | null;
266
+ reason?: PaymentOptionsReason | null;
267
+ }
268
+ /** A started payment. Exactly one of the two handoffs comes back. */
269
+ interface CheckoutSessionResult {
270
+ orderId: string;
271
+ totalMinor: number;
272
+ currency: string;
273
+ expiresAt: number;
274
+ /** Hosted gateway page — navigate to it. */
275
+ redirectUrl?: string;
276
+ /** In-page modal gateway — open it without leaving the page. */
277
+ clientPayload?: Record<string, unknown>;
278
+ }
279
+ /** An order's state while its gateway webhook is in flight. */
280
+ interface OrderStatusResult {
281
+ orderId: string;
282
+ status: string;
283
+ totalMinor: number;
284
+ currency: string;
285
+ amountFormatted: string;
286
+ seatCount: number;
287
+ }
242
288
  interface PubApiOptions {
243
289
  /**
244
290
  * Buyer access session. When present, EVERY scoped operation on this client
@@ -1183,13 +1229,82 @@ interface SeatPickerOptions {
1183
1229
  * photo when a seat carries one. Default true; set false to hide the affordance.
1184
1230
  */
1185
1231
  seatView?: boolean;
1232
+ /**
1233
+ * WHERE the buyer goes once their seats are held. Default `'handoff'`.
1234
+ *
1235
+ * 'handoff' (default, and every integration that has ever existed) the
1236
+ * widget fires {@link onCheckout} with a holdId and priced line
1237
+ * items, and YOUR server takes the money. Nothing about this path
1238
+ * changes, and no payment code is even downloaded.
1239
+ * 'hosted' the widget takes the money through the gateway the ORGANIZER
1240
+ * connected, on their account — the "sell tickets with no
1241
+ * backend" path. Requires the org to be on hosted checkout and
1242
+ * the event to have a gateway assigned; when it does not, this
1243
+ * falls back to `'handoff'` for that buyer rather than dead-ending
1244
+ * them, and reports why through {@link onCheckoutUnavailable}.
1245
+ *
1246
+ * Named for the destination rather than as a boolean flag because there is a
1247
+ * real third answer coming and `hostedCheckout: true` would have no room for
1248
+ * it; spelling the default out also makes a host's intent legible in their own
1249
+ * source instead of hiding it in an absent option.
1250
+ *
1251
+ * TWO THINGS ARE WORTH KNOWING BEFORE YOU SWITCH THIS ON:
1252
+ *
1253
+ * 1. It needs the widget's own transport. A host-supplied `transport` owns its
1254
+ * credentials and its backend, so hosted checkout stays off there (with one
1255
+ * console warning) rather than reaching past it to api.seatlayer.io.
1256
+ * 2. WHERE A HOSTED GATEWAY RETURNS THE BUYER IS THE SERVER'S CHOICE. The
1257
+ * checkout session's return URL is built from the deployment's own allowed
1258
+ * origins, so a buyer paying by card from an embed on your domain comes back
1259
+ * to SeatLayer's buyer page and is confirmed THERE, not in this widget. The
1260
+ * widget resumes in place only when it is mounted on a page that actually
1261
+ * receives `?order=…&status=success` (a page on an allowed origin, and the
1262
+ * in-page gateways, which never navigate away at all). Until the server
1263
+ * accepts a caller-supplied return URL, treat a card payment from a
1264
+ * third-party embed as "the buyer finishes on our page".
1265
+ */
1266
+ checkout?: 'handoff' | 'hosted';
1186
1267
  /**
1187
1268
  * Buyer pressed the CTA and the hold succeeded — hand off to YOUR checkout.
1188
1269
  * `hold` and `seats` are the legacy args (unchanged since 0.6). `handoff` (P4)
1189
1270
  * is the stable, self-contained {@link CheckoutHandoff} to build your order
1190
1271
  * against — holdId, expiry, currency and priced line items. Prefer it.
1272
+ *
1273
+ * Under `checkout: 'hosted'` this fires ONLY when hosted checkout cannot run
1274
+ * for this event, so a host can keep one code path for both. It never fires
1275
+ * alongside a payment the widget is taking itself.
1191
1276
  */
1192
1277
  onCheckout?: (hold: HoldResult, seats: PickerSeat[], handoff: CheckoutHandoff) => void;
1278
+ /**
1279
+ * `checkout: 'hosted'` was asked for and this event cannot take money.
1280
+ * The seats ARE held — the buyer is mid-journey — so this is a routing
1281
+ * decision, not an error, and it is never collapsed into {@link onError}.
1282
+ *
1283
+ * `reason` carries the server's three-way answer verbatim, because two of the
1284
+ * three give opposite advice: `payments_off_for_event` means the organizer
1285
+ * deliberately does not sell this event online (nothing is wrong), while
1286
+ * `unavailable_for_event` means they switched it on and it is broken. Anything
1287
+ * unreadable — a failed lookup, an older worker — reads as `not_configured`,
1288
+ * which asserts the least about them.
1289
+ *
1290
+ * `onCheckout` fires immediately after this with the same hold. Supply either
1291
+ * (or both) and you own the next screen; supply NEITHER and the widget shows
1292
+ * the buyer an honest card of its own rather than swallowing the press.
1293
+ */
1294
+ onCheckoutUnavailable?: (event: {
1295
+ reason: PaymentOptionsReason;
1296
+ handoff: CheckoutHandoff;
1297
+ }) => void;
1298
+ /**
1299
+ * `checkout: 'hosted'` only — the gateway's webhook landed and the order is
1300
+ * PAID. The one signal a host with no backend actually needs, and the only
1301
+ * place a receipt can come from on a page that has no server of its own.
1302
+ *
1303
+ * Distinct from {@link onBooked}, which reports the same sale seen from the
1304
+ * seat map over the realtime channel and cannot fire at all for a buyer whose
1305
+ * widget was torn down by a redirect to the gateway.
1306
+ */
1307
+ onOrderConfirmed?: (order: OrderStatusResult) => void;
1193
1308
  /**
1194
1309
  * The held seats were BOOKED (P4) — your server completed payment and the
1195
1310
  * booking landed over the realtime channel while the widget was still open.
@@ -1265,6 +1380,20 @@ declare class SeatPicker {
1265
1380
  private handedOff;
1266
1381
  /** Guards single onBooked + single success overlay per hold. */
1267
1382
  private bookedShown;
1383
+ /**
1384
+ * `'hosted'` only when the host asked for it AND the widget owns its own
1385
+ * transport. Resolved once in the constructor so every later read is a field
1386
+ * comparison rather than a re-derivation that could drift.
1387
+ */
1388
+ private readonly checkoutMode;
1389
+ /**
1390
+ * In-flight or settled `payment-options` for this event, started at render in
1391
+ * hosted mode. One request, kicked off while the buyer is still choosing, so
1392
+ * pressing Pay does not wait on a lookup whose answer never changes mid-session.
1393
+ */
1394
+ private paymentOptions;
1395
+ /** The mounted payment card, while one is up. */
1396
+ private checkoutPanel;
1268
1397
  private extendEl;
1269
1398
  private bookedEl;
1270
1399
  private gaQty;
@@ -1426,6 +1555,22 @@ declare class SeatPicker {
1426
1555
  static open(options: Omit<SeatPickerOptions, 'container'>): Promise<SeatPicker>;
1427
1556
  constructor(options: SeatPickerOptions);
1428
1557
  render(): Promise<this>;
1558
+ /**
1559
+ * A hosted gateway returned this buyer to a page that runs the widget, with
1560
+ * `?order=…&status=…` in the URL. Pick the order up and finish the story.
1561
+ *
1562
+ * Only `success` resumes. `cancelled` means the buyer backed out at the
1563
+ * gateway and their seats are still held — the map they are looking at IS the
1564
+ * right screen, and opening a card to say "you cancelled" would be noise.
1565
+ *
1566
+ * The two parameters are then stripped with `replaceState`, because they are a
1567
+ * one-shot instruction: leaving them in place would re-open the confirmation
1568
+ * on every later navigation, and would carry an order id into browser history
1569
+ * and any Referer this page later sends. `status` is only ever removed
1570
+ * alongside an `order` we actually consumed, so a host page that uses a
1571
+ * `status` parameter of its own keeps it.
1572
+ */
1573
+ private resumeHostedOrder;
1429
1574
  /**
1430
1575
  * Move layout-dependent chrome between its wide dock (map regions / zoom
1431
1576
  * column) and its narrow dock (the sheet's consolidated Filters row), and
@@ -1589,6 +1734,10 @@ declare class SeatPicker {
1589
1734
  * uploaded photo (seat.viewUrl) when present, else a panorama generated from
1590
1735
  * the chart geometry — the stage placed at this seat's true bearing + size.
1591
1736
  * Zero extra dependencies: an equirectangular image panned with `repeat-x`.
1737
+ *
1738
+ * Async only because the generator is a lazy chunk (see `loadPanorama`); an
1739
+ * organizer photo needs no generator and never waits on it. The two callers
1740
+ * are click handlers, so nothing observes the promise.
1592
1741
  */
1593
1742
  private openSeatView;
1594
1743
  private closeSeatView;
@@ -1637,6 +1786,38 @@ declare class SeatPicker {
1637
1786
  */
1638
1787
  private detectBooked;
1639
1788
  private showBooked;
1789
+ /**
1790
+ * The seats are held. Send the buyer wherever this picker's `checkout` option
1791
+ * says they go.
1792
+ *
1793
+ * The default branch is the literal call that stood here before hosted
1794
+ * checkout existed, unchanged, so nothing about an existing integration moves.
1795
+ */
1796
+ private checkoutHandoff;
1797
+ /**
1798
+ * Take the money ourselves, through the organizer's own gateway.
1799
+ *
1800
+ * Order of operations matters: ASK FIRST, load second. `payment-options` is
1801
+ * already in flight from render, and its answer decides whether any payment
1802
+ * code is fetched at all — an event that cannot charge never downloads the
1803
+ * card that would have charged it.
1804
+ *
1805
+ * An empty list is not a failure and never dead-ends the buyer. It routes them
1806
+ * to whatever the host has: `onCheckoutUnavailable` (with the server's reason,
1807
+ * so the host can say the right one of three very different sentences), then
1808
+ * `onCheckout` with the ordinary handoff. A host that supplied neither gets
1809
+ * the widget's own honest card instead of a press that did nothing.
1810
+ */
1811
+ private startHostedCheckout;
1812
+ /**
1813
+ * Fetch the checkout chunk and put its card over the map.
1814
+ *
1815
+ * Every failure here lands the buyer back on a map with their seats still
1816
+ * held, which is a place they can act from — a blocked chunk request must not
1817
+ * leave them staring at a CTA that no longer does anything.
1818
+ */
1819
+ private openCheckoutPanel;
1820
+ private closeCheckoutPanel;
1640
1821
  /** Assemble the stable {@link CheckoutHandoff} from a hold's server line items. */
1641
1822
  private buildHandoff;
1642
1823
  private emitHoldChange;
@@ -2725,8 +2906,31 @@ interface SeatManagerOptions {
2725
2906
  onSelectionChange?: (seats: ExpandedSeat[]) => void;
2726
2907
  /** A block/unblock/cancel action completed successfully. */
2727
2908
  onActionComplete?: (result: SeatManagerActionResult) => void;
2909
+ /**
2910
+ * The realtime link connected or dropped, with the moment the numbers on
2911
+ * screen were last known good.
2912
+ *
2913
+ * A host embedding this cockpit renders its own chrome around it, and until
2914
+ * now had no way to know the board had gone stale: the manager tracked the
2915
+ * drop internally (its own LIVE/RECONNECTING pill) and told nobody. A host
2916
+ * that polls on a timer and pauses while the tab is hidden therefore showed
2917
+ * arbitrarily old numbers that looked exactly like fresh ones.
2918
+ */
2919
+ onConnectionChange?: (state: SeatManagerConnection) => void;
2728
2920
  onError?: (err: unknown) => void;
2729
2921
  }
2922
+ /** Realtime link state, as reported to the embedding host. */
2923
+ interface SeatManagerConnection {
2924
+ /** `live` while the socket is open; `reconnecting` from drop until reopen. */
2925
+ status: 'live' | 'reconnecting';
2926
+ /**
2927
+ * `Date.now()` of the last snapshot or delta accepted from the server, or
2928
+ * null before the first one. This is the honest "as of" for whatever the host
2929
+ * is displaying — NOT the time the connection dropped, which is later and
2930
+ * would overstate freshness.
2931
+ */
2932
+ lastMessageAt: number | null;
2933
+ }
2730
2934
  declare class SeatManager {
2731
2935
  private readonly opts;
2732
2936
  private readonly api;
@@ -2758,6 +2962,11 @@ declare class SeatManager {
2758
2962
  private reconnectTimer;
2759
2963
  private attempt;
2760
2964
  private closed;
2965
+ /** Mirrors the `live` root class, so the getter never has to read the DOM. */
2966
+ private connectionStatus;
2967
+ /** When the server last told us something. Stamped on accepted traffic only —
2968
+ * a socket that opens and says nothing has not refreshed anything. */
2969
+ private lastMessageAt;
2761
2970
  private ready;
2762
2971
  private feed;
2763
2972
  private feedTimer;
@@ -2804,8 +3013,10 @@ declare class SeatManager {
2804
3013
  private resolveChannelCapabilities;
2805
3014
  /** The adapter between the cockpit's internals and Channels mode. */
2806
3015
  private buildChannelsHost;
2807
- /** Approximate on-screen seat size, for the channel overlay's marks. Derived
2808
- * from the live camera so the overlay tracks zoom without a renderer hook. */
3016
+ /** Actual on-screen seat diameter, for the channel overlay's marks. The
3017
+ * renderer's base seat radius is 9 chart units; retaining the camera scale
3018
+ * (rather than capping it) keeps every preview paint aligned with the real
3019
+ * chart geometry at deep zoom. */
2809
3020
  private seatPixelSize;
2810
3021
  /** Toggle the normalized sales-velocity outline overlay without changing seat colors. */
2811
3022
  setHeatOverlay(enabled: boolean): void;
@@ -2837,6 +3048,14 @@ declare class SeatManager {
2837
3048
  getSelection(): ExpandedSeat[];
2838
3049
  getReport(): Promise<ReportResult>;
2839
3050
  getControlRoomSnapshot(windowMinutes?: number): Promise<ControlRoomSnapshot>;
3051
+ /**
3052
+ * The realtime link's current state and the "as of" behind it.
3053
+ *
3054
+ * Pair with `onConnectionChange` for the edges: a host that mounts after a
3055
+ * drop, or re-reads on tab focus, needs to be able to ASK rather than wait
3056
+ * for the next transition that may never come.
3057
+ */
3058
+ getConnection(): SeatManagerConnection;
2840
3059
  getLog(opts?: {
2841
3060
  limit?: number;
2842
3061
  before?: number;
@@ -2850,8 +3069,9 @@ declare class SeatManager {
2850
3069
  zoomToFit(): void;
2851
3070
  destroy(): void;
2852
3071
  private buildRenderer;
2853
- /** Block and Channels are both bulk-selection tools: marquee, ⌘A, category,
2854
- * section. The two differ only in WHICH statuses they may act on. */
3072
+ /** Block always uses a marquee. Channels only enables its marquee after the
3073
+ * organizer deliberately chooses Assign seats; Pan map keeps desktop drag
3074
+ * available for large charts. */
2855
3075
  private isBulkSelectMode;
2856
3076
  /**
2857
3077
  * Block never touches held or booked inventory, so it cannot select it.
@@ -3131,6 +3351,12 @@ interface ChannelsModeHost {
3131
3351
  } | null;
3132
3352
  /** Approximate on-screen seat size in CSS pixels, for the overlay marks. */
3133
3353
  seatPixelSize(): number;
3354
+ /** Whether the live renderer is currently showing individual seats. */
3355
+ isSeatDetail(): boolean;
3356
+ /** Return a sectional venue to its section-only overview. */
3357
+ showSectionOverview(): void;
3358
+ /** Focus one section using the renderer's real camera transition. */
3359
+ focusSection(sectionId: string): void;
3134
3360
  isCompact(): boolean;
3135
3361
  /** Make the canvas non-interactive behind a full-detent sheet (§13). */
3136
3362
  setMapInert(inert: boolean): void;
@@ -3157,6 +3383,10 @@ declare class ChannelsMode {
3157
3383
  private loadError;
3158
3384
  private loading;
3159
3385
  private view;
3386
+ /** Pan is intentionally the initial desktop interaction. Assignment's
3387
+ * marquee is powerful, but must never make an organizer lose map navigation. */
3388
+ private mapIntent;
3389
+ private focusedSectionId;
3160
3390
  private showArchived;
3161
3391
  private detailChannelId;
3162
3392
  private targetChannelId;
@@ -3173,6 +3403,15 @@ declare class ChannelsMode {
3173
3403
  private links;
3174
3404
  private linksChannelId;
3175
3405
  private linksState;
3406
+ /**
3407
+ * Monotonic read generations — one for the channel list + allocation, one for
3408
+ * the open channel's links. Reads are concurrent (a 10s poll versus a
3409
+ * mutation's own reload), and the network does not promise to answer them in
3410
+ * order. Only the NEWEST read of each kind may write to state; an older
3411
+ * answer that arrives late is dropped, never painted.
3412
+ */
3413
+ private listSeq;
3414
+ private linksSeq;
3176
3415
  private previewAudience;
3177
3416
  private previewIncludePublic;
3178
3417
  private previewProjection;
@@ -3207,6 +3446,11 @@ declare class ChannelsMode {
3207
3446
  * all rather than collect a selection nothing can act on.
3208
3447
  */
3209
3448
  canSelect(): boolean;
3449
+ /** Bulk seat assignment is explicit. In Pan map, clicks can still inspect a
3450
+ * single seat, while a primary-button drag always moves the camera. */
3451
+ usesMarqueeSelection(): boolean;
3452
+ /** The renderer calls this when the organizer opens a section from overview. */
3453
+ handleSectionFocus(sectionId: string): void;
3210
3454
  /**
3211
3455
  * Organizer realtime integration point. M5 ships a per-scope socket for
3212
3456
  * buyers; the organizer channel-count stream is a later milestone. When it
@@ -3235,11 +3479,22 @@ declare class ChannelsMode {
3235
3479
  * Repaint the allocation (or preview) overlay in ONE canvas pass.
3236
3480
  *
3237
3481
  * Channel identity on the map is a fill in the administrative color PLUS the
3238
- * letter flags below — never color alone. Physical status keeps its own cue:
3239
- * only FREE units take a channel fill, so sold/held/blocked seats still read
3240
- * exactly as they do in every other tool.
3482
+ * letter flags below — never color alone. In buyer preview the map instead
3483
+ * uses two explicit, channel-neutral access states. Physical status keeps its
3484
+ * own cue: only FREE units are repainted, so sold/held/blocked seats still
3485
+ * read exactly as they do in every other tool.
3241
3486
  */
3242
3487
  private paintOverlay;
3488
+ /** Draw an eligible seat's actual chart label without inventing a new buyer
3489
+ * identifier. Long labels scale down and are omitted rather than overflowing
3490
+ * into an adjacent seat. */
3491
+ private paintPreviewSeatLabel;
3492
+ /** A section overview is a navigation map. These transparent, keyboardable
3493
+ * hit areas sit over the renderer's section shells so both mouse and keyboard
3494
+ * always take the organizer into the real focused-section camera state. */
3495
+ private paintSectionTargets;
3496
+ /** Keep renderer section names legible over a dense, zoomed-out preview. */
3497
+ private paintPreviewSectionLabels;
3243
3498
  /** Letter flags at each channel's centroid — the non-color identity cue. */
3244
3499
  private paintFlags;
3245
3500
  private setStaged;
@@ -3251,6 +3506,7 @@ declare class ChannelsMode {
3251
3506
  private loadPreview;
3252
3507
  paintRail(): void;
3253
3508
  private viewSegmentHtml;
3509
+ private mapNavigationHtml;
3254
3510
  private countsHtml;
3255
3511
  private channelRowHtml;
3256
3512
  private listRailHtml;
@@ -3314,6 +3570,17 @@ declare class ChannelsMode {
3314
3570
  */
3315
3571
  private renderSeatListDialog;
3316
3572
  private reloadLinks;
3573
+ /**
3574
+ * The reload EVERY link mutation owes the panel.
3575
+ *
3576
+ * A create/rotate/revoke changes two things the detail panel renders: the
3577
+ * channel's access line (the server sets `access.intent` on create, and clears
3578
+ * it when the last live link goes) and the link status list. Both are re-read
3579
+ * here and the rail repainted, so the panel the organizer is already looking
3580
+ * at is current the moment the mutation lands — no reload, and no dependence
3581
+ * on HOW the one-time reveal was dismissed (the button, Escape, or never).
3582
+ */
3583
+ private reloadAfterLinkChange;
3317
3584
  private linkById;
3318
3585
  /**
3319
3586
  * Create. The three policy fields carry the owner's defaults and every one of
@@ -3357,4 +3624,4 @@ declare class ChannelsMode {
3357
3624
  handleBack(): boolean;
3358
3625
  }
3359
3626
 
3360
- export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
3627
+ export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type OrderStatusResult, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };