@saasicat/ui-vue 1.0.0-rc.27 → 1.0.0-rc.28

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.
Files changed (56) hide show
  1. package/dist/.build-stamp +1 -1
  2. package/dist/assets/ui-vue.css +24 -1
  3. package/dist/{catalog-DwUIt-lr.d.cts → catalog-DheYUn-o.d.cts} +204 -2
  4. package/dist/{catalog-DwUIt-lr.d.ts → catalog-DheYUn-o.d.ts} +204 -2
  5. package/dist/{chunk-OAY5OVAZ.js → chunk-C6IYEQYN.js} +1 -1
  6. package/dist/{chunk-XNFQOQ4E.js → chunk-RDLOR3OP.js} +324 -16
  7. package/dist/{chunk-HQUTEVZN.js → chunk-UKVR6TKU.js} +17 -4
  8. package/dist/{chunk-AFEVIVPR.js → chunk-UPJS7YM6.js} +258 -73
  9. package/dist/{chunk-OVB6KZUS.js → chunk-XA77XIXF.js} +93 -2
  10. package/dist/chunks/QBtnToggle-PLGimm18.js +168 -0
  11. package/dist/client/index.cjs +457 -35
  12. package/dist/client/index.d.cts +31 -38
  13. package/dist/client/index.d.ts +31 -38
  14. package/dist/client/index.js +25 -5
  15. package/dist/index.cjs +747 -146
  16. package/dist/index.d.cts +5 -5
  17. package/dist/index.d.ts +5 -5
  18. package/dist/index.js +37 -7
  19. package/dist/{batch-column-fetcher-BoLjA4Gr.d.ts → invoice-cancellation-BGGaER3E.d.ts} +55 -5
  20. package/dist/{batch-column-fetcher-EPMSDmOq.d.cts → invoice-cancellation-CBPt205G.d.cts} +55 -5
  21. package/dist/pages/ReconciliationPage.js +3 -165
  22. package/dist/pages/TenantDetailPage.js +688 -64
  23. package/dist/quasar/index.cjs +325 -19
  24. package/dist/quasar/index.d.cts +2 -2
  25. package/dist/quasar/index.d.ts +2 -2
  26. package/dist/quasar/index.js +2 -2
  27. package/dist/{resource-registry-_fkP9cdl.d.cts → resource-registry-BusXVc1H.d.cts} +1 -1
  28. package/dist/{resource-registry-782pymZL.d.ts → resource-registry-DBJDimni.d.ts} +1 -1
  29. package/dist/vue/index.cjs +697 -133
  30. package/dist/vue/index.d.cts +83 -6
  31. package/dist/vue/index.d.ts +83 -6
  32. package/dist/vue/index.js +14 -4
  33. package/package.json +5 -5
  34. package/src/client/admin-error.ts +14 -4
  35. package/src/client/http/axios-http-client.ts +23 -0
  36. package/src/client/http/fetch-http-client.ts +7 -4
  37. package/src/client/i18n/messages/errors.ts +13 -5
  38. package/src/client/i18n/messages/tenants.ts +214 -0
  39. package/src/client/index.ts +2 -0
  40. package/src/client/invoice-cancellation.ts +123 -0
  41. package/src/client/resources/resource-request.ts +81 -9
  42. package/src/client/resources/tenants.resource.ts +105 -3
  43. package/src/client/save-file.ts +62 -0
  44. package/src/client/types.ts +11 -0
  45. package/src/index.ts +4 -0
  46. package/src/internal/tenant-detail/InvoiceCancellationDialog.vue +326 -0
  47. package/src/internal/tenant-detail/InvoiceCancellationLines.vue +148 -0
  48. package/src/internal/tenant-detail/TenantContracts.vue +121 -0
  49. package/src/internal/tenant-detail/TenantCredits.vue +5 -1
  50. package/src/internal/tenant-detail/TenantPayments.vue +75 -5
  51. package/src/pages/TenantDetailPage.vue +30 -0
  52. package/src/vue/index.ts +4 -0
  53. package/src/vue/use-file-download.ts +50 -0
  54. package/src/vue/use-invoice-cancellation.ts +238 -0
  55. package/src/vue/use-tenant-contracts.ts +54 -0
  56. package/src/vue/use-tenant-downloads.ts +43 -0
package/dist/.build-stamp CHANGED
@@ -1 +1 @@
1
- c73a35418edcd721cad98a0eaee386b305881f4dfe1d7a74c2c51ef50ba348d4
1
+ 25d9bdf300afc11738864821176eeb1949f0583fdb0bc06d0c8dbdd7019c8c7c
@@ -6916,6 +6916,29 @@ code[data-v-aab75c67] {
6916
6916
  font-size: var(--sa-text-md);
6917
6917
  }
6918
6918
 
