@strimz/shared-types 0.1.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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/dist/agents.cjs +148 -0
  4. package/dist/agents.cjs.map +1 -0
  5. package/dist/agents.d.cts +317 -0
  6. package/dist/agents.d.ts +317 -0
  7. package/dist/agents.js +137 -0
  8. package/dist/agents.js.map +1 -0
  9. package/dist/api-keys.cjs +91 -0
  10. package/dist/api-keys.cjs.map +1 -0
  11. package/dist/api-keys.d.cts +155 -0
  12. package/dist/api-keys.d.ts +155 -0
  13. package/dist/api-keys.js +84 -0
  14. package/dist/api-keys.js.map +1 -0
  15. package/dist/common.cjs +56 -0
  16. package/dist/common.cjs.map +1 -0
  17. package/dist/common.d.cts +82 -0
  18. package/dist/common.d.ts +82 -0
  19. package/dist/common.js +37 -0
  20. package/dist/common.js.map +1 -0
  21. package/dist/compliance.cjs +61 -0
  22. package/dist/compliance.cjs.map +1 -0
  23. package/dist/compliance.d.cts +59 -0
  24. package/dist/compliance.d.ts +59 -0
  25. package/dist/compliance.js +56 -0
  26. package/dist/compliance.js.map +1 -0
  27. package/dist/customers.cjs +56 -0
  28. package/dist/customers.cjs.map +1 -0
  29. package/dist/customers.d.cts +64 -0
  30. package/dist/customers.d.ts +64 -0
  31. package/dist/customers.js +53 -0
  32. package/dist/customers.js.map +1 -0
  33. package/dist/events.cjs +675 -0
  34. package/dist/events.cjs.map +1 -0
  35. package/dist/events.d.cts +7907 -0
  36. package/dist/events.d.ts +7907 -0
  37. package/dist/events.js +650 -0
  38. package/dist/events.js.map +1 -0
  39. package/dist/index.cjs +976 -0
  40. package/dist/index.cjs.map +1 -0
  41. package/dist/index.d.cts +113 -0
  42. package/dist/index.d.ts +113 -0
  43. package/dist/index.js +858 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/invoices.cjs +72 -0
  46. package/dist/invoices.cjs.map +1 -0
  47. package/dist/invoices.d.cts +159 -0
  48. package/dist/invoices.d.ts +159 -0
  49. package/dist/invoices.js +67 -0
  50. package/dist/invoices.js.map +1 -0
  51. package/dist/merchants.cjs +104 -0
  52. package/dist/merchants.cjs.map +1 -0
  53. package/dist/merchants.d.cts +259 -0
  54. package/dist/merchants.d.ts +259 -0
  55. package/dist/merchants.js +93 -0
  56. package/dist/merchants.js.map +1 -0
  57. package/dist/payment-sessions.cjs +125 -0
  58. package/dist/payment-sessions.cjs.map +1 -0
  59. package/dist/payment-sessions.d.cts +180 -0
  60. package/dist/payment-sessions.d.ts +180 -0
  61. package/dist/payment-sessions.js +120 -0
  62. package/dist/payment-sessions.js.map +1 -0
  63. package/dist/refunds.cjs +81 -0
  64. package/dist/refunds.cjs.map +1 -0
  65. package/dist/refunds.d.cts +91 -0
  66. package/dist/refunds.d.ts +91 -0
  67. package/dist/refunds.js +75 -0
  68. package/dist/refunds.js.map +1 -0
  69. package/dist/storefronts.cjs +223 -0
  70. package/dist/storefronts.cjs.map +1 -0
  71. package/dist/storefronts.d.cts +177 -0
  72. package/dist/storefronts.d.ts +177 -0
  73. package/dist/storefronts.js +216 -0
  74. package/dist/storefronts.js.map +1 -0
  75. package/dist/subscriptions.cjs +175 -0
  76. package/dist/subscriptions.cjs.map +1 -0
  77. package/dist/subscriptions.d.cts +290 -0
  78. package/dist/subscriptions.d.ts +290 -0
  79. package/dist/subscriptions.js +163 -0
  80. package/dist/subscriptions.js.map +1 -0
  81. package/dist/transactions.cjs +67 -0
  82. package/dist/transactions.cjs.map +1 -0
  83. package/dist/transactions.d.cts +78 -0
  84. package/dist/transactions.d.ts +78 -0
  85. package/dist/transactions.js +63 -0
  86. package/dist/transactions.js.map +1 -0
  87. package/dist/webhooks.cjs +116 -0
  88. package/dist/webhooks.cjs.map +1 -0
  89. package/dist/webhooks.d.cts +201 -0
  90. package/dist/webhooks.d.ts +201 -0
  91. package/dist/webhooks.js +107 -0
  92. package/dist/webhooks.js.map +1 -0
  93. package/package.json +134 -0
  94. package/src/agents.ts +149 -0
  95. package/src/api-keys.ts +78 -0
  96. package/src/common.ts +113 -0
  97. package/src/compliance.ts +40 -0
  98. package/src/customers.ts +40 -0
  99. package/src/events.ts +176 -0
  100. package/src/index.ts +23 -0
  101. package/src/invoices.ts +53 -0
  102. package/src/merchants.ts +104 -0
  103. package/src/payment-sessions.ts +131 -0
  104. package/src/refunds.ts +68 -0
  105. package/src/storefronts.ts +89 -0
  106. package/src/subscriptions.ts +180 -0
  107. package/src/tokens.ts +60 -0
  108. package/src/transactions.ts +52 -0
  109. package/src/webhooks.ts +109 -0
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/invoices.ts
4
+ var idSchema = z.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/, "id must be URL-safe");
5
+ z.string().regex(/^0x[a-fA-F0-9]{40}$/, "must be a 0x-prefixed 40-character hex EVM address").transform((v) => v.toLowerCase());
6
+ z.string().regex(/^0x[a-fA-F0-9]{64}$/, "must be a 0x-prefixed 64-character hex EVM transaction hash");
7
+ var emailSchema = z.string().email().trim().toLowerCase().max(320);
8
+ z.string().url().refine((v) => v.startsWith("https://"), {
9
+ message: "must be an https:// URL"
10
+ });
11
+ z.string().url();
12
+ var tokenAmountSchema = z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)").refine((v) => BigInt(v) >= 0n, "must be >= 0");
13
+ z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
14
+ var isoTimestampSchema = z.string().datetime({ offset: true, message: "must be an ISO-8601 timestamp" });
15
+ z.string().length(2).regex(/^[A-Z]{2}$/, "must be an ISO-3166 alpha-2 country code");
16
+ z.object({
17
+ limit: z.number().int().min(1).max(100).default(25),
18
+ cursor: z.string().min(1).max(200).nullish()
19
+ });
20
+ z.record(
21
+ z.string().min(1).max(40),
22
+ z.union([z.string().max(500), z.number(), z.boolean(), z.null()])
23
+ ).refine((m) => Object.keys(m).length <= 50, "at most 50 metadata keys").default({});
24
+ z.enum(["test", "live"]);
25
+ var paymentCurrencySchema = z.enum(["USDC", "EURC"]);
26
+ z.enum(["USDC", "EURC", "USYC"]);
27
+ z.enum(["free", "growth", "business", "enterprise"]);
28
+ z.enum(["testnet", "mainnet"]);
29
+
30
+ // src/invoices.ts
31
+ var invoiceStatusSchema = z.enum(["draft", "sent", "paid", "overdue", "void"]);
32
+ var invoiceLineItemSchema = z.object({
33
+ description: z.string().min(1).max(500),
34
+ quantity: z.number().int().min(1).max(1e4),
35
+ unitAmount: tokenAmountSchema
36
+ });
37
+ var invoiceSchema = z.object({
38
+ id: idSchema,
39
+ merchantId: idSchema,
40
+ number: z.string().min(1).max(40),
41
+ customerName: z.string().min(1).max(200).nullable(),
42
+ customerEmail: emailSchema.nullable(),
43
+ lineItems: z.array(invoiceLineItemSchema).nonempty(),
44
+ subtotal: tokenAmountSchema,
45
+ total: tokenAmountSchema,
46
+ currency: paymentCurrencySchema,
47
+ status: invoiceStatusSchema,
48
+ note: z.string().max(2e3).nullable(),
49
+ sessionId: idSchema.nullable(),
50
+ dueAt: isoTimestampSchema,
51
+ paidAt: isoTimestampSchema.nullable(),
52
+ sentAt: isoTimestampSchema.nullable(),
53
+ createdAt: isoTimestampSchema,
54
+ updatedAt: isoTimestampSchema
55
+ });
56
+ var createInvoiceInputSchema = z.object({
57
+ customerName: z.string().min(1).max(200).optional(),
58
+ customerEmail: emailSchema.optional(),
59
+ lineItems: z.array(invoiceLineItemSchema).nonempty(),
60
+ currency: paymentCurrencySchema,
61
+ note: z.string().max(2e3).optional(),
62
+ dueInDays: z.number().int().min(1).max(90).default(7)
63
+ });
64
+
65
+ export { createInvoiceInputSchema, invoiceLineItemSchema, invoiceSchema, invoiceStatusSchema };
66
+ //# sourceMappingURL=invoices.js.map
67
+ //# sourceMappingURL=invoices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.ts","../src/invoices.ts"],"names":["z"],"mappings":"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","file":"invoices.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 — mirrors `@strimz/shared-config`. */\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 — mirrors `@strimz/shared-config`. */\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 * Invoices — shareable, expirable payment requests with structured line items.\n */\n\nimport { z } from 'zod'\nimport {\n emailSchema,\n idSchema,\n isoTimestampSchema,\n paymentCurrencySchema,\n tokenAmountSchema,\n} from './common.js'\n\nexport const invoiceStatusSchema = z.enum(['draft', 'sent', 'paid', 'overdue', 'void'])\nexport type InvoiceStatus = z.infer<typeof invoiceStatusSchema>\n\nexport const invoiceLineItemSchema = z.object({\n description: z.string().min(1).max(500),\n quantity: z.number().int().min(1).max(10_000),\n unitAmount: tokenAmountSchema,\n})\nexport type InvoiceLineItem = z.infer<typeof invoiceLineItemSchema>\n\nexport const invoiceSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n number: z.string().min(1).max(40),\n customerName: z.string().min(1).max(200).nullable(),\n customerEmail: emailSchema.nullable(),\n lineItems: z.array(invoiceLineItemSchema).nonempty(),\n subtotal: tokenAmountSchema,\n total: tokenAmountSchema,\n currency: paymentCurrencySchema,\n status: invoiceStatusSchema,\n note: z.string().max(2000).nullable(),\n sessionId: idSchema.nullable(),\n dueAt: isoTimestampSchema,\n paidAt: isoTimestampSchema.nullable(),\n sentAt: isoTimestampSchema.nullable(),\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type Invoice = z.infer<typeof invoiceSchema>\n\nexport const createInvoiceInputSchema = z.object({\n customerName: z.string().min(1).max(200).optional(),\n customerEmail: emailSchema.optional(),\n lineItems: z.array(invoiceLineItemSchema).nonempty(),\n currency: paymentCurrencySchema,\n note: z.string().max(2000).optional(),\n dueInDays: z.number().int().min(1).max(90).default(7),\n})\nexport type CreateInvoiceInput = z.infer<typeof createInvoiceInputSchema>\n"]}
@@ -0,0 +1,104 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/merchants.ts
6
+ var idSchema = zod.z.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/, "id must be URL-safe");
7
+ var evmAddressSchema = zod.z.string().regex(/^0x[a-fA-F0-9]{40}$/, "must be a 0x-prefixed 40-character hex EVM address").transform((v) => v.toLowerCase());
8
+ zod.z.string().regex(/^0x[a-fA-F0-9]{64}$/, "must be a 0x-prefixed 64-character hex EVM transaction hash");
9
+ var emailSchema = zod.z.string().email().trim().toLowerCase().max(320);
10
+ zod.z.string().url().refine((v) => v.startsWith("https://"), {
11
+ message: "must be an https:// URL"
12
+ });
13
+ zod.z.string().url();
14
+ zod.z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)").refine((v) => BigInt(v) >= 0n, "must be >= 0");
15
+ zod.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
16
+ var isoTimestampSchema = zod.z.string().datetime({ offset: true, message: "must be an ISO-8601 timestamp" });
17
+ zod.z.string().length(2).regex(/^[A-Z]{2}$/, "must be an ISO-3166 alpha-2 country code");
18
+ zod.z.object({
19
+ limit: zod.z.number().int().min(1).max(100).default(25),
20
+ cursor: zod.z.string().min(1).max(200).nullish()
21
+ });
22
+ var metadataSchema = zod.z.record(
23
+ zod.z.string().min(1).max(40),
24
+ zod.z.union([zod.z.string().max(500), zod.z.number(), zod.z.boolean(), zod.z.null()])
25
+ ).refine((m) => Object.keys(m).length <= 50, "at most 50 metadata keys").default({});
26
+ zod.z.enum(["test", "live"]);
27
+ zod.z.enum(["USDC", "EURC"]);
28
+ zod.z.enum(["USDC", "EURC", "USYC"]);
29
+ var merchantTierSchema = zod.z.enum(["free", "growth", "business", "enterprise"]);
30
+ zod.z.enum(["testnet", "mainnet"]);
31
+
32
+ // src/merchants.ts
33
+ var merchantStatusSchema = zod.z.enum(["active", "suspended", "closed"]);
34
+ var merchantRoleSchema = zod.z.enum(["owner", "admin", "developer", "read_only"]);
35
+ var merchantSchema = zod.z.object({
36
+ id: idSchema,
37
+ onchainMerchantId: zod.z.number().int().nonnegative().nullable(),
38
+ businessName: zod.z.string().min(2).max(120),
39
+ email: emailSchema,
40
+ tier: merchantTierSchema,
41
+ status: merchantStatusSchema,
42
+ payoutAddress: evmAddressSchema.nullable(),
43
+ defaultCurrency: zod.z.enum(["USDC", "EURC"]),
44
+ countryCode: zod.z.string().length(2).nullable(),
45
+ websiteUrl: zod.z.string().url().nullable(),
46
+ logoUrl: zod.z.string().url().nullable(),
47
+ whitelabelEnabled: zod.z.boolean(),
48
+ metadata: metadataSchema,
49
+ createdAt: isoTimestampSchema,
50
+ updatedAt: isoTimestampSchema
51
+ });
52
+ var createMerchantInputSchema = zod.z.object({
53
+ businessName: zod.z.string().min(2).max(120),
54
+ email: emailSchema,
55
+ password: zod.z.string().min(12).max(128),
56
+ countryCode: zod.z.string().length(2).optional(),
57
+ websiteUrl: zod.z.string().url().optional()
58
+ });
59
+ var updateMerchantInputSchema = zod.z.object({
60
+ businessName: zod.z.string().min(2).max(120),
61
+ payoutAddress: evmAddressSchema,
62
+ defaultCurrency: zod.z.enum(["USDC", "EURC"]),
63
+ websiteUrl: zod.z.string().url().nullable(),
64
+ logoUrl: zod.z.string().url().nullable(),
65
+ countryCode: zod.z.string().length(2).nullable(),
66
+ metadata: metadataSchema
67
+ }).partial();
68
+ var changeTierInputSchema = zod.z.object({
69
+ tier: merchantTierSchema
70
+ });
71
+ var merchantMemberSchema = zod.z.object({
72
+ id: idSchema,
73
+ merchantId: idSchema,
74
+ email: emailSchema,
75
+ role: merchantRoleSchema,
76
+ invitedAt: isoTimestampSchema,
77
+ acceptedAt: isoTimestampSchema.nullable()
78
+ });
79
+ var inviteMemberInputSchema = zod.z.object({
80
+ email: emailSchema,
81
+ role: merchantRoleSchema
82
+ });
83
+ var loginInputSchema = zod.z.object({
84
+ email: emailSchema,
85
+ password: zod.z.string().min(1).max(128)
86
+ });
87
+ var loginOutputSchema = zod.z.object({
88
+ accessToken: zod.z.string(),
89
+ refreshToken: zod.z.string(),
90
+ merchant: merchantSchema
91
+ });
92
+
93
+ exports.changeTierInputSchema = changeTierInputSchema;
94
+ exports.createMerchantInputSchema = createMerchantInputSchema;
95
+ exports.inviteMemberInputSchema = inviteMemberInputSchema;
96
+ exports.loginInputSchema = loginInputSchema;
97
+ exports.loginOutputSchema = loginOutputSchema;
98
+ exports.merchantMemberSchema = merchantMemberSchema;
99
+ exports.merchantRoleSchema = merchantRoleSchema;
100
+ exports.merchantSchema = merchantSchema;
101
+ exports.merchantStatusSchema = merchantStatusSchema;
102
+ exports.updateMerchantInputSchema = updateMerchantInputSchema;
103
+ //# sourceMappingURL=merchants.cjs.map
104
+ //# sourceMappingURL=merchants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.ts","../src/merchants.ts"],"names":["z"],"mappings":"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","file":"merchants.cjs","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 — mirrors `@strimz/shared-config`. */\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 — mirrors `@strimz/shared-config`. */\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 * Merchant entity and lifecycle DTOs.\n *\n * A merchant is the platform's first-class tenant. Merchants have a tier,\n * a payout wallet address, and an on-chain merchantId registered in the\n * StrimzRegistry contract.\n */\n\nimport { z } from 'zod'\nimport {\n emailSchema,\n evmAddressSchema,\n idSchema,\n isoTimestampSchema,\n merchantTierSchema,\n metadataSchema,\n} from './common.js'\n\nexport const merchantStatusSchema = z.enum(['active', 'suspended', 'closed'])\nexport type MerchantStatus = z.infer<typeof merchantStatusSchema>\n\nexport const merchantRoleSchema = z.enum(['owner', 'admin', 'developer', 'read_only'])\nexport type MerchantRole = z.infer<typeof merchantRoleSchema>\n\nexport const merchantSchema = z.object({\n id: idSchema,\n onchainMerchantId: z.number().int().nonnegative().nullable(),\n businessName: z.string().min(2).max(120),\n email: emailSchema,\n tier: merchantTierSchema,\n status: merchantStatusSchema,\n payoutAddress: evmAddressSchema.nullable(),\n defaultCurrency: z.enum(['USDC', 'EURC']),\n countryCode: z.string().length(2).nullable(),\n websiteUrl: z.string().url().nullable(),\n logoUrl: z.string().url().nullable(),\n whitelabelEnabled: z.boolean(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n updatedAt: isoTimestampSchema,\n})\nexport type Merchant = z.infer<typeof merchantSchema>\n\n// ---------- DTOs ----------\n\nexport const createMerchantInputSchema = z.object({\n businessName: z.string().min(2).max(120),\n email: emailSchema,\n password: z.string().min(12).max(128),\n countryCode: z.string().length(2).optional(),\n websiteUrl: z.string().url().optional(),\n})\nexport type CreateMerchantInput = z.infer<typeof createMerchantInputSchema>\n\nexport const updateMerchantInputSchema = z\n .object({\n businessName: z.string().min(2).max(120),\n payoutAddress: evmAddressSchema,\n defaultCurrency: z.enum(['USDC', 'EURC']),\n websiteUrl: z.string().url().nullable(),\n logoUrl: z.string().url().nullable(),\n countryCode: z.string().length(2).nullable(),\n metadata: metadataSchema,\n })\n .partial()\nexport type UpdateMerchantInput = z.infer<typeof updateMerchantInputSchema>\n\nexport const changeTierInputSchema = z.object({\n tier: merchantTierSchema,\n})\nexport type ChangeTierInput = z.infer<typeof changeTierInputSchema>\n\n// ---------- Team members ----------\n\nexport const merchantMemberSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n email: emailSchema,\n role: merchantRoleSchema,\n invitedAt: isoTimestampSchema,\n acceptedAt: isoTimestampSchema.nullable(),\n})\nexport type MerchantMember = z.infer<typeof merchantMemberSchema>\n\nexport const inviteMemberInputSchema = z.object({\n email: emailSchema,\n role: merchantRoleSchema,\n})\nexport type InviteMemberInput = z.infer<typeof inviteMemberInputSchema>\n\n// ---------- Auth ----------\n\nexport const loginInputSchema = z.object({\n email: emailSchema,\n password: z.string().min(1).max(128),\n})\nexport type LoginInput = z.infer<typeof loginInputSchema>\n\nexport const loginOutputSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string(),\n merchant: merchantSchema,\n})\nexport type LoginOutput = z.infer<typeof loginOutputSchema>\n"]}
@@ -0,0 +1,259 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Merchant entity and lifecycle DTOs.
5
+ *
6
+ * A merchant is the platform's first-class tenant. Merchants have a tier,
7
+ * a payout wallet address, and an on-chain merchantId registered in the
8
+ * StrimzRegistry contract.
9
+ */
10
+
11
+ declare const merchantStatusSchema: z.ZodEnum<["active", "suspended", "closed"]>;
12
+ type MerchantStatus = z.infer<typeof merchantStatusSchema>;
13
+ declare const merchantRoleSchema: z.ZodEnum<["owner", "admin", "developer", "read_only"]>;
14
+ type MerchantRole = z.infer<typeof merchantRoleSchema>;
15
+ declare const merchantSchema: z.ZodObject<{
16
+ id: z.ZodString;
17
+ onchainMerchantId: z.ZodNullable<z.ZodNumber>;
18
+ businessName: z.ZodString;
19
+ email: z.ZodString;
20
+ tier: z.ZodEnum<["free", "growth", "business", "enterprise"]>;
21
+ status: z.ZodEnum<["active", "suspended", "closed"]>;
22
+ payoutAddress: z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>;
23
+ defaultCurrency: z.ZodEnum<["USDC", "EURC"]>;
24
+ countryCode: z.ZodNullable<z.ZodString>;
25
+ websiteUrl: z.ZodNullable<z.ZodString>;
26
+ logoUrl: z.ZodNullable<z.ZodString>;
27
+ whitelabelEnabled: z.ZodBoolean;
28
+ metadata: 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>>>;
29
+ createdAt: z.ZodString;
30
+ updatedAt: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ status: "active" | "suspended" | "closed";
33
+ id: string;
34
+ createdAt: string;
35
+ email: string;
36
+ metadata: Record<string, string | number | boolean | null>;
37
+ updatedAt: string;
38
+ onchainMerchantId: number | null;
39
+ businessName: string;
40
+ tier: "free" | "growth" | "business" | "enterprise";
41
+ payoutAddress: string | null;
42
+ defaultCurrency: "USDC" | "EURC";
43
+ countryCode: string | null;
44
+ websiteUrl: string | null;
45
+ logoUrl: string | null;
46
+ whitelabelEnabled: boolean;
47
+ }, {
48
+ status: "active" | "suspended" | "closed";
49
+ id: string;
50
+ createdAt: string;
51
+ email: string;
52
+ updatedAt: string;
53
+ onchainMerchantId: number | null;
54
+ businessName: string;
55
+ tier: "free" | "growth" | "business" | "enterprise";
56
+ payoutAddress: string | null;
57
+ defaultCurrency: "USDC" | "EURC";
58
+ countryCode: string | null;
59
+ websiteUrl: string | null;
60
+ logoUrl: string | null;
61
+ whitelabelEnabled: boolean;
62
+ metadata?: Record<string, string | number | boolean | null> | undefined;
63
+ }>;
64
+ type Merchant = z.infer<typeof merchantSchema>;
65
+ declare const createMerchantInputSchema: z.ZodObject<{
66
+ businessName: z.ZodString;
67
+ email: z.ZodString;
68
+ password: z.ZodString;
69
+ countryCode: z.ZodOptional<z.ZodString>;
70
+ websiteUrl: z.ZodOptional<z.ZodString>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ email: string;
73
+ businessName: string;
74
+ password: string;
75
+ countryCode?: string | undefined;
76
+ websiteUrl?: string | undefined;
77
+ }, {
78
+ email: string;
79
+ businessName: string;
80
+ password: string;
81
+ countryCode?: string | undefined;
82
+ websiteUrl?: string | undefined;
83
+ }>;
84
+ type CreateMerchantInput = z.infer<typeof createMerchantInputSchema>;
85
+ declare const updateMerchantInputSchema: z.ZodObject<{
86
+ businessName: z.ZodOptional<z.ZodString>;
87
+ payoutAddress: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
88
+ defaultCurrency: z.ZodOptional<z.ZodEnum<["USDC", "EURC"]>>;
89
+ websiteUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
90
+ logoUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ countryCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ 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>>>>;
93
+ }, "strip", z.ZodTypeAny, {
94
+ metadata?: Record<string, string | number | boolean | null> | undefined;
95
+ businessName?: string | undefined;
96
+ payoutAddress?: string | undefined;
97
+ defaultCurrency?: "USDC" | "EURC" | undefined;
98
+ countryCode?: string | null | undefined;
99
+ websiteUrl?: string | null | undefined;
100
+ logoUrl?: string | null | undefined;
101
+ }, {
102
+ metadata?: Record<string, string | number | boolean | null> | undefined;
103
+ businessName?: string | undefined;
104
+ payoutAddress?: string | undefined;
105
+ defaultCurrency?: "USDC" | "EURC" | undefined;
106
+ countryCode?: string | null | undefined;
107
+ websiteUrl?: string | null | undefined;
108
+ logoUrl?: string | null | undefined;
109
+ }>;
110
+ type UpdateMerchantInput = z.infer<typeof updateMerchantInputSchema>;
111
+ declare const changeTierInputSchema: z.ZodObject<{
112
+ tier: z.ZodEnum<["free", "growth", "business", "enterprise"]>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ tier: "free" | "growth" | "business" | "enterprise";
115
+ }, {
116
+ tier: "free" | "growth" | "business" | "enterprise";
117
+ }>;
118
+ type ChangeTierInput = z.infer<typeof changeTierInputSchema>;
119
+ declare const merchantMemberSchema: z.ZodObject<{
120
+ id: z.ZodString;
121
+ merchantId: z.ZodString;
122
+ email: z.ZodString;
123
+ role: z.ZodEnum<["owner", "admin", "developer", "read_only"]>;
124
+ invitedAt: z.ZodString;
125
+ acceptedAt: z.ZodNullable<z.ZodString>;
126
+ }, "strip", z.ZodTypeAny, {
127
+ id: string;
128
+ merchantId: string;
129
+ email: string;
130
+ role: "owner" | "admin" | "developer" | "read_only";
131
+ invitedAt: string;
132
+ acceptedAt: string | null;
133
+ }, {
134
+ id: string;
135
+ merchantId: string;
136
+ email: string;
137
+ role: "owner" | "admin" | "developer" | "read_only";
138
+ invitedAt: string;
139
+ acceptedAt: string | null;
140
+ }>;
141
+ type MerchantMember = z.infer<typeof merchantMemberSchema>;
142
+ declare const inviteMemberInputSchema: z.ZodObject<{
143
+ email: z.ZodString;
144
+ role: z.ZodEnum<["owner", "admin", "developer", "read_only"]>;
145
+ }, "strip", z.ZodTypeAny, {
146
+ email: string;
147
+ role: "owner" | "admin" | "developer" | "read_only";
148
+ }, {
149
+ email: string;
150
+ role: "owner" | "admin" | "developer" | "read_only";
151
+ }>;
152
+ type InviteMemberInput = z.infer<typeof inviteMemberInputSchema>;
153
+ declare const loginInputSchema: z.ZodObject<{
154
+ email: z.ZodString;
155
+ password: z.ZodString;
156
+ }, "strip", z.ZodTypeAny, {
157
+ email: string;
158
+ password: string;
159
+ }, {
160
+ email: string;
161
+ password: string;
162
+ }>;
163
+ type LoginInput = z.infer<typeof loginInputSchema>;
164
+ declare const loginOutputSchema: z.ZodObject<{
165
+ accessToken: z.ZodString;
166
+ refreshToken: z.ZodString;
167
+ merchant: z.ZodObject<{
168
+ id: z.ZodString;
169
+ onchainMerchantId: z.ZodNullable<z.ZodNumber>;
170
+ businessName: z.ZodString;
171
+ email: z.ZodString;
172
+ tier: z.ZodEnum<["free", "growth", "business", "enterprise"]>;
173
+ status: z.ZodEnum<["active", "suspended", "closed"]>;
174
+ payoutAddress: z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>;
175
+ defaultCurrency: z.ZodEnum<["USDC", "EURC"]>;
176
+ countryCode: z.ZodNullable<z.ZodString>;
177
+ websiteUrl: z.ZodNullable<z.ZodString>;
178
+ logoUrl: z.ZodNullable<z.ZodString>;
179
+ whitelabelEnabled: z.ZodBoolean;
180
+ metadata: 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>>>;
181
+ createdAt: z.ZodString;
182
+ updatedAt: z.ZodString;
183
+ }, "strip", z.ZodTypeAny, {
184
+ status: "active" | "suspended" | "closed";
185
+ id: string;
186
+ createdAt: string;
187
+ email: string;
188
+ metadata: Record<string, string | number | boolean | null>;
189
+ updatedAt: string;
190
+ onchainMerchantId: number | null;
191
+ businessName: string;
192
+ tier: "free" | "growth" | "business" | "enterprise";
193
+ payoutAddress: string | null;
194
+ defaultCurrency: "USDC" | "EURC";
195
+ countryCode: string | null;
196
+ websiteUrl: string | null;
197
+ logoUrl: string | null;
198
+ whitelabelEnabled: boolean;
199
+ }, {
200
+ status: "active" | "suspended" | "closed";
201
+ id: string;
202
+ createdAt: string;
203
+ email: string;
204
+ updatedAt: string;
205
+ onchainMerchantId: number | null;
206
+ businessName: string;
207
+ tier: "free" | "growth" | "business" | "enterprise";
208
+ payoutAddress: string | null;
209
+ defaultCurrency: "USDC" | "EURC";
210
+ countryCode: string | null;
211
+ websiteUrl: string | null;
212
+ logoUrl: string | null;
213
+ whitelabelEnabled: boolean;
214
+ metadata?: Record<string, string | number | boolean | null> | undefined;
215
+ }>;
216
+ }, "strip", z.ZodTypeAny, {
217
+ accessToken: string;
218
+ refreshToken: string;
219
+ merchant: {
220
+ status: "active" | "suspended" | "closed";
221
+ id: string;
222
+ createdAt: string;
223
+ email: string;
224
+ metadata: Record<string, string | number | boolean | null>;
225
+ updatedAt: string;
226
+ onchainMerchantId: number | null;
227
+ businessName: string;
228
+ tier: "free" | "growth" | "business" | "enterprise";
229
+ payoutAddress: string | null;
230
+ defaultCurrency: "USDC" | "EURC";
231
+ countryCode: string | null;
232
+ websiteUrl: string | null;
233
+ logoUrl: string | null;
234
+ whitelabelEnabled: boolean;
235
+ };
236
+ }, {
237
+ accessToken: string;
238
+ refreshToken: string;
239
+ merchant: {
240
+ status: "active" | "suspended" | "closed";
241
+ id: string;
242
+ createdAt: string;
243
+ email: string;
244
+ updatedAt: string;
245
+ onchainMerchantId: number | null;
246
+ businessName: string;
247
+ tier: "free" | "growth" | "business" | "enterprise";
248
+ payoutAddress: string | null;
249
+ defaultCurrency: "USDC" | "EURC";
250
+ countryCode: string | null;
251
+ websiteUrl: string | null;
252
+ logoUrl: string | null;
253
+ whitelabelEnabled: boolean;
254
+ metadata?: Record<string, string | number | boolean | null> | undefined;
255
+ };
256
+ }>;
257
+ type LoginOutput = z.infer<typeof loginOutputSchema>;
258
+
259
+ export { type ChangeTierInput, type CreateMerchantInput, type InviteMemberInput, type LoginInput, type LoginOutput, type Merchant, type MerchantMember, type MerchantRole, type MerchantStatus, type UpdateMerchantInput, changeTierInputSchema, createMerchantInputSchema, inviteMemberInputSchema, loginInputSchema, loginOutputSchema, merchantMemberSchema, merchantRoleSchema, merchantSchema, merchantStatusSchema, updateMerchantInputSchema };