@strimz/shared-types 0.7.0 → 0.9.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 (52) hide show
  1. package/dist/analytics.cjs +558 -0
  2. package/dist/analytics.cjs.map +1 -0
  3. package/dist/analytics.d.cts +1719 -0
  4. package/dist/analytics.d.ts +1719 -0
  5. package/dist/analytics.js +530 -0
  6. package/dist/analytics.js.map +1 -0
  7. package/dist/api-keys.d.cts +20 -20
  8. package/dist/api-keys.d.ts +20 -20
  9. package/dist/compliance.d.cts +6 -6
  10. package/dist/compliance.d.ts +6 -6
  11. package/dist/customers.d.cts +7 -7
  12. package/dist/customers.d.ts +7 -7
  13. package/dist/events.cjs +0 -10
  14. package/dist/events.cjs.map +1 -1
  15. package/dist/events.d.cts +1885 -1885
  16. package/dist/events.d.ts +1885 -1885
  17. package/dist/events.js +0 -10
  18. package/dist/events.js.map +1 -1
  19. package/dist/index.cjs +216 -11
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +16 -15
  22. package/dist/index.d.ts +16 -15
  23. package/dist/index.js +190 -11
  24. package/dist/index.js.map +1 -1
  25. package/dist/invoices.d.cts +16 -16
  26. package/dist/invoices.d.ts +16 -16
  27. package/dist/merchants.d.cts +29 -29
  28. package/dist/merchants.d.ts +29 -29
  29. package/dist/payment-sessions.d.cts +19 -19
  30. package/dist/payment-sessions.d.ts +19 -19
  31. package/dist/refunds.d.cts +50 -50
  32. package/dist/refunds.d.ts +50 -50
  33. package/dist/storefronts.cjs +0 -10
  34. package/dist/storefronts.cjs.map +1 -1
  35. package/dist/storefronts.d.cts +24 -24
  36. package/dist/storefronts.d.ts +24 -24
  37. package/dist/storefronts.js +0 -10
  38. package/dist/storefronts.js.map +1 -1
  39. package/dist/subscriptions.cjs +0 -11
  40. package/dist/subscriptions.cjs.map +1 -1
  41. package/dist/subscriptions.d.cts +43 -81
  42. package/dist/subscriptions.d.ts +43 -81
  43. package/dist/subscriptions.js +1 -11
  44. package/dist/subscriptions.js.map +1 -1
  45. package/dist/transactions.d.cts +16 -16
  46. package/dist/transactions.d.ts +16 -16
  47. package/dist/webhooks.d.cts +28 -28
  48. package/dist/webhooks.d.ts +28 -28
  49. package/package.json +6 -1
  50. package/src/analytics.ts +275 -0
  51. package/src/index.ts +1 -0
  52. package/src/subscriptions.ts +0 -13