6919
+ .sa-invoice-cancel__lines[data-v-c2083b50] {
6920
+ list-style: none;
6921
+ margin: var(--sa-space-2) 0 0;
6922
+ padding: 0;
6923
+ display: grid;
6924
+ gap: var(--sa-space-2);
6925
+ }
6926
+ .sa-invoice-cancel__line[data-v-c2083b50] {
6927
+ display: flex;
6928
+ justify-content: space-between;
6929
+ gap: var(--sa-space-3);
6930
+ }
6931
+
6932
+ .sa-invoice-cancel__figures[data-v-47173c72] {
6933
+ display: grid;
6934
+ grid-template-columns: max-content 1fr;
6935
+ gap: var(--sa-space-1) var(--sa-space-3);
6936
+ margin: var(--sa-space-2) 0 0;
6937
+ }
6938
+ .sa-invoice-cancel__figures dd[data-v-47173c72] {
6939
+ margin: 0;
6940
+ }
6941
+
6919
6942
  .sa-tenant-subscriber__note[data-v-2e8dc554] {
6920
6943
  color: var(--sa-color-fg-muted);
6921
6944
  margin: 0;
@@ -6925,7 +6948,7 @@ code[data-v-aab75c67] {
6925
6948
  padding-left: var(--sa-space-4);
6926
6949
  }
6927
6950
 
6928
- code[data-v-6eaf92ec] {
6951
+ code[data-v-73185124] {
6929
6952
  background: var(--sa-color-bg-sunken);
6930
6953
  padding: var(--sa-space-0) var(--sa-space-2);
6931
6954
  border-radius: var(--sa-radius-badge);
@@ -1,5 +1,5 @@
1
1
  import * as _saasicat_core from '@saasicat/core';
2
- import { FeatureWithdrawalReduction, FeatureWithdrawalView, FeatureWithdrawalPreview, FeatureWithdrawalAnnounced, FeatureWithdrawalLifted, BundleVersionRetirementView, BundleRetirementPreview, BundleRetirementAnnounced, VersionRetirementView, RetirementPreview, RetirementAnnounced, MaintenanceOverview, MaintenanceWindowView, MaintenanceLockView, MaintenanceUnlockView, AdminAuditListFilter, AuditEntry, TenantListFilter, TenantDto, AdminTenantDetail, AdminSubscriberAccount, AdminSubscriberCredits, AdminTenantPayments, AdminSubscriberPayout, AdminTenantSubscriber, AdminSubscriberHistoryEntry, AdminSubscriberCorrected, AdminSubscriberAttention, PromoCodeRecord, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, MarketingSettingsRow, DiscoverySnapshot, KpiCardDef, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, StandardPageKey, AdminManifest, TenantActionDef } from '@saasicat/core';
2
+ import { FeatureWithdrawalReduction, FeatureWithdrawalView, FeatureWithdrawalPreview, FeatureWithdrawalAnnounced, FeatureWithdrawalLifted, BundleVersionRetirementView, BundleRetirementPreview, BundleRetirementAnnounced, VersionRetirementView, RetirementPreview, RetirementAnnounced, MaintenanceOverview, MaintenanceWindowView, MaintenanceLockView, MaintenanceUnlockView, AdminAuditListFilter, AuditEntry, TenantListFilter, TenantDto, AdminTenantDetail, AdminSubscriberAccount, AdminSubscriberCredits, AdminTenantPayments, AdminTenantContracts, AdminSubscriberPayout, AdminInvoice, InvoiceCancellationRequest, AdminInvoiceCancellationPlan, AdminCancelledInvoice, AdminTenantSubscriber, AdminSubscriberHistoryEntry, AdminSubscriberCorrected, AdminSubscriberAttention, PromoCodeRecord, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, MarketingSettingsRow, DiscoverySnapshot, KpiCardDef, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, StandardPageKey, AdminManifest, TenantActionDef } from '@saasicat/core';
3
3
 
4
4
  /**
5
5
  * Minimal abstraction over `fetch`. Consumers may pass their own
@@ -10,6 +10,12 @@ type HttpClient = (url: string, init?: {
10
10
  method?: string;
11
11
  headers?: Record<string, string>;
12
12
  body?: string;
13
+ /**
14
+ * The answer is a file, such as an invoice's document: ask for its
15
+ * body as it arrived, which `HttpResponse.bytes` then hands over. A
16
+ * client that leaves this out still serves every other request.
17
+ */
18
+ binary?: boolean;
13
19
  }) => Promise<HttpResponse>;
14
20
  interface HttpResponse {
15
21
  status: number;
@@ -18,6 +24,11 @@ interface HttpResponse {
18
24
  };
19
25
  json(): Promise<unknown>;
20
26
  text(): Promise<string>;
27
+ /**
28
+ * The body as it arrived, for a request made with `binary`. Optional: only
29
+ * the downloads ask for it, and they say so where a client has none.
30
+ */
31
+ bytes?(): Promise<Uint8Array>;
21
32
  }
22
33
  /** Simple persistence adapter; default is `localStorage`. */
23
34
  interface KvStore {
@@ -386,6 +397,56 @@ declare const auditResource: ResourceDef<{
386
397
  readonly list: (http: HttpClient, ctx: ResourceContext, filter?: AuditListFilter) => Promise<AuditEntry[]>;
387
398
  }>;
388
399
 
400
+ interface ResourceRequestInit {
401
+ /** Default `GET`. */
402
+ method?: string;
403
+ /** Serialised here — the `HttpClient` contract only carries strings. */
404
+ body?: unknown;
405
+ /** Merged over the defaults, so a caller's header wins. */
406
+ headers?: Record<string, string>;
407
+ }
408
+ /**
409
+ * Sends a request and returns the parsed body, or `null` when there was none.
410
+ *
411
+ * `null` covers both a `204` and a 2xx whose body would not parse. The two are
412
+ * deliberately not distinguished: every caller treats them the same way — a
413
+ * list turns `null` into `[]`, a mutation turns it into a failure — and no
414
+ * endpoint in this family answers a mutation with an empty 200 on purpose.
415
+ *
416
+ * A non-2xx throws an `AdminError` carrying the parsed body, so a caller can
417
+ * still branch on `status` and `body.code` the way the pages do today.
418
+ *
419
+ * A client that resolved without an HTTP status throws before any of that: no
420
+ * status means the request never reached the server, which is a transport
421
+ * failure and not an answer this function may read.
422
+ */
423
+ declare function requestJson<T>(http: HttpClient, url: string, init?: ResourceRequestInit): Promise<T | null>;
424
+ /** A file a download answered: its bytes, its media type and the name it is offered under. */
425
+ interface DownloadedFile {
426
+ content: Uint8Array;
427
+ mediaType: string;
428
+ fileName: string;
429
+ }
430
+ /**
431
+ * Downloads the file `url` answers, such as an invoice's archived document. A
432
+ * refusal is thrown as `requestJson` throws it, from the JSON body the server
433
+ * answers a refusal with. The name is the one `Content-Disposition` offers, or
434
+ * `fallbackName` where it offers none.
435
+ *
436
+ * Needs a client whose responses have `bytes()`: both clients the package
437
+ * ships do. One of the application's own that has none is said, rather than
438
+ * read through `text()`, which would hand a PDF over decoded as UTF-8.
439
+ */
440
+ declare function requestFile(http: HttpClient, url: string, fallbackName: string): Promise<DownloadedFile>;
441
+ /**
442
+ * Reads the body of a request that must answer with one.
443
+ *
444
+ * The empty case is a failure rather than a `null` the caller has to re-check:
445
+ * a create that returns nothing has not told us what it created. Raised with
446
+ * `status: 0`, because no HTTP status went wrong — the response was a 2xx.
447
+ */
448
+ declare function requestJsonBody<T>(http: HttpClient, url: string, what: string, init?: ResourceRequestInit): Promise<T>;
449
+
389
450
  /** 1-based: the page a list starts on, and the one a changed filter returns to. */
390
451
  declare const LIST_FIRST_PAGE = 1;
391
452
  /**
@@ -532,12 +593,48 @@ declare const tenantsResource: ResourceDef<{
532
593
  * `payments.read`.
533
594
  */
534
595
  readonly payments: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<AdminTenantPayments>;
596
+ /**
597
+ * The tenant's contracts, the newest first, each with where its
598
+ * confirmation stands. Served only where the manifest announces
599
+ * `contracts.read`.
600
+ */
601
+ readonly contracts: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<AdminTenantContracts>;
602
+ /**
603
+ * The archived confirmation of one contract, the file its subscriber was
604
+ * sent. Served where the manifest announces `contracts.read`.
605
+ */
606
+ readonly contractConfirmation: (http: HttpClient, ctx: ResourceContext, contractId: string) => Promise<DownloadedFile>;
607
+ /**
608
+ * The archived document of one invoice, the file it was issued as. Served
609
+ * where the manifest announces `invoices.read`.
610
+ */
611
+ readonly invoiceDocument: (http: HttpClient, ctx: ResourceContext, invoiceId: string) => Promise<DownloadedFile>;
535
612
  /**
536
613
  * Records a payout made outside the gateway against one credit, and
537
614
  * answers the credits as they stand after it. Requires the second factor;
538
615
  * served where the manifest announces `credits.payout`.
539
616
  */
540
617
  readonly recordPayout: (http: HttpClient, ctx: ResourceContext, slug: string, creditId: string, payout: AdminSubscriberPayout, mfaCode?: string) => Promise<AdminSubscriberCredits>;
618
+ /**
619
+ * One of the tenant's invoices with its lines, each with what its charge
620
+ * stands at and whether a cancellation may correct it. Served where the
621
+ * manifest announces `invoices.cancel`.
622
+ */
623
+ readonly invoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string) => Promise<AdminInvoice>;
624
+ /**
625
+ * What cancelling one of the tenant's invoices would write — the
626
+ * cancellation invoice, the replacement and where what was paid goes —,
627
+ * computed as the cancellation computes it and refused as it is; nothing
628
+ * is written. Served where the manifest announces `invoices.cancel`.
629
+ */
630
+ readonly previewInvoiceCancellation: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: InvoiceCancellationRequest) => Promise<AdminInvoiceCancellationPlan>;
631
+ /**
632
+ * Cancels one of the tenant's invoices by a cancellation invoice and its
633
+ * replacement. Requires the second factor; the request carries the
634
+ * preview's digest, and a preview that no longer holds is refused with the
635
+ * new one.
636
+ */
637
+ readonly cancelInvoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: InvoiceCancellationRequest, mfaCode?: string) => Promise<AdminCancelledInvoice>;
541
638
  /**
542
639
  * The tenant's subscriber, its tax details and what holds its next
543
640
  * contract back. Served only where the manifest announces
@@ -862,7 +959,13 @@ declare const platformResources: {
862
959
  readonly charges: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberAccount>;
863
960
  readonly credits: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberCredits>;
864
961
  readonly payments: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantPayments>;
962
+ readonly contracts: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantContracts>;
963
+ readonly contractConfirmation: (http: HttpClient, ctx: ResourceContext, contractId: string) => Promise<DownloadedFile>;
964
+ readonly invoiceDocument: (http: HttpClient, ctx: ResourceContext, invoiceId: string) => Promise<DownloadedFile>;
865
965
  readonly recordPayout: (http: HttpClient, ctx: ResourceContext, slug: string, creditId: string, payout: _saasicat_core.AdminSubscriberPayout, mfaCode?: string) => Promise<_saasicat_core.AdminSubscriberCredits>;
966
+ readonly invoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string) => Promise<_saasicat_core.AdminInvoice>;
967
+ readonly previewInvoiceCancellation: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: _saasicat_core.InvoiceCancellationRequest) => Promise<_saasicat_core.AdminInvoiceCancellationPlan>;
968
+ readonly cancelInvoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: _saasicat_core.InvoiceCancellationRequest, mfaCode?: string) => Promise<_saasicat_core.AdminCancelledInvoice>;
866
969
  readonly subscriber: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantSubscriber>;
867
970
  readonly subscriberHistory: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberHistoryEntry[]>;
868
971
  readonly correctSubscriberIdentity: (http: HttpClient, ctx: ResourceContext, slug: string, correction: SubscriberIdentityCorrectionInput, mfaCode?: string) => Promise<_saasicat_core.AdminSubscriberCorrected>;
@@ -1538,6 +1641,7 @@ declare const errorsMessages: Record<SaBuiltinLocale, {
1538
1641
  server: string;
1539
1642
  httpStatus: string;
1540
1643
  unexpected: string;
1644
+ codes: Record<_saasicat_core.PlatformErrorCode, string>;
1541
1645
  }>;
1542
1646
 
1543
1647
  declare const featureWithdrawalsMessages: Record<SaBuiltinLocale, {
@@ -2767,6 +2871,7 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2767
2871
  fromPayment: string;
2768
2872
  fromInvoice: string;
2769
2873
  fromReversal: string;
2874
+ fromCancellation: string;
2770
2875
  unknownInvoice: string;
2771
2876
  payOut: string;
2772
2877
  mfaPayout: string;
@@ -2796,6 +2901,102 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2796
2901
  columnOwed: string;
2797
2902
  casesTitle: string;
2798
2903
  casesEmpty: string;
2904
+ columnStanding: string;
2905
+ cancellationOf: string;
2906
+ replacementOf: string;
2907
+ cancelledBy: string;
2908
+ cancel: string;
2909
+ cancelInvoice: string;
2910
+ download: string;
2911
+ downloadInvoice: string;
2912
+ mfaCancel: string;
2913
+ cancelled: string;
2914
+ cancelledWithoutReplacement: string;
2915
+ cancelDialog: {
2916
+ askSubtitle: string;
2917
+ reason: string;
2918
+ reasonHint: string;
2919
+ lines: string;
2920
+ linesCaption: string;
2921
+ linesLoadFailed: string;
2922
+ lineChoice: string;
2923
+ lineOwed: string;
2924
+ lineNotOwed: string;
2925
+ linePart: string;
2926
+ lineAmount: string;
2927
+ lineAmountHint: string;
2928
+ lineFollows: string;
2929
+ lineCorrection: string;
2930
+ lineNothing: string;
2931
+ movedLines: string;
2932
+ movedLine: string;
2933
+ replacementLines: string;
2934
+ deliverTo: string;
2935
+ deliverToHint: string;
2936
+ corrections: string;
2937
+ correctionsCaption: string;
2938
+ onRecord: string;
2939
+ onRecordEmpty: string;
2940
+ takeOver: string;
2941
+ takeOverLabel: string;
2942
+ cleared: string;
2943
+ preview: string;
2944
+ previewSubtitle: string;
2945
+ cancellationInvoice: string;
2946
+ replacement: string;
2947
+ noReplacement: string;
2948
+ amounts: string;
2949
+ tax: string;
2950
+ dates: string;
2951
+ movedIn: string;
2952
+ credited: string;
2953
+ deliveredTo: string;
2954
+ toRecord: string;
2955
+ party: string;
2956
+ changed: string;
2957
+ none: string;
2958
+ back: string;
2959
+ submit: string;
2960
+ previewChanged: string;
2961
+ taxTreatment: {
2962
+ standard: string;
2963
+ reduced: string;
2964
+ exempt: string;
2965
+ 'reverse-charge': string;
2966
+ 'not-taxable': string;
2967
+ 'small-business': string;
2968
+ };
2969
+ };
2970
+ };
2971
+ contracts: {
2972
+ title: string;
2973
+ subtitle: string;
2974
+ loadFailed: string;
2975
+ empty: string;
2976
+ columnConcluded: string;
2977
+ columnStart: string;
2978
+ columnStatus: string;
2979
+ columnBilling: string;
2980
+ columnTotal: string;
2981
+ columnTerms: string;
2982
+ columnNotice: string;
2983
+ columnConfirmation: string;
2984
+ noTerms: string;
2985
+ noticeDays: string;
2986
+ statuses: {
2987
+ active: string;
2988
+ scheduled: string;
2989
+ terminated: string;
2990
+ superseded: string;
2991
+ };
2992
+ states: {
2993
+ 'not-due': string;
2994
+ 'being-made': string;
2995
+ 'awaiting-mail': string;
2996
+ sent: string;
2997
+ };
2998
+ download: string;
2999
+ downloadConfirmation: string;
2799
3000
  };
2800
3001
  subscriber: {
2801
3002
  title: string;
@@ -2865,6 +3066,7 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2865
3066
  };
2866
3067
  field: {
2867
3068
  addressLine1: string;
3069
+ addressLine2: string;
2868
3070
  postalCode: string;
2869
3071
  city: string;
2870
3072
  country: string;
@@ -3058,4 +3260,4 @@ interface SaCatalog {
3058
3260
  */
