@saasicat/core 1.0.0-rc.21 → 1.0.0-rc.23
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/.build-stamp +1 -1
- package/dist/index.cjs +291 -16
- package/dist/index.d.cts +563 -6
- package/dist/index.d.ts +563 -6
- package/dist/index.js +275 -16
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -643,12 +643,19 @@ interface PaymentGateway {
|
|
|
643
643
|
/**
|
|
644
644
|
* Opens the gateway's form for a payment method. Nothing is confirmed until
|
|
645
645
|
* the gateway says so through `readCallback`.
|
|
646
|
+
*
|
|
647
|
+
* A failure is thrown as the provider reported it: the platform answers the
|
|
648
|
+
* person with `PAYMENT_GATEWAY_FAILED` and keeps what the error carries —
|
|
649
|
+
* its kind, code, status and request id — in the server log.
|
|
646
650
|
*/
|
|
647
651
|
startPaymentMethodSetup(input: StartPaymentMethodSetupInput): Promise<PaymentMethodSetupSession>;
|
|
648
652
|
/**
|
|
649
653
|
* Verifies a callback with the account's secret and translates it.
|
|
650
654
|
* Throws `PaymentCallbackRejectedError` for anything the gateway did not
|
|
651
|
-
* send, before a single field of it is trusted.
|
|
655
|
+
* send, before a single field of it is trusted. Any other failure is
|
|
656
|
+
* answered with `PAYMENT_GATEWAY_FAILED` and 502, like one of
|
|
657
|
+
* `startPaymentMethodSetup` — to the gateway's webhook, or to the person
|
|
658
|
+
* an `immediateCallback` is read for.
|
|
652
659
|
*/
|
|
653
660
|
readCallback(callback: PaymentGatewayCallback): Promise<PaymentGatewayEvent>;
|
|
654
661
|
}
|
|
@@ -1103,7 +1110,7 @@ interface SubscriptionBundleRecord {
|
|
|
1103
1110
|
* or on one whose plan has no period; readers fall back to the plan's
|
|
1104
1111
|
* cycle, which is what every booking used before.
|
|
1105
1112
|
*/
|
|
1106
|
-
billingCycle:
|
|
1113
|
+
billingCycle: BillingCycle | null;
|
|
1107
1114
|
currentPeriodStart: Date | null;
|
|
1108
1115
|
currentPeriodEnd: Date | null;
|
|
1109
1116
|
createdAt: Date;
|
|
@@ -1137,7 +1144,7 @@ interface CreateSubscriptionBundleData {
|
|
|
1137
1144
|
/** Null unless a commitment was configured or asked for. */
|
|
1138
1145
|
minimumTermEndsAt?: Date | null;
|
|
1139
1146
|
/** The rhythm and window worked out above this port. */
|
|
1140
|
-
billingCycle?:
|
|
1147
|
+
billingCycle?: BillingCycle | null;
|
|
1141
1148
|
currentPeriodStart?: Date | null;
|
|
1142
1149
|
currentPeriodEnd?: Date | null;
|
|
1143
1150
|
}
|
|
@@ -1507,7 +1514,7 @@ interface AdminManifest {
|
|
|
1507
1514
|
actions?: AuditActionDef[];
|
|
1508
1515
|
};
|
|
1509
1516
|
}
|
|
1510
|
-
type StandardPageKey = 'dashboard' | 'tenants' | 'subscriptions' | 'promoCodes' | 'plans' | 'audit' | 'users' | 'pilots' | 'discovery' | 'bundles' | 'marketingCatalog' | 'platformEmail' | 'platformEmailHistory' | 'settings';
|
|
1517
|
+
type StandardPageKey = 'dashboard' | 'tenants' | 'subscriptions' | 'promoCodes' | 'plans' | 'audit' | 'users' | 'pilots' | 'discovery' | 'bundles' | 'marketingCatalog' | 'platformEmail' | 'platformEmailHistory' | 'settings' | 'maintenance';
|
|
1511
1518
|
interface StandardPageDef {
|
|
1512
1519
|
enabled: boolean;
|
|
1513
1520
|
requiredCapability?: CapabilityKey;
|
|
@@ -2206,6 +2213,16 @@ interface EffectiveLimitsSnapshot {
|
|
|
2206
2213
|
plan: string;
|
|
2207
2214
|
quotas: Record<string, number>;
|
|
2208
2215
|
features: string[];
|
|
2216
|
+
/**
|
|
2217
|
+
* The add-ons a contract left out of these entitlements because their
|
|
2218
|
+
* cancellation was already declared when it was written. Each is granted by
|
|
2219
|
+
* its booking until its effective date, and by this snapshot never.
|
|
2220
|
+
*
|
|
2221
|
+
* Absent where nothing was left out — and on a snapshot written by an
|
|
2222
|
+
* application, or before the platform left anything out, which then counts
|
|
2223
|
+
* every add-on it names as its own.
|
|
2224
|
+
*/
|
|
2225
|
+
leftOutBundleVersionIds?: string[];
|
|
2209
2226
|
}
|
|
2210
2227
|
|
|
2211
2228
|
interface FeatureUiMeta {
|
|
@@ -2426,6 +2443,177 @@ interface SettingsDifference {
|
|
|
2426
2443
|
after: unknown;
|
|
2427
2444
|
}
|
|
2428
2445
|
|
|
2446
|
+
/** One window, as a store reads it back. */
|
|
2447
|
+
interface MaintenanceWindowRecord {
|
|
2448
|
+
id: string;
|
|
2449
|
+
/** The announced start; null for a window locked without being announced first. */
|
|
2450
|
+
startsAt: Date | null;
|
|
2451
|
+
/** The announced, expected end; null where nobody said. */
|
|
2452
|
+
endsAt: Date | null;
|
|
2453
|
+
/** The operator's words to the tenants, shown as written; null for none. */
|
|
2454
|
+
message: string | null;
|
|
2455
|
+
/** When the window was recorded — announced, or locked at once. */
|
|
2456
|
+
createdAt: Date;
|
|
2457
|
+
/** Who recorded it, as the audit log tags an actor. */
|
|
2458
|
+
createdBy: string;
|
|
2459
|
+
/** When the lock began; null while the window is only announced. */
|
|
2460
|
+
lockedAt: Date | null;
|
|
2461
|
+
lockedBy: string | null;
|
|
2462
|
+
/** When the window was over — unlocked, or cancelled before it locked. */
|
|
2463
|
+
endedAt: Date | null;
|
|
2464
|
+
endedBy: string | null;
|
|
2465
|
+
}
|
|
2466
|
+
/** A window to record: it is open, so it has not ended. */
|
|
2467
|
+
type NewMaintenanceWindow = Omit<MaintenanceWindowRecord, 'id' | 'endedAt' | 'endedBy'>;
|
|
2468
|
+
/**
|
|
2469
|
+
* Where an open window stands. A write names the stage it expects, so that it
|
|
2470
|
+
* cannot move a window that moved on in the meantime — one that another
|
|
2471
|
+
* operator locked, unlocked or cancelled a moment earlier.
|
|
2472
|
+
*/
|
|
2473
|
+
type MaintenanceWindowStage = 'announced' | 'locked';
|
|
2474
|
+
/** What a write may change about an open window. */
|
|
2475
|
+
type MaintenanceWindowChanges = Partial<Pick<MaintenanceWindowRecord, 'startsAt' | 'endsAt' | 'message' | 'lockedAt' | 'lockedBy' | 'endedAt' | 'endedBy'>>;
|
|
2476
|
+
/**
|
|
2477
|
+
* What became of a window, read off its record. `cancelled` is a window that
|
|
2478
|
+
* ended without ever locking anybody out.
|
|
2479
|
+
*/
|
|
2480
|
+
type MaintenanceWindowStatus = 'announced' | 'locked' | 'ended' | 'cancelled';
|
|
2481
|
+
/**
|
|
2482
|
+
* What SaaSiCat tells the application about a window, so that it can write to
|
|
2483
|
+
* its own users — in its own words, from its own sender, in their language.
|
|
2484
|
+
* The lock itself is not among them: tenants see it in the application.
|
|
2485
|
+
*/
|
|
2486
|
+
type MaintenanceWindowEvent = {
|
|
2487
|
+
kind: 'announced';
|
|
2488
|
+
window: MaintenanceWindowRecord;
|
|
2489
|
+
} | {
|
|
2490
|
+
kind: 'rescheduled';
|
|
2491
|
+
window: MaintenanceWindowRecord;
|
|
2492
|
+
/** The window as it was announced before this change. */
|
|
2493
|
+
previous: MaintenanceWindowRecord;
|
|
2494
|
+
} | {
|
|
2495
|
+
kind: 'cancelled';
|
|
2496
|
+
window: MaintenanceWindowRecord;
|
|
2497
|
+
};
|
|
2498
|
+
/** The longest message a window carries; the operator's words, not a document. */
|
|
2499
|
+
declare const MAINTENANCE_MESSAGE_MAX_LENGTH = 500;
|
|
2500
|
+
/**
|
|
2501
|
+
* How long a process may go on reading a lock state it read before. Every
|
|
2502
|
+
* request asks, so each process keeps the answer this long rather than asking
|
|
2503
|
+
* the database per request; the command that locks waits this long before it
|
|
2504
|
+
* returns, so that every process has seen the lock by then.
|
|
2505
|
+
*
|
|
2506
|
+
* Part of the contract between two versions of an application: the command
|
|
2507
|
+
* that locks comes from the release being deployed, while the processes it
|
|
2508
|
+
* waits for may still run the one before. It is safe only while the figure it
|
|
2509
|
+
* waits by is at least theirs, so a later release may raise it and never lower
|
|
2510
|
+
* it.
|
|
2511
|
+
*/
|
|
2512
|
+
declare const MAINTENANCE_STATE_MAX_AGE_SECONDS = 5;
|
|
2513
|
+
/**
|
|
2514
|
+
* The manifest capability that announces the maintenance screen. The platform
|
|
2515
|
+
* sets it where it keeps maintenance windows, and the administration offers the
|
|
2516
|
+
* screen — and its lock banner — only where it is set.
|
|
2517
|
+
*/
|
|
2518
|
+
declare const MAINTENANCE_CAPABILITY = "maintenance.manage";
|
|
2519
|
+
/**
|
|
2520
|
+
* What a tenant's page is told: nothing, a window ahead, or a lock. Dates are
|
|
2521
|
+
* ISO strings, and `overrun` is the server's answer rather than the browser's,
|
|
2522
|
+
* whose clock is not the one the window was announced by.
|
|
2523
|
+
*/
|
|
2524
|
+
type MaintenanceStatusView = {
|
|
2525
|
+
state: 'none';
|
|
2526
|
+
} | {
|
|
2527
|
+
state: 'announced';
|
|
2528
|
+
startsAt: string;
|
|
2529
|
+
endsAt: string;
|
|
2530
|
+
message: string | null;
|
|
2531
|
+
} | {
|
|
2532
|
+
state: 'locked';
|
|
2533
|
+
lockedAt: string;
|
|
2534
|
+
/** The announced end; null where nobody said. */
|
|
2535
|
+
endsAt: string | null;
|
|
2536
|
+
message: string | null;
|
|
2537
|
+
/** The announced end has passed, and the lock still holds. */
|
|
2538
|
+
overrun: boolean;
|
|
2539
|
+
};
|
|
2540
|
+
/** A window as the administration shows it. */
|
|
2541
|
+
interface MaintenanceWindowView {
|
|
2542
|
+
id: string;
|
|
2543
|
+
status: MaintenanceWindowStatus;
|
|
2544
|
+
startsAt: string | null;
|
|
2545
|
+
endsAt: string | null;
|
|
2546
|
+
message: string | null;
|
|
2547
|
+
createdAt: string;
|
|
2548
|
+
createdBy: string;
|
|
2549
|
+
lockedAt: string | null;
|
|
2550
|
+
lockedBy: string | null;
|
|
2551
|
+
endedAt: string | null;
|
|
2552
|
+
endedBy: string | null;
|
|
2553
|
+
/** Locked, and past its announced end. */
|
|
2554
|
+
overrun: boolean;
|
|
2555
|
+
/** Announced, never locked, and past its announced end: tenants no longer see it. */
|
|
2556
|
+
lapsed: boolean;
|
|
2557
|
+
}
|
|
2558
|
+
/** `GET /admin/maintenance`: the open window, if any, and the ones before it. */
|
|
2559
|
+
interface MaintenanceOverview {
|
|
2560
|
+
open: MaintenanceWindowView | null;
|
|
2561
|
+
/** Newest first, the open one included. */
|
|
2562
|
+
recent: MaintenanceWindowView[];
|
|
2563
|
+
/** How long a lock takes to reach every process. */
|
|
2564
|
+
takesEffectWithinSeconds: number;
|
|
2565
|
+
}
|
|
2566
|
+
/** `POST /admin/maintenance/lock`: the locked window, and whether it was locked before. */
|
|
2567
|
+
interface MaintenanceLockView {
|
|
2568
|
+
window: MaintenanceWindowView;
|
|
2569
|
+
/** The lock already held; nothing was changed. */
|
|
2570
|
+
alreadyLocked: boolean;
|
|
2571
|
+
/** How long the lock takes to reach every process. */
|
|
2572
|
+
takesEffectWithinSeconds: number;
|
|
2573
|
+
}
|
|
2574
|
+
/** `POST /admin/maintenance/unlock`: the window it ended, or the open one it left alone. */
|
|
2575
|
+
interface MaintenanceUnlockView {
|
|
2576
|
+
window: MaintenanceWindowView | null;
|
|
2577
|
+
/** Whether a lock held and was ended by this call. */
|
|
2578
|
+
wasLocked: boolean;
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
/** A `maintenance_windows` row as either adapter reads it back. */
|
|
2582
|
+
type CanonicalMaintenanceWindowRow = MaintenanceWindowRecord;
|
|
2583
|
+
/**
|
|
2584
|
+
* Reads a row back as a record, naming each column rather than spreading the
|
|
2585
|
+
* row: a column a later release adds is not handed to the platform by accident,
|
|
2586
|
+
* and a version reading the table a later release extended reads what it knows.
|
|
2587
|
+
*/
|
|
2588
|
+
declare function toMaintenanceWindowRecord(row: CanonicalMaintenanceWindowRow): MaintenanceWindowRecord;
|
|
2589
|
+
|
|
2590
|
+
/** What became of a window. */
|
|
2591
|
+
declare function maintenanceWindowStatusOf(window: MaintenanceWindowRecord): MaintenanceWindowStatus;
|
|
2592
|
+
/** Whether the lock still holds after the end it announced. */
|
|
2593
|
+
declare function isMaintenanceOverrun(window: MaintenanceWindowRecord, now: Date): boolean;
|
|
2594
|
+
/**
|
|
2595
|
+
* Whether an announcement has lapsed: never locked, and its announced end has
|
|
2596
|
+
* passed. Tenants are no longer shown it — past information is noise — while
|
|
2597
|
+
* the operator is, because it still stands in the way of the next one.
|
|
2598
|
+
*/
|
|
2599
|
+
declare function isMaintenanceAnnouncementLapsed(window: MaintenanceWindowRecord, now: Date): boolean;
|
|
2600
|
+
/** What a tenant's page is told, given the open window — or none. */
|
|
2601
|
+
declare function maintenanceStatusOf(open: MaintenanceWindowRecord | null, now: Date): MaintenanceStatusView;
|
|
2602
|
+
/** A window as the administration shows it. */
|
|
2603
|
+
declare function maintenanceWindowViewOf(window: MaintenanceWindowRecord, now: Date): MaintenanceWindowView;
|
|
2604
|
+
/**
|
|
2605
|
+
* Seconds until the announced end, for the `Retry-After` of a refused request.
|
|
2606
|
+
* Never less than one: a client told zero would retry at once, in a loop.
|
|
2607
|
+
*/
|
|
2608
|
+
declare function maintenanceRetryAfterSeconds(window: MaintenanceWindowRecord, now: Date): number;
|
|
2609
|
+
|
|
2610
|
+
/**
|
|
2611
|
+
* The moment an ISO 8601 date and time names, provided it states its zone —
|
|
2612
|
+
* `2026-10-02T22:00+02:00` or `2026-10-02T20:00Z`. Null for anything else: a
|
|
2613
|
+
* date without a time, a time without a zone, or text that is not a date.
|
|
2614
|
+
*/
|
|
2615
|
+
declare function parseZonedInstant(text: string): Date | null;
|
|
2616
|
+
|
|
2429
2617
|
/**
|
|
2430
2618
|
* The top-level blocks of `config/saas.yaml` that are the catalogue rather than
|
|
2431
2619
|
* the configuration, and the format marker.
|
|
@@ -3339,6 +3527,13 @@ interface CreateSubscriptionContractData {
|
|
|
3339
3527
|
/** What a repository writes: the contract as asked for, with the parties the platform copied. */
|
|
3340
3528
|
interface NewSubscriptionContractData extends CreateSubscriptionContractData {
|
|
3341
3529
|
parties: SubscriptionContractParties;
|
|
3530
|
+
/**
|
|
3531
|
+
* The parties are a copy the migration made rather than what was agreed —
|
|
3532
|
+
* set where a successor takes them over from a contract that says so, so
|
|
3533
|
+
* that the copy is not passed off as agreed one contract later. Absent
|
|
3534
|
+
* means `false`.
|
|
3535
|
+
*/
|
|
3536
|
+
partiesMigrated?: boolean;
|
|
3342
3537
|
}
|
|
3343
3538
|
interface TerminateSubscriptionContractData {
|
|
3344
3539
|
effectiveUntil: Date;
|
|
@@ -3357,6 +3552,19 @@ interface TerminateSubscriptionContractData {
|
|
|
3357
3552
|
*/
|
|
3358
3553
|
status: Extract<SubscriptionContractStatus, 'terminated' | 'superseded'> | null;
|
|
3359
3554
|
}
|
|
3555
|
+
/**
|
|
3556
|
+
* Ends a contract because a successor takes its place — on the condition that
|
|
3557
|
+
* it is still as the caller read it.
|
|
3558
|
+
*/
|
|
3559
|
+
interface SupersedeSubscriptionContractData {
|
|
3560
|
+
/** When the successor takes over; written as the contract's `effectiveUntil`. */
|
|
3561
|
+
at: Date;
|
|
3562
|
+
/**
|
|
3563
|
+
* The `effectiveUntil` the caller read. A contract whose end moved since —
|
|
3564
|
+
* a cancellation capped it, or ended it — is not superseded.
|
|
3565
|
+
*/
|
|
3566
|
+
readEffectiveUntil: Date | null;
|
|
3567
|
+
}
|
|
3360
3568
|
interface SubscriptionContractFilter {
|
|
3361
3569
|
tenantId?: string;
|
|
3362
3570
|
status?: SubscriptionContractStatus;
|
|
@@ -3511,6 +3719,128 @@ interface SubscriberCorrectionResult {
|
|
|
3511
3719
|
correction: SubscriberCorrectionRecord | null;
|
|
3512
3720
|
}
|
|
3513
3721
|
|
|
3722
|
+
/**
|
|
3723
|
+
* What made the charge arise. activation: the first period of a subscription. renewal: a later period. planChange: what an immediate plan change adds. bundleBooking: the first, short period of an add-on. credit: a decision that reduces what is owed. correction: a counter-entry reversing an earlier charge, which is how the append-only journal answers a mistake.
|
|
3724
|
+
*/
|
|
3725
|
+
type SubscriberChargeOrigin = 'activation' | 'renewal' | 'planChange' | 'bundleBooking' | 'credit' | 'correction';
|
|
3726
|
+
/**
|
|
3727
|
+
* Which kind of contract line the charge realises.
|
|
3728
|
+
*/
|
|
3729
|
+
type SubscriberChargeSource = 'plan' | 'bundle' | 'discount';
|
|
3730
|
+
/**
|
|
3731
|
+
* One charge in a subscriber's account: an amount that became due for a period, derived from a line of the contract in force. The journal is append-only — a charge is never updated, and a mistake is answered with a counter-entry rather than an edit, so the account says what happened rather than what somebody thinks today. A charge is net: the tax is decided by the tax adapter when the charge is invoiced, from the subscriber's origin on that day, and computed once per rate on the invoice.
|
|
3732
|
+
*/
|
|
3733
|
+
interface SubscriberCharge {
|
|
3734
|
+
/**
|
|
3735
|
+
* The charge's own identifier. Never shown to a customer as an invoice number: invoice numbering is sequential, gapless and legally constrained per country, and an identifier somebody has already seen on a screen cannot become one later without confusion.
|
|
3736
|
+
*/
|
|
3737
|
+
id: string;
|
|
3738
|
+
/**
|
|
3739
|
+
* The party the contract is concluded with, whose account this is. It outlives the tenant.
|
|
3740
|
+
*/
|
|
3741
|
+
subscriberId: string;
|
|
3742
|
+
/**
|
|
3743
|
+
* The tenant the subscription belonged to when the charge arose.
|
|
3744
|
+
*/
|
|
3745
|
+
tenantId: string;
|
|
3746
|
+
/**
|
|
3747
|
+
* The subscription the charge arose on. Part of the natural key.
|
|
3748
|
+
*/
|
|
3749
|
+
subscriptionId: string;
|
|
3750
|
+
/**
|
|
3751
|
+
* The contract whose line the charge realises.
|
|
3752
|
+
*/
|
|
3753
|
+
contractId: string;
|
|
3754
|
+
/**
|
|
3755
|
+
* The contract line the charge came from, so that every invoice line can be traced back to what was agreed.
|
|
3756
|
+
*/
|
|
3757
|
+
contractLineItemId: string;
|
|
3758
|
+
origin: SubscriberChargeOrigin;
|
|
3759
|
+
source: SubscriberChargeSource;
|
|
3760
|
+
/**
|
|
3761
|
+
* Which thing of its source the charge is for, stable across contracts: the subscription id for the plan, the booking id for an add-on, the discount's key for a discount. Part of the natural key (subscriptionId, source, sourceRef, periodStart, origin), which is unique — a charge derived twice is written once.
|
|
3762
|
+
*/
|
|
3763
|
+
sourceRef: string;
|
|
3764
|
+
/**
|
|
3765
|
+
* The start of the period the charge belongs to — the grouping key for an invoice.
|
|
3766
|
+
*/
|
|
3767
|
+
periodStart: string;
|
|
3768
|
+
periodEnd: string;
|
|
3769
|
+
/**
|
|
3770
|
+
* ISO 4217, as the contract line records it — recorded per charge so that a charge written in 2026 still means what it meant after the configured currency changes.
|
|
3771
|
+
*/
|
|
3772
|
+
currency: string;
|
|
3773
|
+
/**
|
|
3774
|
+
* Net, rounded to the currency's decimal places once, when the charge is written; the written figure is the truth from then on. Negative for a discount.
|
|
3775
|
+
*/
|
|
3776
|
+
amountNet: number;
|
|
3777
|
+
/**
|
|
3778
|
+
* When the amount became due. The account is ordered by this, not by when the row was written.
|
|
3779
|
+
*/
|
|
3780
|
+
bookedAt: string;
|
|
3781
|
+
createdAt: string;
|
|
3782
|
+
}
|
|
3783
|
+
|
|
3784
|
+
/** A charge as a store reads it back: the wire format, with its dates as dates. */
|
|
3785
|
+
interface SubscriberChargeRecord {
|
|
3786
|
+
id: string;
|
|
3787
|
+
subscriberId: string;
|
|
3788
|
+
tenantId: string;
|
|
3789
|
+
subscriptionId: string;
|
|
3790
|
+
contractId: string;
|
|
3791
|
+
contractLineItemId: string;
|
|
3792
|
+
origin: SubscriberChargeOrigin;
|
|
3793
|
+
source: SubscriberChargeSource;
|
|
3794
|
+
/** The subscription id for the plan, the booking id for an add-on, the discount's key. */
|
|
3795
|
+
sourceRef: string;
|
|
3796
|
+
periodStart: Date;
|
|
3797
|
+
periodEnd: Date;
|
|
3798
|
+
currency: string;
|
|
3799
|
+
/** Net, rounded to the cent when written. Negative for a discount. */
|
|
3800
|
+
amountNet: number;
|
|
3801
|
+
/** When the amount became due. */
|
|
3802
|
+
bookedAt: Date;
|
|
3803
|
+
createdAt: Date;
|
|
3804
|
+
}
|
|
3805
|
+
/** A charge to write: everything but what the store assigns. */
|
|
3806
|
+
type NewSubscriberCharge = Omit<SubscriberChargeRecord, 'id' | 'createdAt'>;
|
|
3807
|
+
/**
|
|
3808
|
+
* The manifest capability that announces the operator's view of an account.
|
|
3809
|
+
* The platform sets it where it serves the view, and the admin UI shows the
|
|
3810
|
+
* view only where it is set.
|
|
3811
|
+
*/
|
|
3812
|
+
declare const SUBSCRIBER_ACCOUNT_CAPABILITY = "charges.read";
|
|
3813
|
+
/** Whose account it is, as the operator is shown it. */
|
|
3814
|
+
interface AdminAccountHolder {
|
|
3815
|
+
id: string;
|
|
3816
|
+
/** What the customer quotes, and what an invoice will carry. */
|
|
3817
|
+
customerNumber: string;
|
|
3818
|
+
legalName: string;
|
|
3819
|
+
}
|
|
3820
|
+
/** One charge of an account, with the name its contract line gives it. */
|
|
3821
|
+
interface AdminAccountEntry {
|
|
3822
|
+
/** The charge as the journal holds it. */
|
|
3823
|
+
charge: SubscriberCharge;
|
|
3824
|
+
/**
|
|
3825
|
+
* The contract line's own title, as it was when the contract was
|
|
3826
|
+
* concluded, or `null` where that line cannot be read.
|
|
3827
|
+
*/
|
|
3828
|
+
title: string | null;
|
|
3829
|
+
}
|
|
3830
|
+
/**
|
|
3831
|
+
* A tenant's account as the operator reads it: the charges of the subscription
|
|
3832
|
+
* it holds, newest first — by when each became due, then by its period, then
|
|
3833
|
+
* the plan before its add-ons before its discounts.
|
|
3834
|
+
*
|
|
3835
|
+
* No total: without invoices and payments, a sum would be what was charged so
|
|
3836
|
+
* far, and it would be read as what is owed.
|
|
3837
|
+
*/
|
|
3838
|
+
interface AdminSubscriberAccount {
|
|
3839
|
+
/** `null` for a tenant that has no subscriber. */
|
|
3840
|
+
holder: AdminAccountHolder | null;
|
|
3841
|
+
entries: AdminAccountEntry[];
|
|
3842
|
+
}
|
|
3843
|
+
|
|
3514
3844
|
/**
|
|
3515
3845
|
* Snapshot form of a `Subscription` row for the EntitlementService
|
|
3516
3846
|
* computation. The consumer maps its Prisma structure onto this form.
|
|
@@ -3687,6 +4017,22 @@ interface SubscriptionContractRepository {
|
|
|
3687
4017
|
*/
|
|
3688
4018
|
findByOriginalOfferId(offerId: string, tx?: TransactionContext): Promise<SubscriptionContractRecord | null>;
|
|
3689
4019
|
terminate(contractId: string, data: TerminateSubscriptionContractData): Promise<SubscriptionContractRecord>;
|
|
4020
|
+
/**
|
|
4021
|
+
* Ends a contract at `data.at` with the status `superseded`, where it is
|
|
4022
|
+
* still as the caller read it: `active` or `scheduled`, and ending when it
|
|
4023
|
+
* ended then. `null`, with nothing written, where it has moved since —
|
|
4024
|
+
* another successor took its place, or a cancellation capped or ended it.
|
|
4025
|
+
*
|
|
4026
|
+
* The condition belongs to the write rather than to a read before it. Two
|
|
4027
|
+
* callers superseding one contract at once — a plan change and an
|
|
4028
|
+
* operator's refresh, say — then end with one successor: the second write
|
|
4029
|
+
* finds the status the first one left and changes nothing, where a read
|
|
4030
|
+
* followed by a plain update would give the tenant two contracts in force.
|
|
4031
|
+
*
|
|
4032
|
+
* With `tx`, written on that transaction and undone with it, so that the
|
|
4033
|
+
* successor written beside it lands with it or not at all.
|
|
4034
|
+
*/
|
|
4035
|
+
supersede(contractId: string, data: SupersedeSubscriptionContractData, tx?: TransactionContext): Promise<SubscriptionContractRecord | null>;
|
|
3690
4036
|
/**
|
|
3691
4037
|
* The contracts concluded and not yet over, with the issuer each was
|
|
3692
4038
|
* concluded under: how many there are, and the first `limit` of them,
|
|
@@ -3758,6 +4104,27 @@ interface SubscriberRepository {
|
|
|
3758
4104
|
/** Every correction of this subscriber, the latest first. */
|
|
3759
4105
|
listCorrections(subscriberId: string): Promise<SubscriberCorrectionRecord[]>;
|
|
3760
4106
|
}
|
|
4107
|
+
/**
|
|
4108
|
+
* The subscriber's account: the charges that became due, one per contract line
|
|
4109
|
+
* and period. Append-only — nothing here updates or deletes a charge, and a
|
|
4110
|
+
* mistake is answered with a counter-entry (`SC-PRIC-020`).
|
|
4111
|
+
*
|
|
4112
|
+
* Owned by the subscriber rather than the tenant, so that it outlives the
|
|
4113
|
+
* tenant it arose for (ADR 0012).
|
|
4114
|
+
*/
|
|
4115
|
+
interface SubscriberLedgerRepository {
|
|
4116
|
+
/**
|
|
4117
|
+
* Writes the charges that are not there yet and returns them.
|
|
4118
|
+
*
|
|
4119
|
+
* A charge whose natural key — subscription, source, source reference,
|
|
4120
|
+
* period start and origin — is already written is left as it is and not
|
|
4121
|
+
* returned, however often it is derived and whoever derives it at the same
|
|
4122
|
+
* time: the unique index decides, not a read before the write.
|
|
4123
|
+
*/
|
|
4124
|
+
recordCharges(charges: readonly NewSubscriberCharge[], tx?: TransactionContext): Promise<SubscriberChargeRecord[]>;
|
|
4125
|
+
/** Every charge of one subscription, oldest period first. */
|
|
4126
|
+
listBySubscription(subscriptionId: string, tx?: TransactionContext): Promise<SubscriberChargeRecord[]>;
|
|
4127
|
+
}
|
|
3761
4128
|
/**
|
|
3762
4129
|
* Display form of a subscription for the tenant self-service UI.
|
|
3763
4130
|
* Richer than `SubscriptionRecord` (which is only the aggregation form); contains
|
|
@@ -5014,6 +5381,49 @@ interface AppliedSettingsPort {
|
|
|
5014
5381
|
acknowledgeChange(id: string, acknowledgedBy: string, acknowledgedAt: Date): Promise<SettingsChangeRecord | null>;
|
|
5015
5382
|
}
|
|
5016
5383
|
|
|
5384
|
+
/**
|
|
5385
|
+
* Keeps the maintenance windows, in the application's own database.
|
|
5386
|
+
*
|
|
5387
|
+
* Every running version of the application reads this table while the lock
|
|
5388
|
+
* holds — the one being replaced as well as the one replacing it — so its shape
|
|
5389
|
+
* is part of the contract between two releases: it gains columns, and never in
|
|
5390
|
+
* a deploy the lock protects.
|
|
5391
|
+
*
|
|
5392
|
+
* An adapter translates. It does not decide whether a window may be locked or
|
|
5393
|
+
* moved; it makes each write conditional on what the caller read, so that two
|
|
5394
|
+
* operators acting at once cannot both succeed.
|
|
5395
|
+
*/
|
|
5396
|
+
interface MaintenanceWindowPort {
|
|
5397
|
+
/** The open window — announced or locked, not yet over — or null. There is at most one. */
|
|
5398
|
+
findOpen(): Promise<MaintenanceWindowRecord | null>;
|
|
5399
|
+
/** The most recently recorded windows first, open or over; at most `limit` of them. */
|
|
5400
|
+
listRecent(limit: number): Promise<MaintenanceWindowRecord[]>;
|
|
5401
|
+
/**
|
|
5402
|
+
* Records a new open window and returns it as stored — the id is the
|
|
5403
|
+
* adapter's to assign. Returns null where a window is already open: the
|
|
5404
|
+
* database holds an installation to one, so of two concurrent calls exactly
|
|
5405
|
+
* one lands.
|
|
5406
|
+
*/
|
|
5407
|
+
open(window: NewMaintenanceWindow): Promise<MaintenanceWindowRecord | null>;
|
|
5408
|
+
/**
|
|
5409
|
+
* Applies `changes` to window `id`, provided it is still open and at
|
|
5410
|
+
* `stage`. Returns the window as stored, or null where it is not: it ended,
|
|
5411
|
+
* it was locked in the meantime, or no window has that id.
|
|
5412
|
+
*/
|
|
5413
|
+
update(id: string, stage: MaintenanceWindowStage, changes: MaintenanceWindowChanges): Promise<MaintenanceWindowRecord | null>;
|
|
5414
|
+
}
|
|
5415
|
+
/**
|
|
5416
|
+
* Hears when a window is announced, moved or cancelled, so the application can
|
|
5417
|
+
* write to its users. Optional: without it tenants learn of a window from the
|
|
5418
|
+
* banner alone.
|
|
5419
|
+
*
|
|
5420
|
+
* Called after the change is recorded, and never waited on by the operator: a
|
|
5421
|
+
* notification that fails is logged, and the window stands as recorded.
|
|
5422
|
+
*/
|
|
5423
|
+
interface MaintenanceNotificationPort {
|
|
5424
|
+
windowChanged(event: MaintenanceWindowEvent): Promise<void>;
|
|
5425
|
+
}
|
|
5426
|
+
|
|
5017
5427
|
/** Class reference usable as a DI token (e.g. the consumer's `PrismaService`). */
|
|
5018
5428
|
type PersistenceClassRef = abstract new (...args: never[]) => unknown;
|
|
5019
5429
|
/** DI token forms a persistence bundle may reference in `inject`. */
|
|
@@ -5077,6 +5487,13 @@ interface SaaSiCatPersistenceCore {
|
|
|
5077
5487
|
* platform says once at boot that it is not recording.
|
|
5078
5488
|
*/
|
|
5079
5489
|
appliedSettings?: PersistenceProvider<AppliedSettingsPort>;
|
|
5490
|
+
/**
|
|
5491
|
+
* Where maintenance windows are kept (`maintenance` in
|
|
5492
|
+
* `SaaSiCatModule.forRoot`). Optional so an adapter written before it
|
|
5493
|
+
* existed keeps working; an installation that turns maintenance on without
|
|
5494
|
+
* one is refused at start-up.
|
|
5495
|
+
*/
|
|
5496
|
+
maintenanceWindows?: PersistenceProvider<MaintenanceWindowPort>;
|
|
5080
5497
|
}
|
|
5081
5498
|
/** Repositories for the entitlement/contract loop (`EntitlementModule`). */
|
|
5082
5499
|
interface SaaSiCatPersistenceEntitlement {
|
|
@@ -5085,6 +5502,8 @@ interface SaaSiCatPersistenceEntitlement {
|
|
|
5085
5502
|
subscriptionContractRepository?: PersistenceProvider<SubscriptionContractRepository>;
|
|
5086
5503
|
/** The parties contracts are concluded with; required wherever contracts are written. */
|
|
5087
5504
|
subscriberRepository?: PersistenceProvider<SubscriberRepository>;
|
|
5505
|
+
/** The charges a subscriber's contracts give rise to (`tenantBilling.chargeJournal`). */
|
|
5506
|
+
subscriberLedgerRepository?: PersistenceProvider<SubscriberLedgerRepository>;
|
|
5088
5507
|
subscriptionBundleRepository?: PersistenceProvider<SubscriptionBundleRepository>;
|
|
5089
5508
|
bundleRepository?: PersistenceProvider<BundleRepository>;
|
|
5090
5509
|
}
|
|
@@ -5422,6 +5841,14 @@ declare const CONTRACT_ERROR_CODES: {
|
|
|
5422
5841
|
readonly SUBSCRIPTION_CONTRACT_NOT_FOUND: "SUBSCRIPTION_CONTRACT_NOT_FOUND";
|
|
5423
5842
|
readonly NO_ACTIVE_SUBSCRIPTION_CONTRACT: "NO_ACTIVE_SUBSCRIPTION_CONTRACT";
|
|
5424
5843
|
readonly SUBSCRIPTION_CONTRACT_ALREADY_CLOSED: "SUBSCRIPTION_CONTRACT_ALREADY_CLOSED";
|
|
5844
|
+
/**
|
|
5845
|
+
* A successor would run beside another contract of the tenant: the
|
|
5846
|
+
* contract in force moved while it was being written — another successor
|
|
5847
|
+
* took its place, or a cancellation capped it — and kept moving on a
|
|
5848
|
+
* second attempt, or a contract begins after the moment the successor
|
|
5849
|
+
* would take effect. Nothing was written.
|
|
5850
|
+
*/
|
|
5851
|
+
readonly SUBSCRIPTION_CONTRACT_CHANGED: "SUBSCRIPTION_CONTRACT_CHANGED";
|
|
5425
5852
|
};
|
|
5426
5853
|
type ContractErrorCode = (typeof CONTRACT_ERROR_CODES)[keyof typeof CONTRACT_ERROR_CODES];
|
|
5427
5854
|
/** The parties contracts are concluded with (`SubscriberService`), and their absence. */
|
|
@@ -5530,6 +5957,13 @@ declare const PAYMENT_ERROR_CODES: {
|
|
|
5530
5957
|
* does not name. Carries `field`.
|
|
5531
5958
|
*/
|
|
5532
5959
|
readonly PAYMENT_RETURN_URL_NOT_ALLOWED: "PAYMENT_RETURN_URL_NOT_ALLOWED";
|
|
5960
|
+
/**
|
|
5961
|
+
* The gateway failed — unreachable, refusing the account's keys, or
|
|
5962
|
+
* answering with an error — while opening its form or reading a callback
|
|
5963
|
+
* back. Answered with 502; what the gateway answered stays in the server
|
|
5964
|
+
* log.
|
|
5965
|
+
*/
|
|
5966
|
+
readonly PAYMENT_GATEWAY_FAILED: "PAYMENT_GATEWAY_FAILED";
|
|
5533
5967
|
};
|
|
5534
5968
|
type PaymentErrorCode = (typeof PAYMENT_ERROR_CODES)[keyof typeof PAYMENT_ERROR_CODES];
|
|
5535
5969
|
/** Codes of the settings record (`GET /admin/settings`, the acknowledgement). */
|
|
@@ -5538,6 +5972,26 @@ declare const SETTINGS_ERROR_CODES: {
|
|
|
5538
5972
|
readonly SETTINGS_CHANGE_NOT_FOUND: "SETTINGS_CHANGE_NOT_FOUND";
|
|
5539
5973
|
};
|
|
5540
5974
|
type SettingsErrorCode = (typeof SETTINGS_ERROR_CODES)[keyof typeof SETTINGS_ERROR_CODES];
|
|
5975
|
+
/** Codes of maintenance windows: the lock's refusal, and the operator's routes. */
|
|
5976
|
+
declare const MAINTENANCE_ERROR_CODES: {
|
|
5977
|
+
/** The application is locked for maintenance; the body carries the window. */
|
|
5978
|
+
readonly MAINTENANCE: "MAINTENANCE";
|
|
5979
|
+
/** A window is already open: move or cancel it before announcing another. */
|
|
5980
|
+
readonly MAINTENANCE_WINDOW_ALREADY_OPEN: "MAINTENANCE_WINDOW_ALREADY_OPEN";
|
|
5981
|
+
/** No open window has this id — it ended, or it never existed. */
|
|
5982
|
+
readonly MAINTENANCE_WINDOW_NOT_OPEN: "MAINTENANCE_WINDOW_NOT_OPEN";
|
|
5983
|
+
/** The window is locked: its start is history, and unlocking is what ends it. */
|
|
5984
|
+
readonly MAINTENANCE_WINDOW_LOCKED: "MAINTENANCE_WINDOW_LOCKED";
|
|
5985
|
+
/** The announced end is not after the announced start. */
|
|
5986
|
+
readonly MAINTENANCE_WINDOW_END_NOT_AFTER_START: "MAINTENANCE_WINDOW_END_NOT_AFTER_START";
|
|
5987
|
+
/** The announced end has already passed. */
|
|
5988
|
+
readonly MAINTENANCE_WINDOW_END_IN_PAST: "MAINTENANCE_WINDOW_END_IN_PAST";
|
|
5989
|
+
/** A time without its zone, or not a date and time at all; `field` names which. */
|
|
5990
|
+
readonly MAINTENANCE_TIME_INVALID: "MAINTENANCE_TIME_INVALID";
|
|
5991
|
+
/** The message is longer than `MAINTENANCE_MESSAGE_MAX_LENGTH`. */
|
|
5992
|
+
readonly MAINTENANCE_MESSAGE_TOO_LONG: "MAINTENANCE_MESSAGE_TOO_LONG";
|
|
5993
|
+
};
|
|
5994
|
+
type MaintenanceErrorCode = (typeof MAINTENANCE_ERROR_CODES)[keyof typeof MAINTENANCE_ERROR_CODES];
|
|
5541
5995
|
/**
|
|
5542
5996
|
* Every exception code the platform emits, in one object.
|
|
5543
5997
|
*
|
|
@@ -5546,6 +6000,22 @@ type SettingsErrorCode = (typeof SETTINGS_ERROR_CODES)[keyof typeof SETTINGS_ERR
|
|
|
5546
6000
|
* removing one may not.
|
|
5547
6001
|
*/
|
|
5548
6002
|
declare const PLATFORM_ERROR_CODES: {
|
|
6003
|
+
/** The application is locked for maintenance; the body carries the window. */
|
|
6004
|
+
readonly MAINTENANCE: "MAINTENANCE";
|
|
6005
|
+
/** A window is already open: move or cancel it before announcing another. */
|
|
6006
|
+
readonly MAINTENANCE_WINDOW_ALREADY_OPEN: "MAINTENANCE_WINDOW_ALREADY_OPEN";
|
|
6007
|
+
/** No open window has this id — it ended, or it never existed. */
|
|
6008
|
+
readonly MAINTENANCE_WINDOW_NOT_OPEN: "MAINTENANCE_WINDOW_NOT_OPEN";
|
|
6009
|
+
/** The window is locked: its start is history, and unlocking is what ends it. */
|
|
6010
|
+
readonly MAINTENANCE_WINDOW_LOCKED: "MAINTENANCE_WINDOW_LOCKED";
|
|
6011
|
+
/** The announced end is not after the announced start. */
|
|
6012
|
+
readonly MAINTENANCE_WINDOW_END_NOT_AFTER_START: "MAINTENANCE_WINDOW_END_NOT_AFTER_START";
|
|
6013
|
+
/** The announced end has already passed. */
|
|
6014
|
+
readonly MAINTENANCE_WINDOW_END_IN_PAST: "MAINTENANCE_WINDOW_END_IN_PAST";
|
|
6015
|
+
/** A time without its zone, or not a date and time at all; `field` names which. */
|
|
6016
|
+
readonly MAINTENANCE_TIME_INVALID: "MAINTENANCE_TIME_INVALID";
|
|
6017
|
+
/** The message is longer than `MAINTENANCE_MESSAGE_MAX_LENGTH`. */
|
|
6018
|
+
readonly MAINTENANCE_MESSAGE_TOO_LONG: "MAINTENANCE_MESSAGE_TOO_LONG";
|
|
5549
6019
|
/** No recorded change has this id, or the installation keeps no record at all. */
|
|
5550
6020
|
readonly SETTINGS_CHANGE_NOT_FOUND: "SETTINGS_CHANGE_NOT_FOUND";
|
|
5551
6021
|
/**
|
|
@@ -5562,6 +6032,13 @@ declare const PLATFORM_ERROR_CODES: {
|
|
|
5562
6032
|
* does not name. Carries `field`.
|
|
5563
6033
|
*/
|
|
5564
6034
|
readonly PAYMENT_RETURN_URL_NOT_ALLOWED: "PAYMENT_RETURN_URL_NOT_ALLOWED";
|
|
6035
|
+
/**
|
|
6036
|
+
* The gateway failed — unreachable, refusing the account's keys, or
|
|
6037
|
+
* answering with an error — while opening its form or reading a callback
|
|
6038
|
+
* back. Answered with 502; what the gateway answered stays in the server
|
|
6039
|
+
* log.
|
|
6040
|
+
*/
|
|
6041
|
+
readonly PAYMENT_GATEWAY_FAILED: "PAYMENT_GATEWAY_FAILED";
|
|
5565
6042
|
readonly PENDING_REGISTRATION_NOT_FOUND: "PENDING_REGISTRATION_NOT_FOUND";
|
|
5566
6043
|
readonly PENDING_REGISTRATION_EXPIRED: "PENDING_REGISTRATION_EXPIRED";
|
|
5567
6044
|
readonly INVALID_REGISTRATION_STATE: "INVALID_REGISTRATION_STATE";
|
|
@@ -5636,6 +6113,14 @@ declare const PLATFORM_ERROR_CODES: {
|
|
|
5636
6113
|
readonly SUBSCRIPTION_CONTRACT_NOT_FOUND: "SUBSCRIPTION_CONTRACT_NOT_FOUND";
|
|
5637
6114
|
readonly NO_ACTIVE_SUBSCRIPTION_CONTRACT: "NO_ACTIVE_SUBSCRIPTION_CONTRACT";
|
|
5638
6115
|
readonly SUBSCRIPTION_CONTRACT_ALREADY_CLOSED: "SUBSCRIPTION_CONTRACT_ALREADY_CLOSED";
|
|
6116
|
+
/**
|
|
6117
|
+
* A successor would run beside another contract of the tenant: the
|
|
6118
|
+
* contract in force moved while it was being written — another successor
|
|
6119
|
+
* took its place, or a cancellation capped it — and kept moving on a
|
|
6120
|
+
* second attempt, or a contract begins after the moment the successor
|
|
6121
|
+
* would take effect. Nothing was written.
|
|
6122
|
+
*/
|
|
6123
|
+
readonly SUBSCRIPTION_CONTRACT_CHANGED: "SUBSCRIPTION_CONTRACT_CHANGED";
|
|
5639
6124
|
/**
|
|
5640
6125
|
* Feature not covered by the plan. Defined in `upsell.types.ts` because the
|
|
5641
6126
|
* upsell body type is built around it; re-exported here so an exhaustive
|
|
@@ -5858,7 +6343,7 @@ declare const PLATFORM_ERROR_CODES: {
|
|
|
5858
6343
|
/** Email already taken (mapped from `PlatformUserExistsError`). */
|
|
5859
6344
|
readonly EMAIL_EXISTS: "EMAIL_EXISTS";
|
|
5860
6345
|
};
|
|
5861
|
-
type PlatformErrorCode = SetupErrorCode | AuthErrorCode | PromoErrorCode | CatalogErrorCode | BillingErrorCode | ContractErrorCode | SubscriberErrorCode | RegistrationErrorCode | PaymentErrorCode | SettingsErrorCode;
|
|
6346
|
+
type PlatformErrorCode = SetupErrorCode | AuthErrorCode | PromoErrorCode | CatalogErrorCode | BillingErrorCode | ContractErrorCode | SubscriberErrorCode | RegistrationErrorCode | PaymentErrorCode | SettingsErrorCode | MaintenanceErrorCode;
|
|
5862
6347
|
/**
|
|
5863
6348
|
* Shape of a coded error response.
|
|
5864
6349
|
*
|
|
@@ -6779,6 +7264,47 @@ type IssuerIdentityChange =
|
|
|
6779
7264
|
*/
|
|
6780
7265
|
declare function classifyIssuerChange(recorded: LegalIdentity | null, issuer: PlanCatalogIssuer | undefined): IssuerIdentityChange;
|
|
6781
7266
|
|
|
7267
|
+
/**
|
|
7268
|
+
* A `subscriber_ledger_entries` row as either adapter reads it back. The amount
|
|
7269
|
+
* is `unknown` because a Prisma row carries a `Decimal` where a Drizzle row
|
|
7270
|
+
* carries a numeric string.
|
|
7271
|
+
*/
|
|
7272
|
+
interface CanonicalSubscriberChargeRow {
|
|
7273
|
+
id: string;
|
|
7274
|
+
subscriberId: string;
|
|
7275
|
+
tenantId: string;
|
|
7276
|
+
subscriptionId: string;
|
|
7277
|
+
contractId: string;
|
|
7278
|
+
contractLineItemId: string;
|
|
7279
|
+
origin: string;
|
|
7280
|
+
source: string;
|
|
7281
|
+
sourceRef: string;
|
|
7282
|
+
periodStart: Date;
|
|
7283
|
+
periodEnd: Date;
|
|
7284
|
+
currency: string;
|
|
7285
|
+
amountNet: unknown;
|
|
7286
|
+
bookedAt: Date;
|
|
7287
|
+
createdAt: Date;
|
|
7288
|
+
}
|
|
7289
|
+
/**
|
|
7290
|
+
* Reads a row back as a record. The origin and the source are checked rather
|
|
7291
|
+
* than cast: a value written by hand or by a later release would otherwise
|
|
7292
|
+
* reach an invoice as a charge nobody knows how to read.
|
|
7293
|
+
*/
|
|
7294
|
+
declare function toSubscriberChargeRecord(row: CanonicalSubscriberChargeRow): SubscriberChargeRecord;
|
|
7295
|
+
/**
|
|
7296
|
+
* The columns a charge is written with. The amount goes as a decimal string of
|
|
7297
|
+
* two places, which both a Prisma `Decimal` and a PostgreSQL `numeric` take
|
|
7298
|
+
* exactly — a JavaScript number on its way to either is where a cent is lost.
|
|
7299
|
+
*
|
|
7300
|
+
* An amount that is not already a whole number of cents is refused rather than
|
|
7301
|
+
* rounded: a charge is rounded once, where it is derived, and a second rounding
|
|
7302
|
+
* here would make the written figure differ from the one that was computed.
|
|
7303
|
+
*/
|
|
7304
|
+
declare function subscriberChargeColumns(charge: NewSubscriberCharge): Omit<CanonicalSubscriberChargeRow, 'id' | 'createdAt' | 'amountNet'> & {
|
|
7305
|
+
amountNet: string;
|
|
7306
|
+
};
|
|
7307
|
+
|
|
6782
7308
|
/** A `subscribers` row as either adapter reads it back. */
|
|
6783
7309
|
interface CanonicalSubscriberRow {
|
|
6784
7310
|
id: string;
|
|
@@ -6907,6 +7433,37 @@ declare function isForeignPaymentMethodReferenceError(error: unknown): error is
|
|
|
6907
7433
|
*/
|
|
6908
7434
|
declare function refuseForeignPaymentMethodReference(recorded: Pick<CanonicalSubscriberPaymentMethodRow, 'subscriberId' | 'gatewayAccount' | 'paymentMethodRef'>, subscriberId: string): void;
|
|
6909
7435
|
|
|
7436
|
+
/**
|
|
7437
|
+
* A `subscription_bundles` row as either adapter reads it back.
|
|
7438
|
+
*
|
|
7439
|
+
* The three billing columns are optional because a Prisma client generated from
|
|
7440
|
+
* a schema that predates them returns a row without them; an absent column
|
|
7441
|
+
* reads as null, the same as a booking made before they existed.
|
|
7442
|
+
*/
|
|
7443
|
+
interface CanonicalSubscriptionBundleRow {
|
|
7444
|
+
id: string;
|
|
7445
|
+
subscriptionId: string;
|
|
7446
|
+
bundleVersionId: string;
|
|
7447
|
+
startedAt: Date;
|
|
7448
|
+
minimumTermEndsAt: Date | null;
|
|
7449
|
+
billingCycle?: string | null;
|
|
7450
|
+
currentPeriodStart?: Date | null;
|
|
7451
|
+
currentPeriodEnd?: Date | null;
|
|
7452
|
+
canceledAt: Date | null;
|
|
7453
|
+
canceledEffectiveAt: Date | null;
|
|
7454
|
+
createdAt: Date;
|
|
7455
|
+
updatedAt: Date;
|
|
7456
|
+
}
|
|
7457
|
+
/**
|
|
7458
|
+
* Reads a row back as a record.
|
|
7459
|
+
*
|
|
7460
|
+
* `billingCycle` is a text column the platform only ever writes as `MONTHLY` or
|
|
7461
|
+
* `YEARLY`, and a price is chosen by asking whether it is `YEARLY` — so any
|
|
7462
|
+
* other value would be billed monthly without a word. It is checked rather than
|
|
7463
|
+
* cast, and a value outside the two stops the read.
|
|
7464
|
+
*/
|
|
7465
|
+
declare function toSubscriptionBundleRecord(row: CanonicalSubscriptionBundleRow): SubscriptionBundleRecord;
|
|
7466
|
+
|
|
6910
7467
|
/** A `subscription_contracts` row as either adapter reads it back. */
|
|
6911
7468
|
interface CanonicalContractRow {
|
|
6912
7469
|
id: string;
|
|
@@ -7050,4 +7607,4 @@ declare function resolveErrorMessage(body: ResolvableErrorBody, overrides?: Part
|
|
|
7050
7607
|
|
|
7051
7608
|
declare const ERROR_MESSAGES_DE: Record<PlatformErrorCode, string>;
|
|
7052
7609
|
|
|
7053
|
-
export { ACTIVE_SUBSCRIPTION_CONTRACT_STATUSES, AUTH_ERROR_CODES, type ActionKey, type ActivationOrchestrator, type ActivePlanVersionWhere, type ActivePlanVersionWhereWithEndsAt, type ActiveVersionWhere, type ActiveVersionWhereWithEndsAt, type ActorTag, type AdminActor, type AdminAuditListFilter, type AdminManifest, type AdminResourcesPort, type AdminSubscriptionListRow, type AdminTenantDetail, type AdminTenantListFilter, type AdminTenantListRow, type AdminTenantStateResult, type AdminUserListFilter, type AdminUserListRow, type AppliedSettingsPort, type AppliedSettingsRecord, type AppliedSettingsValues, type ApplyOnboardingSelectionInput, type ApplyOnboardingSelectionResult, type ApprovedCatalogKeys, type AuditActionDef, type AuditEntry, type AuditPort, type AuditQuery, type AuditQueryPort, type AuditStatsPort, type AuditStatsSnapshot, type AuthErrorCode, BILLING_ERROR_CODES, BUNDLE_PRICE_LOOKUP_LIMIT, type BillingCycle, type BillingErrorCode, type BundleAvailabilityState, type BundleCompatibility, type BundleFeatureShape, type BundleListFilter, type BundlePricingOverride, type BundleRepository, type BundleRow, type BundleVersionFields, type BundleVersionMutationResult, type BundleVersionRow, CATALOGUE_KEYS, CATALOG_ERROR_CODES, CONTRACT_ERROR_CODES, type CancelSubscriptionBundleData, type CancelSubscriptionInput, type CancelSubscriptionResult, type CancellationNoticePeriods, type CanonicalContractLineItemRow, type CanonicalContractRow, type CanonicalPlanRow, type CanonicalPlanVersionRow, type CanonicalRunningContractRow, type CanonicalSubscriberCorrectionRow, type CanonicalSubscriberPaymentMethodRow, type CanonicalSubscriberRow, type CapabilityCatalogEntryRow, type CapabilityCodeStatus, type CapabilityKey, type CapabilityKind, type CatalogEntryFilter, type CatalogEntryI18n, type CatalogEntryI18nFields, type CatalogEntryRepository, type CatalogErrorCode, type ChangeDirection, type CheckoutOfferFilter, type CheckoutOfferLineItem, type CheckoutOfferLineItemKind, type CheckoutOfferPriceBreakdown, type CheckoutOfferPromoCodeSnapshot, type CheckoutOfferPromotionSnapshot, type CheckoutOfferRepository, type CheckoutOfferRow, type CheckoutOfferSelection, type CheckoutOfferSelectionUpdate, type CheckoutOfferStatus, type CleanupResult, type CliUserRow, type ComponentKey, type ConfiguratorCatalog, type ConfiguratorMarketingProvider, type ConfiguratorModel, type ConfiguratorPlanMarketing, type ConfiguratorPlanVersionRow, type ConfiguratorPriceBreakdown, type ConfiguratorSourcesLookup, type ConfirmedPaymentMethod, type ContractErrorCode, type ContractIssuerParty, type ContractLineItemKind, type ContractLineItemRecord, type ContractSubscriberParty, type CreateBundleData, type CreateBundleVersionDraftData, type CreateCheckoutOfferData, type CreateMarketingProjectionData, type CreatePlanData, type CreatePlanVersionDraftData, type CreatePromoCodeData, type CreatePromoCodeRequest, type CreatePromotionData, type CreateSubscriberData, type CreateSubscriptionBundleData, type CreateSubscriptionContractData, type CreateSuperAdminCliInput, type CreateTenantInput, type DiffResult, type DiscoveredCapability, type DiscoveredFeature, type DiscoveredQuota, type DiscoveredQuotaPolicy, type DiscoveryCodeStatus, type DiscoverySnapshot, type DiscoveryStatus, ERROR_MESSAGES_DE, ERROR_MESSAGES_EN, type EffectiveLimitsSnapshot, type EmailPort, type ErrorMessageParams, FEATURE_NOT_LICENSED, type FeatureCatalogEntryRow, type FeatureDef, type FeatureKey, type FeatureNotLicensedBody, type FeatureRequiresIndex, type FeatureTier, type FeatureUiMeta, type FeatureUiRegistry, type FinalActivationResult, type FirstTimeCustomerCheck, ForeignPaymentMethodReferenceError, type ImmediatePlanChangeInput, type InvoiceLineItemSnapshot, type IssuerCorrectionFault, type IssuerIdentityChange, type KpiCardDef, type KpiDisplayHint, LEGAL_IDENTITY_FIELDS, type LegalIdentity, type LegalIdentityField, MARKETING_PRIORITY_MAX, MARKETING_PRIORITY_MIN, type ManifestAccessPort, type ManifestContribution, type MarketingProjectionFilter, type MarketingProjectionRepository, type MarketingProjectionRow, type MarketingSettingsRepository, type MarketingSettingsRow, type MarketingTargetType, type MarketingTopFeature, type MaskedPaymentMethod, type MfaPort, type NewContractLineItemData, type NewSettingsChange, type NewSubscriberDetails, type NewSubscriptionContractData, OTP_RATE_LIMIT_MAX_SENDS, OTP_RATE_LIMIT_WINDOW_MINUTES, OTP_TTL_MINUTES, OTP_VERIFY_MAX_ATTEMPTS, type OnboardingPromoRedemption, type OnboardingSelectionRequest, type OnboardingSelectionResponse, PASSWORD_RESET_TTL_MINUTES, PAYMENT_ERROR_CODES, PAYMENT_METHOD_TYPES, PENDING_CHECKOUT_TTL_DAYS, PENDING_EMAIL_TTL_HOURS, PENDING_ONBOARDING_TTL_DAYS, PLATFORM_ERROR_CODES, PROMO_ERROR_CODES, type Paginated, type PartyAddress, type PasswordHasher, type PasswordResetCliResult, PaymentCallbackRejectedError, type PaymentErrorCode, type PaymentEventClaim, type PaymentEventLog, type PaymentGateway, type PaymentGatewayCallback, type PaymentGatewayEvent, type PaymentMethodHolder, type PaymentMethodSetupSession, type PaymentMethodSetupSubject, type PaymentMethodType, type PendingRegistration, type PendingRegistrationCreateInput, type PendingRegistrationRepository, type PendingRegistrationSnapshot, type PendingRegistrationUpdateInput, type PersistenceCapabilities, PersistenceCapabilityError, type PersistenceClassRef, type PersistenceInjectionToken, type PersistenceProvider, type PlanCatalog, type PlanCatalogApp, type PlanCatalogImportReport, type PlanCatalogImportSink, type PlanCatalogIssuer, type PlanCatalogIssuerCorrection, type PlanCatalogLookup, type PlanCatalogMarketing, type PlanCatalogNotifications, type PlanCatalogPaymentAccount, type PlanCatalogPayments, type PlanCatalogReadSink, type PlanCatalogReadSnapshot, type PlanCatalogSettings, type PlanCatalogSubscribers, type PlanCatalogTenantBilling, type PlanDef, type PlanId, type PlanListFilter, type PlanRepository, type PlanRow, type PlanVersion, type PlanVersionFields, type PlanVersionMappingFields, type PlanVersionMutationResult, type PlanVersionRecord, type PlanVersionRepository, type PlanVersionRow, type PlatformErrorBody, type PlatformErrorCode, type PlatformRole, type PlatformUserDto, PlatformUserExistsError, type ProjectPageDef, type PromoCode, type PromoCodeDurationType, type PromoCodeFilter, type PromoCodeHoldRecord, type PromoCodeHoldRepository, type PromoCodeHoldTaken, type PromoCodeRecord, type PromoCodeRedemption, type PromoCodeRedemptionListItem, type PromoCodeRedemptionRecord, type PromoCodeRedemptionRepository, type PromoCodeRedemptionStatus, type PromoCodeRepository, type PromoCodeStatsPort, type PromoCodeStatsSnapshot, type PromoCodeStatus, type PromoCodeValidationLog, type PromoCodeValidationLogRepository, type PromoCodeValidationResult, type PromoCodeValueType, type PromoErrorCode, type PromoPreviewInvalidReason, type PromoPreviewRequest, type PromoPreviewResponse, type PromoPreviewValidResponse, type PromoRevenueDeductionAggregator, type PromoSubscriptionLookup, type PromotionBillingCycle, type PromotionI18n, type PromotionI18nFields, type PromotionOnPrice, type PromotionRepository, type PromotionResult, type PromotionRow, type PromotionStatus, type PromotionTargetType, type PromotionType, type PromotionValue, type PublicBootResponse, type PublicComparisonRow, type PublicMarketingBundle, type PublicMarketingCatalogResponse, type PublicMarketingPlan, type PublicMarketingPromo, type PublicNewPaymentMethods, type PublicSignupPlan, type PublishBundleVersionData, type PublishBundleVersionMeta, type PublishPlanVersionData, type QuotaCatalogEntryRow, type QuotaEnforcementMode, type QuotaKey, type QuotaProvider, REGISTRATION_ERROR_CODES, REGISTRATION_RESUME_TTL_MINUTES, REGISTRATION_STEP_BY_STATUS, type ReassignTenantAdminCliResult, type RecommendablePlan, type RecordSubscriberPaymentMethodData, type RecordSubscriberPaymentMethodOutcome, type RecordSubscriberPaymentMethodResult, type RedeemPromoInTransactionCallback, type RegistrationActivation, type RegistrationAuditContext, type RegistrationAuditEvent, type RegistrationAuditEventType, type RegistrationAuditLogger, type RegistrationBillingDetails, type RegistrationConfigSelection, type RegistrationConfiguratorLookup, type RegistrationErrorCode, type RegistrationOtpDelivery, type RegistrationPromoPreview, type RegistrationResumeDelivery, type RegistrationResumeTokenSigner, type RegistrationStatus, type RegistrationStep, type RequiredCapabilities, type ResolvableErrorBody, type ResumeRegistrationInput, type ResumeRegistrationResult, type ReviewCatalogEntryData, type RlsBypassPort, type RunningContractIssuer, type RunningContractIssuers, SETTINGS_ERROR_CODES, SETUP_ERROR_CODES, SUBSCRIBER_ERROR_CODES, type SaaSiCatPersistenceAdapter, type SaaSiCatPersistenceAdminResources, type SaaSiCatPersistenceCatalog, type SaaSiCatPersistenceCore, type SaaSiCatPersistenceEntitlement, type SaaSiCatPersistencePayments, type SaaSiCatPersistencePromo, type SaaSiCatPersistenceTenantBilling, type SaveRegistrationConfigInput, type SaveRegistrationConfigResult, type ScheduledPlanChangeInput, type SelectPlanInput, type SelectPlanResult, type SelectableBundleShape, type SelfServiceBlockedPlans, type SetCatalogEntryReviewData, type SettingsChangeFilter, type SettingsChangeRecord, type SettingsDifference, type SettingsErrorCode, type SetupConfirmMfaRequest, type SetupConfirmMfaResponse, type SetupErrorCode, type SetupRequest, type SetupResult, type SetupStatusResponse, type SlugAvailabilityCheck, type StandardPageDef, type StandardPageKey, type StartCheckoutInput, type StartCheckoutResult, type StartPaymentMethodSetupInput, type StartRegistrationInput, type StartRegistrationResult, type StoredBundleStem, type StrictModeWarning, type StrictModeWarningCode, type SubscriberContact, type SubscriberContactChange, type SubscriberCorrectionData, type SubscriberCorrectionRecord, type SubscriberCorrectionResult, type SubscriberDetails, type SubscriberErrorCode, type SubscriberIdentityCorrection, type SubscriberIdentityDelta, type SubscriberIdentityValues, type SubscriberPaymentMethodRecord, type SubscriberPaymentMethodReference, type SubscriberPaymentMethodRepository, type SubscriberPaymentMethodSetupData, type SubscriberPaymentMethodSetupMatch, type SubscriberPaymentMethodStatus, type SubscriberRecord, type SubscriberRepository, type Subscription, type SubscriptionBundleRecord, type SubscriptionBundleRepository, type SubscriptionBundleView, type SubscriptionContractFilter, type SubscriptionContractInvoiceSnapshot, type SubscriptionContractParties, type SubscriptionContractPriceSnapshot, type SubscriptionContractRecord, type SubscriptionContractRepository, type SubscriptionContractStatus, type SubscriptionRecord, type SubscriptionRepository, type SubscriptionStatsPort, type SubscriptionStatsSnapshot, type SubscriptionStatus, type SubscriptionUsagePort, type SubscriptionUsageRecord, type SuperAdminProvisioningPort, type SyncDiscoveryResult, type TenantActionDef, type TenantColumnDef, type TenantDto, type TenantListFilter, type TenantPort, type TenantSubscriptionWritePort, type TerminateSubscriptionContractData, type TopPromoCode, type TransactionContext, type TransactionRunner, type UpdateBundleData, type UpdateBundleVersionDraftData, type UpdateCatalogEntryBaseData, type UpdateCatalogEntryI18nData, type UpdateCheckoutOfferData, type UpdateMarketingProjectionData, type UpdateMarketingSettingsData, type UpdatePlanData, type UpdatePlanVersionDraftData, type UpdatePromoCodeData, type UpdatePromoCodeRequest, type UpdatePromotionData, type UpsellOffer, type UpsellOfferResolver, type UpsertCapabilityEntryData, type UpsertFeatureCatalogEntryInput, type UpsertFeatureEntryData, type UpsertPlanInput, type UpsertPlanVersionInput, type UpsertQuotaEntryData, type UpsertResult, type UsageSnapshotPort, type UserAccountLookup, type UserListFilter, type UserManagementPort, type UserPort, type VerifyRegistrationOtpResult, type VersionChange, type VersionChangeDirection, type VersionEditability, type VersionEditableReason, type VersionedEntityBase, applyPromo, assertPersistenceCapabilities, buildActivePlanVersionWhere, buildActiveVersionWhere, buildFeatureRequiresIndex, bundleDraftDefaults, bundleStemDefaults, canonicalJson, classifyBundleVersionDiff, classifyIssuerChange, classifyPlanDiff, collectUnsatisfiedRequires, contractPartiesOf, coverageExcludingSelf, definedFields, diffSettings, formatCustomerNumber, formatErrorMessage, identityCorrectionDelta, isBundleRedundant, isForeignPaymentMethodReferenceError, isPaymentCallbackRejectedError, isPlatformUserExistsError, isVersionEditable, issuerIdentityOf, keepOneRecommended, missingRequiresFor, movedIdentityFields, pickActivePromo, planCatalogSettingsOf, previousUtcDay, promoStatus, promotionOnPrice, readQuotaRecord, readQuotaValue, recordedIssuerIdentity, refuseForeignPaymentMethodReference, resolveBundleAvailability, resolveErrorMessage, sameLegalIdentity, selectChargeableBundles, settingsSubtreeOf, startOfUtcDay, subscriberFromRegistration, subscriberPaymentMethodColumns, toBundleStemRow, toContractLineItemRecord, toPlanRow, toPlanVersionRow, toRunningContractIssuer, toSubscriberCorrectionRecord, toSubscriberPaymentMethodRecord, toSubscriberRecord, toSubscriptionContractRecord };
|
|
7610
|
+
export { ACTIVE_SUBSCRIPTION_CONTRACT_STATUSES, AUTH_ERROR_CODES, type ActionKey, type ActivationOrchestrator, type ActivePlanVersionWhere, type ActivePlanVersionWhereWithEndsAt, type ActiveVersionWhere, type ActiveVersionWhereWithEndsAt, type ActorTag, type AdminAccountEntry, type AdminAccountHolder, type AdminActor, type AdminAuditListFilter, type AdminManifest, type AdminResourcesPort, type AdminSubscriberAccount, type AdminSubscriptionListRow, type AdminTenantDetail, type AdminTenantListFilter, type AdminTenantListRow, type AdminTenantStateResult, type AdminUserListFilter, type AdminUserListRow, type AppliedSettingsPort, type AppliedSettingsRecord, type AppliedSettingsValues, type ApplyOnboardingSelectionInput, type ApplyOnboardingSelectionResult, type ApprovedCatalogKeys, type AuditActionDef, type AuditEntry, type AuditPort, type AuditQuery, type AuditQueryPort, type AuditStatsPort, type AuditStatsSnapshot, type AuthErrorCode, BILLING_ERROR_CODES, BUNDLE_PRICE_LOOKUP_LIMIT, type BillingCycle, type BillingErrorCode, type BundleAvailabilityState, type BundleCompatibility, type BundleFeatureShape, type BundleListFilter, type BundlePricingOverride, type BundleRepository, type BundleRow, type BundleVersionFields, type BundleVersionMutationResult, type BundleVersionRow, CATALOGUE_KEYS, CATALOG_ERROR_CODES, CONTRACT_ERROR_CODES, type CancelSubscriptionBundleData, type CancelSubscriptionInput, type CancelSubscriptionResult, type CancellationNoticePeriods, type CanonicalContractLineItemRow, type CanonicalContractRow, type CanonicalMaintenanceWindowRow, type CanonicalPlanRow, type CanonicalPlanVersionRow, type CanonicalRunningContractRow, type CanonicalSubscriberChargeRow, type CanonicalSubscriberCorrectionRow, type CanonicalSubscriberPaymentMethodRow, type CanonicalSubscriberRow, type CanonicalSubscriptionBundleRow, type CapabilityCatalogEntryRow, type CapabilityCodeStatus, type CapabilityKey, type CapabilityKind, type CatalogEntryFilter, type CatalogEntryI18n, type CatalogEntryI18nFields, type CatalogEntryRepository, type CatalogErrorCode, type ChangeDirection, type CheckoutOfferFilter, type CheckoutOfferLineItem, type CheckoutOfferLineItemKind, type CheckoutOfferPriceBreakdown, type CheckoutOfferPromoCodeSnapshot, type CheckoutOfferPromotionSnapshot, type CheckoutOfferRepository, type CheckoutOfferRow, type CheckoutOfferSelection, type CheckoutOfferSelectionUpdate, type CheckoutOfferStatus, type CleanupResult, type CliUserRow, type ComponentKey, type ConfiguratorCatalog, type ConfiguratorMarketingProvider, type ConfiguratorModel, type ConfiguratorPlanMarketing, type ConfiguratorPlanVersionRow, type ConfiguratorPriceBreakdown, type ConfiguratorSourcesLookup, type ConfirmedPaymentMethod, type ContractErrorCode, type ContractIssuerParty, type ContractLineItemKind, type ContractLineItemRecord, type ContractSubscriberParty, type CreateBundleData, type CreateBundleVersionDraftData, type CreateCheckoutOfferData, type CreateMarketingProjectionData, type CreatePlanData, type CreatePlanVersionDraftData, type CreatePromoCodeData, type CreatePromoCodeRequest, type CreatePromotionData, type CreateSubscriberData, type CreateSubscriptionBundleData, type CreateSubscriptionContractData, type CreateSuperAdminCliInput, type CreateTenantInput, type DiffResult, type DiscoveredCapability, type DiscoveredFeature, type DiscoveredQuota, type DiscoveredQuotaPolicy, type DiscoveryCodeStatus, type DiscoverySnapshot, type DiscoveryStatus, ERROR_MESSAGES_DE, ERROR_MESSAGES_EN, type EffectiveLimitsSnapshot, type EmailPort, type ErrorMessageParams, FEATURE_NOT_LICENSED, type FeatureCatalogEntryRow, type FeatureDef, type FeatureKey, type FeatureNotLicensedBody, type FeatureRequiresIndex, type FeatureTier, type FeatureUiMeta, type FeatureUiRegistry, type FinalActivationResult, type FirstTimeCustomerCheck, ForeignPaymentMethodReferenceError, type ImmediatePlanChangeInput, type InvoiceLineItemSnapshot, type IssuerCorrectionFault, type IssuerIdentityChange, type KpiCardDef, type KpiDisplayHint, LEGAL_IDENTITY_FIELDS, type LegalIdentity, type LegalIdentityField, MAINTENANCE_CAPABILITY, MAINTENANCE_ERROR_CODES, MAINTENANCE_MESSAGE_MAX_LENGTH, MAINTENANCE_STATE_MAX_AGE_SECONDS, MARKETING_PRIORITY_MAX, MARKETING_PRIORITY_MIN, type MaintenanceErrorCode, type MaintenanceLockView, type MaintenanceNotificationPort, type MaintenanceOverview, type MaintenanceStatusView, type MaintenanceUnlockView, type MaintenanceWindowChanges, type MaintenanceWindowEvent, type MaintenanceWindowPort, type MaintenanceWindowRecord, type MaintenanceWindowStage, type MaintenanceWindowStatus, type MaintenanceWindowView, type ManifestAccessPort, type ManifestContribution, type MarketingProjectionFilter, type MarketingProjectionRepository, type MarketingProjectionRow, type MarketingSettingsRepository, type MarketingSettingsRow, type MarketingTargetType, type MarketingTopFeature, type MaskedPaymentMethod, type MfaPort, type NewContractLineItemData, type NewMaintenanceWindow, type NewSettingsChange, type NewSubscriberCharge, type NewSubscriberDetails, type NewSubscriptionContractData, OTP_RATE_LIMIT_MAX_SENDS, OTP_RATE_LIMIT_WINDOW_MINUTES, OTP_TTL_MINUTES, OTP_VERIFY_MAX_ATTEMPTS, type OnboardingPromoRedemption, type OnboardingSelectionRequest, type OnboardingSelectionResponse, PASSWORD_RESET_TTL_MINUTES, PAYMENT_ERROR_CODES, PAYMENT_METHOD_TYPES, PENDING_CHECKOUT_TTL_DAYS, PENDING_EMAIL_TTL_HOURS, PENDING_ONBOARDING_TTL_DAYS, PLATFORM_ERROR_CODES, PROMO_ERROR_CODES, type Paginated, type PartyAddress, type PasswordHasher, type PasswordResetCliResult, PaymentCallbackRejectedError, type PaymentErrorCode, type PaymentEventClaim, type PaymentEventLog, type PaymentGateway, type PaymentGatewayCallback, type PaymentGatewayEvent, type PaymentMethodHolder, type PaymentMethodSetupSession, type PaymentMethodSetupSubject, type PaymentMethodType, type PendingRegistration, type PendingRegistrationCreateInput, type PendingRegistrationRepository, type PendingRegistrationSnapshot, type PendingRegistrationUpdateInput, type PersistenceCapabilities, PersistenceCapabilityError, type PersistenceClassRef, type PersistenceInjectionToken, type PersistenceProvider, type PlanCatalog, type PlanCatalogApp, type PlanCatalogImportReport, type PlanCatalogImportSink, type PlanCatalogIssuer, type PlanCatalogIssuerCorrection, type PlanCatalogLookup, type PlanCatalogMarketing, type PlanCatalogNotifications, type PlanCatalogPaymentAccount, type PlanCatalogPayments, type PlanCatalogReadSink, type PlanCatalogReadSnapshot, type PlanCatalogSettings, type PlanCatalogSubscribers, type PlanCatalogTenantBilling, type PlanDef, type PlanId, type PlanListFilter, type PlanRepository, type PlanRow, type PlanVersion, type PlanVersionFields, type PlanVersionMappingFields, type PlanVersionMutationResult, type PlanVersionRecord, type PlanVersionRepository, type PlanVersionRow, type PlatformErrorBody, type PlatformErrorCode, type PlatformRole, type PlatformUserDto, PlatformUserExistsError, type ProjectPageDef, type PromoCode, type PromoCodeDurationType, type PromoCodeFilter, type PromoCodeHoldRecord, type PromoCodeHoldRepository, type PromoCodeHoldTaken, type PromoCodeRecord, type PromoCodeRedemption, type PromoCodeRedemptionListItem, type PromoCodeRedemptionRecord, type PromoCodeRedemptionRepository, type PromoCodeRedemptionStatus, type PromoCodeRepository, type PromoCodeStatsPort, type PromoCodeStatsSnapshot, type PromoCodeStatus, type PromoCodeValidationLog, type PromoCodeValidationLogRepository, type PromoCodeValidationResult, type PromoCodeValueType, type PromoErrorCode, type PromoPreviewInvalidReason, type PromoPreviewRequest, type PromoPreviewResponse, type PromoPreviewValidResponse, type PromoRevenueDeductionAggregator, type PromoSubscriptionLookup, type PromotionBillingCycle, type PromotionI18n, type PromotionI18nFields, type PromotionOnPrice, type PromotionRepository, type PromotionResult, type PromotionRow, type PromotionStatus, type PromotionTargetType, type PromotionType, type PromotionValue, type PublicBootResponse, type PublicComparisonRow, type PublicMarketingBundle, type PublicMarketingCatalogResponse, type PublicMarketingPlan, type PublicMarketingPromo, type PublicNewPaymentMethods, type PublicSignupPlan, type PublishBundleVersionData, type PublishBundleVersionMeta, type PublishPlanVersionData, type QuotaCatalogEntryRow, type QuotaEnforcementMode, type QuotaKey, type QuotaProvider, REGISTRATION_ERROR_CODES, REGISTRATION_RESUME_TTL_MINUTES, REGISTRATION_STEP_BY_STATUS, type ReassignTenantAdminCliResult, type RecommendablePlan, type RecordSubscriberPaymentMethodData, type RecordSubscriberPaymentMethodOutcome, type RecordSubscriberPaymentMethodResult, type RedeemPromoInTransactionCallback, type RegistrationActivation, type RegistrationAuditContext, type RegistrationAuditEvent, type RegistrationAuditEventType, type RegistrationAuditLogger, type RegistrationBillingDetails, type RegistrationConfigSelection, type RegistrationConfiguratorLookup, type RegistrationErrorCode, type RegistrationOtpDelivery, type RegistrationPromoPreview, type RegistrationResumeDelivery, type RegistrationResumeTokenSigner, type RegistrationStatus, type RegistrationStep, type RequiredCapabilities, type ResolvableErrorBody, type ResumeRegistrationInput, type ResumeRegistrationResult, type ReviewCatalogEntryData, type RlsBypassPort, type RunningContractIssuer, type RunningContractIssuers, SETTINGS_ERROR_CODES, SETUP_ERROR_CODES, SUBSCRIBER_ACCOUNT_CAPABILITY, SUBSCRIBER_ERROR_CODES, type SaaSiCatPersistenceAdapter, type SaaSiCatPersistenceAdminResources, type SaaSiCatPersistenceCatalog, type SaaSiCatPersistenceCore, type SaaSiCatPersistenceEntitlement, type SaaSiCatPersistencePayments, type SaaSiCatPersistencePromo, type SaaSiCatPersistenceTenantBilling, type SaveRegistrationConfigInput, type SaveRegistrationConfigResult, type ScheduledPlanChangeInput, type SelectPlanInput, type SelectPlanResult, type SelectableBundleShape, type SelfServiceBlockedPlans, type SetCatalogEntryReviewData, type SettingsChangeFilter, type SettingsChangeRecord, type SettingsDifference, type SettingsErrorCode, type SetupConfirmMfaRequest, type SetupConfirmMfaResponse, type SetupErrorCode, type SetupRequest, type SetupResult, type SetupStatusResponse, type SlugAvailabilityCheck, type StandardPageDef, type StandardPageKey, type StartCheckoutInput, type StartCheckoutResult, type StartPaymentMethodSetupInput, type StartRegistrationInput, type StartRegistrationResult, type StoredBundleStem, type StrictModeWarning, type StrictModeWarningCode, type SubscriberCharge, type SubscriberChargeOrigin, type SubscriberChargeRecord, type SubscriberChargeSource, type SubscriberContact, type SubscriberContactChange, type SubscriberCorrectionData, type SubscriberCorrectionRecord, type SubscriberCorrectionResult, type SubscriberDetails, type SubscriberErrorCode, type SubscriberIdentityCorrection, type SubscriberIdentityDelta, type SubscriberIdentityValues, type SubscriberLedgerRepository, type SubscriberPaymentMethodRecord, type SubscriberPaymentMethodReference, type SubscriberPaymentMethodRepository, type SubscriberPaymentMethodSetupData, type SubscriberPaymentMethodSetupMatch, type SubscriberPaymentMethodStatus, type SubscriberRecord, type SubscriberRepository, type Subscription, type SubscriptionBundleRecord, type SubscriptionBundleRepository, type SubscriptionBundleView, type SubscriptionContractFilter, type SubscriptionContractInvoiceSnapshot, type SubscriptionContractParties, type SubscriptionContractPriceSnapshot, type SubscriptionContractRecord, type SubscriptionContractRepository, type SubscriptionContractStatus, type SubscriptionRecord, type SubscriptionRepository, type SubscriptionStatsPort, type SubscriptionStatsSnapshot, type SubscriptionStatus, type SubscriptionUsagePort, type SubscriptionUsageRecord, type SuperAdminProvisioningPort, type SupersedeSubscriptionContractData, type SyncDiscoveryResult, type TenantActionDef, type TenantColumnDef, type TenantDto, type TenantListFilter, type TenantPort, type TenantSubscriptionWritePort, type TerminateSubscriptionContractData, type TopPromoCode, type TransactionContext, type TransactionRunner, type UpdateBundleData, type UpdateBundleVersionDraftData, type UpdateCatalogEntryBaseData, type UpdateCatalogEntryI18nData, type UpdateCheckoutOfferData, type UpdateMarketingProjectionData, type UpdateMarketingSettingsData, type UpdatePlanData, type UpdatePlanVersionDraftData, type UpdatePromoCodeData, type UpdatePromoCodeRequest, type UpdatePromotionData, type UpsellOffer, type UpsellOfferResolver, type UpsertCapabilityEntryData, type UpsertFeatureCatalogEntryInput, type UpsertFeatureEntryData, type UpsertPlanInput, type UpsertPlanVersionInput, type UpsertQuotaEntryData, type UpsertResult, type UsageSnapshotPort, type UserAccountLookup, type UserListFilter, type UserManagementPort, type UserPort, type VerifyRegistrationOtpResult, type VersionChange, type VersionChangeDirection, type VersionEditability, type VersionEditableReason, type VersionedEntityBase, applyPromo, assertPersistenceCapabilities, buildActivePlanVersionWhere, buildActiveVersionWhere, buildFeatureRequiresIndex, bundleDraftDefaults, bundleStemDefaults, canonicalJson, classifyBundleVersionDiff, classifyIssuerChange, classifyPlanDiff, collectUnsatisfiedRequires, contractPartiesOf, coverageExcludingSelf, definedFields, diffSettings, formatCustomerNumber, formatErrorMessage, identityCorrectionDelta, isBundleRedundant, isForeignPaymentMethodReferenceError, isMaintenanceAnnouncementLapsed, isMaintenanceOverrun, isPaymentCallbackRejectedError, isPlatformUserExistsError, isVersionEditable, issuerIdentityOf, keepOneRecommended, maintenanceRetryAfterSeconds, maintenanceStatusOf, maintenanceWindowStatusOf, maintenanceWindowViewOf, missingRequiresFor, movedIdentityFields, parseZonedInstant, pickActivePromo, planCatalogSettingsOf, previousUtcDay, promoStatus, promotionOnPrice, readQuotaRecord, readQuotaValue, recordedIssuerIdentity, refuseForeignPaymentMethodReference, resolveBundleAvailability, resolveErrorMessage, sameLegalIdentity, selectChargeableBundles, settingsSubtreeOf, startOfUtcDay, subscriberChargeColumns, subscriberFromRegistration, subscriberPaymentMethodColumns, toBundleStemRow, toContractLineItemRecord, toMaintenanceWindowRecord, toPlanRow, toPlanVersionRow, toRunningContractIssuer, toSubscriberChargeRecord, toSubscriberCorrectionRecord, toSubscriberPaymentMethodRecord, toSubscriberRecord, toSubscriptionBundleRecord, toSubscriptionContractRecord };
|