@@ -48,34 +48,34 @@ declare const subscriptionPlanSchema: z.ZodObject<{
48
48
  updatedAt: z.ZodString;
49
49
  }, "strip", z.ZodTypeAny, {
50
50
  status: "active" | "archived";
51
- id: string;
52
- merchantId: string;
53
- name: string;
54
- createdAt: string;
55
- metadata: Record<string, string | number | boolean | null>;
56
- chainMerchantId: string | null;
57
- tokenAddress: string | null;
58
51
  amount: string;
59
52
  currency: "USDC" | "EURC";
53
+ merchantId: string;
60
54
  description: string | null;
55
+ id: string;
56
+ createdAt: string;
61
57
  updatedAt: string;
58
+ chainMerchantId: string | null;
59
+ tokenAddress: string | null;
60
+ metadata: Record<string, string | number | boolean | null>;
62
61
  intervalSeconds: number;
62
+ name: string;
63
63
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
64
64
  intervalCount: number;
65
65
  trialPeriodDays: number | null;
66
66
  }, {
67
67
  status: "active" | "archived";
68
- id: string;
69
- merchantId: string;
70
- name: string;
71
- createdAt: string;
72
- chainMerchantId: string | null;
73
- tokenAddress: string | null;
74
68
  amount: string;
75
69
  currency: "USDC" | "EURC";
70
+ merchantId: string;
76
71
  description: string | null;
72
+ id: string;
73
+ createdAt: string;
77
74
  updatedAt: string;
75
+ chainMerchantId: string | null;
76
+ tokenAddress: string | null;
78
77
  intervalSeconds: number;
78
+ name: string;
79
79
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
80
80
  intervalCount: number;
81
81
  trialPeriodDays: number | null;
@@ -92,21 +92,21 @@ declare const createSubscriptionPlanInputSchema: z.ZodObject<{
92
92
  trialPeriodDays: z.ZodOptional<z.ZodNumber>;
93
93
  metadata: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>>>;
94
94
  }, "strip", z.ZodTypeAny, {
95
- name: string;
96
95
  amount: string;
97
96
  currency: "USDC" | "EURC";
97
+ name: string;
98
98
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
99
99
  intervalCount: number;
100
- metadata?: Record<string, string | number | boolean | null> | undefined;
101
100
  description?: string | undefined;
101
+ metadata?: Record<string, string | number | boolean | null> | undefined;
102
102
  trialPeriodDays?: number | undefined;
103
103
  }, {
104
- name: string;
105
104
  amount: string;
106
105
  currency: "USDC" | "EURC";
106
+ name: string;
107
107
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
108
- metadata?: Record<string, string | number | boolean | null> | undefined;
109
108
  description?: string | undefined;
109
+ metadata?: Record<string, string | number | boolean | null> | undefined;
110
110
  intervalCount?: number | undefined;
111
111
  trialPeriodDays?: number | undefined;
112
112
  }>;
@@ -136,15 +136,15 @@ declare const subscriptionSchema: z.ZodObject<{
136
136
  createdAt: z.ZodString;
137
137
  updatedAt: z.ZodString;
138
138
  }, "strip", z.ZodTypeAny, {
139
- status: "cancelled" | "active" | "trialing" | "at_risk" | "paused" | "lapsed";
140
- id: string;
141
- merchantId: string;
142
- createdAt: string;
143
- metadata: Record<string, string | number | boolean | null>;
144
- customerId: string;
139
+ status: "cancelled" | "trialing" | "active" | "at_risk" | "paused" | "lapsed";
145
140
  amount: string;
146
141
  currency: "USDC" | "EURC";
142
+ customerId: string;
143
+ merchantId: string;
144
+ id: string;
145
+ createdAt: string;
147
146
  updatedAt: string;
147
+ metadata: Record<string, string | number | boolean | null>;
148
148
  payerAddress: string;
149
149
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
150
150
  intervalCount: number;
@@ -157,13 +157,13 @@ declare const subscriptionSchema: z.ZodObject<{
157
157
  gracePeriodHours: number;
158
158
  cancelledAt: string | null;
159
159
  }, {
160
- status: "cancelled" | "active" | "trialing" | "at_risk" | "paused" | "lapsed";
161
- id: string;
162
- merchantId: string;
163
- createdAt: string;
164
- customerId: string;
160
+ status: "cancelled" | "trialing" | "active" | "at_risk" | "paused" | "lapsed";
165
161
  amount: string;
166
162
  currency: "USDC" | "EURC";
163
+ customerId: string;
164
+ merchantId: string;
165
+ id: string;
166
+ createdAt: string;
167
167
  updatedAt: string;
168
168
  payerAddress: string;
169
169
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
@@ -184,11 +184,11 @@ declare const subscriptionStatusResultSchema: z.ZodObject<{
184
184
  active: z.ZodBoolean;
185
185
  subscriptionId: z.ZodNullable<z.ZodString>;
186
186
  }, "strip", z.ZodTypeAny, {
187
- subscriptionId: string | null;
188
187
  active: boolean;
189
- }, {
190
188
  subscriptionId: string | null;
189
+ }, {
191
190
  active: boolean;
191
+ subscriptionId: string | null;
192
192
  }>;
193
193
  type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>;
194
194
  declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
@@ -205,44 +205,6 @@ declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
205
205
  trialDays: number;
206
206
  }>;
207
207
  type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>;
208
- declare const createSubscriptionInputSchema: z.ZodObject<{
209
- planId: z.ZodString;
210
- customer: z.ZodObject<{
211
- walletAddress: z.ZodEffects<z.ZodString, string, string>;
212
- email: z.ZodOptional<z.ZodString>;
213
- externalRef: z.ZodOptional<z.ZodString>;
214
- }, "strip", z.ZodTypeAny, {
215
- walletAddress: string;
216
- email?: string | undefined;
217
- externalRef?: string | undefined;
218
- }, {
219
- walletAddress: string;
220
- email?: string | undefined;
221
- externalRef?: string | undefined;
222
- }>;
223
- gracePeriodHours: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
224
- metadata: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>>>;
225
- }, "strip", z.ZodTypeAny, {
226
- customer: {
227
- walletAddress: string;
228
- email?: string | undefined;
229
- externalRef?: string | undefined;
230
- };
231
- planId: string;
232
- gracePeriodHours: 24 | 72 | 48;
233
- metadata?: Record<string, string | number | boolean | null> | undefined;
234
- }, {
235
- customer: {
236
- walletAddress: string;
237
- email?: string | undefined;
238
- externalRef?: string | undefined;
239
- };
240
- planId: string;
241
- metadata?: Record<string, string | number | boolean | null> | undefined;
242
- gracePeriodHours?: 24 | 72 | 48 | undefined;
243
- }>;
244
- type CreateSubscriptionInput = z.input<typeof createSubscriptionInputSchema>;
245
- type CreateSubscriptionParsed = z.output<typeof createSubscriptionInputSchema>;
246
208
  declare const cancelSubscriptionInputSchema: z.ZodObject<{
247
209
  id: z.ZodString;
248
210
  reason: z.ZodOptional<z.ZodString>;
@@ -279,14 +241,15 @@ declare const subscriptionChargeSchema: z.ZodObject<{
279
241
  updatedAt: z.ZodString;
280
242
  }, "strip", z.ZodTypeAny, {
281
243
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
282
- id: string;
283
- merchantId: string;
284
- createdAt: string;
285
- subscriptionId: string;
286
244
  amount: string;
287
245
  currency: "USDC" | "EURC";
288
- onchainTxHash: string | null;
246
+ merchantId: string;
247
+ id: string;
248
+ createdAt: string;
289
249
  updatedAt: string;
250
+ onchainTxHash: string | null;
251
+ failureReason: string | null;
252
+ subscriptionId: string;
290
253
  chargeAttemptId: string;
291
254
  periodStartAt: string;
292
255
  periodEndAt: string;
@@ -294,17 +257,17 @@ declare const subscriptionChargeSchema: z.ZodObject<{
294
257
  attemptNumber: number;
295
258
  scheduledAt: string;
296
259
  executedAt: string | null;
297
- failureReason: string | null;
298
260
  }, {
299
261
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
300
- id: string;
301
- merchantId: string;
302
- createdAt: string;
303
- subscriptionId: string;
304
262
  amount: string;
305
263
  currency: "USDC" | "EURC";
306
- onchainTxHash: string | null;
264
+ merchantId: string;
265
+ id: string;
266
+ createdAt: string;
307
267
  updatedAt: string;
268
+ onchainTxHash: string | null;
269
+ failureReason: string | null;
270
+ subscriptionId: string;
308
271
  chargeAttemptId: string;
309
272
  periodStartAt: string;
310
273
  periodEndAt: string;
@@ -312,8 +275,7 @@ declare const subscriptionChargeSchema: z.ZodObject<{
312
275
  attemptNumber: number;
313
276
  scheduledAt: string;
314
277
  executedAt: string | null;
315
- failureReason: string | null;
316
278
  }>;
317
279
  type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>;
318
280
 
319
- export { type CancelSubscriptionInput, type CancelSubscriptionParsed, type CreateSubscriptionInput, type CreateSubscriptionParsed, type CreateSubscriptionPlanInput, type CreateSubscriptionPlanParsed, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionEnrolmentTerms, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
281
+ export { type CancelSubscriptionInput, type CancelSubscriptionParsed, type CreateSubscriptionPlanInput, type CreateSubscriptionPlanParsed, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionEnrolmentTerms, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
@@ -48,34 +48,34 @@ declare const subscriptionPlanSchema: z.ZodObject<{
48
48
  updatedAt: z.ZodString;
49
49
  }, "strip", z.ZodTypeAny, {
50
50
  status: "active" | "archived";
51
- id: string;
52
- merchantId: string;
53
- name: string;
54
- createdAt: string;
55
- metadata: Record<string, string | number | boolean | null>;
56
- chainMerchantId: string | null;
57
- tokenAddress: string | null;
58
51
  amount: string;
59
52
  currency: "USDC" | "EURC";
53
+ merchantId: string;
60
54
  description: string | null;
55
+ id: string;
56
+ createdAt: string;
61
57
  updatedAt: string;
58
+ chainMerchantId: string | null;
59
+ tokenAddress: string | null;
60
+ metadata: Record<string, string | number | boolean | null>;
62
61
  intervalSeconds: number;
62
+ name: string;
63
63
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
64
64
  intervalCount: number;
65
65
  trialPeriodDays: number | null;
66
66
  }, {
67
67
  status: "active" | "archived";
68
- id: string;
69
- merchantId: string;
70
- name: string;
71
- createdAt: string;
72
- chainMerchantId: string | null;
73
- tokenAddress: string | null;
74
68
  amount: string;
75
69
  currency: "USDC" | "EURC";
70
+ merchantId: string;
76
71
  description: string | null;
72
+ id: string;
73
+ createdAt: string;
77
74
  updatedAt: string;
75
+ chainMerchantId: string | null;
76
+ tokenAddress: string | null;
78
77
  intervalSeconds: number;
78
+ name: string;
79
79
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
80
80
  intervalCount: number;
81
81
  trialPeriodDays: number | null;
@@ -92,21 +92,21 @@ declare const createSubscriptionPlanInputSchema: z.ZodObject<{
92
92
  trialPeriodDays: z.ZodOptional<z.ZodNumber>;
93
93
  metadata: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>>>;
94
94
  }, "strip", z.ZodTypeAny, {
95
- name: string;
96
95
  amount: string;
97
96
  currency: "USDC" | "EURC";
97
+ name: string;
98
98
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
99
99
  intervalCount: number;
100
- metadata?: Record<string, string | number | boolean | null> | undefined;
101
100
  description?: string | undefined;
101
+ metadata?: Record<string, string | number | boolean | null> | undefined;
102
102
  trialPeriodDays?: number | undefined;
103
103
  }, {
104
- name: string;
105
104
  amount: string;
106
105
  currency: "USDC" | "EURC";
106
+ name: string;
107
107
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
108
- metadata?: Record<string, string | number | boolean | null> | undefined;
109
108
  description?: string | undefined;
109
+ metadata?: Record<string, string | number | boolean | null> | undefined;
110
110
  intervalCount?: number | undefined;
111
111
  trialPeriodDays?: number | undefined;
112
112
  }>;
@@ -136,15 +136,15 @@ declare const subscriptionSchema: z.ZodObject<{
136
136
  createdAt: z.ZodString;
137
137
  updatedAt: z.ZodString;
138
138
  }, "strip", z.ZodTypeAny, {
139
- status: "cancelled" | "active" | "trialing" | "at_risk" | "paused" | "lapsed";
140
- id: string;
141
- merchantId: string;
142
- createdAt: string;
143
- metadata: Record<string, string | number | boolean | null>;
144
- customerId: string;
139
+ status: "cancelled" | "trialing" | "active" | "at_risk" | "paused" | "lapsed";
145
140
  amount: string;
146
141
  currency: "USDC" | "EURC";
142
+ customerId: string;
143
+ merchantId: string;
144
+ id: string;
145
+ createdAt: string;
147
146
  updatedAt: string;
147
+ metadata: Record<string, string | number | boolean | null>;
148
148
  payerAddress: string;
149
149
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
150
150
  intervalCount: number;
@@ -157,13 +157,13 @@ declare const subscriptionSchema: z.ZodObject<{
157
157
  gracePeriodHours: number;
158
158
  cancelledAt: string | null;
159
159
  }, {
160
- status: "cancelled" | "active" | "trialing" | "at_risk" | "paused" | "lapsed";
161
- id: string;
162
- merchantId: string;
163
- createdAt: string;
164
- customerId: string;
160
+ status: "cancelled" | "trialing" | "active" | "at_risk" | "paused" | "lapsed";
165
161
  amount: string;
166
162
  currency: "USDC" | "EURC";
163
+ customerId: string;
164
+ merchantId: string;
165
+ id: string;
166
+ createdAt: string;
167
167
  updatedAt: string;
168
168
  payerAddress: string;
169
169
  interval: "daily" | "weekly" | "monthly" | "quarterly" | "yearly";
@@ -184,11 +184,11 @@ declare const subscriptionStatusResultSchema: z.ZodObject<{
184
184
  active: z.ZodBoolean;
185
185
  subscriptionId: z.ZodNullable<z.ZodString>;
186
186
  }, "strip", z.ZodTypeAny, {
187
- subscriptionId: string | null;
188
187
  active: boolean;
189
- }, {
190
188
  subscriptionId: string | null;
189
+ }, {
191
190
  active: boolean;
191
+ subscriptionId: string | null;
192
192
  }>;
193
193
  type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>;
194
194
  declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
@@ -205,44 +205,6 @@ declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
205
205
  trialDays: number;
206
206
  }>;
207
207
  type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>;
208
- declare const createSubscriptionInputSchema: z.ZodObject<{
209
- planId: z.ZodString;
210
- customer: z.ZodObject<{
211
- walletAddress: z.ZodEffects<z.ZodString, string, string>;
212
- email: z.ZodOptional<z.ZodString>;
213
- externalRef: z.ZodOptional<z.ZodString>;
214
- }, "strip", z.ZodTypeAny, {
215
- walletAddress: string;
216
- email?: string | undefined;
217
- externalRef?: string | undefined;
218
- }, {
219
- walletAddress: string;
220
- email?: string | undefined;
221
- externalRef?: string | undefined;
222
- }>;
223
- gracePeriodHours: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
224
- metadata: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, Record<string, string | number | boolean | null>, Record<string, string | number | boolean | null>>>>;
225
- }, "strip", z.ZodTypeAny, {
226
- customer: {
227
- walletAddress: string;
228
- email?: string | undefined;
229
- externalRef?: string | undefined;
230
- };
231
- planId: string;
232
- gracePeriodHours: 24 | 72 | 48;
233
- metadata?: Record<string, string | number | boolean | null> | undefined;
234
- }, {
235
- customer: {
236
- walletAddress: string;
237
- email?: string | undefined;
238
- externalRef?: string | undefined;
239
- };
240
- planId: string;
241
- metadata?: Record<string, string | number | boolean | null> | undefined;
242
- gracePeriodHours?: 24 | 72 | 48 | undefined;
243
- }>;
244
- type CreateSubscriptionInput = z.input<typeof createSubscriptionInputSchema>;
245
- type CreateSubscriptionParsed = z.output<typeof createSubscriptionInputSchema>;
246
208
  declare const cancelSubscriptionInputSchema: z.ZodObject<{
247
209
  id: z.ZodString;
248
210
  reason: z.ZodOptional<z.ZodString>;
@@ -279,14 +241,15 @@ declare const subscriptionChargeSchema: z.ZodObject<{
279
241
  updatedAt: z.ZodString;
280
242
  }, "strip", z.ZodTypeAny, {
281
243
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
282
- id: string;
283
- merchantId: string;
284
- createdAt: string;
285
- subscriptionId: string;
286
244
  amount: string;
287
245
  currency: "USDC" | "EURC";
288
- onchainTxHash: string | null;
246
+ merchantId: string;
247
+ id: string;
248
+ createdAt: string;
289
249
  updatedAt: string;
250
+ onchainTxHash: string | null;
251
+ failureReason: string | null;
252
+ subscriptionId: string;
290
253
  chargeAttemptId: string;
291
254
  periodStartAt: string;
292
255
  periodEndAt: string;
@@ -294,17 +257,17 @@ declare const subscriptionChargeSchema: z.ZodObject<{
294
257
  attemptNumber: number;
295
258
  scheduledAt: string;
296
259
  executedAt: string | null;
297
- failureReason: string | null;
298
260
  }, {
299
261
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
300
- id: string;
301
- merchantId: string;
302
- createdAt: string;
303
- subscriptionId: string;
304
262
  amount: string;
305
263
  currency: "USDC" | "EURC";
306
- onchainTxHash: string | null;
264
+ merchantId: string;
265
+ id: string;
266
+ createdAt: string;
307
267
  updatedAt: string;
268
+ onchainTxHash: string | null;
269
+ failureReason: string | null;
270
+ subscriptionId: string;
308
271
  chargeAttemptId: string;
309
272
  periodStartAt: string;
310
273
  periodEndAt: string;
@@ -312,8 +275,7 @@ declare const subscriptionChargeSchema: z.ZodObject<{
312
275
  attemptNumber: number;
313
276
  scheduledAt: string;
314
277
  executedAt: string | null;
315
- failureReason: string | null;
316
278
  }>;
317
279
  type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>;
318
280
 
319
- export { type CancelSubscriptionInput, type CancelSubscriptionParsed, type CreateSubscriptionInput, type CreateSubscriptionParsed, type CreateSubscriptionPlanInput, type CreateSubscriptionPlanParsed, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionEnrolmentTerms, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
281
+ export { type CancelSubscriptionInput, type CancelSubscriptionParsed, type CreateSubscriptionPlanInput, type CreateSubscriptionPlanParsed, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionEnrolmentTerms, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
@@ -118,16 +118,6 @@ var subscriptionEnrolmentTermsSchema = z.object({
118
118
  trialDays: z.number().int().min(0),
119
119
  trialEndsAt: isoTimestampSchema.nullable()
120
120
  });
121
- var createSubscriptionInputSchema = z.object({
122
- planId: idSchema,
123
- customer: z.object({
124
- walletAddress: evmAddressSchema,
125
- email: z.string().email().optional(),
126
- externalRef: z.string().max(120).optional()
127
- }),
128
- gracePeriodHours: z.union([z.literal(24), z.literal(48), z.literal(72)]).default(48),
129
- metadata: metadataSchema.optional()
130
- });
131
121
  var cancelSubscriptionInputSchema = z.object({
132
122
  id: idSchema,
133
123
  reason: z.string().max(500).optional()
@@ -173,6 +163,6 @@ var subscriptionChargeSchema = z.object({
173
163
  updatedAt: isoTimestampSchema
174
164
  });
175
165
 
176
- export { cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
166
+ export { cancelSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
177
167
  //# sourceMappingURL=subscriptions.js.map
178
168
  //# sourceMappingURL=subscriptions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common.ts","../src/subscriptions.ts"],"names":["z"],"mappings":"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","file":"subscriptions.js","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n .refine((v) => BigInt(v) >= 0n, 'must be >= 0')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * Subscriptions: plans, active subscriptions, and individual charges.\n *\n * Design notes:\n * - A SubscriptionPlan is the template a merchant defines.\n * - A Subscription is an active, customer-scoped instance of a plan.\n * - Each billing period produces a SubscriptionCharge with a unique\n * chargeAttemptId used to enforce idempotency at the contract level.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n paymentCurrencySchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Plans ----------\n\nexport const subscriptionIntervalSchema = z.enum([\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n])\nexport type SubscriptionInterval = z.infer<typeof subscriptionIntervalSchema>\n\nexport const subscriptionPlanStatusSchema = z.enum(['active', 'archived'])\nexport type SubscriptionPlanStatus = z.infer<typeof subscriptionPlanStatusSchema>\n\nexport const subscriptionPlanSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /**\n * On-chain StrimzRegistry merchant id (uint96) as a decimal string.\n * See `paymentSessionSchema.chainMerchantId`. Null when the merchant\n * hasn't been registered on-chain yet. The hosted enrolment page\n * refuses to take signatures in that state.\n */\n chainMerchantId: z\n .string()\n .regex(/^[0-9]+$/u, 'must be a non-negative decimal integer string')\n .nullable(),\n /**\n * ERC-20 token contract address resolved from `currency`. This is the\n * EIP-2612 `verifyingContract` the wallet signs over.\n */\n tokenAddress: evmAddressSchema.nullable(),\n /**\n * Charge cadence in seconds, derived from `interval` + `intervalCount`\n * so the meta-tx layer can pass a uint32 to StrimzSubscriptions\n * without re-deriving the conversion on the client.\n */\n intervalSeconds: z.number().int().positive(),\n name: z.string().min(1).max(120),\n description: z.string().max(500).nullable(),\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1).max(365),\n trialPeriodDays: z.number().int().min(0).max(365).nullable(),\n status: subscriptionPlanStatusSchema,\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type SubscriptionPlan = z.infer<typeof subscriptionPlanSchema>\n\nexport const createSubscriptionPlanInputSchema = z.object({\n name: z.string().min(1).max(120),\n description: z.string().max(500).optional(),\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1).max(365).default(1),\n trialPeriodDays: z.number().int().min(0).max(365).optional(),\n metadata: metadataSchema.optional(),\n})\nexport type CreateSubscriptionPlanInput = z.input<typeof createSubscriptionPlanInputSchema>\nexport type CreateSubscriptionPlanParsed = z.output<typeof createSubscriptionPlanInputSchema>\n\n// ---------- Subscriptions ----------\n\nexport const subscriptionStatusSchema = z.enum([\n 'trialing',\n 'active',\n 'at_risk',\n 'paused',\n 'cancelled',\n 'lapsed',\n])\nexport type SubscriptionStatus = z.infer<typeof subscriptionStatusSchema>\n\nexport const subscriptionSchema = z.object({\n id: idSchema,\n onchainSubscriptionId: z.number().int().nonnegative().nullable(),\n merchantId: idSchema,\n customerId: idSchema,\n planId: idSchema,\n status: subscriptionStatusSchema,\n payerAddress: evmAddressSchema,\n currency: paymentCurrencySchema,\n amount: tokenAmountSchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1),\n trialEndsAt: isoTimestampSchema.nullable(),\n currentPeriodStartAt: isoTimestampSchema,\n currentPeriodEndAt: isoTimestampSchema,\n nextChargeAt: isoTimestampSchema.nullable(),\n gracePeriodHours: z.number().int().min(0).max(72),\n cancelledAt: isoTimestampSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type Subscription = z.infer<typeof subscriptionSchema>\n\n/** Whether a wallet already subscribes to a given plan, and which one. */\nexport const subscriptionStatusResultSchema = z.object({\n active: z.boolean(),\n subscriptionId: idSchema.nullable(),\n})\nexport type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>\n\nexport const subscriptionEnrolmentTermsSchema = z.object({\n startAt: z.string().regex(/^\\d+$/),\n trialDays: z.number().int().min(0),\n trialEndsAt: isoTimestampSchema.nullable(),\n})\nexport type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>\n\nexport const createSubscriptionInputSchema = z.object({\n planId: idSchema,\n customer: z.object({\n walletAddress: evmAddressSchema,\n email: z.string().email().optional(),\n externalRef: z.string().max(120).optional(),\n }),\n gracePeriodHours: z.union([z.literal(24), z.literal(48), z.literal(72)]).default(48),\n metadata: metadataSchema.optional(),\n})\nexport type CreateSubscriptionInput = z.input<typeof createSubscriptionInputSchema>\nexport type CreateSubscriptionParsed = z.output<typeof createSubscriptionInputSchema>\n\nexport const cancelSubscriptionInputSchema = z.object({\n id: idSchema,\n reason: z.string().max(500).optional(),\n})\nexport type CancelSubscriptionInput = z.input<typeof cancelSubscriptionInputSchema>\nexport type CancelSubscriptionParsed = z.output<typeof cancelSubscriptionInputSchema>\n\n// ---------- Charges ----------\n\n// One value per contract ChargeOutcome. `skipped` is the fallback for\n// outcomes a future contract appends.\nexport const subscriptionChargeOutcomeSchema = z.enum([\n 'charged',\n 'insufficient_funds',\n 'revoked_approval',\n 'cancelled',\n 'not_due',\n 'ended',\n 'duplicate',\n 'unknown',\n 'merchant_inactive',\n 'transfer_failed',\n 'skipped',\n])\nexport type SubscriptionChargeOutcome = z.infer<typeof subscriptionChargeOutcomeSchema>\n\nexport const subscriptionChargeStatusSchema = z.enum([\n 'pending',\n 'in_flight',\n 'succeeded',\n 'failed',\n 'retrying',\n 'abandoned',\n])\nexport type SubscriptionChargeStatus = z.infer<typeof subscriptionChargeStatusSchema>\n\nexport const subscriptionChargeSchema = z.object({\n id: idSchema,\n subscriptionId: idSchema,\n merchantId: idSchema,\n chargeAttemptId: z.string().length(66, 'must be a 32-byte 0x-prefixed hex string'),\n periodStartAt: isoTimestampSchema,\n periodEndAt: isoTimestampSchema,\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n status: subscriptionChargeStatusSchema,\n outcome: subscriptionChargeOutcomeSchema.nullable(),\n attemptNumber: z.number().int().min(1),\n scheduledAt: isoTimestampSchema,\n executedAt: isoTimestampSchema.nullable(),\n onchainTxHash: evmTxHashSchema.nullable(),\n failureReason: z.string().max(500).nullable(),\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>\n"]}
1
+ {"version":3,"sources":["../src/common.ts","../src/subscriptions.ts"],"names":["z"],"mappings":"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","file":"subscriptions.js","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n .refine((v) => BigInt(v) >= 0n, 'must be >= 0')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * Subscriptions: plans, active subscriptions, and individual charges.\n *\n * Design notes:\n * - A SubscriptionPlan is the template a merchant defines.\n * - A Subscription is an active, customer-scoped instance of a plan.\n * - Each billing period produces a SubscriptionCharge with a unique\n * chargeAttemptId used to enforce idempotency at the contract level.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n paymentCurrencySchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Plans ----------\n\nexport const subscriptionIntervalSchema = z.enum([\n 'daily',\n 'weekly',\n 'monthly',\n 'quarterly',\n 'yearly',\n])\nexport type SubscriptionInterval = z.infer<typeof subscriptionIntervalSchema>\n\nexport const subscriptionPlanStatusSchema = z.enum(['active', 'archived'])\nexport type SubscriptionPlanStatus = z.infer<typeof subscriptionPlanStatusSchema>\n\nexport const subscriptionPlanSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /**\n * On-chain StrimzRegistry merchant id (uint96) as a decimal string.\n * See `paymentSessionSchema.chainMerchantId`. Null when the merchant\n * hasn't been registered on-chain yet. The hosted enrolment page\n * refuses to take signatures in that state.\n */\n chainMerchantId: z\n .string()\n .regex(/^[0-9]+$/u, 'must be a non-negative decimal integer string')\n .nullable(),\n /**\n * ERC-20 token contract address resolved from `currency`. This is the\n * EIP-2612 `verifyingContract` the wallet signs over.\n */\n tokenAddress: evmAddressSchema.nullable(),\n /**\n * Charge cadence in seconds, derived from `interval` + `intervalCount`\n * so the meta-tx layer can pass a uint32 to StrimzSubscriptions\n * without re-deriving the conversion on the client.\n */\n intervalSeconds: z.number().int().positive(),\n name: z.string().min(1).max(120),\n description: z.string().max(500).nullable(),\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1).max(365),\n trialPeriodDays: z.number().int().min(0).max(365).nullable(),\n status: subscriptionPlanStatusSchema,\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type SubscriptionPlan = z.infer<typeof subscriptionPlanSchema>\n\nexport const createSubscriptionPlanInputSchema = z.object({\n name: z.string().min(1).max(120),\n description: z.string().max(500).optional(),\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1).max(365).default(1),\n trialPeriodDays: z.number().int().min(0).max(365).optional(),\n metadata: metadataSchema.optional(),\n})\nexport type CreateSubscriptionPlanInput = z.input<typeof createSubscriptionPlanInputSchema>\nexport type CreateSubscriptionPlanParsed = z.output<typeof createSubscriptionPlanInputSchema>\n\n// ---------- Subscriptions ----------\n\nexport const subscriptionStatusSchema = z.enum([\n 'trialing',\n 'active',\n 'at_risk',\n 'paused',\n 'cancelled',\n 'lapsed',\n])\nexport type SubscriptionStatus = z.infer<typeof subscriptionStatusSchema>\n\nexport const subscriptionSchema = z.object({\n id: idSchema,\n onchainSubscriptionId: z.number().int().nonnegative().nullable(),\n merchantId: idSchema,\n customerId: idSchema,\n planId: idSchema,\n status: subscriptionStatusSchema,\n payerAddress: evmAddressSchema,\n currency: paymentCurrencySchema,\n amount: tokenAmountSchema,\n interval: subscriptionIntervalSchema,\n intervalCount: z.number().int().min(1),\n trialEndsAt: isoTimestampSchema.nullable(),\n currentPeriodStartAt: isoTimestampSchema,\n currentPeriodEndAt: isoTimestampSchema,\n nextChargeAt: isoTimestampSchema.nullable(),\n gracePeriodHours: z.number().int().min(0).max(72),\n cancelledAt: isoTimestampSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type Subscription = z.infer<typeof subscriptionSchema>\n\n/** Whether a wallet already subscribes to a given plan, and which one. */\nexport const subscriptionStatusResultSchema = z.object({\n active: z.boolean(),\n subscriptionId: idSchema.nullable(),\n})\nexport type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>\n\nexport const subscriptionEnrolmentTermsSchema = z.object({\n startAt: z.string().regex(/^\\d+$/),\n trialDays: z.number().int().min(0),\n trialEndsAt: isoTimestampSchema.nullable(),\n})\nexport type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>\n\nexport const cancelSubscriptionInputSchema = z.object({\n id: idSchema,\n reason: z.string().max(500).optional(),\n})\nexport type CancelSubscriptionInput = z.input<typeof cancelSubscriptionInputSchema>\nexport type CancelSubscriptionParsed = z.output<typeof cancelSubscriptionInputSchema>\n\n// ---------- Charges ----------\n\n// One value per contract ChargeOutcome. `skipped` is the fallback for\n// outcomes a future contract appends.\nexport const subscriptionChargeOutcomeSchema = z.enum([\n 'charged',\n 'insufficient_funds',\n 'revoked_approval',\n 'cancelled',\n 'not_due',\n 'ended',\n 'duplicate',\n 'unknown',\n 'merchant_inactive',\n 'transfer_failed',\n 'skipped',\n])\nexport type SubscriptionChargeOutcome = z.infer<typeof subscriptionChargeOutcomeSchema>\n\nexport const subscriptionChargeStatusSchema = z.enum([\n 'pending',\n 'in_flight',\n 'succeeded',\n 'failed',\n 'retrying',\n 'abandoned',\n])\nexport type SubscriptionChargeStatus = z.infer<typeof subscriptionChargeStatusSchema>\n\nexport const subscriptionChargeSchema = z.object({\n id: idSchema,\n subscriptionId: idSchema,\n merchantId: idSchema,\n chargeAttemptId: z.string().length(66, 'must be a 32-byte 0x-prefixed hex string'),\n periodStartAt: isoTimestampSchema,\n periodEndAt: isoTimestampSchema,\n amount: tokenAmountSchema,\n currency: paymentCurrencySchema,\n status: subscriptionChargeStatusSchema,\n outcome: subscriptionChargeOutcomeSchema.nullable(),\n attemptNumber: z.number().int().min(1),\n scheduledAt: isoTimestampSchema,\n executedAt: isoTimestampSchema.nullable(),\n onchainTxHash: evmTxHashSchema.nullable(),\n failureReason: z.string().max(500).nullable(),\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>\n"]}
@@ -34,41 +34,41 @@ declare const transactionSchema: z.ZodObject<{
34
34
  createdAt: z.ZodString;
35
35
  }, "strip", z.ZodTypeAny, {
36
36
  status: "confirmed" | "failed" | "pending";
37
- id: string;
38
- merchantId: string;
39
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
40
- createdAt: string;
41
- sessionId: string | null;
42
- subscriptionId: string | null;
43
- customerId: string | null;
44
37
  amount: string;
45
38
  currency: "USDC" | "EURC";
39
+ customerId: string | null;
40
+ merchantId: string;
41
+ id: string;
42
+ sessionId: string | null;
43
+ createdAt: string;
46
44
  feeAmount: string;
47
45
  netAmount: string;
48
46
  onchainTxHash: string;
47
+ payerAddress: string;
48
+ subscriptionId: string | null;
49
+ kind: "refund" | "one_shot" | "subscription_charge" | "invoice_payment" | "storefront_purchase";
49
50
  subscriptionChargeId: string | null;
50
51
  refundId: string | null;
51
- payerAddress: string;
52
52
  merchantAddress: string;
53
53
  blockNumber: number;
54
54
  blockTimestamp: string;
55
55
  }, {
56
56
  status: "confirmed" | "failed" | "pending";
57
- id: string;
58
- merchantId: string;
59
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
60
- createdAt: string;
61
- sessionId: string | null;
62
- subscriptionId: string | null;
63
- customerId: string | null;
64
57
  amount: string;
65
58
  currency: "USDC" | "EURC";
59
+ customerId: string | null;
60
+ merchantId: string;
61
+ id: string;
62
+ sessionId: string | null;
63
+ createdAt: string;
66
64
  feeAmount: string;
67
65
  netAmount: string;
68
66
  onchainTxHash: string;
67
+ payerAddress: string;
68
+ subscriptionId: string | null;
69
+ kind: "refund" | "one_shot" | "subscription_charge" | "invoice_payment" | "storefront_purchase";
69
70
  subscriptionChargeId: string | null;
70
71
  refundId: string | null;
71
- payerAddress: string;
72
72
  merchantAddress: string;
73
73
  blockNumber: number;
74
74
  blockTimestamp: string;