agentwallet-sdk 5.1.1 → 5.2.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/LICENSE +21 -0
- package/README.md +208 -21
- package/dist/bridge/__tests__/solana.test.d.ts +2 -0
- package/dist/bridge/__tests__/solana.test.d.ts.map +1 -0
- package/dist/bridge/__tests__/solana.test.js +106 -0
- package/dist/bridge/__tests__/solana.test.js.map +1 -0
- package/dist/bridge/client.d.ts +21 -7
- package/dist/bridge/client.d.ts.map +1 -1
- package/dist/bridge/client.js +16 -1
- package/dist/bridge/client.js.map +1 -1
- package/dist/bridge/index.d.ts +12 -1
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +11 -0
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/solana.d.ts +132 -0
- package/dist/bridge/solana.d.ts.map +1 -0
- package/dist/bridge/solana.js +313 -0
- package/dist/bridge/solana.js.map +1 -0
- package/dist/bridge/types.d.ts +35 -10
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/bridge/types.js +16 -4
- package/dist/bridge/types.js.map +1 -1
- package/dist/index.d.ts +215 -288
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/swap/SwapModule.d.ts +17 -3
- package/dist/swap/SwapModule.d.ts.map +1 -1
- package/dist/swap/SwapModule.js +20 -4
- package/dist/swap/SwapModule.js.map +1 -1
- package/dist/swap/index.d.ts +9 -2
- package/dist/swap/index.d.ts.map +1 -1
- package/dist/swap/index.js +8 -1
- package/dist/swap/index.js.map +1 -1
- package/dist/swap/types.d.ts +58 -1
- package/dist/swap/types.d.ts.map +1 -1
- package/dist/swap/types.js +56 -1
- package/dist/swap/types.js.map +1 -1
- package/dist/types.d.ts +20 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/dist/x402/__tests__/client.test.js +77 -5
- package/dist/x402/__tests__/client.test.js.map +1 -1
- package/dist/x402/chains/stellar/index.d.ts +149 -0
- package/dist/x402/chains/stellar/index.d.ts.map +1 -0
- package/dist/x402/chains/stellar/index.js +197 -0
- package/dist/x402/chains/stellar/index.js.map +1 -0
- package/dist/x402/client.d.ts.map +1 -1
- package/dist/x402/client.js.map +1 -1
- package/dist/x402/types.d.ts +22 -3
- package/dist/x402/types.d.ts.map +1 -1
- package/dist/x402/types.js +34 -4
- package/dist/x402/types.js.map +1 -1
- package/package.json +16 -5
- package/dist/ap2/index.d.ts +0 -185
- package/dist/ap2/index.d.ts.map +0 -1
- package/dist/ap2/index.js +0 -255
- package/dist/ap2/index.js.map +0 -1
- package/dist/bridge/unified.d.ts +0 -101
- package/dist/bridge/unified.d.ts.map +0 -1
- package/dist/bridge/unified.js +0 -284
- package/dist/bridge/unified.js.map +0 -1
- package/dist/chains.d.ts +0 -62
- package/dist/chains.d.ts.map +0 -1
- package/dist/chains.js +0 -108
- package/dist/chains.js.map +0 -1
- package/dist/fiat/index.d.ts +0 -10
- package/dist/fiat/index.d.ts.map +0 -1
- package/dist/fiat/index.js +0 -9
- package/dist/fiat/index.js.map +0 -1
- package/dist/fiat/onramp.d.ts +0 -101
- package/dist/fiat/onramp.d.ts.map +0 -1
- package/dist/fiat/onramp.js +0 -155
- package/dist/fiat/onramp.js.map +0 -1
- package/dist/fiat/providers/index.d.ts +0 -16
- package/dist/fiat/providers/index.d.ts.map +0 -1
- package/dist/fiat/providers/index.js +0 -30
- package/dist/fiat/providers/index.js.map +0 -1
- package/dist/fiat/providers/moonpay.d.ts +0 -22
- package/dist/fiat/providers/moonpay.d.ts.map +0 -1
- package/dist/fiat/providers/moonpay.js +0 -107
- package/dist/fiat/providers/moonpay.js.map +0 -1
- package/dist/fiat/providers/stripe.d.ts +0 -26
- package/dist/fiat/providers/stripe.d.ts.map +0 -1
- package/dist/fiat/providers/stripe.js +0 -135
- package/dist/fiat/providers/stripe.js.map +0 -1
- package/dist/fiat/providers/transak.d.ts +0 -26
- package/dist/fiat/providers/transak.d.ts.map +0 -1
- package/dist/fiat/providers/transak.js +0 -119
- package/dist/fiat/providers/transak.js.map +0 -1
- package/dist/fiat/types.d.ts +0 -106
- package/dist/fiat/types.d.ts.map +0 -1
- package/dist/fiat/types.js +0 -13
- package/dist/fiat/types.js.map +0 -1
- package/dist/flash/executor.d.ts +0 -119
- package/dist/flash/executor.d.ts.map +0 -1
- package/dist/flash/executor.js +0 -195
- package/dist/flash/executor.js.map +0 -1
- package/dist/flash/index.d.ts +0 -28
- package/dist/flash/index.d.ts.map +0 -1
- package/dist/flash/index.js +0 -29
- package/dist/flash/index.js.map +0 -1
- package/dist/flash/scanner.d.ts +0 -133
- package/dist/flash/scanner.d.ts.map +0 -1
- package/dist/flash/scanner.js +0 -212
- package/dist/flash/scanner.js.map +0 -1
- package/dist/flash/types.d.ts +0 -136
- package/dist/flash/types.d.ts.map +0 -1
- package/dist/flash/types.js +0 -23
- package/dist/flash/types.js.map +0 -1
- package/dist/gas/index.d.ts +0 -4
- package/dist/gas/index.d.ts.map +0 -1
- package/dist/gas/index.js +0 -3
- package/dist/gas/index.js.map +0 -1
- package/dist/gas/sponsor.d.ts +0 -70
- package/dist/gas/sponsor.d.ts.map +0 -1
- package/dist/gas/sponsor.js +0 -193
- package/dist/gas/sponsor.js.map +0 -1
- package/dist/gas/types.d.ts +0 -76
- package/dist/gas/types.d.ts.map +0 -1
- package/dist/gas/types.js +0 -21
- package/dist/gas/types.js.map +0 -1
- package/dist/identity/agent-identity.d.ts +0 -276
- package/dist/identity/agent-identity.d.ts.map +0 -1
- package/dist/identity/agent-identity.js +0 -300
- package/dist/identity/agent-identity.js.map +0 -1
- package/dist/identity/email-resolver.d.ts +0 -235
- package/dist/identity/email-resolver.js +0 -283
- package/dist/identity/erc6551.d.ts +0 -441
- package/dist/identity/erc6551.d.ts.map +0 -1
- package/dist/identity/erc6551.js +0 -517
- package/dist/identity/erc6551.js.map +0 -1
- package/dist/mev/index.d.ts +0 -4
- package/dist/mev/index.d.ts.map +0 -1
- package/dist/mev/index.js +0 -8
- package/dist/mev/index.js.map +0 -1
- package/dist/mev/protection.d.ts +0 -54
- package/dist/mev/protection.d.ts.map +0 -1
- package/dist/mev/protection.js +0 -185
- package/dist/mev/protection.js.map +0 -1
- package/dist/mev/risk.d.ts +0 -19
- package/dist/mev/risk.d.ts.map +0 -1
- package/dist/mev/risk.js +0 -95
- package/dist/mev/risk.js.map +0 -1
- package/dist/mev/types.d.ts +0 -49
- package/dist/mev/types.d.ts.map +0 -1
- package/dist/mev/types.js +0 -2
- package/dist/mev/types.js.map +0 -1
- package/dist/settlement/index.d.ts +0 -4
- package/dist/settlement/index.d.ts.map +0 -1
- package/dist/settlement/index.js +0 -3
- package/dist/settlement/index.js.map +0 -1
- package/dist/settlement/types.d.ts +0 -66
- package/dist/settlement/types.d.ts.map +0 -1
- package/dist/settlement/types.js +0 -37
- package/dist/settlement/types.js.map +0 -1
- package/dist/settlement/verifier.d.ts +0 -75
- package/dist/settlement/verifier.d.ts.map +0 -1
- package/dist/settlement/verifier.js +0 -354
- package/dist/settlement/verifier.js.map +0 -1
- package/dist/solana/bridge.d.ts +0 -144
- package/dist/solana/bridge.d.ts.map +0 -1
- package/dist/solana/bridge.js +0 -352
- package/dist/solana/bridge.js.map +0 -1
- package/dist/solana/index.d.ts +0 -8
- package/dist/solana/index.d.ts.map +0 -1
- package/dist/solana/index.js +0 -6
- package/dist/solana/index.js.map +0 -1
- package/dist/solana/swap.d.ts +0 -85
- package/dist/solana/swap.d.ts.map +0 -1
- package/dist/solana/swap.js +0 -173
- package/dist/solana/swap.js.map +0 -1
- package/dist/solana/types.d.ts +0 -126
- package/dist/solana/types.d.ts.map +0 -1
- package/dist/solana/types.js +0 -10
- package/dist/solana/types.js.map +0 -1
- package/dist/solana/wallet.d.ts +0 -83
- package/dist/solana/wallet.d.ts.map +0 -1
- package/dist/solana/wallet.js +0 -164
- package/dist/solana/wallet.js.map +0 -1
- package/dist/solana/x402.d.ts +0 -69
- package/dist/solana/x402.d.ts.map +0 -1
- package/dist/solana/x402.js +0 -154
- package/dist/solana/x402.js.map +0 -1
- package/dist/solver/adapter.d.ts +0 -47
- package/dist/solver/adapter.d.ts.map +0 -1
- package/dist/solver/adapter.js +0 -146
- package/dist/solver/adapter.js.map +0 -1
- package/dist/solver/analyzer.d.ts +0 -48
- package/dist/solver/analyzer.d.ts.map +0 -1
- package/dist/solver/analyzer.js +0 -171
- package/dist/solver/analyzer.js.map +0 -1
- package/dist/solver/builder.d.ts +0 -31
- package/dist/solver/builder.d.ts.map +0 -1
- package/dist/solver/builder.js +0 -60
- package/dist/solver/builder.js.map +0 -1
- package/dist/solver/index.d.ts +0 -22
- package/dist/solver/index.d.ts.map +0 -1
- package/dist/solver/index.js +0 -25
- package/dist/solver/index.js.map +0 -1
- package/dist/solver/types.d.ts +0 -115
- package/dist/solver/types.d.ts.map +0 -1
- package/dist/solver/types.js +0 -10
- package/dist/solver/types.js.map +0 -1
- package/dist/spend-guard/index.d.ts +0 -125
- package/dist/spend-guard/index.d.ts.map +0 -1
- package/dist/spend-guard/index.js +0 -150
- package/dist/spend-guard/index.js.map +0 -1
- package/dist/swap/router/cache.d.ts +0 -13
- package/dist/swap/router/cache.d.ts.map +0 -1
- package/dist/swap/router/cache.js +0 -30
- package/dist/swap/router/cache.js.map +0 -1
- package/dist/swap/router/flashbots.d.ts +0 -10
- package/dist/swap/router/flashbots.d.ts.map +0 -1
- package/dist/swap/router/flashbots.js +0 -43
- package/dist/swap/router/flashbots.js.map +0 -1
- package/dist/swap/router/health.d.ts +0 -17
- package/dist/swap/router/health.d.ts.map +0 -1
- package/dist/swap/router/health.js +0 -38
- package/dist/swap/router/health.js.map +0 -1
- package/dist/swap/router/index.d.ts +0 -10
- package/dist/swap/router/index.d.ts.map +0 -1
- package/dist/swap/router/index.js +0 -10
- package/dist/swap/router/index.js.map +0 -1
- package/dist/swap/router/providers/cowswap.d.ts +0 -11
- package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
- package/dist/swap/router/providers/cowswap.js +0 -79
- package/dist/swap/router/providers/cowswap.js.map +0 -1
- package/dist/swap/router/providers/index.d.ts +0 -20
- package/dist/swap/router/providers/index.d.ts.map +0 -1
- package/dist/swap/router/providers/index.js +0 -32
- package/dist/swap/router/providers/index.js.map +0 -1
- package/dist/swap/router/providers/jupiter.d.ts +0 -12
- package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
- package/dist/swap/router/providers/jupiter.js +0 -73
- package/dist/swap/router/providers/jupiter.js.map +0 -1
- package/dist/swap/router/providers/lifi.d.ts +0 -11
- package/dist/swap/router/providers/lifi.d.ts.map +0 -1
- package/dist/swap/router/providers/lifi.js +0 -123
- package/dist/swap/router/providers/lifi.js.map +0 -1
- package/dist/swap/router/providers/oneinch.d.ts +0 -13
- package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
- package/dist/swap/router/providers/oneinch.js +0 -71
- package/dist/swap/router/providers/oneinch.js.map +0 -1
- package/dist/swap/router/providers/paraswap.d.ts +0 -11
- package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
- package/dist/swap/router/providers/paraswap.js +0 -73
- package/dist/swap/router/providers/paraswap.js.map +0 -1
- package/dist/swap/router/providers/uniswap.d.ts +0 -31
- package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
- package/dist/swap/router/providers/uniswap.js +0 -237
- package/dist/swap/router/providers/uniswap.js.map +0 -1
- package/dist/swap/router/providers/zerox.d.ts +0 -13
- package/dist/swap/router/providers/zerox.d.ts.map +0 -1
- package/dist/swap/router/providers/zerox.js +0 -94
- package/dist/swap/router/providers/zerox.js.map +0 -1
- package/dist/swap/router/router.d.ts +0 -86
- package/dist/swap/router/router.d.ts.map +0 -1
- package/dist/swap/router/router.js +0 -224
- package/dist/swap/router/router.js.map +0 -1
- package/dist/swap/router/rsi/engine.d.ts +0 -60
- package/dist/swap/router/rsi/engine.d.ts.map +0 -1
- package/dist/swap/router/rsi/engine.js +0 -483
- package/dist/swap/router/rsi/engine.js.map +0 -1
- package/dist/swap/router/rsi/index.d.ts +0 -3
- package/dist/swap/router/rsi/index.d.ts.map +0 -1
- package/dist/swap/router/rsi/index.js +0 -3
- package/dist/swap/router/rsi/index.js.map +0 -1
- package/dist/swap/router/rsi/types.d.ts +0 -106
- package/dist/swap/router/rsi/types.d.ts.map +0 -1
- package/dist/swap/router/rsi/types.js +0 -3
- package/dist/swap/router/rsi/types.js.map +0 -1
- package/dist/swap/router/types.d.ts +0 -120
- package/dist/swap/router/types.d.ts.map +0 -1
- package/dist/swap/router/types.js +0 -16
- package/dist/swap/router/types.js.map +0 -1
- package/dist/tax/engine.d.ts +0 -131
- package/dist/tax/engine.d.ts.map +0 -1
- package/dist/tax/engine.js +0 -307
- package/dist/tax/engine.js.map +0 -1
- package/dist/tax/index.d.ts +0 -9
- package/dist/tax/index.d.ts.map +0 -1
- package/dist/tax/index.js +0 -12
- package/dist/tax/index.js.map +0 -1
- package/dist/tax/lots.d.ts +0 -60
- package/dist/tax/lots.d.ts.map +0 -1
- package/dist/tax/lots.js +0 -129
- package/dist/tax/lots.js.map +0 -1
- package/dist/tax/types.d.ts +0 -113
- package/dist/tax/types.d.ts.map +0 -1
- package/dist/tax/types.js +0 -18
- package/dist/tax/types.js.map +0 -1
- package/dist/verifiable-intent/index.d.ts +0 -84
- package/dist/verifiable-intent/index.js +0 -385
- package/dist/yield/index.d.ts +0 -26
- package/dist/yield/index.d.ts.map +0 -1
- package/dist/yield/index.js +0 -29
- package/dist/yield/index.js.map +0 -1
- package/dist/yield/rates.d.ts +0 -114
- package/dist/yield/rates.d.ts.map +0 -1
- package/dist/yield/rates.js +0 -351
- package/dist/yield/rates.js.map +0 -1
- package/dist/yield/types.d.ts +0 -134
- package/dist/yield/types.d.ts.map +0 -1
- package/dist/yield/types.js +0 -24
- package/dist/yield/types.js.map +0 -1
- package/dist/yield/vault.d.ts +0 -112
- package/dist/yield/vault.d.ts.map +0 -1
- package/dist/yield/vault.js +0 -264
- package/dist/yield/vault.js.map +0 -1
package/dist/swap/types.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// ─── Token Addresses ───
|
|
1
2
|
/** Well-known Base Mainnet token addresses */
|
|
2
3
|
export const BASE_TOKENS = {
|
|
3
4
|
USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
@@ -5,7 +6,61 @@ export const BASE_TOKENS = {
|
|
|
5
6
|
cbETH: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
6
7
|
WNATIVE: '0x4200000000000000000000000000000000000006',
|
|
7
8
|
};
|
|
8
|
-
/**
|
|
9
|
+
/** Well-known Arbitrum token addresses */
|
|
10
|
+
export const ARBITRUM_TOKENS = {
|
|
11
|
+
USDC: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
|
|
12
|
+
WETH: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
|
|
13
|
+
WNATIVE: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
|
|
14
|
+
};
|
|
15
|
+
/** Well-known Optimism token addresses */
|
|
16
|
+
export const OPTIMISM_TOKENS = {
|
|
17
|
+
USDC: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
|
|
18
|
+
WETH: '0x4200000000000000000000000000000000000006',
|
|
19
|
+
OP: '0x4200000000000000000000000000000000000042',
|
|
20
|
+
WNATIVE: '0x4200000000000000000000000000000000000006',
|
|
21
|
+
};
|
|
22
|
+
/** Well-known Polygon token addresses */
|
|
23
|
+
export const POLYGON_TOKENS = {
|
|
24
|
+
USDC: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
|
|
25
|
+
WETH: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619',
|
|
26
|
+
WMATIC: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
|
|
27
|
+
WNATIVE: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
|
|
28
|
+
};
|
|
29
|
+
// ─── Uniswap V3 Contract Addresses ───
|
|
30
|
+
/**
|
|
31
|
+
* Uniswap V3 router and quoter addresses.
|
|
32
|
+
*
|
|
33
|
+
* Base has a different router (SwapRouter02 deployed at a unique address due to BASE chain launch).
|
|
34
|
+
* Arbitrum, Optimism, and Polygon use the same universal SwapRouter02 address.
|
|
35
|
+
*
|
|
36
|
+
* Sources:
|
|
37
|
+
* - Base: https://docs.uniswap.org/contracts/v3/reference/deployments/base-deployments
|
|
38
|
+
* - Arbitrum: https://docs.uniswap.org/contracts/v3/reference/deployments/arbitrum-deployments
|
|
39
|
+
* - Optimism: https://docs.uniswap.org/contracts/v3/reference/deployments/optimism-deployments
|
|
40
|
+
* - Polygon: https://docs.uniswap.org/contracts/v3/reference/deployments/polygon-deployments
|
|
41
|
+
*/
|
|
42
|
+
export const UNISWAP_V3_ADDRESSES = {
|
|
43
|
+
base: {
|
|
44
|
+
ROUTER: '0x2626664c2603336E57B271c5C0b26F421741e481',
|
|
45
|
+
QUOTER_V2: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
|
|
46
|
+
},
|
|
47
|
+
arbitrum: {
|
|
48
|
+
ROUTER: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45',
|
|
49
|
+
QUOTER_V2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
50
|
+
},
|
|
51
|
+
optimism: {
|
|
52
|
+
ROUTER: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45',
|
|
53
|
+
QUOTER_V2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
54
|
+
},
|
|
55
|
+
polygon: {
|
|
56
|
+
ROUTER: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45',
|
|
57
|
+
QUOTER_V2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Use UNISWAP_V3_ADDRESSES.base instead.
|
|
62
|
+
* Kept for backwards compatibility.
|
|
63
|
+
*/
|
|
9
64
|
export const UNISWAP_V3_BASE = {
|
|
10
65
|
ROUTER: '0x2626664c2603336E57B271c5C0b26F421741e481',
|
|
11
66
|
QUOTER_V2: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
|
package/dist/swap/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"AA2DA,0BAA0B;AAE1B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAK,4CAAqD;IAC9D,IAAI,EAAK,4CAAqD;IAC9D,KAAK,EAAI,4CAAqD;IAC9D,OAAO,EAAE,4CAAqD;CAC/D,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAK,4CAAqD;IAC9D,IAAI,EAAK,4CAAqD;IAC9D,OAAO,EAAE,4CAAqD;CAC/D,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAK,4CAAqD;IAC9D,IAAI,EAAK,4CAAqD;IAC9D,EAAE,EAAO,4CAAqD;IAC9D,OAAO,EAAE,4CAAqD;CAC/D,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAK,4CAAqD;IAC9D,IAAI,EAAK,4CAAqD;IAC9D,MAAM,EAAG,4CAAqD;IAC9D,OAAO,EAAE,4CAAqD;CAC/D,CAAC;AAEF,wCAAwC;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+D;IAC9F,IAAI,EAAE;QACJ,MAAM,EAAK,4CAA4C;QACvD,SAAS,EAAE,4CAA4C;KACxD;IACD,QAAQ,EAAE;QACR,MAAM,EAAK,4CAA4C;QACvD,SAAS,EAAE,4CAA4C;KACxD;IACD,QAAQ,EAAE;QACR,MAAM,EAAK,4CAA4C;QACvD,SAAS,EAAE,4CAA4C;KACxD;IACD,OAAO,EAAE;QACP,MAAM,EAAK,4CAA4C;QACvD,SAAS,EAAE,4CAA4C;KACxD;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAK,4CAAqD;IAChE,SAAS,EAAE,4CAAqD;CACjE,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,qCAAqC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module types
|
|
3
|
+
* Core type definitions for the AgentWallet SDK.
|
|
4
|
+
*
|
|
5
|
+
* Contains shared interfaces, constants, and type utilities used across all
|
|
6
|
+
* SDK modules: spending policies, wallet config, chain identifiers, and
|
|
7
|
+
* value-add diagnostic types (BudgetForecast, WalletHealth, ActivityEntry).
|
|
8
|
+
*
|
|
9
|
+
* Supported chains: Base, Ethereum, Arbitrum, Polygon, Optimism, Avalanche,
|
|
10
|
+
* Unichain, Linea, Sonic, Worldchain, and Base Sepolia (testnet).
|
|
11
|
+
*/
|
|
1
12
|
import type { Address, Hash, Hex } from 'viem';
|
|
2
13
|
/** Spend policy for a single token */
|
|
3
14
|
export interface SpendPolicy {
|
|
@@ -38,7 +49,7 @@ export interface ExecuteResult {
|
|
|
38
49
|
/** Config for creating an AgentWallet client */
|
|
39
50
|
export interface AgentWalletConfig {
|
|
40
51
|
accountAddress: Address;
|
|
41
|
-
chain: 'base' | 'base-sepolia' | 'ethereum' | 'arbitrum' | 'polygon';
|
|
52
|
+
chain: 'base' | 'base-sepolia' | 'ethereum' | 'arbitrum' | 'polygon' | 'optimism' | 'avalanche' | 'unichain' | 'linea' | 'sonic' | 'worldchain';
|
|
42
53
|
rpcUrl?: string;
|
|
43
54
|
}
|
|
44
55
|
/** Event emitted when a transaction exceeds spend limits */
|
|
@@ -106,5 +117,13 @@ export declare const CHAIN_IDS: {
|
|
|
106
117
|
readonly ethereum: 1;
|
|
107
118
|
readonly arbitrum: 42161;
|
|
108
119
|
readonly polygon: 137;
|
|
120
|
+
readonly optimism: 10;
|
|
121
|
+
readonly avalanche: 43114;
|
|
122
|
+
readonly unichain: 130;
|
|
123
|
+
readonly linea: 59144;
|
|
124
|
+
readonly sonic: 146;
|
|
125
|
+
readonly worldchain: 480;
|
|
109
126
|
};
|
|
127
|
+
/** Supported chain name type */
|
|
128
|
+
export type SupportedChain = keyof typeof CHAIN_IDS;
|
|
110
129
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA2HA,0BAA0B;AAC1B,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAS,IAAI;IACnB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAK,CAAC;IAChB,UAAU,EAAK,KAAK;IACpB,SAAS,EAAM,GAAG;IAClB,UAAU,EAAK,EAAE;IACjB,WAAW,EAAI,KAAK;IACpB,UAAU,EAAK,GAAG;IAClB,OAAO,EAAQ,KAAK;IACpB,OAAO,EAAQ,GAAG;IAClB,YAAY,EAAG,GAAG;CACV,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// [MAX-ADDED] Tests for x402 Client — protocol parsing and payment selection
|
|
2
2
|
import { describe, it, expect } from 'vitest';
|
|
3
3
|
import { X402Client } from '../client.js';
|
|
4
|
+
import { USDC_ADDRESSES } from '../types.js';
|
|
4
5
|
// Mock wallet (we test protocol logic, not on-chain execution)
|
|
5
6
|
const mockWallet = {};
|
|
6
7
|
describe('X402Client', () => {
|
|
@@ -67,8 +68,8 @@ describe('X402Client', () => {
|
|
|
67
68
|
});
|
|
68
69
|
});
|
|
69
70
|
describe('selectPaymentOption', () => {
|
|
70
|
-
it('selects Base USDC exact scheme', () => {
|
|
71
|
-
const client = new X402Client(mockWallet);
|
|
71
|
+
it('selects Base USDC exact scheme when base is in supported networks', () => {
|
|
72
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['base:8453'] });
|
|
72
73
|
const accepts = [
|
|
73
74
|
{ scheme: 'exact', network: 'ethereum:1', asset: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
74
75
|
{ scheme: 'exact', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
@@ -77,8 +78,47 @@ describe('X402Client', () => {
|
|
|
77
78
|
expect(selected).not.toBeNull();
|
|
78
79
|
expect(selected.network).toBe('base:8453');
|
|
79
80
|
});
|
|
81
|
+
it('selects Arbitrum USDC when configured for arbitrum', () => {
|
|
82
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['arbitrum:42161'] });
|
|
83
|
+
const accepts = [
|
|
84
|
+
{ scheme: 'exact', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
85
|
+
{ scheme: 'exact', network: 'arbitrum:42161', asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
86
|
+
];
|
|
87
|
+
const selected = client.selectPaymentOption(accepts);
|
|
88
|
+
expect(selected).not.toBeNull();
|
|
89
|
+
expect(selected.network).toBe('arbitrum:42161');
|
|
90
|
+
});
|
|
91
|
+
it('selects Optimism USDC when configured for optimism', () => {
|
|
92
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['optimism:10'] });
|
|
93
|
+
const accepts = [
|
|
94
|
+
{ scheme: 'exact', network: 'optimism:10', asset: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', amount: '2000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
95
|
+
];
|
|
96
|
+
const selected = client.selectPaymentOption(accepts);
|
|
97
|
+
expect(selected).not.toBeNull();
|
|
98
|
+
expect(selected.network).toBe('optimism:10');
|
|
99
|
+
});
|
|
100
|
+
it('selects Polygon USDC when configured for polygon', () => {
|
|
101
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['polygon:137'] });
|
|
102
|
+
const accepts = [
|
|
103
|
+
{ scheme: 'exact', network: 'polygon:137', asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', amount: '500000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
104
|
+
];
|
|
105
|
+
const selected = client.selectPaymentOption(accepts);
|
|
106
|
+
expect(selected).not.toBeNull();
|
|
107
|
+
expect(selected.network).toBe('polygon:137');
|
|
108
|
+
});
|
|
109
|
+
it('selects any supported network when multi-chain configured', () => {
|
|
110
|
+
const client = new X402Client(mockWallet, {
|
|
111
|
+
supportedNetworks: ['base:8453', 'ethereum:1', 'arbitrum:42161'],
|
|
112
|
+
});
|
|
113
|
+
const accepts = [
|
|
114
|
+
{ scheme: 'exact', network: 'arbitrum:42161', asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
115
|
+
];
|
|
116
|
+
const selected = client.selectPaymentOption(accepts);
|
|
117
|
+
expect(selected).not.toBeNull();
|
|
118
|
+
expect(selected.network).toBe('arbitrum:42161');
|
|
119
|
+
});
|
|
80
120
|
it('prefers lowest amount among compatible options', () => {
|
|
81
|
-
const client = new X402Client(mockWallet);
|
|
121
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['base:8453'] });
|
|
82
122
|
const accepts = [
|
|
83
123
|
{ scheme: 'exact', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '5000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
84
124
|
{ scheme: 'exact', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
@@ -87,14 +127,22 @@ describe('X402Client', () => {
|
|
|
87
127
|
expect(selected.amount).toBe('1000000');
|
|
88
128
|
});
|
|
89
129
|
it('returns null when no compatible option exists', () => {
|
|
90
|
-
const client = new X402Client(mockWallet);
|
|
130
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['base:8453'] });
|
|
91
131
|
const accepts = [
|
|
92
132
|
{ scheme: 'exact', network: 'solana:mainnet', asset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', amount: '1000000', payTo: 'sol_addr', maxTimeoutSeconds: 30, extra: {} },
|
|
93
133
|
];
|
|
94
134
|
expect(client.selectPaymentOption(accepts)).toBeNull();
|
|
95
135
|
});
|
|
136
|
+
it('returns null when network matches but asset is not supported USDC', () => {
|
|
137
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['base:8453'] });
|
|
138
|
+
const accepts = [
|
|
139
|
+
{ scheme: 'exact', network: 'base:8453', asset: '0xDeAdBeEfDeAdBeEfDeAdBeEfDeAdBeEfDeAdBeEf', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
140
|
+
];
|
|
141
|
+
// Asset is not the known USDC address — should be rejected
|
|
142
|
+
expect(client.selectPaymentOption(accepts)).toBeNull();
|
|
143
|
+
});
|
|
96
144
|
it('prefers exact scheme over others', () => {
|
|
97
|
-
const client = new X402Client(mockWallet);
|
|
145
|
+
const client = new X402Client(mockWallet, { supportedNetworks: ['base:8453'] });
|
|
98
146
|
const accepts = [
|
|
99
147
|
{ scheme: 'upto', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '500000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
100
148
|
{ scheme: 'exact', network: 'base:8453', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', amount: '1000000', payTo: '0x1', maxTimeoutSeconds: 30, extra: {} },
|
|
@@ -104,4 +152,28 @@ describe('X402Client', () => {
|
|
|
104
152
|
});
|
|
105
153
|
});
|
|
106
154
|
});
|
|
155
|
+
// ─── USDC_ADDRESSES coverage tests ───
|
|
156
|
+
describe('USDC_ADDRESSES multi-chain coverage', () => {
|
|
157
|
+
it('covers all 10 mainnet chains', () => {
|
|
158
|
+
const mainnetChains = [
|
|
159
|
+
'base:8453',
|
|
160
|
+
'ethereum:1',
|
|
161
|
+
'arbitrum:42161',
|
|
162
|
+
'polygon:137',
|
|
163
|
+
'optimism:10',
|
|
164
|
+
'avalanche:43114',
|
|
165
|
+
'unichain:130',
|
|
166
|
+
'linea:59144',
|
|
167
|
+
'sonic:146',
|
|
168
|
+
'worldchain:480',
|
|
169
|
+
];
|
|
170
|
+
for (const chain of mainnetChains) {
|
|
171
|
+
expect(USDC_ADDRESSES[chain]).toBeDefined();
|
|
172
|
+
expect(USDC_ADDRESSES[chain]).toMatch(/^0x[0-9a-fA-F]{40}$/);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
it('includes base-sepolia testnet', () => {
|
|
176
|
+
expect(USDC_ADDRESSES['base-sepolia:84532']).toBe('0x036CbD53842c5426634e7929541eC2318f3dCF7e');
|
|
177
|
+
});
|
|
178
|
+
});
|
|
107
179
|
//# sourceMappingURL=client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/x402/__tests__/client.test.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/x402/__tests__/client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stellar x402 Payment Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements x402 payment protocol on Stellar network.
|
|
5
|
+
* Stellar x402 support went live March 11, 2026.
|
|
6
|
+
*
|
|
7
|
+
* Chain identifiers:
|
|
8
|
+
* - Stellar Mainnet: "stellar:pubnet"
|
|
9
|
+
* - Stellar Testnet: "stellar:testnet"
|
|
10
|
+
*
|
|
11
|
+
* Key differences from EVM chains:
|
|
12
|
+
* - Uses Ed25519 keypairs (not secp256k1)
|
|
13
|
+
* - Transaction format: Stellar XDR (not EVM tx)
|
|
14
|
+
* - Settlement: ~5 seconds (1 ledger close)
|
|
15
|
+
* - Fees: ~0.00001 XLM per operation (effectively free at scale)
|
|
16
|
+
* - USDC: Circle-issued USDC on Stellar
|
|
17
|
+
*/
|
|
18
|
+
export declare const STELLAR_NETWORK: {
|
|
19
|
+
readonly pubnet: {
|
|
20
|
+
readonly horizonUrl: "https://horizon.stellar.org";
|
|
21
|
+
readonly networkPassphrase: "Public Global Stellar Network ; September 2015";
|
|
22
|
+
readonly chainId: "stellar:pubnet";
|
|
23
|
+
};
|
|
24
|
+
readonly testnet: {
|
|
25
|
+
readonly horizonUrl: "https://horizon-testnet.stellar.org";
|
|
26
|
+
readonly networkPassphrase: "Test SDF Network ; September 2015";
|
|
27
|
+
readonly chainId: "stellar:testnet";
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Circle USDC on Stellar (Mainnet)
|
|
32
|
+
* Asset code: USDC
|
|
33
|
+
* Issuer: GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
|
|
34
|
+
*/
|
|
35
|
+
export declare const STELLAR_USDC: {
|
|
36
|
+
readonly pubnet: {
|
|
37
|
+
readonly code: "USDC";
|
|
38
|
+
readonly issuer: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN";
|
|
39
|
+
};
|
|
40
|
+
readonly testnet: {
|
|
41
|
+
readonly code: "USDC";
|
|
42
|
+
readonly issuer: "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export type StellarNetwork = 'pubnet' | 'testnet';
|
|
46
|
+
export interface StellarPaymentConfig {
|
|
47
|
+
/** Which Stellar network to use */
|
|
48
|
+
network?: StellarNetwork;
|
|
49
|
+
/** x402 resource identifier (for memo) */
|
|
50
|
+
resource?: string;
|
|
51
|
+
/** Custom Horizon URL (overrides default) */
|
|
52
|
+
horizonUrl?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface StellarPaymentRequest {
|
|
55
|
+
/** Destination Stellar account (G... address) */
|
|
56
|
+
destination: string;
|
|
57
|
+
/** Amount in USDC (decimal string, e.g. "0.50") */
|
|
58
|
+
amount: string;
|
|
59
|
+
/** Source Stellar account public key */
|
|
60
|
+
sourcePublicKey: string;
|
|
61
|
+
/** x402 resource path for memo */
|
|
62
|
+
resource?: string;
|
|
63
|
+
/** Network to use */
|
|
64
|
+
network?: StellarNetwork;
|
|
65
|
+
}
|
|
66
|
+
export interface StellarPaymentResult {
|
|
67
|
+
/** Stellar transaction hash */
|
|
68
|
+
hash: string;
|
|
69
|
+
/** Ledger number the transaction landed in */
|
|
70
|
+
ledger: number;
|
|
71
|
+
/** Successful */
|
|
72
|
+
successful: boolean;
|
|
73
|
+
/** Network used */
|
|
74
|
+
network: StellarNetwork;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* StellarX402Adapter
|
|
78
|
+
*
|
|
79
|
+
* Handles x402 payment flow for Stellar network.
|
|
80
|
+
*
|
|
81
|
+
* Usage (with stellar-sdk):
|
|
82
|
+
* ```typescript
|
|
83
|
+
* import { StellarX402Adapter } from 'agentwallet-sdk/x402/stellar';
|
|
84
|
+
* import { Keypair, Networks } from '@stellar/stellar-sdk';
|
|
85
|
+
*
|
|
86
|
+
* const adapter = new StellarX402Adapter({ network: 'pubnet' });
|
|
87
|
+
* const result = await adapter.pay({
|
|
88
|
+
* destination: 'GDESTWVX3VMLQCXPHPVLS3FMNMG2X7L5IGGQT7BQMIZXZZ4V7KBQVS',
|
|
89
|
+
* amount: '0.50',
|
|
90
|
+
* sourcePublicKey: keypair.publicKey(),
|
|
91
|
+
* resource: '/api/data-endpoint',
|
|
92
|
+
* }, keypair.secret());
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* Note: stellar-sdk must be installed separately:
|
|
96
|
+
* npm install @stellar/stellar-sdk
|
|
97
|
+
*/
|
|
98
|
+
export declare class StellarX402Adapter {
|
|
99
|
+
private network;
|
|
100
|
+
private horizonUrl;
|
|
101
|
+
constructor(config?: StellarPaymentConfig);
|
|
102
|
+
/**
|
|
103
|
+
* Parse an x402 402 response and extract Stellar payment details.
|
|
104
|
+
* The 402 response should include X-Payment-Chains: stellar:pubnet
|
|
105
|
+
* and X-Payment-Amount, X-Payment-Destination headers.
|
|
106
|
+
*/
|
|
107
|
+
parseX402Response(headers: Record<string, string>): {
|
|
108
|
+
supported: boolean;
|
|
109
|
+
destination?: string;
|
|
110
|
+
amount?: string;
|
|
111
|
+
resource?: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Build a Stellar USDC payment transaction.
|
|
115
|
+
*
|
|
116
|
+
* Requires @stellar/stellar-sdk to be installed:
|
|
117
|
+
* npm install @stellar/stellar-sdk
|
|
118
|
+
*
|
|
119
|
+
* Returns the XDR-encoded transaction envelope for signing and submission.
|
|
120
|
+
*/
|
|
121
|
+
buildPaymentTransaction(request: StellarPaymentRequest): Promise<string>;
|
|
122
|
+
/**
|
|
123
|
+
* Submit a signed Stellar transaction to Horizon.
|
|
124
|
+
*/
|
|
125
|
+
submitTransaction(signedXdr: string): Promise<StellarPaymentResult>;
|
|
126
|
+
private _loadAccount;
|
|
127
|
+
/** Chain ID for this adapter (e.g. "stellar:pubnet") */
|
|
128
|
+
get chainId(): string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Full x402 payment flow for Stellar.
|
|
132
|
+
* 1. Detects 402 response from API
|
|
133
|
+
* 2. Parses Stellar payment details from headers
|
|
134
|
+
* 3. Builds, signs, and submits Stellar USDC payment
|
|
135
|
+
* 4. Retries the original request with payment proof
|
|
136
|
+
*
|
|
137
|
+
* Requires stellar-sdk: npm install @stellar/stellar-sdk
|
|
138
|
+
*/
|
|
139
|
+
export declare function stellarX402Pay(params: {
|
|
140
|
+
/** The 402 response headers */
|
|
141
|
+
responseHeaders: Record<string, string>;
|
|
142
|
+
/** Source account public key */
|
|
143
|
+
sourcePublicKey: string;
|
|
144
|
+
/** Signer function that takes XDR and returns signed XDR */
|
|
145
|
+
sign: (xdr: string) => Promise<string>;
|
|
146
|
+
/** Network to use */
|
|
147
|
+
network?: StellarNetwork;
|
|
148
|
+
}): Promise<StellarPaymentResult>;
|
|
149
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/x402/chains/stellar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;CAWlB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAIX,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB;IACnB,OAAO,EAAE,cAAc,CAAC;CACzB;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,GAAE,oBAAyB;IAK7C;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAClD,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAgBD;;;;;;;OAOG;IACG,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6C9E;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;YA6B3D,YAAY;IAe1B,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAID;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,qBAAqB;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqBhC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stellar x402 Payment Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements x402 payment protocol on Stellar network.
|
|
5
|
+
* Stellar x402 support went live March 11, 2026.
|
|
6
|
+
*
|
|
7
|
+
* Chain identifiers:
|
|
8
|
+
* - Stellar Mainnet: "stellar:pubnet"
|
|
9
|
+
* - Stellar Testnet: "stellar:testnet"
|
|
10
|
+
*
|
|
11
|
+
* Key differences from EVM chains:
|
|
12
|
+
* - Uses Ed25519 keypairs (not secp256k1)
|
|
13
|
+
* - Transaction format: Stellar XDR (not EVM tx)
|
|
14
|
+
* - Settlement: ~5 seconds (1 ledger close)
|
|
15
|
+
* - Fees: ~0.00001 XLM per operation (effectively free at scale)
|
|
16
|
+
* - USDC: Circle-issued USDC on Stellar
|
|
17
|
+
*/
|
|
18
|
+
// ─── Stellar Chain Constants ─────────────────────────────────────────────────
|
|
19
|
+
export const STELLAR_NETWORK = {
|
|
20
|
+
pubnet: {
|
|
21
|
+
horizonUrl: 'https://horizon.stellar.org',
|
|
22
|
+
networkPassphrase: 'Public Global Stellar Network ; September 2015',
|
|
23
|
+
chainId: 'stellar:pubnet',
|
|
24
|
+
},
|
|
25
|
+
testnet: {
|
|
26
|
+
horizonUrl: 'https://horizon-testnet.stellar.org',
|
|
27
|
+
networkPassphrase: 'Test SDF Network ; September 2015',
|
|
28
|
+
chainId: 'stellar:testnet',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Circle USDC on Stellar (Mainnet)
|
|
33
|
+
* Asset code: USDC
|
|
34
|
+
* Issuer: GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
|
|
35
|
+
*/
|
|
36
|
+
export const STELLAR_USDC = {
|
|
37
|
+
pubnet: {
|
|
38
|
+
code: 'USDC',
|
|
39
|
+
issuer: 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN',
|
|
40
|
+
},
|
|
41
|
+
testnet: {
|
|
42
|
+
code: 'USDC',
|
|
43
|
+
issuer: 'GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5',
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
// ─── Stellar x402 Payment Adapter ────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* StellarX402Adapter
|
|
49
|
+
*
|
|
50
|
+
* Handles x402 payment flow for Stellar network.
|
|
51
|
+
*
|
|
52
|
+
* Usage (with stellar-sdk):
|
|
53
|
+
* ```typescript
|
|
54
|
+
* import { StellarX402Adapter } from 'agentwallet-sdk/x402/stellar';
|
|
55
|
+
* import { Keypair, Networks } from '@stellar/stellar-sdk';
|
|
56
|
+
*
|
|
57
|
+
* const adapter = new StellarX402Adapter({ network: 'pubnet' });
|
|
58
|
+
* const result = await adapter.pay({
|
|
59
|
+
* destination: 'GDESTWVX3VMLQCXPHPVLS3FMNMG2X7L5IGGQT7BQMIZXZZ4V7KBQVS',
|
|
60
|
+
* amount: '0.50',
|
|
61
|
+
* sourcePublicKey: keypair.publicKey(),
|
|
62
|
+
* resource: '/api/data-endpoint',
|
|
63
|
+
* }, keypair.secret());
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* Note: stellar-sdk must be installed separately:
|
|
67
|
+
* npm install @stellar/stellar-sdk
|
|
68
|
+
*/
|
|
69
|
+
export class StellarX402Adapter {
|
|
70
|
+
constructor(config = {}) {
|
|
71
|
+
this.network = config.network ?? 'pubnet';
|
|
72
|
+
this.horizonUrl = config.horizonUrl ?? STELLAR_NETWORK[this.network].horizonUrl;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse an x402 402 response and extract Stellar payment details.
|
|
76
|
+
* The 402 response should include X-Payment-Chains: stellar:pubnet
|
|
77
|
+
* and X-Payment-Amount, X-Payment-Destination headers.
|
|
78
|
+
*/
|
|
79
|
+
parseX402Response(headers) {
|
|
80
|
+
const chains = headers['x-payment-chains'] ?? headers['X-Payment-Chains'] ?? '';
|
|
81
|
+
const chainId = STELLAR_NETWORK[this.network].chainId;
|
|
82
|
+
if (!chains.includes(chainId) && !chains.includes('stellar')) {
|
|
83
|
+
return { supported: false };
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
supported: true,
|
|
87
|
+
destination: headers['x-payment-destination'] ?? headers['X-Payment-Destination'],
|
|
88
|
+
amount: headers['x-payment-amount'] ?? headers['X-Payment-Amount'],
|
|
89
|
+
resource: headers['x-payment-resource'] ?? headers['X-Payment-Resource'],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build a Stellar USDC payment transaction.
|
|
94
|
+
*
|
|
95
|
+
* Requires @stellar/stellar-sdk to be installed:
|
|
96
|
+
* npm install @stellar/stellar-sdk
|
|
97
|
+
*
|
|
98
|
+
* Returns the XDR-encoded transaction envelope for signing and submission.
|
|
99
|
+
*/
|
|
100
|
+
async buildPaymentTransaction(request) {
|
|
101
|
+
let StellarSdk;
|
|
102
|
+
try {
|
|
103
|
+
StellarSdk = await import('@stellar/stellar-sdk');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
throw new Error('Stellar support requires @stellar/stellar-sdk: npm install @stellar/stellar-sdk');
|
|
107
|
+
}
|
|
108
|
+
const networkConfig = STELLAR_NETWORK[request.network ?? this.network];
|
|
109
|
+
const usdcAsset = STELLAR_USDC[request.network ?? this.network];
|
|
110
|
+
// Load source account sequence number from Horizon
|
|
111
|
+
const account = await this._loadAccount(request.sourcePublicKey, networkConfig.horizonUrl);
|
|
112
|
+
const stellarAccount = new StellarSdk.Account(request.sourcePublicKey, account.sequence);
|
|
113
|
+
const asset = new StellarSdk.Asset(usdcAsset.code, usdcAsset.issuer);
|
|
114
|
+
const memoText = request.resource
|
|
115
|
+
? request.resource.slice(0, 28) // Stellar memo max 28 bytes
|
|
116
|
+
: 'x402-payment';
|
|
117
|
+
const transaction = new StellarSdk.TransactionBuilder(stellarAccount, {
|
|
118
|
+
fee: StellarSdk.BASE_FEE,
|
|
119
|
+
networkPassphrase: networkConfig.networkPassphrase,
|
|
120
|
+
})
|
|
121
|
+
.addOperation(StellarSdk.Operation.payment({
|
|
122
|
+
destination: request.destination,
|
|
123
|
+
asset,
|
|
124
|
+
amount: request.amount,
|
|
125
|
+
}))
|
|
126
|
+
.addMemo(StellarSdk.Memo.text(memoText))
|
|
127
|
+
.setTimeout(300) // 5 minute window
|
|
128
|
+
.build();
|
|
129
|
+
return transaction.toXDR();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Submit a signed Stellar transaction to Horizon.
|
|
133
|
+
*/
|
|
134
|
+
async submitTransaction(signedXdr) {
|
|
135
|
+
const networkConfig = STELLAR_NETWORK[this.network];
|
|
136
|
+
const body = new URLSearchParams({ tx: signedXdr }).toString();
|
|
137
|
+
const resp = await fetch(`${networkConfig.horizonUrl}/transactions`, {
|
|
138
|
+
method: 'POST',
|
|
139
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
140
|
+
body,
|
|
141
|
+
});
|
|
142
|
+
if (!resp.ok) {
|
|
143
|
+
const err = await resp.text();
|
|
144
|
+
throw new Error(`Stellar transaction failed: ${resp.status} ${err.slice(0, 200)}`);
|
|
145
|
+
}
|
|
146
|
+
const result = await resp.json();
|
|
147
|
+
return {
|
|
148
|
+
hash: result.hash,
|
|
149
|
+
ledger: result.ledger,
|
|
150
|
+
successful: result.successful ?? true,
|
|
151
|
+
network: this.network,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
async _loadAccount(publicKey, horizonUrl) {
|
|
155
|
+
const resp = await fetch(`${horizonUrl}/accounts/${publicKey}`);
|
|
156
|
+
if (!resp.ok) {
|
|
157
|
+
throw new Error(`Cannot load Stellar account ${publicKey}: ${resp.status}. ` +
|
|
158
|
+
`Ensure the account exists and has a USDC trustline established.`);
|
|
159
|
+
}
|
|
160
|
+
const data = await resp.json();
|
|
161
|
+
return { sequence: data.sequence };
|
|
162
|
+
}
|
|
163
|
+
/** Chain ID for this adapter (e.g. "stellar:pubnet") */
|
|
164
|
+
get chainId() {
|
|
165
|
+
return STELLAR_NETWORK[this.network].chainId;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ─── x402 Auto-Pay Helper ────────────────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* Full x402 payment flow for Stellar.
|
|
171
|
+
* 1. Detects 402 response from API
|
|
172
|
+
* 2. Parses Stellar payment details from headers
|
|
173
|
+
* 3. Builds, signs, and submits Stellar USDC payment
|
|
174
|
+
* 4. Retries the original request with payment proof
|
|
175
|
+
*
|
|
176
|
+
* Requires stellar-sdk: npm install @stellar/stellar-sdk
|
|
177
|
+
*/
|
|
178
|
+
export async function stellarX402Pay(params) {
|
|
179
|
+
const adapter = new StellarX402Adapter({ network: params.network ?? 'pubnet' });
|
|
180
|
+
const details = adapter.parseX402Response(params.responseHeaders);
|
|
181
|
+
if (!details.supported) {
|
|
182
|
+
throw new Error('This endpoint does not support Stellar x402 payments');
|
|
183
|
+
}
|
|
184
|
+
if (!details.destination || !details.amount) {
|
|
185
|
+
throw new Error('x402 response missing destination or amount headers');
|
|
186
|
+
}
|
|
187
|
+
const xdr = await adapter.buildPaymentTransaction({
|
|
188
|
+
destination: details.destination,
|
|
189
|
+
amount: details.amount,
|
|
190
|
+
sourcePublicKey: params.sourcePublicKey,
|
|
191
|
+
resource: details.resource,
|
|
192
|
+
network: params.network ?? 'pubnet',
|
|
193
|
+
});
|
|
194
|
+
const signedXdr = await params.sign(xdr);
|
|
195
|
+
return adapter.submitTransaction(signedXdr);
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=index.js.map
|