@strimz/shared-types 0.4.0 → 0.6.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 (45) hide show
  1. package/dist/api-keys.cjs +5 -1
  2. package/dist/api-keys.cjs.map +1 -1
  3. package/dist/api-keys.d.cts +18 -18
  4. package/dist/api-keys.d.ts +18 -18
  5. package/dist/api-keys.js +5 -1
  6. package/dist/api-keys.js.map +1 -1
  7. package/dist/compliance.d.cts +4 -4
  8. package/dist/compliance.d.ts +4 -4
  9. package/dist/customers.d.cts +2 -2
  10. package/dist/customers.d.ts +2 -2
  11. package/dist/events.cjs +5 -0
  12. package/dist/events.cjs.map +1 -1
  13. package/dist/events.d.cts +276 -276
  14. package/dist/events.d.ts +276 -276
  15. package/dist/events.js +5 -0
  16. package/dist/events.js.map +1 -1
  17. package/dist/index.cjs +11 -1
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +7 -7
  20. package/dist/index.d.ts +7 -7
  21. package/dist/index.js +11 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/invoices.d.cts +2 -2
  24. package/dist/invoices.d.ts +2 -2
  25. package/dist/merchants.d.cts +6 -6
  26. package/dist/merchants.d.ts +6 -6
  27. package/dist/storefronts.cjs +5 -0
  28. package/dist/storefronts.cjs.map +1 -1
  29. package/dist/storefronts.d.cts +4 -4
  30. package/dist/storefronts.d.ts +4 -4
  31. package/dist/storefronts.js +5 -0
  32. package/dist/storefronts.js.map +1 -1
  33. package/dist/subscriptions.cjs +6 -0
  34. package/dist/subscriptions.cjs.map +1 -1
  35. package/dist/subscriptions.d.cts +19 -5
  36. package/dist/subscriptions.d.ts +19 -5
  37. package/dist/subscriptions.js +6 -1
  38. package/dist/subscriptions.js.map +1 -1
  39. package/dist/transactions.d.cts +4 -4
  40. package/dist/transactions.d.ts +4 -4
  41. package/dist/webhooks.d.cts +6 -6
  42. package/dist/webhooks.d.ts +6 -6
  43. package/package.json +1 -1
  44. package/src/api-keys.ts +4 -0
  45. package/src/subscriptions.ts +7 -0
