@stewardhq/sdk 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +123 -88
  2. package/dist/_chunks/errors.js +1 -1
  3. package/dist/_chunks/events.d.ts +315 -4
  4. package/dist/_chunks/events.js +1155 -9
  5. package/dist/_chunks/index.d.ts +3473 -90
  6. package/dist/_chunks/locale.d.ts +269 -1
  7. package/dist/_chunks/src.js +842 -24
  8. package/dist/_chunks/validators.d.ts +45 -1
  9. package/dist/_chunks/validators.js +128 -27
  10. package/dist/contract.d.ts +4 -4
  11. package/dist/contract.js +4 -4
  12. package/dist/index.d.ts +436 -22
  13. package/dist/index.js +1659 -26
  14. package/dist/server.d.ts +44 -6
  15. package/dist/server.js +29 -2
  16. package/package.json +4 -10
  17. package/dist/_chunks/steward.d.ts +0 -189
  18. package/dist/_chunks/steward.js +0 -560
  19. package/dist/testing/fixtures/events/LOCK.json +0 -27
  20. package/dist/testing/fixtures/events/account.deleted.json +0 -36
  21. package/dist/testing/fixtures/events/account.state_changed.json +0 -53
  22. package/dist/testing/fixtures/events/account.updated.json +0 -37
  23. package/dist/testing/fixtures/events/checkout.completed.json +0 -36
  24. package/dist/testing/fixtures/events/checkout.expired.json +0 -26
  25. package/dist/testing/fixtures/events/checkout.failed.json +0 -27
  26. package/dist/testing/fixtures/events/invoice.created.json +0 -37
  27. package/dist/testing/fixtures/events/invoice.issued.json +0 -38
  28. package/dist/testing/fixtures/events/invoice.voided.json +0 -39
  29. package/dist/testing/fixtures/events/subscription.activated.json +0 -40
  30. package/dist/testing/fixtures/events/subscription.cancel_scheduled.json +0 -38
  31. package/dist/testing/fixtures/events/subscription.canceled.json +0 -29
  32. package/dist/testing/fixtures/events/subscription.expired.json +0 -27
  33. package/dist/testing/fixtures/events/subscription.payment_failed.json +0 -38
  34. package/dist/testing/fixtures/events/subscription.reactivated.json +0 -36
  35. package/dist/testing/fixtures/events/subscription.renewed.json +0 -39
  36. package/dist/testing/fixtures/events/subscription.suspended.json +0 -36
  37. package/dist/testing/fixtures/events/subscription.terminated.json +0 -28
  38. package/dist/testing.d.ts +0 -626
  39. package/dist/testing.js +0 -3638
@@ -1,4 +1,4 @@
1
- import { G as EntitlementSnapshot, f as EventType, q as SubscriptionStatus } from "./events.js";
1
+ import { $ as EntitlementSnapshot, U as AccountState, f as EventType, tt as SubscriptionStatus } from "./events.js";
2
2
  import { z } from "zod";
3
3
  //#region ../contract/src/common.d.ts
4
4
  declare const API_VERSION = "2026-10-01";
@@ -26,6 +26,33 @@ type EntitlementValue = z.infer<typeof EntitlementValueSchema>;
26
26
  declare const EntitlementsSchema: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
27
27
  type Entitlements = z.infer<typeof EntitlementsSchema>;
28
28
  declare const MetadataSchema: z.ZodRecord<z.ZodString, z.ZodString>;
29
+ /**
30
+ * Why an invoice was written (Polar `billing_reason`): `subscription_create` first period,
31
+ * `subscription_cycle` renewal (phase 2 adds overage lines to it), `subscription_update` plan
32
+ * change, `purchase` reserved (one-off purchases are deferred), `manual` staff-written.
33
+ */
34
+ declare const INVOICE_BILLING_REASONS: readonly ["subscription_create", "subscription_cycle", "subscription_update", "purchase", "manual"];
35
+ declare const InvoiceBillingReasonSchema: z.ZodEnum<{
36
+ subscription_create: "subscription_create";
37
+ subscription_cycle: "subscription_cycle";
38
+ subscription_update: "subscription_update";
39
+ purchase: "purchase";
40
+ manual: "manual";
41
+ }>;
42
+ type InvoiceBillingReason = z.infer<typeof InvoiceBillingReasonSchema>;
43
+ /**
44
+ * Collection state of an invoice written before payment: `unpaid` (open, has `dueAt`), `paid`,
45
+ * `uncollectible` (given up after dunning), `waived` (operator forgave it). Invoices written the
46
+ * pre-billing-core way (after a payment, manual invoices) carry no payment status.
47
+ */
48
+ declare const INVOICE_PAYMENT_STATUSES: readonly ["unpaid", "paid", "uncollectible", "waived"];
49
+ declare const InvoicePaymentStatusSchema: z.ZodEnum<{
50
+ unpaid: "unpaid";
51
+ paid: "paid";
52
+ uncollectible: "uncollectible";
53
+ waived: "waived";
54
+ }>;
55
+ type InvoicePaymentStatus = z.infer<typeof InvoicePaymentStatusSchema>;
29
56
  declare const ERROR_CATEGORIES: readonly ["validation", "not_found", "conflict", "config", "provider", "unavailable"];
30
57
  declare const ErrorCategorySchema: z.ZodEnum<{
31
58
  validation: "validation";
@@ -58,6 +85,602 @@ declare const ErrorResponseSchema: z.ZodObject<{
58
85
  }, z.core.$strip>;
59
86
  type ErrorResponse = z.infer<typeof ErrorResponseSchema>;
60
87
  //#endregion
88
+ //#region ../contract/src/meters.d.ts
89
+ declare const METER_FILTER_OPERATORS: readonly ["eq", "ne", "gt", "gte", "lt", "lte", "like", "not_like"];
90
+ type MeterFilterOperator = (typeof METER_FILTER_OPERATORS)[number];
91
+ /** Deepest nesting of `and`/`or` groups. */
92
+ declare const METER_FILTER_MAX_DEPTH = 3;
93
+ /** Most conditions in one filter. */
94
+ declare const METER_FILTER_MAX_CONDITIONS = 20;
95
+ type MeterFilterValue = string | number | boolean;
96
+ type MeterFilterOperand = {
97
+ readonly eq: MeterFilterValue;
98
+ } | {
99
+ readonly ne: MeterFilterValue;
100
+ } | {
101
+ readonly gt: number;
102
+ } | {
103
+ readonly gte: number;
104
+ } | {
105
+ readonly lt: number;
106
+ } | {
107
+ readonly lte: number;
108
+ } | {
109
+ readonly like: string;
110
+ } | {
111
+ readonly not_like: string;
112
+ };
113
+ /** One condition: exactly one property (`name` or `metadata.<key>`). */
114
+ type MeterFilterCondition = {
115
+ readonly [property: string]: MeterFilterValue | MeterFilterOperand;
116
+ };
117
+ type MeterFilterGroup = {
118
+ readonly and: readonly MeterFilter[];
119
+ } | {
120
+ readonly or: readonly MeterFilter[];
121
+ };
122
+ type MeterFilter = MeterFilterGroup | MeterFilterCondition;
123
+ /** A condition in explicit form. `property` is `name` or `metadata.<key>`. */
124
+ type MeterFilterClause = {
125
+ property: string;
126
+ operator: MeterFilterOperator;
127
+ value: MeterFilterValue;
128
+ };
129
+ /**
130
+ * The explicit form of a condition, or `null` when it is not a valid condition (the schema reports
131
+ * why). `{name: "x"}` → `{property: "name", operator: "eq", value: "x"}`.
132
+ */
133
+ declare function meterFilterClauseOf(condition: MeterFilterCondition): MeterFilterClause | null;
134
+ /** Meter filter (see the syntax above). Validates structure; the value is kept as given. */
135
+ declare const MeterFilterSchema: z.ZodCustom<MeterFilter, MeterFilter>;
136
+ /**
137
+ * Canonical form of a valid filter: every condition explicit (`{name: "x"}` → `{name: {eq: "x"}}`),
138
+ * a fresh object. Two filters that differ only by the shorthand have the same canonical JSON
139
+ * (the lock check, M4, compares canonical filters). Throws on an invalid filter.
140
+ */
141
+ declare function canonicalMeterFilter(filter: MeterFilter): MeterFilter;
142
+ /**
143
+ * What a meter computes over its matching events in a period (M4; no `min`/`avg`):
144
+ * `count` events; `sum` / `max` of the finite, non-negative number at `metadata.<key>` (decimals
145
+ * allowed); `unique` count of distinct values at `metadata.<key>`. An event without a usable
146
+ * value adds nothing to that meter (`invalid_value`, shown by doctor).
147
+ */
148
+ declare const METER_AGGREGATION_KINDS: readonly ["count", "sum", "max", "unique"];
149
+ type MeterAggregationKind = (typeof METER_AGGREGATION_KINDS)[number];
150
+ declare const MeterAggregationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
151
+ kind: z.ZodLiteral<"count">;
152
+ }, z.core.$strip>, z.ZodObject<{
153
+ kind: z.ZodLiteral<"sum">;
154
+ key: z.ZodString;
155
+ }, z.core.$strip>, z.ZodObject<{
156
+ kind: z.ZodLiteral<"max">;
157
+ key: z.ZodString;
158
+ }, z.core.$strip>, z.ZodObject<{
159
+ kind: z.ZodLiteral<"unique">;
160
+ key: z.ZodString;
161
+ }, z.core.$strip>], "kind">;
162
+ type MeterAggregation = z.infer<typeof MeterAggregationSchema>;
163
+ /** Largest unit amount in a definition (credit, rollover cap, credit grant): exact as a JSON number. */
164
+ declare const MAX_METER_UNITS = 1000000000000000;
165
+ /** Default `lowAt` (M14): standing becomes `low` at 80% of the credit. */
166
+ declare const DEFAULT_METER_LOW_AT = 0.8;
167
+ /** A positive unit amount in a definition: at most 6 decimals (M4), at most `MAX_METER_UNITS`. */
168
+ declare const MeterUnitsSchema: z.ZodNumber;
169
+ /** Customer-facing text per locale (hosted checkout and portal). Both locales are required. */
170
+ declare const MeterLabelSchema: z.ZodObject<{
171
+ tr: z.ZodString;
172
+ en: z.ZodString;
173
+ }, z.core.$strip>;
174
+ type MeterLabel = z.infer<typeof MeterLabelSchema>;
175
+ /** Share of the credit at which standing becomes `low`: 0 < x ≤ 1, at most 6 decimals. */
176
+ declare const MeterLowAtSchema: z.ZodNumber;
177
+ /**
178
+ * Meter definition (catalog sync input; the record key is the meter code). Input takes `event`
179
+ * and/or `filter`; the output has only `filter`, canonical, `event` folded in (`{and: [{name:
180
+ * {eq: event}}, …filter]}`). Filter and aggregation lock once the meter's first period opened
181
+ * (`422 meter_locked`; M4): a change means a new code.
182
+ */
183
+ declare const MeterDefSchema: z.ZodPipe<z.ZodObject<{
184
+ event: z.ZodOptional<z.ZodString>;
185
+ filter: z.ZodOptional<z.ZodCustom<MeterFilter, MeterFilter>>;
186
+ aggregation: z.ZodDiscriminatedUnion<[z.ZodObject<{
187
+ kind: z.ZodLiteral<"count">;
188
+ }, z.core.$strip>, z.ZodObject<{
189
+ kind: z.ZodLiteral<"sum">;
190
+ key: z.ZodString;
191
+ }, z.core.$strip>, z.ZodObject<{
192
+ kind: z.ZodLiteral<"max">;
193
+ key: z.ZodString;
194
+ }, z.core.$strip>, z.ZodObject<{
195
+ kind: z.ZodLiteral<"unique">;
196
+ key: z.ZodString;
197
+ }, z.core.$strip>], "kind">;
198
+ label: z.ZodObject<{
199
+ tr: z.ZodString;
200
+ en: z.ZodString;
201
+ }, z.core.$strip>;
202
+ unitLabel: z.ZodOptional<z.ZodObject<{
203
+ tr: z.ZodString;
204
+ en: z.ZodString;
205
+ }, z.core.$strip>>;
206
+ displayPer: z.ZodOptional<z.ZodNumber>;
207
+ lowAt: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
208
+ }, z.core.$strip>, z.ZodTransform<{
209
+ aggregation: {
210
+ kind: "count";
211
+ } | {
212
+ kind: "sum";
213
+ key: string;
214
+ } | {
215
+ kind: "max";
216
+ key: string;
217
+ } | {
218
+ kind: "unique";
219
+ key: string;
220
+ };
221
+ label: {
222
+ tr: string;
223
+ en: string;
224
+ };
225
+ lowAt: number | null;
226
+ unitLabel?: {
227
+ tr: string;
228
+ en: string;
229
+ } | undefined;
230
+ displayPer?: number | undefined;
231
+ filter: MeterFilter;
232
+ }, {
233
+ aggregation: {
234
+ kind: "count";
235
+ } | {
236
+ kind: "sum";
237
+ key: string;
238
+ } | {
239
+ kind: "max";
240
+ key: string;
241
+ } | {
242
+ kind: "unique";
243
+ key: string;
244
+ };
245
+ label: {
246
+ tr: string;
247
+ en: string;
248
+ };
249
+ lowAt: number | null;
250
+ event?: string | undefined;
251
+ filter?: MeterFilter | undefined;
252
+ unitLabel?: {
253
+ tr: string;
254
+ en: string;
255
+ } | undefined;
256
+ displayPer?: number | undefined;
257
+ }>>;
258
+ type MeterDef = z.output<typeof MeterDefSchema>;
259
+ type MeterDefInput = z.input<typeof MeterDefSchema>;
260
+ /**
261
+ * A meter as returned by `GET /v1/catalog` (active meters). Lenient for forward compatibility: a
262
+ * newer steward may use filter or aggregation forms this version does not define; narrow `filter`
263
+ * with `MeterFilterSchema` and `aggregation` with `MeterAggregationSchema`.
264
+ */
265
+ declare const CatalogMeterSchema: z.ZodObject<{
266
+ filter: z.ZodUnknown;
267
+ aggregation: z.ZodObject<{
268
+ kind: z.ZodString;
269
+ key: z.ZodOptional<z.ZodString>;
270
+ }, z.core.$loose>;
271
+ label: z.ZodObject<{
272
+ tr: z.ZodString;
273
+ en: z.ZodString;
274
+ }, z.core.$strip>;
275
+ unitLabel: z.ZodOptional<z.ZodObject<{
276
+ tr: z.ZodString;
277
+ en: z.ZodString;
278
+ }, z.core.$strip>>;
279
+ displayPer: z.ZodOptional<z.ZodNumber>;
280
+ lowAt: z.ZodNullable<z.ZodNumber>;
281
+ }, z.core.$strip>;
282
+ type CatalogMeter = z.infer<typeof CatalogMeterSchema>;
283
+ /**
284
+ * `meter_credit` benefit properties (M5, M6): `units` granted at the start of every meter period
285
+ * (plan + add-ons for the same meter add up; the default plan's credit only when no other layer
286
+ * credits the meter — `meterCreditsOf`); `rolloverCapUnits` turns rollover on — the unused
287
+ * balance carries over up to the cap (absent: unused credit expires; debt never carries).
288
+ */
289
+ declare const MeterCreditPropertiesSchema: z.ZodObject<{
290
+ meter: z.ZodString;
291
+ units: z.ZodNumber;
292
+ rolloverCapUnits: z.ZodOptional<z.ZodNumber>;
293
+ }, z.core.$strip>;
294
+ type MeterCreditProperties = z.infer<typeof MeterCreditPropertiesSchema>;
295
+ /** Largest `perUnits` of a metered price. */
296
+ declare const MAX_METERED_PRICE_PER_UNITS = 1000000000000;
297
+ /**
298
+ * Metered price (catalog sync input; MF5, M20): overage above the credit is billed
299
+ * `amountMinor` per `perUnits` units ("₺12,50 / 1.000 token" = `{amountMinor: 1250, perUnits:
300
+ * 1000}`; an integer pair, no decimal unit price). Key `(planCode, meter, currency)`. Tax terms
301
+ * must equal the plan's base prices in that currency (`metered_price_tax_mismatch`). `capMinor`
302
+ * caps the overage amount per meter period. Mutable in place like base prices (M36); a
303
+ * subscription locks the rate it started with.
304
+ */
305
+ declare const MeteredPriceDefSchema: z.ZodObject<{
306
+ planCode: z.ZodString;
307
+ meter: z.ZodString;
308
+ currency: z.ZodString;
309
+ amountMinor: z.ZodNumber;
310
+ perUnits: z.ZodNumber;
311
+ taxInclusive: z.ZodBoolean;
312
+ taxRateBps: z.ZodNumber;
313
+ capMinor: z.ZodOptional<z.ZodNumber>;
314
+ }, z.core.$strip>;
315
+ type MeteredPriceDef = z.infer<typeof MeteredPriceDefSchema>;
316
+ /** Metered price as returned by `GET /v1/catalog` (active ones). */
317
+ declare const MeteredPriceSchema: z.ZodObject<{
318
+ planCode: z.ZodString;
319
+ meter: z.ZodString;
320
+ currency: z.ZodString;
321
+ amountMinor: z.ZodNumber;
322
+ perUnits: z.ZodNumber;
323
+ taxInclusive: z.ZodBoolean;
324
+ taxRateBps: z.ZodNumber;
325
+ id: z.ZodUUID;
326
+ active: z.ZodBoolean;
327
+ capMinor: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
328
+ createdAt: z.ZodISODateTime;
329
+ }, z.core.$strip>;
330
+ type MeteredPrice = z.infer<typeof MeteredPriceSchema>;
331
+ /**
332
+ * Credit standing of a meter in its period (M14): `low` once consumption reaches `lowAt` × credit,
333
+ * `exhausted` once the balance is ≤ 0; a meter without credit is always `ok`. Standing describes
334
+ * the credit only: a billable meter (metered price) keeps working past `exhausted` (M15).
335
+ */
336
+ declare const METER_STANDINGS: readonly ["ok", "low", "exhausted"];
337
+ declare const MeterStandingSchema: z.ZodEnum<{
338
+ ok: "ok";
339
+ low: "low";
340
+ exhausted: "exhausted";
341
+ }>;
342
+ type MeterStanding = z.infer<typeof MeterStandingSchema>;
343
+ /**
344
+ * Units as a decimal string (invoice lines, meter charges): non-negative, at most 6 decimals.
345
+ * Steward writes the canonical form (`microToDecimalString`: no exponent, no trailing zeros).
346
+ */
347
+ declare const DecimalUnitsStringSchema: z.ZodString;
348
+ /** One meter of `GET /v1/accounts/:ref/meters`: the meter's OPEN period (periods are per meter, M7). */
349
+ declare const AccountMeterSchema: z.ZodObject<{
350
+ periodStart: z.ZodISODateTime;
351
+ periodEnd: z.ZodISODateTime;
352
+ includedUnits: z.ZodNullable<z.ZodNumber>;
353
+ consumedUnits: z.ZodNumber;
354
+ creditedUnits: z.ZodNumber;
355
+ balance: z.ZodNumber;
356
+ overageUnits: z.ZodNumber;
357
+ standing: z.ZodEnum<{
358
+ ok: "ok";
359
+ low: "low";
360
+ exhausted: "exhausted";
361
+ }>;
362
+ billable: z.ZodBoolean;
363
+ amountDueMinor: z.ZodNullable<z.ZodNumber>;
364
+ currency: z.ZodNullable<z.ZodString>;
365
+ capReached: z.ZodOptional<z.ZodBoolean>;
366
+ }, z.core.$strip>;
367
+ type AccountMeter = z.infer<typeof AccountMeterSchema>;
368
+ /**
369
+ * `GET /v1/accounts/:ref/meters` (M13): a meter READ, not a second state model — no version, no
370
+ * events. ETag = the account's `meters_seq` (rollup and credit writes); `If-None-Match` → 304.
371
+ * `rolledUpThrough`: events received before this moment are counted.
372
+ */
373
+ declare const AccountMetersSchema: z.ZodObject<{
374
+ ref: z.ZodString;
375
+ asOf: z.ZodISODateTime;
376
+ rolledUpThrough: z.ZodISODateTime;
377
+ meters: z.ZodRecord<z.ZodString, z.ZodObject<{
378
+ periodStart: z.ZodISODateTime;
379
+ periodEnd: z.ZodISODateTime;
380
+ includedUnits: z.ZodNullable<z.ZodNumber>;
381
+ consumedUnits: z.ZodNumber;
382
+ creditedUnits: z.ZodNumber;
383
+ balance: z.ZodNumber;
384
+ overageUnits: z.ZodNumber;
385
+ standing: z.ZodEnum<{
386
+ ok: "ok";
387
+ low: "low";
388
+ exhausted: "exhausted";
389
+ }>;
390
+ billable: z.ZodBoolean;
391
+ amountDueMinor: z.ZodNullable<z.ZodNumber>;
392
+ currency: z.ZodNullable<z.ZodString>;
393
+ capReached: z.ZodOptional<z.ZodBoolean>;
394
+ }, z.core.$strip>>;
395
+ }, z.core.$strip>;
396
+ type AccountMeters = z.infer<typeof AccountMetersSchema>;
397
+ declare const METER_PERIOD_STATUSES: readonly ["open", "closing", "closed"];
398
+ declare const MeterPeriodStatusSchema: z.ZodEnum<{
399
+ open: "open";
400
+ closing: "closing";
401
+ closed: "closed";
402
+ }>;
403
+ type MeterPeriodStatus = z.infer<typeof MeterPeriodStatusSchema>;
404
+ /** A meter period (`GET /v1/accounts/:ref/meters/periods`; closed periods, newest first). */
405
+ declare const MeterPeriodSchema: z.ZodObject<{
406
+ meter: z.ZodString;
407
+ periodStart: z.ZodISODateTime;
408
+ periodEnd: z.ZodISODateTime;
409
+ status: z.ZodEnum<{
410
+ open: "open";
411
+ closing: "closing";
412
+ closed: "closed";
413
+ }>;
414
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
415
+ consumedUnits: z.ZodNumber;
416
+ creditedUnits: z.ZodNumber;
417
+ overageUnits: z.ZodNumber;
418
+ closedAt: z.ZodNullable<z.ZodISODateTime>;
419
+ }, z.core.$strip>;
420
+ type MeterPeriod = z.infer<typeof MeterPeriodSchema>;
421
+ declare const MeterPeriodListSchema: z.ZodObject<{
422
+ ref: z.ZodString;
423
+ periods: z.ZodArray<z.ZodObject<{
424
+ meter: z.ZodString;
425
+ periodStart: z.ZodISODateTime;
426
+ periodEnd: z.ZodISODateTime;
427
+ status: z.ZodEnum<{
428
+ open: "open";
429
+ closing: "closing";
430
+ closed: "closed";
431
+ }>;
432
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
433
+ consumedUnits: z.ZodNumber;
434
+ creditedUnits: z.ZodNumber;
435
+ overageUnits: z.ZodNumber;
436
+ closedAt: z.ZodNullable<z.ZodISODateTime>;
437
+ }, z.core.$strip>>;
438
+ }, z.core.$strip>;
439
+ type MeterPeriodList = z.infer<typeof MeterPeriodListSchema>;
440
+ /**
441
+ * `POST /v1/accounts/:ref/credits` (M5): a one-off credit for the meter's open period (goodwill,
442
+ * campaign). Needs no benefit; recorded in the append-only credit ledger with the actor.
443
+ * Unknown meter: `422 meter_not_found`.
444
+ */
445
+ declare const CreditGrantInputSchema: z.ZodObject<{
446
+ meter: z.ZodString;
447
+ units: z.ZodNumber;
448
+ reason: z.ZodString;
449
+ }, z.core.$strip>;
450
+ type CreditGrantInput = z.input<typeof CreditGrantInputSchema>;
451
+ /** Credit ledger entry kinds (M5). Entries are never rewritten. */
452
+ declare const METER_CREDIT_ENTRY_KINDS: readonly ["cycle_grant", "rollover", "plan_change", "manual_grant", "adjustment"];
453
+ declare const MeterCreditEntryKindSchema: z.ZodEnum<{
454
+ cycle_grant: "cycle_grant";
455
+ rollover: "rollover";
456
+ plan_change: "plan_change";
457
+ manual_grant: "manual_grant";
458
+ adjustment: "adjustment";
459
+ }>;
460
+ type MeterCreditEntryKind = z.infer<typeof MeterCreditEntryKindSchema>;
461
+ declare const MeterCreditEntrySchema: z.ZodObject<{
462
+ id: z.ZodUUID;
463
+ meter: z.ZodString;
464
+ kind: z.ZodEnum<{
465
+ cycle_grant: "cycle_grant";
466
+ rollover: "rollover";
467
+ plan_change: "plan_change";
468
+ manual_grant: "manual_grant";
469
+ adjustment: "adjustment";
470
+ }>;
471
+ units: z.ZodNumber;
472
+ periodStart: z.ZodISODateTime;
473
+ reason: z.ZodNullable<z.ZodString>;
474
+ actorRef: z.ZodNullable<z.ZodString>;
475
+ createdAt: z.ZodISODateTime;
476
+ }, z.core.$strip>;
477
+ type MeterCreditEntry = z.infer<typeof MeterCreditEntrySchema>;
478
+ declare const METER_CHARGE_STATUSES: readonly ["dry_run", "carried", "invoiced"];
479
+ declare const MeterChargeStatusSchema: z.ZodEnum<{
480
+ dry_run: "dry_run";
481
+ carried: "carried";
482
+ invoiced: "invoiced";
483
+ }>;
484
+ type MeterChargeStatus = z.infer<typeof MeterChargeStatusSchema>;
485
+ /** One priced meter of a charge (M21): overage × locked rate, capped. Units are decimal strings. */
486
+ declare const MeterChargeLineSchema: z.ZodObject<{
487
+ meter: z.ZodString;
488
+ consumedUnits: z.ZodString;
489
+ creditedUnits: z.ZodString;
490
+ overageUnits: z.ZodString;
491
+ priceAmountMinor: z.ZodNumber;
492
+ pricePerUnits: z.ZodNumber;
493
+ capMinor: z.ZodNullable<z.ZodNumber>;
494
+ amountMinor: z.ZodNumber;
495
+ }, z.core.$strip>;
496
+ type MeterChargeLine = z.infer<typeof MeterChargeLineSchema>;
497
+ /**
498
+ * Pricing record of a closed meter period (M21; money data, never rewritten). Totals use the
499
+ * invoice rule (`meterChargeTotals`, one rounding). `status`: `dry_run` (chargeMode `dry_run`:
500
+ * recorded, not invoiced), `carried` (below `billing.minInvoiceMinor` on an overage-only invoice:
501
+ * carried into the next invoice), `invoiced` (`invoiceId` set). `carriedInMinor`: earlier carried
502
+ * amounts included here.
503
+ */
504
+ declare const MeterChargeSchema: z.ZodObject<{
505
+ id: z.ZodUUID;
506
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
507
+ periodStart: z.ZodISODateTime;
508
+ periodEnd: z.ZodISODateTime;
509
+ currency: z.ZodString;
510
+ taxInclusive: z.ZodBoolean;
511
+ taxRateBps: z.ZodNumber;
512
+ lines: z.ZodArray<z.ZodObject<{
513
+ meter: z.ZodString;
514
+ consumedUnits: z.ZodString;
515
+ creditedUnits: z.ZodString;
516
+ overageUnits: z.ZodString;
517
+ priceAmountMinor: z.ZodNumber;
518
+ pricePerUnits: z.ZodNumber;
519
+ capMinor: z.ZodNullable<z.ZodNumber>;
520
+ amountMinor: z.ZodNumber;
521
+ }, z.core.$strip>>;
522
+ subtotalMinor: z.ZodNumber;
523
+ taxMinor: z.ZodNumber;
524
+ totalMinor: z.ZodNumber;
525
+ carriedInMinor: z.ZodNumber;
526
+ status: z.ZodEnum<{
527
+ dry_run: "dry_run";
528
+ carried: "carried";
529
+ invoiced: "invoiced";
530
+ }>;
531
+ invoiceId: z.ZodNullable<z.ZodUUID>;
532
+ createdAt: z.ZodISODateTime;
533
+ }, z.core.$strip>;
534
+ type MeterCharge = z.infer<typeof MeterChargeSchema>;
535
+ /** `GET /v1/accounts/:ref/meter-charges` (newest first). */
536
+ declare const MeterChargeListSchema: z.ZodObject<{
537
+ ref: z.ZodString;
538
+ charges: z.ZodArray<z.ZodObject<{
539
+ id: z.ZodUUID;
540
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
541
+ periodStart: z.ZodISODateTime;
542
+ periodEnd: z.ZodISODateTime;
543
+ currency: z.ZodString;
544
+ taxInclusive: z.ZodBoolean;
545
+ taxRateBps: z.ZodNumber;
546
+ lines: z.ZodArray<z.ZodObject<{
547
+ meter: z.ZodString;
548
+ consumedUnits: z.ZodString;
549
+ creditedUnits: z.ZodString;
550
+ overageUnits: z.ZodString;
551
+ priceAmountMinor: z.ZodNumber;
552
+ pricePerUnits: z.ZodNumber;
553
+ capMinor: z.ZodNullable<z.ZodNumber>;
554
+ amountMinor: z.ZodNumber;
555
+ }, z.core.$strip>>;
556
+ subtotalMinor: z.ZodNumber;
557
+ taxMinor: z.ZodNumber;
558
+ totalMinor: z.ZodNumber;
559
+ carriedInMinor: z.ZodNumber;
560
+ status: z.ZodEnum<{
561
+ dry_run: "dry_run";
562
+ carried: "carried";
563
+ invoiced: "invoiced";
564
+ }>;
565
+ invoiceId: z.ZodNullable<z.ZodUUID>;
566
+ createdAt: z.ZodISODateTime;
567
+ }, z.core.$strip>>;
568
+ }, z.core.$strip>;
569
+ type MeterChargeList = z.infer<typeof MeterChargeListSchema>;
570
+ //#endregion
571
+ //#region ../contract/src/benefits.d.ts
572
+ /** Benefit types this contract version defines. */
573
+ declare const BENEFIT_TYPES: readonly ["feature_flag", "meter_credit"];
574
+ declare const BenefitTypeSchema: z.ZodEnum<{
575
+ feature_flag: "feature_flag";
576
+ meter_credit: "meter_credit";
577
+ }>;
578
+ type BenefitType = z.infer<typeof BenefitTypeSchema>;
579
+ /** Customer-facing description per locale (hosted checkout and portal "what's included"). */
580
+ declare const BenefitDescriptionSchema: z.ZodObject<{
581
+ tr: z.ZodOptional<z.ZodString>;
582
+ en: z.ZodOptional<z.ZodString>;
583
+ }, z.core.$strip>;
584
+ type BenefitDescription = z.infer<typeof BenefitDescriptionSchema>;
585
+ /** `feature_flag` properties: catalog feature key → value (K4 typing; checked against `features` on catalog sync). */
586
+ declare const FeatureFlagPropertiesSchema: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
587
+ type FeatureFlagProperties = z.infer<typeof FeatureFlagPropertiesSchema>;
588
+ declare const FeatureFlagBenefitDefSchema: z.ZodObject<{
589
+ type: z.ZodLiteral<"feature_flag">;
590
+ properties: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
591
+ description: z.ZodOptional<z.ZodObject<{
592
+ tr: z.ZodOptional<z.ZodString>;
593
+ en: z.ZodOptional<z.ZodString>;
594
+ }, z.core.$strip>>;
595
+ }, z.core.$strip>;
596
+ type FeatureFlagBenefitDef = z.infer<typeof FeatureFlagBenefitDefSchema>;
597
+ /** `meter_credit` definition (metering phase 2): the meter must be a catalog meter (checked on catalog sync). */
598
+ declare const MeterCreditBenefitDefSchema: z.ZodObject<{
599
+ type: z.ZodLiteral<"meter_credit">;
600
+ properties: z.ZodObject<{
601
+ meter: z.ZodString;
602
+ units: z.ZodNumber;
603
+ rolloverCapUnits: z.ZodOptional<z.ZodNumber>;
604
+ }, z.core.$strip>;
605
+ description: z.ZodOptional<z.ZodObject<{
606
+ tr: z.ZodOptional<z.ZodString>;
607
+ en: z.ZodOptional<z.ZodString>;
608
+ }, z.core.$strip>>;
609
+ }, z.core.$strip>;
610
+ type MeterCreditBenefitDef = z.infer<typeof MeterCreditBenefitDefSchema>;
611
+ /** Catalog benefit definition (catalog sync input), discriminated by `type`. */
612
+ declare const BenefitDefSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
613
+ type: z.ZodLiteral<"feature_flag">;
614
+ properties: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
615
+ description: z.ZodOptional<z.ZodObject<{
616
+ tr: z.ZodOptional<z.ZodString>;
617
+ en: z.ZodOptional<z.ZodString>;
618
+ }, z.core.$strip>>;
619
+ }, z.core.$strip>, z.ZodObject<{
620
+ type: z.ZodLiteral<"meter_credit">;
621
+ properties: z.ZodObject<{
622
+ meter: z.ZodString;
623
+ units: z.ZodNumber;
624
+ rolloverCapUnits: z.ZodOptional<z.ZodNumber>;
625
+ }, z.core.$strip>;
626
+ description: z.ZodOptional<z.ZodObject<{
627
+ tr: z.ZodOptional<z.ZodString>;
628
+ en: z.ZodOptional<z.ZodString>;
629
+ }, z.core.$strip>>;
630
+ }, z.core.$strip>], "type">;
631
+ type BenefitDef = z.infer<typeof BenefitDefSchema>;
632
+ /**
633
+ * Benefit definition as returned by `GET /v1/catalog`. `type` is an open set (a newer steward may
634
+ * return types this version does not define); narrow with `type === "feature_flag"`.
635
+ */
636
+ declare const CatalogBenefitSchema: z.ZodObject<{
637
+ type: z.ZodString;
638
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
639
+ description: z.ZodOptional<z.ZodObject<{
640
+ tr: z.ZodOptional<z.ZodString>;
641
+ en: z.ZodOptional<z.ZodString>;
642
+ }, z.core.$strip>>;
643
+ }, z.core.$strip>;
644
+ type CatalogBenefit = z.infer<typeof CatalogBenefitSchema>;
645
+ /**
646
+ * Where a granted benefit comes from, e.g. `plan:<code>` (default plan or a live subscription's
647
+ * plan), `grant:<id>` (a grant), `override` (account overrides). Open set: informational.
648
+ */
649
+ declare const BenefitSourceSchema: z.ZodString;
650
+ /**
651
+ * A benefit granted to the account (`AccountState.benefits[]`; Polar granted benefit).
652
+ * `code` is the catalog benefit code; `null` for an implicit benefit that has no catalog code
653
+ * (a plan's entitlement matrix, account overrides). `type` is an open set (see
654
+ * `CatalogBenefitSchema`); `properties` are the values granted.
655
+ */
656
+ declare const AccountBenefitSchema: z.ZodObject<{
657
+ code: z.ZodNullable<z.ZodString>;
658
+ type: z.ZodString;
659
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
660
+ source: z.ZodString;
661
+ grantedAt: z.ZodISODateTime;
662
+ }, z.core.$strip>;
663
+ type AccountBenefit = z.infer<typeof AccountBenefitSchema>;
664
+ type FeatureFlagAccountBenefit = AccountBenefit & {
665
+ type: "feature_flag";
666
+ properties: FeatureFlagProperties;
667
+ };
668
+ /** Narrows a granted benefit to `feature_flag` (type and property values checked). */
669
+ declare function isFeatureFlagBenefit(benefit: AccountBenefit): benefit is FeatureFlagAccountBenefit;
670
+ type MeterCreditAccountBenefit = AccountBenefit & {
671
+ type: "meter_credit";
672
+ properties: MeterCreditProperties;
673
+ };
674
+ /** Narrows a granted benefit to `meter_credit` (type and properties checked). */
675
+ declare function isMeterCreditBenefit(benefit: AccountBenefit): benefit is MeterCreditAccountBenefit;
676
+ /** Feature types (same values as `FeatureTypeSchema` in `catalog.ts`). */
677
+ type BenefitFeatureType = "limit" | "boolean" | "string";
678
+ /**
679
+ * Whether a value fits a feature type (K4): `limit` → integer ≥ 0 or `null` (unlimited),
680
+ * `boolean` → boolean, `string` → string. `null` is only valid for `limit`.
681
+ */
682
+ declare function featureValueMatchesType(type: BenefitFeatureType, value: EntitlementValue): boolean;
683
+ //#endregion
61
684
  //#region ../contract/src/catalog.d.ts
