uvd-x402-sdk 2.3.0 → 2.5.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 (56) hide show
  1. package/dist/adapters/index.d.mts +7 -1
  2. package/dist/adapters/index.d.ts +7 -1
  3. package/dist/adapters/index.js +87 -3
  4. package/dist/adapters/index.js.map +1 -1
  5. package/dist/adapters/index.mjs +87 -3
  6. package/dist/adapters/index.mjs.map +1 -1
  7. package/dist/index.d.mts +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +244 -146
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +243 -147
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/providers/evm/index.d.mts +7 -2
  14. package/dist/providers/evm/index.d.ts +7 -2
  15. package/dist/providers/evm/index.js +101 -13
  16. package/dist/providers/evm/index.js.map +1 -1
  17. package/dist/providers/evm/index.mjs +101 -13
  18. package/dist/providers/evm/index.mjs.map +1 -1
  19. package/dist/providers/near/index.d.mts +6 -2
  20. package/dist/providers/near/index.d.ts +6 -2
  21. package/dist/providers/near/index.js +562 -5
  22. package/dist/providers/near/index.js.map +1 -1
  23. package/dist/providers/near/index.mjs +562 -5
  24. package/dist/providers/near/index.mjs.map +1 -1
  25. package/dist/providers/solana/index.d.mts +6 -4
  26. package/dist/providers/solana/index.d.ts +6 -4
  27. package/dist/providers/solana/index.js +33 -7
  28. package/dist/providers/solana/index.js.map +1 -1
  29. package/dist/providers/solana/index.mjs +33 -7
  30. package/dist/providers/solana/index.mjs.map +1 -1
  31. package/dist/providers/stellar/index.d.mts +6 -2
  32. package/dist/providers/stellar/index.d.ts +6 -2
  33. package/dist/providers/stellar/index.js +568 -11
  34. package/dist/providers/stellar/index.js.map +1 -1
  35. package/dist/providers/stellar/index.mjs +568 -11
  36. package/dist/providers/stellar/index.mjs.map +1 -1
  37. package/dist/react/index.js +96 -12
  38. package/dist/react/index.js.map +1 -1
  39. package/dist/react/index.mjs +96 -12
  40. package/dist/react/index.mjs.map +1 -1
  41. package/dist/utils/index.d.mts +30 -1
  42. package/dist/utils/index.d.ts +30 -1
  43. package/dist/utils/index.js +101 -0
  44. package/dist/utils/index.js.map +1 -1
  45. package/dist/utils/index.mjs +100 -1
  46. package/dist/utils/index.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/src/adapters/wagmi.ts +20 -5
  49. package/src/client/X402Client.ts +32 -15
  50. package/src/index.ts +3 -0
  51. package/src/providers/evm/index.ts +40 -15
  52. package/src/providers/near/index.ts +25 -8
  53. package/src/providers/solana/index.ts +29 -10
  54. package/src/providers/stellar/index.ts +31 -14
  55. package/src/utils/index.ts +5 -0
  56. package/src/utils/validation.ts +151 -0
@@ -36,6 +36,551 @@ var X402Error = class _X402Error extends Error {
36
36
  }
37
37
  };
38
38
 