3059
3261
  declare function createSaCatalog(options?: SaCatalogOptions): SaCatalog;
3060
3262
 
3061
- export { type ResourceOps as $, ActionDefNotInManifestError as A, type Bound as B, type PilotEditPayload as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type FeatureWithdrawalAnnouncementInput as F, type PilotEditResult as G, type HttpClient as H, type PilotRow as I, type PlatformEmailProvider as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MaintenanceAnnouncementInput as M, type PlatformEmailTestInput as N, type PlatformEmailTestResult as O, type PartialMessages as P, type PlatformEmailWriteInput as Q, type PlatformResources as R, type PromoCodesFilter as S, type PromoDetail as T, type PublishBundleVersionOptions as U, type PublishPlanVersionOptions as V, type ResolvedAction as W, type ResourceContext as X, type ResourceDef as Y, type ResourceListPage as Z, type ResourceOp as _, type ActionHandler as a, type RetirementAnnouncement as a0, SA_INTL_LOCALES as a1, SA_LOCALES as a2, SA_LOCALE_LABELS as a3, SA_MESSAGES as a4, type SaBuiltinLocale as a5, type SaCatalog as a6, type SaCatalogOptions as a7, type SaLocale as a8, type SaLocaleDefinition as a9, isMaintenanceOverview as aA, isSaBuiltinLocale as aB, isSentInQuery as aC, listUrl as aD, maintenanceResource as aE, marketingResource as aF, mergeMessages as aG, planVersionsResource as aH, plansResource as aI, platformResources as aJ, promoCodesResource as aK, readListPage as aL, resolveMessages as aM, settingsResource as aN, tenantsResource as aO, versionRetirementsResource as aP, type SaNavMessages as aQ, type SaLocaleOption as aa, type SaMessages as ab, type SaMessagesOverrides as ac, type SettingsChangeView as ad, type SettingsDifferenceView as ae, type SubscriberBusinessStatusInput as af, type SubscriberIdentityCorrectionInput as ag, type TenantsListFilter as ah, type TranslationOf as ai, auditResource as aj, bindResource as ak, bundleVersionRetirementsResource as al, bundleVersionsResource as am, bundlesResource as an, clampListPage as ao, clampListPageSize as ap, createSaCatalog as aq, dashboardResource as ar, defaultHttpClient as as, defaultKvStore as at, defineListOp as au, defineMessages as av, defineResource as aw, discoveryResource as ax, featureWithdrawalsResource as ay, filterQueryString as az, ActionRegistry as b, type AppliedSettingsView as c, type AuditListFilter as d, type BundleRetirementAnnouncement as e, type DiscoveryRead as f, type EmailHistoryFilter as g, type EmailHistoryListResult as h, type EmailHistoryResendResult as i, type EmailHistoryRow as j, type EmailHistoryStatus as k, type HttpResponse as l, type KvStore as m, LIST_PAGE_SIZE_DEFAULT as n, LIST_PAGE_SIZE_MAX as o, LIST_PAGINATION_PARAMS as p, type ListFilterOf as q, type ListOp as r, type ListQuery as s, type MaintenanceLockInput as t, type MaintenanceRevisionInput as u, type MarketingProjectionsFilter as v, type MessageTree as w, MissingHandlerError as x, type PilotCreatePayload as y, type PilotCreateResult as z };
3263
+ export { type ResourceOp as $, ActionDefNotInManifestError as A, type Bound as B, type PilotCreateResult as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type FeatureWithdrawalAnnouncementInput as F, type PilotEditPayload as G, type HttpClient as H, type PilotEditResult as I, type PilotRow as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MaintenanceAnnouncementInput as M, type PlatformEmailProvider as N, type PlatformEmailTestInput as O, type PartialMessages as P, type PlatformEmailTestResult as Q, type PlatformEmailWriteInput as R, type PlatformResources as S, type PromoCodesFilter as T, type PromoDetail as U, type PublishBundleVersionOptions as V, type PublishPlanVersionOptions as W, type ResolvedAction as X, type ResourceContext as Y, type ResourceDef as Z, type ResourceListPage as _, type ActionHandler as a, type ResourceOps as a0, type ResourceRequestInit as a1, type RetirementAnnouncement as a2, SA_INTL_LOCALES as a3, SA_LOCALES as a4, SA_LOCALE_LABELS as a5, SA_MESSAGES as a6, type SaBuiltinLocale as a7, type SaCatalog as a8, type SaCatalogOptions as a9, featureWithdrawalsResource as aA, filterQueryString as aB, isMaintenanceOverview as aC, isSaBuiltinLocale as aD, isSentInQuery as aE, listUrl as aF, maintenanceResource as aG, marketingResource as aH, mergeMessages as aI, planVersionsResource as aJ, plansResource as aK, platformResources as aL, promoCodesResource as aM, readListPage as aN, requestFile as aO, requestJson as aP, requestJsonBody as aQ, resolveMessages as aR, settingsResource as aS, tenantsResource as aT, versionRetirementsResource as aU, type SaNavMessages as aV, type SaLocale as aa, type SaLocaleDefinition as ab, type SaLocaleOption as ac, type SaMessages as ad, type SaMessagesOverrides as ae, type SettingsChangeView as af, type SettingsDifferenceView as ag, type SubscriberBusinessStatusInput as ah, type SubscriberIdentityCorrectionInput as ai, type TenantsListFilter as aj, type TranslationOf as ak, auditResource as al, bindResource as am, bundleVersionRetirementsResource as an, bundleVersionsResource as ao, bundlesResource as ap, clampListPage as aq, clampListPageSize as ar, createSaCatalog as as, dashboardResource as at, defaultHttpClient as au, defaultKvStore as av, defineListOp as aw, defineMessages as ax, defineResource as ay, discoveryResource as az, ActionRegistry as b, type AppliedSettingsView as c, type AuditListFilter as d, type BundleRetirementAnnouncement as e, type DiscoveryRead as f, type DownloadedFile as g, type EmailHistoryFilter as h, type EmailHistoryListResult as i, type EmailHistoryResendResult as j, type EmailHistoryRow as k, type EmailHistoryStatus as l, type HttpResponse as m, type KvStore as n, LIST_PAGE_SIZE_DEFAULT as o, LIST_PAGE_SIZE_MAX as p, LIST_PAGINATION_PARAMS as q, type ListFilterOf as r, type ListOp as s, type ListQuery as t, type MaintenanceLockInput as u, type MaintenanceRevisionInput as v, type MarketingProjectionsFilter as w, type MessageTree as x, MissingHandlerError as y, type PilotCreatePayload as z };
@@ -1,5 +1,5 @@
1
1
  import * as _saasicat_core from '@saasicat/core';