62
685
  declare const FeatureTypeSchema: z.ZodEnum<{
63
686
  string: "string";
@@ -74,14 +697,28 @@ declare const FeatureDefSchema: z.ZodObject<{
74
697
  description: z.ZodOptional<z.ZodString>;
75
698
  }, z.core.$strip>;
76
699
  type FeatureDef = z.infer<typeof FeatureDefSchema>;
700
+ /** Upper bound of benefits a plan lists. */
701
+ declare const MAX_PLAN_BENEFITS = 100;
702
+ /** Plan in the catalog sync input. */
77
703
  declare const PlanDefSchema: z.ZodObject<{
78
704
  code: z.ZodString;
79
705
  name: z.ZodString;
80
- rank: z.ZodNumber;
706
+ rank: z.ZodDefault<z.ZodNumber>;
81
707
  sellable: z.ZodBoolean;
82
708
  entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
709
+ benefits: z.ZodDefault<z.ZodArray<z.ZodString>>;
83
710
  }, z.core.$strip>;
84
711
  type PlanDef = z.infer<typeof PlanDefSchema>;
712
+ /** Plan as returned by `GET /v1/catalog`. */
713
+ declare const CatalogPlanSchema: z.ZodObject<{
714
+ code: z.ZodString;
715
+ name: z.ZodString;
716
+ rank: z.ZodDefault<z.ZodNumber>;
717
+ sellable: z.ZodBoolean;
718
+ entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
719
+ benefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
720
+ }, z.core.$strip>;
721
+ type CatalogPlan = z.infer<typeof CatalogPlanSchema>;
85
722
  declare const PriceDefSchema: z.ZodObject<{
86
723
  planCode: z.ZodString;
87
724
  interval: z.ZodEnum<{
@@ -95,6 +732,14 @@ declare const PriceDefSchema: z.ZodObject<{
95
732
  taxRateBps: z.ZodNumber;
96
733
  }, z.core.$strip>;
97
734
  type PriceDef = z.infer<typeof PriceDefSchema>;
735
+ /** Upper bound of benefit definitions in one catalog. */
736
+ declare const MAX_CATALOG_BENEFITS = 200;
737
+ /** Upper bound of meters in one catalog. */
738
+ declare const MAX_CATALOG_METERS = 100;
739
+ /** Upper bound of metered prices in one catalog. */
740
+ declare const MAX_CATALOG_METERED_PRICES = 500;
741
+ /** Issue `params.code` of a metered price whose tax terms differ from the plan's base price (M20). */
742
+ declare const METERED_PRICE_TAX_MISMATCH = "metered_price_tax_mismatch";
98
743
  declare const CatalogSyncInputSchema: z.ZodObject<{
99
744
  defaultPlanCode: z.ZodString;
100
745
  features: z.ZodArray<z.ZodObject<{
@@ -109,9 +754,10 @@ declare const CatalogSyncInputSchema: z.ZodObject<{
109
754
  plans: z.ZodArray<z.ZodObject<{
110
755
  code: z.ZodString;
111
756
  name: z.ZodString;
112
- rank: z.ZodNumber;
757
+ rank: z.ZodDefault<z.ZodNumber>;
113
758
  sellable: z.ZodBoolean;
114
759
  entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
760
+ benefits: z.ZodDefault<z.ZodArray<z.ZodString>>;
115
761
  }, z.core.$strip>>;
116
762
  prices: z.ZodArray<z.ZodObject<{
117
763
  planCode: z.ZodString;
@@ -125,6 +771,110 @@ declare const CatalogSyncInputSchema: z.ZodObject<{
125
771
  taxInclusive: z.ZodBoolean;
126
772
  taxRateBps: z.ZodNumber;
127
773
  }, z.core.$strip>>;
774
+ benefits: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
775
+ type: z.ZodLiteral<"feature_flag">;
776
+ properties: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
777
+ description: z.ZodOptional<z.ZodObject<{
778
+ tr: z.ZodOptional<z.ZodString>;
779
+ en: z.ZodOptional<z.ZodString>;
780
+ }, z.core.$strip>>;
781
+ }, z.core.$strip>, z.ZodObject<{
782
+ type: z.ZodLiteral<"meter_credit">;
783
+ properties: z.ZodObject<{
784
+ meter: z.ZodString;
785
+ units: z.ZodNumber;
786
+ rolloverCapUnits: z.ZodOptional<z.ZodNumber>;
787
+ }, z.core.$strip>;
788
+ description: z.ZodOptional<z.ZodObject<{
789
+ tr: z.ZodOptional<z.ZodString>;
790
+ en: z.ZodOptional<z.ZodString>;
791
+ }, z.core.$strip>>;
792
+ }, z.core.$strip>], "type">>>;
793
+ meters: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodObject<{
794
+ event: z.ZodOptional<z.ZodString>;
795
+ filter: z.ZodOptional<z.ZodCustom<MeterFilter, MeterFilter>>;
796
+ aggregation: z.ZodDiscriminatedUnion<[z.ZodObject<{
797
+ kind: z.ZodLiteral<"count">;
798
+ }, z.core.$strip>, z.ZodObject<{
799
+ kind: z.ZodLiteral<"sum">;
800
+ key: z.ZodString;
801
+ }, z.core.$strip>, z.ZodObject<{
802
+ kind: z.ZodLiteral<"max">;
803
+ key: z.ZodString;
804
+ }, z.core.$strip>, z.ZodObject<{
805
+ kind: z.ZodLiteral<"unique">;
806
+ key: z.ZodString;
807
+ }, z.core.$strip>], "kind">;
808
+ label: z.ZodObject<{
809
+ tr: z.ZodString;
810
+ en: z.ZodString;
811
+ }, z.core.$strip>;
812
+ unitLabel: z.ZodOptional<z.ZodObject<{
813
+ tr: z.ZodString;
814
+ en: z.ZodString;
815
+ }, z.core.$strip>>;
816
+ displayPer: z.ZodOptional<z.ZodNumber>;
817
+ lowAt: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
818
+ }, z.core.$strip>, z.ZodTransform<{
819
+ aggregation: {
820
+ kind: "count";
821
+ } | {
822
+ kind: "sum";
823
+ key: string;
824
+ } | {
825
+ kind: "max";
826
+ key: string;
827
+ } | {
828
+ kind: "unique";
829
+ key: string;
830
+ };
831
+ label: {
832
+ tr: string;
833
+ en: string;
834
+ };
835
+ lowAt: number | null;
836
+ unitLabel?: {
837
+ tr: string;
838
+ en: string;
839
+ } | undefined;
840
+ displayPer?: number | undefined;
841
+ filter: MeterFilter;
842
+ }, {
843
+ aggregation: {
844
+ kind: "count";
845
+ } | {
846
+ kind: "sum";
847
+ key: string;
848
+ } | {
849
+ kind: "max";
850
+ key: string;
851
+ } | {
852
+ kind: "unique";
853
+ key: string;
854
+ };
855
+ label: {
856
+ tr: string;
857
+ en: string;
858
+ };
859
+ lowAt: number | null;
860
+ event?: string | undefined;
861
+ filter?: MeterFilter | undefined;
862
+ unitLabel?: {
863
+ tr: string;
864
+ en: string;
865
+ } | undefined;
866
+ displayPer?: number | undefined;
867
+ }>>>>;
868
+ meteredPrices: z.ZodDefault<z.ZodArray<z.ZodObject<{
869
+ planCode: z.ZodString;
870
+ meter: z.ZodString;
871
+ currency: z.ZodString;
872
+ amountMinor: z.ZodNumber;
873
+ perUnits: z.ZodNumber;
874
+ taxInclusive: z.ZodBoolean;
875
+ taxRateBps: z.ZodNumber;
876
+ capMinor: z.ZodOptional<z.ZodNumber>;
877
+ }, z.core.$strip>>>;
128
878
  }, z.core.$strip>;
129
879
  type CatalogSyncInput = z.input<typeof CatalogSyncInputSchema>;
130
880
  declare const PriceSchema: z.ZodObject<{
@@ -158,9 +908,10 @@ declare const CatalogSchema: z.ZodObject<{
158
908
  plans: z.ZodArray<z.ZodObject<{
159
909
  code: z.ZodString;
160
910
  name: z.ZodString;
161
- rank: z.ZodNumber;
911
+ rank: z.ZodDefault<z.ZodNumber>;
162
912
  sellable: z.ZodBoolean;
163
913
  entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
914
+ benefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
164
915
  }, z.core.$strip>>;
165
916
  prices: z.ZodArray<z.ZodObject<{
166
917
  planCode: z.ZodString;
@@ -177,6 +928,44 @@ declare const CatalogSchema: z.ZodObject<{
177
928
  active: z.ZodBoolean;
178
929
  createdAt: z.ZodISODateTime;
179
930
  }, z.core.$strip>>;
931
+ benefits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
932
+ type: z.ZodString;
933
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
934
+ description: z.ZodOptional<z.ZodObject<{
935
+ tr: z.ZodOptional<z.ZodString>;
936
+ en: z.ZodOptional<z.ZodString>;
937
+ }, z.core.$strip>>;
938
+ }, z.core.$strip>>>;
939
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
940
+ filter: z.ZodUnknown;
941
+ aggregation: z.ZodObject<{
942
+ kind: z.ZodString;
943
+ key: z.ZodOptional<z.ZodString>;
944
+ }, z.core.$loose>;
945
+ label: z.ZodObject<{
946
+ tr: z.ZodString;
947
+ en: z.ZodString;
948
+ }, z.core.$strip>;
949
+ unitLabel: z.ZodOptional<z.ZodObject<{
950
+ tr: z.ZodString;
951
+ en: z.ZodString;
952
+ }, z.core.$strip>>;
953
+ displayPer: z.ZodOptional<z.ZodNumber>;
954
+ lowAt: z.ZodNullable<z.ZodNumber>;
955
+ }, z.core.$strip>>>;
956
+ meteredPrices: z.ZodOptional<z.ZodArray<z.ZodObject<{
957
+ planCode: z.ZodString;
958
+ meter: z.ZodString;
959
+ currency: z.ZodString;
960
+ amountMinor: z.ZodNumber;
961
+ perUnits: z.ZodNumber;
962
+ taxInclusive: z.ZodBoolean;
963
+ taxRateBps: z.ZodNumber;
964
+ id: z.ZodUUID;
965
+ active: z.ZodBoolean;
966
+ capMinor: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
967
+ createdAt: z.ZodISODateTime;
968
+ }, z.core.$strip>>>;
180
969
  }, z.core.$strip>;
181
970
  type Catalog = z.infer<typeof CatalogSchema>;
182
971
  declare const CatalogSyncResultSchema: z.ZodObject<{
@@ -192,6 +981,14 @@ declare const CatalogSyncResultSchema: z.ZodObject<{
192
981
  provider: z.ZodString;
193
982
  code: z.ZodString;
194
983
  }, z.core.$strip>>;
984
+ changedBenefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
985
+ archivedBenefits: z.ZodOptional<z.ZodArray<z.ZodString>>;
986
+ updatedPrices: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
987
+ changedMeters: z.ZodOptional<z.ZodArray<z.ZodString>>;
988
+ archivedMeters: z.ZodOptional<z.ZodArray<z.ZodString>>;
989
+ createdMeteredPrices: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
990
+ updatedMeteredPrices: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
991
+ deactivatedMeteredPrices: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
195
992
  }, z.core.$strip>;
196
993
  type CatalogSyncResult = z.infer<typeof CatalogSyncResultSchema>;
197
994
  /** `POST /v1/admin/accounts/refresh` — ürünün tüm hesaplarının snapshot'ı yeniden hesaplanır. */
@@ -201,6 +998,16 @@ declare const AccountsRefreshResultSchema: z.ZodObject<{
201
998
  type AccountsRefreshResult = z.infer<typeof AccountsRefreshResultSchema>;
202
999
  //#endregion
203
1000
  //#region ../contract/src/checkout.d.ts
1001
+ /**
1002
+ * Identity number sent to the payment provider (and, when the invoice needs one, used on the
1003
+ * invoice) for an INDIVIDUAL buyer (M31): steward never asks for or stores a TCKN; the Turkish
1004
+ * "final consumer" placeholder goes instead. A company buyer's VKN comes from the billing profile.
1005
+ *
1006
+ * It deliberately FAILS the TCKN checksum (`isValidTckn("11111111111") === false`): never run it
1007
+ * through a TCKN validator and never show it as a customer's TCKN. Kept here, not in a provider
1008
+ * adapter, because another provider may need a different rule.
1009
+ */
1010
+ declare const INDIVIDUAL_IDENTITY_PLACEHOLDER = "11111111111";
204
1011
  /** Accepted document — content lives in the product, steward keeps only the trace. */
205
1012
  declare const ConsentSchema: z.ZodObject<{
206
1013
  document: z.ZodString;
@@ -397,6 +1204,7 @@ declare const CheckoutSessionCreatedSchema: z.ZodObject<{
397
1204
  year: "year";
398
1205
  }>;
399
1206
  effectiveAt: z.ZodISODateTime;
1207
+ amountMinor: z.ZodOptional<z.ZodNumber>;
400
1208
  }, z.core.$strip>>;
401
1209
  }, z.core.$strip>>;
402
1210
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -418,12 +1226,77 @@ declare const CheckoutSessionCreatedSchema: z.ZodObject<{
418
1226
  company: "company";
419
1227
  }>>;
420
1228
  }, z.core.$strip>;
1229
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
1230
+ id: z.ZodUUID;
1231
+ status: z.ZodEnum<{
1232
+ active: "active";
1233
+ suspended: "suspended";
1234
+ past_due: "past_due";
1235
+ canceled: "canceled";
1236
+ expired: "expired";
1237
+ }>;
1238
+ planCode: z.ZodString;
1239
+ interval: z.ZodEnum<{
1240
+ month: "month";
1241
+ year: "year";
1242
+ }>;
1243
+ amountMinor: z.ZodNumber;
1244
+ currency: z.ZodString;
1245
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
1246
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
1247
+ cancelAtPeriodEnd: z.ZodBoolean;
1248
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
1249
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
1250
+ dunning: z.ZodNullable<z.ZodObject<{
1251
+ step: z.ZodNumber;
1252
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
1253
+ }, z.core.$strip>>;
1254
+ scheduledChange: z.ZodNullable<z.ZodObject<{
1255
+ planCode: z.ZodString;
1256
+ interval: z.ZodEnum<{
1257
+ month: "month";
1258
+ year: "year";
1259
+ }>;
1260
+ effectiveAt: z.ZodISODateTime;
1261
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1262
+ }, z.core.$strip>>;
1263
+ }, z.core.$strip>>>;
1264
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
1265
+ id: z.ZodUUID;
1266
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
1267
+ billingReason: z.ZodEnum<{
1268
+ subscription_create: "subscription_create";
1269
+ subscription_cycle: "subscription_cycle";
1270
+ subscription_update: "subscription_update";
1271
+ purchase: "purchase";
1272
+ manual: "manual";
1273
+ }>;
1274
+ totalMinor: z.ZodNumber;
1275
+ currency: z.ZodString;
1276
+ dueAt: z.ZodISODateTime;
1277
+ }, z.core.$strip>>>;
1278
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
1279
+ code: z.ZodNullable<z.ZodString>;
1280
+ type: z.ZodString;
1281
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1282
+ source: z.ZodString;
1283
+ grantedAt: z.ZodISODateTime;
1284
+ }, z.core.$strip>>>;
1285
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1286
+ includedUnits: z.ZodNullable<z.ZodNumber>;
1287
+ billable: z.ZodBoolean;
1288
+ standing: z.ZodEnum<{
1289
+ ok: "ok";
1290
+ low: "low";
1291
+ exhausted: "exhausted";
1292
+ }>;
1293
+ }, z.core.$strip>>>;
421
1294
  }, z.core.$strip>>;
422
1295
  }, z.core.$strip>;
423
1296
  type CheckoutSessionCreated = z.infer<typeof CheckoutSessionCreatedSchema>;
424
1297
  /** `STATUS` value of the outcome redirect (`{STATUS}` placeholder in `successUrl`). */
425
1298
  type CheckoutReturnStatus = "success" | "failed" | "pending";