39
+ // src/chains/index.ts
40
+ var DEFAULT_FACILITATOR_URL = "https://facilitator.ultravioletadao.xyz";
41
+ var SUPPORTED_CHAINS = {
42
+ // ============================================================================
43
+ // EVM CHAINS (10 networks)
44
+ // ============================================================================
45
+ base: {
46
+ chainId: 8453,
47
+ chainIdHex: "0x2105",
48
+ name: "base",
49
+ displayName: "Base",
50
+ networkType: "evm",
51
+ rpcUrl: "https://mainnet.base.org",
52
+ explorerUrl: "https://basescan.org",
53
+ nativeCurrency: {
54
+ name: "Ethereum",
55
+ symbol: "ETH",
56
+ decimals: 18
57
+ },
58
+ usdc: {
59
+ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
60
+ decimals: 6,
61
+ name: "USD Coin",
62
+ version: "2"
63
+ },
64
+ tokens: {
65
+ usdc: {
66
+ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
67
+ decimals: 6,
68
+ name: "USD Coin",
69
+ version: "2"
70
+ },
71
+ eurc: {
72
+ address: "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",
73
+ decimals: 6,
74
+ name: "EURC",
75
+ version: "2"
76
+ }
77
+ },
78
+ x402: {
79
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
80
+ enabled: true
81
+ }
82
+ },
83
+ avalanche: {
84
+ chainId: 43114,
85
+ chainIdHex: "0xa86a",
86
+ name: "avalanche",
87
+ displayName: "Avalanche C-Chain",
88
+ networkType: "evm",
89
+ rpcUrl: "https://avalanche-c-chain-rpc.publicnode.com",
90
+ explorerUrl: "https://snowtrace.io",
91
+ nativeCurrency: {
92
+ name: "Avalanche",
93
+ symbol: "AVAX",
94
+ decimals: 18
95
+ },
96
+ usdc: {
97
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
98
+ decimals: 6,
99
+ name: "USD Coin",
100
+ version: "2"
101
+ },
102
+ tokens: {
103
+ usdc: {
104
+ address: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
105
+ decimals: 6,
106
+ name: "USD Coin",
107
+ version: "2"
108
+ },
109
+ eurc: {
110
+ address: "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD",
111
+ decimals: 6,
112
+ name: "EURC",
113
+ version: "2"
114
+ },
115
+ ausd: {
116
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
117
+ decimals: 6,
118
+ name: "Agora Dollar",
119
+ version: "1"
120
+ }
121
+ },
122
+ x402: {
123
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
124
+ enabled: true
125
+ }
126
+ },
127
+ ethereum: {
128
+ chainId: 1,
129
+ chainIdHex: "0x1",
130
+ name: "ethereum",
131
+ displayName: "Ethereum",
132
+ networkType: "evm",
133
+ rpcUrl: "https://eth.llamarpc.com",
134
+ explorerUrl: "https://etherscan.io",
135
+ nativeCurrency: {
136
+ name: "Ethereum",
137
+ symbol: "ETH",
138
+ decimals: 18
139
+ },
140
+ usdc: {
141
+ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
142
+ decimals: 6,
143
+ name: "USD Coin",
144
+ version: "2"
145
+ },
146
+ tokens: {
147
+ usdc: {
148
+ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
149
+ decimals: 6,
150
+ name: "USD Coin",
151
+ version: "2"
152
+ },
153
+ eurc: {
154
+ address: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c",
155
+ decimals: 6,
156
+ name: "Euro Coin",
157
+ version: "2"
158
+ },
159
+ ausd: {
160
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
161
+ decimals: 6,
162
+ name: "Agora Dollar",
163
+ version: "1"
164
+ },
165
+ pyusd: {
166
+ address: "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8",
167
+ decimals: 6,
168
+ name: "PayPal USD",
169
+ version: "1"
170
+ }
171
+ },
172
+ x402: {
173
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
174
+ enabled: true
175
+ }
176
+ },
177
+ polygon: {
178
+ chainId: 137,
179
+ chainIdHex: "0x89",
180
+ name: "polygon",
181
+ displayName: "Polygon",
182
+ networkType: "evm",
183
+ rpcUrl: "https://polygon-rpc.com",
184
+ explorerUrl: "https://polygonscan.com",
185
+ nativeCurrency: {
186
+ name: "Polygon",
187
+ symbol: "POL",
188
+ decimals: 18
189
+ },
190
+ usdc: {
191
+ address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
192
+ decimals: 6,
193
+ name: "USD Coin",
194
+ version: "2"
195
+ },
196
+ tokens: {
197
+ usdc: {
198
+ address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
199
+ decimals: 6,
200
+ name: "USD Coin",
201
+ version: "2"
202
+ },
203
+ ausd: {
204
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
205
+ decimals: 6,
206
+ name: "Agora Dollar",
207
+ version: "1"
208
+ }
209
+ },
210
+ x402: {
211
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
212
+ enabled: true
213
+ }
214
+ },
215
+ arbitrum: {
216
+ chainId: 42161,
217
+ chainIdHex: "0xa4b1",
218
+ name: "arbitrum",
219
+ displayName: "Arbitrum One",
220
+ networkType: "evm",
221
+ rpcUrl: "https://arb1.arbitrum.io/rpc",
222
+ explorerUrl: "https://arbiscan.io",
223
+ nativeCurrency: {
224
+ name: "Ethereum",
225
+ symbol: "ETH",
226
+ decimals: 18
227
+ },
228
+ usdc: {
229
+ address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
230
+ decimals: 6,
231
+ name: "USD Coin",
232
+ version: "2"
233
+ },
234
+ tokens: {
235
+ usdc: {
236
+ address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
237
+ decimals: 6,
238
+ name: "USD Coin",
239
+ version: "2"
240
+ },
241
+ ausd: {
242
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
243
+ decimals: 6,
244
+ name: "Agora Dollar",
245
+ version: "1"
246
+ },
247
+ usdt: {
248
+ address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
249
+ decimals: 6,
250
+ name: "USD\u20AE0",
251
+ version: "1"
252
+ }
253
+ },
254
+ x402: {
255
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
256
+ enabled: true
257
+ }
258
+ },
259
+ optimism: {
260
+ chainId: 10,
261
+ chainIdHex: "0xa",
262
+ name: "optimism",
263
+ displayName: "Optimism",
264
+ networkType: "evm",
265
+ rpcUrl: "https://mainnet.optimism.io",
266
+ explorerUrl: "https://optimistic.etherscan.io",
267
+ nativeCurrency: {
268
+ name: "Ethereum",
269
+ symbol: "ETH",
270
+ decimals: 18
271
+ },
272
+ usdc: {
273
+ address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
274
+ decimals: 6,
275
+ name: "USD Coin",
276
+ version: "2"
277
+ },
278
+ tokens: {
279
+ usdc: {
280
+ address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
281
+ decimals: 6,
282
+ name: "USD Coin",
283
+ version: "2"
284
+ },
285
+ usdt: {
286
+ address: "0x01bff41798a0bcf287b996046ca68b395dbc1071",
287
+ decimals: 6,
288
+ name: "USD\u20AE0",
289
+ version: "1"
290
+ }
291
+ },
292
+ x402: {
293
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
294
+ enabled: true
295
+ }
296
+ },
297
+ celo: {
298
+ chainId: 42220,
299
+ chainIdHex: "0xa4ec",
300
+ name: "celo",
301
+ displayName: "Celo",
302
+ networkType: "evm",
303
+ rpcUrl: "https://forno.celo.org",
304
+ explorerUrl: "https://celoscan.io",
305
+ nativeCurrency: {
306
+ name: "Celo",
307
+ symbol: "CELO",
308
+ decimals: 18
309
+ },
310
+ usdc: {
311
+ address: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
312
+ decimals: 6,
313
+ name: "USDC",
314
+ // Celo uses "USDC" not "USD Coin" for EIP-712
315
+ version: "2"
316
+ },
317
+ tokens: {
318
+ usdc: {
319
+ address: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
320
+ decimals: 6,
321
+ name: "USDC",
322
+ // Celo uses "USDC" not "USD Coin" for EIP-712
323
+ version: "2"
324
+ },
325
+ usdt: {
326
+ address: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
327
+ decimals: 6,
328
+ name: "Tether USD",
329
+ // Celo USDT uses "Tether USD" for EIP-712
330
+ version: "1"
331
+ }
332
+ },
333
+ x402: {
334
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
335
+ enabled: true
336
+ }
337
+ },
338
+ hyperevm: {
339
+ chainId: 999,
340
+ chainIdHex: "0x3e7",
341
+ name: "hyperevm",
342
+ displayName: "HyperEVM",
343
+ networkType: "evm",
344
+ rpcUrl: "https://rpc.hyperliquid.xyz/evm",
345
+ explorerUrl: "https://hyperevmscan.io",
346
+ nativeCurrency: {
347
+ name: "Ethereum",
348
+ symbol: "ETH",
349
+ decimals: 18
350
+ },
351
+ usdc: {
352
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
353
+ decimals: 6,
354
+ name: "USDC",
355
+ // HyperEVM uses "USDC" not "USD Coin"
356
+ version: "2"
357
+ },
358
+ tokens: {
359
+ usdc: {
360
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
361
+ decimals: 6,
362
+ name: "USDC",
363
+ // HyperEVM uses "USDC" not "USD Coin"
364
+ version: "2"
365
+ }
366
+ },
367
+ x402: {
368
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
369
+ enabled: true
370
+ }
371
+ },
372
+ unichain: {
373
+ chainId: 130,
374
+ chainIdHex: "0x82",
375
+ name: "unichain",
376
+ displayName: "Unichain",
377
+ networkType: "evm",
378
+ rpcUrl: "https://unichain-rpc.publicnode.com",
379
+ explorerUrl: "https://uniscan.xyz",
380
+ nativeCurrency: {
381
+ name: "Ethereum",
382
+ symbol: "ETH",
383
+ decimals: 18
384
+ },
385
+ usdc: {
386
+ address: "0x078d782b760474a361dda0af3839290b0ef57ad6",
387
+ decimals: 6,
388
+ name: "USDC",
389
+ // Unichain uses "USDC" not "USD Coin"
390
+ version: "2"
391
+ },
392
+ tokens: {
393
+ usdc: {
394
+ address: "0x078d782b760474a361dda0af3839290b0ef57ad6",
395
+ decimals: 6,
396
+ name: "USDC",
397
+ // Unichain uses "USDC" not "USD Coin"
398
+ version: "2"
399
+ }
400
+ },
401
+ x402: {
402
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
403
+ enabled: true
404
+ }
405
+ },
406
+ monad: {
407
+ chainId: 143,
408
+ chainIdHex: "0x8f",
409
+ name: "monad",
410
+ displayName: "Monad",
411
+ networkType: "evm",
412
+ rpcUrl: "https://rpc.monad.xyz",
413
+ explorerUrl: "https://monad.socialscan.io",
414
+ nativeCurrency: {
415
+ name: "Monad",
416
+ symbol: "MON",
417
+ decimals: 18
418
+ },
419
+ usdc: {
420
+ address: "0x754704bc059f8c67012fed69bc8a327a5aafb603",
421
+ decimals: 6,
422
+ name: "USDC",
423
+ // Monad uses "USDC" not "USD Coin"
424
+ version: "2"
425
+ },
426
+ tokens: {
427
+ usdc: {
428
+ address: "0x754704bc059f8c67012fed69bc8a327a5aafb603",
429
+ decimals: 6,
430
+ name: "USDC",
431
+ // Monad uses "USDC" not "USD Coin"
432
+ version: "2"
433
+ },
434
+ ausd: {
435
+ address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
436
+ decimals: 6,
437
+ name: "Agora Dollar",
438
+ version: "1"
439
+ }
440
+ },
441
+ x402: {
442
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
443
+ enabled: true
444
+ }
445
+ },
446
+ // ============================================================================
447
+ // SVM CHAINS (2 networks) - Solana Virtual Machine
448
+ // ============================================================================
449
+ solana: {
450
+ chainId: 0,
451
+ // Non-EVM
452
+ chainIdHex: "0x0",
453
+ name: "solana",
454
+ displayName: "Solana",
455
+ networkType: "svm",
456
+ rpcUrl: "https://api.mainnet-beta.solana.com",
457
+ explorerUrl: "https://solscan.io",
458
+ nativeCurrency: {
459
+ name: "Solana",
460
+ symbol: "SOL",
461
+ decimals: 9
462
+ },
463
+ usdc: {
464
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
465
+ // USDC SPL token mint
466
+ decimals: 6,
467
+ name: "USD Coin",
468
+ version: "1"
469
+ },
470
+ x402: {
471
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
472
+ enabled: true
473
+ }
474
+ },
475
+ fogo: {
476
+ chainId: 0,
477
+ // Non-EVM (SVM)
478
+ chainIdHex: "0x0",
479
+ name: "fogo",
480
+ displayName: "Fogo",
481
+ networkType: "svm",
482
+ rpcUrl: "https://rpc.fogo.nightly.app/",
483
+ explorerUrl: "https://explorer.fogo.nightly.app",
484
+ nativeCurrency: {
485
+ name: "Fogo",
486
+ symbol: "FOGO",
487
+ decimals: 9
488
+ },
489
+ usdc: {
490
+ address: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
491
+ // Fogo USDC mint
492
+ decimals: 6,
493
+ name: "USDC",
494
+ version: "1"
495
+ },
496
+ x402: {
497
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
498
+ enabled: true
499
+ }
500
+ },
501
+ // ============================================================================
502
+ // STELLAR (1 network)
503
+ // ============================================================================
504
+ stellar: {
505
+ chainId: 0,
506
+ // Non-EVM
507
+ chainIdHex: "0x0",
508
+ name: "stellar",
509
+ displayName: "Stellar",
510
+ networkType: "stellar",
511
+ rpcUrl: "https://horizon.stellar.org",
512
+ explorerUrl: "https://stellar.expert/explorer/public",
513
+ nativeCurrency: {
514
+ name: "Lumens",
515
+ symbol: "XLM",
516
+ decimals: 7
517
+ // Stellar uses 7 decimals (stroops)
518
+ },
519
+ usdc: {
520
+ address: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
521
+ // Soroban Asset Contract
522
+ decimals: 7,
523
+ // Stellar USDC uses 7 decimals
524
+ name: "USDC",
525
+ version: "1"
526
+ },
527
+ x402: {
528
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
529
+ enabled: true
530
+ }
531
+ },
532
+ // ============================================================================
533
+ // NEAR (1 network) - Uses NEP-366 meta-transactions
534
+ // ============================================================================
535
+ near: {
536
+ chainId: 0,
537
+ // Non-EVM
538
+ chainIdHex: "0x0",
539
+ name: "near",
540
+ displayName: "NEAR Protocol",
541
+ networkType: "near",
542
+ rpcUrl: "https://rpc.mainnet.near.org",
543
+ explorerUrl: "https://nearblocks.io",
544
+ nativeCurrency: {
545
+ name: "NEAR",
546
+ symbol: "NEAR",
547
+ decimals: 24
548
+ // NEAR uses 24 decimals (yoctoNEAR)
549
+ },
550
+ usdc: {
551
+ address: "17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1",
552
+ // Native Circle USDC
553
+ decimals: 6,
554
+ name: "USDC",
555
+ version: "1"
556
+ },
557
+ x402: {
558
+ facilitatorUrl: DEFAULT_FACILITATOR_URL,
559
+ enabled: true
560
+ // NEP-366 meta-transactions supported
561
+ }
562
+ }
563
+ };
564
+ function getChainByName(name) {
565
+ return SUPPORTED_CHAINS[name.toLowerCase()];
566
+ }
567
+
568
+ // src/utils/x402.ts
569
+ function chainToCAIP2(chainName) {
570
+ const caip2 = CAIP2_IDENTIFIERS[chainName.toLowerCase()];
571
+ if (caip2) {
572
+ return caip2;
573
+ }
574
+ const chain = getChainByName(chainName);
575
+ if (chain) {
576
+ if (chain.networkType === "evm") {
577
+ return `eip155:${chain.chainId}`;
578
+ }
579
+ return `${chain.networkType}:${chainName}`;
580
+ }
581
+ return chainName;
582
+ }
583
+
39
584
  // src/providers/near/index.ts
