agentwallet-sdk 3.3.0 → 3.4.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 (320) hide show
  1. package/README.md +2 -536
  2. package/dist/bridge/abis.d.ts +48 -171
  3. package/dist/bridge/abis.d.ts.map +1 -1
  4. package/dist/bridge/abis.js.map +1 -1
  5. package/dist/bridge/client.d.ts +2 -41
  6. package/dist/bridge/client.d.ts.map +1 -1
  7. package/dist/bridge/client.js +35 -168
  8. package/dist/bridge/client.js.map +1 -1
  9. package/dist/bridge/index.d.ts +2 -4
  10. package/dist/bridge/index.d.ts.map +1 -1
  11. package/dist/bridge/index.js +1 -8
  12. package/dist/bridge/index.js.map +1 -1
  13. package/dist/bridge/types.d.ts +15 -134
  14. package/dist/bridge/types.d.ts.map +1 -1
  15. package/dist/bridge/types.js +16 -170
  16. package/dist/bridge/types.js.map +1 -1
  17. package/dist/identity/erc8004.d.ts +2 -240
  18. package/dist/identity/erc8004.d.ts.map +1 -1
  19. package/dist/identity/erc8004.js +58 -334
  20. package/dist/identity/erc8004.js.map +1 -1
  21. package/dist/index.d.ts +313 -136
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +11 -59
  24. package/dist/index.js.map +1 -1
  25. package/dist/swap/SwapModule.d.ts +6 -50
  26. package/dist/swap/SwapModule.d.ts.map +1 -1
  27. package/dist/swap/SwapModule.js +25 -153
  28. package/dist/swap/SwapModule.js.map +1 -1
  29. package/dist/swap/abi.d.ts +47 -165
  30. package/dist/swap/abi.d.ts.map +1 -1
  31. package/dist/swap/abi.js.map +1 -1
  32. package/dist/swap/index.d.ts +2 -3
  33. package/dist/swap/index.d.ts.map +1 -1
  34. package/dist/swap/index.js +1 -4
  35. package/dist/swap/index.js.map +1 -1
  36. package/dist/swap/types.d.ts +6 -36
  37. package/dist/swap/types.d.ts.map +1 -1
  38. package/dist/swap/types.js +0 -1
  39. package/dist/swap/types.js.map +1 -1
  40. package/dist/types.d.ts +1 -2
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js +0 -1
  43. package/dist/types.js.map +1 -1
  44. package/dist/x402/__tests__/budget.test.d.ts +2 -0
  45. package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
  46. package/dist/x402/__tests__/budget.test.js +114 -0
  47. package/dist/x402/__tests__/budget.test.js.map +1 -0
  48. package/dist/x402/__tests__/client.test.d.ts +2 -0
  49. package/dist/x402/__tests__/client.test.d.ts.map +1 -0
  50. package/dist/x402/__tests__/client.test.js +107 -0
  51. package/dist/x402/__tests__/client.test.js.map +1 -0
  52. package/dist/x402/chains/abstract/index.d.ts +135 -0
  53. package/dist/x402/chains/abstract/index.d.ts.map +1 -0
  54. package/dist/x402/chains/abstract/index.js +190 -0
  55. package/dist/x402/chains/abstract/index.js.map +1 -0
  56. package/dist/x402/client.d.ts +1 -4
  57. package/dist/x402/client.d.ts.map +1 -1
  58. package/dist/x402/client.js +2 -16
  59. package/dist/x402/client.js.map +1 -1
  60. package/dist/x402/index.d.ts +3 -1
  61. package/dist/x402/index.d.ts.map +1 -1
  62. package/dist/x402/index.js +3 -1
  63. package/dist/x402/index.js.map +1 -1
  64. package/dist/x402/types.d.ts +3 -5
  65. package/dist/x402/types.d.ts.map +1 -1
  66. package/dist/x402/types.js +2 -17
  67. package/dist/x402/types.js.map +1 -1
  68. package/package.json +12 -32
  69. package/dist/ap2/index.d.ts +0 -185
  70. package/dist/ap2/index.d.ts.map +0 -1
  71. package/dist/ap2/index.js +0 -255
  72. package/dist/ap2/index.js.map +0 -1
  73. package/dist/bridge/unified.d.ts +0 -101
  74. package/dist/bridge/unified.d.ts.map +0 -1
  75. package/dist/bridge/unified.js +0 -284
  76. package/dist/bridge/unified.js.map +0 -1
  77. package/dist/chains.d.ts +0 -62
  78. package/dist/chains.d.ts.map +0 -1
  79. package/dist/chains.js +0 -108
  80. package/dist/chains.js.map +0 -1
  81. package/dist/fiat/index.d.ts +0 -10
  82. package/dist/fiat/index.d.ts.map +0 -1
  83. package/dist/fiat/index.js +0 -9
  84. package/dist/fiat/index.js.map +0 -1
  85. package/dist/fiat/onramp.d.ts +0 -101
  86. package/dist/fiat/onramp.d.ts.map +0 -1
  87. package/dist/fiat/onramp.js +0 -155
  88. package/dist/fiat/onramp.js.map +0 -1
  89. package/dist/fiat/providers/index.d.ts +0 -16
  90. package/dist/fiat/providers/index.d.ts.map +0 -1
  91. package/dist/fiat/providers/index.js +0 -30
  92. package/dist/fiat/providers/index.js.map +0 -1
  93. package/dist/fiat/providers/moonpay.d.ts +0 -22
  94. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  95. package/dist/fiat/providers/moonpay.js +0 -107
  96. package/dist/fiat/providers/moonpay.js.map +0 -1
  97. package/dist/fiat/providers/stripe.d.ts +0 -26
  98. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  99. package/dist/fiat/providers/stripe.js +0 -135
  100. package/dist/fiat/providers/stripe.js.map +0 -1
  101. package/dist/fiat/providers/transak.d.ts +0 -26
  102. package/dist/fiat/providers/transak.d.ts.map +0 -1
  103. package/dist/fiat/providers/transak.js +0 -119
  104. package/dist/fiat/providers/transak.js.map +0 -1
  105. package/dist/fiat/types.d.ts +0 -106
  106. package/dist/fiat/types.d.ts.map +0 -1
  107. package/dist/fiat/types.js +0 -13
  108. package/dist/fiat/types.js.map +0 -1
  109. package/dist/flash/executor.d.ts +0 -119
  110. package/dist/flash/executor.d.ts.map +0 -1
  111. package/dist/flash/executor.js +0 -195
  112. package/dist/flash/executor.js.map +0 -1
  113. package/dist/flash/index.d.ts +0 -28
  114. package/dist/flash/index.d.ts.map +0 -1
  115. package/dist/flash/index.js +0 -25
  116. package/dist/flash/index.js.map +0 -1
  117. package/dist/flash/scanner.d.ts +0 -133
  118. package/dist/flash/scanner.d.ts.map +0 -1
  119. package/dist/flash/scanner.js +0 -212
  120. package/dist/flash/scanner.js.map +0 -1
  121. package/dist/flash/types.d.ts +0 -136
  122. package/dist/flash/types.d.ts.map +0 -1
  123. package/dist/flash/types.js +0 -23
  124. package/dist/flash/types.js.map +0 -1
  125. package/dist/gas/index.d.ts +0 -4
  126. package/dist/gas/index.d.ts.map +0 -1
  127. package/dist/gas/index.js +0 -3
  128. package/dist/gas/index.js.map +0 -1
  129. package/dist/gas/sponsor.d.ts +0 -70
  130. package/dist/gas/sponsor.d.ts.map +0 -1
  131. package/dist/gas/sponsor.js +0 -193
  132. package/dist/gas/sponsor.js.map +0 -1
  133. package/dist/gas/types.d.ts +0 -76
  134. package/dist/gas/types.d.ts.map +0 -1
  135. package/dist/gas/types.js +0 -21
  136. package/dist/gas/types.js.map +0 -1
  137. package/dist/identity/agent-identity.d.ts +0 -276
  138. package/dist/identity/agent-identity.d.ts.map +0 -1
  139. package/dist/identity/agent-identity.js +0 -300
  140. package/dist/identity/agent-identity.js.map +0 -1
  141. package/dist/identity/erc6551.d.ts +0 -441
  142. package/dist/identity/erc6551.d.ts.map +0 -1
  143. package/dist/identity/erc6551.js +0 -517
  144. package/dist/identity/erc6551.js.map +0 -1
  145. package/dist/mev/index.d.ts +0 -4
  146. package/dist/mev/index.d.ts.map +0 -1
  147. package/dist/mev/index.js +0 -4
  148. package/dist/mev/index.js.map +0 -1
  149. package/dist/mev/protection.d.ts +0 -54
  150. package/dist/mev/protection.d.ts.map +0 -1
  151. package/dist/mev/protection.js +0 -185
  152. package/dist/mev/protection.js.map +0 -1
  153. package/dist/mev/risk.d.ts +0 -19
  154. package/dist/mev/risk.d.ts.map +0 -1
  155. package/dist/mev/risk.js +0 -95
  156. package/dist/mev/risk.js.map +0 -1
  157. package/dist/mev/types.d.ts +0 -49
  158. package/dist/mev/types.d.ts.map +0 -1
  159. package/dist/mev/types.js +0 -2
  160. package/dist/mev/types.js.map +0 -1
  161. package/dist/settlement/index.d.ts +0 -4
  162. package/dist/settlement/index.d.ts.map +0 -1
  163. package/dist/settlement/index.js +0 -3
  164. package/dist/settlement/index.js.map +0 -1
  165. package/dist/settlement/types.d.ts +0 -66
  166. package/dist/settlement/types.d.ts.map +0 -1
  167. package/dist/settlement/types.js +0 -37
  168. package/dist/settlement/types.js.map +0 -1
  169. package/dist/settlement/verifier.d.ts +0 -75
  170. package/dist/settlement/verifier.d.ts.map +0 -1
  171. package/dist/settlement/verifier.js +0 -354
  172. package/dist/settlement/verifier.js.map +0 -1
  173. package/dist/solana/bridge.d.ts +0 -144
  174. package/dist/solana/bridge.d.ts.map +0 -1
  175. package/dist/solana/bridge.js +0 -352
  176. package/dist/solana/bridge.js.map +0 -1
  177. package/dist/solana/index.d.ts +0 -8
  178. package/dist/solana/index.d.ts.map +0 -1
  179. package/dist/solana/index.js +0 -6
  180. package/dist/solana/index.js.map +0 -1
  181. package/dist/solana/swap.d.ts +0 -85
  182. package/dist/solana/swap.d.ts.map +0 -1
  183. package/dist/solana/swap.js +0 -173
  184. package/dist/solana/swap.js.map +0 -1
  185. package/dist/solana/types.d.ts +0 -126
  186. package/dist/solana/types.d.ts.map +0 -1
  187. package/dist/solana/types.js +0 -10
  188. package/dist/solana/types.js.map +0 -1
  189. package/dist/solana/wallet.d.ts +0 -83
  190. package/dist/solana/wallet.d.ts.map +0 -1
  191. package/dist/solana/wallet.js +0 -164
  192. package/dist/solana/wallet.js.map +0 -1
  193. package/dist/solana/x402.d.ts +0 -69
  194. package/dist/solana/x402.d.ts.map +0 -1
  195. package/dist/solana/x402.js +0 -154
  196. package/dist/solana/x402.js.map +0 -1
  197. package/dist/solver/adapter.d.ts +0 -47
  198. package/dist/solver/adapter.d.ts.map +0 -1
  199. package/dist/solver/adapter.js +0 -138
  200. package/dist/solver/adapter.js.map +0 -1
  201. package/dist/solver/analyzer.d.ts +0 -48
  202. package/dist/solver/analyzer.d.ts.map +0 -1
  203. package/dist/solver/analyzer.js +0 -89
  204. package/dist/solver/analyzer.js.map +0 -1
  205. package/dist/solver/builder.d.ts +0 -31
  206. package/dist/solver/builder.d.ts.map +0 -1
  207. package/dist/solver/builder.js +0 -60
  208. package/dist/solver/builder.js.map +0 -1
  209. package/dist/solver/index.d.ts +0 -22
  210. package/dist/solver/index.d.ts.map +0 -1
  211. package/dist/solver/index.js +0 -21
  212. package/dist/solver/index.js.map +0 -1
  213. package/dist/solver/types.d.ts +0 -115
  214. package/dist/solver/types.d.ts.map +0 -1
  215. package/dist/solver/types.js +0 -10
  216. package/dist/solver/types.js.map +0 -1
  217. package/dist/spend-guard/index.d.ts +0 -125
  218. package/dist/spend-guard/index.d.ts.map +0 -1
  219. package/dist/spend-guard/index.js +0 -150
  220. package/dist/spend-guard/index.js.map +0 -1
  221. package/dist/swap/router/cache.d.ts +0 -13
  222. package/dist/swap/router/cache.d.ts.map +0 -1
  223. package/dist/swap/router/cache.js +0 -30
  224. package/dist/swap/router/cache.js.map +0 -1
  225. package/dist/swap/router/flashbots.d.ts +0 -10
  226. package/dist/swap/router/flashbots.d.ts.map +0 -1
  227. package/dist/swap/router/flashbots.js +0 -43
  228. package/dist/swap/router/flashbots.js.map +0 -1
  229. package/dist/swap/router/health.d.ts +0 -17
  230. package/dist/swap/router/health.d.ts.map +0 -1
  231. package/dist/swap/router/health.js +0 -38
  232. package/dist/swap/router/health.js.map +0 -1
  233. package/dist/swap/router/index.d.ts +0 -10
  234. package/dist/swap/router/index.d.ts.map +0 -1
  235. package/dist/swap/router/index.js +0 -10
  236. package/dist/swap/router/index.js.map +0 -1
  237. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  238. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  239. package/dist/swap/router/providers/cowswap.js +0 -79
  240. package/dist/swap/router/providers/cowswap.js.map +0 -1
  241. package/dist/swap/router/providers/index.d.ts +0 -20
  242. package/dist/swap/router/providers/index.d.ts.map +0 -1
  243. package/dist/swap/router/providers/index.js +0 -32
  244. package/dist/swap/router/providers/index.js.map +0 -1
  245. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  246. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  247. package/dist/swap/router/providers/jupiter.js +0 -73
  248. package/dist/swap/router/providers/jupiter.js.map +0 -1
  249. package/dist/swap/router/providers/lifi.d.ts +0 -11
  250. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  251. package/dist/swap/router/providers/lifi.js +0 -123
  252. package/dist/swap/router/providers/lifi.js.map +0 -1
  253. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  254. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  255. package/dist/swap/router/providers/oneinch.js +0 -71
  256. package/dist/swap/router/providers/oneinch.js.map +0 -1
  257. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  258. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  259. package/dist/swap/router/providers/paraswap.js +0 -73
  260. package/dist/swap/router/providers/paraswap.js.map +0 -1
  261. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  262. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  263. package/dist/swap/router/providers/uniswap.js +0 -116
  264. package/dist/swap/router/providers/uniswap.js.map +0 -1
  265. package/dist/swap/router/providers/zerox.d.ts +0 -13
  266. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  267. package/dist/swap/router/providers/zerox.js +0 -94
  268. package/dist/swap/router/providers/zerox.js.map +0 -1
  269. package/dist/swap/router/router.d.ts +0 -86
  270. package/dist/swap/router/router.d.ts.map +0 -1
  271. package/dist/swap/router/router.js +0 -224
  272. package/dist/swap/router/router.js.map +0 -1
  273. package/dist/swap/router/rsi/engine.d.ts +0 -60
  274. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  275. package/dist/swap/router/rsi/engine.js +0 -483
  276. package/dist/swap/router/rsi/engine.js.map +0 -1
  277. package/dist/swap/router/rsi/index.d.ts +0 -3
  278. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  279. package/dist/swap/router/rsi/index.js +0 -3
  280. package/dist/swap/router/rsi/index.js.map +0 -1
  281. package/dist/swap/router/rsi/types.d.ts +0 -106
  282. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  283. package/dist/swap/router/rsi/types.js +0 -3
  284. package/dist/swap/router/rsi/types.js.map +0 -1
  285. package/dist/swap/router/types.d.ts +0 -120
  286. package/dist/swap/router/types.d.ts.map +0 -1
  287. package/dist/swap/router/types.js +0 -16
  288. package/dist/swap/router/types.js.map +0 -1
  289. package/dist/tax/engine.d.ts +0 -131
  290. package/dist/tax/engine.d.ts.map +0 -1
  291. package/dist/tax/engine.js +0 -307
  292. package/dist/tax/engine.js.map +0 -1
  293. package/dist/tax/index.d.ts +0 -9
  294. package/dist/tax/index.d.ts.map +0 -1
  295. package/dist/tax/index.js +0 -8
  296. package/dist/tax/index.js.map +0 -1
  297. package/dist/tax/lots.d.ts +0 -60
  298. package/dist/tax/lots.d.ts.map +0 -1
  299. package/dist/tax/lots.js +0 -129
  300. package/dist/tax/lots.js.map +0 -1
  301. package/dist/tax/types.d.ts +0 -113
  302. package/dist/tax/types.d.ts.map +0 -1
  303. package/dist/tax/types.js +0 -18
  304. package/dist/tax/types.js.map +0 -1
  305. package/dist/yield/index.d.ts +0 -26
  306. package/dist/yield/index.d.ts.map +0 -1
  307. package/dist/yield/index.js +0 -25
  308. package/dist/yield/index.js.map +0 -1
  309. package/dist/yield/rates.d.ts +0 -114
  310. package/dist/yield/rates.d.ts.map +0 -1
  311. package/dist/yield/rates.js +0 -351
  312. package/dist/yield/rates.js.map +0 -1
  313. package/dist/yield/types.d.ts +0 -134
  314. package/dist/yield/types.d.ts.map +0 -1
  315. package/dist/yield/types.js +0 -24
  316. package/dist/yield/types.js.map +0 -1
  317. package/dist/yield/vault.d.ts +0 -112
  318. package/dist/yield/vault.d.ts.map +0 -1
  319. package/dist/yield/vault.js +0 -264
  320. package/dist/yield/vault.js.map +0 -1
