@t402/evm 2.0.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 (63) hide show
  1. package/README.md +183 -0
  2. package/dist/cjs/exact/client/index.d.ts +53 -0
  3. package/dist/cjs/exact/client/index.js +270 -0
  4. package/dist/cjs/exact/client/index.js.map +1 -0
  5. package/dist/cjs/exact/facilitator/index.d.ts +118 -0
  6. package/dist/cjs/exact/facilitator/index.js +735 -0
  7. package/dist/cjs/exact/facilitator/index.js.map +1 -0
  8. package/dist/cjs/exact/server/index.d.ts +36 -0
  9. package/dist/cjs/exact/server/index.js +438 -0
  10. package/dist/cjs/exact/server/index.js.map +1 -0
  11. package/dist/cjs/exact/v1/client/index.d.ts +37 -0
  12. package/dist/cjs/exact/v1/client/index.js +147 -0
  13. package/dist/cjs/exact/v1/client/index.js.map +1 -0
  14. package/dist/cjs/exact/v1/facilitator/index.d.ts +62 -0
  15. package/dist/cjs/exact/v1/facilitator/index.js +401 -0
  16. package/dist/cjs/exact/v1/facilitator/index.js.map +1 -0
  17. package/dist/cjs/index.d.ts +1537 -0
  18. package/dist/cjs/index.js +2368 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/scheme-C6uD7PdY.d.ts +130 -0
  21. package/dist/cjs/scheme-OojTBKAz.d.ts +35 -0
  22. package/dist/cjs/scheme-yqGaK9rK.d.ts +130 -0
  23. package/dist/cjs/signer-BkcAzwYi.d.ts +79 -0
  24. package/dist/cjs/v1/index.d.ts +7 -0
  25. package/dist/cjs/v1/index.js +171 -0
  26. package/dist/cjs/v1/index.js.map +1 -0
  27. package/dist/esm/chunk-ACDQ5QNT.mjs +305 -0
  28. package/dist/esm/chunk-ACDQ5QNT.mjs.map +1 -0
  29. package/dist/esm/chunk-JBWWBRYY.mjs +92 -0
  30. package/dist/esm/chunk-JBWWBRYY.mjs.map +1 -0
  31. package/dist/esm/chunk-LGSG73NJ.mjs +88 -0
  32. package/dist/esm/chunk-LGSG73NJ.mjs.map +1 -0
  33. package/dist/esm/chunk-OEXW2OK2.mjs +251 -0
  34. package/dist/esm/chunk-OEXW2OK2.mjs.map +1 -0
  35. package/dist/esm/chunk-QLXM7BIB.mjs +23 -0
  36. package/dist/esm/chunk-QLXM7BIB.mjs.map +1 -0
  37. package/dist/esm/chunk-XYKAO6KJ.mjs +141 -0
  38. package/dist/esm/chunk-XYKAO6KJ.mjs.map +1 -0
  39. package/dist/esm/exact/client/index.d.mts +53 -0
  40. package/dist/esm/exact/client/index.mjs +36 -0
  41. package/dist/esm/exact/client/index.mjs.map +1 -0
  42. package/dist/esm/exact/facilitator/index.d.mts +118 -0
  43. package/dist/esm/exact/facilitator/index.mjs +324 -0
  44. package/dist/esm/exact/facilitator/index.mjs.map +1 -0
  45. package/dist/esm/exact/server/index.d.mts +36 -0
  46. package/dist/esm/exact/server/index.mjs +218 -0
  47. package/dist/esm/exact/server/index.mjs.map +1 -0
  48. package/dist/esm/exact/v1/client/index.d.mts +37 -0
  49. package/dist/esm/exact/v1/client/index.mjs +8 -0
  50. package/dist/esm/exact/v1/client/index.mjs.map +1 -0
  51. package/dist/esm/exact/v1/facilitator/index.d.mts +62 -0
  52. package/dist/esm/exact/v1/facilitator/index.mjs +8 -0
  53. package/dist/esm/exact/v1/facilitator/index.mjs.map +1 -0
  54. package/dist/esm/index.d.mts +1537 -0
  55. package/dist/esm/index.mjs +1875 -0
  56. package/dist/esm/index.mjs.map +1 -0
  57. package/dist/esm/scheme-D4mOqq9l.d.mts +35 -0
  58. package/dist/esm/scheme-yqGaK9rK.d.mts +130 -0
  59. package/dist/esm/signer-BkcAzwYi.d.mts +79 -0
  60. package/dist/esm/v1/index.d.mts +7 -0
  61. package/dist/esm/v1/index.mjs +13 -0
  62. package/dist/esm/v1/index.mjs.map +1 -0
  63. package/package.json +127 -0