40
585
  var NEAR_CONFIG = {
41
586
  nodeUrl: "https://rpc.mainnet.near.org"};
@@ -322,16 +867,28 @@ var NEARProvider = class {
322
867
  }
323
868
  /**
324
869
  * Encode NEAR payment as X-PAYMENT header
870
+ *
871
+ * @param paymentPayload - JSON-encoded payment payload from signPayment()
872
+ * @param version - x402 protocol version (1 or 2, defaults to 1)
873
+ * @returns Base64-encoded X-PAYMENT header value
325
874
  */
326
- encodePaymentHeader(paymentPayload) {
875
+ encodePaymentHeader(paymentPayload, version = 1) {
327
876
  const payload = JSON.parse(paymentPayload);
328
- const x402Payload = {
877
+ const payloadData = {
878
+ signedDelegateAction: payload.signedDelegateAction
879
+ };
880
+ const x402Payload = version === 2 ? {
881
+ x402Version: 2,
882
+ scheme: "exact",
883
+ network: chainToCAIP2("near"),
884
+ // CAIP-2 format for v2
885
+ payload: payloadData
886
+ } : {
329
887
  x402Version: 1,
330
888
  scheme: "exact",
331
889
  network: "near",
332
- payload: {
333
- signedDelegateAction: payload.signedDelegateAction
334
- }
890
+ // Plain chain name for v1
891
+ payload: payloadData
335
892
  };
336
893
  return btoa(JSON.stringify(x402Payload));
337
894
  }