426
- /** Redirect input: the stored session fields (service row, fake steward record). */
1299
+ /** Redirect input: the stored session fields (service row). */
427
1300
  type CheckoutRedirectTarget = {
428
1301
  id: string;
429
1302
  successUrl: string;
@@ -431,14 +1304,14 @@ type CheckoutRedirectTarget = {
431
1304
  accountRef: string;
432
1305
  };
433
1306
  /**
434
- * Browser redirect for a checkout outcome — the service and the fake steward share it.
1307
+ * Browser redirect for a checkout outcome — used by the service.
435
1308
  * Placeholders in `successUrl` (`{CHECKOUT_ID}` `{STATUS}` `{ACCOUNT_REF}` `{LOCALE}`) are
436
1309
  * filled with URL-encoded values; nothing is appended, so a URL without placeholders is used
437
1310
  * as-is. An encoded value cannot change the origin; it is still checked, and if the origin
438
1311
  * would change the URL is returned unfilled.
439
1312
  */
440
1313
  declare function checkoutRedirectUrl(target: CheckoutRedirectTarget, status: CheckoutReturnStatus): string;
441
- declare const CHECKOUT_ERRORS: readonly ["account_not_found", "already_subscribed", "plan_not_sellable", "return_url_not_allowed", "provider_not_configured", "provider_error", "account_deleted"];
1314
+ declare const CHECKOUT_ERRORS: readonly ["account_not_found", "already_subscribed", "plan_not_sellable", "return_url_not_allowed", "provider_not_configured", "provider_error", "account_deleted", "meter_already_billed"];
442
1315
  type CheckoutError = (typeof CHECKOUT_ERRORS)[number];
443
1316
  //#endregion
444
1317
  //#region ../contract/src/portal.d.ts
@@ -500,6 +1373,32 @@ declare const CancelSubscriptionInputSchema: z.ZodObject<{
500
1373
  skipProvider: z.ZodDefault<z.ZodBoolean>;
501
1374
  }, z.core.$strip>;
502
1375
  type CancelSubscriptionInput = z.input<typeof CancelSubscriptionInputSchema>;
1376
+ /**
1377
+ * `POST /v1/subscriptions/{id}/change` (billing core MF9): schedule a change for the next period
1378
+ * boundary (`AccountState.subscription.scheduledChange`); the next renewal invoice is written from
1379
+ * the new terms. `planCode` / `interval` pick another price of the subscription's currency;
1380
+ * `price: "current"` re-locks the current amount of the (possibly updated) price and the plan's
1381
+ * current metered rates — a metered price added later is attached only this way (M20, M36). At
1382
+ * least one of the three. `when` is required so other timings can be added later. A second change
1383
+ * replaces the first; asking for the current plan and interval while a change is pending takes it
1384
+ * back ("keep my plan"; a move to the current price the operator announced stays).
1385
+ * Errors: 404 `subscription_not_found`; 409 `already_subscribed` (another live subscription of the
1386
+ * account holds the target plan or is moving to it), `meter_already_billed` (the target prices a
1387
+ * meter another live subscription bills; for `price: "current"` only when that is the only
1388
+ * difference); 422 `plan_not_found`, `plan_not_sellable`, `subscription_change_invalid` (no such
1389
+ * price, nothing changes, the subscription is not live, has a cancellation scheduled or is a legacy
1390
+ * provider subscription).
1391
+ */
1392
+ declare const SubscriptionChangeInputSchema: z.ZodObject<{
1393
+ planCode: z.ZodOptional<z.ZodString>;
1394
+ interval: z.ZodOptional<z.ZodEnum<{
1395
+ month: "month";
1396
+ year: "year";
1397
+ }>>;
1398
+ price: z.ZodOptional<z.ZodLiteral<"current">>;
1399
+ when: z.ZodLiteral<"next_period">;
1400
+ }, z.core.$strip>;
1401
+ type SubscriptionChangeInput = z.input<typeof SubscriptionChangeInputSchema>;
503
1402
  declare const PaymentSchema: z.ZodObject<{
504
1403
  id: z.ZodUUID;
505
1404
  subscriptionId: z.ZodUUID;
@@ -515,9 +1414,12 @@ declare const PaymentSchema: z.ZodObject<{
515
1414
  occurredAt: z.ZodISODateTime;
516
1415
  }, z.core.$strip>;
517
1416
  type Payment = z.infer<typeof PaymentSchema>;
1417
+ /** Upper bound of named benefits in one grant. */
1418
+ declare const MAX_GRANT_BENEFITS = 100;
518
1419
  declare const GrantCreateInputSchema: z.ZodObject<{
519
1420
  planCode: z.ZodOptional<z.ZodString>;
520
1421
  overrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>>;
1422
+ benefitCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
521
1423
  reason: z.ZodString;
522
1424
  startsAt: z.ZodOptional<z.ZodISODateTime>;
523
1425
  endsAt: z.ZodOptional<z.ZodISODateTime>;
@@ -528,6 +1430,7 @@ declare const GrantSchema: z.ZodObject<{
528
1430
  accountRef: z.ZodString;
529
1431
  planCode: z.ZodNullable<z.ZodString>;
530
1432
  overrides: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
1433
+ benefitCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
531
1434
  reason: z.ZodString;
532
1435
  actorRef: z.ZodNullable<z.ZodString>;
533
1436
  startsAt: z.ZodISODateTime;
@@ -560,6 +1463,10 @@ declare const InvoiceLineSchema: z.ZodObject<{
560
1463
  quantity: z.ZodNumber;
561
1464
  unitAmountMinor: z.ZodNumber;
562
1465
  amountMinor: z.ZodNumber;
1466
+ meter: z.ZodOptional<z.ZodString>;
1467
+ units: z.ZodOptional<z.ZodString>;
1468
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
1469
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
563
1470
  }, z.core.$strip>;
564
1471
  type InvoiceLine = z.infer<typeof InvoiceLineSchema>;
565
1472
  declare const InvoiceSchema: z.ZodObject<{
@@ -598,6 +1505,10 @@ declare const InvoiceSchema: z.ZodObject<{
598
1505
  quantity: z.ZodNumber;
599
1506
  unitAmountMinor: z.ZodNumber;
600
1507
  amountMinor: z.ZodNumber;
1508
+ meter: z.ZodOptional<z.ZodString>;
1509
+ units: z.ZodOptional<z.ZodString>;
1510
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
1511
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
601
1512
  }, z.core.$strip>>;
602
1513
  issuer: z.ZodString;
603
1514
  externalRef: z.ZodNullable<z.ZodString>;
@@ -608,6 +1519,21 @@ declare const InvoiceSchema: z.ZodObject<{
608
1519
  note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
609
1520
  voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
610
1521
  voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1522
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1523
+ subscription_create: "subscription_create";
1524
+ subscription_cycle: "subscription_cycle";
1525
+ subscription_update: "subscription_update";
1526
+ purchase: "purchase";
1527
+ manual: "manual";
1528
+ }>>>;
1529
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1530
+ unpaid: "unpaid";
1531
+ paid: "paid";
1532
+ uncollectible: "uncollectible";
1533
+ waived: "waived";
1534
+ }>>>;
1535
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1536
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
611
1537
  }, z.core.$strip>;
612
1538
  type Invoice = z.infer<typeof InvoiceSchema>;
613
1539
  declare const InvoiceIssueInputSchema: z.ZodObject<{
@@ -649,6 +1575,34 @@ declare const InvoiceVoidInputSchema: z.ZodObject<{
649
1575
  reason: z.ZodString;
650
1576
  }, z.core.$strip>;
651
1577
  type InvoiceVoidInput = z.input<typeof InvoiceVoidInputSchema>;
1578
+ /**
1579
+ * `POST /v1/invoices/{id}/payment-sessions` — opens steward's hosted pay page for an unpaid
1580
+ * invoice (the product's own "Pay invoice" button; emails and the portal link to the same page).
1581
+ * 409 `invoice_not_payable` when the invoice is not unpaid.
1582
+ */
1583
+ declare const InvoicePaymentSessionCreateInputSchema: z.ZodObject<{
1584
+ locale: z.ZodOptional<z.ZodEnum<{
1585
+ tr: "tr";
1586
+ en: "en";
1587
+ }>>;
1588
+ returnUrl: z.ZodOptional<z.ZodURL>;
1589
+ }, z.core.$strip>;
1590
+ type InvoicePaymentSessionCreateInput = z.input<typeof InvoicePaymentSessionCreateInputSchema>;
1591
+ /** Pay page session: redirect the customer to `url` (it carries the page key; do not log it). */
1592
+ declare const InvoicePaymentSessionSchema: z.ZodObject<{
1593
+ id: z.ZodUUID;
1594
+ url: z.ZodString;
1595
+ expiresAt: z.ZodISODateTime;
1596
+ }, z.core.$strip>;
1597
+ type InvoicePaymentSession = z.infer<typeof InvoicePaymentSessionSchema>;
1598
+ /**
1599
+ * `POST /v1/invoices/{id}/waive` — an operator forgives an unpaid invoice (`paymentStatus:
1600
+ * "waived"`, e.g. before deleting the account). 409 `invoice_not_waivable` otherwise.
1601
+ */
1602
+ declare const InvoiceWaiveInputSchema: z.ZodObject<{
1603
+ reason: z.ZodString;
1604
+ }, z.core.$strip>;
1605
+ type InvoiceWaiveInput = z.input<typeof InvoiceWaiveInputSchema>;
652
1606
  /**
653
1607
  * Vergi dahil tutardan matrah ve vergiyi ayrıştırır (tam sayı, kuruşa
654
1608
  * yuvarlama). Toplam her zaman korunur: subtotal + tax === total.
@@ -717,6 +1671,11 @@ declare const AccountDetailSchema: z.ZodObject<{
717
1671
  cancelAt: z.ZodNullable<z.ZodISODateTime>;
718
1672
  }, z.core.$strip>>;
719
1673
  }, z.core.$strip>;
1674
+ notificationEmails: z.ZodDefault<z.ZodArray<z.ZodString>>;
1675
+ locale: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
1676
+ tr: "tr";
1677
+ en: "en";
1678
+ }>>>;
720
1679
  profile: z.ZodOptional<z.ZodNullable<z.ZodObject<{
721
1680
  kind: z.ZodEnum<{
722
1681
  individual: "individual";
@@ -845,6 +1804,10 @@ declare const AccountDetailSchema: z.ZodObject<{
845
1804
  quantity: z.ZodNumber;
846
1805
  unitAmountMinor: z.ZodNumber;
847
1806
  amountMinor: z.ZodNumber;
1807
+ meter: z.ZodOptional<z.ZodString>;
1808
+ units: z.ZodOptional<z.ZodString>;
1809
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
1810
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
848
1811
  }, z.core.$strip>>;
849
1812
  issuer: z.ZodString;
850
1813
  externalRef: z.ZodNullable<z.ZodString>;
@@ -855,12 +1818,28 @@ declare const AccountDetailSchema: z.ZodObject<{
855
1818
  note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
856
1819
  voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
857
1820
  voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1821
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1822
+ subscription_create: "subscription_create";
1823
+ subscription_cycle: "subscription_cycle";
1824
+ subscription_update: "subscription_update";
1825
+ purchase: "purchase";
1826
+ manual: "manual";
1827
+ }>>>;
1828
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1829
+ unpaid: "unpaid";
1830
+ paid: "paid";
1831
+ uncollectible: "uncollectible";
1832
+ waived: "waived";
1833
+ }>>>;
1834
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1835
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
858
1836
  }, z.core.$strip>>>;
859
1837
  grants: z.ZodOptional<z.ZodArray<z.ZodObject<{
860
1838
  id: z.ZodUUID;
861
1839
  accountRef: z.ZodString;
862
1840
  planCode: z.ZodNullable<z.ZodString>;
863
1841
  overrides: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
1842
+ benefitCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
864
1843
  reason: z.ZodString;
865
1844
  actorRef: z.ZodNullable<z.ZodString>;
866
1845
  startsAt: z.ZodISODateTime;
@@ -904,6 +1883,11 @@ declare const AccountUpsertResponseSchema: z.ZodObject<{
904
1883
  cancelAt: z.ZodNullable<z.ZodISODateTime>;
905
1884
  }, z.core.$strip>>;
906
1885
  }, z.core.$strip>;
1886
+ notificationEmails: z.ZodDefault<z.ZodArray<z.ZodString>>;
1887
+ locale: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
1888
+ tr: "tr";
1889
+ en: "en";
1890
+ }>>>;
907
1891
  account: z.ZodOptional<z.ZodObject<{
908
1892
  version: z.ZodNumber;
909
1893
  planCode: z.ZodString;
@@ -948,6 +1932,7 @@ declare const AccountUpsertResponseSchema: z.ZodObject<{
948
1932
  year: "year";
949
1933
  }>;
950
1934
  effectiveAt: z.ZodISODateTime;
1935
+ amountMinor: z.ZodOptional<z.ZodNumber>;
951
1936
  }, z.core.$strip>>;
952
1937
  }, z.core.$strip>>;
953
1938
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -969,6 +1954,71 @@ declare const AccountUpsertResponseSchema: z.ZodObject<{
969
1954
  company: "company";
970
1955
  }>>;
971
1956
  }, z.core.$strip>;
1957
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
1958
+ id: z.ZodUUID;
1959
+ status: z.ZodEnum<{
1960
+ active: "active";
1961
+ suspended: "suspended";
1962
+ past_due: "past_due";
1963
+ canceled: "canceled";
1964
+ expired: "expired";
1965
+ }>;
1966
+ planCode: z.ZodString;
1967
+ interval: z.ZodEnum<{
1968
+ month: "month";
1969
+ year: "year";
1970
+ }>;
1971
+ amountMinor: z.ZodNumber;
1972
+ currency: z.ZodString;
1973
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
1974
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
1975
+ cancelAtPeriodEnd: z.ZodBoolean;
1976
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
1977
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
1978
+ dunning: z.ZodNullable<z.ZodObject<{
1979
+ step: z.ZodNumber;
1980
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
1981
+ }, z.core.$strip>>;
1982
+ scheduledChange: z.ZodNullable<z.ZodObject<{
1983
+ planCode: z.ZodString;
1984
+ interval: z.ZodEnum<{
1985
+ month: "month";
1986
+ year: "year";
1987
+ }>;
1988
+ effectiveAt: z.ZodISODateTime;
1989
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1990
+ }, z.core.$strip>>;
1991
+ }, z.core.$strip>>>;
1992
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
1993
+ id: z.ZodUUID;
1994
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
1995
+ billingReason: z.ZodEnum<{
1996
+ subscription_create: "subscription_create";
1997
+ subscription_cycle: "subscription_cycle";
1998
+ subscription_update: "subscription_update";
1999
+ purchase: "purchase";
2000
+ manual: "manual";
2001
+ }>;
2002
+ totalMinor: z.ZodNumber;
2003
+ currency: z.ZodString;
2004
+ dueAt: z.ZodISODateTime;
2005
+ }, z.core.$strip>>>;
2006
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2007
+ code: z.ZodNullable<z.ZodString>;
2008
+ type: z.ZodString;
2009
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2010
+ source: z.ZodString;
2011
+ grantedAt: z.ZodISODateTime;
2012
+ }, z.core.$strip>>>;
2013
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2014
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2015
+ billable: z.ZodBoolean;
2016
+ standing: z.ZodEnum<{
2017
+ ok: "ok";
2018
+ low: "low";
2019
+ exhausted: "exhausted";
2020
+ }>;
2021
+ }, z.core.$strip>>>;
972
2022
  }, z.core.$strip>>;
973
2023
  }, z.core.$strip>;
974
2024
  type AccountUpsertResponse = z.infer<typeof AccountUpsertResponseSchema>;
@@ -978,6 +2028,7 @@ declare const GrantCreateResponseSchema: z.ZodObject<{
978
2028
  accountRef: z.ZodString;
979
2029
  planCode: z.ZodNullable<z.ZodString>;
980
2030
  overrides: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
2031
+ benefitCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
981
2032
  reason: z.ZodString;
982
2033
  actorRef: z.ZodNullable<z.ZodString>;
983
2034
  startsAt: z.ZodISODateTime;
@@ -1028,6 +2079,7 @@ declare const GrantCreateResponseSchema: z.ZodObject<{
1028
2079
  year: "year";
1029
2080
  }>;
1030
2081
  effectiveAt: z.ZodISODateTime;
2082
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1031
2083
  }, z.core.$strip>>;
1032
2084
  }, z.core.$strip>>;
1033
2085
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1049,6 +2101,71 @@ declare const GrantCreateResponseSchema: z.ZodObject<{
1049
2101
  company: "company";
1050
2102
  }>>;
1051
2103
  }, z.core.$strip>;
2104
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
2105
+ id: z.ZodUUID;
2106
+ status: z.ZodEnum<{
2107
+ active: "active";
2108
+ suspended: "suspended";
2109
+ past_due: "past_due";
2110
+ canceled: "canceled";
2111
+ expired: "expired";
2112
+ }>;
2113
+ planCode: z.ZodString;
2114
+ interval: z.ZodEnum<{
2115
+ month: "month";
2116
+ year: "year";
2117
+ }>;
2118
+ amountMinor: z.ZodNumber;
2119
+ currency: z.ZodString;
2120
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
2121
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
2122
+ cancelAtPeriodEnd: z.ZodBoolean;
2123
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
2124
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
2125
+ dunning: z.ZodNullable<z.ZodObject<{
2126
+ step: z.ZodNumber;
2127
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
2128
+ }, z.core.$strip>>;
2129
+ scheduledChange: z.ZodNullable<z.ZodObject<{
2130
+ planCode: z.ZodString;
2131
+ interval: z.ZodEnum<{
2132
+ month: "month";
2133
+ year: "year";
2134
+ }>;
2135
+ effectiveAt: z.ZodISODateTime;
2136
+ amountMinor: z.ZodOptional<z.ZodNumber>;
2137
+ }, z.core.$strip>>;
2138
+ }, z.core.$strip>>>;
2139
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
2140
+ id: z.ZodUUID;
2141
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
2142
+ billingReason: z.ZodEnum<{
2143
+ subscription_create: "subscription_create";
2144
+ subscription_cycle: "subscription_cycle";
2145
+ subscription_update: "subscription_update";
2146
+ purchase: "purchase";
2147
+ manual: "manual";
2148
+ }>;
2149
+ totalMinor: z.ZodNumber;
2150
+ currency: z.ZodString;
2151
+ dueAt: z.ZodISODateTime;
2152
+ }, z.core.$strip>>>;
2153
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2154
+ code: z.ZodNullable<z.ZodString>;
2155
+ type: z.ZodString;
2156
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2157
+ source: z.ZodString;
2158
+ grantedAt: z.ZodISODateTime;
2159
+ }, z.core.$strip>>>;
2160
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2161
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2162
+ billable: z.ZodBoolean;
2163
+ standing: z.ZodEnum<{
2164
+ ok: "ok";
2165
+ low: "low";
2166
+ exhausted: "exhausted";
2167
+ }>;
2168
+ }, z.core.$strip>>>;
1052
2169
  }, z.core.$strip>>;
1053
2170
  }, z.core.$strip>;
1054
2171
  type GrantCreateResponse = z.infer<typeof GrantCreateResponseSchema>;
@@ -1125,6 +2242,7 @@ declare const CancelSubscriptionResponseSchema: z.ZodObject<{
1125
2242
  year: "year";
1126
2243
  }>;
1127
2244
  effectiveAt: z.ZodISODateTime;
2245
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1128
2246
  }, z.core.$strip>>;
1129
2247
  }, z.core.$strip>>;
1130
2248
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1146,6 +2264,71 @@ declare const CancelSubscriptionResponseSchema: z.ZodObject<{
1146
2264
  company: "company";
1147
2265
  }>>;
1148
2266
  }, z.core.$strip>;
2267
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
2268
+ id: z.ZodUUID;
2269
+ status: z.ZodEnum<{
2270
+ active: "active";
2271
+ suspended: "suspended";
2272
+ past_due: "past_due";
2273
+ canceled: "canceled";
2274
+ expired: "expired";
2275
+ }>;
2276
+ planCode: z.ZodString;
2277
+ interval: z.ZodEnum<{
2278
+ month: "month";
2279
+ year: "year";
2280
+ }>;
2281
+ amountMinor: z.ZodNumber;
2282
+ currency: z.ZodString;
2283
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
2284
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
2285
+ cancelAtPeriodEnd: z.ZodBoolean;
2286
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
2287
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
2288
+ dunning: z.ZodNullable<z.ZodObject<{
2289
+ step: z.ZodNumber;
2290
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
2291
+ }, z.core.$strip>>;
2292
+ scheduledChange: z.ZodNullable<z.ZodObject<{
2293
+ planCode: z.ZodString;
2294
+ interval: z.ZodEnum<{
2295
+ month: "month";
2296
+ year: "year";
2297
+ }>;
2298
+ effectiveAt: z.ZodISODateTime;
2299
+ amountMinor: z.ZodOptional<z.ZodNumber>;
2300
+ }, z.core.$strip>>;
2301
+ }, z.core.$strip>>>;
2302
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
2303
+ id: z.ZodUUID;
2304
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
2305
+ billingReason: z.ZodEnum<{
2306
+ subscription_create: "subscription_create";
2307
+ subscription_cycle: "subscription_cycle";
2308
+ subscription_update: "subscription_update";
2309
+ purchase: "purchase";
2310
+ manual: "manual";
2311
+ }>;
2312
+ totalMinor: z.ZodNumber;
2313
+ currency: z.ZodString;
2314
+ dueAt: z.ZodISODateTime;
2315
+ }, z.core.$strip>>>;
2316
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2317
+ code: z.ZodNullable<z.ZodString>;
2318
+ type: z.ZodString;
2319
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2320
+ source: z.ZodString;
2321
+ grantedAt: z.ZodISODateTime;
2322
+ }, z.core.$strip>>>;
2323
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2324
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2325
+ billable: z.ZodBoolean;
2326
+ standing: z.ZodEnum<{
2327
+ ok: "ok";
2328
+ low: "low";
2329
+ exhausted: "exhausted";
2330
+ }>;
2331
+ }, z.core.$strip>>>;
1149
2332
  }, z.core.$strip>>;
1150
2333
  }, z.core.$strip>;
1151
2334
  type CancelSubscriptionResponse = z.infer<typeof CancelSubscriptionResponseSchema>;
@@ -1186,6 +2369,10 @@ declare const InvoiceIssueResponseSchema: z.ZodObject<{
1186
2369
  quantity: z.ZodNumber;
1187
2370
  unitAmountMinor: z.ZodNumber;
1188
2371
  amountMinor: z.ZodNumber;
2372
+ meter: z.ZodOptional<z.ZodString>;
2373
+ units: z.ZodOptional<z.ZodString>;
2374
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
2375
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
1189
2376
  }, z.core.$strip>>;
1190
2377
  issuer: z.ZodString;
1191
2378
  externalRef: z.ZodNullable<z.ZodString>;
@@ -1196,6 +2383,21 @@ declare const InvoiceIssueResponseSchema: z.ZodObject<{
1196
2383
  note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1197
2384
  voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1198
2385
  voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2386
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2387
+ subscription_create: "subscription_create";
2388
+ subscription_cycle: "subscription_cycle";
2389
+ subscription_update: "subscription_update";
2390
+ purchase: "purchase";
2391
+ manual: "manual";
2392
+ }>>>;
2393
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2394
+ unpaid: "unpaid";
2395
+ paid: "paid";
2396
+ uncollectible: "uncollectible";
2397
+ waived: "waived";
2398
+ }>>>;
2399
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2400
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1199
2401
  account: z.ZodOptional<z.ZodObject<{
1200
2402
  version: z.ZodNumber;
1201
2403
  planCode: z.ZodString;
@@ -1240,6 +2442,7 @@ declare const InvoiceIssueResponseSchema: z.ZodObject<{
1240
2442
  year: "year";
1241
2443
  }>;
1242
2444
  effectiveAt: z.ZodISODateTime;
2445
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1243
2446
  }, z.core.$strip>>;
1244
2447
  }, z.core.$strip>>;
1245
2448
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1261,6 +2464,71 @@ declare const InvoiceIssueResponseSchema: z.ZodObject<{
1261
2464
  company: "company";
1262
2465
  }>>;
1263
2466
  }, z.core.$strip>;
2467
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
2468
+ id: z.ZodUUID;
2469
+ status: z.ZodEnum<{
2470
+ active: "active";
2471
+ suspended: "suspended";
2472
+ past_due: "past_due";
2473
+ canceled: "canceled";
2474
+ expired: "expired";
2475
+ }>;
2476
+ planCode: z.ZodString;
2477
+ interval: z.ZodEnum<{
2478
+ month: "month";
2479
+ year: "year";
2480
+ }>;
2481
+ amountMinor: z.ZodNumber;
2482
+ currency: z.ZodString;
2483
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
2484
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
2485
+ cancelAtPeriodEnd: z.ZodBoolean;
2486
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
2487
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
2488
+ dunning: z.ZodNullable<z.ZodObject<{
2489
+ step: z.ZodNumber;
2490
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
2491
+ }, z.core.$strip>>;
2492
+ scheduledChange: z.ZodNullable<z.ZodObject<{
2493
+ planCode: z.ZodString;
2494
+ interval: z.ZodEnum<{
2495
+ month: "month";
2496
+ year: "year";
2497
+ }>;
2498
+ effectiveAt: z.ZodISODateTime;
2499
+ amountMinor: z.ZodOptional<z.ZodNumber>;
2500
+ }, z.core.$strip>>;
2501
+ }, z.core.$strip>>>;
2502
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
2503
+ id: z.ZodUUID;
2504
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
2505
+ billingReason: z.ZodEnum<{
2506
+ subscription_create: "subscription_create";
2507
+ subscription_cycle: "subscription_cycle";
2508
+ subscription_update: "subscription_update";
2509
+ purchase: "purchase";
2510
+ manual: "manual";
2511
+ }>;
2512
+ totalMinor: z.ZodNumber;
2513
+ currency: z.ZodString;
2514
+ dueAt: z.ZodISODateTime;
2515
+ }, z.core.$strip>>>;
2516
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2517
+ code: z.ZodNullable<z.ZodString>;
2518
+ type: z.ZodString;
2519
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2520
+ source: z.ZodString;
2521
+ grantedAt: z.ZodISODateTime;
2522
+ }, z.core.$strip>>>;
2523
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2524
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2525
+ billable: z.ZodBoolean;
2526
+ standing: z.ZodEnum<{
2527
+ ok: "ok";
2528
+ low: "low";
2529
+ exhausted: "exhausted";
2530
+ }>;
2531
+ }, z.core.$strip>>>;
1264
2532
  }, z.core.$strip>>;
1265
2533
  }, z.core.$strip>;
1266
2534
  type InvoiceIssueResponse = z.infer<typeof InvoiceIssueResponseSchema>;
@@ -1301,6 +2569,10 @@ declare const ManualInvoiceResponseSchema: z.ZodObject<{
1301
2569
  quantity: z.ZodNumber;
1302
2570
  unitAmountMinor: z.ZodNumber;
1303
2571
  amountMinor: z.ZodNumber;
2572
+ meter: z.ZodOptional<z.ZodString>;
2573
+ units: z.ZodOptional<z.ZodString>;
2574
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
2575
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
1304
2576
  }, z.core.$strip>>;
1305
2577
  issuer: z.ZodString;
1306
2578
  externalRef: z.ZodNullable<z.ZodString>;
@@ -1311,6 +2583,21 @@ declare const ManualInvoiceResponseSchema: z.ZodObject<{
1311
2583
  note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1312
2584
  voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1313
2585
  voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2586
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2587
+ subscription_create: "subscription_create";
2588
+ subscription_cycle: "subscription_cycle";
2589
+ subscription_update: "subscription_update";
2590
+ purchase: "purchase";
2591
+ manual: "manual";
2592
+ }>>>;
2593
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2594
+ unpaid: "unpaid";
2595
+ paid: "paid";
2596
+ uncollectible: "uncollectible";
2597
+ waived: "waived";
2598
+ }>>>;
2599
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2600
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1314
2601
  account: z.ZodOptional<z.ZodObject<{
1315
2602
  version: z.ZodNumber;
1316
2603
  planCode: z.ZodString;
@@ -1355,6 +2642,7 @@ declare const ManualInvoiceResponseSchema: z.ZodObject<{
1355
2642
  year: "year";
1356
2643
  }>;
1357
2644
  effectiveAt: z.ZodISODateTime;
2645
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1358
2646
  }, z.core.$strip>>;
1359
2647
  }, z.core.$strip>>;
1360
2648
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1376,6 +2664,71 @@ declare const ManualInvoiceResponseSchema: z.ZodObject<{
1376
2664
  company: "company";
1377
2665
  }>>;
1378
2666
  }, z.core.$strip>;
2667
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
2668
+ id: z.ZodUUID;
2669
+ status: z.ZodEnum<{
2670
+ active: "active";
2671
+ suspended: "suspended";
2672
+ past_due: "past_due";
2673
+ canceled: "canceled";
2674
+ expired: "expired";
2675
+ }>;
2676
+ planCode: z.ZodString;
2677
+ interval: z.ZodEnum<{
2678
+ month: "month";
2679
+ year: "year";
2680
+ }>;
2681
+ amountMinor: z.ZodNumber;
2682
+ currency: z.ZodString;
2683
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
2684
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
2685
+ cancelAtPeriodEnd: z.ZodBoolean;
2686
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
2687
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
2688
+ dunning: z.ZodNullable<z.ZodObject<{
2689
+ step: z.ZodNumber;
2690
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
2691
+ }, z.core.$strip>>;
2692
+ scheduledChange: z.ZodNullable<z.ZodObject<{
2693
+ planCode: z.ZodString;
2694
+ interval: z.ZodEnum<{
2695
+ month: "month";
2696
+ year: "year";
2697
+ }>;
2698
+ effectiveAt: z.ZodISODateTime;
2699
+ amountMinor: z.ZodOptional<z.ZodNumber>;
2700
+ }, z.core.$strip>>;
2701
+ }, z.core.$strip>>>;
2702
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
2703
+ id: z.ZodUUID;
2704
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
2705
+ billingReason: z.ZodEnum<{
2706
+ subscription_create: "subscription_create";
2707
+ subscription_cycle: "subscription_cycle";
2708
+ subscription_update: "subscription_update";
2709
+ purchase: "purchase";
2710
+ manual: "manual";
2711
+ }>;
2712
+ totalMinor: z.ZodNumber;
2713
+ currency: z.ZodString;
2714
+ dueAt: z.ZodISODateTime;
2715
+ }, z.core.$strip>>>;
2716
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2717
+ code: z.ZodNullable<z.ZodString>;
2718
+ type: z.ZodString;
2719
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2720
+ source: z.ZodString;
2721
+ grantedAt: z.ZodISODateTime;
2722
+ }, z.core.$strip>>>;
2723
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2724
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2725
+ billable: z.ZodBoolean;
2726
+ standing: z.ZodEnum<{
2727
+ ok: "ok";
2728
+ low: "low";
2729
+ exhausted: "exhausted";
2730
+ }>;
2731
+ }, z.core.$strip>>>;
1379
2732
  }, z.core.$strip>>;
1380
2733
  }, z.core.$strip>;
1381
2734
  type ManualInvoiceResponse = z.infer<typeof ManualInvoiceResponseSchema>;
@@ -1416,6 +2769,10 @@ declare const InvoiceVoidResponseSchema: z.ZodObject<{
1416
2769
  quantity: z.ZodNumber;
1417
2770
  unitAmountMinor: z.ZodNumber;
1418
2771
  amountMinor: z.ZodNumber;
2772
+ meter: z.ZodOptional<z.ZodString>;
2773
+ units: z.ZodOptional<z.ZodString>;
2774
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
2775
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
1419
2776
  }, z.core.$strip>>;
1420
2777
  issuer: z.ZodString;
1421
2778
  externalRef: z.ZodNullable<z.ZodString>;
@@ -1426,6 +2783,21 @@ declare const InvoiceVoidResponseSchema: z.ZodObject<{
1426
2783
  note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1427
2784
  voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1428
2785
  voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2786
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2787
+ subscription_create: "subscription_create";
2788
+ subscription_cycle: "subscription_cycle";
2789
+ subscription_update: "subscription_update";
2790
+ purchase: "purchase";
2791
+ manual: "manual";
2792
+ }>>>;
2793
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
2794
+ unpaid: "unpaid";
2795
+ paid: "paid";
2796
+ uncollectible: "uncollectible";
2797
+ waived: "waived";
2798
+ }>>>;
2799
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2800
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1429
2801
  account: z.ZodOptional<z.ZodObject<{
1430
2802
  version: z.ZodNumber;
1431
2803
  planCode: z.ZodString;
@@ -1470,6 +2842,7 @@ declare const InvoiceVoidResponseSchema: z.ZodObject<{
1470
2842
  year: "year";
1471
2843
  }>;
1472
2844
  effectiveAt: z.ZodISODateTime;
2845
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1473
2846
  }, z.core.$strip>>;
1474
2847
  }, z.core.$strip>>;
1475
2848
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1491,6 +2864,71 @@ declare const InvoiceVoidResponseSchema: z.ZodObject<{
1491
2864
  company: "company";
1492
2865
  }>>;
1493
2866
  }, z.core.$strip>;
2867
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
2868
+ id: z.ZodUUID;
2869
+ status: z.ZodEnum<{
2870
+ active: "active";
2871
+ suspended: "suspended";
2872
+ past_due: "past_due";
2873
+ canceled: "canceled";
2874
+ expired: "expired";
2875
+ }>;
2876
+ planCode: z.ZodString;
2877
+ interval: z.ZodEnum<{
2878
+ month: "month";
2879
+ year: "year";
2880
+ }>;
2881
+ amountMinor: z.ZodNumber;
2882
+ currency: z.ZodString;
2883
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
2884
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
2885
+ cancelAtPeriodEnd: z.ZodBoolean;
2886
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
2887
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
2888
+ dunning: z.ZodNullable<z.ZodObject<{
2889
+ step: z.ZodNumber;
2890
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
2891
+ }, z.core.$strip>>;
2892
+ scheduledChange: z.ZodNullable<z.ZodObject<{
2893
+ planCode: z.ZodString;
2894
+ interval: z.ZodEnum<{
2895
+ month: "month";
2896
+ year: "year";
2897
+ }>;
2898
+ effectiveAt: z.ZodISODateTime;
2899
+ amountMinor: z.ZodOptional<z.ZodNumber>;
2900
+ }, z.core.$strip>>;
2901
+ }, z.core.$strip>>>;
2902
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
2903
+ id: z.ZodUUID;
2904
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
2905
+ billingReason: z.ZodEnum<{
2906
+ subscription_create: "subscription_create";
2907
+ subscription_cycle: "subscription_cycle";
2908
+ subscription_update: "subscription_update";
2909
+ purchase: "purchase";
2910
+ manual: "manual";
2911
+ }>;
2912
+ totalMinor: z.ZodNumber;
2913
+ currency: z.ZodString;
2914
+ dueAt: z.ZodISODateTime;
2915
+ }, z.core.$strip>>>;
2916
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
2917
+ code: z.ZodNullable<z.ZodString>;
2918
+ type: z.ZodString;
2919
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2920
+ source: z.ZodString;
2921
+ grantedAt: z.ZodISODateTime;
2922
+ }, z.core.$strip>>>;
2923
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2924
+ includedUnits: z.ZodNullable<z.ZodNumber>;
2925
+ billable: z.ZodBoolean;
2926
+ standing: z.ZodEnum<{
2927
+ ok: "ok";
2928
+ low: "low";
2929
+ exhausted: "exhausted";
2930
+ }>;
2931
+ }, z.core.$strip>>>;
1494
2932
  }, z.core.$strip>>;
1495
2933
  }, z.core.$strip>;
1496
2934
  type InvoiceVoidResponse = z.infer<typeof InvoiceVoidResponseSchema>;
@@ -1572,6 +3010,7 @@ declare const CheckoutSessionResponseSchema: z.ZodObject<{
1572
3010
  year: "year";
1573
3011
  }>;
1574
3012
  effectiveAt: z.ZodISODateTime;
3013
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1575
3014
  }, z.core.$strip>>;
1576
3015
  }, z.core.$strip>>;
1577
3016
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1593,32 +3032,822 @@ declare const CheckoutSessionResponseSchema: z.ZodObject<{
1593
3032
  company: "company";
1594
3033
  }>>;
1595
3034
  }, z.core.$strip>;
1596
- }, z.core.$strip>>;
1597
- }, z.core.$strip>;
1598
- type CheckoutSessionResponse = z.infer<typeof CheckoutSessionResponseSchema>;
1599
- /** Değişiklik yapan her istekte zorunlu başlıklar. */
1600
- declare const HEADER_IDEMPOTENCY_KEY = "idempotency-key";
1601
- declare const HEADER_ACTOR_REF = "x-actor-ref";
1602
- declare const HEADER_API_VERSION = "steward-api-version";
1603
- declare const HEADER_SDK = "x-steward-sdk";
1604
- declare const HEADER_REQUEST_ID = "x-request-id";
1605
- //#endregion
1606
- //#region ../contract/src/errors.d.ts
1607
- type ErrorCodeSpec = {
1608
- readonly httpStatus: number;
1609
- readonly category: ErrorCategory;
1610
- readonly retryable: boolean;
1611
- };
1612
- declare const ERROR_CODES: Readonly<{
1613
- invalid_json: ErrorCodeSpec;
1614
- invalid_request: ErrorCodeSpec;
1615
- invalid_account_ref: ErrorCodeSpec;
1616
- invalid_include: ErrorCodeSpec;
1617
- invalid_actor_ref: ErrorCodeSpec;
1618
- actor_ref_required: ErrorCodeSpec;
1619
- idempotency_key_required: ErrorCodeSpec;
1620
- invalid_idempotency_key: ErrorCodeSpec;
1621
- /** Anahtar yok / iptal / yanlış — neden ayrıştırılmaz. */
3035
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3036
+ id: z.ZodUUID;
3037
+ status: z.ZodEnum<{
3038
+ active: "active";
3039
+ suspended: "suspended";
3040
+ past_due: "past_due";
3041
+ canceled: "canceled";
3042
+ expired: "expired";
3043
+ }>;
3044
+ planCode: z.ZodString;
3045
+ interval: z.ZodEnum<{
3046
+ month: "month";
3047
+ year: "year";
3048
+ }>;
3049
+ amountMinor: z.ZodNumber;
3050
+ currency: z.ZodString;
3051
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3052
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3053
+ cancelAtPeriodEnd: z.ZodBoolean;
3054
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3055
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3056
+ dunning: z.ZodNullable<z.ZodObject<{
3057
+ step: z.ZodNumber;
3058
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3059
+ }, z.core.$strip>>;
3060
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3061
+ planCode: z.ZodString;
3062
+ interval: z.ZodEnum<{
3063
+ month: "month";
3064
+ year: "year";
3065
+ }>;
3066
+ effectiveAt: z.ZodISODateTime;
3067
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3068
+ }, z.core.$strip>>;
3069
+ }, z.core.$strip>>>;
3070
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
3071
+ id: z.ZodUUID;
3072
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3073
+ billingReason: z.ZodEnum<{
3074
+ subscription_create: "subscription_create";
3075
+ subscription_cycle: "subscription_cycle";
3076
+ subscription_update: "subscription_update";
3077
+ purchase: "purchase";
3078
+ manual: "manual";
3079
+ }>;
3080
+ totalMinor: z.ZodNumber;
3081
+ currency: z.ZodString;
3082
+ dueAt: z.ZodISODateTime;
3083
+ }, z.core.$strip>>>;
3084
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
3085
+ code: z.ZodNullable<z.ZodString>;
3086
+ type: z.ZodString;
3087
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3088
+ source: z.ZodString;
3089
+ grantedAt: z.ZodISODateTime;
3090
+ }, z.core.$strip>>>;
3091
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3092
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3093
+ billable: z.ZodBoolean;
3094
+ standing: z.ZodEnum<{
3095
+ ok: "ok";
3096
+ low: "low";
3097
+ exhausted: "exhausted";
3098
+ }>;
3099
+ }, z.core.$strip>>>;
3100
+ }, z.core.$strip>>;
3101
+ }, z.core.$strip>;
3102
+ type CheckoutSessionResponse = z.infer<typeof CheckoutSessionResponseSchema>;
3103
+ /** `POST /v1/invoices/{id}/waive` (billing core): the waived invoice and the state after it (`openInvoices` shrinks). */
3104
+ declare const InvoiceWaiveResponseSchema: z.ZodObject<{
3105
+ id: z.ZodUUID;
3106
+ accountRef: z.ZodString;
3107
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3108
+ paymentId: z.ZodNullable<z.ZodUUID>;
3109
+ status: z.ZodEnum<{
3110
+ void: "void";
3111
+ draft: "draft";
3112
+ issued: "issued";
3113
+ }>;
3114
+ number: z.ZodNullable<z.ZodString>;
3115
+ currency: z.ZodString;
3116
+ subtotalMinor: z.ZodNumber;
3117
+ taxMinor: z.ZodNumber;
3118
+ totalMinor: z.ZodNumber;
3119
+ taxRateBps: z.ZodNumber;
3120
+ buyer: z.ZodObject<{
3121
+ kind: z.ZodEnum<{
3122
+ individual: "individual";
3123
+ company: "company";
3124
+ }>;
3125
+ contactName: z.ZodString;
3126
+ companyName: z.ZodOptional<z.ZodString>;
3127
+ taxOffice: z.ZodOptional<z.ZodString>;
3128
+ taxId: z.ZodOptional<z.ZodString>;
3129
+ email: z.ZodEmail;
3130
+ phone: z.ZodString;
3131
+ address: z.ZodString;
3132
+ city: z.ZodString;
3133
+ country: z.ZodDefault<z.ZodString>;
3134
+ }, z.core.$strip>;
3135
+ lines: z.ZodArray<z.ZodObject<{
3136
+ description: z.ZodString;
3137
+ quantity: z.ZodNumber;
3138
+ unitAmountMinor: z.ZodNumber;
3139
+ amountMinor: z.ZodNumber;
3140
+ meter: z.ZodOptional<z.ZodString>;
3141
+ units: z.ZodOptional<z.ZodString>;
3142
+ priceAmountMinor: z.ZodOptional<z.ZodNumber>;
3143
+ pricePerUnits: z.ZodOptional<z.ZodNumber>;
3144
+ }, z.core.$strip>>;
3145
+ issuer: z.ZodString;
3146
+ externalRef: z.ZodNullable<z.ZodString>;
3147
+ hasDocument: z.ZodBoolean;
3148
+ issuedAt: z.ZodNullable<z.ZodISODateTime>;
3149
+ createdAt: z.ZodISODateTime;
3150
+ dueAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3151
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3152
+ voidedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3153
+ voidReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3154
+ billingReason: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
3155
+ subscription_create: "subscription_create";
3156
+ subscription_cycle: "subscription_cycle";
3157
+ subscription_update: "subscription_update";
3158
+ purchase: "purchase";
3159
+ manual: "manual";
3160
+ }>>>;
3161
+ paymentStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
3162
+ unpaid: "unpaid";
3163
+ paid: "paid";
3164
+ uncollectible: "uncollectible";
3165
+ waived: "waived";
3166
+ }>>>;
3167
+ periodStart: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3168
+ periodEnd: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
3169
+ account: z.ZodOptional<z.ZodObject<{
3170
+ version: z.ZodNumber;
3171
+ planCode: z.ZodString;
3172
+ accessState: z.ZodEnum<{
3173
+ active: "active";
3174
+ suspended: "suspended";
3175
+ }>;
3176
+ entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
3177
+ ref: z.ZodString;
3178
+ displayName: z.ZodString;
3179
+ updatedAt: z.ZodISODateTime;
3180
+ catalogVersion: z.ZodNullable<z.ZodString>;
3181
+ subscription: z.ZodNullable<z.ZodObject<{
3182
+ id: z.ZodUUID;
3183
+ status: z.ZodEnum<{
3184
+ active: "active";
3185
+ suspended: "suspended";
3186
+ past_due: "past_due";
3187
+ canceled: "canceled";
3188
+ expired: "expired";
3189
+ }>;
3190
+ planCode: z.ZodString;
3191
+ interval: z.ZodEnum<{
3192
+ month: "month";
3193
+ year: "year";
3194
+ }>;
3195
+ amountMinor: z.ZodNumber;
3196
+ currency: z.ZodString;
3197
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3198
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3199
+ cancelAtPeriodEnd: z.ZodBoolean;
3200
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3201
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3202
+ dunning: z.ZodNullable<z.ZodObject<{
3203
+ step: z.ZodNumber;
3204
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3205
+ }, z.core.$strip>>;
3206
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3207
+ planCode: z.ZodString;
3208
+ interval: z.ZodEnum<{
3209
+ month: "month";
3210
+ year: "year";
3211
+ }>;
3212
+ effectiveAt: z.ZodISODateTime;
3213
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3214
+ }, z.core.$strip>>;
3215
+ }, z.core.$strip>>;
3216
+ openCheckout: z.ZodNullable<z.ZodObject<{
3217
+ id: z.ZodUUID;
3218
+ planCode: z.ZodString;
3219
+ interval: z.ZodEnum<{
3220
+ month: "month";
3221
+ year: "year";
3222
+ }>;
3223
+ intervalCount: z.ZodNumber;
3224
+ currency: z.ZodString;
3225
+ amountMinor: z.ZodNumber;
3226
+ expiresAt: z.ZodISODateTime;
3227
+ }, z.core.$strip>>;
3228
+ profile: z.ZodObject<{
3229
+ present: z.ZodBoolean;
3230
+ kind: z.ZodNullable<z.ZodEnum<{
3231
+ individual: "individual";
3232
+ company: "company";
3233
+ }>>;
3234
+ }, z.core.$strip>;
3235
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3236
+ id: z.ZodUUID;
3237
+ status: z.ZodEnum<{
3238
+ active: "active";
3239
+ suspended: "suspended";
3240
+ past_due: "past_due";
3241
+ canceled: "canceled";
3242
+ expired: "expired";
3243
+ }>;
3244
+ planCode: z.ZodString;
3245
+ interval: z.ZodEnum<{
3246
+ month: "month";
3247
+ year: "year";
3248
+ }>;
3249
+ amountMinor: z.ZodNumber;
3250
+ currency: z.ZodString;
3251
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3252
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3253
+ cancelAtPeriodEnd: z.ZodBoolean;
3254
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3255
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3256
+ dunning: z.ZodNullable<z.ZodObject<{
3257
+ step: z.ZodNumber;
3258
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3259
+ }, z.core.$strip>>;
3260
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3261
+ planCode: z.ZodString;
3262
+ interval: z.ZodEnum<{
3263
+ month: "month";
3264
+ year: "year";
3265
+ }>;
3266
+ effectiveAt: z.ZodISODateTime;
3267
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3268
+ }, z.core.$strip>>;
3269
+ }, z.core.$strip>>>;
3270
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
3271
+ id: z.ZodUUID;
3272
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3273
+ billingReason: z.ZodEnum<{
3274
+ subscription_create: "subscription_create";
3275
+ subscription_cycle: "subscription_cycle";
3276
+ subscription_update: "subscription_update";
3277
+ purchase: "purchase";
3278
+ manual: "manual";
3279
+ }>;
3280
+ totalMinor: z.ZodNumber;
3281
+ currency: z.ZodString;
3282
+ dueAt: z.ZodISODateTime;
3283
+ }, z.core.$strip>>>;
3284
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
3285
+ code: z.ZodNullable<z.ZodString>;
3286
+ type: z.ZodString;
3287
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3288
+ source: z.ZodString;
3289
+ grantedAt: z.ZodISODateTime;
3290
+ }, z.core.$strip>>>;
3291
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3292
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3293
+ billable: z.ZodBoolean;
3294
+ standing: z.ZodEnum<{
3295
+ ok: "ok";
3296
+ low: "low";
3297
+ exhausted: "exhausted";
3298
+ }>;
3299
+ }, z.core.$strip>>>;
3300
+ }, z.core.$strip>>;
3301
+ }, z.core.$strip>;
3302
+ type InvoiceWaiveResponse = z.infer<typeof InvoiceWaiveResponseSchema>;
3303
+ /** `POST /v1/subscriptions/{id}/change` (billing core MF9): the subscription and the state with `scheduledChange`. */
3304
+ declare const ChangeSubscriptionResponseSchema: z.ZodObject<{
3305
+ id: z.ZodUUID;
3306
+ accountRef: z.ZodString;
3307
+ status: z.ZodEnum<{
3308
+ active: "active";
3309
+ suspended: "suspended";
3310
+ past_due: "past_due";
3311
+ canceled: "canceled";
3312
+ expired: "expired";
3313
+ }>;
3314
+ planCode: z.ZodString;
3315
+ priceId: z.ZodUUID;
3316
+ interval: z.ZodEnum<{
3317
+ month: "month";
3318
+ year: "year";
3319
+ }>;
3320
+ amountMinor: z.ZodNumber;
3321
+ currency: z.ZodString;
3322
+ provider: z.ZodString;
3323
+ providerSubscriptionRef: z.ZodString;
3324
+ cancelAtPeriodEnd: z.ZodBoolean;
3325
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3326
+ cancelReason: z.ZodNullable<z.ZodString>;
3327
+ canceledAt: z.ZodNullable<z.ZodISODateTime>;
3328
+ startedAt: z.ZodISODateTime;
3329
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3330
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3331
+ dunningStartedAt: z.ZodNullable<z.ZodISODateTime>;
3332
+ account: z.ZodOptional<z.ZodObject<{
3333
+ version: z.ZodNumber;
3334
+ planCode: z.ZodString;
3335
+ accessState: z.ZodEnum<{
3336
+ active: "active";
3337
+ suspended: "suspended";
3338
+ }>;
3339
+ entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
3340
+ ref: z.ZodString;
3341
+ displayName: z.ZodString;
3342
+ updatedAt: z.ZodISODateTime;
3343
+ catalogVersion: z.ZodNullable<z.ZodString>;
3344
+ subscription: z.ZodNullable<z.ZodObject<{
3345
+ id: z.ZodUUID;
3346
+ status: z.ZodEnum<{
3347
+ active: "active";
3348
+ suspended: "suspended";
3349
+ past_due: "past_due";
3350
+ canceled: "canceled";
3351
+ expired: "expired";
3352
+ }>;
3353
+ planCode: z.ZodString;
3354
+ interval: z.ZodEnum<{
3355
+ month: "month";
3356
+ year: "year";
3357
+ }>;
3358
+ amountMinor: z.ZodNumber;
3359
+ currency: z.ZodString;
3360
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3361
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3362
+ cancelAtPeriodEnd: z.ZodBoolean;
3363
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3364
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3365
+ dunning: z.ZodNullable<z.ZodObject<{
3366
+ step: z.ZodNumber;
3367
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3368
+ }, z.core.$strip>>;
3369
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3370
+ planCode: z.ZodString;
3371
+ interval: z.ZodEnum<{
3372
+ month: "month";
3373
+ year: "year";
3374
+ }>;
3375
+ effectiveAt: z.ZodISODateTime;
3376
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3377
+ }, z.core.$strip>>;
3378
+ }, z.core.$strip>>;
3379
+ openCheckout: z.ZodNullable<z.ZodObject<{
3380
+ id: z.ZodUUID;
3381
+ planCode: z.ZodString;
3382
+ interval: z.ZodEnum<{
3383
+ month: "month";
3384
+ year: "year";
3385
+ }>;
3386
+ intervalCount: z.ZodNumber;
3387
+ currency: z.ZodString;
3388
+ amountMinor: z.ZodNumber;
3389
+ expiresAt: z.ZodISODateTime;
3390
+ }, z.core.$strip>>;
3391
+ profile: z.ZodObject<{
3392
+ present: z.ZodBoolean;
3393
+ kind: z.ZodNullable<z.ZodEnum<{
3394
+ individual: "individual";
3395
+ company: "company";
3396
+ }>>;
3397
+ }, z.core.$strip>;
3398
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3399
+ id: z.ZodUUID;
3400
+ status: z.ZodEnum<{
3401
+ active: "active";
3402
+ suspended: "suspended";
3403
+ past_due: "past_due";
3404
+ canceled: "canceled";
3405
+ expired: "expired";
3406
+ }>;
3407
+ planCode: z.ZodString;
3408
+ interval: z.ZodEnum<{
3409
+ month: "month";
3410
+ year: "year";
3411
+ }>;
3412
+ amountMinor: z.ZodNumber;
3413
+ currency: z.ZodString;
3414
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3415
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3416
+ cancelAtPeriodEnd: z.ZodBoolean;
3417
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3418
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3419
+ dunning: z.ZodNullable<z.ZodObject<{
3420
+ step: z.ZodNumber;
3421
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3422
+ }, z.core.$strip>>;
3423
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3424
+ planCode: z.ZodString;
3425
+ interval: z.ZodEnum<{
3426
+ month: "month";
3427
+ year: "year";
3428
+ }>;
3429
+ effectiveAt: z.ZodISODateTime;
3430
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3431
+ }, z.core.$strip>>;
3432
+ }, z.core.$strip>>>;
3433
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
3434
+ id: z.ZodUUID;
3435
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3436
+ billingReason: z.ZodEnum<{
3437
+ subscription_create: "subscription_create";
3438
+ subscription_cycle: "subscription_cycle";
3439
+ subscription_update: "subscription_update";
3440
+ purchase: "purchase";
3441
+ manual: "manual";
3442
+ }>;
3443
+ totalMinor: z.ZodNumber;
3444
+ currency: z.ZodString;
3445
+ dueAt: z.ZodISODateTime;
3446
+ }, z.core.$strip>>>;
3447
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
3448
+ code: z.ZodNullable<z.ZodString>;
3449
+ type: z.ZodString;
3450
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3451
+ source: z.ZodString;
3452
+ grantedAt: z.ZodISODateTime;
3453
+ }, z.core.$strip>>>;
3454
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3455
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3456
+ billable: z.ZodBoolean;
3457
+ standing: z.ZodEnum<{
3458
+ ok: "ok";
3459
+ low: "low";
3460
+ exhausted: "exhausted";
3461
+ }>;
3462
+ }, z.core.$strip>>>;
3463
+ }, z.core.$strip>>;
3464
+ }, z.core.$strip>;
3465
+ type ChangeSubscriptionResponse = z.infer<typeof ChangeSubscriptionResponseSchema>;
3466
+ /** `POST /v1/subscriptions/{id}/uncancel` (billing core MF9): the scheduled cancellation is taken back. */
3467
+ declare const UncancelSubscriptionResponseSchema: z.ZodObject<{
3468
+ id: z.ZodUUID;
3469
+ accountRef: z.ZodString;
3470
+ status: z.ZodEnum<{
3471
+ active: "active";
3472
+ suspended: "suspended";
3473
+ past_due: "past_due";
3474
+ canceled: "canceled";
3475
+ expired: "expired";
3476
+ }>;
3477
+ planCode: z.ZodString;
3478
+ priceId: z.ZodUUID;
3479
+ interval: z.ZodEnum<{
3480
+ month: "month";
3481
+ year: "year";
3482
+ }>;
3483
+ amountMinor: z.ZodNumber;
3484
+ currency: z.ZodString;
3485
+ provider: z.ZodString;
3486
+ providerSubscriptionRef: z.ZodString;
3487
+ cancelAtPeriodEnd: z.ZodBoolean;
3488
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3489
+ cancelReason: z.ZodNullable<z.ZodString>;
3490
+ canceledAt: z.ZodNullable<z.ZodISODateTime>;
3491
+ startedAt: z.ZodISODateTime;
3492
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3493
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3494
+ dunningStartedAt: z.ZodNullable<z.ZodISODateTime>;
3495
+ account: z.ZodOptional<z.ZodObject<{
3496
+ version: z.ZodNumber;
3497
+ planCode: z.ZodString;
3498
+ accessState: z.ZodEnum<{
3499
+ active: "active";
3500
+ suspended: "suspended";
3501
+ }>;
3502
+ entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
3503
+ ref: z.ZodString;
3504
+ displayName: z.ZodString;
3505
+ updatedAt: z.ZodISODateTime;
3506
+ catalogVersion: z.ZodNullable<z.ZodString>;
3507
+ subscription: z.ZodNullable<z.ZodObject<{
3508
+ id: z.ZodUUID;
3509
+ status: z.ZodEnum<{
3510
+ active: "active";
3511
+ suspended: "suspended";
3512
+ past_due: "past_due";
3513
+ canceled: "canceled";
3514
+ expired: "expired";
3515
+ }>;
3516
+ planCode: z.ZodString;
3517
+ interval: z.ZodEnum<{
3518
+ month: "month";
3519
+ year: "year";
3520
+ }>;
3521
+ amountMinor: z.ZodNumber;
3522
+ currency: z.ZodString;
3523
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3524
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3525
+ cancelAtPeriodEnd: z.ZodBoolean;
3526
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3527
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3528
+ dunning: z.ZodNullable<z.ZodObject<{
3529
+ step: z.ZodNumber;
3530
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3531
+ }, z.core.$strip>>;
3532
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3533
+ planCode: z.ZodString;
3534
+ interval: z.ZodEnum<{
3535
+ month: "month";
3536
+ year: "year";
3537
+ }>;
3538
+ effectiveAt: z.ZodISODateTime;
3539
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3540
+ }, z.core.$strip>>;
3541
+ }, z.core.$strip>>;
3542
+ openCheckout: z.ZodNullable<z.ZodObject<{
3543
+ id: z.ZodUUID;
3544
+ planCode: z.ZodString;
3545
+ interval: z.ZodEnum<{
3546
+ month: "month";
3547
+ year: "year";
3548
+ }>;
3549
+ intervalCount: z.ZodNumber;
3550
+ currency: z.ZodString;
3551
+ amountMinor: z.ZodNumber;
3552
+ expiresAt: z.ZodISODateTime;
3553
+ }, z.core.$strip>>;
3554
+ profile: z.ZodObject<{
3555
+ present: z.ZodBoolean;
3556
+ kind: z.ZodNullable<z.ZodEnum<{
3557
+ individual: "individual";
3558
+ company: "company";
3559
+ }>>;
3560
+ }, z.core.$strip>;
3561
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3562
+ id: z.ZodUUID;
3563
+ status: z.ZodEnum<{
3564
+ active: "active";
3565
+ suspended: "suspended";
3566
+ past_due: "past_due";
3567
+ canceled: "canceled";
3568
+ expired: "expired";
3569
+ }>;
3570
+ planCode: z.ZodString;
3571
+ interval: z.ZodEnum<{
3572
+ month: "month";
3573
+ year: "year";
3574
+ }>;
3575
+ amountMinor: z.ZodNumber;
3576
+ currency: z.ZodString;
3577
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3578
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3579
+ cancelAtPeriodEnd: z.ZodBoolean;
3580
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3581
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3582
+ dunning: z.ZodNullable<z.ZodObject<{
3583
+ step: z.ZodNumber;
3584
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3585
+ }, z.core.$strip>>;
3586
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3587
+ planCode: z.ZodString;
3588
+ interval: z.ZodEnum<{
3589
+ month: "month";
3590
+ year: "year";
3591
+ }>;
3592
+ effectiveAt: z.ZodISODateTime;
3593
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3594
+ }, z.core.$strip>>;
3595
+ }, z.core.$strip>>>;
3596
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
3597
+ id: z.ZodUUID;
3598
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3599
+ billingReason: z.ZodEnum<{
3600
+ subscription_create: "subscription_create";
3601
+ subscription_cycle: "subscription_cycle";
3602
+ subscription_update: "subscription_update";
3603
+ purchase: "purchase";
3604
+ manual: "manual";
3605
+ }>;
3606
+ totalMinor: z.ZodNumber;
3607
+ currency: z.ZodString;
3608
+ dueAt: z.ZodISODateTime;
3609
+ }, z.core.$strip>>>;
3610
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
3611
+ code: z.ZodNullable<z.ZodString>;
3612
+ type: z.ZodString;
3613
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3614
+ source: z.ZodString;
3615
+ grantedAt: z.ZodISODateTime;
3616
+ }, z.core.$strip>>>;
3617
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3618
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3619
+ billable: z.ZodBoolean;
3620
+ standing: z.ZodEnum<{
3621
+ ok: "ok";
3622
+ low: "low";
3623
+ exhausted: "exhausted";
3624
+ }>;
3625
+ }, z.core.$strip>>>;
3626
+ }, z.core.$strip>>;
3627
+ }, z.core.$strip>;
3628
+ type UncancelSubscriptionResponse = z.infer<typeof UncancelSubscriptionResponseSchema>;
3629
+ /**
3630
+ * `POST /v1/accounts/{ref}/credits` (metering MF2): the ledger entry written, the meters after it
3631
+ * and (K5) the account state after it (a credit may change a meter's standing).
3632
+ */
3633
+ declare const CreditGrantResponseSchema: z.ZodObject<{
3634
+ account: z.ZodOptional<z.ZodObject<{
3635
+ version: z.ZodNumber;
3636
+ planCode: z.ZodString;
3637
+ accessState: z.ZodEnum<{
3638
+ active: "active";
3639
+ suspended: "suspended";
3640
+ }>;
3641
+ entitlements: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
3642
+ ref: z.ZodString;
3643
+ displayName: z.ZodString;
3644
+ updatedAt: z.ZodISODateTime;
3645
+ catalogVersion: z.ZodNullable<z.ZodString>;
3646
+ subscription: z.ZodNullable<z.ZodObject<{
3647
+ id: z.ZodUUID;
3648
+ status: z.ZodEnum<{
3649
+ active: "active";
3650
+ suspended: "suspended";
3651
+ past_due: "past_due";
3652
+ canceled: "canceled";
3653
+ expired: "expired";
3654
+ }>;
3655
+ planCode: z.ZodString;
3656
+ interval: z.ZodEnum<{
3657
+ month: "month";
3658
+ year: "year";
3659
+ }>;
3660
+ amountMinor: z.ZodNumber;
3661
+ currency: z.ZodString;
3662
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3663
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3664
+ cancelAtPeriodEnd: z.ZodBoolean;
3665
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3666
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3667
+ dunning: z.ZodNullable<z.ZodObject<{
3668
+ step: z.ZodNumber;
3669
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3670
+ }, z.core.$strip>>;
3671
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3672
+ planCode: z.ZodString;
3673
+ interval: z.ZodEnum<{
3674
+ month: "month";
3675
+ year: "year";
3676
+ }>;
3677
+ effectiveAt: z.ZodISODateTime;
3678
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3679
+ }, z.core.$strip>>;
3680
+ }, z.core.$strip>>;
3681
+ openCheckout: z.ZodNullable<z.ZodObject<{
3682
+ id: z.ZodUUID;
3683
+ planCode: z.ZodString;
3684
+ interval: z.ZodEnum<{
3685
+ month: "month";
3686
+ year: "year";
3687
+ }>;
3688
+ intervalCount: z.ZodNumber;
3689
+ currency: z.ZodString;
3690
+ amountMinor: z.ZodNumber;
3691
+ expiresAt: z.ZodISODateTime;
3692
+ }, z.core.$strip>>;
3693
+ profile: z.ZodObject<{
3694
+ present: z.ZodBoolean;
3695
+ kind: z.ZodNullable<z.ZodEnum<{
3696
+ individual: "individual";
3697
+ company: "company";
3698
+ }>>;
3699
+ }, z.core.$strip>;
3700
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
3701
+ id: z.ZodUUID;
3702
+ status: z.ZodEnum<{
3703
+ active: "active";
3704
+ suspended: "suspended";
3705
+ past_due: "past_due";
3706
+ canceled: "canceled";
3707
+ expired: "expired";
3708
+ }>;
3709
+ planCode: z.ZodString;
3710
+ interval: z.ZodEnum<{
3711
+ month: "month";
3712
+ year: "year";
3713
+ }>;
3714
+ amountMinor: z.ZodNumber;
3715
+ currency: z.ZodString;
3716
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
3717
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
3718
+ cancelAtPeriodEnd: z.ZodBoolean;
3719
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
3720
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
3721
+ dunning: z.ZodNullable<z.ZodObject<{
3722
+ step: z.ZodNumber;
3723
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
3724
+ }, z.core.$strip>>;
3725
+ scheduledChange: z.ZodNullable<z.ZodObject<{
3726
+ planCode: z.ZodString;
3727
+ interval: z.ZodEnum<{
3728
+ month: "month";
3729
+ year: "year";
3730
+ }>;
3731
+ effectiveAt: z.ZodISODateTime;
3732
+ amountMinor: z.ZodOptional<z.ZodNumber>;
3733
+ }, z.core.$strip>>;
3734
+ }, z.core.$strip>>>;
3735
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
3736
+ id: z.ZodUUID;
3737
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
3738
+ billingReason: z.ZodEnum<{
3739
+ subscription_create: "subscription_create";
3740
+ subscription_cycle: "subscription_cycle";
3741
+ subscription_update: "subscription_update";
3742
+ purchase: "purchase";
3743
+ manual: "manual";
3744
+ }>;
3745
+ totalMinor: z.ZodNumber;
3746
+ currency: z.ZodString;
3747
+ dueAt: z.ZodISODateTime;
3748
+ }, z.core.$strip>>>;
3749
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
3750
+ code: z.ZodNullable<z.ZodString>;
3751
+ type: z.ZodString;
3752
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3753
+ source: z.ZodString;
3754
+ grantedAt: z.ZodISODateTime;
3755
+ }, z.core.$strip>>>;
3756
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3757
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3758
+ billable: z.ZodBoolean;
3759
+ standing: z.ZodEnum<{
3760
+ ok: "ok";
3761
+ low: "low";
3762
+ exhausted: "exhausted";
3763
+ }>;
3764
+ }, z.core.$strip>>>;
3765
+ }, z.core.$strip>>;
3766
+ entry: z.ZodObject<{
3767
+ id: z.ZodUUID;
3768
+ meter: z.ZodString;
3769
+ kind: z.ZodEnum<{
3770
+ cycle_grant: "cycle_grant";
3771
+ rollover: "rollover";
3772
+ plan_change: "plan_change";
3773
+ manual_grant: "manual_grant";
3774
+ adjustment: "adjustment";
3775
+ }>;
3776
+ units: z.ZodNumber;
3777
+ periodStart: z.ZodISODateTime;
3778
+ reason: z.ZodNullable<z.ZodString>;
3779
+ actorRef: z.ZodNullable<z.ZodString>;
3780
+ createdAt: z.ZodISODateTime;
3781
+ }, z.core.$strip>;
3782
+ meters: z.ZodObject<{
3783
+ ref: z.ZodString;
3784
+ asOf: z.ZodISODateTime;
3785
+ rolledUpThrough: z.ZodISODateTime;
3786
+ meters: z.ZodRecord<z.ZodString, z.ZodObject<{
3787
+ periodStart: z.ZodISODateTime;
3788
+ periodEnd: z.ZodISODateTime;
3789
+ includedUnits: z.ZodNullable<z.ZodNumber>;
3790
+ consumedUnits: z.ZodNumber;
3791
+ creditedUnits: z.ZodNumber;
3792
+ balance: z.ZodNumber;
3793
+ overageUnits: z.ZodNumber;
3794
+ standing: z.ZodEnum<{
3795
+ ok: "ok";
3796
+ low: "low";
3797
+ exhausted: "exhausted";
3798
+ }>;
3799
+ billable: z.ZodBoolean;
3800
+ amountDueMinor: z.ZodNullable<z.ZodNumber>;
3801
+ currency: z.ZodNullable<z.ZodString>;
3802
+ capReached: z.ZodOptional<z.ZodBoolean>;
3803
+ }, z.core.$strip>>;
3804
+ }, z.core.$strip>;
3805
+ }, z.core.$strip>;
3806
+ type CreditGrantResponse = z.infer<typeof CreditGrantResponseSchema>;
3807
+ /**
3808
+ * Known `GET /v1/me` capabilities (M27): what this steward understands beyond the 0.2 contract.
3809
+ * `steward catalog push` sends a catalog with `benefits` only when `benefits` is listed (an older
3810
+ * steward would silently drop the key); phase 2 adds `events` (`POST /v1/events/ingest`), `meters`
3811
+ * (catalog `meters`, `meter_credit` benefits, `GET …/meters`, credits) and `overage` (metered
3812
+ * prices, meter charges). A steward lists a capability only once it implements it. Open set.
3813
+ */
3814
+ declare const STEWARD_CAPABILITIES: readonly ["benefits", "events", "meters", "overage"];
3815
+ type StewardCapability = (typeof STEWARD_CAPABILITIES)[number];
3816
+ /** `GET /v1/me`: the key's product and scope (setup check). `capabilities` absent from older steward. */
3817
+ declare const MeResponseSchema: z.ZodObject<{
3818
+ product: z.ZodString;
3819
+ keyName: z.ZodString;
3820
+ scope: z.ZodEnum<{
3821
+ product: "product";
3822
+ admin: "admin";
3823
+ checkout: "checkout";
3824
+ }>;
3825
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
3826
+ }, z.core.$strip>;
3827
+ type MeResponse = z.infer<typeof MeResponseSchema>;
3828
+ /** Değişiklik yapan her istekte zorunlu başlıklar. */
3829
+ declare const HEADER_IDEMPOTENCY_KEY = "idempotency-key";
3830
+ declare const HEADER_ACTOR_REF = "x-actor-ref";
3831
+ declare const HEADER_API_VERSION = "steward-api-version";
3832
+ declare const HEADER_SDK = "x-steward-sdk";
3833
+ declare const HEADER_REQUEST_ID = "x-request-id";
3834
+ //#endregion
3835
+ //#region ../contract/src/errors.d.ts
3836
+ type ErrorCodeSpec = {
3837
+ readonly httpStatus: number;
3838
+ readonly category: ErrorCategory;
3839
+ readonly retryable: boolean;
3840
+ };
3841
+ declare const ERROR_CODES: Readonly<{
3842
+ invalid_json: ErrorCodeSpec;
3843
+ invalid_request: ErrorCodeSpec;
3844
+ invalid_account_ref: ErrorCodeSpec;
3845
+ invalid_include: ErrorCodeSpec;
3846
+ invalid_actor_ref: ErrorCodeSpec;
3847
+ actor_ref_required: ErrorCodeSpec;
3848
+ idempotency_key_required: ErrorCodeSpec;
3849
+ invalid_idempotency_key: ErrorCodeSpec;
3850
+ /** Anahtar yok / iptal / yanlış — neden ayrıştırılmaz. */
1622
3851
  unauthorized: ErrorCodeSpec;
1623
3852
  /** Admin kapsamı gereken uç. */
1624
3853
  forbidden: ErrorCodeSpec;
@@ -1643,10 +3872,16 @@ declare const ERROR_CODES: Readonly<{
1643
3872
  override_type_mismatch: ErrorCodeSpec;
1644
3873
  /** Grant girdisindeki plan katalogda yok. */
1645
3874
  plan_not_found: ErrorCodeSpec;
3875
+ /** Grant `benefitCodes`: a code is not an active (not archived) catalog benefit of the product. */
3876
+ benefit_not_found: ErrorCodeSpec;
1646
3877
  invalid_window: ErrorCodeSpec;
1647
3878
  already_subscribed: ErrorCodeSpec;
1648
3879
  already_canceled: ErrorCodeSpec;
1649
- /** `PUT …/plan` `mode: "strict"`: canlı aboneliğin planı hedefi geçiyor; hiçbir şey yazılmadı. */
3880
+ /**
3881
+ * LEGACY — no longer produced (billing core, M35: no plan rank). Steward before the billing core
3882
+ * answered `PUT …/plan` `mode: "strict"` with it when a live subscription's plan outranked the
3883
+ * target. Kept so clients that handle it keep compiling.
3884
+ */
1650
3885
  subscription_plan_higher: ErrorCodeSpec;
1651
3886
  plan_not_sellable: ErrorCodeSpec;
1652
3887
  /**
@@ -1672,6 +3907,35 @@ declare const ERROR_CODES: Readonly<{
1672
3907
  invoice_not_voidable: ErrorCodeSpec;
1673
3908
  /** Void: ödemeli fatura; iptali iade yolundadır (F4d). */
1674
3909
  invoice_has_payment: ErrorCodeSpec;
3910
+ /** `DELETE /v1/accounts/:ref`: the account has an unpaid invoice; pay or waive it first. */
3911
+ invoice_open: ErrorCodeSpec;
3912
+ /** Pay page session: the invoice is not unpaid (paid, waived, uncollectible, or not an invoice-first invoice). */
3913
+ invoice_not_payable: ErrorCodeSpec;
3914
+ /** Waive: the invoice is not unpaid. */
3915
+ invoice_not_waivable: ErrorCodeSpec;
3916
+ /**
3917
+ * `POST /v1/subscriptions/:id/change`: the requested change is not possible — no active price for
3918
+ * the target plan/interval in the subscription's currency, nothing would change, or the
3919
+ * subscription is not live. Plan lookup errors keep their codes (`plan_not_found`, `plan_not_sellable`).
3920
+ */
3921
+ subscription_change_invalid: ErrorCodeSpec;
3922
+ /**
3923
+ * `POST /v1/subscriptions/:id/uncancel`: the live subscription has no cancellation scheduled for
3924
+ * the period end (an ended or immediately canceled one is `already_canceled`).
3925
+ */
3926
+ cancel_not_scheduled: ErrorCodeSpec;
3927
+ /** `POST /v1/events/ingest`: more than 1 000 events (or a body over 1 MiB) in one batch; split it. */
3928
+ batch_too_large: ErrorCodeSpec;
3929
+ /** `POST /v1/events/ingest`: the unprocessed event backlog is too large; `Retry-After`, keep the batch queued (M11). */
3930
+ events_backlog: ErrorCodeSpec;
3931
+ /** Catalog sync: a meter's filter or aggregation changed after its first period opened; use a new meter code (M4). */
3932
+ meter_locked: ErrorCodeSpec;
3933
+ /** Credit grant (or another meter lookup): the code is not an active catalog meter of the product. */
3934
+ meter_not_found: ErrorCodeSpec;
3935
+ /** Catalog sync: a metered price's tax terms differ from the plan's base price in that currency (M20). */
3936
+ metered_price_tax_mismatch: ErrorCodeSpec;
3937
+ /** A second live subscription would bill the same meter's overage (M20: one billing subscription per meter). */
3938
+ meter_already_billed: ErrorCodeSpec;
1675
3939
  internal_error: ErrorCodeSpec;
1676
3940
  /** `/health`: veritabanına ulaşılamıyor. */
1677
3941
  database_unavailable: ErrorCodeSpec;
@@ -1690,61 +3954,384 @@ declare function isKnownErrorCode(code: string): code is ErrorCode;
1690
3954
  /** Bilinen kodun tanımı; bilinmeyen kod için null. */
1691
3955
  declare function errorCodeSpec(code: string): ErrorCodeSpec | null;
1692
3956
  //#endregion
1693
- //#region ../contract/src/rules.d.ts
1694
- /** Hesap başına en fazla bir abonelik bu durumlardan birindedir. */
1695
- declare const LIVE_SUBSCRIPTION_STATUSES: readonly ["active", "past_due", "suspended"];
1696
- declare function isLiveSubscriptionStatus(status: SubscriptionStatus): boolean;
1697
- type Instant = string | Date;
1698
- /** Kuralın katalogdan okuduğu kadarı; `Catalog` ve `CatalogSyncInput` doğrudan verilebilir. */
1699
- type EntitlementRulesCatalog = {
1700
- defaultPlanCode: string;
1701
- features: readonly {
1702
- key: string;
1703
- }[];
3957
+ //#region ../contract/src/rules.d.ts
3958
+ /** Live subscription statuses. An account may hold several live subscriptions (billing core, M34). */
3959
+ declare const LIVE_SUBSCRIPTION_STATUSES: readonly ["active", "past_due", "suspended"];
3960
+ declare function isLiveSubscriptionStatus(status: SubscriptionStatus): boolean;
3961
+ type Instant = string | Date;
3962
+ /** Catalog benefit definition as the rule reads it (catalog input and `GET /v1/catalog` both fit). */
3963
+ type BenefitRulesDefinition = {
3964
+ type: string;
3965
+ properties: Readonly<Record<string, unknown>>;
3966
+ };
3967
+ /** What the rule reads from the catalog; `Catalog` and `CatalogSyncInput` can be passed as they are. */
3968
+ type EntitlementRulesCatalog = {
3969
+ defaultPlanCode: string;
3970
+ /**
3971
+ * Feature `type` picks the merge rule. Without it the value decides: number or `null` → limit,
3972
+ * boolean → OR, string → last layer wins.
3973
+ */
3974
+ features: readonly {
3975
+ key: string;
3976
+ type?: BenefitFeatureType | undefined;
3977
+ }[];
3978
+ /**
3979
+ * Every plan a subscription or grant refers to must be here: a plan removed from the catalog
3980
+ * (inactive) that a subscription/grant still refers to is passed as well. `rank` is not read.
3981
+ */
3982
+ plans: readonly {
3983
+ code: string;
3984
+ rank?: number | undefined;
3985
+ entitlements: Readonly<Record<string, EntitlementValue>>;
3986
+ /** Codes of catalog `benefits` the plan includes, in display order. */
3987
+ benefits?: readonly string[] | undefined;
3988
+ }[];
3989
+ /** Grantable (not archived) catalog benefits by code. A code that is not here is not granted. */
3990
+ benefits?: Readonly<Record<string, BenefitRulesDefinition>> | undefined;
3991
+ };
3992
+ type EntitlementRulesGrant = {
3993
+ /** Null/absent unless it is a plan grant. */
3994
+ planCode?: string | null | undefined;
3995
+ overrides?: Readonly<Record<string, EntitlementValue>> | undefined;
3996
+ /** Named catalog benefits granted independently of a plan (billing core, M32). */
3997
+ benefitCodes?: readonly string[] | null | undefined;
3998
+ startsAt?: Instant | undefined;
3999
+ endsAt?: Instant | null | undefined;
4000
+ revokedAt?: Instant | null | undefined;
4001
+ /** When every grant has it, grants are ordered by `createdAt`, then `id`; otherwise the given order is the creation order. */
4002
+ createdAt?: Instant | undefined;
4003
+ id?: string | undefined;
4004
+ };
4005
+ type BenefitRulesSubscription = {
4006
+ planCode: string;
4007
+ status: SubscriptionStatus;
4008
+ /** When every subscription has it, they are ordered by `startedAt`, then `id`; otherwise the given order is the start order. */
4009
+ startedAt?: Instant | undefined;
4010
+ id?: string | undefined;
4011
+ };
4012
+ type ResolveBenefitsInput = {
4013
+ catalog: EntitlementRulesCatalog;
4014
+ /** The account's subscriptions; those not live (canceled/expired) are ignored. */
4015
+ subscriptions: readonly BenefitRulesSubscription[];
4016
+ grants?: readonly EntitlementRulesGrant[] | undefined;
4017
+ /**
4018
+ * Instant at which grant windows (`startsAt <= at < endsAt`) are evaluated. Without it windows
4019
+ * are not evaluated: the caller passes only active grants (a revoked grant is always ignored).
4020
+ */
4021
+ at?: Instant | undefined;
4022
+ };
4023
+ type ResolveEntitlementsInput = {
4024
+ catalog: EntitlementRulesCatalog;
4025
+ /** The account's subscription; ignored unless live. */
4026
+ subscription: {
4027
+ planCode: string;
4028
+ status: SubscriptionStatus;
4029
+ } | null;
4030
+ grants?: readonly EntitlementRulesGrant[] | undefined;
4031
+ /** See `ResolveBenefitsInput.at`. */
4032
+ at?: Instant | undefined;
4033
+ };
4034
+ /** A granted benefit (`AccountState.benefits[]` without `grantedAt`, which the service keeps in its grant log). */
4035
+ type ResolvedBenefit = {
4036
+ /** Catalog benefit code; `null` for a plan's implicit benefit and for account overrides. */
4037
+ code: string | null;
4038
+ type: string;
4039
+ properties: Record<string, unknown>;
4040
+ /** `plan:<code>`, `grant:<id>` or `override`. */
4041
+ source: string;
4042
+ };
4043
+ type ResolvedEntitlements = Pick<EntitlementSnapshot, "planCode" | "accessState" | "entitlements">;
4044
+ type ResolvedBenefits = ResolvedEntitlements & {
4045
+ /** Granted benefits in layer order; the `override` benefit (if any) is last. */
4046
+ benefits: ResolvedBenefit[];
4047
+ };
4048
+ /** Type of a plan's implicit benefit and of account overrides. */
4049
+ declare const FEATURE_FLAG_BENEFIT_TYPE = "feature_flag";
4050
+ /** Source of the account overrides benefit. */
4051
+ declare const OVERRIDE_BENEFIT_SOURCE = "override";
4052
+ /** Not revoked and (when `at` is given) inside its window. */
4053
+ declare function isGrantActive(grant: EntitlementRulesGrant, at?: Instant): boolean;
4054
+ /**
4055
+ * The account's granted benefits and their projection (planCode, accessState, entitlements).
4056
+ * Throws when a plan it refers to is not in the catalog (inconsistent data; the service
4057
+ * guarantees it with foreign keys).
4058
+ */
4059
+ declare function resolveBenefits(input: ResolveBenefitsInput): ResolvedBenefits;
4060
+ /**
4061
+ * The account's effective plan, entitlements and access state: the projection of
4062
+ * `resolveBenefits` for a single subscription (the pre-billing-core signature).
4063
+ */
4064
+ declare function resolveEntitlements(input: ResolveEntitlementsInput): ResolvedEntitlements;
4065
+ //#endregion
4066
+ //#region ../contract/src/ingest.d.ts
4067
+ /** Most events in one ingest batch (M11). */
4068
+ declare const EVENTS_INGEST_MAX_EVENTS = 1000;
4069
+ /** Largest ingest request body in bytes (M11; enforced on the route, not by the schema). */
4070
+ declare const EVENTS_INGEST_MAX_BYTES = 1048576;
4071
+ declare const EVENT_NAME_MAX_LENGTH = 128;
4072
+ declare const EVENT_METADATA_MAX_PAIRS = 50;
4073
+ declare const EVENT_METADATA_KEY_MAX_LENGTH = 40;
4074
+ declare const EVENT_METADATA_STRING_MAX_LENGTH = 500;
4075
+ /** How far back an event `timestamp` may lie, relative to its receipt (M18). */
4076
+ declare const EVENT_TIMESTAMP_MAX_AGE_DAYS = 35;
4077
+ /** How far ahead an event `timestamp` may lie, relative to its receipt (clock skew, M18). */
4078
+ declare const EVENT_TIMESTAMP_MAX_SKEW_MINUTES = 5;
4079
+ /** Whether a string contains C0 control characters or DEL (kept out of names and keys shown in logs and doctor). */
4080
+ declare function hasControlCharacters(value: string): boolean;
4081
+ /** Event name (free text, e.g. `ai.completion`); meters select events by it. */
4082
+ declare const EventNameSchema: z.ZodString;
4083
+ /** Product-chosen dedup key of an event, unique within the product (`cmpl_<id>`, `req_<id>`; M10). */
4084
+ declare const EventExternalIdSchema: z.ZodString;
4085
+ /** Metadata key; a meter filter reads it as `metadata.<key>`. `__proto__` is reserved. */
4086
+ declare const EventMetadataKeySchema: z.ZodString;
4087
+ declare const EventMetadataValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
4088
+ type EventMetadataValue = z.infer<typeof EventMetadataValueSchema>;
4089
+ declare const EventMetadataSchema: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
4090
+ type EventMetadata = z.infer<typeof EventMetadataSchema>;
4091
+ /** One event the product sends (product → steward; not a webhook `BillingEvent`). */
4092
+ declare const IngestEventSchema: z.ZodObject<{
4093
+ accountRef: z.ZodString;
4094
+ name: z.ZodString;
4095
+ externalId: z.ZodString;
4096
+ timestamp: z.ZodOptional<z.ZodISODateTime>;
4097
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
4098
+ }, z.core.$strip>;
4099
+ type IngestEvent = z.infer<typeof IngestEventSchema>;
4100
+ /** `POST /v1/events/ingest` body. */
4101
+ declare const EventsIngestInputSchema: z.ZodObject<{
4102
+ events: z.ZodArray<z.ZodObject<{
4103
+ accountRef: z.ZodString;
4104
+ name: z.ZodString;
4105
+ externalId: z.ZodString;
4106
+ timestamp: z.ZodOptional<z.ZodISODateTime>;
4107
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
4108
+ }, z.core.$strip>>;
4109
+ }, z.core.$strip>;
4110
+ type EventsIngestInput = z.infer<typeof EventsIngestInputSchema>;
4111
+ /** Per-event rejection codes this version knows (M12). The result schema accepts others too. */
4112
+ declare const INGEST_REJECT_CODES: readonly ["account_not_found", "account_deleted", "timestamp_out_of_range"];
4113
+ declare const IngestRejectCodeSchema: z.ZodEnum<{
4114
+ account_not_found: "account_not_found";
4115
+ account_deleted: "account_deleted";
4116
+ timestamp_out_of_range: "timestamp_out_of_range";
4117
+ }>;
4118
+ type IngestRejectCode = z.infer<typeof IngestRejectCodeSchema>;
4119
+ declare const IngestRejectionSchema: z.ZodObject<{
4120
+ index: z.ZodNumber;
4121
+ externalId: z.ZodString;
4122
+ code: z.ZodType<"account_not_found" | "account_deleted" | "timestamp_out_of_range" | (string & Record<never, never>), string, z.core.$ZodTypeInternals<"account_not_found" | "account_deleted" | "timestamp_out_of_range" | (string & Record<never, never>), string>>;
4123
+ }, z.core.$strip>;
4124
+ type IngestRejection = z.infer<typeof IngestRejectionSchema>;
4125
+ /**
4126
+ * `POST /v1/events/ingest` result (200): `inserted` new events, `duplicates` already stored
4127
+ * (`externalId` seen before), `rejected` per event (sorted by `index`; the SDK does not retry them).
4128
+ */
4129
+ declare const EventsIngestResultSchema: z.ZodObject<{
4130
+ inserted: z.ZodNumber;
4131
+ duplicates: z.ZodNumber;
4132
+ rejected: z.ZodArray<z.ZodObject<{
4133
+ index: z.ZodNumber;
4134
+ externalId: z.ZodString;
4135
+ code: z.ZodType<"account_not_found" | "account_deleted" | "timestamp_out_of_range" | (string & Record<never, never>), string, z.core.$ZodTypeInternals<"account_not_found" | "account_deleted" | "timestamp_out_of_range" | (string & Record<never, never>), string>>;
4136
+ }, z.core.$strip>>;
4137
+ }, z.core.$strip>;
4138
+ type EventsIngestResult = z.infer<typeof EventsIngestResultSchema>;
4139
+ /**
4140
+ * Whether an event `timestamp` is accepted for an event received at `receivedAt` (M18):
4141
+ * [received − 35 days, received + 5 minutes], both ends inclusive. Outside: `timestamp_out_of_range`.
4142
+ */
4143
+ declare function isEventTimestampInRange(timestamp: Date, receivedAt: Date): boolean;
4144
+ //#endregion
4145
+ //#region ../contract/src/meter-rules.d.ts
4146
+ /** What the rules read from an event (an `IngestEvent`, a stored event row, a queued SDK event). */
4147
+ type MeterRulesEvent = {
4148
+ readonly name: string;
4149
+ readonly metadata?: Readonly<Record<string, unknown>> | undefined;
4150
+ };
4151
+ /** What the rules read from a meter (`MeterDef`, or a stored meter row). */
4152
+ type MeterRulesMeter = {
4153
+ readonly filter: MeterFilter;
4154
+ readonly aggregation: MeterAggregation;
4155
+ };
4156
+ /**
4157
+ * Whether an event matches a meter filter (syntax and semantics: `meters.ts`). A condition on an
4158
+ * absent metadata key is false for every operator; `eq` needs the same type; `like` is a
4159
+ * case-sensitive substring. Throws on a filter the schema would reject.
4160
+ */
4161
+ declare function matchesFilter(event: MeterRulesEvent, filter: MeterFilter): boolean;
4162
+ /**
4163
+ * What one matching event contributes to a meter (M4):
4164
+ * - `count`: `{kind: "count"}` (one unit);
4165
+ * - `sum` / `max`: the number at `metadata.<key>` in micro units (beyond 6 decimals half up);
4166
+ * - `unique`: the canonical value at `metadata.<key>` — `s:<string>`, `n:<plain decimal>`,
4167
+ * `b:true|false` (types never collide: `"500"` ≠ `500`; numbers without exponent, so
4168
+ * `1e21` and `1000000000000000000000` are one value);
4169
+ * - `{kind: "invalid_value"}`: the key is absent, or (`sum`/`max`) its value is not a finite,
4170
+ * non-negative number — a numeric string does not count. The event adds nothing to that meter.
4171
+ */
4172
+ type MeterContribution = {
4173
+ kind: "count";
4174
+ } | {
4175
+ kind: "sum" | "max";
4176
+ micro: bigint;
4177
+ } | {
4178
+ kind: "unique";
4179
+ value: string;
4180
+ } | {
4181
+ kind: "invalid_value";
4182
+ };
4183
+ declare function contributionOf(event: MeterRulesEvent, aggregation: MeterAggregation): MeterContribution;
4184
+ /**
4185
+ * A meter's value over a set of events (reference computation; the service recomputes a closing
4186
+ * period from raw events with the same result, M8): `count` → matching events, `sum` → total,
4187
+ * `max` → the largest value (0 when none), `unique` → distinct values. `matched` counts events
4188
+ * that passed the filter (invalid ones included), `invalid` those without a usable value.
4189
+ */
4190
+ declare function consumptionOf(events: Iterable<MeterRulesEvent>, meter: MeterRulesMeter): {
4191
+ consumedMicro: bigint;
4192
+ matched: number;
4193
+ invalid: number;
4194
+ };
4195
+ /**
4196
+ * A granted benefit as the credit rule reads it: `AccountState.benefits[]`, a `ResolvedBenefit`
4197
+ * of `resolveBenefits` (`rules.ts`), or a catalog benefit row. Only `meter_credit` benefits with
4198
+ * a code count.
4199
+ */
4200
+ type MeterCreditBenefit = {
4201
+ readonly code: string | null;
4202
+ readonly type: string;
4203
+ readonly properties: Readonly<Record<string, unknown>>;
4204
+ /** The granting layer: `plan:<code>`, `grant:<id>` (absent when unknown). */
4205
+ readonly source?: string | undefined;
4206
+ };
4207
+ /** What the granted `meter_credit` benefits give one meter per period. */
4208
+ type GrantedMeterCredit = {
4209
+ /** Sum of the counted benefits' `units` (micro units). */
4210
+ unitsMicro: bigint;
4211
+ /** Sum of the counted benefits' `rolloverCapUnits` (a benefit without a cap adds none); null when none has a cap (rollover off, M6). */
4212
+ rolloverCapMicro: bigint | null;
1704
4213
  /**
1705
- * Adayların (abonelik ve grant planları) TÜMÜ burada olmalı; katalogdan
1706
- * çıkarılıp pasifleşmiş plana bağlı abonelik/grant varsa o plan da verilir.
4214
+ * The counted benefits, in grant order (one entry per benefit code); `source` is the layer of the
4215
+ * grant that counts (null when the input had none).
1707
4216
  */
1708
- plans: readonly {
4217
+ benefits: {
1709
4218
  code: string;
1710
- rank: number;
1711
- entitlements: Readonly<Record<string, EntitlementValue>>;
4219
+ source: string | null;
4220
+ unitsMicro: bigint;
4221
+ rolloverCapMicro: bigint | null;
1712
4222
  }[];
1713
4223
  };
1714
- type EntitlementRulesGrant = {
1715
- /** Plan grant'i değilse null/yok. */
1716
- planCode?: string | null;
1717
- overrides?: Readonly<Record<string, EntitlementValue>>;
1718
- startsAt?: Instant;
1719
- endsAt?: Instant | null;
1720
- revokedAt?: Instant | null;
1721
- /** Varsa (tümünde) grant'ler `createdAt`, sonra `id` ile sıralanır; yoksa verilen sıra oluşturulma sırasıdır. */
1722
- createdAt?: Instant;
1723
- id?: string;
1724
- };
1725
- type ResolveEntitlementsInput = {
1726
- catalog: EntitlementRulesCatalog;
1727
- /** Hesabın aboneliği; durumu canlı değilse (canceled/expired) yok sayılır. */
1728
- subscription: {
1729
- planCode: string;
1730
- status: SubscriptionStatus;
1731
- } | null;
1732
- grants?: readonly EntitlementRulesGrant[];
4224
+ type MeterCreditsOptions = {
1733
4225
  /**
1734
- * Grant penceresinin (`startsAt <= at < endsAt`) değerlendirildiği an.
1735
- * Verilmezse pencere değerlendirilmez: çağıran yalnızca aktif grant'leri
1736
- * verir (iptal edilmiş grant her durumda yok sayılır).
4226
+ * The product's default plan. Its `meter_credit` benefits (source `plan:<default>`) count for a
4227
+ * meter only when no other layer grants a `meter_credit` for that meter: a paid plan REPLACES the
4228
+ * free quota, it does not stack on it. Omitted or null: every layer counts (e.g. the credits of
4229
+ * one plan on its own).
1737
4230
  */
1738
- at?: Instant;
4231
+ defaultPlanCode?: string | null | undefined;
1739
4232
  };
1740
- type ResolvedEntitlements = Pick<EntitlementSnapshot, "planCode" | "accessState" | "entitlements">;
1741
- /** İptal edilmemiş ve (`at` verildiyse) penceresi içinde olan grant. */
1742
- declare function isGrantActive(grant: EntitlementRulesGrant, at?: Instant): boolean;
1743
4233
  /**
1744
- * Hesabın etkin planı, hakları ve erişim durumu. Adaylardan biri katalogda
1745
- * yoksa fırlatır (tutarsız veri; servis bunu FK ile garanti eder).
4234
+ * The credit rule (M5; decided 2026-09-19): the granted `meter_credit` benefits per meter code.
4235
+ * - Several benefits on one meter sum their units AND their rollover caps (plan + add-on).
4236
+ * - A benefit code granted by several layers counts once (its first counted grant).
4237
+ * - The default plan's credit for a meter counts only when no other layer credits that meter
4238
+ * (`options.defaultPlanCode`): free 50k + team 2M → 2M, free only → 50k.
4239
+ * - Benefits of another type, without a code, or whose properties do not parse are ignored.
4240
+ * The service (`AccountState.meters.includedUnits`, cycle grants) and the SDK (`stateOf`,
4241
+ * `Meters()` fallback) both use this function. Vectors: `credits.json`.
1746
4242
  */
1747
- declare function resolveEntitlements(input: ResolveEntitlementsInput): ResolvedEntitlements;
4243
+ declare function meterCreditsOf(benefits: Iterable<MeterCreditBenefit>, options?: MeterCreditsOptions): Map<string, GrantedMeterCredit>;
4244
+ /** `max(0, consumed − credited)` (M21). */
4245
+ declare function overageOf(input: {
4246
+ consumedMicro: bigint;
4247
+ creditedMicro: bigint;
4248
+ }): bigint;
4249
+ /**
4250
+ * Credit standing of a meter (M14): no credit (`creditedMicro` 0) → `ok`; balance
4251
+ * (`credited − consumed`) ≤ 0 → `exhausted`; consumption ≥ `lowAt` × credit → `low` (`lowAt`
4252
+ * null disables `low`); else `ok`. Exact integer comparison (`lowAt` read as micro units).
4253
+ * `billable` does not change the standing — it describes the credit; a billable meter goes
4254
+ * `low`/`exhausted` too and only the gate stays open (M15).
4255
+ */
4256
+ declare function standingOf(input: {
4257
+ creditedMicro: bigint;
4258
+ consumedMicro: bigint;
4259
+ lowAt: number | null;
4260
+ billable?: boolean | undefined;
4261
+ }): MeterStanding;
4262
+ /**
4263
+ * Credit carried into the next period (M6): `min(max(closing balance, 0), cap)`; `capMicro`
4264
+ * null (rollover off) → 0. Debt never carries.
4265
+ */
4266
+ declare function rolloverOf(input: {
4267
+ closingBalanceMicro: bigint;
4268
+ capMicro: bigint | null;
4269
+ }): bigint;
4270
+ /**
4271
+ * `from` + `months` months in UTC with the month-end clamp of the service's `addInterval`
4272
+ * (`service/src/periods.ts`, date-fns `addMonths` on `UTCDate`): the day of month is kept, or the
4273
+ * last day of a shorter month (Jan 31 + 1 → Feb 28/29); the time of day is kept.
4274
+ */
4275
+ declare function addUtcMonths(from: Date, months: number): Date;
4276
+ /**
4277
+ * The monthly meter period containing `at` (M7): `[anchor + n months, anchor + (n + 1) months)`,
4278
+ * start inclusive, end exclusive, where every boundary is computed FROM THE ANCHOR (`addUtcMonths`;
4279
+ * Jan 31 → Feb 28 → Mar 31, no drift) — the same grid as the billing cycle's `nextPeriodEnd` for a
4280
+ * monthly subscription. `n` may be negative (`at` before the anchor). UTC throughout.
4281
+ */
4282
+ declare function periodBoundsOf(anchor: Date, at: Date): {
4283
+ start: Date;
4284
+ end: Date;
4285
+ };
4286
+ /** A period's overage and the (locked) metered rate that prices it. */
4287
+ type OverageRateInput = {
4288
+ overageMicro: bigint;
4289
+ amountMinor: number;
4290
+ perUnits: number;
4291
+ capMinor?: number | null | undefined;
4292
+ };
4293
+ /**
4294
+ * Overage amount in minor units (M21): `round_half_up(overage × amountMinor / perUnits)` on micro
4295
+ * units with BigInt — proportional (no block rounding), always whole minor units — then clipped
4296
+ * by `capMinor`. Tax terms are the price's (gross when tax-inclusive).
4297
+ */
4298
+ declare function rateOverage(input: OverageRateInput): number;
4299
+ /**
4300
+ * Whether the period's priced overage reached the rate's `capMinor` (M15: the SDK gate closes on a
4301
+ * billable meter once the cap is reached — further use would be free): there is overage
4302
+ * (`overageMicro` > 0) and its amount before the cap (`rateOverage` without `capMinor`) is ≥ the
4303
+ * cap. No cap → false. Same validation as `rateOverage`.
4304
+ */
4305
+ declare function overageCapReached(input: OverageRateInput): boolean;
4306
+ /**
4307
+ * A line of an invoice that carries overage (a meter line) or not (the base fee, a carried
4308
+ * amount). `amountMinor` is in the price's tax terms (gross when tax-inclusive).
4309
+ */
4310
+ type MeterChargeTotalsLine = {
4311
+ readonly description: string;
4312
+ readonly amountMinor: number;
4313
+ readonly meter?: string | undefined;
4314
+ /** Overage units, decimal string (`microToDecimalString`). */
4315
+ readonly units?: string | undefined;
4316
+ readonly priceAmountMinor?: number | undefined;
4317
+ readonly pricePerUnits?: number | undefined;
4318
+ };
4319
+ /**
4320
+ * Totals and stored lines of an invoice (or meter charge) with overage lines: the manual invoice
4321
+ * rule (`manualInvoiceTotals`) with every line at quantity 1 — ONE rounding at invoice level
4322
+ * (tax-inclusive: the total is kept and split with `splitInclusiveTax`, the net spread over the
4323
+ * lines by largest remainder; exclusive: tax added on the sum). Stored lines are net and keep
4324
+ * their meter fields (`meter`, `units`, `priceAmountMinor`, `pricePerUnits`).
4325
+ */
4326
+ declare function meterChargeTotals(lines: readonly MeterChargeTotalsLine[], terms: {
4327
+ taxInclusive: boolean;
4328
+ taxRateBps: number;
4329
+ }): {
4330
+ subtotalMinor: number;
4331
+ taxMinor: number;
4332
+ totalMinor: number;
4333
+ lines: InvoiceLine[];
4334
+ };
1748
4335
  //#endregion
1749
4336
  //#region ../contract/src/plan.d.ts
1750
4337
  declare const PLAN_SET_MODES: readonly ["ensure", "strict"];
@@ -1764,7 +4351,7 @@ declare const PlanSetInputSchema: z.ZodObject<{
1764
4351
  overrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>>;
1765
4352
  }, z.core.$strip>;
1766
4353
  type PlanSetInput = z.input<typeof PlanSetInputSchema>;
1767
- /** `warnings[].code` — bilinen değerler; küme açık. */
4354
+ /** `warnings[].code` — open set. None is produced since the billing core; `subscription_plan_higher` is legacy. */
1768
4355
  type PlanSetWarningCode = "subscription_plan_higher" | (string & Record<never, never>);
1769
4356
  declare const PlanSetWarningSchema: z.ZodObject<{
1770
4357
  code: z.ZodString;
@@ -1778,6 +4365,7 @@ declare const PlanSetResponseSchema: z.ZodObject<{
1778
4365
  accountRef: z.ZodString;
1779
4366
  planCode: z.ZodNullable<z.ZodString>;
1780
4367
  overrides: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString, z.ZodNull]>>;
4368
+ benefitCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1781
4369
  reason: z.ZodString;
1782
4370
  actorRef: z.ZodNullable<z.ZodString>;
1783
4371
  startsAt: z.ZodISODateTime;
@@ -1829,6 +4417,7 @@ declare const PlanSetResponseSchema: z.ZodObject<{
1829
4417
  year: "year";
1830
4418
  }>;
1831
4419
  effectiveAt: z.ZodISODateTime;
4420
+ amountMinor: z.ZodOptional<z.ZodNumber>;
1832
4421
  }, z.core.$strip>>;
1833
4422
  }, z.core.$strip>>;
1834
4423
  openCheckout: z.ZodNullable<z.ZodObject<{
@@ -1850,6 +4439,71 @@ declare const PlanSetResponseSchema: z.ZodObject<{
1850
4439
  company: "company";
1851
4440
  }>>;
1852
4441
  }, z.core.$strip>;
4442
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
4443
+ id: z.ZodUUID;
4444
+ status: z.ZodEnum<{
4445
+ active: "active";
4446
+ suspended: "suspended";
4447
+ past_due: "past_due";
4448
+ canceled: "canceled";
4449
+ expired: "expired";
4450
+ }>;
4451
+ planCode: z.ZodString;
4452
+ interval: z.ZodEnum<{
4453
+ month: "month";
4454
+ year: "year";
4455
+ }>;
4456
+ amountMinor: z.ZodNumber;
4457
+ currency: z.ZodString;
4458
+ currentPeriodEnd: z.ZodNullable<z.ZodISODateTime>;
4459
+ cancelAt: z.ZodNullable<z.ZodISODateTime>;
4460
+ cancelAtPeriodEnd: z.ZodBoolean;
4461
+ pastDueSince: z.ZodNullable<z.ZodISODateTime>;
4462
+ currentPeriodStart: z.ZodNullable<z.ZodISODateTime>;
4463
+ dunning: z.ZodNullable<z.ZodObject<{
4464
+ step: z.ZodNumber;
4465
+ nextActionAt: z.ZodNullable<z.ZodISODateTime>;
4466
+ }, z.core.$strip>>;
4467
+ scheduledChange: z.ZodNullable<z.ZodObject<{
4468
+ planCode: z.ZodString;
4469
+ interval: z.ZodEnum<{
4470
+ month: "month";
4471
+ year: "year";
4472
+ }>;
4473
+ effectiveAt: z.ZodISODateTime;
4474
+ amountMinor: z.ZodOptional<z.ZodNumber>;
4475
+ }, z.core.$strip>>;
4476
+ }, z.core.$strip>>>;
4477
+ openInvoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
4478
+ id: z.ZodUUID;
4479
+ subscriptionId: z.ZodNullable<z.ZodUUID>;
4480
+ billingReason: z.ZodEnum<{
4481
+ subscription_create: "subscription_create";
4482
+ subscription_cycle: "subscription_cycle";
4483
+ subscription_update: "subscription_update";
4484
+ purchase: "purchase";
4485
+ manual: "manual";
4486
+ }>;
4487
+ totalMinor: z.ZodNumber;
4488
+ currency: z.ZodString;
4489
+ dueAt: z.ZodISODateTime;
4490
+ }, z.core.$strip>>>;
4491
+ benefits: z.ZodOptional<z.ZodArray<z.ZodObject<{
4492
+ code: z.ZodNullable<z.ZodString>;
4493
+ type: z.ZodString;
4494
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4495
+ source: z.ZodString;
4496
+ grantedAt: z.ZodISODateTime;
4497
+ }, z.core.$strip>>>;
4498
+ meters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
4499
+ includedUnits: z.ZodNullable<z.ZodNumber>;
4500
+ billable: z.ZodBoolean;
4501
+ standing: z.ZodEnum<{
4502
+ ok: "ok";
4503
+ low: "low";
4504
+ exhausted: "exhausted";
4505
+ }>;
4506
+ }, z.core.$strip>>>;
1853
4507
  }, z.core.$strip>;
