@seatlayer/js 0.44.0 → 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.cjs +317 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +188 -27
- package/dist/index.d.ts +188 -27
- package/dist/index.js +314 -55
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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
|
-
/**
|
|
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
|
-
/**
|
|
2776
|
-
*
|
|
2777
|
-
*
|
|
2778
|
-
|
|
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
|
-
*
|
|
2794
|
-
* `hosted_link
|
|
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
|
-
|
|
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). */
|
|
@@ -3749,21 +3842,24 @@ declare class ChannelsMode {
|
|
|
3749
3842
|
private selectionRailHtml;
|
|
3750
3843
|
private detailRailHtml;
|
|
3751
3844
|
/**
|
|
3752
|
-
* "Distribute" —
|
|
3845
|
+
* "Distribute" — the ONE way this channel's seats reach a buyer.
|
|
3753
3846
|
*
|
|
3754
|
-
*
|
|
3755
|
-
*
|
|
3756
|
-
*
|
|
3757
|
-
*
|
|
3758
|
-
*
|
|
3759
|
-
*
|
|
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.
|
|
3760
3854
|
*
|
|
3761
|
-
*
|
|
3762
|
-
*
|
|
3763
|
-
*
|
|
3764
|
-
*
|
|
3765
|
-
*
|
|
3766
|
-
*
|
|
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.
|
|
3767
3863
|
*/
|
|
3768
3864
|
private distributeHtml;
|
|
3769
3865
|
/**
|
|
@@ -3814,6 +3910,23 @@ declare class ChannelsMode {
|
|
|
3814
3910
|
private renderScopeDialog;
|
|
3815
3911
|
private openDialog;
|
|
3816
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;
|
|
3817
3930
|
/**
|
|
3818
3931
|
* Mount a modal: `aria-modal` dialog, programmatic name, focus moved inside,
|
|
3819
3932
|
* Tab trapped, Escape closes WITHOUT mutating, focus restored on close (§13).
|
|
@@ -3854,14 +3967,28 @@ declare class ChannelsMode {
|
|
|
3854
3967
|
private renderMenuDialog;
|
|
3855
3968
|
private renderRenameDialog;
|
|
3856
3969
|
/**
|
|
3857
|
-
* "
|
|
3858
|
-
*
|
|
3859
|
-
*
|
|
3860
|
-
*
|
|
3861
|
-
*
|
|
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.
|
|
3862
3976
|
*/
|
|
3863
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
|
+
*/
|
|
3864
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;
|
|
3865
3992
|
/** `channelId` is explicit because this is reachable from the ⋯ menu on a row
|
|
3866
3993
|
* that is NOT the open channel, as well as from the detail panel itself. */
|
|
3867
3994
|
private togglePause;
|
|
@@ -3894,7 +4021,41 @@ declare class ChannelsMode {
|
|
|
3894
4021
|
* everything else.
|
|
3895
4022
|
*/
|
|
3896
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
|
+
*/
|
|
3897
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;
|
|
3898
4059
|
/**
|
|
3899
4060
|
* The ONE-TIME reveal.
|
|
3900
4061
|
*
|
|
@@ -3928,4 +4089,4 @@ declare class ChannelsMode {
|
|
|
3928
4089
|
handleBack(): boolean;
|
|
3929
4090
|
}
|
|
3930
4091
|
|
|
3931
|
-
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 };
|
package/dist/index.d.ts
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
|
-
/**
|
|
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
|
-
/**
|
|
2776
|
-
*
|
|
2777
|
-
*
|
|
2778
|
-
|
|
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
|
-
*
|
|
2794
|
-
* `hosted_link
|
|
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
|
-
|
|
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). */
|
|
@@ -3749,21 +3842,24 @@ declare class ChannelsMode {
|
|
|
3749
3842
|
private selectionRailHtml;
|
|
3750
3843
|
private detailRailHtml;
|
|
3751
3844
|
/**
|
|
3752
|
-
* "Distribute" —
|
|
3845
|
+
* "Distribute" — the ONE way this channel's seats reach a buyer.
|
|
3753
3846
|
*
|
|
3754
|
-
*
|
|
3755
|
-
*
|
|
3756
|
-
*
|
|
3757
|
-
*
|
|
3758
|
-
*
|
|
3759
|
-
*
|
|
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.
|
|
3760
3854
|
*
|
|
3761
|
-
*
|
|
3762
|
-
*
|
|
3763
|
-
*
|
|
3764
|
-
*
|
|
3765
|
-
*
|
|
3766
|
-
*
|
|
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.
|
|
3767
3863
|
*/
|
|
3768
3864
|
private distributeHtml;
|
|
3769
3865
|
/**
|
|
@@ -3814,6 +3910,23 @@ declare class ChannelsMode {
|
|
|
3814
3910
|
private renderScopeDialog;
|
|
3815
3911
|
private openDialog;
|
|
3816
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;
|
|
3817
3930
|
/**
|
|
3818
3931
|
* Mount a modal: `aria-modal` dialog, programmatic name, focus moved inside,
|
|
3819
3932
|
* Tab trapped, Escape closes WITHOUT mutating, focus restored on close (§13).
|
|
@@ -3854,14 +3967,28 @@ declare class ChannelsMode {
|
|
|
3854
3967
|
private renderMenuDialog;
|
|
3855
3968
|
private renderRenameDialog;
|
|
3856
3969
|
/**
|
|
3857
|
-
* "
|
|
3858
|
-
*
|
|
3859
|
-
*
|
|
3860
|
-
*
|
|
3861
|
-
*
|
|
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.
|
|
3862
3976
|
*/
|
|
3863
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
|
+
*/
|
|
3864
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;
|
|
3865
3992
|
/** `channelId` is explicit because this is reachable from the ⋯ menu on a row
|
|
3866
3993
|
* that is NOT the open channel, as well as from the detail panel itself. */
|
|
3867
3994
|
private togglePause;
|
|
@@ -3894,7 +4021,41 @@ declare class ChannelsMode {
|
|
|
3894
4021
|
* everything else.
|
|
3895
4022
|
*/
|
|
3896
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
|
+
*/
|
|
3897
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;
|
|
3898
4059
|
/**
|
|
3899
4060
|
* The ONE-TIME reveal.
|
|
3900
4061
|
*
|
|
@@ -3928,4 +4089,4 @@ declare class ChannelsMode {
|
|
|
3928
4089
|
handleBack(): boolean;
|
|
3929
4090
|
}
|
|
3930
4091
|
|
|
3931
|
-
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 };
|