uvd-x402-sdk 2.40.0 → 2.42.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 +48 -20
- package/dist/adapters/index.d.mts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +80 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +80 -1
- package/dist/adapters/index.mjs.map +1 -1
- package/dist/backend/index.d.mts +246 -231
- package/dist/backend/index.d.ts +246 -231
- package/dist/backend/index.js +208 -332
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/index.mjs +204 -333
- package/dist/backend/index.mjs.map +1 -1
- package/dist/{index-DMPuzJv-.d.ts → index-BJrBRC2u.d.mts} +3 -3
- package/dist/{index-DNcDDyee.d.mts → index-DBCFd6mO.d.mts} +2 -1
- package/dist/{index-DNcDDyee.d.ts → index-DBCFd6mO.d.ts} +2 -1
- package/dist/{index-Cz0xHYGy.d.mts → index-m2PwYmcQ.d.ts} +3 -3
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +80 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/algorand/index.js.map +1 -1
- package/dist/providers/algorand/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/evm/index.js.map +1 -1
- package/dist/providers/evm/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/near/index.js.map +1 -1
- package/dist/providers/near/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/solana/index.js.map +1 -1
- package/dist/providers/solana/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/stellar/index.js.map +1 -1
- package/dist/providers/stellar/index.mjs +80 -1
- 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 +80 -1
- package/dist/providers/sui/index.js.map +1 -1
- package/dist/providers/sui/index.mjs +80 -1
- package/dist/providers/sui/index.mjs.map +1 -1
- package/dist/providers/xrpl/index.d.mts +1 -1
- package/dist/providers/xrpl/index.d.ts +1 -1
- package/dist/providers/xrpl/index.js +80 -1
- package/dist/providers/xrpl/index.js.map +1 -1
- package/dist/providers/xrpl/index.mjs +80 -1
- package/dist/providers/xrpl/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 +80 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +80 -1
- 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 +80 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +80 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +5 -2
- package/src/backend/index.ts +361 -560
- package/src/chains/index.ts +76 -3
- package/src/index.ts +2 -2
- package/src/types/index.ts +4 -1
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# uvd-x402-sdk
|
|
2
2
|
|
|
3
|
-
Gasless crypto payments across
|
|
3
|
+
Gasless crypto payments across 25 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
|
-
- **
|
|
10
|
-
- **Multi-Stablecoin**: USDC, EURC, AUSD, PYUSD, USDT
|
|
9
|
+
- **25 Networks**: EVM (15 including Scroll, SKALE Base, Robinhood Chain), Solana, Fogo, Stellar, NEAR, Algorand, Sui, XRP Ledger (mainnet + testnet)
|
|
10
|
+
- **Multi-Stablecoin**: USDC, EURC, AUSD, PYUSD, USDT, USDG (Robinhood Chain)
|
|
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
|
|
@@ -624,7 +624,7 @@ const header = svm.encodePaymentHeader(payload, chainConfig);
|
|
|
624
624
|
|
|
625
625
|
## Supported Networks
|
|
626
626
|
|
|
627
|
-
### EVM (
|
|
627
|
+
### EVM (15)
|
|
628
628
|
|
|
629
629
|
| Network | Chain ID | Tokens |
|
|
630
630
|
|---------|----------|--------|
|
|
@@ -641,6 +641,10 @@ const header = svm.encodePaymentHeader(payload, chainConfig);
|
|
|
641
641
|
| Scroll | 534352 | USDC |
|
|
642
642
|
| SKALE Base | 1187947933 | USDC.e |
|
|
643
643
|
| SKALE Base Sepolia | 324705682 | USDC.e |
|
|
644
|
+
| Robinhood Chain | 4663 | USDG |
|
|
645
|
+
| Robinhood Chain Testnet | 46630 | USDG |
|
|
646
|
+
|
|
647
|
+
> **Robinhood Chain / USDG:** Robinhood Chain has no USDC — the settlement stablecoin is Paxos **USDG** (Global Dollar, 6 decimals, EIP-3009). Its on-chain `version()` getter reverts, so the EIP-712 domain `{ name: "Global Dollar", version: "1" }` can never be resolved on-chain. The SDK carries this domain in the chain config; when constructing `PaymentRequirements` yourself, send it in `extra`: `{ "name": "Global Dollar", "version": "1" }`. Use `tokenType: 'usdg'` (or the default, which resolves to USDG on these networks).
|
|
644
648
|
|
|
645
649
|
### SVM (2)
|
|
646
650
|
|
|
@@ -1010,34 +1014,58 @@ The facilitator's `/supported` endpoint advertises both `'escrow'` and `'commerc
|
|
|
1010
1014
|
|
|
1011
1015
|
Register and discover paid x402 resources across the network.
|
|
1012
1016
|
|
|
1017
|
+
The Bazaar is served by the facilitator itself under `/discovery/*`. No API key, no separate host.
|
|
1018
|
+
|
|
1013
1019
|
```typescript
|
|
1014
|
-
import { BazaarClient } from 'uvd-x402-sdk/backend';
|
|
1020
|
+
import { BazaarClient, isAlive } from 'uvd-x402-sdk/backend';
|
|
1015
1021
|
|
|
1016
|
-
const bazaar = new BazaarClient(
|
|
1022
|
+
const bazaar = new BazaarClient();
|
|
1017
1023
|
|
|
1018
|
-
//
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1024
|
+
// List resources. Every filter is applied server-side over the whole catalog,
|
|
1025
|
+
// so `pagination.total` is the real number of matches -- filtering one page
|
|
1026
|
+
// locally is not the same thing and will under-report.
|
|
1027
|
+
const page = await bazaar.listResources({
|
|
1028
|
+
network: 'eip155:8453',
|
|
1029
|
+
health: 'alive', // only endpoints a probe actually reached
|
|
1030
|
+
tier: 'vip', // first_party | vip | verified | listed
|
|
1031
|
+
limit: 20,
|
|
1023
1032
|
});
|
|
1024
1033
|
|
|
1025
|
-
for (const
|
|
1026
|
-
console.log(`${
|
|
1034
|
+
for (const r of page.items) {
|
|
1035
|
+
console.log(r.url, r.health?.status, `${r.health?.latencyMs}ms`, r.curation?.label);
|
|
1036
|
+
}
|
|
1037
|
+
console.log(`${page.items.length} of ${page.pagination.total}`);
|
|
1038
|
+
|
|
1039
|
+
// Free-text search. The parameter is `q`; anything else is rejected with a 400.
|
|
1040
|
+
const hits = await bazaar.listResources({ q: 'logs' });
|
|
1041
|
+
|
|
1042
|
+
// Walk the whole filtered catalog, one page at a time
|
|
1043
|
+
for await (const r of bazaar.iterateResources({ health: 'alive' })) {
|
|
1044
|
+
if (isAlive(r)) console.log(r.url);
|
|
1027
1045
|
}
|
|
1028
1046
|
|
|
1029
|
-
// Register a resource
|
|
1030
|
-
|
|
1047
|
+
// Register a resource. Registration is open and rate limited.
|
|
1048
|
+
await bazaar.registerResource({
|
|
1031
1049
|
url: 'https://api.example.com/v1/generate',
|
|
1032
|
-
name: 'Image Generator API',
|
|
1033
1050
|
description: 'Generate images with AI',
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1051
|
+
accepts: [{
|
|
1052
|
+
scheme: 'exact',
|
|
1053
|
+
network: 'eip155:8453',
|
|
1054
|
+
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
1055
|
+
amount: '50000',
|
|
1056
|
+
payTo: '0x1234...',
|
|
1057
|
+
maxTimeoutSeconds: 60,
|
|
1058
|
+
}],
|
|
1059
|
+
metadata: { category: 'ai', tags: ['image'] },
|
|
1038
1060
|
});
|
|
1061
|
+
|
|
1062
|
+
// Aggregate catalog metrics
|
|
1063
|
+
const stats = await bazaar.getStats();
|
|
1064
|
+
console.log(stats.total, stats.visible, stats.byHealth.alive);
|
|
1039
1065
|
```
|
|
1040
1066
|
|
|
1067
|
+
Timestamps (`firstSeen`, `lastSeen`, `lastUpdated`, `health.lastChecked`) are Unix epoch **seconds**. Use `epochToDate()` to get a `Date`.
|
|
1068
|
+
|
|
1041
1069
|
## Facilitator Info
|
|
1042
1070
|
|
|
1043
1071
|
Query the facilitator for version, supported networks, and compliance data.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as X402Version, k as PaymentResult } from '../index-
|
|
1
|
+
import { O as X402Version, k as PaymentResult } from '../index-DBCFd6mO.mjs';
|
|
2
2
|
export { E as EnvKeyAdapter, O as OWSWallet, a as OWSWalletAdapter } from '../ows-CYIVd4xO.mjs';
|
|
3
3
|
import '../wallet-0cX9Pw2F.mjs';
|
|
4
4
|
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as X402Version, k as PaymentResult } from '../index-
|
|
1
|
+
import { O as X402Version, k as PaymentResult } from '../index-DBCFd6mO.js';
|
|
2
2
|
export { E as EnvKeyAdapter, O as OWSWallet, a as OWSWalletAdapter } from '../ows-DTDixPzO.js';
|
|
3
3
|
import '../wallet-0cX9Pw2F.js';
|
|
4
4
|
|
package/dist/adapters/index.js
CHANGED
|
@@ -6,7 +6,7 @@ var ethers = require('ethers');
|
|
|
6
6
|
var DEFAULT_FACILITATOR_URL = "https://facilitator.ultravioletadao.xyz";
|
|
7
7
|
var SUPPORTED_CHAINS = {
|
|
8
8
|
// ============================================================================
|
|
9
|
-
// EVM CHAINS (
|
|
9
|
+
// EVM CHAINS (15 networks)
|
|
10
10
|
// ============================================================================
|
|
11
11
|
base: {
|
|
12
12
|
chainId: 8453,
|
|
@@ -516,6 +516,83 @@ var SUPPORTED_CHAINS = {
|
|
|
516
516
|
enabled: true
|
|
517
517
|
}
|
|
518
518
|
},
|
|
519
|
+
// Robinhood Chain (Arbitrum Orbit L2). NOTE: there is NO USDC on this chain -
|
|
520
|
+
// the settlement stablecoin is Paxos USDG (Global Dollar). The `usdc` field
|
|
521
|
+
// below carries USDG for interface compatibility (same pattern as XRPL's native
|
|
522
|
+
// asset), and `tokens.usdg` is the canonical entry.
|
|
523
|
+
// CRITICAL: USDG's on-chain version() getter REVERTS, so the EIP-712 domain
|
|
524
|
+
// { name: 'Global Dollar', version: '1' } can NEVER be resolved on-chain and
|
|
525
|
+
// MUST come from this config (mirrored into PaymentRequirements.extra by callers).
|
|
526
|
+
robinhood: {
|
|
527
|
+
chainId: 4663,
|
|
528
|
+
chainIdHex: "0x1237",
|
|
529
|
+
name: "robinhood",
|
|
530
|
+
displayName: "Robinhood Chain",
|
|
531
|
+
networkType: "evm",
|
|
532
|
+
rpcUrl: "https://rpc.mainnet.chain.robinhood.com",
|
|
533
|
+
explorerUrl: "https://robinhoodchain.blockscout.com",
|
|
534
|
+
nativeCurrency: {
|
|
535
|
+
name: "Ethereum",
|
|
536
|
+
symbol: "ETH",
|
|
537
|
+
decimals: 18
|
|
538
|
+
},
|
|
539
|
+
usdc: {
|
|
540
|
+
address: "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
|
|
541
|
+
// Paxos USDG (no USDC on this chain)
|
|
542
|
+
decimals: 6,
|
|
543
|
+
name: "Global Dollar",
|
|
544
|
+
// on-chain version() reverts; domain must be supplied off-chain
|
|
545
|
+
version: "1"
|
|
546
|
+
},
|
|
547
|
+
tokens: {
|
|
548
|
+
usdg: {
|
|
549
|
+
address: "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
|
|
550
|
+
decimals: 6,
|
|
551
|
+
name: "Global Dollar",
|
|
552
|
+
// on-chain version() reverts; domain must be supplied off-chain
|
|
553
|
+
version: "1"
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
x402: {
|
|
557
|
+
facilitatorUrl: DEFAULT_FACILITATOR_URL,
|
|
558
|
+
enabled: true
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
"robinhood-testnet": {
|
|
562
|
+
chainId: 46630,
|
|
563
|
+
chainIdHex: "0xb626",
|
|
564
|
+
name: "robinhood-testnet",
|
|
565
|
+
displayName: "Robinhood Chain Testnet",
|
|
566
|
+
networkType: "evm",
|
|
567
|
+
rpcUrl: "https://rpc.testnet.chain.robinhood.com",
|
|
568
|
+
explorerUrl: "https://explorer.testnet.chain.robinhood.com",
|
|
569
|
+
nativeCurrency: {
|
|
570
|
+
name: "Ethereum",
|
|
571
|
+
symbol: "ETH",
|
|
572
|
+
decimals: 18
|
|
573
|
+
},
|
|
574
|
+
usdc: {
|
|
575
|
+
address: "0x7E955252E15c84f5768B83c41a71F9eba181802F",
|
|
576
|
+
// Paxos USDG testnet (no USDC on this chain)
|
|
577
|
+
decimals: 6,
|
|
578
|
+
name: "Global Dollar",
|
|
579
|
+
// on-chain version() reverts; domain must be supplied off-chain
|
|
580
|
+
version: "1"
|
|
581
|
+
},
|
|
582
|
+
tokens: {
|
|
583
|
+
usdg: {
|
|
584
|
+
address: "0x7E955252E15c84f5768B83c41a71F9eba181802F",
|
|
585
|
+
decimals: 6,
|
|
586
|
+
name: "Global Dollar",
|
|
587
|
+
// on-chain version() reverts; domain must be supplied off-chain
|
|
588
|
+
version: "1"
|
|
589
|
+
}
|
|
590
|
+
},
|
|
591
|
+
x402: {
|
|
592
|
+
facilitatorUrl: DEFAULT_FACILITATOR_URL,
|
|
593
|
+
enabled: true
|
|
594
|
+
}
|
|
595
|
+
},
|
|
519
596
|
// ============================================================================
|
|
520
597
|
// SVM CHAINS (2 networks) - Solana Virtual Machine
|
|
521
598
|
// ============================================================================
|
|
@@ -881,6 +958,8 @@ var CAIP2_IDENTIFIERS = {
|
|
|
881
958
|
scroll: "eip155:534352",
|
|
882
959
|
"skale-base": "eip155:1187947933",
|
|
883
960
|
"skale-base-sepolia": "eip155:324705682",
|
|
961
|
+
robinhood: "eip155:4663",
|
|
962
|
+
"robinhood-testnet": "eip155:46630",
|
|
884
963
|
// SVM chains
|
|
885
964
|
solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
|
|
886
965
|
fogo: "svm:fogo",
|