@saasicat/core 1.0.0-rc.18 → 1.0.0-rc.19
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 +118 -14
- package/dist/index.d.cts +313 -105
- package/dist/index.d.ts +313 -105
- package/dist/index.js +111 -13
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -488,10 +488,9 @@ interface PartyAddress {
|
|
|
488
488
|
* What names a legal entity: the name it is registered under and the
|
|
489
489
|
* identifiers its tax office gave it.
|
|
490
490
|
*
|
|
491
|
-
*
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
* freely.
|
|
491
|
+
* These are the party a contract was concluded with. Under a running contract
|
|
492
|
+
* they change only as a correction of that same entity, recorded with the
|
|
493
|
+
* values they replaced and the reason; contact details change freely.
|
|
495
494
|
*/
|
|
496
495
|
interface LegalIdentity {
|
|
497
496
|
/** The registered name, legal form included. */
|
|
@@ -502,100 +501,13 @@ interface LegalIdentity {
|
|
|
502
501
|
taxNumber: string | null;
|
|
503
502
|
}
|
|
504
503
|
/** The fields of the legal identity, the ones a correction may change. */
|
|
505
|
-
type
|
|
506
|
-
/**
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
type SubscriberDetails = LegalIdentity & SubscriberContact;
|
|
513
|
-
/**
|
|
514
|
-
* What a subscriber is created with.
|
|
515
|
-
*
|
|
516
|
-
* Only the legal name is required. The address, the tax identifiers and the
|
|
517
|
-
* invoice email stay optional until sign-up asks for them and invoicing
|
|
518
|
-
* requires them; an absent or blank value is recorded as unknown.
|
|
519
|
-
*/
|
|
520
|
-
type NewSubscriberDetails = Pick<SubscriberDetails, 'legalName'> & Partial<Omit<SubscriberDetails, 'legalName'>>;
|
|
521
|
-
interface SubscriberRecord extends SubscriberDetails {
|
|
522
|
-
id: string;
|
|
523
|
-
/**
|
|
524
|
-
* Assigned when the subscriber is created and never changed: the number,
|
|
525
|
-
* counted per installation, behind the prefix configured at that moment.
|
|
526
|
-
*/
|
|
527
|
-
customerNumber: string;
|
|
528
|
-
/** The tenant this subscriber is live for, or `null` once it has none. */
|
|
529
|
-
tenantId: string | null;
|
|
530
|
-
/**
|
|
531
|
-
* Created by the migration that gave every existing tenant its subscriber,
|
|
532
|
-
* from the application's own tenant record rather than from what a customer
|
|
533
|
-
* entered.
|
|
534
|
-
*/
|
|
535
|
-
migrated: boolean;
|
|
536
|
-
createdAt: Date;
|
|
537
|
-
updatedAt: Date;
|
|
538
|
-
}
|
|
539
|
-
/** What a repository writes for a new subscriber, every detail already settled. */
|
|
540
|
-
interface CreateSubscriberData extends SubscriberDetails {
|
|
541
|
-
/** The tenant the subscriber is created for and live with. */
|
|
542
|
-
tenantId: string;
|
|
543
|
-
/** Put in front of the assigned number; empty for the number alone. */
|
|
544
|
-
customerNumberPrefix: string;
|
|
545
|
-
}
|
|
546
|
-
/** Contact details to change; a member left out keeps its value. */
|
|
547
|
-
type SubscriberContactChange = Partial<SubscriberContact>;
|
|
548
|
-
/**
|
|
549
|
-
* A change to a subscriber's legal identity, and what the operator declares it
|
|
550
|
-
* to be.
|
|
551
|
-
*
|
|
552
|
-
* SaaSiCat cannot tell a misspelt name from another company taking over, so the
|
|
553
|
-
* operator says which: `correction` for the same legal entity — a typo, a wrong
|
|
554
|
-
* tax identifier, a change of name that entity went through — and `takeover`
|
|
555
|
-
* for another one, which is a transfer rather than an edit and is refused.
|
|
556
|
-
*/
|
|
557
|
-
interface SubscriberIdentityCorrection {
|
|
558
|
-
kind: 'correction' | 'takeover';
|
|
559
|
-
legalName?: string;
|
|
560
|
-
vatId?: string | null;
|
|
561
|
-
taxNumber?: string | null;
|
|
562
|
-
/** Why the identity is corrected. Part of the record. */
|
|
563
|
-
reason: string;
|
|
564
|
-
/** Who corrects it, as an actor tag the audit log would write. */
|
|
565
|
-
correctedBy: string;
|
|
566
|
-
}
|
|
567
|
-
/** Identity values by field, holding only the fields a correction changed. */
|
|
568
|
-
type SubscriberIdentityValues = Partial<LegalIdentity>;
|
|
569
|
-
/** What a correction replaces and what it writes, holding only the fields that move. */
|
|
570
|
-
interface SubscriberIdentityDelta {
|
|
571
|
-
previous: SubscriberIdentityValues;
|
|
572
|
-
corrected: SubscriberIdentityValues;
|
|
573
|
-
}
|
|
574
|
-
/** What a repository writes for a correction the service has accepted. */
|
|
575
|
-
interface SubscriberCorrectionData {
|
|
576
|
-
/** The new values; a field equal to what is stored is not recorded. */
|
|
577
|
-
corrected: SubscriberIdentityValues;
|
|
578
|
-
reason: string;
|
|
579
|
-
correctedBy: string;
|
|
580
|
-
correctedAt: Date;
|
|
581
|
-
}
|
|
582
|
-
/** One correction of a subscriber's legal identity, as it was recorded. */
|
|
583
|
-
interface SubscriberCorrectionRecord {
|
|
584
|
-
id: string;
|
|
585
|
-
subscriberId: string;
|
|
586
|
-
/** The values the correction replaced. */
|
|
587
|
-
previous: SubscriberIdentityValues;
|
|
588
|
-
/** The values it wrote. */
|
|
589
|
-
corrected: SubscriberIdentityValues;
|
|
590
|
-
reason: string;
|
|
591
|
-
correctedBy: string;
|
|
592
|
-
correctedAt: Date;
|
|
593
|
-
}
|
|
594
|
-
/** The outcome of writing a correction: nothing is recorded when no value moved. */
|
|
595
|
-
interface SubscriberCorrectionResult {
|
|
596
|
-
subscriber: SubscriberRecord;
|
|
597
|
-
correction: SubscriberCorrectionRecord | null;
|
|
598
|
-
}
|
|
504
|
+
type LegalIdentityField = keyof LegalIdentity;
|
|
505
|
+
/** Those fields, in the order they are named and shown. */
|
|
506
|
+
declare const LEGAL_IDENTITY_FIELDS: readonly LegalIdentityField[];
|
|
507
|
+
/** Whether two identities name the same entity: every field, value for value. */
|
|
508
|
+
declare function sameLegalIdentity(before: LegalIdentity, after: LegalIdentity): boolean;
|
|
509
|
+
/** The fields whose value differs between two identities, in field order. */
|
|
510
|
+
declare function movedIdentityFields(before: LegalIdentity, after: LegalIdentity): LegalIdentityField[];
|
|
599
511
|
|
|
600
512
|
/** The payment methods SaaSiCat takes, by the names `config/saas.yaml` uses. */
|
|
601
513
|
type PaymentMethodType = 'card' | 'sepa_debit';
|
|
@@ -873,6 +785,23 @@ interface PlanCatalogIssuer {
|
|
|
873
785
|
country?: string;
|
|
874
786
|
vatId?: string;
|
|
875
787
|
taxNumber?: string;
|
|
788
|
+
/** Declares a changed identity as a correction of the same legal entity. */
|
|
789
|
+
correctionOf?: PlanCatalogIssuerCorrection;
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* What a changed issuer identity replaces, and why.
|
|
793
|
+
*
|
|
794
|
+
* The identity is the counterparty a contract names, so it moves under a
|
|
795
|
+
* running contract only as a correction of that same entity. Each field names
|
|
796
|
+
* the value the installation recorded before the change, `null` where it
|
|
797
|
+
* recorded none; a field the change leaves alone need not be named.
|
|
798
|
+
*/
|
|
799
|
+
interface PlanCatalogIssuerCorrection {
|
|
800
|
+
legalName?: string | null;
|
|
801
|
+
vatId?: string | null;
|
|
802
|
+
taxNumber?: string | null;
|
|
803
|
+
/** Why the same entity now reads differently. Kept in the settings record. */
|
|
804
|
+
reason: string;
|
|
876
805
|
}
|
|
877
806
|
/** How the parties contracts are concluded with are numbered. */
|
|
878
807
|
interface PlanCatalogSubscribers {
|
|
@@ -3263,6 +3192,27 @@ interface SubscriptionContractFilter {
|
|
|
3263
3192
|
status?: SubscriptionContractStatus;
|
|
3264
3193
|
asOf?: Date;
|
|
3265
3194
|
}
|
|
3195
|
+
/** One contract still running, and the issuer it was concluded under. */
|
|
3196
|
+
interface RunningContractIssuer {
|
|
3197
|
+
id: string;
|
|
3198
|
+
/** The tenant it was concluded for, kept as a trace. */
|
|
3199
|
+
tenantId: string;
|
|
3200
|
+
/**
|
|
3201
|
+
* The legal name on the issuer copy, or `null` where the contract names no
|
|
3202
|
+
* issuer — it was concluded while `config/saas.yaml` named none, or its
|
|
3203
|
+
* party copy was made by the migration that attached contracts concluded
|
|
3204
|
+
* before subscribers existed.
|
|
3205
|
+
*/
|
|
3206
|
+
issuerLegalName: string | null;
|
|
3207
|
+
effectiveFrom: Date;
|
|
3208
|
+
}
|
|
3209
|
+
/** How many contracts are concluded and not yet over, and the first few of them. */
|
|
3210
|
+
interface RunningContractIssuers {
|
|
3211
|
+
/** All of them, whether or not the list below holds them all. */
|
|
3212
|
+
total: number;
|
|
3213
|
+
/** At most the limit the caller asked for, oldest first. */
|
|
3214
|
+
contracts: RunningContractIssuer[];
|
|
3215
|
+
}
|
|
3266
3216
|
interface InvoiceLineItemSnapshot {
|
|
3267
3217
|
sourceContractLineItemId: string;
|
|
3268
3218
|
sourceKey: string;
|
|
@@ -3297,6 +3247,100 @@ interface SubscriptionContractInvoiceSnapshot {
|
|
|
3297
3247
|
lineItems: InvoiceLineItemSnapshot[];
|
|
3298
3248
|
}
|
|
3299
3249
|
|
|
3250
|
+
/** How a subscriber is reached, which may change at any time. */
|
|
3251
|
+
interface SubscriberContact extends PartyAddress {
|
|
3252
|
+
/** Where invoices will be sent. */
|
|
3253
|
+
invoiceEmail: string | null;
|
|
3254
|
+
}
|
|
3255
|
+
/** A subscriber's master data, as it stands. */
|
|
3256
|
+
type SubscriberDetails = LegalIdentity & SubscriberContact;
|
|
3257
|
+
/**
|
|
3258
|
+
* What a subscriber is created with.
|
|
3259
|
+
*
|
|
3260
|
+
* Only the legal name is required. The address, the tax identifiers and the
|
|
3261
|
+
* invoice email stay optional until sign-up asks for them and invoicing
|
|
3262
|
+
* requires them; an absent or blank value is recorded as unknown.
|
|
3263
|
+
*/
|
|
3264
|
+
type NewSubscriberDetails = Pick<SubscriberDetails, 'legalName'> & Partial<Omit<SubscriberDetails, 'legalName'>>;
|
|
3265
|
+
interface SubscriberRecord extends SubscriberDetails {
|
|
3266
|
+
id: string;
|
|
3267
|
+
/**
|
|
3268
|
+
* Assigned when the subscriber is created and never changed: the number,
|
|
3269
|
+
* counted per installation, behind the prefix configured at that moment.
|
|
3270
|
+
*/
|
|
3271
|
+
customerNumber: string;
|
|
3272
|
+
/** The tenant this subscriber is live for, or `null` once it has none. */
|
|
3273
|
+
tenantId: string | null;
|
|
3274
|
+
/**
|
|
3275
|
+
* Created by the migration that gave every existing tenant its subscriber,
|
|
3276
|
+
* from the application's own tenant record rather than from what a customer
|
|
3277
|
+
* entered.
|
|
3278
|
+
*/
|
|
3279
|
+
migrated: boolean;
|
|
3280
|
+
createdAt: Date;
|
|
3281
|
+
updatedAt: Date;
|
|
3282
|
+
}
|
|
3283
|
+
/** What a repository writes for a new subscriber, every detail already settled. */
|
|
3284
|
+
interface CreateSubscriberData extends SubscriberDetails {
|
|
3285
|
+
/** The tenant the subscriber is created for and live with. */
|
|
3286
|
+
tenantId: string;
|
|
3287
|
+
/** Put in front of the assigned number; empty for the number alone. */
|
|
3288
|
+
customerNumberPrefix: string;
|
|
3289
|
+
}
|
|
3290
|
+
/** Contact details to change; a member left out keeps its value. */
|
|
3291
|
+
type SubscriberContactChange = Partial<SubscriberContact>;
|
|
3292
|
+
/**
|
|
3293
|
+
* A change to a subscriber's legal identity, and what the operator declares it
|
|
3294
|
+
* to be.
|
|
3295
|
+
*
|
|
3296
|
+
* SaaSiCat cannot tell a misspelt name from another company taking over, so the
|
|
3297
|
+
* operator says which: `correction` for the same legal entity — a typo, a wrong
|
|
3298
|
+
* tax identifier, a change of name that entity went through — and `takeover`
|
|
3299
|
+
* for another one, which is a transfer rather than an edit and is refused.
|
|
3300
|
+
*/
|
|
3301
|
+
interface SubscriberIdentityCorrection {
|
|
3302
|
+
kind: 'correction' | 'takeover';
|
|
3303
|
+
legalName?: string;
|
|
3304
|
+
vatId?: string | null;
|
|
3305
|
+
taxNumber?: string | null;
|
|
3306
|
+
/** Why the identity is corrected. Part of the record. */
|
|
3307
|
+
reason: string;
|
|
3308
|
+
/** Who corrects it, as an actor tag the audit log would write. */
|
|
3309
|
+
correctedBy: string;
|
|
3310
|
+
}
|
|
3311
|
+
/** Identity values by field, holding only the fields a correction changed. */
|
|
3312
|
+
type SubscriberIdentityValues = Partial<LegalIdentity>;
|
|
3313
|
+
/** What a correction replaces and what it writes, holding only the fields that move. */
|
|
3314
|
+
interface SubscriberIdentityDelta {
|
|
3315
|
+
previous: SubscriberIdentityValues;
|
|
3316
|
+
corrected: SubscriberIdentityValues;
|
|
3317
|
+
}
|
|
3318
|
+
/** What a repository writes for a correction the service has accepted. */
|
|
3319
|
+
interface SubscriberCorrectionData {
|
|
3320
|
+
/** The new values; a field equal to what is stored is not recorded. */
|
|
3321
|
+
corrected: SubscriberIdentityValues;
|
|
3322
|
+
reason: string;
|
|
3323
|
+
correctedBy: string;
|
|
3324
|
+
correctedAt: Date;
|
|
3325
|
+
}
|
|
3326
|
+
/** One correction of a subscriber's legal identity, as it was recorded. */
|
|
3327
|
+
interface SubscriberCorrectionRecord {
|
|
3328
|
+
id: string;
|
|
3329
|
+
subscriberId: string;
|
|
3330
|
+
/** The values the correction replaced. */
|
|
3331
|
+
previous: SubscriberIdentityValues;
|
|
3332
|
+
/** The values it wrote. */
|
|
3333
|
+
corrected: SubscriberIdentityValues;
|
|
3334
|
+
reason: string;
|
|
3335
|
+
correctedBy: string;
|
|
3336
|
+
correctedAt: Date;
|
|
3337
|
+
}
|
|
3338
|
+
/** The outcome of writing a correction: nothing is recorded when no value moved. */
|
|
3339
|
+
interface SubscriberCorrectionResult {
|
|
3340
|
+
subscriber: SubscriberRecord;
|
|
3341
|
+
correction: SubscriberCorrectionRecord | null;
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3300
3344
|
/**
|
|
3301
3345
|
* Snapshot form of a `Subscription` row for the EntitlementService
|
|
3302
3346
|
* computation. The consumer maps its Prisma structure onto this form.
|
|
@@ -3473,6 +3517,43 @@ interface SubscriptionContractRepository {
|
|
|
3473
3517
|
*/
|
|
3474
3518
|
findByOriginalOfferId(offerId: string, tx?: TransactionContext): Promise<SubscriptionContractRecord | null>;
|
|
3475
3519
|
terminate(contractId: string, data: TerminateSubscriptionContractData): Promise<SubscriptionContractRecord>;
|
|
3520
|
+
/**
|
|
3521
|
+
* The contracts concluded and not yet over, with the issuer each was
|
|
3522
|
+
* concluded under: how many there are, and the first `limit` of them,
|
|
3523
|
+
* oldest first. `limit` caps the list and not the count, so a start refused
|
|
3524
|
+
* over a changed issuer identity says how many contracts it means before it
|
|
3525
|
+
* names any of them.
|
|
3526
|
+
*
|
|
3527
|
+
* Running means `active` or `scheduled` AND not ended at `asOf` — the same
|
|
3528
|
+
* window `findActiveByTenantId` uses on its upper end, and for the same
|
|
3529
|
+
* reason. Status alone is not enough: an ordinary cancellation lands at the
|
|
3530
|
+
* term end and writes only `effectiveUntil`, leaving the status where it
|
|
3531
|
+
* was, and nothing flips it when that day arrives. Counting by status would
|
|
3532
|
+
* therefore report every customer who ever left as still running — and
|
|
3533
|
+
* because the list is oldest first, the ones it names would be exactly the
|
|
3534
|
+
* expired ones.
|
|
3535
|
+
*
|
|
3536
|
+
* The window is open at the bottom on purpose: a contract that starts next
|
|
3537
|
+
* month is concluded, its party copy is fixed, and it will be invoiced under
|
|
3538
|
+
* the issuer it names.
|
|
3539
|
+
*
|
|
3540
|
+
* Platform-wide: unlike every other read here it is anchored by no tenant,
|
|
3541
|
+
* no contract and no offer, and a start makes it before anything is served.
|
|
3542
|
+
* An implementation on a tenant-scoped client must count RLS-exempt, as
|
|
3543
|
+
* `countActiveByPlanKey` must — the platform wraps the call in
|
|
3544
|
+
* `RlsBypassPort`, and one that answers with the caller's tenant scope
|
|
3545
|
+
* instead returns nothing at a boot, where there is no tenant. The
|
|
3546
|
+
* persistence contract runs with no policy forced, so it cannot catch that
|
|
3547
|
+
* for you.
|
|
3548
|
+
*
|
|
3549
|
+
* `limit` may be `0`, and a caller that wants only the count passes it:
|
|
3550
|
+
* `total` is exact whatever the limit, so nothing has to come back for it.
|
|
3551
|
+
* Zero means zero — an implementation that reads a falsy limit as "no limit"
|
|
3552
|
+
* returns every running contract to a caller asking for none, which is the
|
|
3553
|
+
* one shape of this method that gets slower the more an installation sells.
|
|
3554
|
+
* The executable contract asks for `0`.
|
|
3555
|
+
*/
|
|
3556
|
+
listRunningIssuers(limit: number, asOf?: Date): Promise<RunningContractIssuers>;
|
|
3476
3557
|
}
|
|
3477
3558
|
/**
|
|
3478
3559
|
* The parties contracts are concluded with, their link to the tenant they are
|
|
@@ -4041,11 +4122,18 @@ interface ManifestAccessPort {
|
|
|
4041
4122
|
* Adapter for the RLS bypass context. Platform code calls `runWithBypass`,
|
|
4042
4123
|
* the consumer implementation triggers the Postgres session variable
|
|
4043
4124
|
* (`set_config('app.bypass_rls', 'true', true)`) or the equivalent in
|
|
4044
|
-
* Django/other stacks. The execution context lives for
|
|
4045
|
-
*
|
|
4125
|
+
* Django/other stacks. The execution context lives for the call it wraps
|
|
4126
|
+
* (AsyncLocalStorage / `contextvars` etc.).
|
|
4046
4127
|
*
|
|
4047
4128
|
* SuperAdmin operations are platform-wide without tenant scope — without
|
|
4048
4129
|
* bypass, all RLS-protected reads would come back empty.
|
|
4130
|
+
*
|
|
4131
|
+
* **Not only inside a request.** The platform's boot checks read platform-wide
|
|
4132
|
+
* before anything is served: an implementation that reaches for a
|
|
4133
|
+
* request-scoped connection, or that asserts a request context is open, fails
|
|
4134
|
+
* at start rather than where it is called. Wrap the call the way it is given —
|
|
4135
|
+
* `AsyncLocalStorage.run` is the shape both shipped adapters use, and it is as
|
|
4136
|
+
* good at boot as it is in a request.
|
|
4049
4137
|
*/
|
|
4050
4138
|
interface RlsBypassPort {
|
|
4051
4139
|
runWithBypass<T>(fn: () => Promise<T>): Promise<T>;
|
|
@@ -4596,7 +4684,18 @@ interface SubscriberPaymentMethodRepository {
|
|
|
4596
4684
|
* the history rather than overwriting the row (`SC-PRIC-030`).
|
|
4597
4685
|
*/
|
|
4598
4686
|
findByReference(gatewayAccount: string, paymentMethodRef: string, tx?: TransactionContext): Promise<SubscriberPaymentMethodRecord | null>;
|
|
4599
|
-
/**
|
|
4687
|
+
/**
|
|
4688
|
+
* Every account that holds a payment method in use, each once.
|
|
4689
|
+
*
|
|
4690
|
+
* Platform-wide: anchored by no subscriber and no tenant, and a start makes
|
|
4691
|
+
* it before anything is served, to refuse a configuration that no longer
|
|
4692
|
+
* names an account somebody's payment method is held at. An implementation
|
|
4693
|
+
* on a tenant-scoped client must read RLS-exempt — the platform wraps the
|
|
4694
|
+
* call in `RlsBypassPort`, and one that answers with the caller's tenant
|
|
4695
|
+
* scope instead returns an empty list at a boot, where there is no tenant,
|
|
4696
|
+
* so the check that exists to refuse passes. The persistence contract runs
|
|
4697
|
+
* with no policy forced, so it cannot catch that for you.
|
|
4698
|
+
*/
|
|
4600
4699
|
accountsInUse(): Promise<string[]>;
|
|
4601
4700
|
/**
|
|
4602
4701
|
* Records a change of payment method a tenant started, open until its
|
|
@@ -6304,8 +6403,103 @@ declare function toPlanRow(row: CanonicalPlanRow): PlanRow;
|
|
|
6304
6403
|
*/
|
|
6305
6404
|
declare function toPlanVersionRow(row: CanonicalPlanVersionRow, planKey: string, fields: PlanVersionMappingFields): PlanVersionRow;
|
|
6306
6405
|
|
|
6307
|
-
/**
|
|
6308
|
-
|
|
6406
|
+
/**
|
|
6407
|
+
* The legal identity of the issuer a catalogue names, or none where it names no
|
|
6408
|
+
* issuer.
|
|
6409
|
+
*
|
|
6410
|
+
* Settled through the same reader as the recorded side, and that symmetry is
|
|
6411
|
+
* the point rather than tidiness: the record is a verbatim copy of the file, so
|
|
6412
|
+
* a value whose two sides were settled differently would differ from itself. A
|
|
6413
|
+
* legal name written with a trailing space would then refuse the SECOND start on
|
|
6414
|
+
* a file nobody touched, and no declaration could make it stop happening.
|
|
6415
|
+
*/
|
|
6416
|
+
declare function issuerIdentityOf(issuer: PlanCatalogIssuer | undefined): LegalIdentity | null;
|
|
6417
|
+
/**
|
|
6418
|
+
* The issuer identity a recorded settings tree holds.
|
|
6419
|
+
*
|
|
6420
|
+
* Read defensively rather than cast: the record is JSON as some earlier version
|
|
6421
|
+
* of this platform wrote it, and a tree without an issuer, or with one whose
|
|
6422
|
+
* legal name is not a name, is read as "no identity was recorded" — which is
|
|
6423
|
+
* the first naming, not a change. The schema keeps a name of only whitespace out
|
|
6424
|
+
* of the file; this keeps one out of a record written before it did.
|
|
6425
|
+
*/
|
|
6426
|
+
declare function recordedIssuerIdentity(settings: AppliedSettingsValues | null | undefined): LegalIdentity | null;
|
|
6427
|
+
/** Why `issuer.correctionOf` does not cover the change it is there to declare. */
|
|
6428
|
+
type IssuerCorrectionFault =
|
|
6429
|
+
/** There is no declaration at all. */
|
|
6430
|
+
{
|
|
6431
|
+
kind: 'absent';
|
|
6432
|
+
}
|
|
6433
|
+
/**
|
|
6434
|
+
* The file names no issuer for a declaration to be about — the block is
|
|
6435
|
+
* gone, or it is there with a name that reads as nothing. Never a
|
|
6436
|
+
* correction, whatever is declared: there is no entity on this side for the
|
|
6437
|
+
* recorded one to be the same as.
|
|
6438
|
+
*/
|
|
6439
|
+
| {
|
|
6440
|
+
kind: 'names-no-issuer';
|
|
6441
|
+
}
|
|
6442
|
+
/**
|
|
6443
|
+
* It names a value the record does not hold. Either the declaration is
|
|
6444
|
+
* stale — it belongs to a correction already applied — or it is about
|
|
6445
|
+
* another entity than the one this installation recorded.
|
|
6446
|
+
*/
|
|
6447
|
+
| {
|
|
6448
|
+
kind: 'names-another-value';
|
|
6449
|
+
field: LegalIdentityField;
|
|
6450
|
+
declared: string | null;
|
|
6451
|
+
recorded: string | null;
|
|
6452
|
+
}
|
|
6453
|
+
/** It says nothing about a field the change moves, so that field is undeclared. */
|
|
6454
|
+
| {
|
|
6455
|
+
kind: 'leaves-a-field-out';
|
|
6456
|
+
field: LegalIdentityField;
|
|
6457
|
+
recorded: string | null;
|
|
6458
|
+
};
|
|
6459
|
+
/** What a start finds when it compares the file's issuer with the recorded one. */
|
|
6460
|
+
type IssuerIdentityChange =
|
|
6461
|
+
/** Neither the record nor the file names an issuer. */
|
|
6462
|
+
{
|
|
6463
|
+
kind: 'none-named';
|
|
6464
|
+
}
|
|
6465
|
+
/** The same entity, whatever the address and the contact details did. */
|
|
6466
|
+
| {
|
|
6467
|
+
kind: 'unchanged';
|
|
6468
|
+
identity: LegalIdentity;
|
|
6469
|
+
}
|
|
6470
|
+
/**
|
|
6471
|
+
* The first issuer this installation names. No contract can have been
|
|
6472
|
+
* concluded under another one, so nothing is declared for it.
|
|
6473
|
+
*/
|
|
6474
|
+
| {
|
|
6475
|
+
kind: 'first-naming';
|
|
6476
|
+
identity: LegalIdentity;
|
|
6477
|
+
}
|
|
6478
|
+
/** The same entity, corrected as the file declares. `current` is never absent. */
|
|
6479
|
+
| {
|
|
6480
|
+
kind: 'corrected';
|
|
6481
|
+
recorded: LegalIdentity;
|
|
6482
|
+
current: LegalIdentity;
|
|
6483
|
+
moved: readonly LegalIdentityField[];
|
|
6484
|
+
reason: string;
|
|
6485
|
+
}
|
|
6486
|
+
/** Another identity, with no declaration that covers it. Refused. */
|
|
6487
|
+
| {
|
|
6488
|
+
kind: 'undeclared';
|
|
6489
|
+
recorded: LegalIdentity;
|
|
6490
|
+
/** `null` where the file names no issuer that has a name — see `names-no-issuer`. */
|
|
6491
|
+
current: LegalIdentity | null;
|
|
6492
|
+
moved: readonly LegalIdentityField[];
|
|
6493
|
+
fault: IssuerCorrectionFault;
|
|
6494
|
+
};
|
|
6495
|
+
/**
|
|
6496
|
+
* What the issuer in the file is, against the identity the record holds.
|
|
6497
|
+
*
|
|
6498
|
+
* `recorded` is `null` on the very first start, and on an installation that
|
|
6499
|
+
* has never named an issuer.
|
|
6500
|
+
*/
|
|
6501
|
+
declare function classifyIssuerChange(recorded: LegalIdentity | null, issuer: PlanCatalogIssuer | undefined): IssuerIdentityChange;
|
|
6502
|
+
|
|
6309
6503
|
/** A `subscribers` row as either adapter reads it back. */
|
|
6310
6504
|
interface CanonicalSubscriberRow {
|
|
6311
6505
|
id: string;
|
|
@@ -6348,7 +6542,7 @@ declare function toSubscriberCorrectionRecord(row: CanonicalSubscriberCorrection
|
|
|
6348
6542
|
* stored value differs, with the value it replaces. Both adapters decide this
|
|
6349
6543
|
* the same way, under the lock they read `current` with.
|
|
6350
6544
|
*/
|
|
6351
|
-
declare function identityCorrectionDelta(current: Pick<SubscriberRecord,
|
|
6545
|
+
declare function identityCorrectionDelta(current: Pick<SubscriberRecord, LegalIdentityField>, corrected: SubscriberIdentityValues): SubscriberIdentityDelta;
|
|
6352
6546
|
/**
|
|
6353
6547
|
* Who a new contract is between: the subscriber as it stands, and the issuer as
|
|
6354
6548
|
* the running configuration names it — or no issuer, where it names none.
|
|
@@ -6443,6 +6637,20 @@ interface CanonicalContractLineItemRow {
|
|
|
6443
6637
|
}
|
|
6444
6638
|
declare function toSubscriptionContractRecord(row: CanonicalContractRow, lineItems: CanonicalContractLineItemRow[]): SubscriptionContractRecord;
|
|
6445
6639
|
declare function toContractLineItemRecord(row: CanonicalContractLineItemRow): ContractLineItemRecord;
|
|
6640
|
+
/**
|
|
6641
|
+
* The columns the issuer check reads off a running contract. A narrow row of
|
|
6642
|
+
* its own, because that query selects four columns rather than the whole
|
|
6643
|
+
* contract with its lines: it runs at every start, and an installation with
|
|
6644
|
+
* thousands of running contracts should not load them to count them.
|
|
6645
|
+
*/
|
|
6646
|
+
interface CanonicalRunningContractRow {
|
|
6647
|
+
id: string;
|
|
6648
|
+
tenantId: string;
|
|
6649
|
+
issuerSnapshot: unknown;
|
|
6650
|
+
effectiveFrom: Date;
|
|
6651
|
+
}
|
|
6652
|
+
/** One running contract, and the legal name on its issuer copy where it has one. */
|
|
6653
|
+
declare function toRunningContractIssuer(row: CanonicalRunningContractRow): RunningContractIssuer;
|
|
6446
6654
|
|
|
6447
6655
|
/** Why a version is editable (for UI badges + audit logs). */
|
|
6448
6656
|
type VersionEditableReason = 'draft' | 'pre-active';
|
|
@@ -6525,4 +6733,4 @@ declare function resolveErrorMessage(body: ResolvableErrorBody, overrides?: Part
|
|
|
6525
6733
|
|
|
6526
6734
|
declare const ERROR_MESSAGES_DE: Record<PlatformErrorCode, string>;
|
|
6527
6735
|
|
|
6528
|
-
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 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, type ImmediatePlanChangeInput, type InvoiceLineItemSnapshot, type KpiCardDef, type KpiDisplayHint, type LegalIdentity, 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 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 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 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 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, SETTINGS_ERROR_CODES, SETUP_ERROR_CODES, SUBSCRIBER_ERROR_CODES, SUBSCRIBER_IDENTITY_FIELDS, 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 SubscriberIdentityField, type SubscriberIdentityValues, type SubscriberPaymentMethodRecord, 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, classifyPlanDiff, collectUnsatisfiedRequires, contractPartiesOf, coverageExcludingSelf, definedFields, diffSettings, formatCustomerNumber, formatErrorMessage, identityCorrectionDelta, isBundleRedundant, isPaymentCallbackRejectedError, isPlatformUserExistsError, isVersionEditable, keepOneRecommended, missingRequiresFor, pickActivePromo, planCatalogSettingsOf, previousUtcDay, promoStatus, readQuotaRecord, readQuotaValue, resolveBundleAvailability, resolveErrorMessage, selectChargeableBundles, settingsSubtreeOf, startOfUtcDay, subscriberFromRegistration, subscriberPaymentMethodColumns, toBundleStemRow, toContractLineItemRecord, toPlanRow, toPlanVersionRow, toSubscriberCorrectionRecord, toSubscriberPaymentMethodRecord, toSubscriberRecord, toSubscriptionContractRecord };
|
|
6736
|
+
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, 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 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 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 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 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, isPaymentCallbackRejectedError, isPlatformUserExistsError, isVersionEditable, issuerIdentityOf, keepOneRecommended, missingRequiresFor, movedIdentityFields, pickActivePromo, planCatalogSettingsOf, previousUtcDay, promoStatus, readQuotaRecord, readQuotaValue, recordedIssuerIdentity, resolveBundleAvailability, resolveErrorMessage, sameLegalIdentity, selectChargeableBundles, settingsSubtreeOf, startOfUtcDay, subscriberFromRegistration, subscriberPaymentMethodColumns, toBundleStemRow, toContractLineItemRecord, toPlanRow, toPlanVersionRow, toRunningContractIssuer, toSubscriberCorrectionRecord, toSubscriberPaymentMethodRecord, toSubscriberRecord, toSubscriptionContractRecord };
|