2
- import { FeatureWithdrawalReduction, FeatureWithdrawalView, FeatureWithdrawalPreview, FeatureWithdrawalAnnounced, FeatureWithdrawalLifted, BundleVersionRetirementView, BundleRetirementPreview, BundleRetirementAnnounced, VersionRetirementView, RetirementPreview, RetirementAnnounced, MaintenanceOverview, MaintenanceWindowView, MaintenanceLockView, MaintenanceUnlockView, AdminAuditListFilter, AuditEntry, TenantListFilter, TenantDto, AdminTenantDetail, AdminSubscriberAccount, AdminSubscriberCredits, AdminTenantPayments, AdminSubscriberPayout, AdminTenantSubscriber, AdminSubscriberHistoryEntry, AdminSubscriberCorrected, AdminSubscriberAttention, PromoCodeRecord, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, MarketingSettingsRow, DiscoverySnapshot, KpiCardDef, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, StandardPageKey, AdminManifest, TenantActionDef } from '@saasicat/core';
2
+ import { FeatureWithdrawalReduction, FeatureWithdrawalView, FeatureWithdrawalPreview, FeatureWithdrawalAnnounced, FeatureWithdrawalLifted, BundleVersionRetirementView, BundleRetirementPreview, BundleRetirementAnnounced, VersionRetirementView, RetirementPreview, RetirementAnnounced, MaintenanceOverview, MaintenanceWindowView, MaintenanceLockView, MaintenanceUnlockView, AdminAuditListFilter, AuditEntry, TenantListFilter, TenantDto, AdminTenantDetail, AdminSubscriberAccount, AdminSubscriberCredits, AdminTenantPayments, AdminTenantContracts, AdminSubscriberPayout, AdminInvoice, InvoiceCancellationRequest, AdminInvoiceCancellationPlan, AdminCancelledInvoice, AdminTenantSubscriber, AdminSubscriberHistoryEntry, AdminSubscriberCorrected, AdminSubscriberAttention, PromoCodeRecord, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, MarketingSettingsRow, DiscoverySnapshot, KpiCardDef, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, StandardPageKey, AdminManifest, TenantActionDef } from '@saasicat/core';
3
3
 