@@ -50,8 +50,8 @@ declare const subscriptionPlanSchema: z.ZodObject<{
50
50
  status: "active" | "archived";
51
51
  id: string;
52
52
  merchantId: string;
53
- name: string;
54
53
  createdAt: string;
54
+ name: string;
55
55
  metadata: Record<string, string | number | boolean | null>;
56
56
  chainMerchantId: string | null;
57
57
  tokenAddress: string | null;
@@ -67,8 +67,8 @@ declare const subscriptionPlanSchema: z.ZodObject<{
67
67
  status: "active" | "archived";
68
68
  id: string;
69
69
  merchantId: string;
70
- name: string;
71
70
  createdAt: string;
71
+ name: string;
72
72
  chainMerchantId: string | null;
73
73
  tokenAddress: string | null;
74
74
  amount: string;
@@ -190,6 +190,20 @@ declare const subscriptionStatusResultSchema: z.ZodObject<{
190
190
  active: boolean;
191
191
  }>;
192
192
  type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>;
193
+ declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
194
+ startAt: z.ZodString;
195
+ trialDays: z.ZodNumber;
196
+ trialEndsAt: z.ZodNullable<z.ZodString>;
197
+ }, "strip", z.ZodTypeAny, {
198
+ trialEndsAt: string | null;
199
+ startAt: string;
200
+ trialDays: number;
201
+ }, {
202
+ trialEndsAt: string | null;
203
+ startAt: string;
204
+ trialDays: number;
205
+ }>;
206
+ type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>;
193
207
  declare const createSubscriptionInputSchema: z.ZodObject<{
194
208
  planId: z.ZodString;
195
209
  customer: z.ZodObject<{
@@ -264,8 +278,8 @@ declare const subscriptionChargeSchema: z.ZodObject<{
264
278
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
265
279
  id: string;
266
280
  merchantId: string;
267
- createdAt: string;
268
281
  subscriptionId: string;
282
+ createdAt: string;
269
283
  amount: string;
270
284
  currency: "USDC" | "EURC";
271
285
  onchainTxHash: string | null;
@@ -282,8 +296,8 @@ declare const subscriptionChargeSchema: z.ZodObject<{
282
296
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
283
297
  id: string;
284
298
  merchantId: string;
285
- createdAt: string;
286
299
  subscriptionId: string;
300
+ createdAt: string;
287
301
  amount: string;
288
302
  currency: "USDC" | "EURC";
289
303
  onchainTxHash: string | null;
@@ -299,4 +313,4 @@ declare const subscriptionChargeSchema: z.ZodObject<{
299
313
  }>;
300
314
  type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>;
301
315
 
302
- export { type CancelSubscriptionInput, type CreateSubscriptionInput, type CreateSubscriptionPlanInput, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
316
+ export { type CancelSubscriptionInput, type CreateSubscriptionInput, type CreateSubscriptionPlanInput, 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 };
@@ -50,8 +50,8 @@ declare const subscriptionPlanSchema: z.ZodObject<{
50
50
  status: "active" | "archived";
51
51
  id: string;
52
52
  merchantId: string;
53
- name: string;
54
53
  createdAt: string;
54
+ name: string;
55
55
  metadata: Record<string, string | number | boolean | null>;
56
56
  chainMerchantId: string | null;
57
57
  tokenAddress: string | null;
@@ -67,8 +67,8 @@ declare const subscriptionPlanSchema: z.ZodObject<{
67
67
  status: "active" | "archived";
68
68
  id: string;
69
69
  merchantId: string;
70
- name: string;
71
70
  createdAt: string;
71
+ name: string;
72
72
  chainMerchantId: string | null;
73
73
  tokenAddress: string | null;
74
74
  amount: string;
@@ -190,6 +190,20 @@ declare const subscriptionStatusResultSchema: z.ZodObject<{
190
190
  active: boolean;
191
191
  }>;
192
192
  type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>;
193
+ declare const subscriptionEnrolmentTermsSchema: z.ZodObject<{
194
+ startAt: z.ZodString;
195
+ trialDays: z.ZodNumber;
196
+ trialEndsAt: z.ZodNullable<z.ZodString>;
197
+ }, "strip", z.ZodTypeAny, {
198
+ trialEndsAt: string | null;
199
+ startAt: string;
200
+ trialDays: number;
201
+ }, {
202
+ trialEndsAt: string | null;
203
+ startAt: string;
204
+ trialDays: number;
205
+ }>;
206
+ type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>;
193
207
  declare const createSubscriptionInputSchema: z.ZodObject<{
194
208
  planId: z.ZodString;
195
209
  customer: z.ZodObject<{
@@ -264,8 +278,8 @@ declare const subscriptionChargeSchema: z.ZodObject<{
264
278
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
265
279
  id: string;
266
280
  merchantId: string;
267
- createdAt: string;
268
281
  subscriptionId: string;
282
+ createdAt: string;
269
283
  amount: string;
270
284
  currency: "USDC" | "EURC";
271
285
  onchainTxHash: string | null;
@@ -282,8 +296,8 @@ declare const subscriptionChargeSchema: z.ZodObject<{
282
296
  status: "failed" | "pending" | "in_flight" | "succeeded" | "retrying" | "abandoned";
283
297
  id: string;
284
298
  merchantId: string;
285
- createdAt: string;
286
299
  subscriptionId: string;
300
+ createdAt: string;
287
301
  amount: string;
288
302
  currency: "USDC" | "EURC";
289
303
  onchainTxHash: string | null;
@@ -299,4 +313,4 @@ declare const subscriptionChargeSchema: z.ZodObject<{
299
313
  }>;
300
314
  type SubscriptionCharge = z.infer<typeof subscriptionChargeSchema>;
301
315
 
302
- export { type CancelSubscriptionInput, type CreateSubscriptionInput, type CreateSubscriptionPlanInput, type Subscription, type SubscriptionCharge, type SubscriptionChargeOutcome, type SubscriptionChargeStatus, type SubscriptionInterval, type SubscriptionPlan, type SubscriptionPlanStatus, type SubscriptionStatus, type SubscriptionStatusResult, cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
316
+ export { type CancelSubscriptionInput, type CreateSubscriptionInput, type CreateSubscriptionPlanInput, 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 };
@@ -113,6 +113,11 @@ var subscriptionStatusResultSchema = z.object({
113
113
  active: z.boolean(),
114
114
  subscriptionId: idSchema.nullable()
115
115
  });
116
+ var subscriptionEnrolmentTermsSchema = z.object({
117
+ startAt: z.string().regex(/^\d+$/),
118
+ trialDays: z.number().int().min(0),
119
+ trialEndsAt: isoTimestampSchema.nullable()
120
+ });
116
121
  var createSubscriptionInputSchema = z.object({
117
122
  planId: idSchema,
118
123
  customer: z.object({
@@ -168,6 +173,6 @@ var subscriptionChargeSchema = z.object({
168
173
  updatedAt: isoTimestampSchema
169
174
  });
170
175
 
171
- export { cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
176
+ export { cancelSubscriptionInputSchema, createSubscriptionInputSchema, createSubscriptionPlanInputSchema, subscriptionChargeOutcomeSchema, subscriptionChargeSchema, subscriptionChargeStatusSchema, subscriptionEnrolmentTermsSchema, subscriptionIntervalSchema, subscriptionPlanSchema, subscriptionPlanStatusSchema, subscriptionSchema, subscriptionStatusResultSchema, subscriptionStatusSchema };
172
177
  //# sourceMappingURL=subscriptions.js.map
173
178
  //# 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.infer<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.infer<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 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.infer<typeof createSubscriptionInputSchema>\n\nexport const cancelSubscriptionInputSchema = z.object({\n id: idSchema,\n reason: z.string().max(500).optional(),\n})\nexport type CancelSubscriptionInput = z.infer<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.infer<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.infer<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.infer<typeof createSubscriptionInputSchema>\n\nexport const cancelSubscriptionInputSchema = z.object({\n id: idSchema,\n reason: z.string().max(500).optional(),\n})\nexport type CancelSubscriptionInput = z.infer<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"]}
@@ -36,10 +36,10 @@ declare const transactionSchema: z.ZodObject<{
36
36
  status: "confirmed" | "failed" | "pending";
37
37
  id: string;
38
38
  merchantId: string;
39
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
40
- createdAt: string;
41
39
  sessionId: string | null;
42
40
  subscriptionId: string | null;
41
+ createdAt: string;
42
+ kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
43
43
  customerId: string | null;
44
44
  amount: string;
45
45
  currency: "USDC" | "EURC";
@@ -56,10 +56,10 @@ declare const transactionSchema: z.ZodObject<{
56
56
  status: "confirmed" | "failed" | "pending";
57
57
  id: string;
58
58
  merchantId: string;
59
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
60
- createdAt: string;
61
59
  sessionId: string | null;
62
60
  subscriptionId: string | null;
61
+ createdAt: string;
62
+ kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
63
63
  customerId: string | null;
64
64
  amount: string;
65
65
  currency: "USDC" | "EURC";
@@ -36,10 +36,10 @@ declare const transactionSchema: z.ZodObject<{
36
36
  status: "confirmed" | "failed" | "pending";
37
37
  id: string;
38
38
  merchantId: string;
39
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
40
- createdAt: string;
41
39
  sessionId: string | null;
42
40
  subscriptionId: string | null;
41
+ createdAt: string;
42
+ kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
43
43
  customerId: string | null;
44
44
  amount: string;
45
45
  currency: "USDC" | "EURC";
@@ -56,10 +56,10 @@ declare const transactionSchema: z.ZodObject<{
56
56
  status: "confirmed" | "failed" | "pending";
57
57
  id: string;
58
58
  merchantId: string;
59
- kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
60
- createdAt: string;
61
59
  sessionId: string | null;
62
60
  subscriptionId: string | null;
61
+ createdAt: string;
62
+ kind: "one_shot" | "subscription_charge" | "refund" | "invoice_payment" | "storefront_purchase";
63
63
  customerId: string | null;
64
64
  amount: string;
65
65
  currency: "USDC" | "EURC";
@@ -32,8 +32,8 @@ declare const webhookEndpointSchema: z.ZodObject<{
32
32
  status: "disabled" | "active";
33
33
  id: string;
34
34
  merchantId: string;
35
- mode: "test" | "live";
36
35
  createdAt: string;
36
+ mode: "test" | "live";
37
37
  description: string | null;
38
38
  updatedAt: string;
39
39
  url: string;
@@ -44,8 +44,8 @@ declare const webhookEndpointSchema: z.ZodObject<{
44
44
  status: "disabled" | "active";
45
45
  id: string;
46
46
  merchantId: string;
47
- mode: "test" | "live";
48
47
  createdAt: string;
48
+ mode: "test" | "live";
49
49
  description: string | null;
50
50
  updatedAt: string;
51
51
  url: string;
@@ -88,8 +88,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
88
88
  status: "disabled" | "active";
89
89
  id: string;
90
90
  merchantId: string;
91
- mode: "test" | "live";
92
91
  createdAt: string;
92
+ mode: "test" | "live";
93
93
  description: string | null;
94
94
  updatedAt: string;
95
95
  url: string;
@@ -100,8 +100,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
100
100
  status: "disabled" | "active";
101
101
  id: string;
102
102
  merchantId: string;
103
- mode: "test" | "live";
104
103
  createdAt: string;
104
+ mode: "test" | "live";
105
105
  description: string | null;
106
106
  updatedAt: string;
107
107
  url: string;
@@ -116,8 +116,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
116
116
  status: "disabled" | "active";
117
117
  id: string;
118
118
  merchantId: string;
119
- mode: "test" | "live";
120
119
  createdAt: string;
120
+ mode: "test" | "live";
121
121
  description: string | null;
122
122
  updatedAt: string;
123
123
  url: string;
@@ -131,8 +131,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
131
131
  status: "disabled" | "active";
132
132
  id: string;
133
133
  merchantId: string;
134
- mode: "test" | "live";
135
134
  createdAt: string;
135
+ mode: "test" | "live";
136
136
  description: string | null;
137
137
  updatedAt: string;
138
138
  url: string;
@@ -32,8 +32,8 @@ declare const webhookEndpointSchema: z.ZodObject<{
32
32
  status: "disabled" | "active";
33
33
  id: string;
34
34
  merchantId: string;
35
- mode: "test" | "live";
36
35
  createdAt: string;
36
+ mode: "test" | "live";
37
37
  description: string | null;
38
38
  updatedAt: string;
39
39
  url: string;
@@ -44,8 +44,8 @@ declare const webhookEndpointSchema: z.ZodObject<{
44
44
  status: "disabled" | "active";
45
45
  id: string;
46
46
  merchantId: string;
47
- mode: "test" | "live";
48
47
  createdAt: string;
48
+ mode: "test" | "live";
49
49
  description: string | null;
50
50
  updatedAt: string;
51
51
  url: string;
@@ -88,8 +88,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
88
88
  status: "disabled" | "active";
89
89
  id: string;
90
90
  merchantId: string;
91
- mode: "test" | "live";
92
91
  createdAt: string;
92
+ mode: "test" | "live";
93
93
  description: string | null;
94
94
  updatedAt: string;
95
95
  url: string;
@@ -100,8 +100,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
100
100
  status: "disabled" | "active";
101
101
  id: string;
102
102
  merchantId: string;
103
- mode: "test" | "live";
104
103
  createdAt: string;
104
+ mode: "test" | "live";
105
105
  description: string | null;
106
106
  updatedAt: string;
107
107
  url: string;
@@ -116,8 +116,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
116
116
  status: "disabled" | "active";
117
117
  id: string;
118
118
  merchantId: string;
119
- mode: "test" | "live";
120
119
  createdAt: string;
120
+ mode: "test" | "live";
121
121
  description: string | null;
122
122
  updatedAt: string;
123
123
  url: string;
@@ -131,8 +131,8 @@ declare const createWebhookEndpointOutputSchema: z.ZodObject<{
131
131
  status: "disabled" | "active";
132
132
  id: string;
133
133
  merchantId: string;
134
- mode: "test" | "live";
135
134
  createdAt: string;
135
+ mode: "test" | "live";
136
136
  description: string | null;
137
137
  updatedAt: string;
138
138
  url: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strimz/shared-types",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Zod schemas and inferred TypeScript types for every Strimz platform entity, API input, and webhook event.",
5
5
  "license": "MIT",
6
6
  "author": "Strimz <hello@strimz.finance>",
package/src/api-keys.ts CHANGED
@@ -41,6 +41,10 @@ export const apiKeyScopeSchema = z.enum([
41
41
  // keys per sub-tenant.
42
42
  'api_keys_read',
43
43
  'api_keys_write',
44
+ 'merchants_read',
45
+ 'customers_read',
46
+ 'customers_write',
47
+ 'analytics_read',
44
48
  ])
45
49
  export type ApiKeyScope = z.infer<typeof apiKeyScopeSchema>
46
50
 
@@ -126,6 +126,13 @@ export const subscriptionStatusResultSchema = z.object({
126
126
  })
127
127
  export type SubscriptionStatusResult = z.infer<typeof subscriptionStatusResultSchema>
128
128
 
129
+ export const subscriptionEnrolmentTermsSchema = z.object({
130
+ startAt: z.string().regex(/^\d+$/),
131
+ trialDays: z.number().int().min(0),
132
+ trialEndsAt: isoTimestampSchema.nullable(),
133
+ })
134
+ export type SubscriptionEnrolmentTerms = z.infer<typeof subscriptionEnrolmentTermsSchema>
135
+
129
136
  export const createSubscriptionInputSchema = z.object({
130
137
  planId: idSchema,
131
138
  customer: z.object({