agentwallet-sdk 5.1.0 → 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.
Files changed (311) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +240 -20
  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/index.d.ts +215 -288
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/swap/SwapModule.d.ts +17 -3
  28. package/dist/swap/SwapModule.d.ts.map +1 -1
  29. package/dist/swap/SwapModule.js +20 -4
  30. package/dist/swap/SwapModule.js.map +1 -1
  31. package/dist/swap/index.d.ts +9 -2
  32. package/dist/swap/index.d.ts.map +1 -1
  33. package/dist/swap/index.js +8 -1
  34. package/dist/swap/index.js.map +1 -1
  35. package/dist/swap/types.d.ts +58 -1
  36. package/dist/swap/types.d.ts.map +1 -1
  37. package/dist/swap/types.js +56 -1
  38. package/dist/swap/types.js.map +1 -1
  39. package/dist/types.d.ts +20 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js +6 -0
  42. package/dist/types.js.map +1 -1
  43. package/dist/x402/__tests__/client.test.js +77 -5
  44. package/dist/x402/__tests__/client.test.js.map +1 -1
  45. package/dist/x402/chains/stellar/index.d.ts +149 -0
  46. package/dist/x402/chains/stellar/index.d.ts.map +1 -0
  47. package/dist/x402/chains/stellar/index.js +197 -0
  48. package/dist/x402/chains/stellar/index.js.map +1 -0
  49. package/dist/x402/client.d.ts.map +1 -1
  50. package/dist/x402/client.js.map +1 -1
  51. package/dist/x402/types.d.ts +22 -3
  52. package/dist/x402/types.d.ts.map +1 -1
  53. package/dist/x402/types.js +34 -4
  54. package/dist/x402/types.js.map +1 -1
  55. package/package.json +16 -5
  56. package/dist/ap2/index.d.ts +0 -185
  57. package/dist/ap2/index.d.ts.map +0 -1
  58. package/dist/ap2/index.js +0 -255
  59. package/dist/ap2/index.js.map +0 -1
  60. package/dist/bridge/unified.d.ts +0 -101
  61. package/dist/bridge/unified.d.ts.map +0 -1
  62. package/dist/bridge/unified.js +0 -284
  63. package/dist/bridge/unified.js.map +0 -1
  64. package/dist/chains.d.ts +0 -62
  65. package/dist/chains.d.ts.map +0 -1
  66. package/dist/chains.js +0 -108
  67. package/dist/chains.js.map +0 -1
  68. package/dist/fiat/index.d.ts +0 -10
  69. package/dist/fiat/index.d.ts.map +0 -1
  70. package/dist/fiat/index.js +0 -9
  71. package/dist/fiat/index.js.map +0 -1
  72. package/dist/fiat/onramp.d.ts +0 -101
  73. package/dist/fiat/onramp.d.ts.map +0 -1
  74. package/dist/fiat/onramp.js +0 -155
  75. package/dist/fiat/onramp.js.map +0 -1
  76. package/dist/fiat/providers/index.d.ts +0 -16
  77. package/dist/fiat/providers/index.d.ts.map +0 -1
  78. package/dist/fiat/providers/index.js +0 -30
  79. package/dist/fiat/providers/index.js.map +0 -1
  80. package/dist/fiat/providers/moonpay.d.ts +0 -22
  81. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  82. package/dist/fiat/providers/moonpay.js +0 -107
  83. package/dist/fiat/providers/moonpay.js.map +0 -1
  84. package/dist/fiat/providers/stripe.d.ts +0 -26
  85. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  86. package/dist/fiat/providers/stripe.js +0 -135
  87. package/dist/fiat/providers/stripe.js.map +0 -1
  88. package/dist/fiat/providers/transak.d.ts +0 -26
  89. package/dist/fiat/providers/transak.d.ts.map +0 -1
  90. package/dist/fiat/providers/transak.js +0 -119
  91. package/dist/fiat/providers/transak.js.map +0 -1
  92. package/dist/fiat/types.d.ts +0 -106
  93. package/dist/fiat/types.d.ts.map +0 -1
  94. package/dist/fiat/types.js +0 -13
  95. package/dist/fiat/types.js.map +0 -1
  96. package/dist/flash/executor.d.ts +0 -119
  97. package/dist/flash/executor.d.ts.map +0 -1
  98. package/dist/flash/executor.js +0 -195
  99. package/dist/flash/executor.js.map +0 -1
  100. package/dist/flash/index.d.ts +0 -28
  101. package/dist/flash/index.d.ts.map +0 -1
  102. package/dist/flash/index.js +0 -29
  103. package/dist/flash/index.js.map +0 -1
  104. package/dist/flash/scanner.d.ts +0 -133
  105. package/dist/flash/scanner.d.ts.map +0 -1
  106. package/dist/flash/scanner.js +0 -212
  107. package/dist/flash/scanner.js.map +0 -1
  108. package/dist/flash/types.d.ts +0 -136
  109. package/dist/flash/types.d.ts.map +0 -1
  110. package/dist/flash/types.js +0 -23
  111. package/dist/flash/types.js.map +0 -1
  112. package/dist/gas/index.d.ts +0 -4
  113. package/dist/gas/index.d.ts.map +0 -1
  114. package/dist/gas/index.js +0 -3
  115. package/dist/gas/index.js.map +0 -1
  116. package/dist/gas/sponsor.d.ts +0 -70
  117. package/dist/gas/sponsor.d.ts.map +0 -1
  118. package/dist/gas/sponsor.js +0 -193
  119. package/dist/gas/sponsor.js.map +0 -1
  120. package/dist/gas/types.d.ts +0 -76
  121. package/dist/gas/types.d.ts.map +0 -1
  122. package/dist/gas/types.js +0 -21
  123. package/dist/gas/types.js.map +0 -1
  124. package/dist/identity/agent-identity.d.ts +0 -276
  125. package/dist/identity/agent-identity.d.ts.map +0 -1
  126. package/dist/identity/agent-identity.js +0 -300
  127. package/dist/identity/agent-identity.js.map +0 -1
  128. package/dist/identity/email-resolver.d.ts +0 -235
  129. package/dist/identity/email-resolver.js +0 -283
  130. package/dist/identity/erc6551.d.ts +0 -441
  131. package/dist/identity/erc6551.d.ts.map +0 -1
  132. package/dist/identity/erc6551.js +0 -517
  133. package/dist/identity/erc6551.js.map +0 -1
  134. package/dist/mev/index.d.ts +0 -4
  135. package/dist/mev/index.d.ts.map +0 -1
  136. package/dist/mev/index.js +0 -8
  137. package/dist/mev/index.js.map +0 -1
  138. package/dist/mev/protection.d.ts +0 -54
  139. package/dist/mev/protection.d.ts.map +0 -1
  140. package/dist/mev/protection.js +0 -185
  141. package/dist/mev/protection.js.map +0 -1
  142. package/dist/mev/risk.d.ts +0 -19
  143. package/dist/mev/risk.d.ts.map +0 -1
  144. package/dist/mev/risk.js +0 -95
  145. package/dist/mev/risk.js.map +0 -1
  146. package/dist/mev/types.d.ts +0 -49
  147. package/dist/mev/types.d.ts.map +0 -1
  148. package/dist/mev/types.js +0 -2
  149. package/dist/mev/types.js.map +0 -1
  150. package/dist/settlement/index.d.ts +0 -4
  151. package/dist/settlement/index.d.ts.map +0 -1
  152. package/dist/settlement/index.js +0 -3
  153. package/dist/settlement/index.js.map +0 -1
  154. package/dist/settlement/types.d.ts +0 -66
  155. package/dist/settlement/types.d.ts.map +0 -1
  156. package/dist/settlement/types.js +0 -37
  157. package/dist/settlement/types.js.map +0 -1
  158. package/dist/settlement/verifier.d.ts +0 -75
  159. package/dist/settlement/verifier.d.ts.map +0 -1
  160. package/dist/settlement/verifier.js +0 -354
  161. package/dist/settlement/verifier.js.map +0 -1
  162. package/dist/solana/bridge.d.ts +0 -144
  163. package/dist/solana/bridge.d.ts.map +0 -1
  164. package/dist/solana/bridge.js +0 -352
  165. package/dist/solana/bridge.js.map +0 -1
  166. package/dist/solana/index.d.ts +0 -8
  167. package/dist/solana/index.d.ts.map +0 -1
  168. package/dist/solana/index.js +0 -6
  169. package/dist/solana/index.js.map +0 -1
  170. package/dist/solana/swap.d.ts +0 -85
  171. package/dist/solana/swap.d.ts.map +0 -1
  172. package/dist/solana/swap.js +0 -173
  173. package/dist/solana/swap.js.map +0 -1
  174. package/dist/solana/types.d.ts +0 -126
  175. package/dist/solana/types.d.ts.map +0 -1
  176. package/dist/solana/types.js +0 -10
  177. package/dist/solana/types.js.map +0 -1
  178. package/dist/solana/wallet.d.ts +0 -83
  179. package/dist/solana/wallet.d.ts.map +0 -1
  180. package/dist/solana/wallet.js +0 -164
  181. package/dist/solana/wallet.js.map +0 -1
  182. package/dist/solana/x402.d.ts +0 -69
  183. package/dist/solana/x402.d.ts.map +0 -1
  184. package/dist/solana/x402.js +0 -154
  185. package/dist/solana/x402.js.map +0 -1
  186. package/dist/solver/adapter.d.ts +0 -47
  187. package/dist/solver/adapter.d.ts.map +0 -1
  188. package/dist/solver/adapter.js +0 -146
  189. package/dist/solver/adapter.js.map +0 -1
  190. package/dist/solver/analyzer.d.ts +0 -48
  191. package/dist/solver/analyzer.d.ts.map +0 -1
  192. package/dist/solver/analyzer.js +0 -171
  193. package/dist/solver/analyzer.js.map +0 -1
  194. package/dist/solver/builder.d.ts +0 -31
  195. package/dist/solver/builder.d.ts.map +0 -1
  196. package/dist/solver/builder.js +0 -60
  197. package/dist/solver/builder.js.map +0 -1
  198. package/dist/solver/index.d.ts +0 -22
  199. package/dist/solver/index.d.ts.map +0 -1
  200. package/dist/solver/index.js +0 -25
  201. package/dist/solver/index.js.map +0 -1
  202. package/dist/solver/types.d.ts +0 -115
  203. package/dist/solver/types.d.ts.map +0 -1
  204. package/dist/solver/types.js +0 -10
  205. package/dist/solver/types.js.map +0 -1
  206. package/dist/spend-guard/index.d.ts +0 -125
  207. package/dist/spend-guard/index.d.ts.map +0 -1
  208. package/dist/spend-guard/index.js +0 -150
  209. package/dist/spend-guard/index.js.map +0 -1
  210. package/dist/swap/router/cache.d.ts +0 -13
  211. package/dist/swap/router/cache.d.ts.map +0 -1
  212. package/dist/swap/router/cache.js +0 -30
  213. package/dist/swap/router/cache.js.map +0 -1
  214. package/dist/swap/router/flashbots.d.ts +0 -10
  215. package/dist/swap/router/flashbots.d.ts.map +0 -1
  216. package/dist/swap/router/flashbots.js +0 -43
  217. package/dist/swap/router/flashbots.js.map +0 -1
  218. package/dist/swap/router/health.d.ts +0 -17
  219. package/dist/swap/router/health.d.ts.map +0 -1
  220. package/dist/swap/router/health.js +0 -38
  221. package/dist/swap/router/health.js.map +0 -1
  222. package/dist/swap/router/index.d.ts +0 -10
  223. package/dist/swap/router/index.d.ts.map +0 -1
  224. package/dist/swap/router/index.js +0 -10
  225. package/dist/swap/router/index.js.map +0 -1
  226. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  227. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  228. package/dist/swap/router/providers/cowswap.js +0 -79
  229. package/dist/swap/router/providers/cowswap.js.map +0 -1
  230. package/dist/swap/router/providers/index.d.ts +0 -20
  231. package/dist/swap/router/providers/index.d.ts.map +0 -1
  232. package/dist/swap/router/providers/index.js +0 -32
  233. package/dist/swap/router/providers/index.js.map +0 -1
  234. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  235. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  236. package/dist/swap/router/providers/jupiter.js +0 -73
  237. package/dist/swap/router/providers/jupiter.js.map +0 -1
  238. package/dist/swap/router/providers/lifi.d.ts +0 -11
  239. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  240. package/dist/swap/router/providers/lifi.js +0 -123
  241. package/dist/swap/router/providers/lifi.js.map +0 -1
  242. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  243. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  244. package/dist/swap/router/providers/oneinch.js +0 -71
  245. package/dist/swap/router/providers/oneinch.js.map +0 -1
  246. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  247. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  248. package/dist/swap/router/providers/paraswap.js +0 -73
  249. package/dist/swap/router/providers/paraswap.js.map +0 -1
  250. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  251. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  252. package/dist/swap/router/providers/uniswap.js +0 -237
  253. package/dist/swap/router/providers/uniswap.js.map +0 -1
  254. package/dist/swap/router/providers/zerox.d.ts +0 -13
  255. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  256. package/dist/swap/router/providers/zerox.js +0 -94
  257. package/dist/swap/router/providers/zerox.js.map +0 -1
  258. package/dist/swap/router/router.d.ts +0 -86
  259. package/dist/swap/router/router.d.ts.map +0 -1
  260. package/dist/swap/router/router.js +0 -224
  261. package/dist/swap/router/router.js.map +0 -1
  262. package/dist/swap/router/rsi/engine.d.ts +0 -60
  263. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  264. package/dist/swap/router/rsi/engine.js +0 -483
  265. package/dist/swap/router/rsi/engine.js.map +0 -1
  266. package/dist/swap/router/rsi/index.d.ts +0 -3
  267. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  268. package/dist/swap/router/rsi/index.js +0 -3
  269. package/dist/swap/router/rsi/index.js.map +0 -1
  270. package/dist/swap/router/rsi/types.d.ts +0 -106
  271. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  272. package/dist/swap/router/rsi/types.js +0 -3
  273. package/dist/swap/router/rsi/types.js.map +0 -1
  274. package/dist/swap/router/types.d.ts +0 -120
  275. package/dist/swap/router/types.d.ts.map +0 -1
  276. package/dist/swap/router/types.js +0 -16
  277. package/dist/swap/router/types.js.map +0 -1
  278. package/dist/tax/engine.d.ts +0 -131
  279. package/dist/tax/engine.d.ts.map +0 -1
  280. package/dist/tax/engine.js +0 -307
  281. package/dist/tax/engine.js.map +0 -1
  282. package/dist/tax/index.d.ts +0 -9
  283. package/dist/tax/index.d.ts.map +0 -1
  284. package/dist/tax/index.js +0 -12
  285. package/dist/tax/index.js.map +0 -1
  286. package/dist/tax/lots.d.ts +0 -60
  287. package/dist/tax/lots.d.ts.map +0 -1
  288. package/dist/tax/lots.js +0 -129
  289. package/dist/tax/lots.js.map +0 -1
  290. package/dist/tax/types.d.ts +0 -113
  291. package/dist/tax/types.d.ts.map +0 -1
  292. package/dist/tax/types.js +0 -18
  293. package/dist/tax/types.js.map +0 -1
  294. package/dist/verifiable-intent/index.d.ts +0 -84
  295. package/dist/verifiable-intent/index.js +0 -385
  296. package/dist/yield/index.d.ts +0 -26
  297. package/dist/yield/index.d.ts.map +0 -1
  298. package/dist/yield/index.js +0 -29
  299. package/dist/yield/index.js.map +0 -1
  300. package/dist/yield/rates.d.ts +0 -114
  301. package/dist/yield/rates.d.ts.map +0 -1
  302. package/dist/yield/rates.js +0 -351
  303. package/dist/yield/rates.js.map +0 -1
  304. package/dist/yield/types.d.ts +0 -134
  305. package/dist/yield/types.d.ts.map +0 -1
  306. package/dist/yield/types.js +0 -24
  307. package/dist/yield/types.js.map +0 -1
  308. package/dist/yield/vault.d.ts +0 -112
  309. package/dist/yield/vault.d.ts.map +0 -1
  310. package/dist/yield/vault.js +0 -264
  311. package/dist/yield/vault.js.map +0 -1