@@ -0,0 +1,251 @@
1
+ // src/tokens.ts
2
+ var USDT0_ADDRESSES = {
3
+ // Ethereum Mainnet - OFT Adapter (bridge endpoint)
4
+ "eip155:1": "0x6C96dE32CEa08842dcc4058c14d3aaAD7Fa41dee",
5
+ // Arbitrum One - Native USDT0
6
+ "eip155:42161": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
7
+ // Ink Mainnet
8
+ "eip155:57073": "0x0200C29006150606B650577BBE7B6248F58470c1",
9
+ // Berachain Mainnet
10
+ "eip155:80094": "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
11
+ // Unichain Mainnet
12
+ "eip155:130": "0x588ce4F028D8e7B53B687865d6A67b3A54C75518"
13
+ };
14
+ var USDC_ADDRESSES = {
15
+ // Ethereum Mainnet
16
+ "eip155:1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
17
+ // Base Mainnet
18
+ "eip155:8453": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
19
+ // Base Sepolia (testnet)
20
+ "eip155:84532": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
21
+ // Sepolia (testnet)
22
+ "eip155:11155111": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
23
+ // Arbitrum One
24
+ "eip155:42161": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
25
+ // Polygon Mainnet
26
+ "eip155:137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
27
+ };
28
+ var USDT_LEGACY_ADDRESSES = {
29
+ // Ethereum Mainnet
30
+ "eip155:1": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
31
+ // Polygon Mainnet
32
+ "eip155:137": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"
33
+ };
34
+ var TOKEN_REGISTRY = {
35
+ // Ethereum Mainnet
36
+ "eip155:1": {
37
+ USDT0: {
38
+ address: USDT0_ADDRESSES["eip155:1"],
39
+ symbol: "USDT0",
40
+ name: "TetherToken",
41
+ version: "1",
42
+ decimals: 6,
43
+ tokenType: "eip3009",
44
+ priority: 1
45
+ },
46
+ USDC: {
47
+ address: USDC_ADDRESSES["eip155:1"],
48
+ symbol: "USDC",
49
+ name: "USD Coin",
50
+ version: "2",
51
+ decimals: 6,
52
+ tokenType: "eip3009",
53
+ priority: 2
54
+ },
55
+ USDT: {
56
+ address: USDT_LEGACY_ADDRESSES["eip155:1"],
57
+ symbol: "USDT",
58
+ name: "TetherUSD",
59
+ version: "1",
60
+ decimals: 6,
61
+ tokenType: "legacy",
62
+ priority: 10
63
+ // Lower priority due to legacy flow
64
+ }
65
+ },
66
+ // Arbitrum One
67
+ "eip155:42161": {
68
+ USDT0: {
69
+ address: USDT0_ADDRESSES["eip155:42161"],
70
+ symbol: "USDT0",
71
+ name: "TetherToken",
72
+ version: "1",
73
+ decimals: 6,
74
+ tokenType: "eip3009",
75
+ priority: 1
76
+ },
77
+ USDC: {
78
+ address: USDC_ADDRESSES["eip155:42161"],
79
+ symbol: "USDC",
80
+ name: "USD Coin",
81
+ version: "2",
82
+ decimals: 6,
83
+ tokenType: "eip3009",
84
+ priority: 2
85
+ }
86
+ },
87
+ // Ink Mainnet
88
+ "eip155:57073": {
89
+ USDT0: {
90
+ address: USDT0_ADDRESSES["eip155:57073"],
91
+ symbol: "USDT0",
92
+ name: "TetherToken",
93
+ version: "1",
94
+ decimals: 6,
95
+ tokenType: "eip3009",
96
+ priority: 1
97
+ }
98
+ },
99
+ // Berachain Mainnet
100
+ "eip155:80094": {
101
+ USDT0: {
102
+ address: USDT0_ADDRESSES["eip155:80094"],
103
+ symbol: "USDT0",
104
+ name: "TetherToken",
105
+ version: "1",
106
+ decimals: 6,
107
+ tokenType: "eip3009",
108
+ priority: 1
109
+ }
110
+ },
111
+ // Unichain Mainnet
112
+ "eip155:130": {
113
+ USDT0: {
114
+ address: USDT0_ADDRESSES["eip155:130"],
115
+ symbol: "USDT0",
116
+ name: "TetherToken",
117
+ version: "1",
118
+ decimals: 6,
119
+ tokenType: "eip3009",
120
+ priority: 1
121
+ }
122
+ },
123
+ // Base Mainnet
124
+ "eip155:8453": {
125
+ USDC: {
126
+ address: USDC_ADDRESSES["eip155:8453"],
127
+ symbol: "USDC",
128
+ name: "USD Coin",
129
+ version: "2",
130
+ decimals: 6,
131
+ tokenType: "eip3009",
132
+ priority: 2
133
+ }
134
+ },
135
+ // Base Sepolia (testnet)
136
+ "eip155:84532": {
137
+ USDC: {
138
+ address: USDC_ADDRESSES["eip155:84532"],
139
+ symbol: "USDC",
140
+ name: "USDC",
141
+ version: "2",
142
+ decimals: 6,
143
+ tokenType: "eip3009",
144
+ priority: 2
145
+ }
146
+ },
147
+ // Sepolia (testnet)
148
+ "eip155:11155111": {
149
+ USDC: {
150
+ address: USDC_ADDRESSES["eip155:11155111"],
151
+ symbol: "USDC",
152
+ name: "USDC",
153
+ version: "2",
154
+ decimals: 6,
155
+ tokenType: "eip3009",
156
+ priority: 2
157
+ }
158
+ },
159
+ // Polygon Mainnet
160
+ "eip155:137": {
161
+ USDC: {
162
+ address: USDC_ADDRESSES["eip155:137"],
163
+ symbol: "USDC",
164
+ name: "USD Coin",
165
+ version: "2",
166
+ decimals: 6,
167
+ tokenType: "eip3009",
168
+ priority: 2
169
+ },
170
+ USDT: {
171
+ address: USDT_LEGACY_ADDRESSES["eip155:137"],
172
+ symbol: "USDT",
173
+ name: "TetherUSD",
174
+ version: "1",
175
+ decimals: 6,
176
+ tokenType: "legacy",
177
+ priority: 10
178
+ }
179
+ }
180
+ };
181
+ var TOKEN_PRIORITY = {
182
+ USDT0: 1,
183
+ // Highest priority - gasless, cross-chain
184
+ USDC: 2,
185
+ // Second - wide support, EIP-3009
186
+ USDT: 10,
187
+ // Lower - requires approval transaction
188
+ DAI: 5
189
+ // Medium - good support
190
+ };
191
+ function getTokenConfig(network, symbol) {
192
+ return TOKEN_REGISTRY[network]?.[symbol.toUpperCase()];
193
+ }
194
+ function getNetworkTokens(network) {
195
+ const tokens = TOKEN_REGISTRY[network];
196
+ if (!tokens) return [];
197
+ return Object.values(tokens).sort((a, b) => a.priority - b.priority);
198
+ }
199
+ function getDefaultToken(network) {
200
+ const tokens = getNetworkTokens(network);
201
+ return tokens[0];
202
+ }
203
+ function getTokenByAddress(network, address) {
204
+ const tokens = TOKEN_REGISTRY[network];
205
+ if (!tokens) return void 0;
206
+ const lowerAddress = address.toLowerCase();
207
+ return Object.values(tokens).find((t) => t.address.toLowerCase() === lowerAddress);
208
+ }
209
+ function supportsEIP3009(network, symbol) {
210
+ const config = getTokenConfig(network, symbol);
211
+ return config?.tokenType === "eip3009";
212
+ }
213
+ function getNetworksForToken(symbol) {
214
+ const networks = [];
215
+ for (const [network, tokens] of Object.entries(TOKEN_REGISTRY)) {
216
+ if (tokens[symbol.toUpperCase()]) {
217
+ networks.push(network);
218
+ }
219
+ }
220
+ return networks;
221
+ }
222
+ function getUsdt0Networks() {
223
+ return getNetworksForToken("USDT0");
224
+ }
225
+ function getEIP712Domain(network, tokenAddress, chainId) {
226
+ const token = getTokenByAddress(network, tokenAddress);
227
+ if (!token) return void 0;
228
+ return {
229
+ name: token.name,
230
+ version: token.version,
231
+ chainId,
232
+ verifyingContract: token.address
233
+ };
234
+ }
235
+
236
+ export {
237
+ USDT0_ADDRESSES,
238
+ USDC_ADDRESSES,
239
+ USDT_LEGACY_ADDRESSES,
240
+ TOKEN_REGISTRY,
241
+ TOKEN_PRIORITY,
242
+ getTokenConfig,
243
+ getNetworkTokens,
244
+ getDefaultToken,
245
+ getTokenByAddress,
246
+ supportsEIP3009,
247
+ getNetworksForToken,
248
+ getUsdt0Networks,
249
+ getEIP712Domain
250
+ };
251
+ //# sourceMappingURL=chunk-OEXW2OK2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tokens.ts"],"sourcesContent":["/**\n * Token configuration for T402 EVM payments\n *\n * This module provides comprehensive token definitions including:\n * - USDT0 (Tether's new omnichain token with EIP-3009 support)\n * - USDC (USD Coin with EIP-3009 support)\n * - Legacy tokens configuration\n */\n\nimport type { Address } from \"viem\";\n\n/**\n * Token type classification for payment scheme selection\n */\nexport type TokenType = \"eip3009\" | \"legacy\";\n\n/**\n * Token configuration with EIP-712 domain parameters\n */\nexport interface TokenConfig {\n /** Token contract address */\n address: Address;\n /** Token symbol (e.g., \"USDT0\", \"USDC\") */\n symbol: string;\n /** EIP-712 domain name for signing */\n name: string;\n /** EIP-712 domain version for signing */\n version: string;\n /** Number of decimal places */\n decimals: number;\n /** Token type for scheme selection */\n tokenType: TokenType;\n /** Payment priority (lower = higher priority) */\n priority: number;\n}\n\n/**\n * Network token registry mapping network -> symbol -> config\n */\nexport type NetworkTokenRegistry = Record<string, Record<string, TokenConfig>>;\n\n/**\n * USDT0 Contract Addresses by Network\n * Source: https://docs.tether.io/usdt0/integration-guide/deployed-contracts\n *\n * USDT0 is Tether's new omnichain token using LayerZero OFT standard.\n * Key features:\n * - Supports EIP-3009 transferWithAuthorization (gasless transfers)\n * - Supports EIP-2612 permit\n * - Native cross-chain via LayerZero\n */\nexport const USDT0_ADDRESSES: Record<string, Address> = {\n // Ethereum Mainnet - OFT Adapter (bridge endpoint)\n \"eip155:1\": \"0x6C96dE32CEa08842dcc4058c14d3aaAD7Fa41dee\",\n // Arbitrum One - Native USDT0\n \"eip155:42161\": \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\",\n // Ink Mainnet\n \"eip155:57073\": \"0x0200C29006150606B650577BBE7B6248F58470c1\",\n // Berachain Mainnet\n \"eip155:80094\": \"0x779Ded0c9e1022225f8E0630b35a9b54bE713736\",\n // Unichain Mainnet\n \"eip155:130\": \"0x588ce4F028D8e7B53B687865d6A67b3A54C75518\",\n};\n\n/**\n * USDC Contract Addresses by Network\n * Native USDC with EIP-3009 support\n */\nexport const USDC_ADDRESSES: Record<string, Address> = {\n // Ethereum Mainnet\n \"eip155:1\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n // Base Mainnet\n \"eip155:8453\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n // Base Sepolia (testnet)\n \"eip155:84532\": \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n // Sepolia (testnet)\n \"eip155:11155111\": \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n // Arbitrum One\n \"eip155:42161\": \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n // Polygon Mainnet\n \"eip155:137\": \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n};\n\n/**\n * Traditional USDT Addresses (Legacy - no EIP-3009 support)\n * These require the approve + transferFrom pattern\n */\nexport const USDT_LEGACY_ADDRESSES: Record<string, Address> = {\n // Ethereum Mainnet\n \"eip155:1\": \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n // Polygon Mainnet\n \"eip155:137\": \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\",\n};\n\n/**\n * Complete token registry with all supported tokens per network\n */\nexport const TOKEN_REGISTRY: NetworkTokenRegistry = {\n // Ethereum Mainnet\n \"eip155:1\": {\n USDT0: {\n address: USDT0_ADDRESSES[\"eip155:1\"],\n symbol: \"USDT0\",\n name: \"TetherToken\",\n version: \"1\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 1,\n },\n USDC: {\n address: USDC_ADDRESSES[\"eip155:1\"],\n symbol: \"USDC\",\n name: \"USD Coin\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n USDT: {\n address: USDT_LEGACY_ADDRESSES[\"eip155:1\"],\n symbol: \"USDT\",\n name: \"TetherUSD\",\n version: \"1\",\n decimals: 6,\n tokenType: \"legacy\",\n priority: 10, // Lower priority due to legacy flow\n },\n },\n\n // Arbitrum One\n \"eip155:42161\": {\n USDT0: {\n address: USDT0_ADDRESSES[\"eip155:42161\"],\n symbol: \"USDT0\",\n name: \"TetherToken\",\n version: \"1\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 1,\n },\n USDC: {\n address: USDC_ADDRESSES[\"eip155:42161\"],\n symbol: \"USDC\",\n name: \"USD Coin\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n },\n\n // Ink Mainnet\n \"eip155:57073\": {\n USDT0: {\n address: USDT0_ADDRESSES[\"eip155:57073\"],\n symbol: \"USDT0\",\n name: \"TetherToken\",\n version: \"1\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 1,\n },\n },\n\n // Berachain Mainnet\n \"eip155:80094\": {\n USDT0: {\n address: USDT0_ADDRESSES[\"eip155:80094\"],\n symbol: \"USDT0\",\n name: \"TetherToken\",\n version: \"1\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 1,\n },\n },\n\n // Unichain Mainnet\n \"eip155:130\": {\n USDT0: {\n address: USDT0_ADDRESSES[\"eip155:130\"],\n symbol: \"USDT0\",\n name: \"TetherToken\",\n version: \"1\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 1,\n },\n },\n\n // Base Mainnet\n \"eip155:8453\": {\n USDC: {\n address: USDC_ADDRESSES[\"eip155:8453\"],\n symbol: \"USDC\",\n name: \"USD Coin\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n },\n\n // Base Sepolia (testnet)\n \"eip155:84532\": {\n USDC: {\n address: USDC_ADDRESSES[\"eip155:84532\"],\n symbol: \"USDC\",\n name: \"USDC\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n },\n\n // Sepolia (testnet)\n \"eip155:11155111\": {\n USDC: {\n address: USDC_ADDRESSES[\"eip155:11155111\"],\n symbol: \"USDC\",\n name: \"USDC\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n },\n\n // Polygon Mainnet\n \"eip155:137\": {\n USDC: {\n address: USDC_ADDRESSES[\"eip155:137\"],\n symbol: \"USDC\",\n name: \"USD Coin\",\n version: \"2\",\n decimals: 6,\n tokenType: \"eip3009\",\n priority: 2,\n },\n USDT: {\n address: USDT_LEGACY_ADDRESSES[\"eip155:137\"],\n symbol: \"USDT\",\n name: \"TetherUSD\",\n version: \"1\",\n decimals: 6,\n tokenType: \"legacy\",\n priority: 10,\n },\n },\n};\n\n/**\n * Token priority for payment method selection\n * Lower number = higher priority\n */\nexport const TOKEN_PRIORITY: Record<string, number> = {\n USDT0: 1, // Highest priority - gasless, cross-chain\n USDC: 2, // Second - wide support, EIP-3009\n USDT: 10, // Lower - requires approval transaction\n DAI: 5, // Medium - good support\n};\n\n/**\n * Get token configuration for a specific token on a network\n */\nexport function getTokenConfig(network: string, symbol: string): TokenConfig | undefined {\n return TOKEN_REGISTRY[network]?.[symbol.toUpperCase()];\n}\n\n/**\n * Get all tokens available on a network\n */\nexport function getNetworkTokens(network: string): TokenConfig[] {\n const tokens = TOKEN_REGISTRY[network];\n if (!tokens) return [];\n return Object.values(tokens).sort((a, b) => a.priority - b.priority);\n}\n\n/**\n * Get the default/preferred token for a network\n * Prefers USDT0 > USDC > others based on priority\n */\nexport function getDefaultToken(network: string): TokenConfig | undefined {\n const tokens = getNetworkTokens(network);\n return tokens[0]; // Already sorted by priority\n}\n\n/**\n * Get token by contract address on a network\n */\nexport function getTokenByAddress(network: string, address: Address): TokenConfig | undefined {\n const tokens = TOKEN_REGISTRY[network];\n if (!tokens) return undefined;\n\n const lowerAddress = address.toLowerCase();\n return Object.values(tokens).find((t) => t.address.toLowerCase() === lowerAddress);\n}\n\n/**\n * Check if a token supports EIP-3009 (gasless transfers)\n */\nexport function supportsEIP3009(network: string, symbol: string): boolean {\n const config = getTokenConfig(network, symbol);\n return config?.tokenType === \"eip3009\";\n}\n\n/**\n * Get all networks that support a specific token\n */\nexport function getNetworksForToken(symbol: string): string[] {\n const networks: string[] = [];\n for (const [network, tokens] of Object.entries(TOKEN_REGISTRY)) {\n if (tokens[symbol.toUpperCase()]) {\n networks.push(network);\n }\n }\n return networks;\n}\n\n/**\n * Get USDT0 networks (primary T402 token)\n */\nexport function getUsdt0Networks(): string[] {\n return getNetworksForToken(\"USDT0\");\n}\n\n/**\n * EIP-712 domain configuration for a token\n */\nexport function getEIP712Domain(\n network: string,\n tokenAddress: Address,\n chainId: number,\n): { name: string; version: string; chainId: number; verifyingContract: Address } | undefined {\n const token = getTokenByAddress(network, tokenAddress);\n if (!token) return undefined;\n\n return {\n name: token.name,\n version: token.version,\n chainId,\n verifyingContract: token.address,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,23 @@
1
+ // src/v1/index.ts
2
+ var NETWORKS = [
3
+ "abstract",
4
+ "abstract-testnet",
5
+ "base-sepolia",
6
+ "base",
7
+ "avalanche-fuji",
8
+ "avalanche",
9
+ "iotex",
10
+ "sei",
11
+ "sei-testnet",
12
+ "polygon",
13
+ "polygon-amoy",
14
+ "peaq",
15
+ "story",
16
+ "educhain",
17
+ "skale-base-sepolia"
18
+ ];
19
+
20
+ export {
21
+ NETWORKS
22
+ };
23
+ //# sourceMappingURL=chunk-QLXM7BIB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/v1/index.ts"],"sourcesContent":["export { ExactEvmSchemeV1 } from \"../exact/v1\";\n\nexport const NETWORKS: string[] = [\n \"abstract\",\n \"abstract-testnet\",\n \"base-sepolia\",\n \"base\",\n \"avalanche-fuji\",\n \"avalanche\",\n \"iotex\",\n \"sei\",\n \"sei-testnet\",\n \"polygon\",\n \"polygon-amoy\",\n \"peaq\",\n \"story\",\n \"educhain\",\n \"skale-base-sepolia\",\n];\n"],"mappings":";AAEO,IAAM,WAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -0,0 +1,141 @@
1
+ // src/constants.ts
2
+ var authorizationTypes = {
3
+ TransferWithAuthorization: [
4
+ { name: "from", type: "address" },
5
+ { name: "to", type: "address" },
6
+ { name: "value", type: "uint256" },
7
+ { name: "validAfter", type: "uint256" },
8
+ { name: "validBefore", type: "uint256" },
9
+ { name: "nonce", type: "bytes32" }
10
+ ]
11
+ };
12
+ var legacyAuthorizationTypes = {
13
+ LegacyTransferAuthorization: [
14
+ { name: "from", type: "address" },
15
+ { name: "to", type: "address" },
16
+ { name: "value", type: "uint256" },
17
+ { name: "validAfter", type: "uint256" },
18
+ { name: "validBefore", type: "uint256" },
19
+ { name: "nonce", type: "bytes32" },
20
+ { name: "spender", type: "address" }
21
+ ]
22
+ };
23
+ var eip3009ABI = [
24
+ {
25
+ inputs: [
26
+ { name: "from", type: "address" },
27
+ { name: "to", type: "address" },
28
+ { name: "value", type: "uint256" },
29
+ { name: "validAfter", type: "uint256" },
30
+ { name: "validBefore", type: "uint256" },
31
+ { name: "nonce", type: "bytes32" },
32
+ { name: "v", type: "uint8" },
33
+ { name: "r", type: "bytes32" },
34
+ { name: "s", type: "bytes32" }
35
+ ],
36
+ name: "transferWithAuthorization",
37
+ outputs: [],
38
+ stateMutability: "nonpayable",
39
+ type: "function"
40
+ },
41
+ {
42
+ inputs: [
43
+ { name: "from", type: "address" },
44
+ { name: "to", type: "address" },
45
+ { name: "value", type: "uint256" },
46
+ { name: "validAfter", type: "uint256" },
47
+ { name: "validBefore", type: "uint256" },
48
+ { name: "nonce", type: "bytes32" },
49
+ { name: "signature", type: "bytes" }
50
+ ],
51
+ name: "transferWithAuthorization",
52
+ outputs: [],
53
+ stateMutability: "nonpayable",
54
+ type: "function"
55
+ },
56
+ {
57
+ inputs: [{ name: "account", type: "address" }],
58
+ name: "balanceOf",
59
+ outputs: [{ name: "", type: "uint256" }],
60
+ stateMutability: "view",
61
+ type: "function"
62
+ },
63
+ {
64
+ inputs: [],
65
+ name: "version",
66
+ outputs: [{ name: "", type: "string" }],
67
+ stateMutability: "view",
68
+ type: "function"
69
+ }
70
+ ];
71
+ var erc20LegacyABI = [
72
+ {
73
+ inputs: [{ name: "account", type: "address" }],
74
+ name: "balanceOf",
75
+ outputs: [{ name: "", type: "uint256" }],
76
+ stateMutability: "view",
77
+ type: "function"
78
+ },
79
+ {
80
+ inputs: [
81
+ { name: "owner", type: "address" },
82
+ { name: "spender", type: "address" }
83
+ ],
84
+ name: "allowance",
85
+ outputs: [{ name: "", type: "uint256" }],
86
+ stateMutability: "view",
87
+ type: "function"
88
+ },
89
+ {
90
+ inputs: [
91
+ { name: "spender", type: "address" },
92
+ { name: "amount", type: "uint256" }
93
+ ],
94
+ name: "approve",
95
+ outputs: [{ name: "", type: "bool" }],
96
+ stateMutability: "nonpayable",
97
+ type: "function"
98
+ },
99
+ {
100
+ inputs: [
101
+ { name: "from", type: "address" },
102
+ { name: "to", type: "address" },
103
+ { name: "amount", type: "uint256" }
104
+ ],
105
+ name: "transferFrom",
106
+ outputs: [{ name: "", type: "bool" }],
107
+ stateMutability: "nonpayable",
108
+ type: "function"
109
+ }
110
+ ];
111
+
112
+ // src/utils.ts
113
+ import { toHex } from "viem";
114
+ function getEvmChainId(network) {
115
+ const networkMap = {
116
+ base: 8453,
117
+ "base-sepolia": 84532,
118
+ ethereum: 1,
119
+ sepolia: 11155111,
120
+ polygon: 137,
121
+ "polygon-amoy": 80002
122
+ };
123
+ return networkMap[network] || 1;
124
+ }
125
+ function createNonce() {
126
+ const cryptoObj = typeof globalThis.crypto !== "undefined" ? globalThis.crypto : globalThis.crypto;
127
+ if (!cryptoObj) {
128
+ throw new Error("Crypto API not available");
129
+ }
130
+ return toHex(cryptoObj.getRandomValues(new Uint8Array(32)));
131
+ }
132
+
133
+ export {
134
+ authorizationTypes,
135
+ legacyAuthorizationTypes,
136
+ eip3009ABI,
137
+ erc20LegacyABI,
138
+ getEvmChainId,
139
+ createNonce
140
+ };
141
+ //# sourceMappingURL=chunk-XYKAO6KJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/constants.ts","../../src/utils.ts"],"sourcesContent":["// EIP-3009 TransferWithAuthorization types for EIP-712 signing\nexport const authorizationTypes = {\n TransferWithAuthorization: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n ],\n} as const;\n\n// Legacy transfer authorization types for EIP-712 signing\n// Used for tokens without EIP-3009 support (approve + transferFrom pattern)\nexport const legacyAuthorizationTypes = {\n LegacyTransferAuthorization: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"spender\", type: \"address\" },\n ],\n} as const;\n\n// EIP3009 ABI for transferWithAuthorization function\nexport const eip3009ABI = [\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n name: \"transferWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"signature\", type: \"bytes\" },\n ],\n name: \"transferWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [{ name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\n// Standard ERC20 ABI for legacy token operations (approve + transferFrom pattern)\nexport const erc20LegacyABI = [\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import { toHex } from \"viem\";\nimport { Network } from \"@t402/core/types\";\n\n/**\n * Extract chain ID from network string (e.g., \"base-sepolia\" -> 84532)\n * Used by v1 implementations\n *\n * @param network - The network identifier\n * @returns The numeric chain ID\n */\nexport function getEvmChainId(network: Network): number {\n const networkMap: Record<string, number> = {\n base: 8453,\n \"base-sepolia\": 84532,\n ethereum: 1,\n sepolia: 11155111,\n polygon: 137,\n \"polygon-amoy\": 80002,\n };\n return networkMap[network] || 1;\n}\n\n/**\n * Create a random 32-byte nonce for authorization\n *\n * @returns A hex-encoded 32-byte nonce\n */\nexport function createNonce(): `0x${string}` {\n // Use dynamic import to avoid require() in ESM context\n const cryptoObj =\n typeof globalThis.crypto !== \"undefined\"\n ? globalThis.crypto\n : (globalThis as { crypto?: Crypto }).crypto;\n\n if (!cryptoObj) {\n throw new Error(\"Crypto API not available\");\n }\n\n return toHex(cryptoObj.getRandomValues(new Uint8Array(32)));\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,53 @@
1
+ export { E as ExactEvmScheme } from '../../scheme-D4mOqq9l.mjs';
2
+ import { t402Client, SelectPaymentRequirements, PaymentPolicy } from '@t402/core/client';
3
+ import { Network } from '@t402/core/types';
4
+ import { C as ClientEvmSigner } from '../../signer-BkcAzwYi.mjs';
5
+
6
+ /**
7
+ * Configuration options for registering EVM schemes to an t402Client
8
+ */
9
+ interface EvmClientConfig {
10
+ /**
11
+ * The EVM signer to use for creating payment payloads
12
+ */
13
+ signer: ClientEvmSigner;
14
+ /**
15
+ * Optional payment requirements selector function
16
+ * If not provided, uses the default selector (first available option)
17
+ */
18
+ paymentRequirementsSelector?: SelectPaymentRequirements;
19
+ /**
20
+ * Optional policies to apply to the client
21
+ */
22
+ policies?: PaymentPolicy[];
23
+ /**
24
+ * Optional specific networks to register
25
+ * If not provided, registers wildcard support (eip155:*)
26
+ */
27
+ networks?: Network[];
28
+ }
29
+ /**
30
+ * Registers EVM exact payment schemes to an t402Client instance.
31
+ *
32
+ * This function registers:
33
+ * - V2: eip155:* wildcard scheme with ExactEvmScheme (or specific networks if provided)
34
+ * - V1: All supported EVM networks with ExactEvmSchemeV1
35
+ *
36
+ * @param client - The t402Client instance to register schemes to
37
+ * @param config - Configuration for EVM client registration
38
+ * @returns The client instance for chaining
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * import { registerExactEvmScheme } from "@t402/evm/exact/client/register";
43
+ * import { t402Client } from "@t402/core/client";
44
+ * import { privateKeyToAccount } from "viem/accounts";
45
+ *
46
+ * const account = privateKeyToAccount("0x...");
47
+ * const client = new t402Client();
48
+ * registerExactEvmScheme(client, { signer: account });
49
+ * ```
50
+ */
51
+ declare function registerExactEvmScheme(client: t402Client, config: EvmClientConfig): t402Client;
52
+
53
+ export { type EvmClientConfig, registerExactEvmScheme };
@@ -0,0 +1,36 @@
1
+ import {
2
+ ExactEvmScheme
3
+ } from "../../chunk-LGSG73NJ.mjs";
4
+ import {
5
+ NETWORKS
6
+ } from "../../chunk-QLXM7BIB.mjs";
7
+ import {
8
+ ExactEvmSchemeV1
9
+ } from "../../chunk-JBWWBRYY.mjs";
10
+ import "../../chunk-ACDQ5QNT.mjs";
11
+ import "../../chunk-XYKAO6KJ.mjs";
12
+
13
+ // src/exact/client/register.ts
14
+ function registerExactEvmScheme(client, config) {
15
+ if (config.networks && config.networks.length > 0) {
16
+ config.networks.forEach((network) => {
17
+ client.register(network, new ExactEvmScheme(config.signer));
18
+ });
19
+ } else {
20
+ client.register("eip155:*", new ExactEvmScheme(config.signer));
21
+ }
22
+ NETWORKS.forEach((network) => {
23
+ client.registerV1(network, new ExactEvmSchemeV1(config.signer));
24
+ });
25
+ if (config.policies) {
26
+ config.policies.forEach((policy) => {
27
+ client.registerPolicy(policy);
28
+ });
29
+ }
30
+ return client;
31
+ }
32
+ export {
33
+ ExactEvmScheme,
34
+ registerExactEvmScheme
35
+ };
36
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/exact/client/register.ts"],"sourcesContent":["import { t402Client, SelectPaymentRequirements, PaymentPolicy } from \"@t402/core/client\";\nimport { Network } from \"@t402/core/types\";\nimport { ClientEvmSigner } from \"../../signer\";\nimport { ExactEvmScheme } from \"./scheme\";\nimport { ExactEvmSchemeV1 } from \"../v1/client/scheme\";\nimport { NETWORKS } from \"../../v1\";\n\n/**\n * Configuration options for registering EVM schemes to an t402Client\n */\nexport interface EvmClientConfig {\n /**\n * The EVM signer to use for creating payment payloads\n */\n signer: ClientEvmSigner;\n\n /**\n * Optional payment requirements selector function\n * If not provided, uses the default selector (first available option)\n */\n paymentRequirementsSelector?: SelectPaymentRequirements;\n\n /**\n * Optional policies to apply to the client\n */\n policies?: PaymentPolicy[];\n\n /**\n * Optional specific networks to register\n * If not provided, registers wildcard support (eip155:*)\n */\n networks?: Network[];\n}\n\n/**\n * Registers EVM exact payment schemes to an t402Client instance.\n *\n * This function registers:\n * - V2: eip155:* wildcard scheme with ExactEvmScheme (or specific networks if provided)\n * - V1: All supported EVM networks with ExactEvmSchemeV1\n *\n * @param client - The t402Client instance to register schemes to\n * @param config - Configuration for EVM client registration\n * @returns The client instance for chaining\n *\n * @example\n * ```typescript\n * import { registerExactEvmScheme } from \"@t402/evm/exact/client/register\";\n * import { t402Client } from \"@t402/core/client\";\n * import { privateKeyToAccount } from \"viem/accounts\";\n *\n * const account = privateKeyToAccount(\"0x...\");\n * const client = new t402Client();\n * registerExactEvmScheme(client, { signer: account });\n * ```\n */\nexport function registerExactEvmScheme(client: t402Client, config: EvmClientConfig): t402Client {\n // Register V2 scheme\n if (config.networks && config.networks.length > 0) {\n // Register specific networks\n config.networks.forEach(network => {\n client.register(network, new ExactEvmScheme(config.signer));\n });\n } else {\n // Register wildcard for all EVM chains\n client.register(\"eip155:*\", new ExactEvmScheme(config.signer));\n }\n\n // Register all V1 networks\n NETWORKS.forEach(network => {\n client.registerV1(network as Network, new ExactEvmSchemeV1(config.signer));\n });\n\n // Apply policies if provided\n if (config.policies) {\n config.policies.forEach(policy => {\n client.registerPolicy(policy);\n });\n }\n\n return client;\n}\n"],"mappings":";;;;;;;;;;;;;AAwDO,SAAS,uBAAuB,QAAoB,QAAqC;AAE9F,MAAI,OAAO,YAAY,OAAO,SAAS,SAAS,GAAG;AAEjD,WAAO,SAAS,QAAQ,aAAW;AACjC,aAAO,SAAS,SAAS,IAAI,eAAe,OAAO,MAAM,CAAC;AAAA,IAC5D,CAAC;AAAA,EACH,OAAO;AAEL,WAAO,SAAS,YAAY,IAAI,eAAe,OAAO,MAAM,CAAC;AAAA,EAC/D;AAGA,WAAS,QAAQ,aAAW;AAC1B,WAAO,WAAW,SAAoB,IAAI,iBAAiB,OAAO,MAAM,CAAC;AAAA,EAC3E,CAAC;AAGD,MAAI,OAAO,UAAU;AACnB,WAAO,SAAS,QAAQ,YAAU;AAChC,aAAO,eAAe,MAAM;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}