4
4
  /**
5
5
  * Minimal abstraction over `fetch`. Consumers may pass their own
@@ -10,6 +10,12 @@ type HttpClient = (url: string, init?: {
10
10
  method?: string;
11
11
  headers?: Record<string, string>;
12
12
  body?: string;
13
+ /**
14
+ * The answer is a file, such as an invoice's document: ask for its
15
+ * body as it arrived, which `HttpResponse.bytes` then hands over. A
16
+ * client that leaves this out still serves every other request.
17
+ */
18
+ binary?: boolean;
13
19
  }) => Promise<HttpResponse>;
14
20
  interface HttpResponse {
15
21
  status: number;
@@ -18,6 +24,11 @@ interface HttpResponse {
18
24
  };
19
25
  json(): Promise<unknown>;
20
26
  text(): Promise<string>;
27
+ /**
28
+ * The body as it arrived, for a request made with `binary`. Optional: only
29
+ * the downloads ask for it, and they say so where a client has none.
30
+ */
31
+ bytes?(): Promise<Uint8Array>;
21
32
  }
22
33
  /** Simple persistence adapter; default is `localStorage`. */
23
34
  interface KvStore {
@@ -386,6 +397,56 @@ declare const auditResource: ResourceDef<{
386
397
  readonly list: (http: HttpClient, ctx: ResourceContext, filter?: AuditListFilter) => Promise<AuditEntry[]>;
387
398
  }>;
388
399
 
400
+ interface ResourceRequestInit {
401
+ /** Default `GET`. */
402
+ method?: string;
403
+ /** Serialised here — the `HttpClient` contract only carries strings. */
404
+ body?: unknown;
405
+ /** Merged over the defaults, so a caller's header wins. */
406
+ headers?: Record<string, string>;
407
+ }
408
+ /**
409
+ * Sends a request and returns the parsed body, or `null` when there was none.
410
+ *
411
+ * `null` covers both a `204` and a 2xx whose body would not parse. The two are
412
+ * deliberately not distinguished: every caller treats them the same way — a
413
+ * list turns `null` into `[]`, a mutation turns it into a failure — and no
414
+ * endpoint in this family answers a mutation with an empty 200 on purpose.
415
+ *
416
+ * A non-2xx throws an `AdminError` carrying the parsed body, so a caller can
417
+ * still branch on `status` and `body.code` the way the pages do today.
418
+ *
419
+ * A client that resolved without an HTTP status throws before any of that: no
420
+ * status means the request never reached the server, which is a transport
421
+ * failure and not an answer this function may read.
422
+ */
423
+ declare function requestJson<T>(http: HttpClient, url: string, init?: ResourceRequestInit): Promise<T | null>;
424
+ /** A file a download answered: its bytes, its media type and the name it is offered under. */
425
+ interface DownloadedFile {
426
+ content: Uint8Array;
427
+ mediaType: string;
428
+ fileName: string;
429
+ }
430
+ /**
431
+ * Downloads the file `url` answers, such as an invoice's archived document. A
432
+ * refusal is thrown as `requestJson` throws it, from the JSON body the server
433
+ * answers a refusal with. The name is the one `Content-Disposition` offers, or
434
+ * `fallbackName` where it offers none.
435
+ *
436
+ * Needs a client whose responses have `bytes()`: both clients the package
437
+ * ships do. One of the application's own that has none is said, rather than
438
+ * read through `text()`, which would hand a PDF over decoded as UTF-8.
439
+ */
440
+ declare function requestFile(http: HttpClient, url: string, fallbackName: string): Promise<DownloadedFile>;
441
+ /**
442
+ * Reads the body of a request that must answer with one.
443
+ *
444
+ * The empty case is a failure rather than a `null` the caller has to re-check:
445
+ * a create that returns nothing has not told us what it created. Raised with
446
+ * `status: 0`, because no HTTP status went wrong — the response was a 2xx.
447
+ */
448
+ declare function requestJsonBody<T>(http: HttpClient, url: string, what: string, init?: ResourceRequestInit): Promise<T>;
449
+
389
450
  /** 1-based: the page a list starts on, and the one a changed filter returns to. */
390
451
  declare const LIST_FIRST_PAGE = 1;
391
452
  /**
@@ -532,12 +593,48 @@ declare const tenantsResource: ResourceDef<{
532
593
  * `payments.read`.
533
594
  */
534
595
  readonly payments: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<AdminTenantPayments>;
596
+ /**
597
+ * The tenant's contracts, the newest first, each with where its
598
+ * confirmation stands. Served only where the manifest announces
599
+ * `contracts.read`.
600
+ */
601
+ readonly contracts: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<AdminTenantContracts>;
602
+ /**
603
+ * The archived confirmation of one contract, the file its subscriber was
604
+ * sent. Served where the manifest announces `contracts.read`.
605
+ */
606
+ readonly contractConfirmation: (http: HttpClient, ctx: ResourceContext, contractId: string) => Promise<DownloadedFile>;
607
+ /**
608
+ * The archived document of one invoice, the file it was issued as. Served
609
+ * where the manifest announces `invoices.read`.
610
+ */
611
+ readonly invoiceDocument: (http: HttpClient, ctx: ResourceContext, invoiceId: string) => Promise<DownloadedFile>;
535
612
  /**
536
613
  * Records a payout made outside the gateway against one credit, and
537
614
  * answers the credits as they stand after it. Requires the second factor;
538
615
  * served where the manifest announces `credits.payout`.
539
616
  */
540
617
  readonly recordPayout: (http: HttpClient, ctx: ResourceContext, slug: string, creditId: string, payout: AdminSubscriberPayout, mfaCode?: string) => Promise<AdminSubscriberCredits>;
618
+ /**
619
+ * One of the tenant's invoices with its lines, each with what its charge
620
+ * stands at and whether a cancellation may correct it. Served where the
621
+ * manifest announces `invoices.cancel`.
622
+ */
623
+ readonly invoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string) => Promise<AdminInvoice>;
624
+ /**
625
+ * What cancelling one of the tenant's invoices would write — the
626
+ * cancellation invoice, the replacement and where what was paid goes —,
627
+ * computed as the cancellation computes it and refused as it is; nothing
628
+ * is written. Served where the manifest announces `invoices.cancel`.
629
+ */
630
+ readonly previewInvoiceCancellation: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: InvoiceCancellationRequest) => Promise<AdminInvoiceCancellationPlan>;
631
+ /**
632
+ * Cancels one of the tenant's invoices by a cancellation invoice and its
633
+ * replacement. Requires the second factor; the request carries the
634
+ * preview's digest, and a preview that no longer holds is refused with the
635
+ * new one.
636
+ */
637
+ readonly cancelInvoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: InvoiceCancellationRequest, mfaCode?: string) => Promise<AdminCancelledInvoice>;
541
638
  /**
542
639
  * The tenant's subscriber, its tax details and what holds its next
543
640
  * contract back. Served only where the manifest announces
@@ -862,7 +959,13 @@ declare const platformResources: {
862
959
  readonly charges: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberAccount>;
863
960
  readonly credits: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberCredits>;
864
961
  readonly payments: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantPayments>;
962
+ readonly contracts: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantContracts>;
963
+ readonly contractConfirmation: (http: HttpClient, ctx: ResourceContext, contractId: string) => Promise<DownloadedFile>;
964
+ readonly invoiceDocument: (http: HttpClient, ctx: ResourceContext, invoiceId: string) => Promise<DownloadedFile>;
865
965
  readonly recordPayout: (http: HttpClient, ctx: ResourceContext, slug: string, creditId: string, payout: _saasicat_core.AdminSubscriberPayout, mfaCode?: string) => Promise<_saasicat_core.AdminSubscriberCredits>;
966
+ readonly invoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string) => Promise<_saasicat_core.AdminInvoice>;
967
+ readonly previewInvoiceCancellation: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: _saasicat_core.InvoiceCancellationRequest) => Promise<_saasicat_core.AdminInvoiceCancellationPlan>;
968
+ readonly cancelInvoice: (http: HttpClient, ctx: ResourceContext, slug: string, invoiceId: string, request: _saasicat_core.InvoiceCancellationRequest, mfaCode?: string) => Promise<_saasicat_core.AdminCancelledInvoice>;
866
969
  readonly subscriber: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantSubscriber>;
867
970
  readonly subscriberHistory: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminSubscriberHistoryEntry[]>;
868
971
  readonly correctSubscriberIdentity: (http: HttpClient, ctx: ResourceContext, slug: string, correction: SubscriberIdentityCorrectionInput, mfaCode?: string) => Promise<_saasicat_core.AdminSubscriberCorrected>;
@@ -1538,6 +1641,7 @@ declare const errorsMessages: Record<SaBuiltinLocale, {
1538
1641
  server: string;
1539
1642
  httpStatus: string;
1540
1643
  unexpected: string;
1644
+ codes: Record<_saasicat_core.PlatformErrorCode, string>;
1541
1645
  }>;
1542
1646
 
1543
1647
  declare const featureWithdrawalsMessages: Record<SaBuiltinLocale, {
@@ -2767,6 +2871,7 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2767
2871
  fromPayment: string;
2768
2872
  fromInvoice: string;
2769
2873
  fromReversal: string;
2874
+ fromCancellation: string;
2770
2875
  unknownInvoice: string;
2771
2876
  payOut: string;
2772
2877
  mfaPayout: string;
@@ -2796,6 +2901,102 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2796
2901
  columnOwed: string;
2797
2902
  casesTitle: string;
2798
2903
  casesEmpty: string;
2904
+ columnStanding: string;
2905
+ cancellationOf: string;
2906
+ replacementOf: string;
2907
+ cancelledBy: string;
2908
+ cancel: string;
2909
+ cancelInvoice: string;
2910
+ download: string;
2911
+ downloadInvoice: string;
2912
+ mfaCancel: string;
2913
+ cancelled: string;
2914
+ cancelledWithoutReplacement: string;
2915
+ cancelDialog: {
2916
+ askSubtitle: string;
2917
+ reason: string;
2918
+ reasonHint: string;
2919
+ lines: string;
2920
+ linesCaption: string;
2921
+ linesLoadFailed: string;
2922
+ lineChoice: string;
2923
+ lineOwed: string;
2924
+ lineNotOwed: string;
2925
+ linePart: string;
2926
+ lineAmount: string;
2927
+ lineAmountHint: string;
2928
+ lineFollows: string;
2929
+ lineCorrection: string;
2930
+ lineNothing: string;
2931
+ movedLines: string;
2932
+ movedLine: string;
2933
+ replacementLines: string;
2934
+ deliverTo: string;
2935
+ deliverToHint: string;
2936
+ corrections: string;
2937
+ correctionsCaption: string;
2938
+ onRecord: string;
2939
+ onRecordEmpty: string;
2940
+ takeOver: string;
2941
+ takeOverLabel: string;
2942
+ cleared: string;
2943
+ preview: string;
2944
+ previewSubtitle: string;
2945
+ cancellationInvoice: string;
2946
+ replacement: string;
2947
+ noReplacement: string;
2948
+ amounts: string;
2949
+ tax: string;
2950
+ dates: string;
2951
+ movedIn: string;
2952
+ credited: string;
2953
+ deliveredTo: string;
2954
+ toRecord: string;
2955
+ party: string;
2956
+ changed: string;
2957
+ none: string;
2958
+ back: string;
2959
+ submit: string;
2960
+ previewChanged: string;
2961
+ taxTreatment: {
2962
+ standard: string;
2963
+ reduced: string;
2964
+ exempt: string;
2965
+ 'reverse-charge': string;
2966
+ 'not-taxable': string;
2967
+ 'small-business': string;
2968
+ };
2969
+ };
2970
+ };
2971
+ contracts: {
2972
+ title: string;
2973
+ subtitle: string;
2974
+ loadFailed: string;
2975
+ empty: string;
2976
+ columnConcluded: string;
2977
+ columnStart: string;
2978
+ columnStatus: string;
2979
+ columnBilling: string;
2980
+ columnTotal: string;
2981
+ columnTerms: string;
2982
+ columnNotice: string;
2983
+ columnConfirmation: string;
2984
+ noTerms: string;
2985
+ noticeDays: string;
2986
+ statuses: {
2987
+ active: string;
2988
+ scheduled: string;
2989
+ terminated: string;
2990
+ superseded: string;
2991
+ };
2992
+ states: {
2993
+ 'not-due': string;
2994
+ 'being-made': string;
2995
+ 'awaiting-mail': string;
2996
+ sent: string;
2997
+ };
2998
+ download: string;
2999
+ downloadConfirmation: string;
2799
3000
  };
2800
3001
  subscriber: {
2801
3002
  title: string;
@@ -2865,6 +3066,7 @@ declare const tenantsMessages: Record<SaBuiltinLocale, {
2865
3066
  };
2866
3067
  field: {
2867
3068
  addressLine1: string;
3069
+ addressLine2: string;
2868
3070
  postalCode: string;
2869
3071
  city: string;
2870
3072
  country: string;
@@ -3058,4 +3260,4 @@ interface SaCatalog {
3058
3260
  */