@@ -1,351 +0,0 @@
1
- /**
2
- * Yield Rate Fetcher
3
- *
4
- * Fetches current APY rates from DeFi protocols and RWA token sources.
5
- * When a provider is not supplied (tests, offline, no RPC), returns accurate
6
- * estimated fallback rates based on market conditions (~Q1 2026).
7
- *
8
- * DeFi risk scores (0-100, lower = safer):
9
- * Aave V3: 15 — battle-tested, billions TVL, audited
10
- * Compound V3: 20 — mature, lower TVL than Aave
11
- * Morpho Blue: 25 — newer architecture, peer-to-peer matching
12
- *
13
- * RWA risk scores:
14
- * USDC-collateralized RWA: 10–20 (T-bill backed, regulated issuers)
15
- */
16
- import { ethers } from 'ethers';
17
- // ─── Protocol Contract Addresses ─────────────────────────────────────────────
18
- export const PROTOCOL_ADDRESSES = {
19
- 'aave-v3': {
20
- ethereum: {
21
- pool: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2',
22
- dataProvider: '0x7B4EB56E7CD4b454BA8ff71E4518426369a138a3',
23
- },
24
- base: {
25
- pool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
26
- dataProvider: '0x2d8A3C5677189723C4cB8873CfC9C8976ddf54D8',
27
- },
28
- arbitrum: {
29
- pool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
30
- dataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
31
- },
32
- },
33
- 'compound-v3': {
34
- ethereum: { comet: '0xc3d688B66703497DAA19211EEdff47f25384cdc3' }, // USDC market
35
- base: { comet: '0xb125E6687d4313864e53df431d5425969c15Eb2' },
36
- arbitrum: { comet: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf' },
37
- },
38
- usdy: {
39
- ethereum: { token: '0x96F6eF951840721AdBF7B6A2Ce4A795F61F8f60a' },
40
- arbitrum: { token: '0x7fAb54cb9d83BDAF0e94b1C2bA96F64Fb7D86b7A' },
41
- },
42
- };
43
- // ─── ABI Fragments ───────────────────────────────────────────────────────────
44
- const AAVE_DATA_PROVIDER_ABI = [
45
- 'function getReserveData(address asset) external view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)',
46
- ];
47
- const COMET_ABI = [
48
- 'function getSupplyRate(uint256 utilization) external view returns (uint64)',
49
- 'function getUtilization() external view returns (uint256)',
50
- ];
51
- // Token addresses (USDC on each chain)
52
- const USDC_ADDRESSES = {
53
- ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
54
- base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
55
- arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
56
- };
57
- const USDT_ADDRESSES = {
58
- ethereum: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
59
- arbitrum: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
60
- };
61
- const SECONDS_PER_YEAR = 365.25 * 24 * 60 * 60;
62
- const RAY = BigInt('1000000000000000000000000000'); // 1e27
63
- /** Resolve token address for a chain */
64
- function getTokenAddress(token, chain) {
65
- const upper = token.toUpperCase();
66
- if (upper === 'USDC')
67
- return USDC_ADDRESSES[chain];
68
- if (upper === 'USDT')
69
- return USDT_ADDRESSES[chain];
70
- return undefined;
71
- }
72
- // ─── Estimated fallback rates (market conditions ~Q1 2026) ─────────────────────────────────
73
- const ESTIMATED_FALLBACK_RATES = {
74
- 'aave-v3:ethereum:USDC': { apy: 0.038, tvlUsd: 4200000000 },
75
- 'aave-v3:base:USDC': { apy: 0.042, tvlUsd: 850000000 },
76
- 'aave-v3:arbitrum:USDC': { apy: 0.040, tvlUsd: 1100000000 },
77
- 'aave-v3:ethereum:USDT': { apy: 0.036, tvlUsd: 2800000000 },
78
- 'aave-v3:base:USDT': { apy: 0.038, tvlUsd: 300000000 },
79
- 'aave-v3:arbitrum:USDT': { apy: 0.037, tvlUsd: 500000000 },
80
- 'compound-v3:ethereum:USDC': { apy: 0.041, tvlUsd: 1800000000 },
81
- 'compound-v3:base:USDC': { apy: 0.045, tvlUsd: 400000000 },
82
- 'compound-v3:arbitrum:USDC': { apy: 0.043, tvlUsd: 600000000 },
83
- 'compound-v3:ethereum:USDT': { apy: 0.039, tvlUsd: 900000000 },
84
- 'morpho-blue:ethereum:USDC': { apy: 0.046, tvlUsd: 700000000 },
85
- 'morpho-blue:base:USDC': { apy: 0.048, tvlUsd: 150000000 },
86
- 'morpho-blue:arbitrum:USDC': { apy: 0.047, tvlUsd: 200000000 },
87
- };
88
- export class YieldRateFetcher {
89
- /**
90
- * Fetch current supply APY for Aave V3.
91
- *
92
- * On-chain: queries getReserveData() on the Aave Data Provider.
93
- * currentLiquidityRate is in ray format (1e27 = 100% APY).
94
- * APY = (1 + rate / 1e27 / SECONDS_PER_YEAR)^SECONDS_PER_YEAR - 1
95
- *
96
- * Falls back to accurate estimated rates when provider is not available.
97
- *
98
- * Risk score: 15 (battle-tested, billions TVL, multiple audits)
99
- */
100
- async fetchAaveRate(token, chain, provider) {
101
- const now = Date.now();
102
- const estimatedKey = `aave-v3:${chain}:${token}`;
103
- const estimated = ESTIMATED_FALLBACK_RATES[estimatedKey] ?? { apy: 0.038, tvlUsd: 500000000 };
104
- let apy = estimated.apy;
105
- if (provider) {
106
- try {
107
- const addresses = PROTOCOL_ADDRESSES['aave-v3'][chain];
108
- if (addresses) {
109
- const tokenAddr = getTokenAddress(token, chain);
110
- if (tokenAddr) {
111
- const dp = new ethers.Contract(addresses.dataProvider, AAVE_DATA_PROVIDER_ABI, provider);
112
- const data = await dp.getReserveData(tokenAddr);
113
- const liquidityRate = data[5]; // currentLiquidityRate in ray
114
- const ratePerSecond = Number(liquidityRate) / Number(RAY);
115
- apy = Math.pow(1 + ratePerSecond / SECONDS_PER_YEAR, SECONDS_PER_YEAR) - 1;
116
- }
117
- }
118
- }
119
- catch {
120
- // fall back to estimated rates
121
- }
122
- }
123
- return {
124
- protocol: 'aave-v3',
125
- category: 'defi',
126
- chain,
127
- token,
128
- apy,
129
- tvlUsd: estimated.tvlUsd,
130
- riskScore: 15,
131
- kycRequired: false,
132
- withdrawalDelayMs: 0,
133
- fetchedAt: now,
134
- };
135
- }
136
- /**
137
- * Fetch current supply APY for Compound V3.
138
- *
139
- * On-chain: calls getSupplyRate(utilization) on the Comet contract.
140
- * supplyRate is per-second (18 decimals).
141
- * APY = (1 + supplyRate / 1e18)^SECONDS_PER_YEAR - 1
142
- *
143
- * Risk score: 20 (mature protocol, lower TVL than Aave)
144
- */
145
- async fetchCompoundRate(token, chain, provider) {
146
- const now = Date.now();
147
- const estimatedKey = `compound-v3:${chain}:${token}`;
148
- const estimated = ESTIMATED_FALLBACK_RATES[estimatedKey] ?? { apy: 0.041, tvlUsd: 400000000 };
149
- let apy = estimated.apy;
150
- if (provider) {
151
- try {
152
- const addresses = PROTOCOL_ADDRESSES['compound-v3'][chain];
153
- if (addresses) {
154
- const comet = new ethers.Contract(addresses.comet, COMET_ABI, provider);
155
- const utilization = await comet.getUtilization();
156
- const supplyRate = await comet.getSupplyRate(utilization);
157
- const ratePerSecond = Number(supplyRate) / 1e18;
158
- apy = Math.pow(1 + ratePerSecond, SECONDS_PER_YEAR) - 1;
159
- }
160
- }
161
- catch {
162
- // fall back to estimated rates
163
- }
164
- }
165
- return {
166
- protocol: 'compound-v3',
167
- category: 'defi',
168
- chain,
169
- token,
170
- apy,
171
- tvlUsd: estimated.tvlUsd,
172
- riskScore: 20,
173
- kycRequired: false,
174
- withdrawalDelayMs: 0,
175
- fetchedAt: now,
176
- };
177
- }
178
- /**
179
- * Fetch APY for Morpho Blue.
180
- *
181
- * Morpho Blue uses peer-to-peer rate matching — on-chain query is complex
182
- * (varies per market). We use well-calibrated estimates based on current
183
- * market conditions. Real implementation would query Morpho's API or
184
- * aggregate across market IDs.
185
- *
186
- * Risk score: 25 (newer architecture, audited, growing TVL)
187
- */
188
- async fetchMorphoRate(token, chain, _provider) {
189
- const now = Date.now();
190
- const estimatedKey = `morpho-blue:${chain}:${token}`;
191
- const estimated = ESTIMATED_FALLBACK_RATES[estimatedKey] ?? { apy: 0.046, tvlUsd: 200000000 };
192
- return {
193
- protocol: 'morpho-blue',
194
- category: 'defi',
195
- chain,
196
- token,
197
- apy: estimated.apy,
198
- tvlUsd: estimated.tvlUsd,
199
- riskScore: 25,
200
- kycRequired: false,
201
- withdrawalDelayMs: 0,
202
- fetchedAt: now,
203
- };
204
- }
205
- /**
206
- * Get current RWA token rates.
207
- *
208
- * RWA tokens are backed by tokenized T-bills and short-duration government bonds.
209
- * Rates (~4.8–5.2% APY as of Q1 2026) track the Fed Funds rate.
210
- *
211
- * Agent-friendliness matrix:
212
- * ┌──────────┬──────────────┬───────────┬───────────────────────────────────┐
213
- * │ Protocol │ KYC Required │ Min Dep. │ Chains │
214
- * ├──────────┼──────────────┼───────────┼───────────────────────────────────┤
215
- * │ BUIDL │ ✅ YES │ $1,000,000│ Ethereum only │
216
- * │ OUSG │ ✅ YES │ ~$5,000 │ Ethereum, Base │
217
- * │ USDY │ ❌ NO │ ~$500 │ Ethereum, Arbitrum (best for bots)│
218
- * │ USYC │ ❌ NO │ ~$1,000 │ Ethereum, Base │
219
- * │ wUSTB │ ❌ NO │ ~$100 │ Ethereum │
220
- * └──────────┴──────────────┴───────────┴───────────────────────────────────┘
221
- *
222
- * ⚠️ BUIDL: $1M minimum is a HARD requirement. Do not recommend to retail agents.
223
- */
224
- async fetchRWARates(chains) {
225
- const now = Date.now();
226
- const rates = [];
227
- for (const chain of chains) {
228
- // BUIDL — BlackRock USD Institutional Digital Liquidity Fund
229
- // ⚠️ $1,000,000 minimum deposit. KYC required. Institutional only.
230
- if (chain === 'ethereum') {
231
- rates.push({
232
- protocol: 'buidl',
233
- category: 'rwa',
234
- chain: 'ethereum',
235
- token: 'USDC',
236
- apy: 0.048,
237
- tvlUsd: 2800000000,
238
- riskScore: 10,
239
- kycRequired: true,
240
- minDepositUsd: 1000000, // ⚠️ $1M minimum — institutional only
241
- withdrawalDelayMs: 24 * 60 * 60 * 1000, // T+1 settlement
242
- fetchedAt: now,
243
- });
244
- }
245
- // OUSG — Ondo US Dollar Yield (institutional-grade)
246
- if (chain === 'ethereum' || chain === 'base') {
247
- rates.push({
248
- protocol: 'ousg',
249
- category: 'rwa',
250
- chain,
251
- token: 'USDC',
252
- apy: 0.051,
253
- tvlUsd: 680000000,
254
- riskScore: 12,
255
- kycRequired: true, // KYC required for OUSG
256
- minDepositUsd: 5000,
257
- withdrawalDelayMs: 24 * 60 * 60 * 1000,
258
- fetchedAt: now,
259
- });
260
- }
261
- // USDY — Ondo US Dollar Yield (accessible, NO KYC)
262
- // Best agent-friendly RWA option: no KYC, low minimums
263
- if (chain === 'ethereum' || chain === 'arbitrum') {
264
- rates.push({
265
- protocol: 'usdy',
266
- category: 'rwa',
267
- chain,
268
- token: 'USDC',
269
- apy: 0.050,
270
- tvlUsd: 450000000,
271
- riskScore: 14,
272
- kycRequired: false, // No KYC — accessible to autonomous agents
273
- minDepositUsd: 500,
274
- withdrawalDelayMs: 3 * 24 * 60 * 60 * 1000, // ~3 day redemption
275
- fetchedAt: now,
276
- });
277
- }
278
- // USYC — Hashnote US Yield Coin (NO KYC, competitive APY)
279
- if (chain === 'ethereum' || chain === 'base') {
280
- rates.push({
281
- protocol: 'usyc',
282
- category: 'rwa',
283
- chain,
284
- token: 'USDC',
285
- apy: 0.052,
286
- tvlUsd: 320000000,
287
- riskScore: 15,
288
- kycRequired: false, // No KYC — accessible to autonomous agents
289
- minDepositUsd: 1000,
290
- withdrawalDelayMs: 24 * 60 * 60 * 1000,
291
- fetchedAt: now,
292
- });
293
- }
294
- // wUSTB — Superstate Short Duration US Government Securities Fund
295
- if (chain === 'ethereum') {
296
- rates.push({
297
- protocol: 'wustb',
298
- category: 'rwa',
299
- chain: 'ethereum',
300
- token: 'USDC',
301
- apy: 0.050,
302
- tvlUsd: 180000000,
303
- riskScore: 13,
304
- kycRequired: false, // No KYC
305
- minDepositUsd: 100,
306
- withdrawalDelayMs: 2 * 24 * 60 * 60 * 1000,
307
- fetchedAt: now,
308
- });
309
- }
310
- }
311
- return rates;
312
- }
313
- /**
314
- * Fetch all rates across DeFi protocols and RWA tokens.
315
- * Applies config filters (KYC, chains, tokens).
316
- * Returns sorted by APY descending.
317
- */
318
- async fetchAllRates(config) {
319
- const chains = config.chains ?? ['ethereum', 'base', 'arbitrum'];
320
- const tokens = config.tokens ?? ['USDC', 'USDT'];
321
- const includeRWA = config.includeRWA !== false;
322
- const skipKYC = config.skipKYCRequired !== false;
323
- const rates = [];
324
- // Fetch DeFi rates in parallel
325
- const defiPromises = [];
326
- for (const chain of chains) {
327
- for (const token of tokens) {
328
- defiPromises.push(this.fetchAaveRate(token, chain));
329
- defiPromises.push(this.fetchCompoundRate(token, chain));
330
- // Morpho only for USDC on supported chains
331
- if (token === 'USDC') {
332
- defiPromises.push(this.fetchMorphoRate(token, chain));
333
- }
334
- }
335
- }
336
- const defiRates = await Promise.all(defiPromises);
337
- rates.push(...defiRates);
338
- // Fetch RWA rates
339
- if (includeRWA) {
340
- const rwaRates = await this.fetchRWARates(chains);
341
- rates.push(...rwaRates);
342
- }
343
- // Filter KYC-required if skipKYCRequired is true
344
- const filtered = skipKYC
345
- ? rates.filter(r => !r.kycRequired)
346
- : rates;
347
- // Sort by APY descending
348
- return filtered.sort((a, b) => b.apy - a.apy);
349
- }
350
- }
351
- //# sourceMappingURL=rates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rates.js","sourceRoot":"","sources":["../../src/yield/rates.ts"],"names":[],"mappings":"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"}
@@ -1,134 +0,0 @@
1
- /**
2
- * Yield Vault Module — Types
3
- *
4
- * ⚠️ PRODUCTION NOTICE:
5
- * buildDepositTx / buildWithdrawTx generate calldata ONLY.
6
- * The agent signs and sends the transaction — no private keys are held server-side.
7
- *
8
- * The Yield Vault puts idle agent capital to work across two categories:
9
- * 1. DeFi Vaults — Aave V3, Compound V3, Morpho Blue (higher APY, smart contract risk)
10
- * 2. RWA Tokens — Tokenized T-bills: BUIDL, OUSG, USDY, USYC, wUSTB
11
- *
12
- * ⚠️ BUIDL WARNING: BlackRock BUIDL requires a $1,000,000 minimum deposit AND KYC.
13
- * Do not use BUIDL for general agent capital deployment. Use USDY or USYC instead
14
- * (no KYC, accessible minimums, ~5% APY).
15
- *
16
- * KYC requirements by protocol:
17
- * - BUIDL (BlackRock): KYC required, $1M minimum — institutional only
18
- * - OUSG (Ondo): KYC required, lower minimum
19
- * - USDY (Ondo): NO KYC, most accessible RWA token
20
- * - USYC (Hashnote): NO KYC, competitive APY
21
- * - wUSTB (Superstate): NO KYC, Ethereum-native
22
- */
23
- /** Supported yield protocols */
24
- export type YieldProtocol = 'aave-v3' | 'compound-v3' | 'morpho-blue' | 'buidl' | 'ousg' | 'usdy' | 'usyc' | 'wustb';
25
- export type YieldCategory = 'defi' | 'rwa';
26
- /** An active yield position held by the agent */
27
- export interface YieldPosition {
28
- protocol: YieldProtocol;
29
- category: YieldCategory;
30
- /** Underlying deposited token (USDC, USDT, DAI, etc.) */
31
- token: string;
32
- chain: string;
33
- /** Current deposited amount in underlying token units */
34
- depositedAmount: bigint;
35
- /** Deposit timestamp (unix ms) */
36
- depositedAt: number;
37
- /** Current APY as a decimal (e.g., 0.051 = 5.1%) */
38
- currentApy: number;
39
- /** Accrued yield since deposit (estimated) */
40
- accruedYield: bigint;
41
- /** Protocol-specific position ID or address */
42
- positionId?: string;
43
- }
44
- /** Current rate data for a yield protocol on a specific chain */
45
- export interface YieldRate {
46
- protocol: YieldProtocol;
47
- category: YieldCategory;
48
- chain: string;
49
- token: string;
50
- /** Current APY as a decimal (e.g., 0.051 = 5.1%) */
51
- apy: number;
52
- /** Total value locked — signals liquidity depth */
53
- tvlUsd: number;
54
- /** Risk score 0–100 (lower = safer) */
55
- riskScore: number;
56
- /**
57
- * Minimum deposit in USD.
58
- * ⚠️ BUIDL: $1,000,000 minimum — institutional only.
59
- * USDY/USYC: much lower minimums, agent-friendly.
60
- */
61
- minDepositUsd?: number;
62
- /**
63
- * KYC required to access this protocol?
64
- * BUIDL + OUSG = true (skip for autonomous agents).
65
- * USDY + USYC + wUSTB = false (use these instead).
66
- */
67
- kycRequired?: boolean;
68
- /** How long withdrawal takes (ms). 0 = instant. */
69
- withdrawalDelayMs?: number;
70
- /** Unix ms when this rate was fetched */
71
- fetchedAt: number;
72
- }
73
- /** A yield rotation opportunity (current position vs best available rate) */
74
- export interface YieldOpportunity {
75
- /** Current position (null if no capital deployed) */
76
- current: YieldPosition | null;
77
- /** Best available rate found in the scan */
78
- best: YieldRate;
79
- /** APY improvement if rotating (basis points; e.g., 30 = 0.30%) */
80
- apyImprovementBps: number;
81
- /** Estimated annual gain in USD on the given amount */
82
- estimatedAnnualGainUsd: number;
83
- /** Cost to rotate (gas + bridge fees if cross-chain) */
84
- rotationCostUsd: number;
85
- /** Net annual gain after rotation costs */
86
- netAnnualGainUsd: number;
87
- /** Worth rotating? true when improvement >= threshold AND net gain > 0 */
88
- viable: boolean;
89
- }
90
- /** Configuration for the Yield Vault */
91
- export interface YieldVaultConfig {
92
- enabled: boolean;
93
- /** Chains to scan (default: ['ethereum', 'base', 'arbitrum']) */
94
- chains?: string[];
95
- /** Tokens to include (default: ['USDC', 'USDT']) */
96
- tokens?: string[];
97
- /** Include RWA protocols in scan (default: true) */
98
- includeRWA?: boolean;
99
- /** Minimum APY improvement to trigger rotation in bps (default: 25 = 0.25%) */
100
- minRotationImprovementBps?: number;
101
- /** Minimum idle time before auto-deposit in ms (default: 86400000 = 24h) */
102
- minIdleMs?: number;
103
- /** Maximum single deposit in USD */
104
- maxDepositUsd?: number;
105
- /**
106
- * Skip KYC-required protocols (default: true).
107
- * When true: BUIDL and OUSG are excluded. USDY, USYC, wUSTB remain.
108
- * Recommended for autonomous agents — KYC requires human verification.
109
- */
110
- skipKYCRequired?: boolean;
111
- }
112
- /** Result of a deposit operation */
113
- export interface DepositResult {
114
- success: boolean;
115
- protocol: YieldProtocol;
116
- chain: string;
117
- token: string;
118
- amountDeposited: bigint;
119
- txHash?: string;
120
- estimatedApy: number;
121
- error?: string;
122
- }
123
- /** Result of a withdrawal operation */
124
- export interface WithdrawResult {
125
- success: boolean;
126
- protocol: YieldProtocol;
127
- chain: string;
128
- token: string;
129
- amountWithdrawn: bigint;
130
- yieldEarned: bigint;
131
- txHash?: string;
132
- error?: string;
133
- }
134
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/yield/types.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Yield Vault Module — Types
3
- *
4
- * ⚠️ PRODUCTION NOTICE:
5
- * buildDepositTx / buildWithdrawTx generate calldata ONLY.
6
- * The agent signs and sends the transaction — no private keys are held server-side.
7
- *
8
- * The Yield Vault puts idle agent capital to work across two categories:
9
- * 1. DeFi Vaults — Aave V3, Compound V3, Morpho Blue (higher APY, smart contract risk)
10
- * 2. RWA Tokens — Tokenized T-bills: BUIDL, OUSG, USDY, USYC, wUSTB
11
- *
12
- * ⚠️ BUIDL WARNING: BlackRock BUIDL requires a $1,000,000 minimum deposit AND KYC.
13
- * Do not use BUIDL for general agent capital deployment. Use USDY or USYC instead
14
- * (no KYC, accessible minimums, ~5% APY).
15
- *
16
- * KYC requirements by protocol:
17
- * - BUIDL (BlackRock): KYC required, $1M minimum — institutional only
18
- * - OUSG (Ondo): KYC required, lower minimum
19
- * - USDY (Ondo): NO KYC, most accessible RWA token
20
- * - USYC (Hashnote): NO KYC, competitive APY
21
- * - wUSTB (Superstate): NO KYC, Ethereum-native
22
- */
23
- export {};
24
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/yield/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
@@ -1,112 +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 type { YieldProtocol, YieldPosition, YieldOpportunity, YieldVaultConfig } from './types.js';
19
- export declare class YieldVault {
20
- private rateFetcher;
21
- private positions;
22
- readonly config: Required<YieldVaultConfig>;
23
- constructor(config: YieldVaultConfig);
24
- /**
25
- * Scan all protocols and chains for the best available yield.
26
- *
27
- * Returns opportunities sorted by netAnnualGainUsd descending.
28
- * Only includes rates with positive APY improvement vs current position.
29
- *
30
- * @param params.token - Underlying token to scan for (e.g. 'USDC')
31
- * @param params.amountUsd - Amount in USD to use for gain calculations
32
- * @param params.currentPosition - Active position (if any) to compare against
33
- */
34
- scan(params: {
35
- token: string;
36
- amountUsd: number;
37
- currentPosition?: YieldPosition;
38
- }): Promise<YieldOpportunity[]>;
39
- /**
40
- * Build a deposit transaction for a supported protocol.
41
- *
42
- * Returns unsigned calldata — the agent signs and broadcasts.
43
- * ERC20 deposits: value is always 0n (approve first, then supply).
44
- *
45
- * Supported: aave-v3, compound-v3
46
- * Unsupported (use native interface): buidl, ousg, usdy, usyc, wustb
47
- *
48
- * @throws Error for unsupported protocols
49
- */
50
- buildDepositTx(params: {
51
- protocol: YieldProtocol;
52
- token: string;
53
- amount: bigint;
54
- chain: string;
55
- walletAddress: string;
56
- }): {
57
- to: string;
58
- data: string;
59
- value: bigint;
60
- gasEstimate: bigint;
61
- };
62
- /**
63
- * Build a withdrawal transaction for a supported protocol.
64
- *
65
- * Returns unsigned calldata — the agent signs and broadcasts.
66
- * Pass ethers.MaxUint256 (2^256-1) to withdraw the full position.
67
- *
68
- * Supported: aave-v3, compound-v3
69
- *
70
- * @throws Error for unsupported protocols
71
- */
72
- buildWithdrawTx(params: {
73
- protocol: YieldProtocol;
74
- token: string;
75
- amount: bigint;
76
- chain: string;
77
- walletAddress: string;
78
- }): {
79
- to: string;
80
- data: string;
81
- value: bigint;
82
- gasEstimate: bigint;
83
- };
84
- /**
85
- * Estimate USD cost to rotate capital from one position to another.
86
- *
87
- * Same-chain rotation: ~$3 gas (single approve + supply tx)
88
- * Cross-chain rotation: CCTP bridge fee (0.1% of amount) + gas both sides (~$5)
89
- *
90
- * Note: For small amounts, cross-chain rotation may not be worth it.
91
- */
92
- estimateRotationCost(fromChain: string | undefined, toChain: string, amountUsd: number): number;
93
- /**
94
- * Track a position for yield accrual estimation.
95
- * Keyed by protocol:chain:token — one position per slot.
96
- */
97
- trackPosition(position: YieldPosition): void;
98
- /** Get all tracked positions */
99
- getPositions(): YieldPosition[];
100
- /**
101
- * Estimate yield accrued since deposit.
102
- *
103
- * Uses simple linear approximation (accurate for short periods).
104
- * For compound interest over long periods, use protocol's native accrual.
105
- */
106
- estimateAccruedYield(position: YieldPosition): bigint;
107
- private buildAaveDepositTx;
108
- private buildAaveWithdrawTx;
109
- private buildCompoundDepositTx;
110
- private buildCompoundWithdrawTx;
111
- }
112
- //# sourceMappingURL=vault.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/yield/vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA6DpB,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,SAAS,CAAyC;IAC1D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAEhC,MAAM,EAAE,gBAAgB;IAKpC;;;;;;;;;OASG;IACG,IAAI,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,aAAa,CAAC;KACjC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgC/B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAepE;;;;;;;;;OASG;IACH,eAAe,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAapE;;;;;;;OAOG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM;IAST;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK5C,gCAAgC;IAChC,YAAY,IAAI,aAAa,EAAE;IAI/B;;;;;OAKG;IACH,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IASrD,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,uBAAuB;CAsBhC"}