1854
4508
  warnings: z.ZodArray<z.ZodObject<{
1855
4509
  code: z.ZodString;
@@ -1863,6 +4517,377 @@ declare const ResyncResultSchema: z.ZodObject<{
1863
4517
  }, z.core.$strip>;
1864
4518
  type ResyncResult = z.infer<typeof ResyncResultSchema>;
1865
4519
  //#endregion
4520
+ //#region ../contract/src/emails.d.ts
4521
+ declare const EMAIL_TEMPLATES: readonly ["subscription_started", "payment_receipt", "payment_failed", "cancel_scheduled", "subscription_ended", "access_suspended", "subscription_terminated", "invoice_issued", "invoice_payment_due", "price_change_notice"];
4522
+ declare const EmailTemplateSchema: z.ZodEnum<{
4523
+ subscription_started: "subscription_started";
4524
+ payment_receipt: "payment_receipt";
4525
+ payment_failed: "payment_failed";
4526
+ cancel_scheduled: "cancel_scheduled";
4527
+ subscription_ended: "subscription_ended";
4528
+ access_suspended: "access_suspended";
4529
+ subscription_terminated: "subscription_terminated";
4530
+ invoice_issued: "invoice_issued";
4531
+ invoice_payment_due: "invoice_payment_due";
4532
+ price_change_notice: "price_change_notice";
4533
+ }>;
4534
+ type EmailTemplate = z.infer<typeof EmailTemplateSchema>;
4535
+ /** `invoice_payment_due`: summary of an unpaid invoice, its due date and the hosted pay page link. */
4536
+ declare const InvoicePaymentDueEmailSchema: z.ZodObject<{
4537
+ invoiceId: z.ZodUUID;
4538
+ number: z.ZodNullable<z.ZodString>;
4539
+ billingReason: z.ZodEnum<{
4540
+ subscription_create: "subscription_create";
4541
+ subscription_cycle: "subscription_cycle";
4542
+ subscription_update: "subscription_update";
4543
+ purchase: "purchase";
4544
+ manual: "manual";
4545
+ }>;
4546
+ planName: z.ZodNullable<z.ZodString>;
4547
+ totalMinor: z.ZodNumber;
4548
+ currency: z.ZodString;
4549
+ periodStart: z.ZodNullable<z.ZodISODateTime>;
4550
+ periodEnd: z.ZodNullable<z.ZodISODateTime>;
4551
+ dueAt: z.ZodISODateTime;
4552
+ payUrl: z.ZodURL;
4553
+ reminder: z.ZodBoolean;
4554
+ }, z.core.$strip>;
4555
+ type InvoicePaymentDueEmail = z.infer<typeof InvoicePaymentDueEmailSchema>;
4556
+ /** A metered (overage) rate as a notice shows it: `amountMinor` per `perUnits` units, at most `capMinor` per usage period. */
4557
+ declare const NoticedMeteredRateSchema: z.ZodObject<{
4558
+ amountMinor: z.ZodNumber;
4559
+ perUnits: z.ZodNumber;
4560
+ capMinor: z.ZodNullable<z.ZodNumber>;
4561
+ }, z.core.$strip>;
4562
+ type NoticedMeteredRate = z.infer<typeof NoticedMeteredRateSchema>;
4563
+ /**
4564
+ * One meter whose overage rate changes with the move to the current terms (metering M20, M36): the
4565
+ * subscription's locked rate and the plan's current one, in the notice's currency and tax terms.
4566
+ * The meter's labels as they were when the notice was written (the e-mail is never recomputed).
4567
+ */
4568
+ declare const PriceChangeNoticeMeteredRateSchema: z.ZodObject<{
4569
+ meter: z.ZodString;
4570
+ label: z.ZodObject<{
4571
+ tr: z.ZodString;
4572
+ en: z.ZodString;
4573
+ }, z.core.$strip>;
4574
+ unitLabel: z.ZodNullable<z.ZodObject<{
4575
+ tr: z.ZodString;
4576
+ en: z.ZodString;
4577
+ }, z.core.$strip>>;
4578
+ displayPer: z.ZodNullable<z.ZodNumber>;
4579
+ oldRate: z.ZodNullable<z.ZodObject<{
4580
+ amountMinor: z.ZodNumber;
4581
+ perUnits: z.ZodNumber;
4582
+ capMinor: z.ZodNullable<z.ZodNumber>;
4583
+ }, z.core.$strip>>;
4584
+ newRate: z.ZodNullable<z.ZodObject<{
4585
+ amountMinor: z.ZodNumber;
4586
+ perUnits: z.ZodNumber;
4587
+ capMinor: z.ZodNullable<z.ZodNumber>;
4588
+ }, z.core.$strip>>;
4589
+ }, z.core.$strip>;
4590
+ type PriceChangeNoticeMeteredRate = z.infer<typeof PriceChangeNoticeMeteredRateSchema>;
4591
+ /**
4592
+ * `price_change_notice`: a subscription moves to the current terms of its plan from `effectiveAt` —
4593
+ * its per-period amount and/or its metered rates (`meteredRates`: only the meters whose rate
4594
+ * changes; absent when none does). Old and new amount are equal when only metered rates change.
4595
+ */
4596
+ declare const PriceChangeNoticeEmailSchema: z.ZodObject<{
4597
+ subscriptionId: z.ZodUUID;
4598
+ planCode: z.ZodString;
4599
+ planName: z.ZodString;
4600
+ interval: z.ZodEnum<{
4601
+ month: "month";
4602
+ year: "year";
4603
+ }>;
4604
+ currency: z.ZodString;
4605
+ oldAmountMinor: z.ZodNumber;
4606
+ newAmountMinor: z.ZodNumber;
4607
+ taxInclusive: z.ZodBoolean;
4608
+ effectiveAt: z.ZodISODateTime;
4609
+ meteredRates: z.ZodOptional<z.ZodArray<z.ZodObject<{
4610
+ meter: z.ZodString;
4611
+ label: z.ZodObject<{
4612
+ tr: z.ZodString;
4613
+ en: z.ZodString;
4614
+ }, z.core.$strip>;
4615
+ unitLabel: z.ZodNullable<z.ZodObject<{
4616
+ tr: z.ZodString;
4617
+ en: z.ZodString;
4618
+ }, z.core.$strip>>;
4619
+ displayPer: z.ZodNullable<z.ZodNumber>;
4620
+ oldRate: z.ZodNullable<z.ZodObject<{
4621
+ amountMinor: z.ZodNumber;
4622
+ perUnits: z.ZodNumber;
4623
+ capMinor: z.ZodNullable<z.ZodNumber>;
4624
+ }, z.core.$strip>>;
4625
+ newRate: z.ZodNullable<z.ZodObject<{
4626
+ amountMinor: z.ZodNumber;
4627
+ perUnits: z.ZodNumber;
4628
+ capMinor: z.ZodNullable<z.ZodNumber>;
4629
+ }, z.core.$strip>>;
4630
+ }, z.core.$strip>>>;
4631
+ }, z.core.$strip>;
4632
+ type PriceChangeNoticeEmail = z.infer<typeof PriceChangeNoticeEmailSchema>;
4633
+ /** Payload schema per billing core template. */
4634
+ declare const EMAIL_PAYLOAD_SCHEMAS: Readonly<{
4635
+ readonly invoice_payment_due: z.ZodObject<{
4636
+ invoiceId: z.ZodUUID;
4637
+ number: z.ZodNullable<z.ZodString>;
4638
+ billingReason: z.ZodEnum<{
4639
+ subscription_create: "subscription_create";
4640
+ subscription_cycle: "subscription_cycle";
4641
+ subscription_update: "subscription_update";
4642
+ purchase: "purchase";
4643
+ manual: "manual";
4644
+ }>;
4645
+ planName: z.ZodNullable<z.ZodString>;
4646
+ totalMinor: z.ZodNumber;
4647
+ currency: z.ZodString;
4648
+ periodStart: z.ZodNullable<z.ZodISODateTime>;
4649
+ periodEnd: z.ZodNullable<z.ZodISODateTime>;
4650
+ dueAt: z.ZodISODateTime;
4651
+ payUrl: z.ZodURL;
4652
+ reminder: z.ZodBoolean;
4653
+ }, z.core.$strip>;
4654
+ readonly price_change_notice: z.ZodObject<{
4655
+ subscriptionId: z.ZodUUID;
4656
+ planCode: z.ZodString;
4657
+ planName: z.ZodString;
4658
+ interval: z.ZodEnum<{
4659
+ month: "month";
4660
+ year: "year";
4661
+ }>;
4662
+ currency: z.ZodString;
4663
+ oldAmountMinor: z.ZodNumber;
4664
+ newAmountMinor: z.ZodNumber;
4665
+ taxInclusive: z.ZodBoolean;
4666
+ effectiveAt: z.ZodISODateTime;
4667
+ meteredRates: z.ZodOptional<z.ZodArray<z.ZodObject<{
4668
+ meter: z.ZodString;
4669
+ label: z.ZodObject<{
4670
+ tr: z.ZodString;
4671
+ en: z.ZodString;
4672
+ }, z.core.$strip>;
4673
+ unitLabel: z.ZodNullable<z.ZodObject<{
4674
+ tr: z.ZodString;
4675
+ en: z.ZodString;
4676
+ }, z.core.$strip>>;
4677
+ displayPer: z.ZodNullable<z.ZodNumber>;
4678
+ oldRate: z.ZodNullable<z.ZodObject<{
4679
+ amountMinor: z.ZodNumber;
4680
+ perUnits: z.ZodNumber;
4681
+ capMinor: z.ZodNullable<z.ZodNumber>;
4682
+ }, z.core.$strip>>;
4683
+ newRate: z.ZodNullable<z.ZodObject<{
4684
+ amountMinor: z.ZodNumber;
4685
+ perUnits: z.ZodNumber;
4686
+ capMinor: z.ZodNullable<z.ZodNumber>;
4687
+ }, z.core.$strip>>;
4688
+ }, z.core.$strip>>>;
4689
+ }, z.core.$strip>;
4690
+ }>;
4691
+ /**
4692
+ * Which event triggers which template. Events not listed send no email. The billing core
4693
+ * templates (`invoice_payment_due`, `price_change_notice`) are not triggered by an event type alone.
4694
+ */
4695
+ declare const EMAIL_TEMPLATE_BY_EVENT: Readonly<Partial<Record<EventType, EmailTemplate>>>;
4696
+ declare function emailTemplateOf(type: string): EmailTemplate | null;
4697
+ declare const EMAIL_LOCALES: readonly ["tr", "en"];
4698
+ type EmailLocale = (typeof EMAIL_LOCALES)[number];
4699
+ /** Upper bound of product-provided recipients per account. */
4700
+ declare const MAX_NOTIFICATION_EMAILS = 10;
4701
+ declare const NotificationEmailsSchema: z.ZodPipe<z.ZodArray<z.ZodEmail>, z.ZodTransform<string[], string[]>>;
4702
+ /** Case-insensitive de-duplication; keeps the first spelling and the order. */
4703
+ declare function uniqueEmails(emails: readonly string[]): string[];
4704
+ /** Profile email first, then the account's notification emails. */
4705
+ declare function emailRecipients(profileEmail: string | null | undefined, notificationEmails: readonly string[]): string[];
4706
+ declare function emailLocaleOf(accountLocale: string | null | undefined, lastCheckoutLocale: string | null | undefined, defaultLocale: EmailLocale): EmailLocale;
4707
+ declare const EmailExtraTextSchema: z.ZodObject<{
4708
+ tr: z.ZodOptional<z.ZodString>;
4709
+ en: z.ZodOptional<z.ZodString>;
4710
+ }, z.core.$strip>;
4711
+ declare const EmailTemplateSettingsSchema: z.ZodObject<{
4712
+ enabled: z.ZodDefault<z.ZodBoolean>;
4713
+ extraText: z.ZodOptional<z.ZodObject<{
4714
+ tr: z.ZodOptional<z.ZodString>;
4715
+ en: z.ZodOptional<z.ZodString>;
4716
+ }, z.core.$strip>>;
4717
+ }, z.core.$strip>;
4718
+ type EmailTemplateSettings = z.output<typeof EmailTemplateSettingsSchema>;
4719
+ declare const EmailSenderSchema: z.ZodObject<{
4720
+ name: z.ZodOptional<z.ZodString>;
4721
+ address: z.ZodOptional<z.ZodEmail>;
4722
+ }, z.core.$strip>;
4723
+ /** Placeholders a billing path may use. */
4724
+ declare const BILLING_PATH_PLACEHOLDERS: readonly ["{LOCALE}", "{ACCOUNT_REF}"];
4725
+ declare const BillingPathSchema: z.ZodString;
4726
+ declare const EmailSettingsSchema: z.ZodObject<{
4727
+ from: z.ZodOptional<z.ZodObject<{
4728
+ name: z.ZodOptional<z.ZodString>;
4729
+ address: z.ZodOptional<z.ZodEmail>;
4730
+ }, z.core.$strip>>;
4731
+ replyTo: z.ZodOptional<z.ZodEmail>;
4732
+ billingPath: z.ZodOptional<z.ZodString>;
4733
+ templates: z.ZodDefault<z.ZodObject<{
4734
+ subscription_started: z.ZodOptional<z.ZodObject<{
4735
+ enabled: z.ZodDefault<z.ZodBoolean>;
4736
+ extraText: z.ZodOptional<z.ZodObject<{
4737
+ tr: z.ZodOptional<z.ZodString>;
4738
+ en: z.ZodOptional<z.ZodString>;
4739
+ }, z.core.$strip>>;
4740
+ }, z.core.$strip>>;
4741
+ payment_receipt: z.ZodOptional<z.ZodObject<{
4742
+ enabled: z.ZodDefault<z.ZodBoolean>;
4743
+ extraText: z.ZodOptional<z.ZodObject<{
4744
+ tr: z.ZodOptional<z.ZodString>;
4745
+ en: z.ZodOptional<z.ZodString>;
4746
+ }, z.core.$strip>>;
4747
+ }, z.core.$strip>>;
4748
+ payment_failed: z.ZodOptional<z.ZodObject<{
4749
+ enabled: z.ZodDefault<z.ZodBoolean>;
4750
+ extraText: z.ZodOptional<z.ZodObject<{
4751
+ tr: z.ZodOptional<z.ZodString>;
4752
+ en: z.ZodOptional<z.ZodString>;
4753
+ }, z.core.$strip>>;
4754
+ }, z.core.$strip>>;
4755
+ cancel_scheduled: z.ZodOptional<z.ZodObject<{
4756
+ enabled: z.ZodDefault<z.ZodBoolean>;
4757
+ extraText: z.ZodOptional<z.ZodObject<{
4758
+ tr: z.ZodOptional<z.ZodString>;
4759
+ en: z.ZodOptional<z.ZodString>;
4760
+ }, z.core.$strip>>;
4761
+ }, z.core.$strip>>;
4762
+ subscription_ended: z.ZodOptional<z.ZodObject<{
4763
+ enabled: z.ZodDefault<z.ZodBoolean>;
4764
+ extraText: z.ZodOptional<z.ZodObject<{
4765
+ tr: z.ZodOptional<z.ZodString>;
4766
+ en: z.ZodOptional<z.ZodString>;
4767
+ }, z.core.$strip>>;
4768
+ }, z.core.$strip>>;
4769
+ access_suspended: z.ZodOptional<z.ZodObject<{
4770
+ enabled: z.ZodDefault<z.ZodBoolean>;
4771
+ extraText: z.ZodOptional<z.ZodObject<{
4772
+ tr: z.ZodOptional<z.ZodString>;
4773
+ en: z.ZodOptional<z.ZodString>;
4774
+ }, z.core.$strip>>;
4775
+ }, z.core.$strip>>;
4776
+ subscription_terminated: z.ZodOptional<z.ZodObject<{
4777
+ enabled: z.ZodDefault<z.ZodBoolean>;
4778
+ extraText: z.ZodOptional<z.ZodObject<{
4779
+ tr: z.ZodOptional<z.ZodString>;
4780
+ en: z.ZodOptional<z.ZodString>;
4781
+ }, z.core.$strip>>;
4782
+ }, z.core.$strip>>;
4783
+ invoice_issued: z.ZodOptional<z.ZodObject<{
4784
+ enabled: z.ZodDefault<z.ZodBoolean>;
4785
+ extraText: z.ZodOptional<z.ZodObject<{
4786
+ tr: z.ZodOptional<z.ZodString>;
4787
+ en: z.ZodOptional<z.ZodString>;
4788
+ }, z.core.$strip>>;
4789
+ }, z.core.$strip>>;
4790
+ invoice_payment_due: z.ZodOptional<z.ZodObject<{
4791
+ enabled: z.ZodDefault<z.ZodBoolean>;
4792
+ extraText: z.ZodOptional<z.ZodObject<{
4793
+ tr: z.ZodOptional<z.ZodString>;
4794
+ en: z.ZodOptional<z.ZodString>;
4795
+ }, z.core.$strip>>;
4796
+ }, z.core.$strip>>;
4797
+ price_change_notice: z.ZodOptional<z.ZodObject<{
4798
+ enabled: z.ZodDefault<z.ZodBoolean>;
4799
+ extraText: z.ZodOptional<z.ZodObject<{
4800
+ tr: z.ZodOptional<z.ZodString>;
4801
+ en: z.ZodOptional<z.ZodString>;
4802
+ }, z.core.$strip>>;
4803
+ }, z.core.$strip>>;
4804
+ }, z.core.$strip>>;
4805
+ }, z.core.$strip>;
4806
+ type EmailSettings = z.output<typeof EmailSettingsSchema>;
4807
+ declare const EmailSettingsPatchSchema: z.ZodObject<{
4808
+ from: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4809
+ name: z.ZodOptional<z.ZodString>;
4810
+ address: z.ZodOptional<z.ZodEmail>;
4811
+ }, z.core.$strict>>>;
4812
+ replyTo: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
4813
+ billingPath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4814
+ templates: z.ZodOptional<z.ZodObject<{
4815
+ subscription_started: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4816
+ enabled: z.ZodOptional<z.ZodBoolean>;
4817
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4818
+ }, z.core.$strict>>>;
4819
+ payment_receipt: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4820
+ enabled: z.ZodOptional<z.ZodBoolean>;
4821
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4822
+ }, z.core.$strict>>>;
4823
+ payment_failed: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4824
+ enabled: z.ZodOptional<z.ZodBoolean>;
4825
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4826
+ }, z.core.$strict>>>;
4827
+ cancel_scheduled: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4828
+ enabled: z.ZodOptional<z.ZodBoolean>;
4829
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4830
+ }, z.core.$strict>>>;
4831
+ subscription_ended: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4832
+ enabled: z.ZodOptional<z.ZodBoolean>;
4833
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4834
+ }, z.core.$strict>>>;
4835
+ access_suspended: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4836
+ enabled: z.ZodOptional<z.ZodBoolean>;
4837
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4838
+ }, z.core.$strict>>>;
4839
+ subscription_terminated: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4840
+ enabled: z.ZodOptional<z.ZodBoolean>;
4841
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4842
+ }, z.core.$strict>>>;
4843
+ invoice_issued: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4844
+ enabled: z.ZodOptional<z.ZodBoolean>;
4845
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4846
+ }, z.core.$strict>>>;
4847
+ invoice_payment_due: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4848
+ enabled: z.ZodOptional<z.ZodBoolean>;
4849
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4850
+ }, z.core.$strict>>>;
4851
+ price_change_notice: z.ZodOptional<z.ZodNullable<z.ZodObject<{
4852
+ enabled: z.ZodOptional<z.ZodBoolean>;
4853
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
4854
+ }, z.core.$strict>>>;
4855
+ }, z.core.$strict>>;
4856
+ }, z.core.$strict>;
4857
+ type EmailSettingsPatch = z.output<typeof EmailSettingsPatchSchema>;
4858
+ /** Pure merge of a validated patch (see the patch rules above). */
4859
+ declare function applyEmailSettingsPatch(current: EmailSettings, patch: EmailSettingsPatch | null): EmailSettings;
4860
+ declare function emailTemplateSettings(settings: EmailSettings, template: EmailTemplate): EmailTemplateSettings;
4861
+ /**
4862
+ * Button target: `appUrl` + `billingPath` with placeholders filled (the ref is URL-encoded).
4863
+ * Null without `appUrl`, or when the result would leave the `appUrl` origin.
4864
+ */
4865
+ declare function billingPageUrl(appUrl: string | undefined, billingPath: string | undefined, locale: EmailLocale, accountRef: string): string | null;
4866
+ type EmailRelevanceFacts = {
4867
+ /** Current (stored) account state at send time. */
4868
+ state: AccountState;
4869
+ /** `detail.subscriptionId` of the triggering event, if any (looked up in `state.subscriptions`). */
4870
+ subscriptionId: string | null;
4871
+ /** Current status of the invoice (`invoice_issued`). */
4872
+ invoiceStatus?: string | null;
4873
+ /** Current payment status of the invoice (`invoice_payment_due`). */
4874
+ invoicePaymentStatus?: string | null;
4875
+ };
4876
+ /**
4877
+ * The event's subscription among the account's live subscriptions at send time, or null when it
4878
+ * is not live. Looked up by id in `subscriptions` (billing core, M34: any live subscription, not
4879
+ * only the primary one); a state without that list (older steward) has only the primary
4880
+ * `subscription`.
4881
+ */
4882
+ declare function liveSubscriptionOf(state: AccountState, subscriptionId: string | null): AccountState["subscription"];
4883
+ /**
4884
+ * Whether the email still describes the account at send time. Receipts, the welcome email
4885
+ * (legal confirmation) and the final termination notice always go; the others only while
4886
+ * the situation they describe still holds for the event's subscription (which need not be the
4887
+ * primary one when the account has several).
4888
+ */
4889
+ declare function isEmailRelevant(template: EmailTemplate, facts: EmailRelevanceFacts): boolean;
4890
+ //#endregion
1866
4891
  //#region ../contract/src/settings.d.ts
