@seatlayer/js 0.43.2 → 0.45.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
@@ -2268,8 +2268,66 @@ declare function retryAfterCopy(details: ArchiveBlockedDetails | null | undefine
2268
2268
  /** The access line under a channel row. Falls back to "—" before the hardening
2269
2269
  * branch lands the `access` field, never to a guess. */
2270
2270
  declare function accessLine(access: ChannelAccessSummary | null | undefined): string;
2271
- /** Plain-language label for the access-intent control. */
2271
+ /**
2272
+ * The name of each sale route, WORD FOR WORD as the server says it.
2273
+ *
2274
+ * `eventChannels.ts` builds its refusal sentences from an `INTENT_LABEL` map
2275
+ * with exactly these four strings. Diverging here would mean the picker calls a
2276
+ * route one thing and the refusal it produces calls it another, so these are
2277
+ * copied deliberately rather than paraphrased.
2278
+ */
2272
2279
  declare function accessIntentLabel(intent: ChannelAccessIntent): string;
2280
+ /**
2281
+ * What choosing this route actually DOES, now that the server enforces it.
2282
+ *
2283
+ * Written against the enforcement matrix, not against intent: each route opens
2284
+ * exactly one way to reach a buyer and refuses the other three, so each sentence
2285
+ * says both halves. The old copy for these values promised nothing and delivered
2286
+ * nothing; it was deleted in 0.42.0 and is not coming back.
2287
+ */
2288
+ declare function accessIntentDescription(intent: ChannelAccessIntent): string;
2289
+ /** `channel_access_intent_forbids` (409) — the route this channel declares is
2290
+ * not the one the action needed. */
2291
+ interface AccessIntentForbidsDetails {
2292
+ channelId?: string;
2293
+ accessIntent?: ChannelAccessIntent | string;
2294
+ /** The route the refused action arrived on: `hosted_link` | `server` | `staff` | `public`. */
2295
+ route?: string;
2296
+ }
2297
+ /**
2298
+ * The refusal, said as a decision the organizer can act on.
2299
+ *
2300
+ * The server's own sentence stops at "…so it cannot be sold through a buyer
2301
+ * link" — true, but it leaves the reader to work out what to do. This adds the
2302
+ * second half: which route to switch to. The code itself is never shown.
2303
+ */
2304
+ declare function intentForbidsCopy(details: AccessIntentForbidsDetails | null | undefined): string;
2305
+ /** `channel_intent_switch_blocked` (409) — buyers are inside the current route. */
2306
+ interface IntentSwitchBlockedDetails {
2307
+ channelId?: string;
2308
+ from?: ChannelAccessIntent | string;
2309
+ to?: ChannelAccessIntent | string;
2310
+ liveAccessLinks?: number;
2311
+ activeSessions?: number;
2312
+ acknowledgeWith?: {
2313
+ acknowledgeLiveAccess?: boolean;
2314
+ };
2315
+ }
2316
+ /**
2317
+ * What is live right now, and what acknowledging would do to it.
2318
+ *
2319
+ * Both halves are checked against the server rather than guessed: an
2320
+ * acknowledged switch REVOKES the channel's hosted links (redemption refuses
2321
+ * from that moment, so a link left listed as active would be a door the
2322
+ * management surface advertises and the buyer path denies), and deliberately
2323
+ * LEAVES buyer sessions and their holds alone — nobody is thrown out of a
2324
+ * checkout. Sessions cap at 12 hours (30 minutes by default) and no new ones can
2325
+ * be minted, so the old route drains on its own.
2326
+ */
2327
+ declare function intentSwitchBlockedCopy(details: IntentSwitchBlockedDetails | null | undefined): {
2328
+ headline: string;
2329
+ consequences: string[];
2330
+ };
2273
2331
  /** Lifecycle the server stores. `rotated` means a newer link replaced this one. */
2274
2332
  type AccessLinkState = 'active' | 'revoked' | 'rotated';
2275
2333
  /** What the organizer surface renders: `state`, unless an active link has run
@@ -2363,6 +2421,7 @@ declare function accessLinkErrorCopy(err: {
2363
2421
  code?: string;
2364
2422
  serverMessage?: string;
2365
2423
  status?: number;
2424
+ details?: Record<string, unknown>;
2366
2425
  } | null | undefined): string;
2367
2426
  /**
2368
2427
  * The chart-update refusal `channel_assignment_would_drop` (409) deliberately
@@ -2772,12 +2831,33 @@ declare class ManageApi {
2772
2831
  channelPreview(key: string, channelIds: string[], opts?: {
2773
2832
  includePublic?: boolean;
2774
2833
  }): Promise<ChannelPreviewProjection>;
2775
- /** Declare how buyers are meant to reach this channel. Drives the rail's
2776
- * access line and turns "No buyer access configured" from information into a
2777
- * warning when the organizer says the channel is for buyer self-service. */
2778
- setChannelAccessIntent(key: string, channelId: string, accessIntent: ChannelAccessIntent): Promise<{
2834
+ /**
2835
+ * Choose which sale route this channel opens.
2836
+ *
2837
+ * Since the server's 2026-08-06 change this is AUTHORIZATION, not a label:
2838
+ * exactly one of the four routes may mint buyer access for the channel and the
2839
+ * other three refuse with 409 `channel_access_intent_forbids`. The default is
2840
+ * `none`, which refuses all four — so a route has to be declared before any
2841
+ * buyer-facing action on the channel can succeed.
2842
+ *
2843
+ * Switching the route while buyers are already inside the current one is
2844
+ * refused with 409 `channel_intent_switch_blocked`, whose `details` name what
2845
+ * is live (`liveAccessLinks`, `activeSessions`). Retry with
2846
+ * `acknowledgeLiveAccess: true`: hosted links on the channel are revoked,
2847
+ * while sessions already minted keep their holds and drain on their own.
2848
+ * `intentSwitch` is present on the response ONLY when the switch disturbed
2849
+ * something, so the ordinary case stays the two-key body it has always been.
2850
+ */
2851
+ setChannelAccessIntent(key: string, channelId: string, accessIntent: ChannelAccessIntent, opts?: {
2852
+ acknowledgeLiveAccess?: boolean;
2853
+ reason?: string;
2854
+ }): Promise<{
2779
2855
  ok: true;
2780
2856
  channel: ChannelRecord;
2857
+ intentSwitch?: {
2858
+ closedLinks: number;
2859
+ keptSessions: number;
2860
+ };
2781
2861
  }>;
2782
2862
  /**
2783
2863
  * Mint a hosted access link. The 201 is the ONE and ONLY time `url` and
@@ -2790,8 +2870,11 @@ declare class ManageApi {
2790
2870
  * Platform bounds are enforced server-side and reported as 422 with the rule
2791
2871
  * spelled out in `ManageApiError.serverMessage`.
2792
2872
  *
2793
- * Side effect by design: this also declares the channel's access intent as
2794
- * `hosted_link`, so the rail stops saying "no buyer access configured".
2873
+ * NOT a side effect any more. This used to SET the channel's access intent to
2874
+ * `hosted_link`; since 2026-08-06 it REQUIRES it, and a channel declaring any
2875
+ * other route refuses with 409 `channel_access_intent_forbids`. Callers must
2876
+ * declare the route first — `ChannelsMode` does exactly that before it
2877
+ * creates, so a first buyer link on a fresh channel is still one gesture.
2795
2878
  */
2796
2879
  createAccessLink(key: string, channelId: string, input?: {
2797
2880
  label?: string | null;
@@ -3439,9 +3522,19 @@ interface ChannelsClient {
3439
3522
  channelPreview(key: string, channelIds: string[], opts?: {
3440
3523
  includePublic?: boolean;
3441
3524
  }): Promise<ChannelPreviewProjection>;
3442
- setChannelAccessIntent(key: string, channelId: string, accessIntent: ChannelAccessIntent): Promise<{
3525
+ /** Choose the channel's sale route. Authorization since 2026-08-06, so this is
3526
+ * a precondition of every buyer-facing action, not a label. `opts` carries the
3527
+ * acknowledgement that unblocks a switch with live buyer access. */
3528
+ setChannelAccessIntent(key: string, channelId: string, accessIntent: ChannelAccessIntent, opts?: {
3529
+ acknowledgeLiveAccess?: boolean;
3530
+ reason?: string;
3531
+ }): Promise<{
3443
3532
  ok: true;
3444
3533
  channel: ChannelRecord;
3534
+ intentSwitch?: {
3535
+ closedLinks: number;
3536
+ keptSessions: number;
3537
+ };
3445
3538
  }>;
3446
3539
  /** 201 with the ONE-TIME reveal. Every omitted field takes the server default
3447
3540
  * (expiry = event start, 100 redemptions, 4 seats per buyer). */
@@ -3550,6 +3643,18 @@ declare class ChannelsMode {
3550
3643
  private focusedSectionId;
3551
3644
  private showArchived;
3552
3645
  private detailChannelId;
3646
+ /**
3647
+ * Whether the organizer has asked to assign seats.
3648
+ *
3649
+ * The list rail leads with the CHANNELS. The assignment tooling — destination
3650
+ * picker plus five select-by routes — used to paint unconditionally above that
3651
+ * list, so a first-time organizer met a workbench for a job they had not asked
3652
+ * to do, with the thing they came for pushed below the fold. It is now
3653
+ * disclosed on intent: the "Assign seats to a channel" action under the list,
3654
+ * the map's own "Assign seats" segment, or simply having a selection. The
3655
+ * selection rail always shows the tools, because there the intent is proven.
3656
+ */
3657
+ private assignOpen;
3553
3658
  private targetChannelId;
3554
3659
  private conflict;
3555
3660
  private dialog;
@@ -3576,7 +3681,16 @@ declare class ChannelsMode {
3576
3681
  private previewAudience;
3577
3682
  private previewIncludePublic;
3578
3683
  private previewProjection;
3579
- private previewSupported;
3684
+ /**
3685
+ * The buyer-preview read, as one honest state rather than a boolean.
3686
+ *
3687
+ * `previewSupported: boolean | null` could say "this worker has no projection
3688
+ * route", but it could not say "the read is in flight" or "the read failed" —
3689
+ * both of those painted an audience picker with no result underneath, which
3690
+ * reads as "this audience can buy nothing". Loading and error are now states
3691
+ * of their own, and the error one offers a retry.
3692
+ */
3693
+ private previewState;
3580
3694
  private pollTimer;
3581
3695
  private layer;
3582
3696
  private canvas;
@@ -3702,35 +3816,50 @@ declare class ChannelsMode {
3702
3816
  private countsHtml;
3703
3817
  private channelRowHtml;
3704
3818
  private listRailHtml;
3819
+ /**
3820
+ * The assignment entry point on the list rail.
3821
+ *
3822
+ * Collapsed it is ONE plain-language action, so the channels the organizer came
3823
+ * for stay at the top of the panel. Opened it is the same tool set that has
3824
+ * always worked, in the same order, plus the way back out — and opening it is
3825
+ * also what the map's "Assign seats" segment does, so the two routes into the
3826
+ * job cannot disagree about whether it is running.
3827
+ */
3828
+ private assignEntryHtml;
3705
3829
  /**
3706
3830
  * Destination-first assignment controls.
3707
3831
  *
3708
3832
  * These used to live only inside the selection rail, which meant every route
3709
3833
  * into them was gated behind "select a seat on the map first" — the section,
3710
3834
  * row and category choosers were invisible until the organizer had already
3711
- * done the work by hand. They now paint above the channel list too, so the
3712
- * destination is chosen first and whole sections and rows are discoverable
3713
- * without learning a hidden seat-first workflow.
3835
+ * done the work by hand. They are still reachable before a seat is selected,
3836
+ * but they are no longer the first thing in the panel: on the list rail they
3837
+ * are disclosed by `assignEntryHtml`, and there they carry a way back out
3838
+ * (`collapsible`). In the selection rail there is nothing to disclose — a
3839
+ * selection IS the intent — so they paint unconditionally and without Done.
3714
3840
  */
3715
3841
  private assignmentToolsHtml;
3716
3842
  private selectionRailHtml;
3717
3843
  private detailRailHtml;
3718
3844
  /**
3719
- * "Distribute" — how the seats in this channel actually reach a buyer.
3845
+ * "Distribute" — the ONE way this channel's seats reach a buyer.
3720
3846
  *
3721
- * This replaced a four-value "access intent" picker (none / internal /
3722
- * hosted_link / server). Two of those values did nothing anywhere: no buyer or
3723
- * inventory path reads `access_intent`, so `none` and `internal` were labels an
3724
- * organizer could set and then wait forever for something to happen. A third,
3725
- * `hosted_link`, is not the organizer's to choose at all the server sets it
3726
- * when a buyer link is created and clears it when the last live one is revoked.
3847
+ * All four routes are here, and this is a real chooser again. It was cut down
3848
+ * to two actions in 0.42.0 for a good reason: `access_intent` was stored,
3849
+ * audited, and read by nothing, so "Keep as protected reserve" and "Sell
3850
+ * through your own staff" were labels an organizer could set and then wait
3851
+ * forever for something to happen. The server closed that hole on 2026-08-06
3852
+ * each declaration now opens exactly one route and REFUSES the other three
3853
+ * so all four are honest choices and belong on the surface.
3727
3854
  *
3728
- * So this is two ACTIONS, not a setting: create a buyer link, or point the
3729
- * channel at a website integration. Both of them do something the moment they
3730
- * are pressed. A legacy row still carrying `none` or `internal` renders the
3731
- * neutral "not distributed yet" state with both actions offered — the stored
3732
- * value is left alone (it is organizer-declared metadata and the API that
3733
- * writes it is unchanged), it simply no longer has a control of its own.
3855
+ * None of the old copy came back with them. These sentences are written
3856
+ * against the enforcement matrix (`accessIntentDescription`), which is why
3857
+ * each one says what the route refuses as well as what it allows.
3858
+ *
3859
+ * The current route is stated, not merely styled: a chooser whose selection
3860
+ * you have to infer from a border is not a chooser. Its card carries a
3861
+ * "Current route" marker and drops its own select button, because pressing it
3862
+ * would do nothing.
3734
3863
  */
3735
3864
  private distributeHtml;
3736
3865
  /**
@@ -3757,6 +3886,8 @@ declare class ChannelsMode {
3757
3886
  private previewRailHtml;
3758
3887
  private paintSelection;
3759
3888
  private wireRail;
3889
+ /** Open a channel's detail panel and start its buyer-link read. */
3890
+ private openChannel;
3760
3891
  private railAction;
3761
3892
  /** Derived once per mode entry — see `assignmentRowsCache`. */
3762
3893
  private assignmentRows;
@@ -3779,6 +3910,23 @@ declare class ChannelsMode {
3779
3910
  private renderScopeDialog;
3780
3911
  private openDialog;
3781
3912
  private renderDialog;
3913
+ /**
3914
+ * `channel_intent_switch_blocked` — buyers are inside the route being left.
3915
+ *
3916
+ * The same review-then-acknowledge shape as the archive and chart-drop guards,
3917
+ * because it is the same kind of decision: the server refuses once, names
3918
+ * exactly what is at stake, and only a deliberate second press goes through.
3919
+ * What acknowledging does is spelled out per consequence — links close now,
3920
+ * checkouts already running survive and drain — rather than hidden behind a
3921
+ * word like "force".
3922
+ */
3923
+ private renderIntentSwitchDialog;
3924
+ /**
3925
+ * The acknowledged retry. The declare and the create stay one gesture across
3926
+ * the sheet: if this switch was the first half of a declare-then-create, the
3927
+ * held form finishes on the far side of the acknowledgement.
3928
+ */
3929
+ private acknowledgeIntentSwitch;
3782
3930
  /**
3783
3931
  * Mount a modal: `aria-modal` dialog, programmatic name, focus moved inside,
3784
3932
  * Tab trapped, Escape closes WITHOUT mutating, focus restored on close (§13).
@@ -3806,16 +3954,43 @@ declare class ChannelsMode {
3806
3954
  */
3807
3955
  private showApplied;
3808
3956
  private shakeStaged;
3957
+ /**
3958
+ * The ⋯ menu.
3959
+ *
3960
+ * Opening a channel is the ROW's job now, so ⋯ carries what is left: the
3961
+ * secondary and destructive lifecycle actions. It is rendered through the same
3962
+ * scrim primitive as every other sheet, which is what gives it a focus trap,
3963
+ * Escape, and a name — a bare absolutely-positioned popup would have had none
3964
+ * of those. Archive keeps its own confirmation dialog; this menu never
3965
+ * destroys anything by itself.
3966
+ */
3967
+ private renderMenuDialog;
3809
3968
  private renderRenameDialog;
3810
3969
  /**
3811
- * "Get embed code" — mark the channel as reached through the organizer's own
3812
- * backend. The write itself is `setChannelAccessIntent(…, 'server')`, the same
3813
- * API the old picker called; the difference is that it is now a deliberate
3814
- * action with a consequence the organizer is told about, rather than one of
3815
- * four dropdown values with no observable effect.
3970
+ * "Use a website or app" — declare the channel's route as `server`.
3971
+ *
3972
+ * This is no longer a flag the Embed page happens to read: since 2026-08-06 it
3973
+ * is what AUTHORIZES `POST /v1/events/:key/buyer-access-sessions` to mint for
3974
+ * this channel at all. Without it, an integration that is otherwise perfectly
3975
+ * wired up gets a 409 on every buyer.
3816
3976
  */
3817
3977
  private chooseWebsiteIntegration;
3978
+ /**
3979
+ * Declare this channel's sale route.
3980
+ *
3981
+ * Reports through the toast lane the rest of the rail's direct actions use.
3982
+ * The two enforcement refusals get real answers rather than a generic failure:
3983
+ * `channel_intent_switch_blocked` opens the review sheet (there is a decision
3984
+ * to make, and a sheet is where decisions live), and
3985
+ * `channel_access_intent_forbids` — which the organizer can hit by racing
3986
+ * their own second tab — says which route is in the way.
3987
+ */
3818
3988
  private setAccessIntent;
3989
+ /** What just happened, including anything the switch took down with it — the
3990
+ * server reports `intentSwitch` only when it actually disturbed something. */
3991
+ private intentSavedCopy;
3992
+ /** `channelId` is explicit because this is reachable from the ⋯ menu on a row
3993
+ * that is NOT the open channel, as well as from the detail panel itself. */
3819
3994
  private togglePause;
3820
3995
  private renderArchiveDialog;
3821
3996
  private archive;
@@ -3846,7 +4021,41 @@ declare class ChannelsMode {
3846
4021
  * everything else.
3847
4022
  */
3848
4023
  private renderLinkCreateDialog;
4024
+ /**
4025
+ * DECLARE, then create.
4026
+ *
4027
+ * `createAccessLink` used to set the channel's route to `hosted_link` as a
4028
+ * side effect, which is exactly why the picker could never refuse anything.
4029
+ * The server took that side effect away and now REQUIRES the declaration —
4030
+ * and channels default to `none`, so a create that did not declare first
4031
+ * would 409 on the organizer's very first "Create buyer link".
4032
+ *
4033
+ * So the route is declared here, immediately before the create. It stays ONE
4034
+ * gesture: nothing is declared while the organizer is still filling the form
4035
+ * in (cancelling changes nothing), and if the declaration is the part that is
4036
+ * refused, the review sheet holds this form and finishes the job on the far
4037
+ * side of the acknowledgement.
4038
+ */
3849
4039
  private createLink;
4040
+ /**
4041
+ * The create half, on its own.
4042
+ *
4043
+ * Separate from `createLink` because the acknowledge path has ALREADY declared
4044
+ * the route — with the very acknowledgement the plain declaration was refused
4045
+ * for. Sending it back through `ensureHostedLinkRoute` would re-derive the
4046
+ * route from a channel list that has not necessarily caught up, and could
4047
+ * refuse the organizer a second time for a decision they just made.
4048
+ */
4049
+ private mintLink;
4050
+ /**
4051
+ * Make sure the channel declares the buyer-link route before a link is minted.
4052
+ *
4053
+ * Returns false when the create must NOT proceed — either it was refused, or
4054
+ * the decision has been handed to the switch-review sheet, which resumes it.
4055
+ * A channel already on `hosted_link` costs no request at all, so creating a
4056
+ * second link is the same single call it has always been.
4057
+ */
4058
+ private ensureHostedLinkRoute;
3850
4059
  /**
3851
4060
  * The ONE-TIME reveal.
3852
4061
  *
@@ -3880,4 +4089,4 @@ declare class ChannelsMode {
3880
4089
  handleBack(): boolean;
3881
4090
  }
3882
4091
 
3883
- 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 ChannelsRowView, 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 };
4092
+ export { ACCESS_LINK_DEFAULTS, type AccessIntentForbidsDetails, 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 ChannelsRowView, 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 IntentSwitchBlockedDetails, 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, accessIntentDescription, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, intentForbidsCopy, intentSwitchBlockedCopy, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };