@wtflabs/x402 0.0.1-beta.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 (96) hide show
  1. package/README.md +60 -0
  2. package/dist/cjs/client/index.d.ts +64 -0
  3. package/dist/cjs/client/index.js +832 -0
  4. package/dist/cjs/client/index.js.map +1 -0
  5. package/dist/cjs/config-CFBSAuxW.d.ts +10 -0
  6. package/dist/cjs/config-Dfuvno71.d.ts +19 -0
  7. package/dist/cjs/facilitator/index.d.ts +42 -0
  8. package/dist/cjs/facilitator/index.js +2574 -0
  9. package/dist/cjs/facilitator/index.js.map +1 -0
  10. package/dist/cjs/index.d.ts +16 -0
  11. package/dist/cjs/index.js +2974 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/middleware-6_1ApcJn.d.ts +93 -0
  14. package/dist/cjs/middleware-B_ewwsQp.d.ts +93 -0
  15. package/dist/cjs/middleware-Brgsx32F.d.ts +93 -0
  16. package/dist/cjs/middleware-BwfW7mAs.d.ts +93 -0
  17. package/dist/cjs/middleware-CQb61c1k.d.ts +93 -0
  18. package/dist/cjs/middleware-DB9lqy9f.d.ts +93 -0
  19. package/dist/cjs/middleware-DcHctwQV.d.ts +93 -0
  20. package/dist/cjs/middleware-De0jD3Bp.d.ts +93 -0
  21. package/dist/cjs/middleware-HoFOmpgv.d.ts +93 -0
  22. package/dist/cjs/middleware-Y8AiAfYw.d.ts +93 -0
  23. package/dist/cjs/middleware-pnres9YM.d.ts +93 -0
  24. package/dist/cjs/network-FrFmmiyj.d.ts +11 -0
  25. package/dist/cjs/network-RtNddYQk.d.ts +11 -0
  26. package/dist/cjs/paywall/index.d.ts +30 -0
  27. package/dist/cjs/paywall/index.js +131 -0
  28. package/dist/cjs/paywall/index.js.map +1 -0
  29. package/dist/cjs/rpc-BMvnNNHd.d.ts +35 -0
  30. package/dist/cjs/rpc-Ca8eHCWz.d.ts +35 -0
  31. package/dist/cjs/schemes/index.d.ts +533 -0
  32. package/dist/cjs/schemes/index.js +3144 -0
  33. package/dist/cjs/schemes/index.js.map +1 -0
  34. package/dist/cjs/shared/evm/index.d.ts +71 -0
  35. package/dist/cjs/shared/evm/index.js +947 -0
  36. package/dist/cjs/shared/evm/index.js.map +1 -0
  37. package/dist/cjs/shared/index.d.ts +182 -0
  38. package/dist/cjs/shared/index.js +674 -0
  39. package/dist/cjs/shared/index.js.map +1 -0
  40. package/dist/cjs/types/index.d.ts +1515 -0
  41. package/dist/cjs/types/index.js +1645 -0
  42. package/dist/cjs/types/index.js.map +1 -0
  43. package/dist/cjs/verify/index.d.ts +7 -0
  44. package/dist/cjs/verify/index.js +438 -0
  45. package/dist/cjs/verify/index.js.map +1 -0
  46. package/dist/cjs/wallet-BRWfOM5D.d.ts +153 -0
  47. package/dist/cjs/wallet-BTqCm9Zp.d.ts +27 -0
  48. package/dist/cjs/wallet-BYRAGtOB.d.ts +153 -0
  49. package/dist/cjs/wallet-BmEtlgEf.d.ts +48 -0
  50. package/dist/cjs/wallet-CNOAmyZ6.d.ts +48 -0
  51. package/dist/cjs/wallet-CQ0Fe_M5.d.ts +88 -0
  52. package/dist/cjs/wallet-D1SoxFTw.d.ts +48 -0
  53. package/dist/cjs/wallet-SJ-hbjm9.d.ts +153 -0
  54. package/dist/cjs/wallet-SJKJpUgQ.d.ts +167 -0
  55. package/dist/cjs/wallet-ecnda4Aj.d.ts +48 -0
  56. package/dist/cjs/wallet-gP8Qoi-c.d.ts +74 -0
  57. package/dist/cjs/x402Specs-B7InXo2L.d.ts +1065 -0
  58. package/dist/cjs/x402Specs-BLH3j34O.d.ts +1696 -0
  59. package/dist/cjs/x402Specs-C7LipAZg.d.ts +1715 -0
  60. package/dist/cjs/x402Specs-CYq5tSY1.d.ts +1745 -0
  61. package/dist/cjs/x402Specs-CeajqonG.d.ts +1696 -0
  62. package/dist/cjs/x402Specs-qMujgEV5.d.ts +1715 -0
  63. package/dist/cjs/x402Specs-qUBCpcuz.d.ts +1715 -0
  64. package/dist/esm/chunk-34YNR4LY.mjs +106 -0
  65. package/dist/esm/chunk-34YNR4LY.mjs.map +1 -0
  66. package/dist/esm/chunk-57UEJN5U.mjs +1416 -0
  67. package/dist/esm/chunk-57UEJN5U.mjs.map +1 -0
  68. package/dist/esm/chunk-5LTKIVOA.mjs +858 -0
  69. package/dist/esm/chunk-5LTKIVOA.mjs.map +1 -0
  70. package/dist/esm/chunk-AQQR4PXH.mjs +80 -0
  71. package/dist/esm/chunk-AQQR4PXH.mjs.map +1 -0
  72. package/dist/esm/chunk-LGXWNXCO.mjs +76 -0
  73. package/dist/esm/chunk-LGXWNXCO.mjs.map +1 -0
  74. package/dist/esm/chunk-RX2JKK4O.mjs +349 -0
  75. package/dist/esm/chunk-RX2JKK4O.mjs.map +1 -0
  76. package/dist/esm/chunk-UCBE7FDY.mjs +1041 -0
  77. package/dist/esm/chunk-UCBE7FDY.mjs.map +1 -0
  78. package/dist/esm/client/index.mjs +17 -0
  79. package/dist/esm/client/index.mjs.map +1 -0
  80. package/dist/esm/facilitator/index.mjs +14 -0
  81. package/dist/esm/facilitator/index.mjs.map +1 -0
  82. package/dist/esm/index.mjs +28 -0
  83. package/dist/esm/index.mjs.map +1 -0
  84. package/dist/esm/paywall/index.mjs +46 -0
  85. package/dist/esm/paywall/index.mjs.map +1 -0
  86. package/dist/esm/schemes/index.mjs +16 -0
  87. package/dist/esm/schemes/index.mjs.map +1 -0
  88. package/dist/esm/shared/evm/index.mjs +20 -0
  89. package/dist/esm/shared/evm/index.mjs.map +1 -0
  90. package/dist/esm/shared/index.mjs +31 -0
  91. package/dist/esm/shared/index.mjs.map +1 -0
  92. package/dist/esm/types/index.mjs +87 -0
  93. package/dist/esm/types/index.mjs.map +1 -0
  94. package/dist/esm/verify/index.mjs +105 -0
  95. package/dist/esm/verify/index.mjs.map +1 -0
  96. package/package.json +148 -0