1867
4892
  /** https; http yalnızca localhost / 127.0.0.1 / [::1]. */
1868
4893
  declare const WebUrlSchema: z.ZodURL;
@@ -1884,6 +4909,59 @@ declare const BrandingSchema: z.ZodObject<{
1884
4909
  supportEmail: z.ZodOptional<z.ZodEmail>;
1885
4910
  }, z.core.$strip>;
1886
4911
  type Branding = z.infer<typeof BrandingSchema>;
4912
+ declare const DEFAULT_PAYMENT_DUE_DAYS = 7;
4913
+ declare const DEFAULT_MIN_INVOICE_MINOR = 1000;
4914
+ declare const PaymentDueDaysSchema: z.ZodNumber;
4915
+ declare const BillingSettingsSchema: z.ZodObject<{
4916
+ paymentDueDays: z.ZodDefault<z.ZodNumber>;
4917
+ minInvoiceMinor: z.ZodDefault<z.ZodNumber>;
4918
+ allowMultipleSubscriptions: z.ZodDefault<z.ZodBoolean>;
4919
+ }, z.core.$strip>;
4920
+ type BillingSettings = z.output<typeof BillingSettingsSchema>;
4921
+ /** Patch of `settings.billing`: an omitted field is unchanged, `null` restores its default. */
4922
+ declare const BillingSettingsPatchSchema: z.ZodObject<{
4923
+ paymentDueDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4924
+ minInvoiceMinor: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4925
+ allowMultipleSubscriptions: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
4926
+ }, z.core.$strict>;
4927
+ declare const DEFAULT_EVENT_RETENTION_DAYS = 120;
4928
+ declare const DEFAULT_LATE_GRACE_MINUTES = 60;
4929
+ declare const METER_CHARGE_MODES: readonly ["off", "dry_run", "live"];
4930
+ declare const MeterChargeModeSchema: z.ZodEnum<{
4931
+ off: "off";
4932
+ dry_run: "dry_run";
4933
+ live: "live";
4934
+ }>;
4935
+ type MeterChargeMode = z.infer<typeof MeterChargeModeSchema>;
4936
+ declare const DEFAULT_METER_CHARGE_MODE: MeterChargeMode;
4937
+ declare const EventRetentionDaysSchema: z.ZodNumber;
4938
+ declare const LateGraceMinutesSchema: z.ZodNumber;
4939
+ declare const EventsSettingsSchema: z.ZodObject<{
4940
+ retentionDays: z.ZodDefault<z.ZodNumber>;
4941
+ }, z.core.$strip>;
4942
+ type EventsSettings = z.output<typeof EventsSettingsSchema>;
4943
+ declare const MeteringSettingsSchema: z.ZodObject<{
4944
+ lateGraceMinutes: z.ZodDefault<z.ZodNumber>;
4945
+ chargeMode: z.ZodDefault<z.ZodEnum<{
4946
+ off: "off";
4947
+ dry_run: "dry_run";
4948
+ live: "live";
4949
+ }>>;
4950
+ }, z.core.$strip>;
4951
+ type MeteringSettings = z.output<typeof MeteringSettingsSchema>;
4952
+ /** Patch of `settings.events`: an omitted field is unchanged, `null` restores its default. */
4953
+ declare const EventsSettingsPatchSchema: z.ZodObject<{
4954
+ retentionDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4955
+ }, z.core.$strict>;
4956
+ /** Patch of `settings.metering`: an omitted field is unchanged, `null` restores its default. */
4957
+ declare const MeteringSettingsPatchSchema: z.ZodObject<{
4958
+ lateGraceMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4959
+ chargeMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
4960
+ off: "off";
4961
+ dry_run: "dry_run";
4962
+ live: "live";
4963
+ }>>>;
4964
+ }, z.core.$strict>;
1887
4965
  declare const ProductSettingsSchema: z.ZodObject<{
1888
4966
  provider: z.ZodDefault<z.ZodString>;
1889
4967
  appUrl: z.ZodOptional<z.ZodURL>;
@@ -1903,8 +4981,110 @@ declare const ProductSettingsSchema: z.ZodObject<{
1903
4981
  }, z.core.$strip>>;
1904
4982
  checkoutTtlMinutes: z.ZodDefault<z.ZodNumber>;
1905
4983
  portalTtlMinutes: z.ZodDefault<z.ZodNumber>;
4984
+ emails: z.ZodDefault<z.ZodObject<{
4985
+ from: z.ZodOptional<z.ZodObject<{
4986
+ name: z.ZodOptional<z.ZodString>;
4987
+ address: z.ZodOptional<z.ZodEmail>;
4988
+ }, z.core.$strip>>;
4989
+ replyTo: z.ZodOptional<z.ZodEmail>;
4990
+ billingPath: z.ZodOptional<z.ZodString>;
4991
+ templates: z.ZodDefault<z.ZodObject<{
4992
+ subscription_started: z.ZodOptional<z.ZodObject<{
4993
+ enabled: z.ZodDefault<z.ZodBoolean>;
4994
+ extraText: z.ZodOptional<z.ZodObject<{
4995
+ tr: z.ZodOptional<z.ZodString>;
4996
+ en: z.ZodOptional<z.ZodString>;
4997
+ }, z.core.$strip>>;
4998
+ }, z.core.$strip>>;
4999
+ payment_receipt: z.ZodOptional<z.ZodObject<{
5000
+ enabled: z.ZodDefault<z.ZodBoolean>;
5001
+ extraText: z.ZodOptional<z.ZodObject<{
5002
+ tr: z.ZodOptional<z.ZodString>;
5003
+ en: z.ZodOptional<z.ZodString>;
5004
+ }, z.core.$strip>>;
5005
+ }, z.core.$strip>>;
5006
+ payment_failed: z.ZodOptional<z.ZodObject<{
5007
+ enabled: z.ZodDefault<z.ZodBoolean>;
5008
+ extraText: z.ZodOptional<z.ZodObject<{
5009
+ tr: z.ZodOptional<z.ZodString>;
5010
+ en: z.ZodOptional<z.ZodString>;
5011
+ }, z.core.$strip>>;
5012
+ }, z.core.$strip>>;
5013
+ cancel_scheduled: z.ZodOptional<z.ZodObject<{
5014
+ enabled: z.ZodDefault<z.ZodBoolean>;
5015
+ extraText: z.ZodOptional<z.ZodObject<{
5016
+ tr: z.ZodOptional<z.ZodString>;
5017
+ en: z.ZodOptional<z.ZodString>;
5018
+ }, z.core.$strip>>;
5019
+ }, z.core.$strip>>;
5020
+ subscription_ended: z.ZodOptional<z.ZodObject<{
5021
+ enabled: z.ZodDefault<z.ZodBoolean>;
5022
+ extraText: z.ZodOptional<z.ZodObject<{
5023
+ tr: z.ZodOptional<z.ZodString>;
5024
+ en: z.ZodOptional<z.ZodString>;
5025
+ }, z.core.$strip>>;
5026
+ }, z.core.$strip>>;
5027
+ access_suspended: z.ZodOptional<z.ZodObject<{
5028
+ enabled: z.ZodDefault<z.ZodBoolean>;
5029
+ extraText: z.ZodOptional<z.ZodObject<{
5030
+ tr: z.ZodOptional<z.ZodString>;
5031
+ en: z.ZodOptional<z.ZodString>;
5032
+ }, z.core.$strip>>;
5033
+ }, z.core.$strip>>;
5034
+ subscription_terminated: z.ZodOptional<z.ZodObject<{
5035
+ enabled: z.ZodDefault<z.ZodBoolean>;
5036
+ extraText: z.ZodOptional<z.ZodObject<{
5037
+ tr: z.ZodOptional<z.ZodString>;
5038
+ en: z.ZodOptional<z.ZodString>;
5039
+ }, z.core.$strip>>;
5040
+ }, z.core.$strip>>;
5041
+ invoice_issued: z.ZodOptional<z.ZodObject<{
5042
+ enabled: z.ZodDefault<z.ZodBoolean>;
5043
+ extraText: z.ZodOptional<z.ZodObject<{
5044
+ tr: z.ZodOptional<z.ZodString>;
5045
+ en: z.ZodOptional<z.ZodString>;
5046
+ }, z.core.$strip>>;
5047
+ }, z.core.$strip>>;
5048
+ invoice_payment_due: z.ZodOptional<z.ZodObject<{
5049
+ enabled: z.ZodDefault<z.ZodBoolean>;
5050
+ extraText: z.ZodOptional<z.ZodObject<{
5051
+ tr: z.ZodOptional<z.ZodString>;
5052
+ en: z.ZodOptional<z.ZodString>;
5053
+ }, z.core.$strip>>;
5054
+ }, z.core.$strip>>;
5055
+ price_change_notice: z.ZodOptional<z.ZodObject<{
5056
+ enabled: z.ZodDefault<z.ZodBoolean>;
5057
+ extraText: z.ZodOptional<z.ZodObject<{
5058
+ tr: z.ZodOptional<z.ZodString>;
5059
+ en: z.ZodOptional<z.ZodString>;
5060
+ }, z.core.$strip>>;
5061
+ }, z.core.$strip>>;
5062
+ }, z.core.$strip>>;
5063
+ }, z.core.$strip>>;
5064
+ billing: z.ZodOptional<z.ZodObject<{
5065
+ paymentDueDays: z.ZodDefault<z.ZodNumber>;
5066
+ minInvoiceMinor: z.ZodDefault<z.ZodNumber>;
5067
+ allowMultipleSubscriptions: z.ZodDefault<z.ZodBoolean>;
5068
+ }, z.core.$strip>>;
5069
+ events: z.ZodOptional<z.ZodObject<{
5070
+ retentionDays: z.ZodDefault<z.ZodNumber>;
5071
+ }, z.core.$strip>>;
5072
+ metering: z.ZodOptional<z.ZodObject<{
5073
+ lateGraceMinutes: z.ZodDefault<z.ZodNumber>;
5074
+ chargeMode: z.ZodDefault<z.ZodEnum<{
5075
+ off: "off";
5076
+ dry_run: "dry_run";
5077
+ live: "live";
5078
+ }>>;
5079
+ }, z.core.$strip>>;
1906
5080
  }, z.core.$strip>;
