@seatlayer/js 0.54.0 → 0.56.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/README.md CHANGED
@@ -64,6 +64,13 @@ presence, exact configured booked value, booking velocity, and a clearly explain
64
64
  Block mode exposes explicit multi-select category state and a searchable,
65
65
  section-filtered blocked-inventory list, so an organizer can put specific seats
66
66
  back on sale without resetting the entire event.
67
+ Select mode supports host-owned custom operations with initial/programmatic
68
+ selection, availability policy, maximum and exact-count rules, and validity
69
+ callbacks. Capability-gated Categories and Tables modes update the event
70
+ snapshot without editing the reusable chart; table identity changes are refused
71
+ while affected inventory is held, booked, or blocked.
72
+ Filter Sections groups duplicate public labels, frames their combined inventory,
73
+ and reports the matched sections to host-owned back-office views.
67
74
 
68
75
  ```js
69
76
  import { SeatManager } from '@seatlayer/js/manager';
@@ -216,11 +223,18 @@ designer.mount();
216
223
  ## API
217
224
 
218
225
  `new SeatingChart(options)` — options: `container` (selector or element, required),
219
- `event` (key, required), `apiBase?`, `maxSelection?` (default 10), `onSelectionChange?`,
220
- `onHold?`, `onHoldRestored?`, `onError?`.
221
-
222
- Methods: `render()`, `getSelection()`, `hold()`, `bestAvailable(qty, categoryKey?)`,
223
- `resumeHold(holdId)`, `getCurrentHold()`, `releaseLabels(labels)`, `release()`, `destroy()`.
226
+ `event` (key, required), `apiBase?`, `maxSelection?` (default 10),
227
+ `selectedObjects?`, `selectableObjects?`, `numberOfPlacesToSelect?`,
228
+ `onSelectionChange?`, `onSelectionValidityChange?`, `onHold?`,
229
+ `onHoldRestored?`, `onError?`.
230
+
231
+ Selection methods: `getSelection()`, `selectObjects()`, `deselectObjects()`,
232
+ `clearSelection()`, `selectCategories()`, `deselectCategories()`,
233
+ `setSelectableObjects()`, `setMaxSelection()`, `getSelectionValidity()`.
234
+
235
+ Lifecycle/hold methods: `render()`, `hold()`, `bestAvailable(qty, categoryKey?)`,
236
+ `resumeHold(holdId)`, `getCurrentHold()`, `releaseLabels(labels)`, `release()`,
237
+ `destroy()`.
224
238
 
225
239
  The full `SeatPicker` automatically restores an active hold after same-tab
226
240
  checkout navigation and lets the buyer remove individual held tickets. Set
@@ -1,4 +1,4 @@
1
- import { ChartDoc, AvailabilityRule, ChartTheme, ExpandedSeat } from '@seatlayer/core';
1
+ import { ChartDoc, AvailabilityRule, ExpandedSeat, ChartTheme } from '@seatlayer/core';
2
2
 
3
3
  /**
4
4
  * Sales-channel planning — the pure, DOM-free half of Channels mode.
@@ -70,6 +70,16 @@ interface ChannelRecord {
70
70
  archivedAt: number | null;
71
71
  counts: ChannelCounts;
72
72
  access?: ChannelAccessSummary | null;
73
+ /** Sparse per-category/tier buyer prices. Missing on pre-0.56 workers. */
74
+ priceOverrides?: ChannelPriceOverride[];
75
+ /** Optimistic-concurrency token for price edits. */
76
+ pricingVersion?: number;
77
+ }
78
+ interface ChannelPriceOverride {
79
+ categoryKey: string;
80
+ tierId: string | null;
81
+ /** Major currency units, matching chart category/tier prices. */
82
+ price: number;
73
83
  }
74
84
  interface PublicSaleChannel {
75
85
  /** `'public'` on every shipped worker; typed loosely so an older build that
@@ -608,6 +618,21 @@ interface LogPage {
608
618
  entries: LogEntry[];
609
619
  nextBefore: number | null;
610
620
  }
621
+ interface EventCategoryAssignmentResult {
622
+ ok: true;
623
+ changed: boolean;
624
+ labels: string[];
625
+ categoryKey: string;
626
+ revision: number;
627
+ }
628
+ type EventTableBookingMode = 'individual' | 'whole' | 'variable';
629
+ interface EventTableBookingResult {
630
+ ok: true;
631
+ changed: boolean;
632
+ tableIds: string[];
633
+ mode: EventTableBookingMode;
634
+ revision: number;
635
+ }
611
636
  /** Platform/SDK inventory history — deliberately unrelated to commerce Orders. */
612
637
  type InventoryBookingState = 'booked' | 'partially_cancelled' | 'cancelled';
613
638
  interface InventoryBookingObject {
@@ -775,6 +800,7 @@ interface PubChartResult {
775
800
  startsAt?: number | null;
776
801
  currency?: string;
777
802
  mode?: string;
803
+ inventoryModelVersion?: 1 | 2;
778
804
  };
779
805
  doc: ChartDoc;
780
806
  }
@@ -852,6 +878,16 @@ declare class ManageApi {
852
878
  ok: true;
853
879
  holdTtlMs: number | null;
854
880
  }>;
881
+ /** Assign an event-only category to inventory labels. Existing transaction
882
+ * snapshots retain their original configured value; future selection uses
883
+ * the new category. Requires `event:categories:manage`. */
884
+ setCategory(key: string, labels: string[], categoryKey: string): Promise<EventCategoryAssignmentResult>;
885
+ /** Change event-only table booking identity. The server refuses tables with
886
+ * held/booked/blocked inventory or channel assignments that would be lost. */
887
+ setTableBooking(key: string, tableIds: string[], mode: EventTableBookingMode, bounds?: {
888
+ minOccupancy?: number;
889
+ maxOccupancy?: number;
890
+ }): Promise<EventTableBookingResult>;
855
891
  /** Inventory lifecycle by stable integrator bookingRef. Absent on Managed. */
856
892
  bookings(key: string, query?: InventoryBookingsQuery): Promise<InventoryBookingsPage>;
857
893
  /** Exact configured-value snapshot plus book/replay/cancellation audit. */
@@ -904,6 +940,11 @@ declare class ManageApi {
904
940
  ok: true;
905
941
  channel: ChannelRecord;
906
942
  }>;
943
+ /** Replace a channel's sparse category/tier prices with optimistic concurrency. */
944
+ updateChannelPricing(key: string, channelId: string, priceOverrides: ChannelPriceOverride[], expectedPricingVersion: number): Promise<{
945
+ ok: true;
946
+ channel: ChannelRecord;
947
+ }>;
907
948
  setChannelPaused(key: string, channelId: string, paused: boolean): Promise<{
908
949
  ok: true;
909
950
  channel: ChannelRecord;
@@ -1054,7 +1095,7 @@ declare class ManageApi {
1054
1095
  * nothing here emits a byte of runtime JavaScript.
1055
1096
  */
1056
1097
 
1057
- type SeatManagerMode = 'view' | 'inspect' | 'block' | 'sections' | 'channels';
1098
+ type SeatManagerMode = 'view' | 'inspect' | 'select' | 'filterSections' | 'block' | 'sections' | 'categories' | 'tables' | 'channels';
1058
1099
  /** Short-lived, event-scoped browser credential minted by a trusted backend. */
1059
1100
  type EventScopedManageToken = `mse_${string}`;
1060
1101
  /**
@@ -1063,7 +1104,7 @@ type EventScopedManageToken = `mse_${string}`;
1063
1104
  * view without `event:channels:manage` ⇒ read-only inspection with every
1064
1105
  * mutation control absent, not merely disabled.
1065
1106
  */
1066
- type SeatManagerCapability = 'event:view' | 'event:block' | 'event:cancel' | 'event:reports' | 'event:channels:view' | 'event:channels:manage';
1107
+ type SeatManagerCapability = 'event:view' | 'event:block' | 'event:categories:manage' | 'event:tables:manage' | 'event:cancel' | 'event:reports' | 'event:channels:view' | 'event:channels:manage';
1067
1108
  /** DO seat status — 'blocked' has no engine analogue (→ 'not_for_sale'). */
1068
1109
  type DoStatus = 'free' | 'held' | 'booked' | 'blocked';
1069
1110
  /** Live KPI snapshot pushed to `onTallies` on every state change. */
@@ -1106,10 +1147,25 @@ interface SeatManagerActivity {
1106
1147
  }
1107
1148
  /** Fired after a successful organizer action, for host toasts/telemetry. */
1108
1149
  interface SeatManagerActionResult {
1109
- action: 'block' | 'unblock' | 'unblockAll' | 'cancelBooking' | 'setHoldTtl';
1150
+ action: 'block' | 'unblock' | 'unblockAll' | 'cancelBooking' | 'setHoldTtl' | 'setCategory' | 'setTableBooking';
1110
1151
  labels: string[];
1111
1152
  count: number;
1112
1153
  }
1154
+ /** Exact-count state for the read-only custom Select tool. */
1155
+ interface SeatManagerSelectionValidity {
1156
+ isValid: boolean;
1157
+ count: number;
1158
+ required: number;
1159
+ remaining: number;
1160
+ objects: ExpandedSeat[];
1161
+ }
1162
+ /** One section matched by the read-only Filter Sections tool. */
1163
+ interface SeatManagerFilteredSection {
1164
+ id: string;
1165
+ label: string;
1166
+ seatCount: number;
1167
+ zone?: string;
1168
+ }
1113
1169
  interface SeatManagerOptions {
1114
1170
  /** CSS selector or element to mount into. */
1115
1171
  container: string | HTMLElement;
@@ -1126,6 +1182,21 @@ interface SeatManagerOptions {
1126
1182
  tokenExpiresAt?: number;
1127
1183
  /** Initial mode. Default 'view'. */
1128
1184
  mode?: SeatManagerMode;
1185
+ /** Public labels to preselect after live inventory has loaded in Select mode. */
1186
+ selectedObjects?: string[];
1187
+ /**
1188
+ * Labels that remain selectable even when `unavailableObjectsSelectable` is
1189
+ * false. This is an exception list, matching Event Manager Select semantics.
1190
+ */
1191
+ selectableObjects?: string[];
1192
+ /** Allow held, booked, and blocked objects in Select mode. Default true. */
1193
+ unavailableObjectsSelectable?: boolean;
1194
+ /** Maximum objects selectable in the custom Select tool. */
1195
+ maxSelectedObjects?: number;
1196
+ /** Require exactly this many objects and cap selection at that count. */
1197
+ numberOfPlacesToSelect?: number;
1198
+ /** Final per-object Select-mode policy; overrides the default decision. */
1199
+ isObjectSelectable?: (object: ExpandedSeat, defaultValue: boolean) => boolean;
1129
1200
  /**
1130
1201
  * The capability set this token was minted with. Supply it whenever you mint
1131
1202
  * an `mse_…` grant — it is the only way the widget can know a delegated token
@@ -1167,6 +1238,20 @@ interface SeatManagerOptions {
1167
1238
  onFollowLiveChange?: (enabled: boolean) => void;
1168
1239
  /** Block-mode selection changed (marquee / ⌘A / category / section / tap). */
1169
1240
  onSelectionChange?: (seats: ExpandedSeat[]) => void;
1241
+ /** One object entered the custom Select-mode selection. */
1242
+ onObjectSelected?: (object: ExpandedSeat) => void;
1243
+ /** One object left the custom Select-mode selection. */
1244
+ onObjectDeselected?: (object: ExpandedSeat) => void;
1245
+ /** Exact-count Select-mode state after every selection change. */
1246
+ onSelectionValidityChange?: (state: SeatManagerSelectionValidity) => void;
1247
+ /** Exact-count Select-mode state transitioned to valid. */
1248
+ onSelectionValid?: (state: SeatManagerSelectionValidity) => void;
1249
+ /** Exact-count Select-mode state transitioned to invalid. */
1250
+ onSelectionInvalid?: (state: SeatManagerSelectionValidity) => void;
1251
+ /** A Select-mode attempt reached the active exact/max cap. */
1252
+ onSelectionLimit?: (max: number) => void;
1253
+ /** Filter Sections changed by map interaction or an imperative method. */
1254
+ onFilteredSectionChange?: (sections: SeatManagerFilteredSection[]) => void;
1170
1255
  /** A block/unblock/cancel action completed successfully. */
1171
1256
  onActionComplete?: (result: SeatManagerActionResult) => void;
1172
1257
  /**
@@ -1230,6 +1315,11 @@ declare class SeatManager {
1230
1315
  private renderer;
1231
1316
  private doc;
1232
1317
  private mode;
1318
+ private inventoryModelVersion;
1319
+ private selectableObjectLabels;
1320
+ private lastSelectionLabels;
1321
+ private selectionWasValid;
1322
+ private initialSelectionApplied;
1233
1323
  private labelToId;
1234
1324
  private labelToSeat;
1235
1325
  private allIds;
@@ -1300,6 +1390,7 @@ declare class SeatManager {
1300
1390
  private sectionByObject;
1301
1391
  private sectionLabelById;
1302
1392
  private sectionsBase;
1393
+ private filteredSectionLabel;
1303
1394
  private availabilityRules;
1304
1395
  private effectiveHidden;
1305
1396
  private effectiveClosed;
@@ -1326,6 +1417,9 @@ declare class SeatManager {
1326
1417
  */
1327
1418
  private channels;
1328
1419
  private channelCaps;
1420
+ private categoryCanManage;
1421
+ private tableCanManage;
1422
+ private tableBookingSaving;
1329
1423
  /** Supersedes an async capability probe after token/capability rotation. */
1330
1424
  private channelCapabilityResolution;
1331
1425
  /** In-flight `import('./channelsMode')`, so concurrent entries load once. */
@@ -1334,6 +1428,7 @@ declare class SeatManager {
1334
1428
  private readonly onKeyDown;
1335
1429
  private readonly onRailClick;
1336
1430
  constructor(options: SeatManagerOptions);
1431
+ private assertSelectionOptions;
1337
1432
  /** Build the DOM, load the chart, subscribe to realtime, mount the board. */
1338
1433
  render(): Promise<this>;
1339
1434
  setMode(mode: SeatManagerMode): void;
@@ -1407,9 +1502,43 @@ declare class SeatManager {
1407
1502
  unblockAll(): Promise<void>;
1408
1503
  /** Cancel bookings (BOOKED → free), guarded by the original booking ref. */
1409
1504
  cancelBooking(labels: string[], bookingRef: string): Promise<void>;
1505
+ /** Assign an event-only category to labels or the current manager selection. */
1506
+ setCategory(categoryKey: string, labels?: string[]): Promise<void>;
1507
+ /** Change event-only table booking identity, then reload authoritative
1508
+ * geometry/inventory because individual chairs and grouped tables use
1509
+ * different labels. */
1510
+ setTableBooking(tableIds: string[], mode: EventTableBookingMode, bounds?: {
1511
+ minOccupancy?: number;
1512
+ maxOccupancy?: number;
1513
+ }): Promise<void>;
1514
+ private reloadEventChart;
1410
1515
  selectAll(): ExpandedSeat[];
1411
1516
  selectSection(sectionId: string): ExpandedSeat[];
1517
+ /** Filter every section whose public label matches, then frame their union. */
1518
+ setFilteredSection(label: string): SeatManagerFilteredSection[];
1519
+ /** Clear section filtering and restore the full event frame. */
1520
+ clearFilteredSection(): void;
1521
+ getFilteredSections(): SeatManagerFilteredSection[];
1412
1522
  selectByLabels(labels: string[]): ExpandedSeat[];
1523
+ /** Select custom-operation objects by public inventory label. */
1524
+ selectObjects(labels: string[]): ExpandedSeat[];
1525
+ /** Deselect custom-operation objects by public inventory label. */
1526
+ deselectObjects(labels: string[]): ExpandedSeat[];
1527
+ /** Select every eligible object in the named chart categories. */
1528
+ selectCategories(keys: string[]): ExpandedSeat[];
1529
+ /** Deselect every selected object in the named chart categories. */
1530
+ deselectCategories(keys: string[]): ExpandedSeat[];
1531
+ /** Replace the unavailable-object exception list without remounting. */
1532
+ setSelectableObjects(labels: string[]): void;
1533
+ /** Change whether unavailable inventory participates in custom selection. */
1534
+ setUnavailableObjectsSelectable(enabled: boolean): void;
1535
+ /** Replace the final per-object selection predicate. */
1536
+ setObjectSelectable(predicate: SeatManagerOptions['isObjectSelectable']): void;
1537
+ /** Change the custom Select-mode cap without remounting. */
1538
+ setMaxSelectedObjects(max: number | undefined): void;
1539
+ /** Change or clear the exact custom-selection requirement. */
1540
+ setNumberOfPlacesToSelect(required: number | undefined): void;
1541
+ getSelectionValidity(): SeatManagerSelectionValidity | null;
1413
1542
  clearSelection(): void;
1414
1543
  getSelection(): ExpandedSeat[];
1415
1544
  getReport(): Promise<ReportResult>;
@@ -1553,11 +1682,18 @@ declare class SeatManager {
1553
1682
  private pushActivity;
1554
1683
  private seedFeed;
1555
1684
  private startFeedClock;
1685
+ private selectionCap;
1686
+ private canSelectObject;
1687
+ private applyInitialSelection;
1688
+ private trimSelectionToCap;
1689
+ private reconcileSelectPolicy;
1556
1690
  private selectionLabels;
1557
1691
  private syncSelection;
1558
1692
  private buildChrome;
1559
1693
  private updateContainerLayout;
1560
1694
  private sectionOptions;
1695
+ private filterableSections;
1696
+ private applyFilteredSectionCanvas;
1561
1697
  private buildSectionOptions;
1562
1698
  private paintModeTabs;
1563
1699
  private paintFollowLiveButton;
@@ -1576,6 +1712,12 @@ declare class SeatManager {
1576
1712
  private presenceCounts;
1577
1713
  private paintMonitorInsights;
1578
1714
  private applyHeatOverlay;
1715
+ private renderSelectRail;
1716
+ private paintSelectSelection;
1717
+ private renderFilterSectionsRail;
1718
+ private renderCategoriesRail;
1719
+ private paintCategorySelection;
1720
+ private renderTablesRail;
1579
1721
  private renderInspectRail;
1580
1722
  /** Pull the organizer's availability rules (event:view). Called on load and on
1581
1723
  * every WS (re)connect, mirroring how the other panels re-hydrate. `closed` is
@@ -1674,6 +1816,12 @@ interface ChannelsClient {
1674
1816
  ok: true;
1675
1817
  channel: ChannelRecord;
1676
1818
  }>;
1819
+ /** Replace the sparse channel price map. Optional for custom clients built
1820
+ * against an older manager contract; the editor is absent when omitted. */
1821
+ updateChannelPricing?(key: string, channelId: string, priceOverrides: ChannelPriceOverride[], expectedPricingVersion: number): Promise<{
1822
+ ok: true;
1823
+ channel: ChannelRecord;
1824
+ }>;
1677
1825
  setChannelPaused(key: string, channelId: string, paused: boolean): Promise<{
1678
1826
  ok: true;
1679
1827
  channel: ChannelRecord;
@@ -1759,6 +1907,12 @@ interface ChannelsModeHost {
1759
1907
  key: string;
1760
1908
  label: string;
1761
1909
  color?: string;
1910
+ price?: number;
1911
+ tiers?: Array<{
1912
+ id: string;
1913
+ name: string;
1914
+ price: number;
1915
+ }>;
1762
1916
  }>;
1763
1917
  labelsInCategory(key: string): string[];
1764
1918
  sectionOfLabel(label: string): {
@@ -2115,6 +2269,9 @@ declare class ChannelsMode {
2115
2269
  */
2116
2270
  private renderMenuDialog;
2117
2271
  private renderRenameDialog;
2272
+ /** Sparse channel pricing: blank means inherit the event's category/tier price. */
2273
+ private renderPricingDialog;
2274
+ private saveChannelPricing;
2118
2275
  /**
2119
2276
  * "Use a website or app" — declare the channel's route as `server`.
2120
2277
  *
@@ -2238,4 +2395,4 @@ declare class ChannelsMode {
2238
2395
  handleBack(): boolean;
2239
2396
  }
2240
2397
 
2241
- export { type ReportResult as $, type AccessIntentForbidsDetails as A, type BucketRow as B, type ChannelAccessIntent as C, type ChannelsClient as D, ChannelsMode as E, type ChannelsModeHost as F, type ChannelsRowView as G, type ChannelsSeatView as H, type ControlRoomActivityEntry as I, type ControlRoomSectionMetric as J, type ControlRoomSnapshot as K, type EventScopedManageToken as L, type IntentSwitchBlockedDetails as M, type InventoryBooking as N, type InventoryBookingActivity as O, type InventoryBookingDetail as P, type InventoryBookingObject as Q, type InventoryBookingState as R, type InventoryBookingsPage as S, type InventoryBookingsQuery as T, type LogEntry as U, type LogPage as V, ManageApi as W, ManageApiError as X, type ReportByStatus as Y, type ReportCategoryMeta as Z, type ReportCategoryRow as _, type AccessLinkRecord as a, SeatManager as a0, type SeatManagerActionResult as a1, type SeatManagerActivity as a2, type SeatManagerCapability as a3, type SeatManagerConnection as a4, type SeatManagerMode as a5, type SeatManagerOptions as a6, type SeatManagerTallies as a7, type SelectionSourceRow as a8, ACCESS_LINK_DEFAULTS as a9, PUBLIC_CHANNEL_ID as aa, PUBLIC_CHANNEL_NAME as ab, accessIntentDescription as ac, accessIntentLabel as ad, accessLine as ae, accessLinkBadge as af, accessLinkErrorCopy as ag, accessLinkIsLive as ah, accessLinkPolicyLines as ai, bucketRows as aj, dropReviewRows as ak, intentForbidsCopy as al, intentSwitchBlockedCopy as am, isPublicChannelId as an, markerLetter as ao, markerOf as ap, mutationCount as aq, needsMoveConfirmation as ar, planAssignment as as, retryAfterCopy as at, selectionSources as au, stateBadge as av, suggestMarker as aw, type AccessLinkReveal as b, type AccessLinkState as c, type AccessLinkStatus as d, type AccessLinkStatusRecord as e, type ArchiveBlockedDetails as f, type AssignmentBuckets as g, type AssignmentDropDetails as h, type AssignmentResult as i, type ChannelAccessSummary as j, type ChannelAllocationPage as k, type ChannelAttribution as l, type ChannelAuditEntry as m, type ChannelAuditPage as n, type ChannelCounts as o, type ChannelListResult as p, type ChannelPreviewProjection as q, type ChannelRecord as r, type ChannelReport as s, type ChannelReportLinkRecord as t, type ChannelReportLinkReveal as u, type ChannelReportResult as v, type ChannelReportRow as w, type ChannelSeatStatus as x, type ChannelState as y, type ChannelsCapabilities as z };
2398
+ export { type ReportByStatus as $, type AccessIntentForbidsDetails as A, type BucketRow as B, type ChannelAccessIntent as C, type ChannelsClient as D, ChannelsMode as E, type ChannelsModeHost as F, type ChannelsRowView as G, type ChannelsSeatView as H, type ControlRoomActivityEntry as I, type ControlRoomSectionMetric as J, type ControlRoomSnapshot as K, type EventCategoryAssignmentResult as L, type EventScopedManageToken as M, type EventTableBookingMode as N, type EventTableBookingResult as O, type IntentSwitchBlockedDetails as P, type InventoryBooking as Q, type InventoryBookingActivity as R, type InventoryBookingDetail as S, type InventoryBookingObject as T, type InventoryBookingState as U, type InventoryBookingsPage as V, type InventoryBookingsQuery as W, type LogEntry as X, type LogPage as Y, ManageApi as Z, ManageApiError as _, type AccessLinkRecord as a, type ReportCategoryMeta as a0, type ReportCategoryRow as a1, type ReportResult as a2, SeatManager as a3, type SeatManagerActionResult as a4, type SeatManagerActivity as a5, type SeatManagerCapability as a6, type SeatManagerConnection as a7, type SeatManagerFilteredSection as a8, type SeatManagerMode as a9, stateBadge as aA, suggestMarker as aB, type SeatManagerOptions as aa, type SeatManagerSelectionValidity as ab, type SeatManagerTallies as ac, type SelectionSourceRow as ad, ACCESS_LINK_DEFAULTS as ae, PUBLIC_CHANNEL_ID as af, PUBLIC_CHANNEL_NAME as ag, accessIntentDescription as ah, accessIntentLabel as ai, accessLine as aj, accessLinkBadge as ak, accessLinkErrorCopy as al, accessLinkIsLive as am, accessLinkPolicyLines as an, bucketRows as ao, dropReviewRows as ap, intentForbidsCopy as aq, intentSwitchBlockedCopy as ar, isPublicChannelId as as, markerLetter as at, markerOf as au, mutationCount as av, needsMoveConfirmation as aw, planAssignment as ax, retryAfterCopy as ay, selectionSources as az, type AccessLinkReveal as b, type AccessLinkState as c, type AccessLinkStatus as d, type AccessLinkStatusRecord as e, type ArchiveBlockedDetails as f, type AssignmentBuckets as g, type AssignmentDropDetails as h, type AssignmentResult as i, type ChannelAccessSummary as j, type ChannelAllocationPage as k, type ChannelAttribution as l, type ChannelAuditEntry as m, type ChannelAuditPage as n, type ChannelCounts as o, type ChannelListResult as p, type ChannelPreviewProjection as q, type ChannelRecord as r, type ChannelReport as s, type ChannelReportLinkRecord as t, type ChannelReportLinkReveal as u, type ChannelReportResult as v, type ChannelReportRow as w, type ChannelSeatStatus as x, type ChannelState as y, type ChannelsCapabilities as z };