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