1907
5081
  type ProductSettings = z.output<typeof ProductSettingsSchema>;
5082
+ /** `settings.billing` with defaults filled in. */
5083
+ declare function billingSettingsOf(settings: Pick<ProductSettings, "billing">): BillingSettings;
5084
+ /** `settings.events` with defaults filled in. */
5085
+ declare function eventsSettingsOf(settings: Pick<ProductSettings, "events">): EventsSettings;
5086
+ /** `settings.metering` with defaults filled in. */
5087
+ declare function meteringSettingsOf(settings: Pick<ProductSettings, "metering">): MeteringSettings;
1908
5088
  declare const BrandingPatchSchema: z.ZodObject<{
1909
5089
  name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1910
5090
  logoUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
@@ -1930,6 +5110,72 @@ declare const ProductSettingsPatchSchema: z.ZodObject<{
1930
5110
  }, z.core.$strict>>>;
1931
5111
  checkoutTtlMinutes: z.ZodOptional<z.ZodNumber>;
1932
5112
  portalTtlMinutes: z.ZodOptional<z.ZodNumber>;
5113
+ emails: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5114
+ from: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5115
+ name: z.ZodOptional<z.ZodString>;
5116
+ address: z.ZodOptional<z.ZodEmail>;
5117
+ }, z.core.$strict>>>;
5118
+ replyTo: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
5119
+ billingPath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5120
+ templates: z.ZodOptional<z.ZodObject<{
5121
+ subscription_started: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5122
+ enabled: z.ZodOptional<z.ZodBoolean>;
5123
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5124
+ }, z.core.$strict>>>;
5125
+ payment_receipt: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5126
+ enabled: z.ZodOptional<z.ZodBoolean>;
5127
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5128
+ }, z.core.$strict>>>;
5129
+ payment_failed: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5130
+ enabled: z.ZodOptional<z.ZodBoolean>;
5131
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5132
+ }, z.core.$strict>>>;
5133
+ cancel_scheduled: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5134
+ enabled: z.ZodOptional<z.ZodBoolean>;
5135
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5136
+ }, z.core.$strict>>>;
5137
+ subscription_ended: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5138
+ enabled: z.ZodOptional<z.ZodBoolean>;
5139
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5140
+ }, z.core.$strict>>>;
5141
+ access_suspended: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5142
+ enabled: z.ZodOptional<z.ZodBoolean>;
5143
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5144
+ }, z.core.$strict>>>;
5145
+ subscription_terminated: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5146
+ enabled: z.ZodOptional<z.ZodBoolean>;
5147
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5148
+ }, z.core.$strict>>>;
5149
+ invoice_issued: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5150
+ enabled: z.ZodOptional<z.ZodBoolean>;
5151
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5152
+ }, z.core.$strict>>>;
5153
+ invoice_payment_due: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5154
+ enabled: z.ZodOptional<z.ZodBoolean>;
5155
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5156
+ }, z.core.$strict>>>;
5157
+ price_change_notice: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5158
+ enabled: z.ZodOptional<z.ZodBoolean>;
5159
+ extraText: z.ZodOptional<typeof EmailExtraTextSchema>;
5160
+ }, z.core.$strict>>>;
5161
+ }, z.core.$strict>>;
5162
+ }, z.core.$strict>>>;
5163
+ billing: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5164
+ paymentDueDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5165
+ minInvoiceMinor: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5166
+ allowMultipleSubscriptions: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
5167
+ }, z.core.$strict>>>;
5168
+ events: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5169
+ retentionDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5170
+ }, z.core.$strict>>>;
5171
+ metering: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5172
+ lateGraceMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5173
+ chargeMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
5174
+ off: "off";
5175
+ dry_run: "dry_run";
5176
+ live: "live";
5177
+ }>>>;
5178
+ }, z.core.$strict>>>;
1933
5179
  }, z.core.$strict>;