package/README.md CHANGED
@@ -10,22 +10,6 @@ Agent wants to spend $500 → ⏳ Queued for your approval
10
10
  Agent spent $490 today → 🛑 Next tx queued ($500/day limit hit)
11
11
  ```text
12
12
 
13
- ## How We Compare
14
-
15
- | | **agentwallet-sdk** | **Coinbase Agentic** | **OKX OnchainOS** | **Binance Agent** | **MoonPay Agents** |
16
- |---|---|---|---|---|---|
17
- | **Custody** | Non-custodial (agent holds keys) | Semi-custodial (TEE) | Custodial (exchange) | Custodial (exchange) | Non-custodial (claimed) |
18
- | **Spend Limits** | On-chain (smart contract) | API-enforced | Not documented | Not documented | Not documented |
19
- | **Chains** | **17** (16 EVM + Solana) | Base only | 60+ (custodial) | Binance chain | Unclear |
20
- | **Agent Identity** | ERC-8004 + ERC-6551 | None | None | None | None |
21
- | **Open Source** | MIT | Partial | Closed | Closed | Closed |
22
- | **x402 Payments** | Native | Supported | Supported | No | "Compatible" |
23
- | **Jupiter Swaps** | Yes (Solana) | No | No | No | No |
24
- | **CCTP Bridging** | 17-chain V2 | No | Partial | No | No |
25
- | **If exchange goes down** | Agent keeps working | Degraded | Agent stops | Agent stops | Unknown |
26
-
27
- > On-chain spend limits can't be bypassed even if the API layer is compromised. Exchanges can freeze your agent's account. A non-custodial smart contract can't. That's the difference between policy and math.
28
-
29
13
  ## Why Agent Wallet?
30
14
 
31
15
  | Approach | Problem |
@@ -199,8 +183,6 @@ for (const entry of history) {
199
183
 
200
184
  ## Supported Chains
201
185
 
202
- ### Wallet / Execution Chains
203
-
204
186
  | Chain | Status | Best For |
205
187
  |-------|--------|----------|
206
188
  | **Base** | ✅ Primary | Low gas, USDC native |
@@ -209,108 +191,6 @@ for (const entry of history) {
209
191
  | **Arbitrum** | ✅ | DeFi agents |
210
192
  | **Polygon** | ✅ | Micropayments |
211
193
 
212
- ### CCTP V2 Bridge — 17 Chains (v3.1.0)
213
-
214
- Bridge USDC between any two supported chains via Circle's Cross-Chain Transfer Protocol V2. **0.1% platform fee.** Uses the same non-custodial, agent-native architecture.
215
-
216
- ```typescript
217
- import { UnifiedBridge } from 'agentwallet-sdk';
218
-
219
- const bridge = new UnifiedBridge({ evmSigner, solanaWallet });
220
-
221
- // Bridge 1 USDC from Solana to Base (~20s fast transfer)
222
- const result = await bridge.bridge({
223
- amount: 1_000_000n, // 1 USDC (6 decimals)
224
- sourceChain: 'solana',
225
- destinationChain: 'base',
226
- destinationAddress: '0x...',
227
- });
228
- console.log('Minted on Base:', result.mintTxHash);
229
-
230
- // Bridge from Polygon to Arbitrum
231
- const result2 = await bridge.bridge({
232
- amount: 5_000_000n, // 5 USDC
233
- sourceChain: 'polygon',
234
- destinationChain: 'arbitrum',
235
- destinationAddress: '0x...',
236
- });
237
-
238
- // Get a fee quote
239
- const quote = bridge.getQuote({
240
- amount: 1_000_000n,
241
- sourceChain: 'base',
242
- destinationChain: 'sonic',
243
- });
244
- console.log(`Fee: ${quote.platformFee} USDC (0.1%)`);
245
- console.log(`Est. time: ${quote.estimatedTimeSeconds}s`);
246
- console.log(`Output: ${quote.outputAmount} USDC`);
247
-
248
- // All 17 chains
249
- console.log(bridge.getSupportedChains());
250
- // ['ethereum','avalanche','optimism','arbitrum','base','polygon',
251
- // 'unichain','linea','codex','sonic','worldchain','sei','xdc',
252
- // 'hyperevm','ink','plume','solana']
253
- ```
254
-
255
- #### Supported Bridge Chains
256
-
257
- | Chain | CCTP Domain | Chain ID | Fast Transfer |
258
- |-------|-------------|----------|---------------|
259
- | Ethereum | 0 | 1 | ✅ ~20s |
260
- | Avalanche | 1 | 43114 | ⏱ ~15min |
261
- | OP Mainnet | 2 | 10 | ✅ ~20s |
262
- | Arbitrum | 3 | 42161 | ✅ ~20s |
263
- | **Solana** | 5 | — | ✅ ~20s |
264
- | Base | 6 | 8453 | ✅ ~20s |
265
- | Polygon PoS | 7 | 137 | ⏱ ~15min |
266
- | Unichain | 10 | 130 | ✅ ~20s |
267
- | Linea | 11 | 59144 | ✅ ~20s |
268
- | Codex | 12 | 812 | ✅ ~20s |
269
- | Sonic | 13 | 146 | ⏱ ~15min |
270
- | World Chain | 14 | 480 | ✅ ~20s |
271
- | Sei | 16 | 1329 | ⏱ ~15min |
272
- | XDC | 18 | 50 | ⏱ ~15min |
273
- | HyperEVM | 19 | 999 | ⏱ ~15min |
274
- | Ink | 21 | 57073 | ✅ ~20s |
275
- | Plume | 22 | 98866 | ✅ ~20s |
276
-
277
- Contract addresses verified from Circle's official docs:
278
- - **TokenMessengerV2**: `0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d` (all EVM chains)
279
- - **MessageTransmitterV2**: `0x81D40F21F12A8F0E3252Bccb954D722d4c464B64` (all EVM chains)
280
-
281
- #### EVM-Only Bridge (BridgeModule)
282
-
283
- For EVM→EVM routes you can use `BridgeModule` directly (no Solana dependency):
284
-
285
- ```typescript
286
- import { BridgeModule } from 'agentwallet-sdk';
287
-
288
- const bridge = new BridgeModule(walletClient, 'base');
289
- const result = await bridge.bridge(1_000_000n, 'polygon');
290
- console.log('Minted on Polygon:', result.mintTxHash);
291
- ```
292
-
293
- #### Solana-Side Operations (SolanaCCTPBridge)
294
-
295
- ```typescript
296
- import { SolanaCCTPBridge } from 'agentwallet-sdk';
297
- import { Connection, Keypair } from '@solana/web3.js';
298
-
299
- const solanaBridge = new SolanaCCTPBridge({
300
- connection: new Connection('https://api.mainnet-beta.solana.com'),
301
- payer: keypair,
302
- });
303
-
304
- // Burn USDC on Solana → receive on Base
305
- const burnResult = await solanaBridge.depositForBurn({
306
- amount: 1_000_000n,
307
- destinationChain: 'base',
308
- destinationAddress: '0x...',
309
- });
310
- const attestation = await solanaBridge.waitForAttestation(burnResult.messageHash);
311
- // ... then call receiveMessage on Base
312
- ```
313
-
314
194
  ## x402 Protocol Support
315
195
 
316
196
  Agent Wallet natively supports the [x402 protocol](https://x402.org) — the open standard for HTTP 402 machine payments. Your agent can automatically pay any x402-enabled API (Stripe, Coinbase, etc.) using USDC on Base, while respecting on-chain spend limits.
@@ -403,430 +283,16 @@ Server verifies payment → returns 200 + data
403
283
 
404
284
  Your agent's keys never leave the non-custodial wallet. All payments respect on-chain spend limits set by the wallet owner.
405
285
 
406
- ## ERC-8004: On-Chain Agent Identity (v2.3.0)
407
-
408
- Give your AI agent a portable, censorship-resistant identity on Ethereum via [ERC-8004 Trustless Agents](https://eips.ethereum.org/EIPS/eip-8004).
409
-
410
- ERC-8004 provides three things:
411
-
412
- - **Identity Registry** — ERC-721 NFT that resolves to an agent's registration file (name, description, services, capabilities)
413
- - **Reputation Registry** — On-chain feedback signals (composable scoring)
414
- - **Validation Registry** — Hooks for stakers, zkML verifiers, and TEE oracles
415
-
416
- The SDK integrates the Identity Registry. Non-custodial — keys never leave the device.
417
-
418
- ```typescript
419
- import { ERC8004Client, buildDataURI, validateRegistrationFile } from '@agentwallet/sdk';
420
-
421
- const identity = new ERC8004Client({
422
- registryAddress: '0xYOUR_REGISTRY',
423
- chain: 'base',
424
- });
425
-
426
- // Register your agent on-chain (auto-builds data URI if you don't pass one)
427
- const { txHash, agentId } = await identity.registerAgent(
428
- walletClient,
429
- {
430
- name: 'TradingAgent',
431
- description: 'Autonomous DeFi trading agent with x402 support',
432
- services: [
433
- { name: 'A2A', endpoint: 'https://agent.example/.well-known/agent-card.json', version: '0.3.0' },
434
- { name: 'MCP', endpoint: 'https://mcp.agent.example/', version: '2025-06-18' },
435
- ],
436
- x402Support: true,
437
- active: true,
438
- supportedTrust: ['reputation'],
439
- },
440
- 'ipfs://QmYourCID' // or omit to store fully on-chain as data URI
441
- );
442
-
443
- // Register the AI model powering this agent
444
- await identity.setModelMetadata(walletClient, agentId!, {
445
- model: 'claude-3-5-sonnet',
446
- provider: 'anthropic',
447
- version: '2.3.0',
448
- capabilities: ['trading', 'research', 'payments'],
449
- framework: 'custom',
450
- });
451
-
452
- // Resolve any agent's full identity
453
- const agentData = await identity.lookupAgentIdentity(42n);
454
- console.log(agentData.registrationFile?.name); // "TradingAgent"
455
- console.log(agentData.modelMetadata?.model); // "claude-3-5-sonnet"
456
- console.log(agentData.owner); // NFT owner address
457
-
458
- // Validate a registration file before publishing
459
- const errors = validateRegistrationFile(agentData.registrationFile!);
460
- if (errors.length === 0) console.log('Valid ERC-8004 registration ✅');
461
- ```text
462
-
463
- ### Agent Registry Identifier
464
-
465
- Each agent is globally identified by a namespaced string:
466
-
467
- ```text
468
- eip155:8453:0xRegistryAddress ← namespace:chainId:contractAddress
469
- ```text
470
-
471
- ```typescript
472
- import { formatAgentRegistry } from '@agentwallet/sdk';
473
- const id = formatAgentRegistry(8453, '0xYOUR_REGISTRY');
474
- // → "eip155:8453:0xYOUR_REGISTRY"
475
- ```text
476
-
477
- ### Fully On-Chain Storage (No IPFS Required)
478
-
479
- ```typescript
480
- import { buildDataURI, parseDataURI } from '@agentwallet/sdk';
481
-
482
- // Encode registration file as a base64 data URI (embeds in the NFT)
483
- const uri = buildDataURI({ name: 'MyAgent', description: '...', type: '...' });
484
- // → "data:application/json;base64,eyJ0eXBlIjoi..."
485
-
486
- // Decode it back
487
- const file = parseDataURI(uri);
488
- ```text
489
-
490
- ---
491
-
492
286
  ## How It Works
493
287
 
494
288
  1. **Deploy** an AgentAccountV2 (ERC-6551 token-bound account tied to an NFT)
495
289
  2. **Configure** spend policies per token — set per-tx and daily limits
496
290
  3. **Register** your agent's hot wallet as an operator
497
- 4. **Register on-chain identity** via ERC-8004 (optional but recommended)
498
- 5. **Agent operates autonomously** — transactions within limits execute instantly
499
- 6. **Over-limit transactions queue** — owner gets notified, approves or cancels
291
+ 4. **Agent operates autonomously** transactions within limits execute instantly
292
+ 5. **Over-limit transactions queue** — owner gets notified, approves or cancels
500
293
 
501
294
  All limits enforced on-chain. No off-chain dependencies. Fully auditable.
502
295
 
503
- ## Solana Support (v3.0.0)
504
-
505
- Solana is now a first-class chain in the SDK. Unlike EVM chains, Solana uses Ed25519 keys, SPL tokens, and Jupiter for swaps — all fully supported.
506
-
507
- ### Install
508
-
509
- ```bash
510
- npm install agentwallet-sdk @solana/web3.js @solana/spl-token
511
- ```
512
-
513
- ### SolanaWallet — Non-Custodial Agent Wallet
514
-
515
- ```typescript
516
- import { SolanaWallet, SOLANA_USDC_MINT } from 'agentwallet-sdk';
517
-
518
- // Generate a fresh keypair (ephemeral agent wallet)
519
- const wallet = SolanaWallet.generate('https://api.mainnet-beta.solana.com');
520
-
521
- // Or load from existing base58 private key
522
- const wallet2 = SolanaWallet.fromBase58(process.env.SOLANA_PRIVATE_KEY!, 'https://api.mainnet-beta.solana.com');
523
-
524
- // Get address (base58 public key)
525
- console.log(wallet.getAddress());
526
-
527
- // Check SOL balance (in lamports)
528
- const lamports = await wallet.getBalance();
529
- console.log(`${Number(lamports) / 1e9} SOL`);
530
-
531
- // Check USDC balance (6 decimals)
532
- const usdc = await wallet.getBalance(SOLANA_USDC_MINT);
533
- console.log(`${Number(usdc) / 1e6} USDC`);
534
-
535
- // Transfer SOL
536
- const sig = await wallet.transfer({
537
- recipient: 'RecipientPubkey...',
538
- amount: 500_000_000n, // 0.5 SOL in lamports
539
- });
540
-
541
- // Transfer USDC
542
- const sig2 = await wallet.transfer({
543
- recipient: 'RecipientPubkey...',
544
- amount: 5_000_000n, // 5 USDC (6 decimals)
545
- mint: SOLANA_USDC_MINT,
546
- });
547
- ```
548
-
549
- ### JupiterSwapClient — DEX Aggregator (Solana's Uniswap)
550
-
551
- ```typescript
552
- import { SolanaWallet, JupiterSwapClient, SOLANA_USDC_MINT, SOL_NATIVE_MINT } from 'agentwallet-sdk';
553
-
554
- const wallet = SolanaWallet.fromBase58(process.env.SOLANA_KEY!, 'https://api.mainnet-beta.solana.com');
555
- const jupiter = new JupiterSwapClient({ wallet });
556
-
557
- // Get a quote: SOL → USDC
558
- const quote = await jupiter.getQuote(SOL_NATIVE_MINT, SOLANA_USDC_MINT, 1_000_000_000n);
559
- console.log(`1 SOL ≈ ${Number(quote.outAmount) / 1e6} USDC`);
560
-
561
- // Execute swap (0.875% platform fee, 0.5% default slippage)
562
- const result = await jupiter.swapSolToUsdc(500_000_000n); // 0.5 SOL
563
- console.log(`Swapped → tx: ${result.txSignature}`);
564
-
565
- // Reverse: USDC → SOL
566
- const result2 = await jupiter.swapUsdcToSol(100_000_000n); // 100 USDC
567
- ```
568
-
569
- ### SolanaX402Client — x402 Payments on Solana
570
-
571
- ```typescript
572
- import { SolanaWallet, SolanaX402Client } from 'agentwallet-sdk';
573
-
574
- const wallet = SolanaWallet.fromBase58(process.env.SOLANA_KEY!, 'https://api.mainnet-beta.solana.com');
575
- const x402 = new SolanaX402Client(wallet);
576
-
577
- // Check if this client can handle a network
578
- x402.canHandle('solana:mainnet'); // true
579
- x402.canHandle('base:8453'); // false
580
-
581
- // Validate payment requirements before paying
582
- const requirements = {
583
- scheme: 'exact',
584
- network: 'solana:mainnet' as const,
585
- asset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
586
- amount: '1000000', // 1 USDC
587
- payTo: 'RecipientPubkey...',
588
- maxTimeoutSeconds: 300,
589
- extra: {},
590
- };
591
-
592
- const { valid, reason } = x402.validateRequirements(requirements, { maxAmount: 5_000_000n });
593
- if (!valid) throw new Error(reason);
594
-
595
- // Build signed proof (without broadcasting)
596
- const proof = await x402.buildPaymentProof(requirements);
597
- // proof.signedTransaction — base64 signed tx for x402 header
598
-
599
- // Or pay directly (sign + broadcast)
600
- const paidProof = await x402.pay(requirements);
601
- console.log(`Paid! tx: ${paidProof.txSignature}`);
602
- ```
603
-
604
- ### Solana Chain Config
605
-
606
- ```typescript
607
- import { SOLANA_CONFIG, getSolanaConfig } from 'agentwallet-sdk';
608
-
609
- const mainnet = getSolanaConfig('solana');
610
- // { cluster: 'mainnet-beta', rpcUrl: '...', usdcMint: 'EPjFWdd5...', x402Network: 'solana:mainnet' }
611
-
612
- const devnet = getSolanaConfig('solana-devnet');
613
- ```
614
-
615
- ---
616
-
617
- ## Gas Sponsorship (v3.1.0)
618
-
619
- Agents don't need to hold native gas tokens. Alchemy's ERC-4337 Gas Manager sponsors gas on their behalf.
620
-
621
- **Requires:**
622
- - An Alchemy API key with Gas Manager enabled
623
- - A Gas Manager policy ID (create at [dashboard.alchemy.com/gas-manager](https://dashboard.alchemy.com/gas-manager))
624
- - An ERC-4337 smart account for the agent (plain EOAs cannot use paymasters)
625
-
626
- **Supported chains (6 of 17 CCTP chains):** `ethereum`, `base`, `arbitrum`, `optimism`, `polygon`, `worldchain`
627
-
628
- ```typescript
629
- import { GasSponsor } from 'agentwallet-sdk';
630
-
631
- const sponsor = new GasSponsor({
632
- alchemyApiKey: process.env.ALCHEMY_API_KEY!,
633
- policyId: process.env.ALCHEMY_GAS_POLICY_ID!, // from Alchemy dashboard
634
- });
635
-
636
- // Check support before attempting
637
- if (sponsor.isSupported('base')) {
638
- const sponsored = await sponsor.sponsorTransaction({
639
- chain: 'base',
640
- from: agentSmartAccountAddress, // must be ERC-4337 smart account
641
- to: usdcContract,
642
- data: transferCalldata,
643
- });
644
- // Submit sponsored.userOperation to an ERC-4337 bundler
645
- // e.g. via eth_sendUserOperation
646
- }
647
-
648
- // Sponsor a bridge transaction
649
- const sponsoredBridge = await sponsor.sponsorBridge({
650
- chain: 'optimism',
651
- from: agentSmartAccountAddress,
652
- bridgeTx: {
653
- to: TOKEN_MESSENGER_V2['optimism'],
654
- data: depositForBurnCalldata,
655
- value: 0n,
656
- },
657
- });
658
-
659
- // List all supported chains
660
- const chains = sponsor.getSupportedChains();
661
- // ['ethereum', 'base', 'arbitrum', 'optimism', 'polygon', 'worldchain']
662
- ```
663
-
664
- ---
665
-
666
- ## Settlement Verification (v3.1.0)
667
-
668
- Verify that bridge transfers and x402 payments actually settled on-chain. Useful for agents that need to confirm receipt before proceeding.
669
-
670
- ```typescript
671
- import { SettlementVerifier } from 'agentwallet-sdk';
672
-
673
- const verifier = new SettlementVerifier({
674
- alchemyApiKey: process.env.ALCHEMY_API_KEY, // optional — falls back to public RPCs
675
- });
676
-
677
- // Verify any EVM transaction
678
- const evmResult = await verifier.verifyEvmTransaction({
679
- chain: 'base',
680
- txHash: '0xabc123...',
681
- confirmations: 1, // default: 1
682
- });
683
- // { status: 'confirmed', blockNumber: 12345n, confirmations: 5, gasUsed: 21000n, success: true }
684
-
685
- // Verify a Solana transaction
686
- const solResult = await verifier.verifySolanaTransaction({
687
- signature: 'base58sig...',
688
- commitment: 'finalized', // 'confirmed' | 'finalized', default: 'confirmed'
689
- });
690
-
691
- // Verify a CCTP bridge transfer end-to-end
692
- const bridgeResult = await verifier.verifyBridgeSettlement({
693
- sourceTxHash: '0xburntx...',
694
- sourceChain: 'base', // or 'solana'
695
- destinationChain: 'arbitrum',
696
- expectedAmount: 1_000_000n, // 1 USDC (6 decimals)
697
- });
698
- // { status: 'attestation_complete_awaiting_mint', sourceTx: {...}, attestationStatus: 'complete' }
699
-
700
- // Verify an x402 payment via ERC20 Transfer event logs
701
- const paymentResult = await verifier.verifyX402Payment({
702
- chain: 'base',
703
- txHash: '0xpaymenttx...',
704
- expectedPayee: '0xMerchantAddress',
705
- expectedAmount: 1_000_000n, // 1 USDC
706
- });
707
- // { status: 'confirmed', payeeVerified: true, amountVerified: true, actualAmount: 1000000n }
708
- ```
709
-
710
- ### Settlement Status Types
711
-
712
- | Status | Meaning |
713
- |--------|---------|
714
- | `confirmed` | Transaction mined with required confirmations |
715
- | `pending` | Transaction in mempool or not enough confirmations |
716
- | `failed` | Transaction reverted (status=0) |
717
- | `not_found` | Transaction not found or RPC error |
718
-
719
- Bridge-specific statuses:
720
-
721
- | Status | Meaning |
722
- |--------|---------|
723
- | `source_confirmed_awaiting_attestation` | Burn tx confirmed, Circle attestation pending |
724
- | `attestation_complete_awaiting_mint` | Attestation ready, destination mint not yet verified |
725
- | `complete` | Full bridge cycle confirmed |
726
- | `source_failed` | Source burn transaction reverted |
727
-
728
- ---
729
-
730
- ## Fiat Onramp (Optional — v3.2.0)
731
-
732
- > **This module is entirely opt-in. The core SDK is fully anonymous and non-custodial.**
733
- > Users who fund their agent wallet via direct crypto transfer, bridge, or any other method
734
- > **never encounter KYC** and remain completely anonymous.
735
- > KYC only occurs when you explicitly choose to use the fiat onramp feature.
736
-
737
- The `FiatOnramp` class aggregates multiple fiat-to-crypto providers (MoonPay, Stripe, Transak)
738
- into a single interface. It returns a `purchaseUrl` — opening this URL takes the user to the
739
- provider's hosted KYC + payment page. **The SDK never sees, stores, or transmits any KYC data.**
740
-
741
- ### Install
742
-
743
- No additional packages needed — `FiatOnramp` is included in `agentwallet-sdk`.
744
-
745
- Get API keys from the provider dashboards:
746
-
747
- - **MoonPay:** https://dashboard.moonpay.com (publishable key)
748
- - **Stripe:** https://dashboard.stripe.com (secret key — server-side only)
749
- - **Transak:** https://dashboard.transak.com (API key)
750
-
751
- ### Usage
752
-
753
- ```typescript
754
- import { FiatOnramp } from 'agentwallet-sdk';
755
-
756
- // Only configure the providers you have keys for.
757
- // Omitting all keys is valid — returns empty provider list with zero friction.
758
- const onramp = new FiatOnramp({
759
- moonpayApiKey: process.env.MOONPAY_API_KEY,
760
- transakApiKey: process.env.TRANSAK_API_KEY,
761
- });
762
-
763
- // Get quotes from all configured providers that support base/USDC
764
- const quotes = await onramp.getQuotes({
765
- amount: 100,
766
- currency: 'USD',
767
- token: 'USDC',
768
- chain: 'base',
769
- walletAddress: '0xYourAgentWalletAddress',
770
- });
771
-
772
- // quotes[0].kycRequired is always true — KYC happens on the provider's hosted page
773
- console.log(quotes[0].purchaseUrl); // Open this URL in a browser to complete purchase
774
-
775
- // Or target a specific provider
776
- const session = await onramp.createSession({
777
- amount: 100,
778
- currency: 'USD',
779
- token: 'USDC',
780
- chain: 'base',
781
- walletAddress: '0xYourAgentWalletAddress',
782
- provider: 'moonpay',
783
- redirectUrl: 'https://yourapp.com/done', // optional
784
- });
785
-
786
- console.log(session.purchaseUrl); // MoonPay hosted KYC + payment page
787
- console.log(session.feeAmount); // e.g., 2.50
788
- console.log(session.feePercent); // e.g., 2.5
789
- ```
790
-
791
- ### Supported Chains & Tokens
792
-
793
- | Provider | Chains | Tokens |
794
- |----------|--------|--------|
795
- | MoonPay | ethereum, base, solana, polygon, arbitrum, optimism | ETH, USDC, USDT, SOL, MATIC |
796
- | Stripe | ethereum, base, solana, polygon, arbitrum, optimism | ETH, USDC, SOL, MATIC |
797
- | Transak | ethereum, base, solana, polygon, arbitrum, optimism, avalanche, bsc | ETH, USDC, USDT, SOL, MATIC, AVAX, BNB |
798
-
799
- ### API
800
-
801
- ```typescript
802
- // Get quotes from all configured providers
803
- getQuotes(params: OnrampParams): Promise<FiatQuote[]>
804
-
805
- // Create a session with a specific provider
806
- createSession(params: OnrampParams & { provider: string }): Promise<FiatQuote>
807
-
808
- // Check if a provider supports a chain/token combo
809
- isSupported(provider: string, chain: string, token: string): boolean
810
-
811
- // Get configured provider names
812
- getProviders(): string[]
813
-
814
- // Get supported chains for a provider
815
- getSupportedChains(provider: string): string[]
816
-
817
- // Get supported tokens on a chain for a provider
818
- getSupportedTokens(provider: string, chain: string): string[]
819
- ```
820
-
821
- ### Privacy Guarantee
822
-
823
- - The SDK **never** collects, stores, or transmits KYC data
824
- - The SDK **never** stores payment info (no card numbers, no bank accounts)
825
- - KYC + payment happen entirely on the provider's hosted page
826
- - Direct crypto funding (transfer, bridge, swap) = fully anonymous, no KYC, ever
827
-
828
- ---
829
-
830
296
  ## License
831
297
 
832
298
  MIT