sf-x402x 0.6.6-patch.3

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 (92) 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 +811 -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 +1827 -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 +2207 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/middleware-BcYD9vqv.d.ts +93 -0
  14. package/dist/cjs/middleware-DagbDyNz.d.ts +93 -0
  15. package/dist/cjs/network--RYzQfBg.d.ts +11 -0
  16. package/dist/cjs/network-BGTUrx-D.d.ts +11 -0
  17. package/dist/cjs/paywall/index.d.ts +30 -0
  18. package/dist/cjs/paywall/index.js +141 -0
  19. package/dist/cjs/paywall/index.js.map +1 -0
  20. package/dist/cjs/rpc-De2c0oKR.d.ts +35 -0
  21. package/dist/cjs/rpc-TVntAK7V.d.ts +35 -0
  22. package/dist/cjs/schemes/index.d.ts +298 -0
  23. package/dist/cjs/schemes/index.js +2121 -0
  24. package/dist/cjs/schemes/index.js.map +1 -0
  25. package/dist/cjs/shared/evm/index.d.ts +55 -0
  26. package/dist/cjs/shared/evm/index.js +910 -0
  27. package/dist/cjs/shared/evm/index.js.map +1 -0
  28. package/dist/cjs/shared/index.d.ts +181 -0
  29. package/dist/cjs/shared/index.js +667 -0
  30. package/dist/cjs/shared/index.js.map +1 -0
  31. package/dist/cjs/types/index.d.ts +1214 -0
  32. package/dist/cjs/types/index.js +1408 -0
  33. package/dist/cjs/types/index.js.map +1 -0
  34. package/dist/cjs/verify/index.d.ts +7 -0
  35. package/dist/cjs/verify/index.js +427 -0
  36. package/dist/cjs/verify/index.js.map +1 -0
  37. package/dist/cjs/wallet-BReyvAJs.d.ts +151 -0
  38. package/dist/cjs/wallet-BTqCm9Zp.d.ts +27 -0
  39. package/dist/cjs/wallet-DndoTf1_.d.ts +48 -0
  40. package/dist/cjs/x402Specs-7OH8g851.d.ts +1306 -0
  41. package/dist/cjs/x402Specs-CFX8TBKR.d.ts +1306 -0
  42. package/dist/esm/chunk-5UPAZUO6.mjs +90 -0
  43. package/dist/esm/chunk-5UPAZUO6.mjs.map +1 -0
  44. package/dist/esm/chunk-7CWEZNFA.mjs +812 -0
  45. package/dist/esm/chunk-7CWEZNFA.mjs.map +1 -0
  46. package/dist/esm/chunk-MWDK4RSB.mjs +620 -0
  47. package/dist/esm/chunk-MWDK4RSB.mjs.map +1 -0
  48. package/dist/esm/chunk-R2NI44QI.mjs +327 -0
  49. package/dist/esm/chunk-R2NI44QI.mjs.map +1 -0
  50. package/dist/esm/chunk-WS2W5DJT.mjs +58 -0
  51. package/dist/esm/chunk-WS2W5DJT.mjs.map +1 -0
  52. package/dist/esm/chunk-XZA3USQF.mjs +784 -0
  53. package/dist/esm/chunk-XZA3USQF.mjs.map +1 -0
  54. package/dist/esm/chunk-Z3INM7T4.mjs +106 -0
  55. package/dist/esm/chunk-Z3INM7T4.mjs.map +1 -0
  56. package/dist/esm/client/index.d.mts +64 -0
  57. package/dist/esm/client/index.mjs +17 -0
  58. package/dist/esm/client/index.mjs.map +1 -0
  59. package/dist/esm/config-CFBSAuxW.d.mts +10 -0
  60. package/dist/esm/config-Dfuvno71.d.mts +19 -0
  61. package/dist/esm/facilitator/index.d.mts +42 -0
  62. package/dist/esm/facilitator/index.mjs +14 -0
  63. package/dist/esm/facilitator/index.mjs.map +1 -0
  64. package/dist/esm/index.d.mts +16 -0
  65. package/dist/esm/index.mjs +28 -0
  66. package/dist/esm/index.mjs.map +1 -0
  67. package/dist/esm/middleware-CAOp-bv4.d.mts +93 -0
  68. package/dist/esm/network--RYzQfBg.d.mts +11 -0
  69. package/dist/esm/paywall/index.d.mts +30 -0
  70. package/dist/esm/paywall/index.mjs +46 -0
  71. package/dist/esm/paywall/index.mjs.map +1 -0
  72. package/dist/esm/rpc-22QIQWIu.d.mts +35 -0
  73. package/dist/esm/schemes/index.d.mts +298 -0
  74. package/dist/esm/schemes/index.mjs +16 -0
  75. package/dist/esm/schemes/index.mjs.map +1 -0
  76. package/dist/esm/shared/evm/index.d.mts +55 -0
  77. package/dist/esm/shared/evm/index.mjs +18 -0
  78. package/dist/esm/shared/evm/index.mjs.map +1 -0
  79. package/dist/esm/shared/index.d.mts +181 -0
  80. package/dist/esm/shared/index.mjs +31 -0
  81. package/dist/esm/shared/index.mjs.map +1 -0
  82. package/dist/esm/types/index.d.mts +1214 -0
  83. package/dist/esm/types/index.mjs +81 -0
  84. package/dist/esm/types/index.mjs.map +1 -0
  85. package/dist/esm/verify/index.d.mts +7 -0
  86. package/dist/esm/verify/index.mjs +105 -0
  87. package/dist/esm/verify/index.mjs.map +1 -0
  88. package/dist/esm/wallet-BReyvAJs.d.mts +151 -0
  89. package/dist/esm/wallet-BTqCm9Zp.d.mts +27 -0
  90. package/dist/esm/wallet-C9iHSQbd.d.mts +48 -0
  91. package/dist/esm/x402Specs-7OH8g851.d.mts +1306 -0
  92. package/package.json +152 -0