1934
5180
  type ProductSettingsPatch = z.input<typeof ProductSettingsPatchSchema>;
1935
5181
  /**
@@ -1971,6 +5217,13 @@ declare const EventTypeSchema: z.ZodEnum<{
1971
5217
  "invoice.voided": "invoice.voided";
1972
5218
  "account.state_changed": "account.state_changed";
1973
5219
  "account.deleted": "account.deleted";
5220
+ "invoice.paid": "invoice.paid";
5221
+ "benefit_grant.created": "benefit_grant.created";
5222
+ "benefit_grant.updated": "benefit_grant.updated";
5223
+ "benefit_grant.revoked": "benefit_grant.revoked";
5224
+ "benefit_grant.cycled": "benefit_grant.cycled";
5225
+ "meter.threshold_crossed": "meter.threshold_crossed";
5226
+ "meter.period_closed": "meter.period_closed";
1974
5227
  }>;
1975
5228
  declare const WEBHOOK_ENDPOINT_STATUSES: readonly ["active", "paused", "inactive"];
1976
5229
  declare const WebhookEndpointStatusSchema: z.ZodEnum<{
@@ -2010,7 +5263,14 @@ declare const WebhookEndpointCreateInputSchema: z.ZodObject<{
2010
5263
  "invoice.voided": "invoice.voided";
2011
5264
  "account.state_changed": "account.state_changed";
2012
5265
  "account.deleted": "account.deleted";
2013
- }>>, z.ZodTransform<("account.updated" | "checkout.completed" | "checkout.failed" | "checkout.expired" | "subscription.activated" | "subscription.renewed" | "subscription.payment_failed" | "subscription.suspended" | "subscription.reactivated" | "subscription.cancel_scheduled" | "subscription.canceled" | "subscription.expired" | "subscription.terminated" | "invoice.created" | "invoice.issued" | "invoice.voided" | "account.state_changed" | "account.deleted")[], ("account.updated" | "checkout.completed" | "checkout.failed" | "checkout.expired" | "subscription.activated" | "subscription.renewed" | "subscription.payment_failed" | "subscription.suspended" | "subscription.reactivated" | "subscription.cancel_scheduled" | "subscription.canceled" | "subscription.expired" | "subscription.terminated" | "invoice.created" | "invoice.issued" | "invoice.voided" | "account.state_changed" | "account.deleted")[]>>>;
5266
+ "invoice.paid": "invoice.paid";
5267
+ "benefit_grant.created": "benefit_grant.created";
5268
+ "benefit_grant.updated": "benefit_grant.updated";
5269
+ "benefit_grant.revoked": "benefit_grant.revoked";
5270
+ "benefit_grant.cycled": "benefit_grant.cycled";
5271
+ "meter.threshold_crossed": "meter.threshold_crossed";
5272
+ "meter.period_closed": "meter.period_closed";
5273
+ }>>, z.ZodTransform<("account.updated" | "checkout.completed" | "checkout.failed" | "checkout.expired" | "subscription.activated" | "subscription.renewed" | "subscription.payment_failed" | "subscription.suspended" | "subscription.reactivated" | "subscription.cancel_scheduled" | "subscription.canceled" | "subscription.expired" | "subscription.terminated" | "invoice.created" | "invoice.issued" | "invoice.voided" | "account.state_changed" | "account.deleted" | "invoice.paid" | "benefit_grant.created" | "benefit_grant.updated" | "benefit_grant.revoked" | "benefit_grant.cycled" | "meter.threshold_crossed" | "meter.period_closed")[], ("account.updated" | "checkout.completed" | "checkout.failed" | "checkout.expired" | "subscription.activated" | "subscription.renewed" | "subscription.payment_failed" | "subscription.suspended" | "subscription.reactivated" | "subscription.cancel_scheduled" | "subscription.canceled" | "subscription.expired" | "subscription.terminated" | "invoice.created" | "invoice.issued" | "invoice.voided" | "account.state_changed" | "account.deleted" | "invoice.paid" | "benefit_grant.created" | "benefit_grant.updated" | "benefit_grant.revoked" | "benefit_grant.cycled" | "meter.threshold_crossed" | "meter.period_closed")[]>>>;
2014
5274
  description: z.ZodOptional<z.ZodString>;
2015
5275
  }, z.core.$strict>;
2016
5276
  type WebhookEndpointCreateInput = z.input<typeof WebhookEndpointCreateInputSchema>;
@@ -2065,6 +5325,13 @@ declare const WebhookEndpointSchema: z.ZodObject<{
2065
5325
  "invoice.voided": "invoice.voided";
2066
5326
  "account.state_changed": "account.state_changed";
2067
5327
  "account.deleted": "account.deleted";
5328
+ "invoice.paid": "invoice.paid";
5329
+ "benefit_grant.created": "benefit_grant.created";
5330
+ "benefit_grant.updated": "benefit_grant.updated";
5331
+ "benefit_grant.revoked": "benefit_grant.revoked";
5332
+ "benefit_grant.cycled": "benefit_grant.cycled";
5333
+ "meter.threshold_crossed": "meter.threshold_crossed";
5334
+ "meter.period_closed": "meter.period_closed";
2068
5335
  }>>>;
2069
5336
  description: z.ZodNullable<z.ZodString>;
2070
5337
  createdAt: z.ZodISODateTime;
@@ -2111,6 +5378,13 @@ declare const WebhookEndpointListSchema: z.ZodObject<{
2111
5378
  "invoice.voided": "invoice.voided";
2112
5379
  "account.state_changed": "account.state_changed";
2113
5380
  "account.deleted": "account.deleted";
5381
+ "invoice.paid": "invoice.paid";
5382
+ "benefit_grant.created": "benefit_grant.created";
5383
+ "benefit_grant.updated": "benefit_grant.updated";
5384
+ "benefit_grant.revoked": "benefit_grant.revoked";
5385
+ "benefit_grant.cycled": "benefit_grant.cycled";
5386
+ "meter.threshold_crossed": "meter.threshold_crossed";
5387
+ "meter.period_closed": "meter.period_closed";
2114
5388
  }>>>;
2115
5389
  description: z.ZodNullable<z.ZodString>;
2116
5390
  createdAt: z.ZodISODateTime;
@@ -2141,7 +5415,7 @@ declare const DoctorSeveritySchema: z.ZodEnum<{
2141
5415
  }>;
2142
5416
  type DoctorSeverity = z.infer<typeof DoctorSeveritySchema>;
2143
5417
  /** `warnings[].code` — bu sürümün ürettiği kodlar; küme açık. */