3059
3261
  declare function createSaCatalog(options?: SaCatalogOptions): SaCatalog;
3060
3262
 
3061
- export { type ResourceOps as $, ActionDefNotInManifestError as A, type Bound as B, type PilotEditPayload as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type FeatureWithdrawalAnnouncementInput as F, type PilotEditResult as G, type HttpClient as H, type PilotRow as I, type PlatformEmailProvider as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MaintenanceAnnouncementInput as M, type PlatformEmailTestInput as N, type PlatformEmailTestResult as O, type PartialMessages as P, type PlatformEmailWriteInput as Q, type PlatformResources as R, type PromoCodesFilter as S, type PromoDetail as T, type PublishBundleVersionOptions as U, type PublishPlanVersionOptions as V, type ResolvedAction as W, type ResourceContext as X, type ResourceDef as Y, type ResourceListPage as Z, type ResourceOp as _, type ActionHandler as a, type RetirementAnnouncement as a0, SA_INTL_LOCALES as a1, SA_LOCALES as a2, SA_LOCALE_LABELS as a3, SA_MESSAGES as a4, type SaBuiltinLocale as a5, type SaCatalog as a6, type SaCatalogOptions as a7, type SaLocale as a8, type SaLocaleDefinition as a9, isMaintenanceOverview as aA, isSaBuiltinLocale as aB, isSentInQuery as aC, listUrl as aD, maintenanceResource as aE, marketingResource as aF, mergeMessages as aG, planVersionsResource as aH, plansResource as aI, platformResources as aJ, promoCodesResource as aK, readListPage as aL, resolveMessages as aM, settingsResource as aN, tenantsResource as aO, versionRetirementsResource as aP, type SaNavMessages as aQ, type SaLocaleOption as aa, type SaMessages as ab, type SaMessagesOverrides as ac, type SettingsChangeView as ad, type SettingsDifferenceView as ae, type SubscriberBusinessStatusInput as af, type SubscriberIdentityCorrectionInput as ag, type TenantsListFilter as ah, type TranslationOf as ai, auditResource as aj, bindResource as ak, bundleVersionRetirementsResource as al, bundleVersionsResource as am, bundlesResource as an, clampListPage as ao, clampListPageSize as ap, createSaCatalog as aq, dashboardResource as ar, defaultHttpClient as as, defaultKvStore as at, defineListOp as au, defineMessages as av, defineResource as aw, discoveryResource as ax, featureWithdrawalsResource as ay, filterQueryString as az, ActionRegistry as b, type AppliedSettingsView as c, type AuditListFilter as d, type BundleRetirementAnnouncement as e, type DiscoveryRead as f, type EmailHistoryFilter as g, type EmailHistoryListResult as h, type EmailHistoryResendResult as i, type EmailHistoryRow as j, type EmailHistoryStatus as k, type HttpResponse as l, type KvStore as m, LIST_PAGE_SIZE_DEFAULT as n, LIST_PAGE_SIZE_MAX as o, LIST_PAGINATION_PARAMS as p, type ListFilterOf as q, type ListOp as r, type ListQuery as s, type MaintenanceLockInput as t, type MaintenanceRevisionInput as u, type MarketingProjectionsFilter as v, type MessageTree as w, MissingHandlerError as x, type PilotCreatePayload as y, type PilotCreateResult as z };
3263
+ export { type ResourceOp as $, ActionDefNotInManifestError as A, type Bound as B, type PilotCreateResult as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type FeatureWithdrawalAnnouncementInput as F, type PilotEditPayload as G, type HttpClient as H, type PilotEditResult as I, type PilotRow as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MaintenanceAnnouncementInput as M, type PlatformEmailProvider as N, type PlatformEmailTestInput as O, type PartialMessages as P, type PlatformEmailTestResult as Q, type PlatformEmailWriteInput as R, type PlatformResources as S, type PromoCodesFilter as T, type PromoDetail as U, type PublishBundleVersionOptions as V, type PublishPlanVersionOptions as W, type ResolvedAction as X, type ResourceContext as Y, type ResourceDef as Z, type ResourceListPage as _, type ActionHandler as a, type ResourceOps as a0, type ResourceRequestInit as a1, type RetirementAnnouncement as a2, SA_INTL_LOCALES as a3, SA_LOCALES as a4, SA_LOCALE_LABELS as a5, SA_MESSAGES as a6, type SaBuiltinLocale as a7, type SaCatalog as a8, type SaCatalogOptions as a9, featureWithdrawalsResource as aA, filterQueryString as aB, isMaintenanceOverview as aC, isSaBuiltinLocale as aD, isSentInQuery as aE, listUrl as aF, maintenanceResource as aG, marketingResource as aH, mergeMessages as aI, planVersionsResource as aJ, plansResource as aK, platformResources as aL, promoCodesResource as aM, readListPage as aN, requestFile as aO, requestJson as aP, requestJsonBody as aQ, resolveMessages as aR, settingsResource as aS, tenantsResource as aT, versionRetirementsResource as aU, type SaNavMessages as aV, type SaLocale as aa, type SaLocaleDefinition as ab, type SaLocaleOption as ac, type SaMessages as ad, type SaMessagesOverrides as ae, type SettingsChangeView as af, type SettingsDifferenceView as ag, type SubscriberBusinessStatusInput as ah, type SubscriberIdentityCorrectionInput as ai, type TenantsListFilter as aj, type TranslationOf as ak, auditResource as al, bindResource as am, bundleVersionRetirementsResource as an, bundleVersionsResource as ao, bundlesResource as ap, clampListPage as aq, clampListPageSize as ar, createSaCatalog as as, dashboardResource as at, defaultHttpClient as au, defaultKvStore as av, defineListOp as aw, defineMessages as ax, defineResource as ay, discoveryResource as az, ActionRegistry as b, type AppliedSettingsView as c, type AuditListFilter as d, type BundleRetirementAnnouncement as e, type DiscoveryRead as f, type DownloadedFile as g, type EmailHistoryFilter as h, type EmailHistoryListResult as i, type EmailHistoryResendResult as j, type EmailHistoryRow as k, type EmailHistoryStatus as l, type HttpResponse as m, type KvStore as n, LIST_PAGE_SIZE_DEFAULT as o, LIST_PAGE_SIZE_MAX as p, LIST_PAGINATION_PARAMS as q, type ListFilterOf as r, type ListOp as s, type ListQuery as t, type MaintenanceLockInput as u, type MaintenanceRevisionInput as v, type MarketingProjectionsFilter as w, type MessageTree as x, MissingHandlerError as y, type PilotCreatePayload as z };
@@ -4,7 +4,7 @@ import {
4
4
  bindResource,
5
5
  createSaCatalog,
6
6
  defaultKvStore
7
- } from "./chunk-XNFQOQ4E.js";
7
+ } from "./chunk-RDLOR3OP.js";
8
8
 
9
9
  // src/vue/super-admin-context.ts
10
10
  var SUPER_ADMIN_BRAND_KEY = /* @__PURE__ */ Symbol.for(