@@ -0,0 +1,1041 @@
1
+ import {
2
+ getUsdcChainConfigForChain,
3
+ usdcABI
4
+ } from "./chunk-5LTKIVOA.mjs";
5
+ import {
6
+ __export,
7
+ config
8
+ } from "./chunk-AQQR4PXH.mjs";
9
+
10
+ // src/types/shared/money.ts
11
+ import { z } from "zod";
12
+ var moneySchema = z.union([z.string().transform((x) => x.replace(/[^0-9.-]+/g, "")), z.number()]).pipe(z.coerce.number().min(1e-4).max(999999999));
13
+
14
+ // src/types/shared/network.ts
15
+ import { z as z2 } from "zod";
16
+ var NetworkSchema = z2.enum([
17
+ "base-sepolia",
18
+ "base",
19
+ "avalanche-fuji",
20
+ "avalanche",
21
+ "iotex",
22
+ "solana-devnet",
23
+ "solana",
24
+ "sei",
25
+ "sei-testnet",
26
+ "polygon",
27
+ "polygon-amoy",
28
+ "peaq",
29
+ "bsc",
30
+ "bsc-testnet"
31
+ ]);
32
+ var SupportedEVMNetworks = [
33
+ "base-sepolia",
34
+ "base",
35
+ "avalanche-fuji",
36
+ "avalanche",
37
+ "iotex",
38
+ "sei",
39
+ "sei-testnet",
40
+ "polygon",
41
+ "polygon-amoy",
42
+ "peaq",
43
+ "bsc",
44
+ "bsc-testnet"
45
+ ];
46
+ var EvmNetworkToChainId = /* @__PURE__ */ new Map([
47
+ ["base-sepolia", 84532],
48
+ ["base", 8453],
49
+ ["avalanche-fuji", 43113],
50
+ ["avalanche", 43114],
51
+ ["iotex", 4689],
52
+ ["sei", 1329],
53
+ ["sei-testnet", 1328],
54
+ ["polygon", 137],
55
+ ["polygon-amoy", 80002],
56
+ ["peaq", 3338],
57
+ ["bsc", 56],
58
+ ["bsc-testnet", 97]
59
+ ]);
60
+ var SupportedSVMNetworks = ["solana-devnet", "solana"];
61
+ var SvmNetworkToChainId = /* @__PURE__ */ new Map([
62
+ ["solana-devnet", 103],
63
+ ["solana", 101]
64
+ ]);
65
+ var ChainIdToNetwork = Object.fromEntries(
66
+ [...SupportedEVMNetworks, ...SupportedSVMNetworks].map((network) => [
67
+ EvmNetworkToChainId.get(network),
68
+ network
69
+ ])
70
+ );
71
+
72
+ // src/types/shared/evm/wallet.ts
73
+ import { createPublicClient, createWalletClient, http, publicActions, defineChain } from "viem";
74
+ import {
75
+ baseSepolia,
76
+ avalancheFuji,
77
+ base,
78
+ sei,
79
+ seiTestnet,
80
+ polygon,
81
+ polygonAmoy,
82
+ peaq,
83
+ avalanche,
84
+ iotexTestnet,
85
+ iotex,
86
+ bsc,
87
+ bscTestnet
88
+ } from "viem/chains";
89
+ import { privateKeyToAccount } from "viem/accounts";
90
+ function createConnectedClient(networkOrConfig, customRpcUrl) {
91
+ const chain = typeof networkOrConfig === "string" ? withChain(networkOrConfig, customRpcUrl) : withChain(networkOrConfig);
92
+ return createPublicClient({
93
+ chain,
94
+ transport: http(customRpcUrl || chain.rpcUrls.default.http[0])
95
+ }).extend(publicActions);
96
+ }
97
+ function createClientSepolia() {
98
+ return createConnectedClient("base-sepolia");
99
+ }
100
+ function createClientAvalancheFuji() {
101
+ return createConnectedClient("avalanche-fuji");
102
+ }
103
+ function createSigner(networkOrConfig, privateKey, customRpcUrl) {
104
+ const chain = typeof networkOrConfig === "string" ? withChain(networkOrConfig, customRpcUrl) : withChain(networkOrConfig);
105
+ return createWalletClient({
106
+ chain,
107
+ transport: http(customRpcUrl || chain.rpcUrls.default.http[0]),
108
+ account: privateKeyToAccount(privateKey)
109
+ }).extend(publicActions);
110
+ }
111
+ function createSignerSepolia(privateKey) {
112
+ return createSigner("base-sepolia", privateKey);
113
+ }
114
+ function createSignerAvalancheFuji(privateKey) {
115
+ return createSigner("avalanche-fuji", privateKey);
116
+ }
117
+ function isSignerWallet(wallet) {
118
+ return typeof wallet === "object" && wallet !== null && "chain" in wallet && "transport" in wallet;
119
+ }
120
+ function isAccount(wallet) {
121
+ const w = wallet;
122
+ return typeof wallet === "object" && wallet !== null && typeof w.address === "string" && typeof w.type === "string" && // Check for essential signing capabilities
123
+ typeof w.sign === "function" && typeof w.signMessage === "function" && typeof w.signTypedData === "function" && // Check for transaction signing (required by LocalAccount)
124
+ typeof w.signTransaction === "function";
125
+ }
126
+ function getChainFromNetwork(network) {
127
+ if (!network) {
128
+ throw new Error("NETWORK environment variable is not set");
129
+ }
130
+ switch (network) {
131
+ case "base":
132
+ return base;
133
+ case "base-sepolia":
134
+ return baseSepolia;
135
+ case "avalanche":
136
+ return avalanche;
137
+ case "avalanche-fuji":
138
+ return avalancheFuji;
139
+ case "sei":
140
+ return sei;
141
+ case "sei-testnet":
142
+ return seiTestnet;
143
+ case "polygon":
144
+ return polygon;
145
+ case "polygon-amoy":
146
+ return polygonAmoy;
147
+ case "peaq":
148
+ return peaq;
149
+ case "iotex":
150
+ return iotex;
151
+ case "iotex-testnet":
152
+ return iotexTestnet;
153
+ case "bsc":
154
+ return bsc;
155
+ case "bsc-testnet":
156
+ return bscTestnet;
157
+ default:
158
+ throw new Error(`Unsupported network: ${network}`);
159
+ }
160
+ }
161
+ function withChain(config2, customRpcUrl) {
162
+ if (typeof config2 === "object" && "id" in config2 && "name" in config2) {
163
+ if (!customRpcUrl) {
164
+ return config2;
165
+ }
166
+ return {
167
+ ...config2,
168
+ rpcUrls: {
169
+ default: { http: [customRpcUrl] },
170
+ public: { http: [customRpcUrl] }
171
+ }
172
+ };
173
+ }
174
+ if (typeof config2 === "string") {
175
+ const chain = getChainFromNetwork(config2);
176
+ if (!customRpcUrl) {
177
+ return chain;
178
+ }
179
+ return {
180
+ ...chain,
181
+ rpcUrls: {
182
+ default: { http: [customRpcUrl] },
183
+ public: { http: [customRpcUrl] }
184
+ }
185
+ };
186
+ }
187
+ return defineChain({
188
+ id: config2.chainId,
189
+ name: config2.name,
190
+ nativeCurrency: config2.nativeCurrency || {
191
+ name: "Ether",
192
+ symbol: "ETH",
193
+ decimals: 18
194
+ },
195
+ rpcUrls: {
196
+ default: { http: [config2.rpcUrl] },
197
+ public: { http: [config2.rpcUrl] }
198
+ },
199
+ blockExplorers: config2.blockExplorer ? {
200
+ default: {
201
+ name: config2.blockExplorer.name,
202
+ url: config2.blockExplorer.url
203
+ }
204
+ } : void 0
205
+ });
206
+ }
207
+
208
+ // src/shared/svm/wallet.ts
209
+ import {
210
+ createKeyPairSignerFromBytes,
211
+ createKeyPairSignerFromPrivateKeyBytes,
212
+ isKeyPairSigner
213
+ } from "@solana/kit";
214
+ import { base58 } from "@scure/base";
215
+
216
+ // src/shared/svm/rpc.ts
217
+ import {
218
+ createSolanaRpc,
219
+ devnet,
220
+ mainnet,
221
+ createSolanaRpcSubscriptions
222
+ } from "@solana/kit";
223
+ var DEVNET_RPC_URL = "https://api.devnet.solana.com";
224
+ var MAINNET_RPC_URL = "https://api.mainnet-beta.solana.com";
225
+ var DEVNET_WS_URL = "wss://api.devnet.solana.com";
226
+ var MAINNET_WS_URL = "wss://api.mainnet-beta.solana.com";
227
+ function createDevnetRpcClient(url) {
228
+ return createSolanaRpc(
229
+ url ? devnet(url) : devnet(DEVNET_RPC_URL)
230
+ );
231
+ }
232
+ function createMainnetRpcClient(url) {
233
+ return createSolanaRpc(
234
+ url ? mainnet(url) : mainnet(MAINNET_RPC_URL)
235
+ );
236
+ }
237
+ function getRpcClient(network, url) {
238
+ if (network === "solana-devnet") {
239
+ return createDevnetRpcClient(url);
240
+ } else if (network === "solana") {
241
+ return createMainnetRpcClient(url);
242
+ } else {
243
+ throw new Error("Invalid network");
244
+ }
245
+ }
246
+ function getRpcSubscriptions(network, url) {
247
+ if (network === "solana-devnet") {
248
+ return createSolanaRpcSubscriptions(devnet(url ? httpToWs(url) : DEVNET_WS_URL));
249
+ } else if (network === "solana") {
250
+ return createSolanaRpcSubscriptions(mainnet(url ? httpToWs(url) : MAINNET_WS_URL));
251
+ } else {
252
+ throw new Error("Invalid network");
253
+ }
254
+ }
255
+ function httpToWs(url) {
256
+ if (url.startsWith("http")) {
257
+ return url.replace("http", "ws");
258
+ }
259
+ return url;
260
+ }
261
+
262
+ // src/shared/svm/wallet.ts
263
+ function createSvmConnectedClient(network) {
264
+ if (!SupportedSVMNetworks.find((n) => n === network)) {
265
+ throw new Error(`Unsupported SVM network: ${network}`);
266
+ }
267
+ return getRpcClient(network);
268
+ }
269
+ async function createSignerFromBase58(privateKey) {
270
+ const bytes = base58.decode(privateKey);
271
+ if (bytes.length === 64) {
272
+ return await createKeyPairSignerFromBytes(bytes);
273
+ }
274
+ if (bytes.length === 32) {
275
+ return await createKeyPairSignerFromPrivateKeyBytes(bytes);
276
+ }
277
+ throw new Error(`Unexpected key length: ${bytes.length}. Expected 32 or 64 bytes.`);
278
+ }
279
+ function isSignerWallet2(wallet) {
280
+ return isKeyPairSigner(wallet);
281
+ }
282
+
283
+ // src/types/shared/wallet.ts
284
+ function createConnectedClient2(networkOrConfig, customRpcUrl) {
285
+ if (typeof networkOrConfig === "string") {
286
+ if (SupportedEVMNetworks.find((n) => n === networkOrConfig)) {
287
+ return createConnectedClient(networkOrConfig, customRpcUrl);
288
+ }
289
+ if (SupportedSVMNetworks.find((n) => n === networkOrConfig)) {
290
+ return createSvmConnectedClient(networkOrConfig);
291
+ }
292
+ throw new Error(`Unsupported network: ${networkOrConfig}`);
293
+ }
294
+ return createConnectedClient(networkOrConfig, customRpcUrl);
295
+ }
296
+ function createSigner2(networkOrConfig, privateKey, customRpcUrl) {
297
+ if (typeof networkOrConfig === "string") {
298
+ if (SupportedEVMNetworks.find((n) => n === networkOrConfig)) {
299
+ return Promise.resolve(createSigner(networkOrConfig, privateKey, customRpcUrl));
300
+ }
301
+ if (SupportedSVMNetworks.find((n) => n === networkOrConfig)) {
302
+ return createSignerFromBase58(privateKey);
303
+ }
304
+ throw new Error(`Unsupported network: ${networkOrConfig}`);
305
+ }
306
+ return Promise.resolve(createSigner(networkOrConfig, privateKey, customRpcUrl));
307
+ }
308
+ function isEvmSignerWallet(wallet) {
309
+ return isSignerWallet(wallet) || isAccount(wallet);
310
+ }
311
+ function isSvmSignerWallet(wallet) {
312
+ return isSignerWallet2(wallet);
313
+ }
314
+ function isMultiNetworkSigner(wallet) {
315
+ return "evm" in wallet && "svm" in wallet;
316
+ }
317
+
318
+ // src/types/shared/evm/index.ts
319
+ var evm_exports = {};
320
+ __export(evm_exports, {
321
+ PERMIT2_ADDRESS: () => PERMIT2_ADDRESS,
322
+ authorizationPrimaryType: () => authorizationPrimaryType,
323
+ authorizationTypes: () => authorizationTypes,
324
+ config: () => config,
325
+ createClientAvalancheFuji: () => createClientAvalancheFuji,
326
+ createClientSepolia: () => createClientSepolia,
327
+ createConnectedClient: () => createConnectedClient,
328
+ createSigner: () => createSigner,
329
+ createSignerAvalancheFuji: () => createSignerAvalancheFuji,
330
+ createSignerSepolia: () => createSignerSepolia,
331
+ erc20PermitABI: () => erc20PermitABI,
332
+ getChainFromNetwork: () => getChainFromNetwork,
333
+ isAccount: () => isAccount,
334
+ isSignerWallet: () => isSignerWallet,
335
+ permit2ABI: () => permit2ABI,
336
+ permit2PrimaryType: () => permit2PrimaryType,
337
+ permit2Types: () => permit2Types,
338
+ permitPrimaryType: () => permitPrimaryType,
339
+ permitTypes: () => permitTypes,
340
+ usdcABI: () => usdcABI,
341
+ withChain: () => withChain
342
+ });
343
+
344
+ // src/types/shared/evm/eip3009.ts
345
+ var authorizationTypes = {
346
+ TransferWithAuthorization: [
347
+ { name: "from", type: "address" },
348
+ { name: "to", type: "address" },
349
+ { name: "value", type: "uint256" },
350
+ { name: "validAfter", type: "uint256" },
351
+ { name: "validBefore", type: "uint256" },
352
+ { name: "nonce", type: "bytes32" }
353
+ ]
354
+ };
355
+ var authorizationPrimaryType = "TransferWithAuthorization";
356
+
357
+ // src/types/shared/evm/eip2612.ts
358
+ var permitTypes = {
359
+ Permit: [
360
+ { name: "owner", type: "address" },
361
+ { name: "spender", type: "address" },
362
+ { name: "value", type: "uint256" },
363
+ { name: "nonce", type: "uint256" },
364
+ { name: "deadline", type: "uint256" }
365
+ ]
366
+ };
367
+ var permitPrimaryType = "Permit";
368
+ var erc20PermitABI = [
369
+ {
370
+ inputs: [
371
+ { internalType: "address", name: "owner", type: "address" },
372
+ { internalType: "address", name: "spender", type: "address" },
373
+ { internalType: "uint256", name: "value", type: "uint256" },
374
+ { internalType: "uint256", name: "deadline", type: "uint256" },
375
+ { internalType: "uint8", name: "v", type: "uint8" },
376
+ { internalType: "bytes32", name: "r", type: "bytes32" },
377
+ { internalType: "bytes32", name: "s", type: "bytes32" }
378
+ ],
379
+ name: "permit",
380
+ outputs: [],
381
+ stateMutability: "nonpayable",
382
+ type: "function"
383
+ },
384
+ {
385
+ inputs: [{ internalType: "address", name: "owner", type: "address" }],
386
+ name: "nonces",
387
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
388
+ stateMutability: "view",
389
+ type: "function"
390
+ },
391
+ {
392
+ inputs: [],
393
+ name: "name",
394
+ outputs: [{ internalType: "string", name: "", type: "string" }],
395
+ stateMutability: "view",
396
+ type: "function"
397
+ },
398
+ {
399
+ inputs: [],
400
+ name: "DOMAIN_SEPARATOR",
401
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
402
+ stateMutability: "view",
403
+ type: "function"
404
+ },
405
+ {
406
+ inputs: [{ internalType: "address", name: "account", type: "address" }],
407
+ name: "balanceOf",
408
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
409
+ stateMutability: "view",
410
+ type: "function"
411
+ },
412
+ {
413
+ inputs: [
414
+ { internalType: "address", name: "from", type: "address" },
415
+ { internalType: "address", name: "to", type: "address" },
416
+ { internalType: "uint256", name: "amount", type: "uint256" }
417
+ ],
418
+ name: "transferFrom",
419
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
420
+ stateMutability: "nonpayable",
421
+ type: "function"
422
+ },
423
+ {
424
+ inputs: [
425
+ { internalType: "address", name: "owner", type: "address" },
426
+ { internalType: "address", name: "spender", type: "address" }
427
+ ],
428
+ name: "allowance",
429
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
430
+ stateMutability: "view",
431
+ type: "function"
432
+ },
433
+ {
434
+ inputs: [],
435
+ name: "version",
436
+ outputs: [{ internalType: "string", name: "", type: "string" }],
437
+ stateMutability: "view",
438
+ type: "function"
439
+ }
440
+ ];
441
+
442
+ // src/types/shared/evm/permit2.ts
443
+ var PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
444
+ var permit2Types = {
445
+ PermitTransferFrom: [
446
+ { name: "permitted", type: "TokenPermissions" },
447
+ { name: "spender", type: "address" },
448
+ { name: "nonce", type: "uint256" },
449
+ { name: "deadline", type: "uint256" }
450
+ ],
451
+ TokenPermissions: [
452
+ { name: "token", type: "address" },
453
+ { name: "amount", type: "uint256" }
454
+ ]
455
+ };
456
+ var permit2PrimaryType = "PermitTransferFrom";
457
+ var permit2ABI = [
458
+ {
459
+ inputs: [
460
+ {
461
+ components: [
462
+ {
463
+ components: [
464
+ { internalType: "address", name: "token", type: "address" },
465
+ { internalType: "uint256", name: "amount", type: "uint256" }
466
+ ],
467
+ internalType: "struct ISignatureTransfer.TokenPermissions",
468
+ name: "permitted",
469
+ type: "tuple"
470
+ },
471
+ { internalType: "uint256", name: "nonce", type: "uint256" },
472
+ { internalType: "uint256", name: "deadline", type: "uint256" }
473
+ ],
474
+ internalType: "struct ISignatureTransfer.PermitTransferFrom",
475
+ name: "permit",
476
+ type: "tuple"
477
+ },
478
+ {
479
+ components: [
480
+ { internalType: "address", name: "to", type: "address" },
481
+ { internalType: "uint256", name: "requestedAmount", type: "uint256" }
482
+ ],
483
+ internalType: "struct ISignatureTransfer.SignatureTransferDetails",
484
+ name: "transferDetails",
485
+ type: "tuple"
486
+ },
487
+ { internalType: "address", name: "owner", type: "address" },
488
+ { internalType: "bytes", name: "signature", type: "bytes" }
489
+ ],
490
+ name: "permitTransferFrom",
491
+ outputs: [],
492
+ stateMutability: "nonpayable",
493
+ type: "function"
494
+ },
495
+ {
496
+ inputs: [
497
+ { internalType: "address", name: "owner", type: "address" },
498
+ { internalType: "address", name: "token", type: "address" },
499
+ { internalType: "address", name: "spender", type: "address" }
500
+ ],
501
+ name: "allowance",
502
+ outputs: [
503
+ { internalType: "uint160", name: "amount", type: "uint160" },
504
+ { internalType: "uint48", name: "expiration", type: "uint48" },
505
+ { internalType: "uint48", name: "nonce", type: "uint48" }
506
+ ],
507
+ stateMutability: "view",
508
+ type: "function"
509
+ },
510
+ {
511
+ inputs: [],
512
+ name: "DOMAIN_SEPARATOR",
513
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
514
+ stateMutability: "view",
515
+ type: "function"
516
+ },
517
+ {
518
+ inputs: [
519
+ { internalType: "address", name: "owner", type: "address" },
520
+ { internalType: "uint256", name: "wordPos", type: "uint256" }
521
+ ],
522
+ name: "nonceBitmap",
523
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
524
+ stateMutability: "view",
525
+ type: "function"
526
+ }
527
+ ];
528
+
529
+ // src/types/shared/svm/index.ts
530
+ var svm_exports = {};
531
+ __export(svm_exports, {
532
+ SvmAddressRegex: () => SvmAddressRegex
533
+ });
534
+
535
+ // src/types/shared/svm/regex.ts
536
+ var SvmAddressRegex = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
537
+
538
+ // src/types/verify/x402Specs.ts
539
+ import { z as z3 } from "zod";
540
+
541
+ // src/shared/base64.ts
542
+ var Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;
543
+ function safeBase64Encode(data) {
544
+ if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") {
545
+ return globalThis.btoa(data);
546
+ }
547
+ return Buffer.from(data).toString("base64");
548
+ }
549
+ function safeBase64Decode(data) {
550
+ if (typeof globalThis !== "undefined" && typeof globalThis.atob === "function") {
551
+ return globalThis.atob(data);
552
+ }
553
+ return Buffer.from(data, "base64").toString("utf-8");
554
+ }
555
+
556
+ // src/types/verify/x402Specs.ts
557
+ var EvmMaxAtomicUnits = 40;
558
+ var EvmAddressRegex = /^0x[0-9a-fA-F]{40}$/;
559
+ var MixedAddressRegex = /^0x[a-fA-F0-9]{40}|[A-Za-z0-9][A-Za-z0-9-]{0,34}[A-Za-z0-9]$/;
560
+ var HexEncoded64ByteRegex = /^0x[0-9a-fA-F]{64}$/;
561
+ var EvmSignatureRegex = /^0x[0-9a-fA-F]+$/;
562
+ var schemes = ["exact"];
563
+ var x402Versions = [1];
564
+ var ErrorReasons = [
565
+ "insufficient_funds",
566
+ "invalid_exact_evm_payload_authorization_valid_after",
567
+ "invalid_exact_evm_payload_authorization_valid_before",
568
+ "invalid_exact_evm_payload_authorization_value",
569
+ "invalid_exact_evm_payload_signature",
570
+ "invalid_exact_evm_payload_recipient_mismatch",
571
+ "invalid_exact_svm_payload_transaction",
572
+ "invalid_exact_svm_payload_transaction_amount_mismatch",
573
+ "invalid_exact_svm_payload_transaction_create_ata_instruction",
574
+ "invalid_exact_svm_payload_transaction_create_ata_instruction_incorrect_payee",
575
+ "invalid_exact_svm_payload_transaction_create_ata_instruction_incorrect_asset",
576
+ "invalid_exact_svm_payload_transaction_instructions",
577
+ "invalid_exact_svm_payload_transaction_instructions_length",
578
+ "invalid_exact_svm_payload_transaction_instructions_compute_limit_instruction",
579
+ "invalid_exact_svm_payload_transaction_instructions_compute_price_instruction",
580
+ "invalid_exact_svm_payload_transaction_instructions_compute_price_instruction_too_high",
581
+ "invalid_exact_svm_payload_transaction_instruction_not_spl_token_transfer_checked",
582
+ "invalid_exact_svm_payload_transaction_instruction_not_token_2022_transfer_checked",
583
+ "invalid_exact_svm_payload_transaction_not_a_transfer_instruction",
584
+ "invalid_exact_svm_payload_transaction_receiver_ata_not_found",
585
+ "invalid_exact_svm_payload_transaction_sender_ata_not_found",
586
+ "invalid_exact_svm_payload_transaction_simulation_failed",
587
+ "invalid_exact_svm_payload_transaction_transfer_to_incorrect_ata",
588
+ "invalid_network",
589
+ "invalid_payload",
590
+ "invalid_payment_requirements",
591
+ "invalid_scheme",
592
+ "invalid_payment",
593
+ "payment_expired",
594
+ "unsupported_scheme",
595
+ "invalid_x402_version",
596
+ "invalid_transaction_state",
597
+ "settle_exact_svm_block_height_exceeded",
598
+ "settle_exact_svm_transaction_confirmation_timed_out",
599
+ "unexpected_settle_error",
600
+ "unexpected_verify_error",
601
+ // New error reasons for Permit and Permit2
602
+ "unsupported_authorization_type",
603
+ "invalid_authorization_type",
604
+ "invalid_permit_signature",
605
+ "invalid_permit2_signature",
606
+ "permit_expired",
607
+ "permit2_expired",
608
+ "permit2_not_approved",
609
+ "invalid_token_address",
610
+ "invalid_spender_address",
611
+ "token_mismatch",
612
+ "insufficient_payment_amount",
613
+ "transaction_failed",
614
+ "settlement_failed"
615
+ ];
616
+ var isInteger = (value) => Number.isInteger(Number(value)) && Number(value) >= 0;
617
+ var hasMaxLength = (maxLength) => (value) => value.length <= maxLength;
618
+ var EvmOrSvmAddress = z3.string().regex(EvmAddressRegex).or(z3.string().regex(SvmAddressRegex));
619
+ var mixedAddressOrSvmAddress = z3.string().regex(MixedAddressRegex).or(z3.string().regex(SvmAddressRegex));
620
+ var PaymentRequirementsSchema = z3.object({
621
+ scheme: z3.enum(schemes),
622
+ network: NetworkSchema,
623
+ maxAmountRequired: z3.string().refine(isInteger),
624
+ resource: z3.string().url(),
625
+ description: z3.string(),
626
+ mimeType: z3.string(),
627
+ outputSchema: z3.record(z3.any()).optional(),
628
+ payTo: EvmOrSvmAddress,
629
+ maxTimeoutSeconds: z3.number().int(),
630
+ asset: mixedAddressOrSvmAddress,
631
+ paymentType: z3.enum(["eip3009", "permit", "permit2"]).optional(),
632
+ extra: z3.record(z3.any()).optional()
633
+ });
634
+ var ExactEvmPayloadAuthorizationSchema = z3.object({
635
+ from: z3.string().regex(EvmAddressRegex),
636
+ to: z3.string().regex(EvmAddressRegex),
637
+ value: z3.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
638
+ validAfter: z3.string().refine(isInteger),
639
+ validBefore: z3.string().refine(isInteger),
640
+ nonce: z3.string().regex(HexEncoded64ByteRegex)
641
+ });
642
+ var PermitEvmPayloadAuthorizationSchema = z3.object({
643
+ owner: z3.string().regex(EvmAddressRegex),
644
+ spender: z3.string().regex(EvmAddressRegex),
645
+ value: z3.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
646
+ deadline: z3.string().refine(isInteger),
647
+ nonce: z3.string().refine(isInteger)
648
+ });
649
+ var Permit2EvmPayloadAuthorizationSchema = z3.object({
650
+ owner: z3.string().regex(EvmAddressRegex),
651
+ spender: z3.string().regex(EvmAddressRegex),
652
+ token: z3.string().regex(EvmAddressRegex),
653
+ amount: z3.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
654
+ deadline: z3.string().refine(isInteger),
655
+ nonce: z3.string().refine(isInteger)
656
+ });
657
+ var ExactEvmPayloadSchema = z3.discriminatedUnion("authorizationType", [
658
+ z3.object({
659
+ authorizationType: z3.literal("eip3009"),
660
+ signature: z3.string().regex(EvmSignatureRegex),
661
+ authorization: ExactEvmPayloadAuthorizationSchema
662
+ }),
663
+ z3.object({
664
+ authorizationType: z3.literal("permit"),
665
+ signature: z3.string().regex(EvmSignatureRegex),
666
+ authorization: PermitEvmPayloadAuthorizationSchema
667
+ }),
668
+ z3.object({
669
+ authorizationType: z3.literal("permit2"),
670
+ signature: z3.string().regex(EvmSignatureRegex),
671
+ authorization: Permit2EvmPayloadAuthorizationSchema
672
+ })
673
+ ]);
674
+ var ExactSvmPayloadSchema = z3.object({
675
+ transaction: z3.string().regex(Base64EncodedRegex)
676
+ });
677
+ var PaymentPayloadSchema = z3.object({
678
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
679
+ scheme: z3.enum(schemes),
680
+ network: NetworkSchema,
681
+ payload: z3.union([ExactEvmPayloadSchema, ExactSvmPayloadSchema])
682
+ });
683
+ var x402ResponseSchema = z3.object({
684
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
685
+ error: z3.enum(ErrorReasons).optional(),
686
+ accepts: z3.array(PaymentRequirementsSchema).optional(),
687
+ payer: z3.string().regex(MixedAddressRegex).optional()
688
+ });
689
+ var HTTPVerbsSchema = z3.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"]);
690
+ var HTTPRequestStructureSchema = z3.object({
691
+ type: z3.literal("http"),
692
+ method: HTTPVerbsSchema,
693
+ queryParams: z3.record(z3.string(), z3.string()).optional(),
694
+ bodyType: z3.enum(["json", "form-data", "multipart-form-data", "text", "binary"]).optional(),
695
+ bodyFields: z3.record(z3.string(), z3.any()).optional(),
696
+ headerFields: z3.record(z3.string(), z3.any()).optional()
697
+ });
698
+ var RequestStructureSchema = z3.discriminatedUnion("type", [
699
+ HTTPRequestStructureSchema
700
+ // MCPRequestStructureSchema,
701
+ // OpenAPIRequestStructureSchema,
702
+ ]);
703
+ var DiscoveredResourceSchema = z3.object({
704
+ resource: z3.string(),
705
+ type: z3.enum(["http"]),
706
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
707
+ accepts: z3.array(PaymentRequirementsSchema),
708
+ lastUpdated: z3.date(),
709
+ metadata: z3.record(z3.any()).optional()
710
+ });
711
+ var SettleRequestSchema = z3.object({
712
+ paymentPayload: PaymentPayloadSchema,
713
+ paymentRequirements: PaymentRequirementsSchema
714
+ });
715
+ var VerifyRequestSchema = z3.object({
716
+ paymentPayload: PaymentPayloadSchema,
717
+ paymentRequirements: PaymentRequirementsSchema
718
+ });
719
+ var VerifyResponseSchema = z3.object({
720
+ isValid: z3.boolean(),
721
+ invalidReason: z3.enum(ErrorReasons).optional(),
722
+ payer: EvmOrSvmAddress.optional()
723
+ });
724
+ var SettleResponseSchema = z3.object({
725
+ success: z3.boolean(),
726
+ errorReason: z3.enum(ErrorReasons).optional(),
727
+ payer: EvmOrSvmAddress.optional(),
728
+ transaction: z3.string().regex(MixedAddressRegex),
729
+ network: NetworkSchema
730
+ });
731
+ var ListDiscoveryResourcesRequestSchema = z3.object({
732
+ type: z3.string().optional(),
733
+ limit: z3.number().optional(),
734
+ offset: z3.number().optional()
735
+ });
736
+ var ListDiscoveryResourcesResponseSchema = z3.object({
737
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
738
+ items: z3.array(DiscoveredResourceSchema),
739
+ pagination: z3.object({
740
+ limit: z3.number(),
741
+ offset: z3.number(),
742
+ total: z3.number()
743
+ })
744
+ });
745
+ var SupportedPaymentKindSchema = z3.object({
746
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
747
+ scheme: z3.enum(schemes),
748
+ network: NetworkSchema,
749
+ extra: z3.record(z3.any()).optional()
750
+ });
751
+ var SupportedPaymentKindsResponseSchema = z3.object({
752
+ kinds: z3.array(SupportedPaymentKindSchema)
753
+ });
754
+
755
+ // src/types/verify/facilitator.ts
756
+ import { z as z4 } from "zod";
757
+
758
+ // src/shared/json.ts
759
+ function toJsonSafe(data) {
760
+ if (typeof data !== "object") {
761
+ throw new Error("Data is not an object");
762
+ }
763
+ function convert(value) {
764
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
765
+ return Object.fromEntries(Object.entries(value).map(([key, val]) => [key, convert(val)]));
766
+ }
767
+ if (Array.isArray(value)) {
768
+ return value.map(convert);
769
+ }
770
+ if (typeof value === "bigint") {
771
+ return value.toString();
772
+ }
773
+ return value;
774
+ }
775
+ return convert(data);
776
+ }
777
+
778
+ // src/shared/network.ts
779
+ function getNetworkId(network) {
780
+ if (EvmNetworkToChainId.has(network)) {
781
+ return EvmNetworkToChainId.get(network);
782
+ }
783
+ if (SvmNetworkToChainId.has(network)) {
784
+ return SvmNetworkToChainId.get(network);
785
+ }
786
+ throw new Error(`Unsupported network: ${network}`);
787
+ }
788
+
789
+ // src/shared/middleware.ts
790
+ function computeRoutePatterns(routes) {
791
+ const normalizedRoutes = Object.fromEntries(
792
+ Object.entries(routes).map(([pattern, value]) => [
793
+ pattern,
794
+ typeof value === "string" || typeof value === "number" ? { price: value, network: "base-sepolia" } : value
795
+ ])
796
+ );
797
+ return Object.entries(normalizedRoutes).map(([pattern, routeConfig]) => {
798
+ const [verb, path] = pattern.includes(" ") ? pattern.split(/\s+/) : ["*", pattern];
799
+ if (!path) {
800
+ throw new Error(`Invalid route pattern: ${pattern}`);
801
+ }
802
+ return {
803
+ verb: verb.toUpperCase(),
804
+ pattern: new RegExp(
805
+ `^${path.replace(/[$()+.?^{|}]/g, "\\$&").replace(/\*/g, ".*?").replace(/\[([^\]]+)\]/g, "[^/]+").replace(/\//g, "\\/")}$`,
806
+ "i"
807
+ ),
808
+ config: routeConfig
809
+ };
810
+ });
811
+ }
812
+ function findMatchingRoute(routePatterns, path, method) {
813
+ let normalizedPath;
814
+ try {
815
+ const pathWithoutQuery = path.split(/[?#]/)[0];
816
+ const decodedPath = decodeURIComponent(pathWithoutQuery);
817
+ normalizedPath = decodedPath.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/(.+?)\/+$/, "$1");
818
+ } catch {
819
+ return void 0;
820
+ }
821
+ const matchingRoutes = routePatterns.filter(({ pattern, verb }) => {
822
+ const matchesPath = pattern.test(normalizedPath);
823
+ const upperMethod = method.toUpperCase();
824
+ const matchesVerb = verb === "*" || upperMethod === verb;
825
+ const result = matchesPath && matchesVerb;
826
+ return result;
827
+ });
828
+ if (matchingRoutes.length === 0) {
829
+ return void 0;
830
+ }
831
+ const matchingRoute = matchingRoutes.reduce(
832
+ (a, b) => b.pattern.source.length > a.pattern.source.length ? b : a
833
+ );
834
+ return matchingRoute;
835
+ }
836
+ function getDefaultAsset(network) {
837
+ const chainId = getNetworkId(network);
838
+ const usdc = getUsdcChainConfigForChain(chainId);
839
+ if (!usdc) {
840
+ throw new Error(`Unable to get default asset on ${network}`);
841
+ }
842
+ return {
843
+ address: usdc.usdcAddress,
844
+ decimals: 6,
845
+ eip712: {
846
+ name: usdc.usdcName,
847
+ version: "2"
848
+ }
849
+ };
850
+ }
851
+ function processPriceToAtomicAmount(price, network) {
852
+ let maxAmountRequired;
853
+ let asset;
854
+ if (typeof price === "string" || typeof price === "number") {
855
+ const parsedAmount = moneySchema.safeParse(price);
856
+ if (!parsedAmount.success) {
857
+ return {
858
+ error: `Invalid price (price: ${price}). Must be in the form "$3.10", 0.10, "0.001", ${parsedAmount.error}`
859
+ };
860
+ }
861
+ const parsedUsdAmount = parsedAmount.data;
862
+ asset = getDefaultAsset(network);
863
+ maxAmountRequired = (parsedUsdAmount * 10 ** asset.decimals).toString();
864
+ } else {
865
+ maxAmountRequired = price.amount;
866
+ asset = price.asset;
867
+ }
868
+ return {
869
+ maxAmountRequired,
870
+ asset
871
+ };
872
+ }
873
+ function findMatchingPaymentRequirements(paymentRequirements, payment) {
874
+ return paymentRequirements.find((value) => {
875
+ if (value.scheme !== payment.scheme || value.network !== payment.network) {
876
+ return false;
877
+ }
878
+ if (value.paymentType && "authorizationType" in payment.payload) {
879
+ return value.paymentType === payment.payload.authorizationType;
880
+ }
881
+ return true;
882
+ });
883
+ }
884
+ function decodeXPaymentResponse(header) {
885
+ const decoded = safeBase64Decode(header);
886
+ return JSON.parse(decoded);
887
+ }
888
+
889
+ // src/shared/svm/index.ts
890
+ var svm_exports2 = {};
891
+ __export(svm_exports2, {
892
+ createDevnetRpcClient: () => createDevnetRpcClient,
893
+ createMainnetRpcClient: () => createMainnetRpcClient,
894
+ createSignerFromBase58: () => createSignerFromBase58,
895
+ createSvmConnectedClient: () => createSvmConnectedClient,
896
+ decodeTransactionFromPayload: () => decodeTransactionFromPayload,
897
+ getRpcClient: () => getRpcClient,
898
+ getRpcSubscriptions: () => getRpcSubscriptions,
899
+ getTokenPayerFromTransaction: () => getTokenPayerFromTransaction,
900
+ isSignerWallet: () => isSignerWallet2,
901
+ signAndSimulateTransaction: () => signAndSimulateTransaction
902
+ });
903
+
904
+ // src/shared/svm/transaction.ts
905
+ import {
906
+ getBase64EncodedWireTransaction,
907
+ getBase64Encoder,
908
+ getTransactionDecoder,
909
+ getCompiledTransactionMessageDecoder,
910
+ partiallySignTransaction
911
+ } from "@solana/kit";
912
+ import { TOKEN_PROGRAM_ADDRESS } from "@solana-program/token";
913
+ import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
914
+ function decodeTransactionFromPayload(svmPayload) {
915
+ try {
916
+ const base64Encoder = getBase64Encoder();
917
+ const transactionBytes = base64Encoder.encode(svmPayload.transaction);
918
+ const transactionDecoder = getTransactionDecoder();
919
+ return transactionDecoder.decode(transactionBytes);
920
+ } catch (error) {
921
+ console.error("error", error);
922
+ throw new Error("invalid_exact_svm_payload_transaction");
923
+ }
924
+ }
925
+ function getTokenPayerFromTransaction(transaction) {
926
+ const compiled = getCompiledTransactionMessageDecoder().decode(
927
+ transaction.messageBytes
928
+ );
929
+ const staticAccounts = compiled.staticAccounts ?? [];
930
+ const instructions = compiled.instructions ?? [];
931
+ for (const ix of instructions) {
932
+ const programIndex = ix.programAddressIndex;
933
+ const programAddress = staticAccounts[programIndex].toString();
934
+ if (programAddress === TOKEN_PROGRAM_ADDRESS.toString() || programAddress === TOKEN_2022_PROGRAM_ADDRESS.toString()) {
935
+ const accountIndices = ix.accountIndices ?? [];
936
+ if (accountIndices.length >= 4) {
937
+ const ownerIndex = accountIndices[3];
938
+ const ownerAddress = staticAccounts[ownerIndex].toString();
939
+ if (ownerAddress) return ownerAddress;
940
+ }
941
+ }
942
+ }
943
+ return "";
944
+ }
945
+ async function signAndSimulateTransaction(signer, transaction, rpc) {
946
+ const signedTransaction = await partiallySignTransaction([signer.keyPair], transaction);
947
+ const base64EncodedTransaction = getBase64EncodedWireTransaction(signedTransaction);
948
+ const simulateTxConfig = {
949
+ sigVerify: true,
950
+ replaceRecentBlockhash: false,
951
+ commitment: "confirmed",
952
+ encoding: "base64",
953
+ accounts: void 0,
954
+ innerInstructions: void 0,
955
+ minContextSlot: void 0
956
+ };
957
+ const simulateResult = await rpc.simulateTransaction(base64EncodedTransaction, simulateTxConfig).send();
958
+ return simulateResult;
959
+ }
960
+
961
+ // src/types/verify/facilitator.ts
962
+ var facilitatorRequestSchema = z4.object({
963
+ paymentHeader: z4.string(),
964
+ paymentRequirements: PaymentRequirementsSchema
965
+ });
966
+ function settleResponseHeader(response) {
967
+ return safeBase64Encode(JSON.stringify(response));
968
+ }
969
+ function settleResponseFromHeader(header) {
970
+ const decoded = safeBase64Decode(header);
971
+ return JSON.parse(decoded);
972
+ }
973
+
974
+ export {
975
+ authorizationTypes,
976
+ permitTypes,
977
+ erc20PermitABI,
978
+ PERMIT2_ADDRESS,
979
+ permit2Types,
980
+ permit2ABI,
981
+ isSignerWallet,
982
+ isAccount,
983
+ withChain,
984
+ evm_exports,
985
+ toJsonSafe,
986
+ Base64EncodedRegex,
987
+ safeBase64Encode,
988
+ safeBase64Decode,
989
+ moneySchema,
990
+ NetworkSchema,
991
+ SupportedEVMNetworks,
992
+ EvmNetworkToChainId,
993
+ SupportedSVMNetworks,
994
+ SvmNetworkToChainId,
995
+ ChainIdToNetwork,
996
+ getRpcClient,
997
+ getRpcSubscriptions,
998
+ createConnectedClient2 as createConnectedClient,
999
+ createSigner2 as createSigner,
1000
+ isEvmSignerWallet,
1001
+ isSvmSignerWallet,
1002
+ isMultiNetworkSigner,
1003
+ svm_exports,
1004
+ getNetworkId,
1005
+ schemes,
1006
+ x402Versions,
1007
+ ErrorReasons,
1008
+ PaymentRequirementsSchema,
1009
+ ExactEvmPayloadAuthorizationSchema,
1010
+ PermitEvmPayloadAuthorizationSchema,
1011
+ Permit2EvmPayloadAuthorizationSchema,
1012
+ ExactEvmPayloadSchema,
1013
+ ExactSvmPayloadSchema,
1014
+ PaymentPayloadSchema,
1015
+ x402ResponseSchema,
1016
+ HTTPRequestStructureSchema,
1017
+ RequestStructureSchema,
1018
+ DiscoveredResourceSchema,
1019
+ SettleRequestSchema,
1020
+ VerifyRequestSchema,
1021
+ VerifyResponseSchema,
1022
+ SettleResponseSchema,
1023
+ ListDiscoveryResourcesRequestSchema,
1024
+ ListDiscoveryResourcesResponseSchema,
1025
+ SupportedPaymentKindSchema,
1026
+ SupportedPaymentKindsResponseSchema,
1027
+ facilitatorRequestSchema,
1028
+ settleResponseHeader,
1029
+ settleResponseFromHeader,
1030
+ computeRoutePatterns,
1031
+ findMatchingRoute,
1032
+ getDefaultAsset,
1033
+ processPriceToAtomicAmount,
1034
+ findMatchingPaymentRequirements,
1035
+ decodeXPaymentResponse,
1036
+ decodeTransactionFromPayload,
1037
+ getTokenPayerFromTransaction,
1038
+ signAndSimulateTransaction,
1039
+ svm_exports2
1040
+ };
1041
+ //# sourceMappingURL=chunk-UCBE7FDY.mjs.map