@@ -0,0 +1,784 @@
1
+ import {
2
+ getUsdcChainConfigForChain,
3
+ usdcABI
4
+ } from "./chunk-7CWEZNFA.mjs";
5
+ import {
6
+ __export,
7
+ config
8
+ } from "./chunk-5UPAZUO6.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
+ "x-layer",
30
+ "x-layer-testnet",
31
+ "sepolia",
32
+ "filecoin-calibration"
33
+ ]);
34
+ var SupportedEVMNetworks = [
35
+ "base-sepolia",
36
+ "base",
37
+ "avalanche-fuji",
38
+ "avalanche",
39
+ "iotex",
40
+ "sei",
41
+ "sei-testnet",
42
+ "polygon",
43
+ "polygon-amoy",
44
+ "peaq",
45
+ "x-layer",
46
+ "x-layer-testnet",
47
+ "sepolia",
48
+ "filecoin-calibration"
49
+ ];
50
+ var EvmNetworkToChainId = /* @__PURE__ */ new Map([
51
+ ["base-sepolia", 84532],
52
+ ["base", 8453],
53
+ ["avalanche-fuji", 43113],
54
+ ["avalanche", 43114],
55
+ ["iotex", 4689],
56
+ ["sei", 1329],
57
+ ["sei-testnet", 1328],
58
+ ["polygon", 137],
59
+ ["polygon-amoy", 80002],
60
+ ["peaq", 3338],
61
+ ["x-layer", 196],
62
+ ["x-layer-testnet", 1952],
63
+ ["sepolia", 11155111],
64
+ ["filecoin-calibration", 314159]
65
+ ]);
66
+ var SupportedSVMNetworks = ["solana-devnet", "solana"];
67
+ var SvmNetworkToChainId = /* @__PURE__ */ new Map([
68
+ ["solana-devnet", 103],
69
+ ["solana", 101]
70
+ ]);
71
+ var ChainIdToNetwork = Object.fromEntries(
72
+ [...SupportedEVMNetworks, ...SupportedSVMNetworks].map((network) => [
73
+ EvmNetworkToChainId.get(network),
74
+ network
75
+ ])
76
+ );
77
+
78
+ // src/types/shared/evm/wallet.ts
79
+ import { createPublicClient, createWalletClient, http, publicActions, defineChain } from "viem";
80
+ import {
81
+ baseSepolia,
82
+ avalancheFuji,
83
+ base,
84
+ sei,
85
+ seiTestnet,
86
+ polygon,
87
+ polygonAmoy,
88
+ peaq,
89
+ avalanche,
90
+ iotexTestnet,
91
+ iotex
92
+ } from "viem/chains";
93
+ import { privateKeyToAccount } from "viem/accounts";
94
+ var xLayer = defineChain({
95
+ id: 196,
96
+ name: "X Layer",
97
+ nativeCurrency: { name: "OKB", symbol: "OKB", decimals: 18 },
98
+ rpcUrls: {
99
+ default: { http: ["https://rpc.xlayer.tech"] }
100
+ },
101
+ blockExplorers: {
102
+ default: { name: "OKLink", url: "https://www.oklink.com/xlayer" }
103
+ }
104
+ });
105
+ var xLayerTestnet = defineChain({
106
+ id: 1952,
107
+ name: "X Layer Testnet",
108
+ nativeCurrency: { name: "OKB", symbol: "OKB", decimals: 18 },
109
+ rpcUrls: {
110
+ default: { http: ["https://testrpc.xlayer.tech/terigon"] }
111
+ },
112
+ blockExplorers: {
113
+ default: { name: "OKLink", url: "https://www.oklink.com/xlayer-test" }
114
+ },
115
+ testnet: true
116
+ });
117
+ function createConnectedClient(network) {
118
+ const chain = getChainFromNetwork(network);
119
+ return createPublicClient({
120
+ chain,
121
+ transport: http()
122
+ }).extend(publicActions);
123
+ }
124
+ function createClientSepolia() {
125
+ return createConnectedClient("base-sepolia");
126
+ }
127
+ function createClientAvalancheFuji() {
128
+ return createConnectedClient("avalanche-fuji");
129
+ }
130
+ function createSigner(network, privateKey) {
131
+ const chain = getChainFromNetwork(network);
132
+ return createWalletClient({
133
+ chain,
134
+ transport: http(),
135
+ account: privateKeyToAccount(privateKey)
136
+ }).extend(publicActions);
137
+ }
138
+ function createSignerSepolia(privateKey) {
139
+ return createSigner("base-sepolia", privateKey);
140
+ }
141
+ function createSignerAvalancheFuji(privateKey) {
142
+ return createSigner("avalanche-fuji", privateKey);
143
+ }
144
+ function isSignerWallet(wallet) {
145
+ return typeof wallet === "object" && wallet !== null && "chain" in wallet && "transport" in wallet;
146
+ }
147
+ function isAccount(wallet) {
148
+ const w = wallet;
149
+ return typeof wallet === "object" && wallet !== null && typeof w.address === "string" && typeof w.type === "string" && // Check for essential signing capabilities
150
+ typeof w.sign === "function" && typeof w.signMessage === "function" && typeof w.signTypedData === "function" && // Check for transaction signing (required by LocalAccount)
151
+ typeof w.signTransaction === "function";
152
+ }
153
+ function getChainFromNetwork(network) {
154
+ if (!network) {
155
+ throw new Error("NETWORK environment variable is not set");
156
+ }
157
+ switch (network) {
158
+ case "base":
159
+ return base;
160
+ case "base-sepolia":
161
+ return baseSepolia;
162
+ case "avalanche":
163
+ return avalanche;
164
+ case "avalanche-fuji":
165
+ return avalancheFuji;
166
+ case "sei":
167
+ return sei;
168
+ case "sei-testnet":
169
+ return seiTestnet;
170
+ case "polygon":
171
+ return polygon;
172
+ case "polygon-amoy":
173
+ return polygonAmoy;
174
+ case "peaq":
175
+ return peaq;
176
+ case "iotex":
177
+ return iotex;
178
+ case "iotex-testnet":
179
+ return iotexTestnet;
180
+ case "x-layer":
181
+ return xLayer;
182
+ case "x-layer-testnet":
183
+ return xLayerTestnet;
184
+ default:
185
+ throw new Error(`Unsupported network: ${network}`);
186
+ }
187
+ }
188
+
189
+ // src/shared/svm/wallet.ts
190
+ import {
191
+ createKeyPairSignerFromBytes,
192
+ createKeyPairSignerFromPrivateKeyBytes,
193
+ isKeyPairSigner
194
+ } from "@solana/kit";
195
+ import { base58 } from "@scure/base";
196
+
197
+ // src/shared/svm/rpc.ts
198
+ import {
199
+ createSolanaRpc,
200
+ devnet,
201
+ mainnet,
202
+ createSolanaRpcSubscriptions
203
+ } from "@solana/kit";
204
+ var DEVNET_RPC_URL = "https://api.devnet.solana.com";
205
+ var MAINNET_RPC_URL = "https://api.mainnet-beta.solana.com";
206
+ var DEVNET_WS_URL = "wss://api.devnet.solana.com";
207
+ var MAINNET_WS_URL = "wss://api.mainnet-beta.solana.com";
208
+ function createDevnetRpcClient(url) {
209
+ return createSolanaRpc(
210
+ url ? devnet(url) : devnet(DEVNET_RPC_URL)
211
+ );
212
+ }
213
+ function createMainnetRpcClient(url) {
214
+ return createSolanaRpc(
215
+ url ? mainnet(url) : mainnet(MAINNET_RPC_URL)
216
+ );
217
+ }
218
+ function getRpcClient(network, url) {
219
+ if (network === "solana-devnet") {
220
+ return createDevnetRpcClient(url);
221
+ } else if (network === "solana") {
222
+ return createMainnetRpcClient(url);
223
+ } else {
224
+ throw new Error("Invalid network");
225
+ }
226
+ }
227
+ function getRpcSubscriptions(network, url) {
228
+ if (network === "solana-devnet") {
229
+ return createSolanaRpcSubscriptions(devnet(url ? httpToWs(url) : DEVNET_WS_URL));
230
+ } else if (network === "solana") {
231
+ return createSolanaRpcSubscriptions(mainnet(url ? httpToWs(url) : MAINNET_WS_URL));
232
+ } else {
233
+ throw new Error("Invalid network");
234
+ }
235
+ }
236
+ function httpToWs(url) {
237
+ if (url.startsWith("http")) {
238
+ return url.replace("http", "ws");
239
+ }
240
+ return url;
241
+ }
242
+
243
+ // src/shared/svm/wallet.ts
244
+ function createSvmConnectedClient(network) {
245
+ if (!SupportedSVMNetworks.find((n) => n === network)) {
246
+ throw new Error(`Unsupported SVM network: ${network}`);
247
+ }
248
+ return getRpcClient(network);
249
+ }
250
+ async function createSignerFromBase58(privateKey) {
251
+ const bytes = base58.decode(privateKey);
252
+ if (bytes.length === 64) {
253
+ return await createKeyPairSignerFromBytes(bytes);
254
+ }
255
+ if (bytes.length === 32) {
256
+ return await createKeyPairSignerFromPrivateKeyBytes(bytes);
257
+ }
258
+ throw new Error(`Unexpected key length: ${bytes.length}. Expected 32 or 64 bytes.`);
259
+ }
260
+ function isSignerWallet2(wallet) {
261
+ return isKeyPairSigner(wallet);
262
+ }
263
+
264
+ // src/types/shared/wallet.ts
265
+ function createConnectedClient2(network) {
266
+ if (SupportedEVMNetworks.find((n) => n === network)) {
267
+ return createConnectedClient(network);
268
+ }
269
+ if (SupportedSVMNetworks.find((n) => n === network)) {
270
+ return createSvmConnectedClient(network);
271
+ }
272
+ throw new Error(`Unsupported network: ${network}`);
273
+ }
274
+ function createSigner2(network, privateKey) {
275
+ if (SupportedEVMNetworks.find((n) => n === network)) {
276
+ return Promise.resolve(createSigner(network, privateKey));
277
+ }
278
+ if (SupportedSVMNetworks.find((n) => n === network)) {
279
+ return createSignerFromBase58(privateKey);
280
+ }
281
+ throw new Error(`Unsupported network: ${network}`);
282
+ }
283
+ function isEvmSignerWallet(wallet) {
284
+ return isSignerWallet(wallet) || isAccount(wallet);
285
+ }
286
+ function isSvmSignerWallet(wallet) {
287
+ return isSignerWallet2(wallet);
288
+ }
289
+ function isMultiNetworkSigner(wallet) {
290
+ return "evm" in wallet && "svm" in wallet;
291
+ }
292
+
293
+ // src/types/shared/evm/index.ts
294
+ var evm_exports = {};
295
+ __export(evm_exports, {
296
+ authorizationPrimaryType: () => authorizationPrimaryType,
297
+ authorizationTypes: () => authorizationTypes,
298
+ config: () => config,
299
+ createClientAvalancheFuji: () => createClientAvalancheFuji,
300
+ createClientSepolia: () => createClientSepolia,
301
+ createConnectedClient: () => createConnectedClient,
302
+ createSigner: () => createSigner,
303
+ createSignerAvalancheFuji: () => createSignerAvalancheFuji,
304
+ createSignerSepolia: () => createSignerSepolia,
305
+ getChainFromNetwork: () => getChainFromNetwork,
306
+ isAccount: () => isAccount,
307
+ isSignerWallet: () => isSignerWallet,
308
+ usdcABI: () => usdcABI,
309
+ xLayer: () => xLayer,
310
+ xLayerTestnet: () => xLayerTestnet
311
+ });
312
+
313
+ // src/types/shared/evm/eip3009.ts
314
+ var authorizationTypes = {
315
+ TransferWithAuthorization: [
316
+ { name: "from", type: "address" },
317
+ { name: "to", type: "address" },
318
+ { name: "value", type: "uint256" },
319
+ { name: "validAfter", type: "uint256" },
320
+ { name: "validBefore", type: "uint256" },
321
+ { name: "nonce", type: "bytes32" }
322
+ ]
323
+ };
324
+ var authorizationPrimaryType = "TransferWithAuthorization";
325
+
326
+ // src/types/shared/svm/index.ts
327
+ var svm_exports = {};
328
+ __export(svm_exports, {
329
+ SvmAddressRegex: () => SvmAddressRegex
330
+ });
331
+
332
+ // src/types/shared/svm/regex.ts
333
+ var SvmAddressRegex = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
334
+
335
+ // src/types/verify/x402Specs.ts
336
+ import { z as z3 } from "zod";
337
+
338
+ // src/shared/base64.ts
339
+ var Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;
340
+ function safeBase64Encode(data) {
341
+ if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") {
342
+ return globalThis.btoa(data);
343
+ }
344
+ return Buffer.from(data).toString("base64");
345
+ }
346
+ function safeBase64Decode(data) {
347
+ if (typeof globalThis !== "undefined" && typeof globalThis.atob === "function") {
348
+ return globalThis.atob(data);
349
+ }
350
+ return Buffer.from(data, "base64").toString("utf-8");
351
+ }
352
+
353
+ // src/types/verify/x402Specs.ts
354
+ var EvmMaxAtomicUnits = 18;
355
+ var EvmAddressRegex = /^0x[0-9a-fA-F]{40}$/;
356
+ var MixedAddressRegex = /^0x[a-fA-F0-9]{40}|[A-Za-z0-9][A-Za-z0-9-]{0,34}[A-Za-z0-9]$/;
357
+ var HexEncoded64ByteRegex = /^0x[0-9a-fA-F]{64}$/;
358
+ var EvmSignatureRegex = /^0x[0-9a-fA-F]+$/;
359
+ var schemes = ["exact"];
360
+ var x402Versions = [1];
361
+ var ErrorReasons = [
362
+ "insufficient_funds",
363
+ "invalid_exact_evm_payload_authorization_valid_after",
364
+ "invalid_exact_evm_payload_authorization_valid_before",
365
+ "invalid_exact_evm_payload_authorization_value",
366
+ "invalid_exact_evm_payload_signature",
367
+ "invalid_exact_evm_payload_recipient_mismatch",
368
+ "invalid_exact_svm_payload_transaction",
369
+ "invalid_exact_svm_payload_transaction_amount_mismatch",
370
+ "invalid_exact_svm_payload_transaction_create_ata_instruction",
371
+ "invalid_exact_svm_payload_transaction_create_ata_instruction_incorrect_payee",
372
+ "invalid_exact_svm_payload_transaction_create_ata_instruction_incorrect_asset",
373
+ "invalid_exact_svm_payload_transaction_instructions",
374
+ "invalid_exact_svm_payload_transaction_instructions_length",
375
+ "invalid_exact_svm_payload_transaction_instructions_compute_limit_instruction",
376
+ "invalid_exact_svm_payload_transaction_instructions_compute_price_instruction",
377
+ "invalid_exact_svm_payload_transaction_instructions_compute_price_instruction_too_high",
378
+ "invalid_exact_svm_payload_transaction_instruction_not_spl_token_transfer_checked",
379
+ "invalid_exact_svm_payload_transaction_instruction_not_token_2022_transfer_checked",
380
+ "invalid_exact_svm_payload_transaction_not_a_transfer_instruction",
381
+ "invalid_exact_svm_payload_transaction_receiver_ata_not_found",
382
+ "invalid_exact_svm_payload_transaction_sender_ata_not_found",
383
+ "invalid_exact_svm_payload_transaction_simulation_failed",
384
+ "invalid_exact_svm_payload_transaction_transfer_to_incorrect_ata",
385
+ "invalid_network",
386
+ "invalid_payload",
387
+ "invalid_payment_requirements",
388
+ "invalid_scheme",
389
+ "invalid_payment",
390
+ "payment_expired",
391
+ "unsupported_scheme",
392
+ "invalid_x402_version",
393
+ "invalid_transaction_state",
394
+ "invalid_x402_version",
395
+ "settle_exact_svm_block_height_exceeded",
396
+ "settle_exact_svm_transaction_confirmation_timed_out",
397
+ "unsupported_scheme",
398
+ "unexpected_settle_error",
399
+ "unexpected_verify_error"
400
+ ];
401
+ var isInteger = (value) => Number.isInteger(Number(value)) && Number(value) >= 0;
402
+ var hasMaxLength = (maxLength) => (value) => value.length <= maxLength;
403
+ var EvmOrSvmAddress = z3.string().regex(EvmAddressRegex).or(z3.string().regex(SvmAddressRegex));
404
+ var mixedAddressOrSvmAddress = z3.string().regex(MixedAddressRegex).or(z3.string().regex(SvmAddressRegex));
405
+ var PaymentRequirementsSchema = z3.object({
406
+ scheme: z3.enum(schemes),
407
+ network: NetworkSchema,
408
+ maxAmountRequired: z3.string().refine(isInteger),
409
+ resource: z3.string().url(),
410
+ description: z3.string(),
411
+ mimeType: z3.string(),
412
+ outputSchema: z3.record(z3.any()).optional(),
413
+ payTo: EvmOrSvmAddress,
414
+ maxTimeoutSeconds: z3.number().int(),
415
+ asset: mixedAddressOrSvmAddress,
416
+ extra: z3.record(z3.any()).optional()
417
+ });
418
+ var ExactEvmPayloadAuthorizationSchema = z3.object({
419
+ from: z3.string().regex(EvmAddressRegex),
420
+ to: z3.string().regex(EvmAddressRegex),
421
+ value: z3.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
422
+ validAfter: z3.string().refine(isInteger),
423
+ validBefore: z3.string().refine(isInteger),
424
+ nonce: z3.string().regex(HexEncoded64ByteRegex)
425
+ });
426
+ var ExactEvmPayloadSchema = z3.object({
427
+ signature: z3.string().regex(EvmSignatureRegex),
428
+ authorization: ExactEvmPayloadAuthorizationSchema
429
+ });
430
+ var ExactSvmPayloadSchema = z3.object({
431
+ transaction: z3.string().regex(Base64EncodedRegex)
432
+ });
433
+ var PaymentPayloadSchema = z3.object({
434
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
435
+ scheme: z3.enum(schemes),
436
+ network: NetworkSchema,
437
+ payload: z3.union([ExactEvmPayloadSchema, ExactSvmPayloadSchema]),
438
+ paymentRequirements: PaymentRequirementsSchema.optional()
439
+ });
440
+ var x402ResponseSchema = z3.object({
441
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
442
+ error: z3.enum(ErrorReasons).optional(),
443
+ accepts: z3.array(PaymentRequirementsSchema).optional(),
444
+ payer: z3.string().regex(MixedAddressRegex).optional()
445
+ });
446
+ var HTTPVerbsSchema = z3.enum(["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"]);
447
+ var HTTPRequestStructureSchema = z3.object({
448
+ type: z3.literal("http"),
449
+ method: HTTPVerbsSchema,
450
+ queryParams: z3.record(z3.string(), z3.string()).optional(),
451
+ bodyType: z3.enum(["json", "form-data", "multipart-form-data", "text", "binary"]).optional(),
452
+ bodyFields: z3.record(z3.string(), z3.any()).optional(),
453
+ headerFields: z3.record(z3.string(), z3.any()).optional()
454
+ });
455
+ var RequestStructureSchema = z3.discriminatedUnion("type", [
456
+ HTTPRequestStructureSchema
457
+ // MCPRequestStructureSchema,
458
+ // OpenAPIRequestStructureSchema,
459
+ ]);
460
+ var DiscoveredResourceSchema = z3.object({
461
+ resource: z3.string(),
462
+ type: z3.enum(["http"]),
463
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
464
+ accepts: z3.array(PaymentRequirementsSchema),
465
+ lastUpdated: z3.date(),
466
+ metadata: z3.record(z3.any()).optional()
467
+ });
468
+ var SettleRequestSchema = z3.object({
469
+ paymentPayload: PaymentPayloadSchema,
470
+ paymentRequirements: PaymentRequirementsSchema
471
+ });
472
+ var VerifyRequestSchema = z3.object({
473
+ paymentPayload: PaymentPayloadSchema,
474
+ paymentRequirements: PaymentRequirementsSchema
475
+ });
476
+ var VerifyResponseSchema = z3.object({
477
+ isValid: z3.boolean(),
478
+ invalidReason: z3.enum(ErrorReasons).optional(),
479
+ payer: EvmOrSvmAddress.optional()
480
+ });
481
+ var SettleResponseSchema = z3.object({
482
+ success: z3.boolean(),
483
+ errorReason: z3.enum(ErrorReasons).optional(),
484
+ payer: EvmOrSvmAddress.optional(),
485
+ transaction: z3.string().regex(MixedAddressRegex),
486
+ network: NetworkSchema
487
+ });
488
+ var ListDiscoveryResourcesRequestSchema = z3.object({
489
+ type: z3.string().optional(),
490
+ limit: z3.number().optional(),
491
+ offset: z3.number().optional()
492
+ });
493
+ var ListDiscoveryResourcesResponseSchema = z3.object({
494
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
495
+ items: z3.array(DiscoveredResourceSchema),
496
+ pagination: z3.object({
497
+ limit: z3.number(),
498
+ offset: z3.number(),
499
+ total: z3.number()
500
+ })
501
+ });
502
+ var SupportedPaymentKindSchema = z3.object({
503
+ x402Version: z3.number().refine((val) => x402Versions.includes(val)),
504
+ scheme: z3.enum(schemes),
505
+ network: NetworkSchema,
506
+ extra: z3.record(z3.any()).optional()
507
+ });
508
+ var SupportedPaymentKindsResponseSchema = z3.object({
509
+ kinds: z3.array(SupportedPaymentKindSchema)
510
+ });
511
+
512
+ // src/types/verify/facilitator.ts
513
+ import { z as z4 } from "zod";
514
+
515
+ // src/shared/json.ts
516
+ function toJsonSafe(data) {
517
+ if (typeof data !== "object") {
518
+ throw new Error("Data is not an object");
519
+ }
520
+ function convert(value) {
521
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
522
+ return Object.fromEntries(Object.entries(value).map(([key, val]) => [key, convert(val)]));
523
+ }
524
+ if (Array.isArray(value)) {
525
+ return value.map(convert);
526
+ }
527
+ if (typeof value === "bigint") {
528
+ return value.toString();
529
+ }
530
+ return value;
531
+ }
532
+ return convert(data);
533
+ }
534
+
535
+ // src/shared/network.ts
536
+ function getNetworkId(network) {
537
+ if (EvmNetworkToChainId.has(network)) {
538
+ return EvmNetworkToChainId.get(network);
539
+ }
540
+ if (SvmNetworkToChainId.has(network)) {
541
+ return SvmNetworkToChainId.get(network);
542
+ }
543
+ throw new Error(`Unsupported network: ${network}`);
544
+ }
545
+
546
+ // src/shared/middleware.ts
547
+ function computeRoutePatterns(routes) {
548
+ const normalizedRoutes = Object.fromEntries(
549
+ Object.entries(routes).map(([pattern, value]) => [
550
+ pattern,
551
+ typeof value === "string" || typeof value === "number" ? { price: value, network: "base-sepolia" } : value
552
+ ])
553
+ );
554
+ return Object.entries(normalizedRoutes).map(([pattern, routeConfig]) => {
555
+ const [verb, path] = pattern.includes(" ") ? pattern.split(/\s+/) : ["*", pattern];
556
+ if (!path) {
557
+ throw new Error(`Invalid route pattern: ${pattern}`);
558
+ }
559
+ return {
560
+ verb: verb.toUpperCase(),
561
+ pattern: new RegExp(
562
+ `^${path.replace(/[$()+.?^{|}]/g, "\\$&").replace(/\*/g, ".*?").replace(/\[([^\]]+)\]/g, "[^/]+").replace(/\//g, "\\/")}$`,
563
+ "i"
564
+ ),
565
+ config: routeConfig
566
+ };
567
+ });
568
+ }
569
+ function findMatchingRoute(routePatterns, path, method) {
570
+ let normalizedPath;
571
+ try {
572
+ const pathWithoutQuery = path.split(/[?#]/)[0];
573
+ const decodedPath = decodeURIComponent(pathWithoutQuery);
574
+ normalizedPath = decodedPath.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/(.+?)\/+$/, "$1");
575
+ } catch {
576
+ return void 0;
577
+ }
578
+ const matchingRoutes = routePatterns.filter(({ pattern, verb }) => {
579
+ const matchesPath = pattern.test(normalizedPath);
580
+ const upperMethod = method.toUpperCase();
581
+ const matchesVerb = verb === "*" || upperMethod === verb;
582
+ const result = matchesPath && matchesVerb;
583
+ return result;
584
+ });
585
+ if (matchingRoutes.length === 0) {
586
+ return void 0;
587
+ }
588
+ const matchingRoute = matchingRoutes.reduce(
589
+ (a, b) => b.pattern.source.length > a.pattern.source.length ? b : a
590
+ );
591
+ return matchingRoute;
592
+ }
593
+ function getDefaultAsset(network) {
594
+ const chainId = getNetworkId(network);
595
+ const usdc = getUsdcChainConfigForChain(chainId);
596
+ if (!usdc) {
597
+ throw new Error(`Unable to get default asset on ${network}`);
598
+ }
599
+ return {
600
+ address: usdc.usdcAddress,
601
+ decimals: 6,
602
+ eip712: {
603
+ name: usdc.usdcName,
604
+ version: "2"
605
+ }
606
+ };
607
+ }
608
+ function processPriceToAtomicAmount(price, network) {
609
+ let maxAmountRequired;
610
+ let asset;
611
+ if (typeof price === "string" || typeof price === "number") {
612
+ const parsedAmount = moneySchema.safeParse(price);
613
+ if (!parsedAmount.success) {
614
+ return {
615
+ error: `Invalid price (price: ${price}). Must be in the form "$3.10", 0.10, "0.001", ${parsedAmount.error}`
616
+ };
617
+ }
618
+ const parsedUsdAmount = parsedAmount.data;
619
+ asset = getDefaultAsset(network);
620
+ maxAmountRequired = (parsedUsdAmount * 10 ** asset.decimals).toString();
621
+ } else {
622
+ maxAmountRequired = price.amount;
623
+ asset = price.asset;
624
+ }
625
+ return {
626
+ maxAmountRequired,
627
+ asset
628
+ };
629
+ }
630
+ function findMatchingPaymentRequirements(paymentRequirements, payment) {
631
+ return paymentRequirements.find(
632
+ (value) => value.scheme === payment.scheme && value.network === payment.network
633
+ );
634
+ }
635
+ function decodeXPaymentResponse(header) {
636
+ const decoded = safeBase64Decode(header);
637
+ return JSON.parse(decoded);
638
+ }
639
+
640
+ // src/shared/svm/index.ts
641
+ var svm_exports2 = {};
642
+ __export(svm_exports2, {
643
+ createDevnetRpcClient: () => createDevnetRpcClient,
644
+ createMainnetRpcClient: () => createMainnetRpcClient,
645
+ createSignerFromBase58: () => createSignerFromBase58,
646
+ createSvmConnectedClient: () => createSvmConnectedClient,
647
+ decodeTransactionFromPayload: () => decodeTransactionFromPayload,
648
+ getRpcClient: () => getRpcClient,
649
+ getRpcSubscriptions: () => getRpcSubscriptions,
650
+ getTokenPayerFromTransaction: () => getTokenPayerFromTransaction,
651
+ isSignerWallet: () => isSignerWallet2,
652
+ signAndSimulateTransaction: () => signAndSimulateTransaction
653
+ });
654
+
655
+ // src/shared/svm/transaction.ts
656
+ import {
657
+ getBase64EncodedWireTransaction,
658
+ getBase64Encoder,
659
+ getTransactionDecoder,
660
+ getCompiledTransactionMessageDecoder,
661
+ partiallySignTransaction
662
+ } from "@solana/kit";
663
+ import { TOKEN_PROGRAM_ADDRESS } from "@solana-program/token";
664
+ import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
665
+ function decodeTransactionFromPayload(svmPayload) {
666
+ try {
667
+ const base64Encoder = getBase64Encoder();
668
+ const transactionBytes = base64Encoder.encode(svmPayload.transaction);
669
+ const transactionDecoder = getTransactionDecoder();
670
+ return transactionDecoder.decode(transactionBytes);
671
+ } catch (error) {
672
+ console.error("error", error);
673
+ throw new Error("invalid_exact_svm_payload_transaction");
674
+ }
675
+ }
676
+ function getTokenPayerFromTransaction(transaction) {
677
+ const compiled = getCompiledTransactionMessageDecoder().decode(
678
+ transaction.messageBytes
679
+ );
680
+ const staticAccounts = compiled.staticAccounts ?? [];
681
+ const instructions = compiled.instructions ?? [];
682
+ for (const ix of instructions) {
683
+ const programIndex = ix.programAddressIndex;
684
+ const programAddress = staticAccounts[programIndex].toString();
685
+ if (programAddress === TOKEN_PROGRAM_ADDRESS.toString() || programAddress === TOKEN_2022_PROGRAM_ADDRESS.toString()) {
686
+ const accountIndices = ix.accountIndices ?? [];
687
+ if (accountIndices.length >= 4) {
688
+ const ownerIndex = accountIndices[3];
689
+ const ownerAddress = staticAccounts[ownerIndex].toString();
690
+ if (ownerAddress) return ownerAddress;
691
+ }
692
+ }
693
+ }
694
+ return "";
695
+ }
696
+ async function signAndSimulateTransaction(signer, transaction, rpc) {
697
+ const signedTransaction = await partiallySignTransaction([signer.keyPair], transaction);
698
+ const base64EncodedTransaction = getBase64EncodedWireTransaction(signedTransaction);
699
+ const simulateTxConfig = {
700
+ sigVerify: true,
701
+ replaceRecentBlockhash: false,
702
+ commitment: "confirmed",
703
+ encoding: "base64",
704
+ accounts: void 0,
705
+ innerInstructions: void 0,
706
+ minContextSlot: void 0
707
+ };
708
+ const simulateResult = await rpc.simulateTransaction(base64EncodedTransaction, simulateTxConfig).send();
709
+ return simulateResult;
710
+ }
711
+
712
+ // src/types/verify/facilitator.ts
713
+ var facilitatorRequestSchema = z4.object({
714
+ paymentHeader: z4.string(),
715
+ paymentRequirements: PaymentRequirementsSchema
716
+ });
717
+ function settleResponseHeader(response) {
718
+ return safeBase64Encode(JSON.stringify(response));
719
+ }
720
+ function settleResponseFromHeader(header) {
721
+ const decoded = safeBase64Decode(header);
722
+ return JSON.parse(decoded);
723
+ }
724
+
725
+ export {
726
+ authorizationTypes,
727
+ isSignerWallet,
728
+ isAccount,
729
+ evm_exports,
730
+ toJsonSafe,
731
+ Base64EncodedRegex,
732
+ safeBase64Encode,
733
+ safeBase64Decode,
734
+ moneySchema,
735
+ NetworkSchema,
736
+ SupportedEVMNetworks,
737
+ EvmNetworkToChainId,
738
+ SupportedSVMNetworks,
739
+ SvmNetworkToChainId,
740
+ ChainIdToNetwork,
741
+ getRpcClient,
742
+ getRpcSubscriptions,
743
+ createConnectedClient2 as createConnectedClient,
744
+ createSigner2 as createSigner,
745
+ isEvmSignerWallet,
746
+ isSvmSignerWallet,
747
+ isMultiNetworkSigner,
748
+ svm_exports,
749
+ getNetworkId,
750
+ schemes,
751
+ x402Versions,
752
+ ErrorReasons,
753
+ PaymentRequirementsSchema,
754
+ ExactEvmPayloadAuthorizationSchema,
755
+ ExactEvmPayloadSchema,
756
+ ExactSvmPayloadSchema,
757
+ PaymentPayloadSchema,
758
+ x402ResponseSchema,
759
+ HTTPRequestStructureSchema,
760
+ RequestStructureSchema,
761
+ DiscoveredResourceSchema,
762
+ SettleRequestSchema,
763
+ VerifyRequestSchema,
764
+ VerifyResponseSchema,
765
+ SettleResponseSchema,
766
+ ListDiscoveryResourcesRequestSchema,
767
+ ListDiscoveryResourcesResponseSchema,
768
+ SupportedPaymentKindSchema,
769
+ SupportedPaymentKindsResponseSchema,
770
+ facilitatorRequestSchema,
771
+ settleResponseHeader,
772
+ settleResponseFromHeader,
773
+ computeRoutePatterns,
774
+ findMatchingRoute,
775
+ getDefaultAsset,
776
+ processPriceToAtomicAmount,
777
+ findMatchingPaymentRequirements,
778
+ decodeXPaymentResponse,
779
+ decodeTransactionFromPayload,
780
+ getTokenPayerFromTransaction,
781
+ signAndSimulateTransaction,
782
+ svm_exports2
783
+ };
784
+ //# sourceMappingURL=chunk-XZA3USQF.mjs.map