agentwallet-sdk 5.1.1 → 6.0.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 (366) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +463 -24
  3. package/dist/bridge/__tests__/solana.test.d.ts +2 -0
  4. package/dist/bridge/__tests__/solana.test.d.ts.map +1 -0
  5. package/dist/bridge/__tests__/solana.test.js +106 -0
  6. package/dist/bridge/__tests__/solana.test.js.map +1 -0
  7. package/dist/bridge/client.d.ts +21 -7
  8. package/dist/bridge/client.d.ts.map +1 -1
  9. package/dist/bridge/client.js +16 -1
  10. package/dist/bridge/client.js.map +1 -1
  11. package/dist/bridge/index.d.ts +12 -1
  12. package/dist/bridge/index.d.ts.map +1 -1
  13. package/dist/bridge/index.js +11 -0
  14. package/dist/bridge/index.js.map +1 -1
  15. package/dist/bridge/solana.d.ts +132 -0
  16. package/dist/bridge/solana.d.ts.map +1 -0
  17. package/dist/bridge/solana.js +313 -0
  18. package/dist/bridge/solana.js.map +1 -0
  19. package/dist/bridge/types.d.ts +35 -10
  20. package/dist/bridge/types.d.ts.map +1 -1
  21. package/dist/bridge/types.js +16 -4
  22. package/dist/bridge/types.js.map +1 -1
  23. package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -1
  24. package/dist/escrow/MutualStakeEscrow.js +3 -5
  25. package/dist/escrow/MutualStakeEscrow.js.map +1 -1
  26. package/dist/index.d.ts +192 -469
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +14 -8
  29. package/dist/index.js.map +1 -1
  30. package/dist/policy/SpendingPolicy.test.js.map +1 -1
  31. package/dist/swap/SwapModule.d.ts +17 -3
  32. package/dist/swap/SwapModule.d.ts.map +1 -1
  33. package/dist/swap/SwapModule.js +21 -5
  34. package/dist/swap/SwapModule.js.map +1 -1
  35. package/dist/swap/index.d.ts +9 -2
  36. package/dist/swap/index.d.ts.map +1 -1
  37. package/dist/swap/index.js +8 -1
  38. package/dist/swap/index.js.map +1 -1
  39. package/dist/swap/types.d.ts +58 -1
  40. package/dist/swap/types.d.ts.map +1 -1
  41. package/dist/swap/types.js +56 -1
  42. package/dist/swap/types.js.map +1 -1
  43. package/dist/tokens/__tests__/decimals.test.d.ts +2 -0
  44. package/dist/tokens/__tests__/decimals.test.d.ts.map +1 -0
  45. package/dist/tokens/__tests__/decimals.test.js +107 -0
  46. package/dist/tokens/__tests__/decimals.test.js.map +1 -0
  47. package/dist/tokens/__tests__/registry.test.d.ts +2 -0
  48. package/dist/tokens/__tests__/registry.test.d.ts.map +1 -0
  49. package/dist/tokens/__tests__/registry.test.js +191 -0
  50. package/dist/tokens/__tests__/registry.test.js.map +1 -0
  51. package/dist/tokens/__tests__/transfers.test.d.ts +2 -0
  52. package/dist/tokens/__tests__/transfers.test.d.ts.map +1 -0
  53. package/dist/tokens/__tests__/transfers.test.js +103 -0
  54. package/dist/tokens/__tests__/transfers.test.js.map +1 -0
  55. package/dist/tokens/decimals.d.ts +65 -0
  56. package/dist/tokens/decimals.d.ts.map +1 -0
  57. package/dist/tokens/decimals.js +112 -0
  58. package/dist/tokens/decimals.js.map +1 -0
  59. package/dist/tokens/index.d.ts +14 -0
  60. package/dist/tokens/index.d.ts.map +1 -0
  61. package/dist/tokens/index.js +14 -0
  62. package/dist/tokens/index.js.map +1 -0
  63. package/dist/tokens/registry.d.ts +82 -0
  64. package/dist/tokens/registry.d.ts.map +1 -0
  65. package/dist/tokens/registry.js +293 -0
  66. package/dist/tokens/registry.js.map +1 -0
  67. package/dist/tokens/solana.d.ts +108 -0
  68. package/dist/tokens/solana.d.ts.map +1 -0
  69. package/dist/tokens/solana.js +306 -0
  70. package/dist/tokens/solana.js.map +1 -0
  71. package/dist/tokens/transfers.d.ts +95 -0
  72. package/dist/tokens/transfers.d.ts.map +1 -0
  73. package/dist/tokens/transfers.js +196 -0
  74. package/dist/tokens/transfers.js.map +1 -0
  75. package/dist/types.d.ts +20 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/types.js +6 -0
  78. package/dist/types.js.map +1 -1
  79. package/dist/x402/__tests__/client.test.js +77 -5
  80. package/dist/x402/__tests__/client.test.js.map +1 -1
  81. package/dist/x402/chains/abstract/index.d.ts.map +1 -1
  82. package/dist/x402/chains/abstract/index.js.map +1 -1
  83. package/dist/x402/chains/stellar/index.d.ts +149 -0
  84. package/dist/x402/chains/stellar/index.d.ts.map +1 -0
  85. package/dist/x402/chains/stellar/index.js +199 -0
  86. package/dist/x402/chains/stellar/index.js.map +1 -0
  87. package/dist/x402/client.d.ts +7 -1
  88. package/dist/x402/client.d.ts.map +1 -1
  89. package/dist/x402/client.js +24 -13
  90. package/dist/x402/client.js.map +1 -1
  91. package/dist/x402/index.d.ts +1 -0
  92. package/dist/x402/index.d.ts.map +1 -1
  93. package/dist/x402/index.js +2 -0
  94. package/dist/x402/index.js.map +1 -1
  95. package/dist/x402/middleware.d.ts.map +1 -1
  96. package/dist/x402/middleware.js +0 -3
  97. package/dist/x402/middleware.js.map +1 -1
  98. package/dist/x402/multi-asset.d.ts +54 -0
  99. package/dist/x402/multi-asset.d.ts.map +1 -0
  100. package/dist/x402/multi-asset.js +123 -0
  101. package/dist/x402/multi-asset.js.map +1 -0
  102. package/dist/x402/types.d.ts +22 -3
  103. package/dist/x402/types.d.ts.map +1 -1
  104. package/dist/x402/types.js +34 -4
  105. package/dist/x402/types.js.map +1 -1
  106. package/package.json +21 -6
  107. package/dist/ap2/index.d.ts +0 -185
  108. package/dist/ap2/index.d.ts.map +0 -1
  109. package/dist/ap2/index.js +0 -255
  110. package/dist/ap2/index.js.map +0 -1
  111. package/dist/bridge/unified.d.ts +0 -101
  112. package/dist/bridge/unified.d.ts.map +0 -1
  113. package/dist/bridge/unified.js +0 -284
  114. package/dist/bridge/unified.js.map +0 -1
  115. package/dist/chains.d.ts +0 -62
  116. package/dist/chains.d.ts.map +0 -1
  117. package/dist/chains.js +0 -108
  118. package/dist/chains.js.map +0 -1
  119. package/dist/fiat/index.d.ts +0 -10
  120. package/dist/fiat/index.d.ts.map +0 -1
  121. package/dist/fiat/index.js +0 -9
  122. package/dist/fiat/index.js.map +0 -1
  123. package/dist/fiat/onramp.d.ts +0 -101
  124. package/dist/fiat/onramp.d.ts.map +0 -1
  125. package/dist/fiat/onramp.js +0 -155
  126. package/dist/fiat/onramp.js.map +0 -1
  127. package/dist/fiat/providers/index.d.ts +0 -16
  128. package/dist/fiat/providers/index.d.ts.map +0 -1
  129. package/dist/fiat/providers/index.js +0 -30
  130. package/dist/fiat/providers/index.js.map +0 -1
  131. package/dist/fiat/providers/moonpay.d.ts +0 -22
  132. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  133. package/dist/fiat/providers/moonpay.js +0 -107
  134. package/dist/fiat/providers/moonpay.js.map +0 -1
  135. package/dist/fiat/providers/stripe.d.ts +0 -26
  136. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  137. package/dist/fiat/providers/stripe.js +0 -135
  138. package/dist/fiat/providers/stripe.js.map +0 -1
  139. package/dist/fiat/providers/transak.d.ts +0 -26
  140. package/dist/fiat/providers/transak.d.ts.map +0 -1
  141. package/dist/fiat/providers/transak.js +0 -119
  142. package/dist/fiat/providers/transak.js.map +0 -1
  143. package/dist/fiat/types.d.ts +0 -106
  144. package/dist/fiat/types.d.ts.map +0 -1
  145. package/dist/fiat/types.js +0 -13
  146. package/dist/fiat/types.js.map +0 -1
  147. package/dist/flash/executor.d.ts +0 -119
  148. package/dist/flash/executor.d.ts.map +0 -1
  149. package/dist/flash/executor.js +0 -195
  150. package/dist/flash/executor.js.map +0 -1
  151. package/dist/flash/index.d.ts +0 -28
  152. package/dist/flash/index.d.ts.map +0 -1
  153. package/dist/flash/index.js +0 -29
  154. package/dist/flash/index.js.map +0 -1
  155. package/dist/flash/scanner.d.ts +0 -133
  156. package/dist/flash/scanner.d.ts.map +0 -1
  157. package/dist/flash/scanner.js +0 -212
  158. package/dist/flash/scanner.js.map +0 -1
  159. package/dist/flash/types.d.ts +0 -136
  160. package/dist/flash/types.d.ts.map +0 -1
  161. package/dist/flash/types.js +0 -23
  162. package/dist/flash/types.js.map +0 -1
  163. package/dist/gas/index.d.ts +0 -4
  164. package/dist/gas/index.d.ts.map +0 -1
  165. package/dist/gas/index.js +0 -3
  166. package/dist/gas/index.js.map +0 -1
  167. package/dist/gas/sponsor.d.ts +0 -70
  168. package/dist/gas/sponsor.d.ts.map +0 -1
  169. package/dist/gas/sponsor.js +0 -193
  170. package/dist/gas/sponsor.js.map +0 -1
  171. package/dist/gas/types.d.ts +0 -76
  172. package/dist/gas/types.d.ts.map +0 -1
  173. package/dist/gas/types.js +0 -21
  174. package/dist/gas/types.js.map +0 -1
  175. package/dist/identity/agent-identity.d.ts +0 -276
  176. package/dist/identity/agent-identity.d.ts.map +0 -1
  177. package/dist/identity/agent-identity.js +0 -300
  178. package/dist/identity/agent-identity.js.map +0 -1
  179. package/dist/identity/email-resolver.d.ts +0 -235
  180. package/dist/identity/email-resolver.js +0 -283
  181. package/dist/identity/erc6551.d.ts +0 -441
  182. package/dist/identity/erc6551.d.ts.map +0 -1
  183. package/dist/identity/erc6551.js +0 -517
  184. package/dist/identity/erc6551.js.map +0 -1
  185. package/dist/mev/index.d.ts +0 -4
  186. package/dist/mev/index.d.ts.map +0 -1
  187. package/dist/mev/index.js +0 -8
  188. package/dist/mev/index.js.map +0 -1
  189. package/dist/mev/protection.d.ts +0 -54
  190. package/dist/mev/protection.d.ts.map +0 -1
  191. package/dist/mev/protection.js +0 -185
  192. package/dist/mev/protection.js.map +0 -1
  193. package/dist/mev/risk.d.ts +0 -19
  194. package/dist/mev/risk.d.ts.map +0 -1
  195. package/dist/mev/risk.js +0 -95
  196. package/dist/mev/risk.js.map +0 -1
  197. package/dist/mev/types.d.ts +0 -49
  198. package/dist/mev/types.d.ts.map +0 -1
  199. package/dist/mev/types.js +0 -2
  200. package/dist/mev/types.js.map +0 -1
  201. package/dist/plugins/elizaos.d.ts +0 -52
  202. package/dist/plugins/elizaos.d.ts.map +0 -1
  203. package/dist/plugins/elizaos.js +0 -89
  204. package/dist/plugins/elizaos.js.map +0 -1
  205. package/dist/settlement/index.d.ts +0 -4
  206. package/dist/settlement/index.d.ts.map +0 -1
  207. package/dist/settlement/index.js +0 -3
  208. package/dist/settlement/index.js.map +0 -1
  209. package/dist/settlement/types.d.ts +0 -66
  210. package/dist/settlement/types.d.ts.map +0 -1
  211. package/dist/settlement/types.js +0 -37
  212. package/dist/settlement/types.js.map +0 -1
  213. package/dist/settlement/verifier.d.ts +0 -75
  214. package/dist/settlement/verifier.d.ts.map +0 -1
  215. package/dist/settlement/verifier.js +0 -354
  216. package/dist/settlement/verifier.js.map +0 -1
  217. package/dist/solana/bridge.d.ts +0 -144
  218. package/dist/solana/bridge.d.ts.map +0 -1
  219. package/dist/solana/bridge.js +0 -352
  220. package/dist/solana/bridge.js.map +0 -1
  221. package/dist/solana/index.d.ts +0 -8
  222. package/dist/solana/index.d.ts.map +0 -1
  223. package/dist/solana/index.js +0 -6
  224. package/dist/solana/index.js.map +0 -1
  225. package/dist/solana/swap.d.ts +0 -85
  226. package/dist/solana/swap.d.ts.map +0 -1
  227. package/dist/solana/swap.js +0 -173
  228. package/dist/solana/swap.js.map +0 -1
  229. package/dist/solana/types.d.ts +0 -126
  230. package/dist/solana/types.d.ts.map +0 -1
  231. package/dist/solana/types.js +0 -10
  232. package/dist/solana/types.js.map +0 -1
  233. package/dist/solana/wallet.d.ts +0 -83
  234. package/dist/solana/wallet.d.ts.map +0 -1
  235. package/dist/solana/wallet.js +0 -164
  236. package/dist/solana/wallet.js.map +0 -1
  237. package/dist/solana/x402.d.ts +0 -69
  238. package/dist/solana/x402.d.ts.map +0 -1
  239. package/dist/solana/x402.js +0 -154
  240. package/dist/solana/x402.js.map +0 -1
  241. package/dist/solver/adapter.d.ts +0 -47
  242. package/dist/solver/adapter.d.ts.map +0 -1
  243. package/dist/solver/adapter.js +0 -146
  244. package/dist/solver/adapter.js.map +0 -1
  245. package/dist/solver/analyzer.d.ts +0 -48
  246. package/dist/solver/analyzer.d.ts.map +0 -1
  247. package/dist/solver/analyzer.js +0 -171
  248. package/dist/solver/analyzer.js.map +0 -1
  249. package/dist/solver/builder.d.ts +0 -31
  250. package/dist/solver/builder.d.ts.map +0 -1
  251. package/dist/solver/builder.js +0 -60
  252. package/dist/solver/builder.js.map +0 -1
  253. package/dist/solver/index.d.ts +0 -22
  254. package/dist/solver/index.d.ts.map +0 -1
  255. package/dist/solver/index.js +0 -25
  256. package/dist/solver/index.js.map +0 -1
  257. package/dist/solver/types.d.ts +0 -115
  258. package/dist/solver/types.d.ts.map +0 -1
  259. package/dist/solver/types.js +0 -10
  260. package/dist/solver/types.js.map +0 -1
  261. package/dist/spend-guard/index.d.ts +0 -125
  262. package/dist/spend-guard/index.d.ts.map +0 -1
  263. package/dist/spend-guard/index.js +0 -150
  264. package/dist/spend-guard/index.js.map +0 -1
  265. package/dist/swap/router/cache.d.ts +0 -13
  266. package/dist/swap/router/cache.d.ts.map +0 -1
  267. package/dist/swap/router/cache.js +0 -30
  268. package/dist/swap/router/cache.js.map +0 -1
  269. package/dist/swap/router/flashbots.d.ts +0 -10
  270. package/dist/swap/router/flashbots.d.ts.map +0 -1
  271. package/dist/swap/router/flashbots.js +0 -43
  272. package/dist/swap/router/flashbots.js.map +0 -1
  273. package/dist/swap/router/health.d.ts +0 -17
  274. package/dist/swap/router/health.d.ts.map +0 -1
  275. package/dist/swap/router/health.js +0 -38
  276. package/dist/swap/router/health.js.map +0 -1
  277. package/dist/swap/router/index.d.ts +0 -10
  278. package/dist/swap/router/index.d.ts.map +0 -1
  279. package/dist/swap/router/index.js +0 -10
  280. package/dist/swap/router/index.js.map +0 -1
  281. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  282. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  283. package/dist/swap/router/providers/cowswap.js +0 -79
  284. package/dist/swap/router/providers/cowswap.js.map +0 -1
  285. package/dist/swap/router/providers/index.d.ts +0 -20
  286. package/dist/swap/router/providers/index.d.ts.map +0 -1
  287. package/dist/swap/router/providers/index.js +0 -32
  288. package/dist/swap/router/providers/index.js.map +0 -1
  289. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  290. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  291. package/dist/swap/router/providers/jupiter.js +0 -73
  292. package/dist/swap/router/providers/jupiter.js.map +0 -1
  293. package/dist/swap/router/providers/lifi.d.ts +0 -11
  294. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  295. package/dist/swap/router/providers/lifi.js +0 -123
  296. package/dist/swap/router/providers/lifi.js.map +0 -1
  297. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  298. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  299. package/dist/swap/router/providers/oneinch.js +0 -71
  300. package/dist/swap/router/providers/oneinch.js.map +0 -1
  301. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  302. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  303. package/dist/swap/router/providers/paraswap.js +0 -73
  304. package/dist/swap/router/providers/paraswap.js.map +0 -1
  305. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  306. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  307. package/dist/swap/router/providers/uniswap.js +0 -237
  308. package/dist/swap/router/providers/uniswap.js.map +0 -1
  309. package/dist/swap/router/providers/zerox.d.ts +0 -13
  310. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  311. package/dist/swap/router/providers/zerox.js +0 -94
  312. package/dist/swap/router/providers/zerox.js.map +0 -1
  313. package/dist/swap/router/router.d.ts +0 -86
  314. package/dist/swap/router/router.d.ts.map +0 -1
  315. package/dist/swap/router/router.js +0 -224
  316. package/dist/swap/router/router.js.map +0 -1
  317. package/dist/swap/router/rsi/engine.d.ts +0 -60
  318. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  319. package/dist/swap/router/rsi/engine.js +0 -483
  320. package/dist/swap/router/rsi/engine.js.map +0 -1
  321. package/dist/swap/router/rsi/index.d.ts +0 -3
  322. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  323. package/dist/swap/router/rsi/index.js +0 -3
  324. package/dist/swap/router/rsi/index.js.map +0 -1
  325. package/dist/swap/router/rsi/types.d.ts +0 -106
  326. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  327. package/dist/swap/router/rsi/types.js +0 -3
  328. package/dist/swap/router/rsi/types.js.map +0 -1
  329. package/dist/swap/router/types.d.ts +0 -120
  330. package/dist/swap/router/types.d.ts.map +0 -1
  331. package/dist/swap/router/types.js +0 -16
  332. package/dist/swap/router/types.js.map +0 -1
  333. package/dist/tax/engine.d.ts +0 -131
  334. package/dist/tax/engine.d.ts.map +0 -1
  335. package/dist/tax/engine.js +0 -307
  336. package/dist/tax/engine.js.map +0 -1
  337. package/dist/tax/index.d.ts +0 -9
  338. package/dist/tax/index.d.ts.map +0 -1
  339. package/dist/tax/index.js +0 -12
  340. package/dist/tax/index.js.map +0 -1
  341. package/dist/tax/lots.d.ts +0 -60
  342. package/dist/tax/lots.d.ts.map +0 -1
  343. package/dist/tax/lots.js +0 -129
  344. package/dist/tax/lots.js.map +0 -1
  345. package/dist/tax/types.d.ts +0 -113
  346. package/dist/tax/types.d.ts.map +0 -1
  347. package/dist/tax/types.js +0 -18
  348. package/dist/tax/types.js.map +0 -1
  349. package/dist/verifiable-intent/index.d.ts +0 -84
  350. package/dist/verifiable-intent/index.js +0 -385
  351. package/dist/yield/index.d.ts +0 -26
  352. package/dist/yield/index.d.ts.map +0 -1
  353. package/dist/yield/index.js +0 -29
  354. package/dist/yield/index.js.map +0 -1
  355. package/dist/yield/rates.d.ts +0 -114
  356. package/dist/yield/rates.d.ts.map +0 -1
  357. package/dist/yield/rates.js +0 -351
  358. package/dist/yield/rates.js.map +0 -1
  359. package/dist/yield/types.d.ts +0 -134
  360. package/dist/yield/types.d.ts.map +0 -1
  361. package/dist/yield/types.js +0 -24
  362. package/dist/yield/types.js.map +0 -1
  363. package/dist/yield/vault.d.ts +0 -112
  364. package/dist/yield/vault.d.ts.map +0 -1
  365. package/dist/yield/vault.js +0 -264
  366. package/dist/yield/vault.js.map +0 -1