2144
- type DoctorWarningCode = "catalog_not_synced" | "price_not_synced_with_provider" | "price_unsellable" | "provider_not_configured" | "provider_unhealthy" | "no_return_origin" | "app_url_missing" | "branding_incomplete" | "legal_links_missing" | "no_active_endpoint" | "no_state_changed_endpoint" | "endpoint_wrong_secret" | "endpoint_old_contract" | "endpoint_unreachable" | "endpoint_failing" | "endpoint_dead_deliveries" | "endpoint_pending_backlog" | "dunning_dry_run" | (string & Record<never, never>);
5418
+ type DoctorWarningCode = "catalog_not_synced" | "price_unsellable" | "price_drift" | "legacy_provider_subscription" | "provider_not_configured" | "provider_unhealthy" | "no_return_origin" | "app_url_missing" | "branding_incomplete" | "legal_links_missing" | "no_active_endpoint" | "no_state_changed_endpoint" | "endpoint_wrong_secret" | "endpoint_old_contract" | "endpoint_unreachable" | "endpoint_failing" | "endpoint_dead_deliveries" | "endpoint_pending_backlog" | "dunning_dry_run" | "email_not_configured" | "email_sender_missing" | "email_billing_link_missing" | "events_backlog" | "meter_rollup_lag" | "events_invalid_value" | "meter_without_events" | "events_unmatched" | "overage_charge_mode_off" | "overage_dry_run" | "overage_unrated_subscriptions" | (string & Record<never, never>);
2145
5419
  declare const DoctorWarningSchema: z.ZodObject<{
2146
5420
  code: z.ZodString;
2147
5421
  severity: z.ZodEnum<{
@@ -2154,10 +5428,10 @@ declare const DoctorWarningSchema: z.ZodObject<{
2154
5428
  }, z.core.$strip>;
2155
5429
  type DoctorWarning = z.infer<typeof DoctorWarningSchema>;
2156
5430
  /**
2157
- * Satılamayan fiyatın nedeni — küme açık:
2158
- * `provider_price_missing` (sağlayıcıda plan karşılığı yok; katalog senkronu yeniden koşulur),
2159
- * `provider_not_configured`, `unsupported_currency`, `interval_count_unsupported`
2160
- * (checkout yalnızca `intervalCount: 1` satar).
5431
+ * Why an active price cannot be sold — open set: `provider_not_configured`,
5432
+ * `unsupported_currency`, `interval_count_unsupported` (checkout sells `intervalCount: 1` only).
5433
+ * `provider_price_missing` (no provider plan for the price) is produced only by steward before the
5434
+ * billing core: prices live only in steward now (M30).
2161
5435
  */
2162
5436
  type DoctorUnsellableReason = "provider_price_missing" | "provider_not_configured" | "unsupported_currency" | "interval_count_unsupported" | (string & Record<never, never>);
2163
5437
  declare const DoctorUnsellablePriceSchema: z.ZodObject<{
@@ -2188,15 +5462,56 @@ declare const DoctorCatalogSchema: z.ZodObject<{
2188
5462
  currency: z.ZodString;
2189
5463
  reason: z.ZodString;
2190
5464
  }, z.core.$strip>>;
5465
+ priceDriftSubscriptions: z.ZodOptional<z.ZodNumber>;
2191
5466
  }, z.core.$strip>;
2192
5467
  type DoctorCatalog = z.infer<typeof DoctorCatalogSchema>;
5468
+ /** Billing core facts (M30). Absent from older steward. */
5469
+ declare const DoctorBillingSchema: z.ZodObject<{
5470
+ legacyProviderSubscriptions: z.ZodNumber;
5471
+ }, z.core.$strip>;
5472
+ type DoctorBilling = z.infer<typeof DoctorBillingSchema>;
5473
+ /**
5474
+ * Event ingest and rollup facts (metering phase 2, M29; only for a product that defines meters).
5475
+ * Absent from older steward. Names and meter codes only: no metadata, no account refs.
5476
+ */
5477
+ declare const DoctorEventsSchema: z.ZodObject<{
5478
+ meters: z.ZodNumber;
5479
+ backfillingMeters: z.ZodArray<z.ZodString>;
5480
+ backlogRows: z.ZodNumber;
5481
+ rollupLagSeconds: z.ZodNumber;
5482
+ backlogged: z.ZodBoolean;
5483
+ sampledEvents: z.ZodNumber;
5484
+ unmatchedEventNames: z.ZodArray<z.ZodObject<{
5485
+ name: z.ZodString;
5486
+ events: z.ZodNumber;
5487
+ }, z.core.$strip>>;
5488
+ invalidValues: z.ZodArray<z.ZodObject<{
5489
+ meter: z.ZodString;
5490
+ events: z.ZodNumber;
5491
+ }, z.core.$strip>>;
5492
+ metersWithoutEvents: z.ZodArray<z.ZodString>;
5493
+ }, z.core.$strip>;
5494
+ type DoctorEvents = z.infer<typeof DoctorEventsSchema>;
5495
+ /** Rollup lag above which the doctor warns (the `rollup lag > 60 s` alert, M29). */
5496
+ declare const DOCTOR_ROLLUP_LAG_WARN_SECONDS = 60;
5497
+ /**
5498
+ * Overage facts (metering MF5, M20/M21): present when the catalog has a metered price or the
5499
+ * product has meter charges. Absent from older steward.
5500
+ */
5501
+ declare const DoctorOverageSchema: z.ZodObject<{
5502
+ chargeMode: z.ZodString;
5503
+ meteredPrices: z.ZodNumber;
5504
+ unratedSubscriptions: z.ZodNumber;
5505
+ carriedCharges: z.ZodNumber;
5506
+ }, z.core.$strip>;
5507
+ type DoctorOverage = z.infer<typeof DoctorOverageSchema>;
2193
5508
  declare const DOCTOR_PROVIDER_ENVIRONMENTS: readonly ["sandbox", "live", "fake"];
2194
5509
  declare const DoctorProviderSchema: z.ZodObject<{
2195
5510
  id: z.ZodString;
2196
5511
  configured: z.ZodBoolean;
2197
5512
  environment: z.ZodNullable<z.ZodEnum<{
2198
- sandbox: "sandbox";
2199
5513
  live: "live";
5514
+ sandbox: "sandbox";
2200
5515
  fake: "fake";
2201
5516
  }>>;
2202
5517
  merchantId: z.ZodNullable<z.ZodString>;
@@ -2262,6 +5577,13 @@ declare const DoctorEndpointSchema: z.ZodObject<{
2262
5577
  "invoice.voided": "invoice.voided";
2263
5578
  "account.state_changed": "account.state_changed";
2264
5579
  "account.deleted": "account.deleted";
5580
+ "invoice.paid": "invoice.paid";
5581
+ "benefit_grant.created": "benefit_grant.created";
5582
+ "benefit_grant.updated": "benefit_grant.updated";
5583
+ "benefit_grant.revoked": "benefit_grant.revoked";
5584
+ "benefit_grant.cycled": "benefit_grant.cycled";
5585
+ "meter.threshold_crossed": "meter.threshold_crossed";
5586
+ "meter.period_closed": "meter.period_closed";
2265
5587
  }>>>;
2266
5588
  pending: z.ZodNumber;
2267
5589
  dead: z.ZodNumber;
@@ -2280,6 +5602,14 @@ declare const DoctorEndpointSchema: z.ZodObject<{
2280
5602
  diagnosis: z.ZodString;
2281
5603
  }, z.core.$strip>;
2282
5604
  type DoctorEndpoint = z.infer<typeof DoctorEndpointSchema>;
5605
+ /** Billing emails (issue #15). */
5606
+ declare const DoctorEmailsSchema: z.ZodObject<{
5607
+ transportConfigured: z.ZodBoolean;
5608
+ senderConfigured: z.ZodBoolean;
5609
+ disabledTemplates: z.ZodArray<z.ZodString>;
5610
+ ready: z.ZodBoolean;
5611
+ }, z.core.$strip>;
5612
+ type DoctorEmails = z.infer<typeof DoctorEmailsSchema>;
2283
5613
  declare const DoctorReportSchema: z.ZodObject<{
2284
5614
  ok: z.ZodBoolean;
2285
5615
  checkedAt: z.ZodISODateTime;
@@ -2303,13 +5633,14 @@ declare const DoctorReportSchema: z.ZodObject<{
2303
5633
  currency: z.ZodString;
2304
5634
  reason: z.ZodString;
2305
5635
  }, z.core.$strip>>;
5636
+ priceDriftSubscriptions: z.ZodOptional<z.ZodNumber>;
2306
5637
  }, z.core.$strip>;
2307
5638
  provider: z.ZodObject<{
2308
5639
  id: z.ZodString;
2309
5640
  configured: z.ZodBoolean;
2310
5641
  environment: z.ZodNullable<z.ZodEnum<{
2311
- sandbox: "sandbox";
2312
5642
  live: "live";
5643
+ sandbox: "sandbox";
2313
5644
  fake: "fake";
2314
5645
  }>>;
2315
5646
  merchantId: z.ZodNullable<z.ZodString>;
@@ -2360,6 +5691,13 @@ declare const DoctorReportSchema: z.ZodObject<{
2360
5691
  "invoice.voided": "invoice.voided";
2361
5692
  "account.state_changed": "account.state_changed";
2362
5693
  "account.deleted": "account.deleted";
5694
+ "invoice.paid": "invoice.paid";
5695
+ "benefit_grant.created": "benefit_grant.created";
5696
+ "benefit_grant.updated": "benefit_grant.updated";
5697
+ "benefit_grant.revoked": "benefit_grant.revoked";
5698
+ "benefit_grant.cycled": "benefit_grant.cycled";
5699
+ "meter.threshold_crossed": "meter.threshold_crossed";
5700
+ "meter.period_closed": "meter.period_closed";
2363
5701
  }>>>;
2364
5702
  pending: z.ZodNumber;
2365
5703
  dead: z.ZodNumber;
@@ -2380,6 +5718,38 @@ declare const DoctorReportSchema: z.ZodObject<{
2380
5718
  dunning: z.ZodObject<{
2381
5719
  dryRun: z.ZodBoolean;
2382
5720
  }, z.core.$strip>;
5721
+ emails: z.ZodOptional<z.ZodObject<{
5722
+ transportConfigured: z.ZodBoolean;
5723
+ senderConfigured: z.ZodBoolean;
5724
+ disabledTemplates: z.ZodArray<z.ZodString>;
5725
+ ready: z.ZodBoolean;
5726
+ }, z.core.$strip>>;
5727
+ billing: z.ZodOptional<z.ZodObject<{
5728
+ legacyProviderSubscriptions: z.ZodNumber;
5729
+ }, z.core.$strip>>;
5730
+ events: z.ZodOptional<z.ZodObject<{
5731
+ meters: z.ZodNumber;
5732
+ backfillingMeters: z.ZodArray<z.ZodString>;
5733
+ backlogRows: z.ZodNumber;
5734
+ rollupLagSeconds: z.ZodNumber;
5735
+ backlogged: z.ZodBoolean;
5736
+ sampledEvents: z.ZodNumber;
5737
+ unmatchedEventNames: z.ZodArray<z.ZodObject<{
5738
+ name: z.ZodString;
5739
+ events: z.ZodNumber;
5740
+ }, z.core.$strip>>;
5741
+ invalidValues: z.ZodArray<z.ZodObject<{
5742
+ meter: z.ZodString;
5743
+ events: z.ZodNumber;
5744
+ }, z.core.$strip>>;
5745
+ metersWithoutEvents: z.ZodArray<z.ZodString>;
5746
+ }, z.core.$strip>>;
5747
+ overage: z.ZodOptional<z.ZodObject<{
5748
+ chargeMode: z.ZodString;
5749
+ meteredPrices: z.ZodNumber;
5750
+ unratedSubscriptions: z.ZodNumber;
5751
+ carriedCharges: z.ZodNumber;
5752
+ }, z.core.$strip>>;
2383
5753
  warnings: z.ZodArray<z.ZodObject<{
2384
5754
  code: z.ZodString;
2385
5755
  severity: z.ZodEnum<{
@@ -2398,10 +5768,23 @@ type DoctorFacts = {
2398
5768
  product: DoctorReport["product"];
2399
5769
  catalog: DoctorCatalog;
2400
5770
  provider: DoctorProvider;
2401
- settings: Pick<ProductSettings, "appUrl" | "extraReturnOrigins" | "privacyUrl" | "termsUrl" | "branding">;
5771
+ settings: Pick<ProductSettings, "appUrl" | "extraReturnOrigins" | "privacyUrl" | "termsUrl" | "branding"> & Partial<Pick<ProductSettings, "emails">>;
2402
5772
  endpoints: Omit<DoctorEndpoint, "diagnosis">[];
2403
5773
  dunning: DoctorReport["dunning"];
5774
+ /** Deployment email transport facts; omitted: no email section in the report. */
5775
+ emailTransport?: {
5776
+ configured: boolean;
5777
+ defaultFromConfigured: boolean;
5778
+ };
5779
+ /** Billing core facts; omitted: no billing section in the report. */
5780
+ billing?: DoctorBilling;
5781
+ /** Event ingest and rollup facts; omitted: no events section (a product without meters). */
5782
+ events?: DoctorEvents;
5783
+ /** Overage facts (MF5); omitted: no overage section in the report. */
5784
+ overage?: DoctorOverage;
2404
5785
  };
5786
+ /** Email readiness from settings and the deployment's transport (pure). */
5787
+ declare function emailReadinessOf(settings: DoctorFacts["settings"], transport: NonNullable<DoctorFacts["emailTransport"]>): DoctorEmails;
2405
5788
  /** Bekleyen en eski teslimat bundan eskiyse `endpoint_pending_backlog` (K23 alarmıyla aynı eşik). */
2406
5789
  declare const DOCTOR_PENDING_BACKLOG_MS: number;
2407
5790
  /** Son denenmiş teslimattan endpoint teşhisi (saf). */
@@ -2411,4 +5794,4 @@ declare function hostedReadinessOf(settings: DoctorFacts["settings"]): DoctorHos
2411
5794
  /** Olgulardan raporu türetir (saf): endpoint teşhisleri, hosted hazırlığı, uyarılar ve `ok`. */
2412
5795
  declare function buildDoctorReport(facts: DoctorFacts): DoctorReport;
2413
5796
  //#endregion
2414
- export { DEFAULT_CHECKOUT_TTL_MINUTES as $, CheckoutSessionCreatedSchema as $n, HEADER_SDK as $t, hostedReadinessOf as A, Stats as An, Currency as Ar, ResolvedEntitlements as At, WebhookEndpointRotateInput as B, CHECKOUT_ERRORS as Bn, ErrorResponse as Br, AccountDetailSchema as Bt, DoctorUnsellablePriceSchema as C, CancelSubscriptionInputSchema as Cn, PriceDef as Cr, PlanSetWarningSchema as Ct, DoctorWarningSchema as D, GrantSchema as Dn, ActorRefSchema as Dr, EntitlementRulesGrant as Dt, DoctorWarningCode as E, GrantCreateInputSchema as En, API_VERSION as Er, EntitlementRulesCatalog as Et, WebhookEndpoint as F, PortalSession as Fn, EntitlementValueSchema as Fr, ErrorCode as Ft, WebhookLastDelivery as G, CheckoutPrefillSchema as Gn, IntervalSchema as Gr, CheckoutSessionResponse as Gt, WebhookEndpointSchema as H, CheckoutConsentInputSchema as Hn, ExternalRefSchema as Hr, AccountUpsertResponseSchema as Ht, WebhookEndpointCreateInput as I, PortalSessionCreateInput as In, Entitlements as Ir, ErrorCodeSpec as It, generateWebhookSecret as J, CheckoutSession as Jn, GrantCreateResponseSchema as Jt, WebhookLastDeliverySchema as K, CheckoutRedirectTarget as Kn, MetadataSchema as Kr, CheckoutSessionResponseSchema as Kt, WebhookEndpointCreateInputSchema as L, PortalSessionCreateInputSchema as Ln, EntitlementsSchema as Lr, errorCodeSpec as Lt, EventTypeSchema as M, Subscription as Mn, DateTimeSchema as Mr, isLiveSubscriptionStatus as Mt, WEBHOOK_ENDPOINT_STATUSES as N, SubscriptionSchema as Nn, ERROR_CATEGORIES as Nr, resolveEntitlements as Nt, buildDoctorReport as O, Payment as On, AmountMinorSchema as Or, LIVE_SUBSCRIPTION_STATUSES as Ot, WEBHOOK_SECRET_PREFIX as P, PORTAL_SESSION_ERRORS as Pn, EntitlementValue as Pr, ERROR_CODES as Pt, BrandingSchema as Q, CheckoutSessionCreated as Qn, HEADER_REQUEST_ID as Qt, WebhookEndpointList as R, PortalSessionError as Rn, ErrorCategory as Rr, isKnownErrorCode as Rt, DoctorUnsellablePrice as S, CancelSubscriptionInput as Sn, Price as Sr, PlanSetWarningCode as St, DoctorWarning as T, GrantCreateInput as Tn, PriceSchema as Tr, ResyncResultSchema as Tt, WebhookEndpointStatus as U, CheckoutError as Un, IdSchema as Ur, CancelSubscriptionResponse as Ut, WebhookEndpointRotateInputSchema as V, CheckoutConsentInput as Vn, ErrorResponseSchema as Vr, AccountUpsertResponse as Vt, WebhookEndpointStatusSchema as W, CheckoutPrefill as Wn, Interval as Wr, CancelSubscriptionResponseSchema as Wt, Branding as X, CheckoutSessionCreateInputSchema as Xn, HEADER_API_VERSION as Xt, webhookEndpointUrlProblem as Y, CheckoutSessionCreateInput as Yn, HEADER_ACTOR_REF as Yt, BrandingPatchSchema as Z, CheckoutSessionCreateParsed as Zn, HEADER_IDEMPOTENCY_KEY as Zt, DoctorReportSchema as _, ManualInvoiceInputSchema as _n, FeatureDef as _r, PlanSetMode as _t, DOCTOR_SEVERITIES as a, ManualInvoiceResponseSchema as an, MAX_CHECKOUT_CONSENT_DOCS as ar, ReturnOriginSchema as at, DoctorSeverity as b, manualInvoiceTotals as bn, PlanDef as br, PlanSetResponseSchema as bt, DoctorEndpoint as c, InvoiceIssueInputSchema as cn, checkoutRedirectUrl as cr, SettingsLocaleSchema as ct, DoctorFacts as d, InvoiceSchema as dn, Catalog as dr, applySettingsPatch as dt, InvoiceIssueResponse as en, CheckoutSessionSchema as er, DEFAULT_PORTAL_TTL_MINUTES as et, DoctorHosted as f, InvoiceStatusSchema as fn, CatalogSchema as fr, isReturnUrlAllowed as ft, DoctorReport as g, ManualInvoiceInput as gn, CatalogSyncResultSchema as gr, PlanSetInputSchema as gt, DoctorProviderSchema as h, MANUAL_INVOICE_MAX_AMOUNT_MINOR as hn, CatalogSyncResult as hr, PlanSetInput as ht, DOCTOR_REQUIRED_LEGAL_LINKS as i, ManualInvoiceResponse as in, ConsentSchema as ir, ProductSettingsSchema as it, DEFAULT_ENDPOINT_EVENT_TYPES as j, StatsSchema as jn, CurrencySchema as jr, isGrantActive as jt, endpointDiagnosisOf as k, PaymentSchema as kn, CodeSchema as kr, ResolveEntitlementsInput as kt, DoctorEndpointDiagnosis as l, InvoiceLine as ln, AccountsRefreshResult as lr, TtlMinutesSchema as lt, DoctorProvider as m, InvoiceVoidInputSchema as mn, CatalogSyncInputSchema as mr, PLAN_SET_MODES as mt, DOCTOR_PROVIDER_ENVIRONMENTS as n, InvoiceVoidResponse as nn, CheckoutStatusSchema as nr, ProductSettingsPatch as nt, DoctorCatalog as o, Invoice as on, ProviderPayload as or, SETTINGS_LOCALES as ot, DoctorHostedSchema as p, InvoiceVoidInput as pn, CatalogSyncInput as pr, returnOriginsOf as pt, WebhookSecretSchema as q, CheckoutReturnStatus as qn, GrantCreateResponse as qt, DOCTOR_REQUIRED_BRANDING as r, InvoiceVoidResponseSchema as rn, Consent as rr, ProductSettingsPatchSchema as rt, DoctorCatalogSchema as s, InvoiceIssueInput as sn, ProviderPayloadSchema as sr, SettingsLocale as st, DOCTOR_PENDING_BACKLOG_MS as t, InvoiceIssueResponseSchema as tn, CheckoutStatus as tr, ProductSettings as tt, DoctorEndpointSchema as u, InvoiceLineSchema as un, AccountsRefreshResultSchema as ur, WebUrlSchema as ut, DoctorSettings as v, ManualInvoiceLineInput as vn, FeatureDefSchema as vr, PlanSetModeSchema as vt, DoctorUnsellableReason as w, Grant as wn, PriceDefSchema as wr, ResyncResult as wt, DoctorSeveritySchema as x, splitInclusiveTax as xn, PlanDefSchema as xr, PlanSetWarning as xt, DoctorSettingsSchema as y, ManualInvoiceLineInputSchema as yn, FeatureTypeSchema as yr, PlanSetResponse as yt, WebhookEndpointListSchema as z, PortalSessionSchema as zn, ErrorCategorySchema as zr, AccountDetail as zt };
5797
+ export { WebhookEndpointStatus as $, CatalogPlanSchema as $a, ManualInvoiceInputSchema as $i, matchesFilter as $n, MAX_METERED_PRICE_PER_UNITS as $o, ErrorCode as $r, canonicalMeterFilter as $s, EmailExtraTextSchema as $t, DoctorSeveritySchema as A, CheckoutPrefillSchema as Aa, MeResponse as Ai, PLAN_SET_MODES as An, CatalogBenefit as Ao, IngestRejectCode as Ar, MeterFilterClause as As, PaymentDueDaysSchema as At, hostedReadinessOf as B, CheckoutStatus as Ba, InvoiceLineSchema as Bi, ResyncResult as Bn, featureValueMatchesType as Bo, FEATURE_FLAG_BENEFIT_TYPE as Br, MeterPeriod as Bs, WebUrlSchema as Bt, DoctorProvider as C, PortalSessionError as Ca, InvoiceBillingReason as Cc, InvoiceIssueResponseSchema as Ci, emailLocaleOf as Cn, BenefitDefSchema as Co, EventsIngestInput as Cr, MeterCreditEntrySchema as Cs, LateGraceMinutesSchema as Ct, DoctorSettings as D, CheckoutConsentInputSchema as Da, MetadataSchema as Dc, InvoiceWaiveResponseSchema as Di, isEmailRelevant as Dn, BenefitSourceSchema as Do, INGEST_REJECT_CODES as Dr, MeterDefInput as Ds, MeteringSettings as Dt, DoctorReportSchema as E, CheckoutConsentInput as Ea, InvoicePaymentStatusSchema as Ec, InvoiceWaiveResponse as Ei, emailTemplateSettings as En, BenefitFeatureType as Eo, EventsIngestResultSchema as Er, MeterDef as Es, MeterChargeModeSchema as Et, DoctorWarningCode as F, CheckoutSessionCreateInputSchema as Fa, UncancelSubscriptionResponseSchema as Fi, PlanSetResponse as Fn, FeatureFlagProperties as Fo, isEventTimestampInRange as Fr, MeterFilterSchema as Fs, ReturnOriginSchema as Ft, WebhookEndpoint as G, MAX_CHECKOUT_CONSENT_DOCS as Ga, InvoiceSchema as Gi, MeterCreditBenefit as Gn, AccountMeters as Go, ResolvedBenefit as Gr, MeterPeriodStatusSchema as Gs, meteringSettingsOf as Gt, EventTypeSchema as H, Consent as Ha, InvoicePaymentSessionCreateInput as Hi, GrantedMeterCredit as Hn, isMeterCreditBenefit as Ho, OVERRIDE_BENEFIT_SOURCE as Hr, MeterPeriodListSchema as Hs, billingSettingsOf as Ht, DoctorWarningSchema as I, CheckoutSessionCreateParsed as Ia, Invoice as Ii, PlanSetResponseSchema as In, FeatureFlagPropertiesSchema as Io, BenefitRulesDefinition as Ir, MeterFilterValue as Is, SETTINGS_LOCALES as It, WebhookEndpointList as J, checkoutRedirectUrl as Ja, InvoiceVoidInputSchema as Ji, MeterRulesMeter as Jn, CatalogMeterSchema as Jo, isGrantActive as Jr, MeterUnitsSchema as Js, BillingPathSchema as Jt, WebhookEndpointCreateInput as K, ProviderPayload as Ka, InvoiceStatusSchema as Ki, MeterCreditsOptions as Kn, AccountMetersSchema as Ko, ResolvedBenefits as Kr, MeterStanding as Ks, returnOriginsOf as Kt, buildDoctorReport as L, CheckoutSessionCreated as La, InvoiceIssueInput as Li, PlanSetWarning as Ln, MeterCreditAccountBenefit as Lo, BenefitRulesSubscription as Lr, MeterLabel as Ls, SettingsLocale as Lt, DoctorUnsellablePriceSchema as M, CheckoutReturnStatus as Ma, STEWARD_CAPABILITIES as Mi, PlanSetInputSchema as Mn, FeatureFlagAccountBenefit as Mo, IngestRejection as Mr, MeterFilterGroup as Ms, ProductSettingsPatch as Mt, DoctorUnsellableReason as N, CheckoutSession as Na, StewardCapability as Ni, PlanSetMode as Nn, FeatureFlagBenefitDef as No, IngestRejectionSchema as Nr, MeterFilterOperand as Ns, ProductSettingsPatchSchema as Nt, DoctorSettingsSchema as O, CheckoutError as Oa, ManualInvoiceResponse as Oi, liveSubscriptionOf as On, BenefitType as Oo, IngestEvent as Or, MeterDefSchema as Os, MeteringSettingsPatchSchema as Ot, DoctorWarning as P, CheckoutSessionCreateInput as Pa, UncancelSubscriptionResponse as Pi, PlanSetModeSchema as Pn, FeatureFlagBenefitDefSchema as Po, hasControlCharacters as Pr, MeterFilterOperator as Ps, ProductSettingsSchema as Pt, WebhookEndpointSchema as Q, CatalogPlan as Qa, ManualInvoiceInput as Qi, contributionOf as Qn, DecimalUnitsStringSchema as Qo, ERROR_CODES as Qr, MeteredPriceSchema as Qs, EMAIL_TEMPLATE_BY_EVENT as Qt, emailReadinessOf as R, CheckoutSessionCreatedSchema as Ra, InvoiceIssueInputSchema as Ri, PlanSetWarningCode as Rn, MeterCreditBenefitDef as Ro, EntitlementRulesCatalog as Rr, MeterLabelSchema as Rs, SettingsLocaleSchema as Rt, DoctorOverageSchema as S, PortalSessionCreateInputSchema as Sa, IntervalSchema as Sc, InvoiceIssueResponse as Si, billingPageUrl as Sn, BenefitDef as So, EventNameSchema as Sr, MeterCreditEntryKindSchema as Ss, EventsSettingsSchema as St, DoctorReport as T, CHECKOUT_ERRORS as Ta, InvoicePaymentStatus as Tc, InvoiceVoidResponseSchema as Ti, emailTemplateOf as Tn, BenefitDescriptionSchema as To, EventsIngestResult as Tr, MeterCreditPropertiesSchema as Ts, MeterChargeMode as Tt, WEBHOOK_ENDPOINT_STATUSES as U, ConsentSchema as Ua, InvoicePaymentSessionCreateInputSchema as Ui, MeterChargeTotalsLine as Un, AccountMeter as Uo, ResolveBenefitsInput as Ur, MeterPeriodSchema as Us, eventsSettingsOf as Ut, DEFAULT_ENDPOINT_EVENT_TYPES as V, CheckoutStatusSchema as Va, InvoicePaymentSession as Vi, ResyncResultSchema as Vn, isFeatureFlagBenefit as Vo, LIVE_SUBSCRIPTION_STATUSES as Vr, MeterPeriodList as Vs, applySettingsPatch as Vt, WEBHOOK_SECRET_PREFIX as W, INDIVIDUAL_IDENTITY_PLACEHOLDER as Wa, InvoicePaymentSessionSchema as Wi, MeterContribution as Wn, AccountMeterSchema as Wo, ResolveEntitlementsInput as Wr, MeterPeriodStatus as Ws, isReturnUrlAllowed as Wt, WebhookEndpointRotateInput as X, AccountsRefreshResultSchema as Xa, InvoiceWaiveInputSchema as Xi, addUtcMonths as Xn, CreditGrantInputSchema as Xo, resolveBenefits as Xr, MeteredPriceDef as Xs, EMAIL_PAYLOAD_SCHEMAS as Xt, WebhookEndpointListSchema as Y, AccountsRefreshResult as Ya, InvoiceWaiveInput as Yi, OverageRateInput as Yn, CreditGrantInput as Yo, isLiveSubscriptionStatus as Yr, MeteredPrice as Ys, EMAIL_LOCALES as Yt, WebhookEndpointRotateInputSchema as Z, Catalog as Za, MANUAL_INVOICE_MAX_AMOUNT_MINOR as Zi, consumptionOf as Zn, DEFAULT_METER_LOW_AT as Zo, resolveEntitlements as Zr, MeteredPriceDefSchema as Zs, EMAIL_TEMPLATES as Zt, DoctorEventsSchema as _, SubscriptionChangeInputSchema as _a, ExternalRefSchema as _c, HEADER_ACTOR_REF as _i, PriceChangeNoticeEmail as _n, PriceDefSchema as _o, EventMetadata as _r, MeterChargeSchema as _s, DEFAULT_PAYMENT_DUE_DAYS as _t, DOCTOR_ROLLUP_LAG_WARN_SECONDS as a, CancelSubscriptionInputSchema as aa, Currency as ac, AccountUpsertResponse as ai, EmailSettingsPatchSchema as an, FeatureDef as ao, rateOverage as ar, METER_FILTER_MAX_DEPTH as as, webhookEndpointUrlProblem as at, DoctorHostedSchema as b, PortalSession as ba, IdSchema as bc, HEADER_REQUEST_ID as bi, PriceChangeNoticeMeteredRateSchema as bn, AccountBenefitSchema as bo, EventMetadataValue as br, MeterCreditEntry as bs, EventsSettings as bt, DoctorBillingSchema as c, GrantCreateInputSchema as ca, ERROR_CATEGORIES as cc, CancelSubscriptionResponseSchema as ci, EmailTemplateSchema as cn, MAX_CATALOG_BENEFITS as co, EVENTS_INGEST_MAX_BYTES as cr, METER_STANDINGS as cs, BillingSettingsSchema as ct, DoctorEmails as d, Payment as da, Entitlements as dc, CheckoutSessionResponse as di, InvoicePaymentDueEmail as dn, MAX_PLAN_BENEFITS as do, EVENT_METADATA_MAX_PAIRS as dr, MeterAggregationSchema as ds, BrandingSchema as dt, ManualInvoiceLineInput as ea, meterFilterClauseOf as ec, ErrorCodeSpec as ei, EmailLocale as en, CatalogSchema as eo, meterChargeTotals as er, MAX_METER_UNITS as es, WebhookEndpointStatusSchema as et, DoctorEmailsSchema as f, PaymentSchema as fa, EntitlementsSchema as fc, CheckoutSessionResponseSchema as fi, InvoicePaymentDueEmailSchema as fn, METERED_PRICE_TAX_MISMATCH as fo, EVENT_METADATA_STRING_MAX_LENGTH as fr, MeterCharge as fs, DEFAULT_CHECKOUT_TTL_MINUTES as ft, DoctorEvents as g, SubscriptionChangeInput as ga, ErrorResponseSchema as gc, GrantCreateResponseSchema as gi, NotificationEmailsSchema as gn, PriceDef as go, EventExternalIdSchema as gr, MeterChargeListSchema as gs, DEFAULT_MIN_INVOICE_MINOR as gt, DoctorEndpointSchema as h, Subscription as ha, ErrorResponse as hc, GrantCreateResponse as hi, NoticedMeteredRateSchema as hn, Price as ho, EVENT_TIMESTAMP_MAX_SKEW_MINUTES as hr, MeterChargeList as hs, DEFAULT_METER_CHARGE_MODE as ht, DOCTOR_REQUIRED_LEGAL_LINKS as i, CancelSubscriptionInput as ia, CodeSchema as ic, AccountDetailSchema as ii, EmailSettingsPatch as in, CatalogSyncResultSchema as io, periodBoundsOf as ir, METER_FILTER_MAX_CONDITIONS as is, generateWebhookSecret as it, DoctorUnsellablePrice as j, CheckoutRedirectTarget as ja, MeResponseSchema as ji, PlanSetInput as jn, CatalogBenefitSchema as jo, IngestRejectCodeSchema as jr, MeterFilterCondition as js, ProductSettings as jt, DoctorSeverity as k, CheckoutPrefill as ka, ManualInvoiceResponseSchema as ki, uniqueEmails as kn, BenefitTypeSchema as ko, IngestEventSchema as kr, MeterFilter as ks, MeteringSettingsSchema as kt, DoctorCatalog as l, GrantSchema as la, EntitlementValue as lc, ChangeSubscriptionResponse as li, EmailTemplateSettings as ln, MAX_CATALOG_METERED_PRICES as lo, EVENTS_INGEST_MAX_EVENTS as lr, MeterAggregation as ls, Branding as lt, DoctorEndpointDiagnosis as m, StatsSchema as ma, ErrorCategorySchema as mc, CreditGrantResponseSchema as mi, NoticedMeteredRate as mn, PlanDefSchema as mo, EVENT_TIMESTAMP_MAX_AGE_DAYS as mr, MeterChargeLineSchema as ms, DEFAULT_LATE_GRACE_MINUTES as mt, DOCTOR_PROVIDER_ENVIRONMENTS as n, manualInvoiceTotals as na, ActorRefSchema as nc, isKnownErrorCode as ni, EmailSenderSchema as nn, CatalogSyncInputSchema as no, overageCapReached as nr, METER_CHARGE_STATUSES as ns, WebhookLastDeliverySchema as nt, DOCTOR_SEVERITIES as o, Grant as oa, CurrencySchema as oc, AccountUpsertResponseSchema as oi, EmailSettingsSchema as on, FeatureDefSchema as oo, rolloverOf as or, METER_FILTER_OPERATORS as os, BillingSettings as ot, DoctorEndpoint as p, Stats as pa, ErrorCategory as pc, CreditGrantResponse as pi, MAX_NOTIFICATION_EMAILS as pn, PlanDef as po, EVENT_NAME_MAX_LENGTH as pr, MeterChargeLine as ps, DEFAULT_EVENT_RETENTION_DAYS as pt, WebhookEndpointCreateInputSchema as q, ProviderPayloadSchema as qa, InvoiceVoidInput as qi, MeterRulesEvent as qn, CatalogMeter as qo, ResolvedEntitlements as qr, MeterStandingSchema as qs, BILLING_PATH_PLACEHOLDERS as qt, DOCTOR_REQUIRED_BRANDING as r, splitInclusiveTax as ra, AmountMinorSchema as rc, AccountDetail as ri, EmailSettings as rn, CatalogSyncResult as ro, overageOf as rr, METER_CREDIT_ENTRY_KINDS as rs, WebhookSecretSchema as rt, DoctorBilling as s, GrantCreateInput as sa, DateTimeSchema as sc, CancelSubscriptionResponse as si, EmailTemplate as sn, FeatureTypeSchema as so, standingOf as sr, METER_PERIOD_STATUSES as ss, BillingSettingsPatchSchema as st, DOCTOR_PENDING_BACKLOG_MS as t, ManualInvoiceLineInputSchema as ta, API_VERSION as tc, errorCodeSpec as ti, EmailRelevanceFacts as tn, CatalogSyncInput as to, meterCreditsOf as tr, METER_AGGREGATION_KINDS as ts, WebhookLastDelivery as tt, DoctorCatalogSchema as u, MAX_GRANT_BENEFITS as ua, EntitlementValueSchema as uc, ChangeSubscriptionResponseSchema as ui, EmailTemplateSettingsSchema as un, MAX_CATALOG_METERS as uo, EVENT_METADATA_KEY_MAX_LENGTH as ur, MeterAggregationKind as us, BrandingPatchSchema as ut, DoctorFacts as v, SubscriptionSchema as va, INVOICE_BILLING_REASONS as vc, HEADER_API_VERSION as vi, PriceChangeNoticeEmailSchema as vn, PriceSchema as vo, EventMetadataKeySchema as vr, MeterChargeStatus as vs, DEFAULT_PORTAL_TTL_MINUTES as vt, DoctorProviderSchema as w, PortalSessionSchema as wa, InvoiceBillingReasonSchema as wc, InvoiceVoidResponse as wi, emailRecipients as wn, BenefitDescription as wo, EventsIngestInputSchema as wr, MeterCreditProperties as ws, METER_CHARGE_MODES as wt, DoctorOverage as x, PortalSessionCreateInput as xa, Interval as xc, HEADER_SDK as xi, applyEmailSettingsPatch as xn, BENEFIT_TYPES as xo, EventMetadataValueSchema as xr, MeterCreditEntryKind as xs, EventsSettingsPatchSchema as xt, DoctorHosted as y, PORTAL_SESSION_ERRORS as ya, INVOICE_PAYMENT_STATUSES as yc, HEADER_IDEMPOTENCY_KEY as yi, PriceChangeNoticeMeteredRate as yn, AccountBenefit as yo, EventMetadataSchema as yr, MeterChargeStatusSchema as ys, EventRetentionDaysSchema as yt, endpointDiagnosisOf as z, CheckoutSessionSchema as za, InvoiceLine as zi, PlanSetWarningSchema as zn, MeterCreditBenefitDefSchema as zo, EntitlementRulesGrant as zr, MeterLowAtSchema as zs, TtlMinutesSchema as zt };