uvd-x402-sdk 2.16.1 → 2.17.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.
- package/README.md +106 -8
- package/dist/adapters/index.d.mts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +103 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +103 -0
- package/dist/adapters/index.mjs.map +1 -1
- package/dist/backend/index.d.mts +393 -3
- package/dist/backend/index.d.ts +393 -3
- package/dist/backend/index.js +448 -0
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/index.mjs +445 -1
- package/dist/backend/index.mjs.map +1 -1
- package/dist/{index-BYsQM8ga.d.ts → index-BDLgm-Sg.d.mts} +4 -3
- package/dist/{index-B_reIs-L.d.mts → index-BE5cH7oS.d.mts} +4 -2
- package/dist/{index-B_reIs-L.d.ts → index-BE5cH7oS.d.ts} +4 -2
- package/dist/{index-1CWNFuXP.d.mts → index-DDrvK4em.d.ts} +4 -3
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +103 -0
- package/dist/index.mjs.map +1 -1
- package/dist/providers/algorand/index.d.mts +1 -1
- package/dist/providers/algorand/index.d.ts +1 -1
- package/dist/providers/algorand/index.js +103 -0
- package/dist/providers/algorand/index.js.map +1 -1
- package/dist/providers/algorand/index.mjs +103 -0
- package/dist/providers/algorand/index.mjs.map +1 -1
- package/dist/providers/evm/index.d.mts +1 -1
- package/dist/providers/evm/index.d.ts +1 -1
- package/dist/providers/evm/index.js +103 -0
- package/dist/providers/evm/index.js.map +1 -1
- package/dist/providers/evm/index.mjs +103 -0
- package/dist/providers/evm/index.mjs.map +1 -1
- package/dist/providers/near/index.d.mts +1 -1
- package/dist/providers/near/index.d.ts +1 -1
- package/dist/providers/near/index.js +103 -0
- package/dist/providers/near/index.js.map +1 -1
- package/dist/providers/near/index.mjs +103 -0
- package/dist/providers/near/index.mjs.map +1 -1
- package/dist/providers/solana/index.d.mts +1 -1
- package/dist/providers/solana/index.d.ts +1 -1
- package/dist/providers/solana/index.js +103 -0
- package/dist/providers/solana/index.js.map +1 -1
- package/dist/providers/solana/index.mjs +103 -0
- package/dist/providers/solana/index.mjs.map +1 -1
- package/dist/providers/stellar/index.d.mts +1 -1
- package/dist/providers/stellar/index.d.ts +1 -1
- package/dist/providers/stellar/index.js +103 -0
- package/dist/providers/stellar/index.js.map +1 -1
- package/dist/providers/stellar/index.mjs +103 -0
- package/dist/providers/stellar/index.mjs.map +1 -1
- package/dist/providers/sui/index.d.mts +1 -1
- package/dist/providers/sui/index.d.ts +1 -1
- package/dist/providers/sui/index.js +105 -1
- package/dist/providers/sui/index.js.map +1 -1
- package/dist/providers/sui/index.mjs +105 -1
- package/dist/providers/sui/index.mjs.map +1 -1
- package/dist/react/index.d.mts +3 -3
- package/dist/react/index.d.ts +3 -3
- package/dist/react/index.js +103 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +103 -0
- package/dist/react/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +103 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +103 -0
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +9 -3
- package/src/backend/index.ts +695 -1
- package/src/chains/index.ts +102 -2
- package/src/providers/sui/index.ts +2 -0
- package/src/types/index.ts +7 -2
package/README.md
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# uvd-x402-sdk
|
|
2
2
|
|
|
3
|
-
Gasless crypto payments across
|
|
3
|
+
Gasless crypto payments across 21 blockchain networks using the x402 protocol.
|
|
4
4
|
|
|
5
5
|
Users sign a message or transaction, and the Ultravioleta facilitator handles on-chain settlement. No gas fees for users.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **
|
|
9
|
+
- **21 Networks**: EVM (13 including Scroll, SKALE), Solana, Fogo, Stellar, NEAR, Algorand, Sui
|
|
10
10
|
- **Multi-Stablecoin**: USDC, EURC, AUSD, PYUSD, USDT
|
|
11
11
|
- **x402 v1 & v2**: Both protocol versions with auto-detection
|
|
12
12
|
- **Gasless**: Facilitator pays all network fees
|
|
13
13
|
- **Type-Safe**: Full TypeScript support
|
|
14
14
|
- **React & Wagmi**: First-class integrations
|
|
15
|
+
- **ERC-8004 Trustless Agents**: On-chain reputation and identity
|
|
16
|
+
- **Escrow & Refunds**: Hold payments with dispute resolution
|
|
15
17
|
|
|
16
18
|
## Installation
|
|
17
19
|
|
|
@@ -36,6 +38,9 @@ npm install @near-wallet-selector/core @near-wallet-selector/my-near-wallet
|
|
|
36
38
|
|
|
37
39
|
# Algorand
|
|
38
40
|
npm install algosdk lute-connect
|
|
41
|
+
|
|
42
|
+
# Sui
|
|
43
|
+
npm install @mysten/sui
|
|
39
44
|
```
|
|
40
45
|
|
|
41
46
|
## Quick Start
|
|
@@ -98,6 +103,29 @@ Algorand uses atomic transaction groups:
|
|
|
98
103
|
- Transaction 0: Fee payment (unsigned, facilitator signs)
|
|
99
104
|
- Transaction 1: USDC ASA transfer (signed by user)
|
|
100
105
|
|
|
106
|
+
### Sui
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
import { SuiProvider } from 'uvd-x402-sdk/sui';
|
|
110
|
+
import { getChainByName } from 'uvd-x402-sdk';
|
|
111
|
+
|
|
112
|
+
const sui = new SuiProvider();
|
|
113
|
+
const address = await sui.connect(); // Sui Wallet
|
|
114
|
+
const chainConfig = getChainByName('sui')!;
|
|
115
|
+
|
|
116
|
+
const payload = await sui.signPayment({
|
|
117
|
+
recipient: '0x1234...', // 66-char Sui address
|
|
118
|
+
amount: '10.00',
|
|
119
|
+
}, chainConfig);
|
|
120
|
+
|
|
121
|
+
const header = sui.encodePaymentHeader(payload, chainConfig);
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Sui uses sponsored transactions:
|
|
125
|
+
- User creates and signs a programmable transaction block
|
|
126
|
+
- Facilitator sponsors gas (pays in SUI)
|
|
127
|
+
- User pays zero gas fees
|
|
128
|
+
|
|
101
129
|
### Stellar
|
|
102
130
|
|
|
103
131
|
```typescript
|
|
@@ -406,7 +434,7 @@ const header = svm.encodePaymentHeader(payload, chainConfig);
|
|
|
406
434
|
|
|
407
435
|
## Supported Networks
|
|
408
436
|
|
|
409
|
-
### EVM (
|
|
437
|
+
### EVM (13)
|
|
410
438
|
|
|
411
439
|
| Network | Chain ID | Tokens |
|
|
412
440
|
|---------|----------|--------|
|
|
@@ -414,12 +442,15 @@ const header = svm.encodePaymentHeader(payload, chainConfig);
|
|
|
414
442
|
| Ethereum | 1 | USDC, EURC, AUSD, PYUSD, USDT |
|
|
415
443
|
| Polygon | 137 | USDC, AUSD |
|
|
416
444
|
| Arbitrum | 42161 | USDC, AUSD, USDT |
|
|
417
|
-
| Optimism | 10 | USDC |
|
|
445
|
+
| Optimism | 10 | USDC, USDT |
|
|
418
446
|
| Avalanche | 43114 | USDC, EURC, AUSD |
|
|
419
|
-
| Celo | 42220 | USDC |
|
|
447
|
+
| Celo | 42220 | USDC, USDT |
|
|
420
448
|
| HyperEVM | 999 | USDC |
|
|
421
449
|
| Unichain | 130 | USDC |
|
|
422
450
|
| Monad | 143 | USDC, AUSD |
|
|
451
|
+
| Scroll | 534352 | USDC |
|
|
452
|
+
| SKALE | 1187947933 | USDC |
|
|
453
|
+
| SKALE Testnet | 324705682 | USDC |
|
|
423
454
|
|
|
424
455
|
### SVM (2)
|
|
425
456
|
|
|
@@ -428,14 +459,19 @@ const header = svm.encodePaymentHeader(payload, chainConfig);
|
|
|
428
459
|
| Solana | USDC, AUSD | Phantom |
|
|
429
460
|
| Fogo | USDC | Phantom |
|
|
430
461
|
|
|
431
|
-
### Algorand
|
|
462
|
+
### Algorand
|
|
432
463
|
|
|
433
464
|
| Network | USDC ASA | Wallet |
|
|
434
465
|
|---------|----------|--------|
|
|
435
466
|
| Algorand | 31566704 | Lute, Pera |
|
|
436
|
-
| Algorand Testnet | 10458941 | Lute, Pera |
|
|
437
467
|
|
|
438
|
-
###
|
|
468
|
+
### Sui
|
|
469
|
+
|
|
470
|
+
| Network | Tokens | Wallet |
|
|
471
|
+
|---------|--------|--------|
|
|
472
|
+
| Sui | USDC, AUSD | Sui Wallet |
|
|
473
|
+
|
|
474
|
+
### Other
|
|
439
475
|
|
|
440
476
|
| Network | Wallet |
|
|
441
477
|
|---------|--------|
|
|
@@ -455,10 +491,12 @@ FACILITATOR_ADDRESSES.solana; // F742C4VfFLQ9zRQyithoj5229ZgtX2WqKCSFKgH2EThq
|
|
|
455
491
|
FACILITATOR_ADDRESSES.algorand; // KIMS5H6QLCUDL65L5UBTOXDPWLMTS7N3AAC3I6B2NCONEI5QIVK7LH2C2I
|
|
456
492
|
FACILITATOR_ADDRESSES.stellar; // GCHPGXJT2WFFRFCA5TV4G4E3PMMXLNIDUH27PKDYA4QJ2XGYZWGFZNHB
|
|
457
493
|
FACILITATOR_ADDRESSES.near; // uvd-facilitator.near
|
|
494
|
+
FACILITATOR_ADDRESSES.sui; // 0xe7bbf2b13f7d72714760aa16e024fa1b35a978793f9893d0568a4fbf356a764a
|
|
458
495
|
|
|
459
496
|
// Or get by chain name
|
|
460
497
|
getFacilitatorAddress('algorand'); // KIMS5H6...
|
|
461
498
|
getFacilitatorAddress('base', 'evm'); // 0x1030...
|
|
499
|
+
getFacilitatorAddress('sui'); // 0xe7bbf...
|
|
462
500
|
```
|
|
463
501
|
|
|
464
502
|
## Backend
|
|
@@ -551,6 +589,66 @@ try {
|
|
|
551
589
|
}
|
|
552
590
|
```
|
|
553
591
|
|
|
592
|
+
## ERC-8004 Trustless Agents
|
|
593
|
+
|
|
594
|
+
Build verifiable on-chain reputation for AI agents and services.
|
|
595
|
+
|
|
596
|
+
```typescript
|
|
597
|
+
import { Erc8004Client } from 'uvd-x402-sdk/backend';
|
|
598
|
+
|
|
599
|
+
const erc8004 = new Erc8004Client();
|
|
600
|
+
|
|
601
|
+
// Get agent identity
|
|
602
|
+
const identity = await erc8004.getIdentity('ethereum', 42);
|
|
603
|
+
console.log(identity.agentUri);
|
|
604
|
+
|
|
605
|
+
// Get agent reputation
|
|
606
|
+
const reputation = await erc8004.getReputation('ethereum', 42);
|
|
607
|
+
console.log(`Score: ${reputation.summary.summaryValue}`);
|
|
608
|
+
|
|
609
|
+
// Submit feedback after payment
|
|
610
|
+
const result = await erc8004.submitFeedback({
|
|
611
|
+
x402Version: 1,
|
|
612
|
+
network: 'ethereum',
|
|
613
|
+
feedback: {
|
|
614
|
+
agentId: 42,
|
|
615
|
+
value: 95,
|
|
616
|
+
valueDecimals: 0,
|
|
617
|
+
tag1: 'quality',
|
|
618
|
+
proof: settleResponse.proofOfPayment,
|
|
619
|
+
},
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
// Respond to feedback (agents only)
|
|
623
|
+
await erc8004.appendResponse('ethereum', 42, 1, 'Thank you for your feedback!');
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
## Escrow & Refunds
|
|
627
|
+
|
|
628
|
+
Hold payments in escrow with dispute resolution.
|
|
629
|
+
|
|
630
|
+
```typescript
|
|
631
|
+
import { EscrowClient } from 'uvd-x402-sdk/backend';
|
|
632
|
+
|
|
633
|
+
const escrow = new EscrowClient();
|
|
634
|
+
|
|
635
|
+
// Create escrow payment
|
|
636
|
+
const escrowPayment = await escrow.createEscrow({
|
|
637
|
+
paymentHeader: req.headers['x-payment'],
|
|
638
|
+
requirements: paymentRequirements,
|
|
639
|
+
escrowDuration: 86400, // 24 hours
|
|
640
|
+
});
|
|
641
|
+
|
|
642
|
+
// Release after service delivery
|
|
643
|
+
await escrow.release(escrowPayment.id);
|
|
644
|
+
|
|
645
|
+
// Or request refund if service failed
|
|
646
|
+
await escrow.requestRefund({
|
|
647
|
+
escrowId: escrowPayment.id,
|
|
648
|
+
reason: 'Service not delivered',
|
|
649
|
+
});
|
|
650
|
+
```
|
|
651
|
+
|
|
554
652
|
## Links
|
|
555
653
|
|
|
556
654
|
- [x402 Protocol](https://x402.org)
|
package/dist/adapters/index.d.ts
CHANGED
package/dist/adapters/index.js
CHANGED
|
@@ -407,6 +407,106 @@ var SUPPORTED_CHAINS = {
|
|
|
407
407
|
enabled: true
|
|
408
408
|
}
|
|
409
409
|
},
|
|
410
|
+
scroll: {
|
|
411
|
+
chainId: 534352,
|
|
412
|
+
chainIdHex: "0x82750",
|
|
413
|
+
name: "scroll",
|
|
414
|
+
displayName: "Scroll",
|
|
415
|
+
networkType: "evm",
|
|
416
|
+
rpcUrl: "https://rpc.scroll.io",
|
|
417
|
+
explorerUrl: "https://scrollscan.com",
|
|
418
|
+
nativeCurrency: {
|
|
419
|
+
name: "Ethereum",
|
|
420
|
+
symbol: "ETH",
|
|
421
|
+
decimals: 18
|
|
422
|
+
},
|
|
423
|
+
usdc: {
|
|
424
|
+
address: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
|
|
425
|
+
decimals: 6,
|
|
426
|
+
name: "USD Coin",
|
|
427
|
+
version: "2"
|
|
428
|
+
},
|
|
429
|
+
tokens: {
|
|
430
|
+
usdc: {
|
|
431
|
+
address: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
|
|
432
|
+
decimals: 6,
|
|
433
|
+
name: "USD Coin",
|
|
434
|
+
version: "2"
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
x402: {
|
|
438
|
+
facilitatorUrl: DEFAULT_FACILITATOR_URL,
|
|
439
|
+
enabled: true
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
skale: {
|
|
443
|
+
chainId: 1187947933,
|
|
444
|
+
chainIdHex: "0x46cea59d",
|
|
445
|
+
name: "skale",
|
|
446
|
+
displayName: "SKALE",
|
|
447
|
+
networkType: "evm",
|
|
448
|
+
rpcUrl: "https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague",
|
|
449
|
+
explorerUrl: "https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com",
|
|
450
|
+
nativeCurrency: {
|
|
451
|
+
name: "sFUEL",
|
|
452
|
+
symbol: "sFUEL",
|
|
453
|
+
decimals: 18
|
|
454
|
+
},
|
|
455
|
+
usdc: {
|
|
456
|
+
address: "0x85889c8c714505E0c94b30fcfcF64fE3Ac8FCb20",
|
|
457
|
+
decimals: 6,
|
|
458
|
+
name: "USDC",
|
|
459
|
+
// SKALE uses "USDC"
|
|
460
|
+
version: "2"
|
|
461
|
+
},
|
|
462
|
+
tokens: {
|
|
463
|
+
usdc: {
|
|
464
|
+
address: "0x85889c8c714505E0c94b30fcfcF64fE3Ac8FCb20",
|
|
465
|
+
decimals: 6,
|
|
466
|
+
name: "USDC",
|
|
467
|
+
// SKALE uses "USDC"
|
|
468
|
+
version: "2"
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
x402: {
|
|
472
|
+
facilitatorUrl: DEFAULT_FACILITATOR_URL,
|
|
473
|
+
enabled: true
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"skale-testnet": {
|
|
477
|
+
chainId: 324705682,
|
|
478
|
+
chainIdHex: "0x135a9d92",
|
|
479
|
+
name: "skale-testnet",
|
|
480
|
+
displayName: "SKALE Testnet",
|
|
481
|
+
networkType: "evm",
|
|
482
|
+
rpcUrl: "https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet",
|
|
483
|
+
explorerUrl: "https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com",
|
|
484
|
+
nativeCurrency: {
|
|
485
|
+
name: "sFUEL",
|
|
486
|
+
symbol: "sFUEL",
|
|
487
|
+
decimals: 18
|
|
488
|
+
},
|
|
489
|
+
usdc: {
|
|
490
|
+
address: "0x2e08028E3C4c2356572E096d8EF835cD5C6030bD",
|
|
491
|
+
decimals: 6,
|
|
492
|
+
name: "USDC",
|
|
493
|
+
// SKALE testnet uses "USDC"
|
|
494
|
+
version: "2"
|
|
495
|
+
},
|
|
496
|
+
tokens: {
|
|
497
|
+
usdc: {
|
|
498
|
+
address: "0x2e08028E3C4c2356572E096d8EF835cD5C6030bD",
|
|
499
|
+
decimals: 6,
|
|
500
|
+
name: "USDC",
|
|
501
|
+
// SKALE testnet uses "USDC"
|
|
502
|
+
version: "2"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
x402: {
|
|
506
|
+
facilitatorUrl: DEFAULT_FACILITATOR_URL,
|
|
507
|
+
enabled: true
|
|
508
|
+
}
|
|
509
|
+
},
|
|
410
510
|
// ============================================================================
|
|
411
511
|
// SVM CHAINS (2 networks) - Solana Virtual Machine
|
|
412
512
|
// ============================================================================
|
|
@@ -710,6 +810,9 @@ var CAIP2_IDENTIFIERS = {
|
|
|
710
810
|
hyperevm: "eip155:999",
|
|
711
811
|
unichain: "eip155:130",
|
|
712
812
|
monad: "eip155:143",
|
|
813
|
+
scroll: "eip155:534352",
|
|
814
|
+
skale: "eip155:1187947933",
|
|
815
|
+
"skale-testnet": "eip155:324705682",
|
|
713
816
|
// SVM chains
|
|
714
817
|
solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
|
|
715
818
|
fogo: "svm:fogo",
|