@@ -1,264 +0,0 @@
1
- /**
2
- * Yield Vault Engine
3
- *
4
- * Manages agent capital deployment across DeFi vaults and RWA tokens.
5
- * Scans for the best available yield, tracks positions, and generates
6
- * calldata for deposit/withdrawal transactions.
7
- *
8
- * ⚠️ CALLDATA ONLY: buildDepositTx / buildWithdrawTx return unsigned calldata.
9
- * The agent signs and sends — no private keys are held by this module.
10
- *
11
- * Supported protocols for on-chain tx building:
12
- * ✅ Aave V3 — supply() / withdraw()
13
- * ✅ Compound V3 — supply() / withdraw()
14
- * ❌ RWA tokens — use their native interfaces (BUIDL/OUSG/USDY/USYC/wUSTB)
15
- *
16
- * ⚠️ BUIDL: $1,000,000 minimum deposit. Do not use for general agent capital.
17
- */
18
- import { ethers } from 'ethers';
19
- import { YieldRateFetcher } from './rates.js';
20
- // ─── ABI Fragments ───────────────────────────────────────────────────────────
21
- const AAVE_POOL_ABI = [
22
- 'function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external',
23
- 'function withdraw(address asset, uint256 amount, address to) external returns (uint256)',
24
- ];
25
- const COMPOUND_COMET_ABI = [
26
- 'function supply(address asset, uint256 amount) external',
27
- 'function withdraw(address asset, uint256 amount) external',
28
- ];
29
- // Protocol pool addresses (same as rates.ts)
30
- const AAVE_POOL_ADDRESSES = {
31
- ethereum: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2',
32
- base: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
33
- arbitrum: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
34
- };
35
- const COMPOUND_COMET_ADDRESSES = {
36
- ethereum: '0xc3d688B66703497DAA19211EEdff47f25384cdc3',
37
- base: '0xb125E6687d4313864e53df431d5425969c15Eb2',
38
- arbitrum: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf',
39
- };
40
- // Token addresses
41
- const USDC_ADDRESSES = {
42
- ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
43
- base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
44
- arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
45
- };
46
- const USDT_ADDRESSES = {
47
- ethereum: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
48
- arbitrum: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
49
- };
50
- function getTokenAddress(token, chain) {
51
- const upper = token.toUpperCase();
52
- if (upper === 'USDC')
53
- return USDC_ADDRESSES[chain] ?? '0x';
54
- if (upper === 'USDT')
55
- return USDT_ADDRESSES[chain] ?? '0x';
56
- return '0x';
57
- }
58
- // ─── Default Config ───────────────────────────────────────────────────────────
59
- const DEFAULT_CONFIG = {
60
- enabled: true,
61
- chains: ['ethereum', 'base', 'arbitrum'],
62
- tokens: ['USDC', 'USDT'],
63
- includeRWA: true,
64
- minRotationImprovementBps: 25,
65
- minIdleMs: 24 * 60 * 60 * 1000, // 24 hours
66
- maxDepositUsd: Infinity,
67
- skipKYCRequired: true,
68
- };
69
- // ─── Yield Vault ─────────────────────────────────────────────────────────────
70
- export class YieldVault {
71
- constructor(config) {
72
- this.positions = new Map();
73
- this.config = { ...DEFAULT_CONFIG, ...config };
74
- this.rateFetcher = new YieldRateFetcher();
75
- }
76
- /**
77
- * Scan all protocols and chains for the best available yield.
78
- *
79
- * Returns opportunities sorted by netAnnualGainUsd descending.
80
- * Only includes rates with positive APY improvement vs current position.
81
- *
82
- * @param params.token - Underlying token to scan for (e.g. 'USDC')
83
- * @param params.amountUsd - Amount in USD to use for gain calculations
84
- * @param params.currentPosition - Active position (if any) to compare against
85
- */
86
- async scan(params) {
87
- const rates = await this.rateFetcher.fetchAllRates(this.config);
88
- const currentApy = params.currentPosition?.currentApy ?? 0;
89
- return rates
90
- .map((rate) => {
91
- const apyImprovementBps = Math.round((rate.apy - currentApy) * 10000);
92
- const estimatedAnnualGainUsd = params.amountUsd * (rate.apy - currentApy);
93
- const rotationCostUsd = this.estimateRotationCost(params.currentPosition?.chain, rate.chain, params.amountUsd);
94
- const netAnnualGainUsd = estimatedAnnualGainUsd - rotationCostUsd;
95
- const viable = apyImprovementBps >= this.config.minRotationImprovementBps &&
96
- netAnnualGainUsd > 0;
97
- return {
98
- current: params.currentPosition ?? null,
99
- best: rate,
100
- apyImprovementBps,
101
- estimatedAnnualGainUsd,
102
- rotationCostUsd,
103
- netAnnualGainUsd,
104
- viable,
105
- };
106
- })
107
- .filter(o => o.apyImprovementBps > 0)
108
- .sort((a, b) => b.netAnnualGainUsd - a.netAnnualGainUsd);
109
- }
110
- /**
111
- * Build a deposit transaction for a supported protocol.
112
- *
113
- * Returns unsigned calldata — the agent signs and broadcasts.
114
- * ERC20 deposits: value is always 0n (approve first, then supply).
115
- *
116
- * Supported: aave-v3, compound-v3
117
- * Unsupported (use native interface): buidl, ousg, usdy, usyc, wustb
118
- *
119
- * @throws Error for unsupported protocols
120
- */
121
- buildDepositTx(params) {
122
- switch (params.protocol) {
123
- case 'aave-v3':
124
- return this.buildAaveDepositTx(params);
125
- case 'compound-v3':
126
- return this.buildCompoundDepositTx(params);
127
- default:
128
- throw new Error(`Deposit not supported for '${params.protocol}' via SDK — use their native interface. ` +
129
- `For RWA tokens (buidl, ousg, usdy, usyc, wustb), interact with the token's ` +
130
- `native contract or portal directly.`);
131
- }
132
- }
133
- /**
134
- * Build a withdrawal transaction for a supported protocol.
135
- *
136
- * Returns unsigned calldata — the agent signs and broadcasts.
137
- * Pass ethers.MaxUint256 (2^256-1) to withdraw the full position.
138
- *
139
- * Supported: aave-v3, compound-v3
140
- *
141
- * @throws Error for unsupported protocols
142
- */
143
- buildWithdrawTx(params) {
144
- switch (params.protocol) {
145
- case 'aave-v3':
146
- return this.buildAaveWithdrawTx(params);
147
- case 'compound-v3':
148
- return this.buildCompoundWithdrawTx(params);
149
- default:
150
- throw new Error(`Withdrawal not supported for '${params.protocol}' via SDK — use their native interface.`);
151
- }
152
- }
153
- /**
154
- * Estimate USD cost to rotate capital from one position to another.
155
- *
156
- * Same-chain rotation: ~$3 gas (single approve + supply tx)
157
- * Cross-chain rotation: CCTP bridge fee (0.1% of amount) + gas both sides (~$5)
158
- *
159
- * Note: For small amounts, cross-chain rotation may not be worth it.
160
- */
161
- estimateRotationCost(fromChain, toChain, amountUsd) {
162
- if (!fromChain || fromChain === toChain) {
163
- // Same chain: ~$2-5 gas (approve + supply)
164
- return 3.0;
165
- }
166
- // Cross-chain: CCTP bridge fee (0.1% platform) + gas both sides (~$5 total)
167
- return amountUsd * 0.001 + 5.0;
168
- }
169
- /**
170
- * Track a position for yield accrual estimation.
171
- * Keyed by protocol:chain:token — one position per slot.
172
- */
173
- trackPosition(position) {
174
- const key = `${position.protocol}:${position.chain}:${position.token}`;
175
- this.positions.set(key, position);
176
- }
177
- /** Get all tracked positions */
178
- getPositions() {
179
- return Array.from(this.positions.values());
180
- }
181
- /**
182
- * Estimate yield accrued since deposit.
183
- *
184
- * Uses simple linear approximation (accurate for short periods).
185
- * For compound interest over long periods, use protocol's native accrual.
186
- */
187
- estimateAccruedYield(position) {
188
- const elapsedMs = Date.now() - position.depositedAt;
189
- const elapsedYears = elapsedMs / (365.25 * 24 * 60 * 60 * 1000);
190
- const yieldFraction = position.currentApy * elapsedYears;
191
- return BigInt(Math.round(Number(position.depositedAmount) * yieldFraction));
192
- }
193
- // ─── Private TX Builders ──────────────────────────────────────────────────
194
- buildAaveDepositTx(params) {
195
- const poolAddress = AAVE_POOL_ADDRESSES[params.chain];
196
- if (!poolAddress)
197
- throw new Error(`Aave V3 not supported on chain: ${params.chain}`);
198
- const tokenAddress = getTokenAddress(params.token, params.chain);
199
- const iface = new ethers.Interface(AAVE_POOL_ABI);
200
- // supply(asset, amount, onBehalfOf, referralCode=0)
201
- const data = iface.encodeFunctionData('supply', [
202
- tokenAddress,
203
- params.amount,
204
- params.walletAddress,
205
- 0,
206
- ]);
207
- return {
208
- to: poolAddress,
209
- data,
210
- value: 0n, // ERC20 deposit — no native token required
211
- gasEstimate: 250000n,
212
- };
213
- }
214
- buildAaveWithdrawTx(params) {
215
- const poolAddress = AAVE_POOL_ADDRESSES[params.chain];
216
- if (!poolAddress)
217
- throw new Error(`Aave V3 not supported on chain: ${params.chain}`);
218
- const tokenAddress = getTokenAddress(params.token, params.chain);
219
- const iface = new ethers.Interface(AAVE_POOL_ABI);
220
- // withdraw(asset, amount, to) — pass MaxUint256 to withdraw all
221
- const data = iface.encodeFunctionData('withdraw', [
222
- tokenAddress,
223
- params.amount,
224
- params.walletAddress,
225
- ]);
226
- return {
227
- to: poolAddress,
228
- data,
229
- value: 0n,
230
- gasEstimate: 200000n,
231
- };
232
- }
233
- buildCompoundDepositTx(params) {
234
- const cometAddress = COMPOUND_COMET_ADDRESSES[params.chain];
235
- if (!cometAddress)
236
- throw new Error(`Compound V3 not supported on chain: ${params.chain}`);
237
- const tokenAddress = getTokenAddress(params.token, params.chain);
238
- const iface = new ethers.Interface(COMPOUND_COMET_ABI);
239
- // supply(asset, amount)
240
- const data = iface.encodeFunctionData('supply', [tokenAddress, params.amount]);
241
- return {
242
- to: cometAddress,
243
- data,
244
- value: 0n,
245
- gasEstimate: 180000n,
246
- };
247
- }
248
- buildCompoundWithdrawTx(params) {
249
- const cometAddress = COMPOUND_COMET_ADDRESSES[params.chain];
250
- if (!cometAddress)
251
- throw new Error(`Compound V3 not supported on chain: ${params.chain}`);
252
- const tokenAddress = getTokenAddress(params.token, params.chain);
253
- const iface = new ethers.Interface(COMPOUND_COMET_ABI);
254
- // withdraw(asset, amount)
255
- const data = iface.encodeFunctionData('withdraw', [tokenAddress, params.amount]);
256
- return {
257
- to: cometAddress,
258
- data,
259
- value: 0n,
260
- gasEstimate: 150000n,
261
- };
262
- }
263
- }
264
- //# sourceMappingURL=vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/yield/vault.ts"],"names":[],"mappings":"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"}