@elizaos/plugin-wallet 2.0.0-beta.1 → 2.0.3-beta.6

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 (356) hide show
  1. package/README.md +70 -45
  2. package/auto-enable.ts +1 -1
  3. package/dist/actions/failure-codes.d.ts +12 -0
  4. package/dist/actions/index.d.ts +1 -0
  5. package/dist/analytics/birdeye/actions/wallet-search-address.d.ts +7 -0
  6. package/dist/analytics/birdeye/birdeye-task.d.ts +27 -0
  7. package/dist/analytics/birdeye/birdeye.d.ts +140 -0
  8. package/dist/analytics/birdeye/constants.d.ts +68 -0
  9. package/dist/analytics/birdeye/providers/agent-portfolio-provider.d.ts +8 -0
  10. package/dist/analytics/birdeye/providers/market.d.ts +18 -0
  11. package/dist/analytics/birdeye/providers/portfolio-factory.d.ts +10 -0
  12. package/dist/analytics/birdeye/providers/trending.d.ts +19 -0
  13. package/dist/analytics/birdeye/providers/wallet.d.ts +5 -0
  14. package/dist/analytics/birdeye/search-category.d.ts +52 -0
  15. package/dist/analytics/birdeye/service.d.ts +94 -0
  16. package/dist/analytics/birdeye/types/api/common.d.ts +199 -0
  17. package/dist/analytics/birdeye/types/api/defi.d.ts +187 -0
  18. package/dist/analytics/birdeye/types/api/pair.d.ts +182 -0
  19. package/dist/analytics/birdeye/types/api/search.d.ts +64 -0
  20. package/dist/analytics/birdeye/types/api/token.d.ts +580 -0
  21. package/dist/analytics/birdeye/types/api/trader.d.ts +70 -0
  22. package/dist/analytics/birdeye/types/api/wallet.d.ts +161 -0
  23. package/dist/analytics/birdeye/types/shared.d.ts +83 -0
  24. package/dist/analytics/birdeye/utils.d.ts +74 -0
  25. package/dist/analytics/dexscreener/errors.d.ts +2 -0
  26. package/dist/analytics/dexscreener/index.d.ts +3 -0
  27. package/dist/analytics/dexscreener/search-category.d.ts +3 -0
  28. package/dist/analytics/dexscreener/service.d.ts +34 -0
  29. package/dist/analytics/dexscreener/types.d.ts +131 -0
  30. package/dist/analytics/lpinfo/index.d.ts +31 -0
  31. package/dist/analytics/lpinfo/kamino/index.d.ts +7 -0
  32. package/dist/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.d.ts +6 -0
  33. package/dist/analytics/lpinfo/kamino/providers/kaminoPoolProvider.d.ts +6 -0
  34. package/dist/analytics/lpinfo/kamino/providers/kaminoProvider.d.ts +6 -0
  35. package/dist/analytics/lpinfo/kamino/services/kaminoLiquidityService.d.ts +203 -0
  36. package/dist/analytics/lpinfo/kamino/services/kaminoService.d.ts +171 -0
  37. package/dist/analytics/lpinfo/steer/index.d.ts +7 -0
  38. package/dist/analytics/lpinfo/steer/providers/steerLiquidityProvider.d.ts +6 -0
  39. package/dist/analytics/lpinfo/steer/services/steerLiquidityService.d.ts +208 -0
  40. package/dist/analytics/lpinfo/steer/steer-display-types.d.ts +97 -0
  41. package/dist/analytics/news/index.d.ts +32 -0
  42. package/dist/analytics/news/interfaces/types.d.ts +177 -0
  43. package/dist/analytics/news/providers/defiNewsProvider.d.ts +106 -0
  44. package/dist/analytics/news/services/newsDataService.d.ts +72 -0
  45. package/dist/analytics/news/utils/formatters.d.ts +54 -0
  46. package/dist/analytics/token-info/action.d.ts +6 -0
  47. package/dist/analytics/token-info/index.d.ts +3 -0
  48. package/dist/analytics/token-info/params.d.ts +10 -0
  49. package/dist/analytics/token-info/providers.d.ts +4 -0
  50. package/dist/analytics/token-info/service.d.ts +19 -0
  51. package/dist/analytics/token-info/types.d.ts +45 -0
  52. package/dist/api/wallet-routes.d.ts +100 -0
  53. package/dist/audit/audit-log.d.ts +29 -0
  54. package/dist/browser-shim/build-shim.d.ts +31 -0
  55. package/dist/browser-shim/index.d.ts +1 -0
  56. package/dist/chains/evm/actions/helpers.d.ts +31 -0
  57. package/dist/chains/evm/actions/swap.d.ts +53 -0
  58. package/dist/chains/evm/actions/transfer.d.ts +10 -0
  59. package/dist/chains/evm/bridge-router.d.ts +44 -0
  60. package/dist/chains/evm/build.d.ts +2 -0
  61. package/dist/chains/evm/chain-handler.d.ts +37 -0
  62. package/dist/chains/evm/constants.d.ts +16 -0
  63. package/dist/chains/evm/dex/aerodrome/index.d.ts +6 -0
  64. package/dist/chains/evm/dex/aerodrome/services/AerodromeLpService.d.ts +27 -0
  65. package/dist/chains/evm/dex/aerodrome/types.d.ts +435 -0
  66. package/dist/chains/evm/dex/pancakeswp/index.d.ts +6 -0
  67. package/dist/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.d.ts +28 -0
  68. package/dist/chains/evm/dex/pancakeswp/types.d.ts +19 -0
  69. package/dist/chains/evm/dex/uniswap/index.d.ts +6 -0
  70. package/dist/chains/evm/dex/uniswap/services/UniswapV3LpService.d.ts +28 -0
  71. package/dist/chains/evm/dex/uniswap/types.d.ts +458 -0
  72. package/dist/chains/evm/generated/specs/spec-helpers.d.ts +35 -0
  73. package/dist/chains/evm/generated/specs/specs.d.ts +99 -0
  74. package/dist/chains/evm/gov-router.d.ts +6 -0
  75. package/dist/chains/evm/index.browser.d.ts +3 -0
  76. package/dist/chains/evm/index.d.ts +6 -0
  77. package/dist/chains/evm/prompts.d.ts +24 -0
  78. package/dist/chains/evm/providers/get-balance.d.ts +2 -0
  79. package/dist/chains/evm/providers/wallet.d.ts +35 -0
  80. package/dist/chains/evm/routes/sign.d.ts +13 -0
  81. package/dist/chains/evm/rpc-providers.d.ts +26 -0
  82. package/dist/chains/evm/service.d.ts +26 -0
  83. package/dist/chains/evm/templates/index.d.ts +1 -0
  84. package/dist/chains/evm/types/index.d.ts +296 -0
  85. package/dist/chains/evm/vitest.config.d.ts +2 -0
  86. package/dist/chains/registry.d.ts +3 -0
  87. package/dist/chains/solana/actions/confirmation.d.ts +9 -0
  88. package/dist/chains/solana/bn.d.ts +6 -0
  89. package/dist/chains/solana/build.d.ts +2 -0
  90. package/dist/chains/solana/constants.d.ts +2 -0
  91. package/dist/chains/solana/dex/meteora/e2e/scenarios.d.ts +10 -0
  92. package/dist/chains/solana/dex/meteora/e2e/test-utils.d.ts +28 -0
  93. package/dist/chains/solana/dex/meteora/index.d.ts +3 -0
  94. package/dist/chains/solana/dex/meteora/providers/positionProvider.d.ts +9 -0
  95. package/dist/chains/solana/dex/meteora/services/MeteoraLpService.d.ts +37 -0
  96. package/dist/chains/solana/dex/meteora/utils/dlmm.d.ts +6 -0
  97. package/dist/chains/solana/dex/meteora/utils/loadWallet.d.ts +14 -0
  98. package/dist/chains/solana/dex/meteora/utils/sendTransaction.d.ts +2 -0
  99. package/dist/chains/solana/dex/orca/index.d.ts +6 -0
  100. package/dist/chains/solana/dex/orca/providers/positionProvider.d.ts +10 -0
  101. package/dist/chains/solana/dex/orca/services/srv_orca.d.ts +10 -0
  102. package/dist/chains/solana/dex/orca/types.d.ts +61 -0
  103. package/dist/chains/solana/dex/orca/utils/loadWallet.d.ts +1 -0
  104. package/dist/chains/solana/dex/orca/utils/sendTransaction.d.ts +2 -0
  105. package/dist/chains/solana/dex/raydium/index.d.ts +6 -0
  106. package/dist/chains/solana/dex/raydium/providers/positionProvider.d.ts +10 -0
  107. package/dist/chains/solana/dex/raydium/services/srv_raydium.d.ts +104 -0
  108. package/dist/chains/solana/dex/raydium/types.d.ts +42 -0
  109. package/dist/chains/solana/environment.d.ts +15 -0
  110. package/dist/chains/solana/generated/specs/spec-helpers.d.ts +35 -0
  111. package/dist/chains/solana/generated/specs/specs.d.ts +73 -0
  112. package/dist/chains/solana/index.browser.d.ts +3 -0
  113. package/dist/chains/solana/index.d.ts +7 -0
  114. package/dist/chains/solana/keypairUtils.d.ts +7 -0
  115. package/dist/chains/solana/prompts.d.ts +12 -0
  116. package/dist/chains/solana/providers/wallet.d.ts +2 -0
  117. package/dist/chains/solana/routes/index.d.ts +2 -0
  118. package/dist/chains/solana/routes/sign.d.ts +16 -0
  119. package/dist/chains/solana/service.d.ts +237 -0
  120. package/dist/chains/solana/types.d.ts +377 -0
  121. package/dist/chains/solana/vitest.config.d.ts +2 -0
  122. package/dist/chains/wallet-action.d.ts +3 -0
  123. package/dist/contracts.d.ts +58 -0
  124. package/dist/core-augmentation.d.ts +9 -0
  125. package/dist/index.d.mts +27 -34727
  126. package/dist/index.d.ts +27 -0
  127. package/dist/index.mjs +28246 -21186
  128. package/dist/index.mjs.map +153 -0
  129. package/dist/lib/server-wallet-trade.d.ts +22 -0
  130. package/dist/lib/server-wallet-trade.js +333 -0
  131. package/dist/lib/server-wallet-trade.js.map +11 -0
  132. package/dist/lib/wallet-export-guard.d.ts +45 -0
  133. package/dist/lp/actions/liquidity.d.ts +2 -0
  134. package/dist/lp/e2e/real-token-tests.d.ts +6 -0
  135. package/dist/lp/e2e/scenarios.d.ts +9 -0
  136. package/dist/lp/e2e/test-utils.d.ts +28 -0
  137. package/dist/lp/lp-manager-entry.d.ts +18 -0
  138. package/dist/lp/services/ConcentratedLiquidityService.d.ts +32 -0
  139. package/dist/lp/services/DexInteractionService.d.ts +34 -0
  140. package/dist/lp/services/LpManagementService.d.ts +116 -0
  141. package/dist/lp/services/UserLpProfileService.d.ts +18 -0
  142. package/dist/lp/services/VaultService.d.ts +21 -0
  143. package/dist/lp/services/YieldOptimizationService.d.ts +59 -0
  144. package/dist/lp/services/__tests__/MockLpService.d.ts +17 -0
  145. package/dist/lp/types.d.ts +439 -0
  146. package/dist/lp/utils/solanaClient.d.ts +26 -0
  147. package/dist/plugin.d.ts +7 -0
  148. package/dist/policy/policy.d.ts +14 -0
  149. package/dist/providers/canonical-provider.d.ts +19 -0
  150. package/dist/providers/wallet-provider.d.ts +5 -0
  151. package/dist/register-routes.d.ts +1 -0
  152. package/dist/routes/plugin.d.ts +14 -0
  153. package/dist/routes/wallet-market-overview-route.d.ts +7 -0
  154. package/dist/sdk/abi.d.ts +396 -0
  155. package/dist/sdk/bridge/abis.d.ts +63 -0
  156. package/dist/sdk/bridge/client.d.ts +48 -0
  157. package/dist/sdk/bridge/index.d.ts +14 -0
  158. package/dist/sdk/bridge/solana.d.ts +131 -0
  159. package/dist/sdk/bridge/types.d.ts +92 -0
  160. package/dist/sdk/convenience.d.ts +104 -0
  161. package/dist/sdk/escrow/MutualStakeEscrow.d.ts +75 -0
  162. package/dist/sdk/escrow/types.d.ts +58 -0
  163. package/dist/sdk/escrow/verifiers.d.ts +25 -0
  164. package/dist/sdk/identity/erc8004.d.ts +304 -0
  165. package/dist/sdk/identity/reputation.d.ts +317 -0
  166. package/dist/sdk/identity/uaid.d.ts +192 -0
  167. package/dist/sdk/identity/validation.d.ts +282 -0
  168. package/dist/sdk/index.d.ts +133 -0
  169. package/dist/sdk/index.js +5284 -0
  170. package/dist/sdk/index.js.map +40 -0
  171. package/dist/sdk/policy/SpendingPolicy.d.ts +105 -0
  172. package/dist/sdk/policy/UptoBillingPolicy.d.ts +87 -0
  173. package/dist/sdk/router/PaymentRouter.d.ts +77 -0
  174. package/dist/sdk/router/index.d.ts +2 -0
  175. package/dist/sdk/swap/SwapModule.d.ts +47 -0
  176. package/dist/sdk/swap/abi.d.ts +50 -0
  177. package/dist/sdk/swap/index.d.ts +11 -0
  178. package/dist/sdk/swap/types.d.ts +101 -0
  179. package/dist/sdk/tokens/decimals.d.ts +64 -0
  180. package/dist/sdk/tokens/registry.d.ts +81 -0
  181. package/dist/sdk/tokens/solana.d.ts +107 -0
  182. package/dist/sdk/tokens/transfers.d.ts +94 -0
  183. package/dist/sdk/types.d.ts +129 -0
  184. package/dist/sdk/wallet-core.d.ts +29450 -0
  185. package/dist/sdk/x402/budget.d.ts +51 -0
  186. package/dist/sdk/x402/chains/abstract/index.d.ts +134 -0
  187. package/dist/sdk/x402/client.d.ts +66 -0
  188. package/dist/sdk/x402/index.d.ts +8 -0
  189. package/dist/sdk/x402/middleware.d.ts +37 -0
  190. package/dist/sdk/x402/multi-asset.d.ts +53 -0
  191. package/dist/sdk/x402/types.d.ts +109 -0
  192. package/dist/security/wallet-context-safety.d.ts +7 -0
  193. package/dist/security/wallet-financial-confirmation.d.ts +23 -0
  194. package/dist/services/wallet-backend-service.d.ts +39 -0
  195. package/dist/types/wallet-router.d.ts +130 -0
  196. package/dist/utils/intent-trajectory.d.ts +34 -0
  197. package/dist/wallet/backend.d.ts +41 -0
  198. package/dist/wallet/errors.d.ts +17 -0
  199. package/dist/wallet/index.d.ts +6 -0
  200. package/dist/wallet/local-eoa-backend.d.ts +37 -0
  201. package/dist/wallet/pending.d.ts +47 -0
  202. package/dist/wallet/select-backend.d.ts +11 -0
  203. package/dist/wallet/steward-backend.d.ts +22 -0
  204. package/dist/wallet-action.d.ts +1 -0
  205. package/dist/wallet-action.js +6292 -0
  206. package/dist/wallet-action.js.map +44 -0
  207. package/package.json +35 -21
  208. package/registry-entry.json +134 -0
  209. package/src/analytics/birdeye/actions/wallet-search-address.ts +85 -5
  210. package/src/analytics/birdeye/birdeye-task.ts +25 -9
  211. package/src/analytics/birdeye/birdeye.ts +6 -7
  212. package/src/analytics/birdeye/constants.ts +0 -1
  213. package/src/analytics/birdeye/providers/agent-portfolio-provider.ts +0 -1
  214. package/src/analytics/birdeye/providers/market.ts +51 -45
  215. package/src/analytics/birdeye/providers/portfolio-factory.ts +79 -38
  216. package/src/analytics/birdeye/providers/trending.ts +43 -46
  217. package/src/analytics/birdeye/providers/wallet.ts +0 -1
  218. package/src/analytics/birdeye/search-category.test.ts +1 -1
  219. package/src/analytics/birdeye/search-category.ts +77 -12
  220. package/src/analytics/birdeye/service.test.ts +146 -0
  221. package/src/analytics/birdeye/service.ts +220 -105
  222. package/src/analytics/birdeye/types/api/common.ts +0 -1
  223. package/src/analytics/birdeye/types/api/defi.ts +0 -1
  224. package/src/analytics/birdeye/types/api/pair.ts +0 -1
  225. package/src/analytics/birdeye/types/api/search.ts +0 -1
  226. package/src/analytics/birdeye/types/api/token.ts +0 -1
  227. package/src/analytics/birdeye/types/api/trader.ts +0 -1
  228. package/src/analytics/birdeye/types/api/wallet.ts +0 -1
  229. package/src/analytics/birdeye/types/shared.ts +0 -11
  230. package/src/analytics/birdeye/utils.test.ts +69 -0
  231. package/src/analytics/birdeye/utils.ts +11 -8
  232. package/src/analytics/dexscreener/search-category.ts +0 -1
  233. package/src/analytics/dexscreener/service.ts +7 -12
  234. package/src/analytics/dexscreener/types.ts +0 -1
  235. package/src/analytics/lpinfo/index.ts +5 -2
  236. package/src/analytics/lpinfo/kamino/README.md +2 -2
  237. package/src/analytics/lpinfo/kamino/index.ts +9 -2
  238. package/src/analytics/lpinfo/kamino/providers/kaminoLiquidityProvider.ts +6 -26
  239. package/src/analytics/lpinfo/kamino/providers/kaminoPoolProvider.ts +11 -12
  240. package/src/analytics/lpinfo/kamino/providers/kaminoProvider.ts +76 -32
  241. package/src/analytics/lpinfo/kamino/services/kaminoLiquidityService.ts +78 -38
  242. package/src/analytics/lpinfo/kamino/services/kaminoService.ts +71 -31
  243. package/src/analytics/lpinfo/steer/index.ts +7 -2
  244. package/src/analytics/lpinfo/steer/providers/steerLiquidityProvider.ts +25 -26
  245. package/src/analytics/lpinfo/steer/services/steerLiquidityService.ts +367 -149
  246. package/src/analytics/news/index.ts +7 -2
  247. package/src/analytics/news/interfaces/types.ts +0 -1
  248. package/src/analytics/news/providers/defiNewsProvider.ts +17 -44
  249. package/src/analytics/news/services/newsDataService.ts +1 -22
  250. package/src/analytics/news/utils/formatters.test.ts +60 -0
  251. package/src/analytics/news/utils/formatters.ts +0 -1
  252. package/src/analytics/token-info/action.ts +52 -212
  253. package/src/analytics/token-info/index.ts +1 -1
  254. package/src/analytics/token-info/params.test.ts +69 -0
  255. package/src/analytics/token-info/params.ts +13 -11
  256. package/src/analytics/token-info/providers.ts +46 -17
  257. package/src/analytics/token-info/service.ts +3 -3
  258. package/src/analytics/token-info/types.ts +2 -2
  259. package/src/api/wallet-routes.test.ts +56 -0
  260. package/src/api/wallet-routes.ts +1728 -0
  261. package/src/audit/audit-log.ts +57 -2
  262. package/src/browser-shim/build-shim.ts +1 -1
  263. package/src/browser-shim/shim.template.js +107 -117
  264. package/src/chains/{wallet-router.test.ts → __tests__/wallet-router.test.ts} +57 -10
  265. package/src/chains/evm/actions/helpers.ts +9 -7
  266. package/src/chains/evm/actions/swap.ts +176 -22
  267. package/src/chains/evm/actions/transfer.ts +29 -22
  268. package/src/chains/evm/biome.json +1 -1
  269. package/src/chains/evm/build.ts +6 -1
  270. package/src/chains/evm/constants.ts +19 -0
  271. package/src/chains/evm/contracts/artifacts/OZGovernor.json +25 -1682
  272. package/src/chains/evm/dex/aerodrome/index.ts +6 -1
  273. package/src/chains/evm/dex/aerodrome/services/AerodromeLpService.ts +41 -15
  274. package/src/chains/evm/dex/aerodrome/types.ts +1 -2
  275. package/src/chains/evm/dex/pancakeswp/index.ts +6 -1
  276. package/src/chains/evm/dex/pancakeswp/services/PancakeSwapV3LpService.ts +54 -17
  277. package/src/chains/evm/dex/pancakeswp/types.ts +1 -2
  278. package/src/chains/evm/dex/uniswap/index.ts +6 -1
  279. package/src/chains/evm/dex/uniswap/services/UniswapV3LpService.ts +20 -9
  280. package/src/chains/evm/dex/uniswap/types.ts +1 -2
  281. package/src/chains/evm/gov-router.ts +3 -1
  282. package/src/chains/evm/index.browser.ts +1 -1
  283. package/src/chains/evm/index.ts +5 -1
  284. package/src/chains/evm/prompts.ts +5 -0
  285. package/src/chains/evm/providers/get-balance.ts +1 -1
  286. package/src/chains/evm/providers/wallet.ts +80 -9
  287. package/src/chains/evm/routes/sign.ts +35 -26
  288. package/src/chains/evm/rpc-providers.ts +1 -1
  289. package/src/chains/evm/types/index.ts +22 -2
  290. package/src/chains/registry.ts +1 -1
  291. package/src/chains/wallet-action.ts +301 -91
  292. package/src/index.ts +9 -5
  293. package/src/lib/wallet-export-guard.test.ts +233 -0
  294. package/src/lib/wallet-export-guard.ts +1 -1
  295. package/src/lp/actions/liquidity.ts +53 -26
  296. package/src/lp/e2e/real-token-tests.ts +0 -1
  297. package/src/lp/e2e/scenarios.ts +1 -2
  298. package/src/lp/e2e/test-utils.ts +20 -7
  299. package/src/lp/lp-manager-entry.ts +2 -5
  300. package/src/lp/services/ConcentratedLiquidityService.ts +3 -10
  301. package/src/lp/services/DexInteractionService.ts +1 -2
  302. package/src/lp/services/LpManagementService.test.ts +0 -1
  303. package/src/lp/services/LpManagementService.ts +75 -35
  304. package/src/lp/services/UserLpProfileService.ts +2 -3
  305. package/src/lp/services/VaultService.ts +10 -4
  306. package/src/lp/services/YieldOptimizationService.ts +29 -13
  307. package/src/lp/services/__tests__/MockLpService.ts +1 -2
  308. package/src/lp/types.ts +9 -13
  309. package/src/lp/utils/solanaClient.ts +4 -2
  310. package/src/plugin.routes.test.ts +24 -0
  311. package/src/plugin.ts +30 -13
  312. package/src/providers/canonical-provider.ts +1 -1
  313. package/src/providers/{unified-wallet-provider.ts → wallet-provider.ts} +3 -3
  314. package/src/routes/__fixtures__/coingecko-markets.recorded.json +97 -0
  315. package/src/routes/wallet-market-overview-route.ts +1 -1
  316. package/src/routes/wallet-market-overview.contract.test.ts +139 -0
  317. package/src/routes/wallet-market-overview.real.test.ts +83 -0
  318. package/src/sdk/escrow/MutualStakeEscrow.ts +1 -2
  319. package/src/sdk/identity/erc8004.ts +1 -1
  320. package/src/sdk/identity/validation.ts +3 -4
  321. package/src/sdk/index.ts +2 -2
  322. package/src/sdk/policy/SpendingPolicy.ts +1 -1
  323. package/src/sdk/router/PaymentRouter.ts +8 -11
  324. package/src/sdk/swap/SwapModule.ts +1 -1
  325. package/src/sdk/tokens/registry.ts +1 -1
  326. package/src/sdk/x402/middleware.ts +2 -8
  327. package/src/security/__tests__/wallet-context-safety.test.ts +79 -0
  328. package/src/security/__tests__/wallet-financial-confirmation.test.ts +88 -0
  329. package/src/security/wallet-context-safety.ts +128 -0
  330. package/src/security/wallet-financial-confirmation.ts +150 -0
  331. package/src/services/wallet-backend-service.ts +15 -1
  332. package/src/utils/intent-trajectory.ts +2 -2
  333. package/src/wallet/steward-backend.ts +4 -4
  334. package/dist/LpManagementService-BWrQ5-cO.mjs +0 -353
  335. package/dist/MockLpService-D_Apn4Fd.mjs +0 -99
  336. package/dist/aerodrome-CfnESC32.mjs +0 -890
  337. package/dist/chunk-hT5z_Zn9.mjs +0 -35
  338. package/dist/lib/server-wallet-trade.d.mts +0 -34
  339. package/dist/lib/server-wallet-trade.mjs +0 -306
  340. package/dist/meteora-BPX39hZo.mjs +0 -22640
  341. package/dist/orca-Bybp1HXO.mjs +0 -249
  342. package/dist/pancakeswp-CkEXlXti.mjs +0 -604
  343. package/dist/plugin-ZO_MTyd0.mjs +0 -529
  344. package/dist/raydium-rfaM9yEf.mjs +0 -539
  345. package/dist/sdk/index.d.mts +0 -32492
  346. package/dist/sdk/index.mjs +0 -6415
  347. package/dist/types-D5252NZk.mjs +0 -487
  348. package/dist/uniswap-CReXgXVN.mjs +0 -573
  349. package/dist/wallet-action.d.mts +0 -6
  350. package/dist/wallet-action.mjs +0 -820
  351. package/src/analytics/birdeye/tasks/birdeye.ts +0 -232
  352. package/src/analytics/lpinfo/index.d.ts +0 -7
  353. package/src/chains/evm/contracts/artifacts/TimelockController.json +0 -1007
  354. package/src/chains/evm/contracts/artifacts/VoteToken.json +0 -895
  355. package/src/lp/tasks/LpAutoRebalanceTask.ts +0 -117
  356. package/src/lp/tasks/__tests__/LpAutoRebalanceTask.test.ts +0 -370
@@ -1,4 +1,3 @@
1
- // @ts-nocheck — legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
2
1
  import type { IAgentRuntime, JsonValue } from "@elizaos/core";
3
2
  import { logger, Service } from "@elizaos/core";
4
3
  import type { StakingPool } from "@steerprotocol/sdk";
@@ -15,9 +14,13 @@ import { arbitrum, base, mainnet, optimism, polygon } from "viem/chains";
15
14
  import type {
16
15
  SteerStakingPoolDetailInput,
17
16
  SteerVaultDetailInput,
17
+ SteerVaultPositionRow,
18
18
  } from "../steer-display-types.js";
19
19
 
20
+ type SteerClientCtor = ConstructorParameters<typeof SteerClient>;
21
+ type VaultClientCtor = ConstructorParameters<typeof VaultClient>;
20
22
  type StakingClientCtor = ConstructorParameters<typeof StakingClient>;
23
+ type HexAddress = `0x${string}`;
21
24
 
22
25
  type SteerEarnedRewardsResult = Awaited<ReturnType<StakingClient["earned"]>>;
23
26
  type SteerStakingSupplyResult = Awaited<
@@ -49,7 +52,7 @@ interface RawSteerVault {
49
52
  name?: string;
50
53
  token0?: string | { address?: string };
51
54
  token1?: string | { address?: string };
52
- pool?: { poolAddress?: string; feeTier?: number };
55
+ pool?: { poolAddress?: string; feeTier?: number | string };
53
56
  poolAddress?: string;
54
57
  fee?: number;
55
58
  aprData?: Record<string, number>;
@@ -57,6 +60,19 @@ interface RawSteerVault {
57
60
  apr?: number;
58
61
  tvl?: number;
59
62
  volume24h?: number;
63
+ isActive?: boolean;
64
+ createdAt?: number | string;
65
+ protocol?: string;
66
+ strategyType?: string;
67
+ positions?: SteerVaultPositionRow[];
68
+ ammType?: string | number;
69
+ singleAssetDepositContract?: string;
70
+ beaconName?: string;
71
+ protocolBaseType?: string;
72
+ targetProtocol?: string;
73
+ feeApr?: number;
74
+ stakingApr?: number;
75
+ merklApr?: number;
60
76
  }
61
77
 
62
78
  // Supported chain IDs
@@ -121,12 +137,159 @@ interface GraphQLVaultData {
121
137
  deployer: string;
122
138
  }
123
139
 
124
- interface GraphQLResponse {
125
- data: {
126
- vault: GraphQLVaultData;
140
+ function isRecord(value: unknown): value is Record<string, unknown> {
141
+ return value !== null && typeof value === "object";
142
+ }
143
+
144
+ function formatLogError(error: unknown): string {
145
+ return error instanceof Error ? error.message : String(error);
146
+ }
147
+
148
+ function isHexAddress(value: unknown): value is HexAddress {
149
+ return typeof value === "string" && /^0x[a-fA-F0-9]{40}$/.test(value);
150
+ }
151
+
152
+ function getSdkError(response: unknown): string | undefined {
153
+ if (!isRecord(response)) {
154
+ return undefined;
155
+ }
156
+ return typeof response.error === "string" ? response.error : undefined;
157
+ }
158
+
159
+ function isSuccessfulSdkResponse(
160
+ response: unknown,
161
+ ): response is { success: true; data: unknown; error?: unknown } {
162
+ return (
163
+ isRecord(response) &&
164
+ response.success === true &&
165
+ response.data !== null &&
166
+ response.data !== undefined
167
+ );
168
+ }
169
+
170
+ function getEdgesFromData(data: unknown): unknown[] {
171
+ if (!isRecord(data) || !Array.isArray(data.edges)) {
172
+ return [];
173
+ }
174
+ return data.edges;
175
+ }
176
+
177
+ function isRawSteerVault(value: unknown): value is RawSteerVault {
178
+ return (
179
+ isRecord(value) &&
180
+ (typeof value.vaultAddress === "string" ||
181
+ typeof value.address === "string" ||
182
+ typeof value.name === "string" ||
183
+ isRecord(value.pool))
184
+ );
185
+ }
186
+
187
+ function getRawVaultNodes(response: unknown): RawSteerVault[] {
188
+ if (!isSuccessfulSdkResponse(response)) {
189
+ return [];
190
+ }
191
+
192
+ return getEdgesFromData(response.data)
193
+ .map((edge) => (isRecord(edge) ? edge.node : undefined))
194
+ .filter(isRawSteerVault);
195
+ }
196
+
197
+ function isSteerPoolNode(value: unknown): value is SteerPoolNode {
198
+ return (
199
+ isRecord(value) &&
200
+ (typeof value.poolAddress === "string" || typeof value.id === "string")
201
+ );
202
+ }
203
+
204
+ function getPoolNodes(response: unknown): SteerPoolNode[] {
205
+ if (!isSuccessfulSdkResponse(response)) {
206
+ return [];
207
+ }
208
+
209
+ return getEdgesFromData(response.data)
210
+ .map((edge) => (isRecord(edge) ? edge.node : undefined))
211
+ .filter(isSteerPoolNode);
212
+ }
213
+
214
+ function getResponseDebug(response: unknown): Record<string, unknown> {
215
+ const responseRecord = isRecord(response) ? response : {};
216
+ const data = responseRecord.data;
217
+ const edges = isRecord(data) ? data.edges : undefined;
218
+
219
+ return {
220
+ success: responseRecord.success === true,
221
+ hasData: data !== null && data !== undefined,
222
+ dataType: typeof data,
223
+ isArray: Array.isArray(data),
224
+ hasEdges: Array.isArray(edges),
225
+ edgesLength: Array.isArray(edges) ? edges.length : 0,
127
226
  };
128
227
  }
129
228
 
229
+ function isGraphQLTokenRef(
230
+ value: unknown,
231
+ ): value is GraphQLVaultData["strategyToken"] {
232
+ if (!isRecord(value) || !isRecord(value.creator)) {
233
+ return false;
234
+ }
235
+
236
+ return (
237
+ typeof value.id === "string" &&
238
+ typeof value.name === "string" &&
239
+ typeof value.creator.id === "string" &&
240
+ typeof value.admin === "string"
241
+ );
242
+ }
243
+
244
+ function isGraphQLVaultData(value: unknown): value is GraphQLVaultData {
245
+ if (!isRecord(value)) {
246
+ return false;
247
+ }
248
+
249
+ const requiredStringFields = [
250
+ "id",
251
+ "name",
252
+ "token0",
253
+ "token1",
254
+ "pool",
255
+ "weeklyFeeAPR",
256
+ "token0Symbol",
257
+ "token0Decimals",
258
+ "token1Symbol",
259
+ "token1Decimals",
260
+ "token0Balance",
261
+ "token1Balance",
262
+ "totalLPTokensIssued",
263
+ "feeTier",
264
+ "fees0",
265
+ "fees1",
266
+ "beaconName",
267
+ "payloadIpfs",
268
+ "deployer",
269
+ ];
270
+
271
+ return (
272
+ requiredStringFields.every((field) => typeof value[field] === "string") &&
273
+ isGraphQLTokenRef(value.strategyToken)
274
+ );
275
+ }
276
+
277
+ function getGraphQLVaultData(response: unknown): GraphQLVaultData | null {
278
+ if (!isRecord(response) || !isRecord(response.data)) {
279
+ return null;
280
+ }
281
+
282
+ return isGraphQLVaultData(response.data.vault) ? response.data.vault : null;
283
+ }
284
+
285
+ function hasGraphQLMeta(response: unknown): boolean {
286
+ return (
287
+ isRecord(response) &&
288
+ isRecord(response.data) &&
289
+ isRecord(response.data._meta)
290
+ );
291
+ }
292
+
130
293
  /**
131
294
  * Steer Finance Liquidity Protocol Service
132
295
  * Handles interactions with Steer Finance protocol using the official SDK
@@ -145,7 +308,7 @@ export class SteerLiquidityService extends Service {
145
308
  capabilityDescription =
146
309
  "Provides detailed access to Steer Finance vaults and staking pools for specific tokens using the official SDK." as const;
147
310
 
148
- constructor(runtime: IAgentRuntime) {
311
+ constructor(runtime?: IAgentRuntime) {
149
312
  super(runtime);
150
313
 
151
314
  // Initialize supported chains
@@ -159,12 +322,16 @@ export class SteerLiquidityService extends Service {
159
322
  transport: http(),
160
323
  });
161
324
 
162
- this.steerClient = new SteerClient({
325
+ const steerClientConfig = {
163
326
  client: viemClient,
164
- });
327
+ } as SteerClientCtor[0];
328
+ new SteerClient(steerClientConfig);
165
329
  logger.log("Steer SDK client initialized successfully");
166
330
  } catch (error) {
167
- logger.error("Failed to initialize Steer SDK client:", error);
331
+ logger.error(
332
+ "Failed to initialize Steer SDK client:",
333
+ formatLogError(error),
334
+ );
168
335
  throw new Error("Steer SDK initialization failed");
169
336
  }
170
337
 
@@ -178,10 +345,10 @@ export class SteerLiquidityService extends Service {
178
345
  );
179
346
 
180
347
  // Verify runtime has required methods
181
- if (!runtime.getService) {
348
+ if (!runtime?.getService) {
182
349
  logger.warn("Runtime missing getService method");
183
350
  }
184
- if (!runtime.getCache) {
351
+ if (!runtime?.getCache) {
185
352
  logger.warn("Runtime missing getCache method");
186
353
  }
187
354
 
@@ -231,15 +398,15 @@ export class SteerLiquidityService extends Service {
231
398
 
232
399
  // Initialize vault client for this chain
233
400
  const vaultClient = new VaultClient(
234
- publicClient,
235
- walletClient,
401
+ publicClient as unknown as VaultClientCtor[0],
402
+ walletClient as VaultClientCtor[1],
236
403
  "production",
237
404
  );
238
405
  this.vaultClients.set(chainId, vaultClient);
239
406
 
240
407
  // Initialize staking client for this chain
241
408
  const stakingClient = new StakingClient(
242
- walletClient as StakingClientCtor[0],
409
+ walletClient as unknown as StakingClientCtor[0],
243
410
  );
244
411
  this.stakingClients.set(chainId, stakingClient);
245
412
 
@@ -249,7 +416,7 @@ export class SteerLiquidityService extends Service {
249
416
  `Successfully initialized clients for ${this.supportedChains.length} chains`,
250
417
  );
251
418
  } catch (error) {
252
- logger.error("Error initializing chain clients:", error);
419
+ logger.error("Error initializing chain clients:", formatLogError(error));
253
420
  throw new Error("Failed to initialize chain clients");
254
421
  }
255
422
  }
@@ -329,7 +496,7 @@ export class SteerLiquidityService extends Service {
329
496
  } catch (error) {
330
497
  logger.error(
331
498
  `Error searching for token ${tokenIdentifier} on chain ${chainId}:`,
332
- error,
499
+ formatLogError(error),
333
500
  );
334
501
  }
335
502
  }
@@ -358,7 +525,10 @@ export class SteerLiquidityService extends Service {
358
525
  `Chain ${chainId}: Successfully processed ${chainVaults.length} vaults`,
359
526
  );
360
527
  } catch (error) {
361
- logger.error(`Error fetching data for chain ${chainId}:`, error);
528
+ logger.error(
529
+ `Error fetching data for chain ${chainId}:`,
530
+ formatLogError(error),
531
+ );
362
532
  }
363
533
  }
364
534
  }
@@ -403,7 +573,7 @@ export class SteerLiquidityService extends Service {
403
573
  {} as { [key: number]: number },
404
574
  );
405
575
 
406
- logger.log(`Vaults by chain:`, vaultsByChain);
576
+ logger.log({ vaultsByChain }, "Vaults by chain");
407
577
 
408
578
  const stats: TokenLiquidityStats = {
409
579
  tokenIdentifier,
@@ -428,7 +598,10 @@ export class SteerLiquidityService extends Service {
428
598
 
429
599
  return stats;
430
600
  } catch (error) {
431
- logger.error("Error getting Steer liquidity stats:", error);
601
+ logger.error(
602
+ "Error getting Steer liquidity stats:",
603
+ formatLogError(error),
604
+ );
432
605
  throw new Error(
433
606
  `Failed to get Steer liquidity stats: ${error instanceof Error ? error.message : "Unknown error"}`,
434
607
  );
@@ -448,45 +621,37 @@ export class SteerLiquidityService extends Service {
448
621
  return [];
449
622
  }
450
623
 
451
- type VaultSdkList = {
452
- success: boolean;
453
- data?: { edges?: Array<{ node?: RawSteerVault }> };
454
- error?: string;
455
- };
456
- let vaultsResponse: VaultSdkList;
624
+ let vaultsResponse: unknown;
457
625
  try {
458
626
  vaultsResponse = await vaultClient.getVaults({ chainId }, 100, null);
459
627
  } catch (error) {
460
- logger.error(`API call failed for chain ${chainId}:`, error);
628
+ logger.error(
629
+ `API call failed for chain ${chainId}:`,
630
+ formatLogError(error),
631
+ );
461
632
  return [];
462
633
  }
463
634
 
464
- if (!vaultsResponse.success || !vaultsResponse.data) {
635
+ if (!isSuccessfulSdkResponse(vaultsResponse)) {
636
+ const sdkError = getSdkError(vaultsResponse);
465
637
  logger.warn(
466
- `Failed to get vaults for chain ${chainId}: ${vaultsResponse.error || "Unknown error"}`,
638
+ `Failed to get vaults for chain ${chainId}: ${sdkError || "Unknown error"}`,
467
639
  );
468
640
  // If it's a server error, log it but continue with other chains
469
- if (vaultsResponse.error?.includes("INTERNAL_SERVER_ERROR")) {
641
+ if (sdkError?.includes("INTERNAL_SERVER_ERROR")) {
470
642
  logger.warn(`Chain ${chainId} has server issues, skipping for now`);
471
643
  }
472
644
  return [];
473
645
  }
474
646
 
475
647
  // Debug: Log the response structure
476
- logger.log(`Vault response structure for chain ${chainId}:`, {
477
- success: vaultsResponse.success,
478
- hasData: !!vaultsResponse.data,
479
- dataType: typeof vaultsResponse.data,
480
- isArray: Array.isArray(vaultsResponse.data),
481
- hasEdges: !!vaultsResponse.data?.edges,
482
- edgesLength: vaultsResponse.data?.edges?.length || 0,
483
- });
648
+ logger.log(
649
+ getResponseDebug(vaultsResponse),
650
+ `Vault response structure for chain ${chainId}`,
651
+ );
484
652
 
485
653
  // Extract vaults from the paginated response structure
486
- const vaults: RawSteerVault[] =
487
- vaultsResponse.data?.edges
488
- ?.map((edge: { node?: RawSteerVault }) => edge.node)
489
- .filter((n): n is RawSteerVault => n !== undefined) || [];
654
+ const vaults = getRawVaultNodes(vaultsResponse);
490
655
  logger.log(
491
656
  `Retrieved ${vaults.length} vaults from SDK for chain ${chainId}`,
492
657
  );
@@ -498,7 +663,10 @@ export class SteerLiquidityService extends Service {
498
663
  if (!vault) return null;
499
664
  return await this.processVaultData(vault, chainId);
500
665
  } catch (error) {
501
- logger.error(`Error processing vault ${vault.address}:`, error);
666
+ logger.error(
667
+ `Error processing vault ${vault.address}:`,
668
+ formatLogError(error),
669
+ );
502
670
  return null;
503
671
  }
504
672
  }),
@@ -508,7 +676,10 @@ export class SteerLiquidityService extends Service {
508
676
  (vault): vault is SteerVaultDetailInput => vault !== null,
509
677
  );
510
678
  } catch (error) {
511
- logger.error(`Error getting vaults for chain ${chainId}:`, error);
679
+ logger.error(
680
+ `Error getting vaults for chain ${chainId}:`,
681
+ formatLogError(error),
682
+ );
512
683
  return [];
513
684
  }
514
685
  }
@@ -527,46 +698,44 @@ export class SteerLiquidityService extends Service {
527
698
  return [];
528
699
  }
529
700
 
530
- type VaultSdkList = {
531
- success: boolean;
532
- data?: { edges?: Array<{ node?: RawSteerVault }> };
533
- error?: string;
534
- };
535
- let vaultsResponse: VaultSdkList;
701
+ let vaultsResponse: unknown;
536
702
  try {
537
703
  vaultsResponse = await vaultClient.getVaults({ chainId }, 100, null);
538
704
  } catch (error) {
539
- logger.error(`API call failed for chain ${chainId}:`, error);
705
+ logger.error(
706
+ `API call failed for chain ${chainId}:`,
707
+ formatLogError(error),
708
+ );
540
709
  return [];
541
710
  }
542
711
 
543
- if (!vaultsResponse.success || !vaultsResponse.data) {
712
+ if (!isSuccessfulSdkResponse(vaultsResponse)) {
544
713
  logger.warn(
545
- `Failed to get vaults for chain ${chainId}: ${vaultsResponse.error || "Unknown error"}`,
714
+ `Failed to get vaults for chain ${chainId}: ${getSdkError(vaultsResponse) || "Unknown error"}`,
546
715
  );
547
716
  return [];
548
717
  }
549
718
 
550
719
  // Extract vaults from the paginated response structure
551
- const allVaults: RawSteerVault[] =
552
- vaultsResponse.data?.edges
553
- ?.map((edge: { node?: RawSteerVault }) => edge.node)
554
- .filter((n): n is RawSteerVault => n !== undefined) || [];
720
+ const allVaults = getRawVaultNodes(vaultsResponse);
555
721
  logger.log(
556
722
  `Searching ${allVaults.length} vaults for token ${tokenAddress} on chain ${chainId}`,
557
723
  );
558
724
 
559
725
  // Debug: Log first vault structure to understand the data format
560
726
  if (allVaults.length > 0) {
561
- logger.log(`Sample vault structure for chain ${chainId}:`, {
562
- vaultAddress: allVaults[0].vaultAddress,
563
- address: allVaults[0].address,
564
- token0: allVaults[0].token0,
565
- token1: allVaults[0].token1,
566
- token0Type: typeof allVaults[0].token0,
567
- token1Type: typeof allVaults[0].token1,
568
- pool: allVaults[0].pool,
569
- });
727
+ logger.log(
728
+ {
729
+ vaultAddress: allVaults[0].vaultAddress,
730
+ address: allVaults[0].address,
731
+ token0: allVaults[0].token0,
732
+ token1: allVaults[0].token1,
733
+ token0Type: typeof allVaults[0].token0,
734
+ token1Type: typeof allVaults[0].token1,
735
+ pool: allVaults[0].pool,
736
+ },
737
+ `Sample vault structure for chain ${chainId}`,
738
+ );
570
739
  }
571
740
 
572
741
  const matchingVaults: SteerVaultDetailInput[] = [];
@@ -587,7 +756,10 @@ export class SteerLiquidityService extends Service {
587
756
  }
588
757
  }
589
758
  } catch (error) {
590
- logger.log(`Error processing vault ${vault.address}:`, error);
759
+ logger.log(
760
+ `Error processing vault ${vault.address}:`,
761
+ formatLogError(error),
762
+ );
591
763
  }
592
764
  }
593
765
 
@@ -598,7 +770,7 @@ export class SteerLiquidityService extends Service {
598
770
  } catch (error) {
599
771
  logger.error(
600
772
  `Error getting vaults for token ${tokenAddress} on chain ${chainId}:`,
601
- error,
773
+ formatLogError(error),
602
774
  );
603
775
  return [];
604
776
  }
@@ -645,7 +817,11 @@ export class SteerLiquidityService extends Service {
645
817
  // Extract basic vault information
646
818
  const vaultAddress = vault.vaultAddress || vault.address || "";
647
819
  const poolAddress = vault.pool?.poolAddress || vault.poolAddress;
648
- const feeTier = vault.pool?.feeTier || vault.fee || 0.3;
820
+ const rawFeeTier = vault.pool?.feeTier ?? vault.fee ?? 0.3;
821
+ const feeTier =
822
+ typeof rawFeeTier === "number"
823
+ ? rawFeeTier
824
+ : Number.parseFloat(rawFeeTier) || 0.3;
649
825
 
650
826
  // Extract APY data from various sources
651
827
  const apyData = vault.aprData || {};
@@ -657,9 +833,9 @@ export class SteerLiquidityService extends Service {
657
833
  apyData.apr14dAvg ||
658
834
  0;
659
835
 
660
- const processedVault = {
836
+ const processedVault: SteerVaultDetailInput = {
661
837
  address: vaultAddress,
662
- name: vault.name || `Steer Vault ${vaultAddress?.slice(0, 8)}...`,
838
+ name: vault.name || `Steer Vault ${vaultAddress.slice(0, 8)}...`,
663
839
  chainId,
664
840
  token0: vault.token0 || "Unknown",
665
841
  token1: vault.token1 || "Unknown",
@@ -678,7 +854,11 @@ export class SteerLiquidityService extends Service {
678
854
  positions: vault.positions || [],
679
855
  poolAddress: poolAddress,
680
856
  ammType: vault.ammType || "UniswapV3",
681
- singleAssetDepositContract: vault.singleAssetDepositContract,
857
+ singleAssetDepositContract: isHexAddress(
858
+ vault.singleAssetDepositContract,
859
+ )
860
+ ? vault.singleAssetDepositContract
861
+ : undefined,
682
862
  // Additional fields from SDK
683
863
  protocol: vault.protocol,
684
864
  beaconName: vault.beaconName,
@@ -749,7 +929,7 @@ export class SteerLiquidityService extends Service {
749
929
  } catch (error) {
750
930
  logger.log(
751
931
  `Could not fetch price data for vault ${vaultAddress}:`,
752
- error,
932
+ formatLogError(error),
753
933
  );
754
934
  }
755
935
  } catch (_error) {
@@ -768,12 +948,15 @@ export class SteerLiquidityService extends Service {
768
948
  } catch (error) {
769
949
  logger.log(
770
950
  `Could not enrich vault ${vaultAddress} with GraphQL data, returning basic info:`,
771
- error,
951
+ formatLogError(error),
772
952
  );
773
953
  return processedVault;
774
954
  }
775
955
  } catch (error) {
776
- logger.error(`Error processing vault ${vault.address}:`, error);
956
+ logger.error(
957
+ `Error processing vault ${vault.address}:`,
958
+ formatLogError(error),
959
+ );
777
960
  return null;
778
961
  }
779
962
  }
@@ -784,7 +967,7 @@ export class SteerLiquidityService extends Service {
784
967
  async getVaultDetails(
785
968
  vaultAddress: string,
786
969
  chainId: number,
787
- ): Promise<SteerVaultDetailInput | RawSteerVault | null> {
970
+ ): Promise<SteerVaultDetailInput | null> {
788
971
  try {
789
972
  // First try to get data from GraphQL
790
973
  const graphqlData = await this.getVaultDataFromGraphQL(vaultAddress);
@@ -830,9 +1013,13 @@ export class SteerLiquidityService extends Service {
830
1013
  logger.log(
831
1014
  `GraphQL data not available for ${vaultAddress}, falling back to SDK`,
832
1015
  );
833
- return await this.getVaultDetailsFromSDK(vaultAddress, chainId);
1016
+ const rawVault = await this.getVaultDetailsFromSDK(vaultAddress, chainId);
1017
+ return rawVault ? await this.processVaultData(rawVault, chainId) : null;
834
1018
  } catch (error) {
835
- logger.error(`Error getting vault details for ${vaultAddress}:`, error);
1019
+ logger.error(
1020
+ `Error getting vault details for ${vaultAddress}:`,
1021
+ formatLogError(error),
1022
+ );
836
1023
  return null;
837
1024
  }
838
1025
  }
@@ -852,25 +1039,33 @@ export class SteerLiquidityService extends Service {
852
1039
  }
853
1040
 
854
1041
  // Get vault details using SDK - use getVaults and filter
855
- const vaultResponse = await vaultClient.getVaults({ chainId }, 100, null);
1042
+ const vaultResponse: unknown = await vaultClient.getVaults(
1043
+ { chainId },
1044
+ 100,
1045
+ null,
1046
+ );
856
1047
 
857
- if (!vaultResponse.success || !vaultResponse.data) {
1048
+ if (!isSuccessfulSdkResponse(vaultResponse)) {
858
1049
  logger.warn(
859
- `Failed to get vault details for ${vaultAddress}: ${vaultResponse.error || "Unknown error"}`,
1050
+ `Failed to get vault details for ${vaultAddress}: ${getSdkError(vaultResponse) || "Unknown error"}`,
860
1051
  );
861
1052
  return null;
862
1053
  }
863
1054
 
864
1055
  // Extract vaults from the paginated response structure
865
- const vaults: RawSteerVault[] =
866
- vaultResponse.data?.edges
867
- ?.map((edge: { node?: RawSteerVault }) => edge.node)
868
- .filter((n): n is RawSteerVault => n !== undefined) || [];
869
- return vaults.length > 0 ? vaults[0] : null;
1056
+ const vaults = getRawVaultNodes(vaultResponse);
1057
+ const normalizedVaultAddress = vaultAddress.toLowerCase();
1058
+ return (
1059
+ vaults.find(
1060
+ (vault) =>
1061
+ (vault.vaultAddress || vault.address || "").toLowerCase() ===
1062
+ normalizedVaultAddress,
1063
+ ) || null
1064
+ );
870
1065
  } catch (error) {
871
1066
  logger.error(
872
1067
  `Error getting vault details for ${vaultAddress} on chain ${chainId}:`,
873
- error,
1068
+ formatLogError(error),
874
1069
  );
875
1070
  return null;
876
1071
  }
@@ -884,12 +1079,14 @@ export class SteerLiquidityService extends Service {
884
1079
  chainId: number,
885
1080
  ): Promise<{ [address: string]: number } | null> {
886
1081
  try {
887
- // This is a placeholder - in a real implementation, you'd call a price API
888
- // For now, we'll return null to indicate no price data
889
- logger.log(`Price fetching not yet implemented for chain ${chainId}`);
1082
+ // No price API is wired for this analytics path; null indicates no price data.
1083
+ logger.log(`Price data unavailable for chain ${chainId}`);
890
1084
  return null;
891
1085
  } catch (error) {
892
- logger.error(`Error getting token prices for chain ${chainId}:`, error);
1086
+ logger.error(
1087
+ `Error getting token prices for chain ${chainId}:`,
1088
+ formatLogError(error),
1089
+ );
893
1090
  return null;
894
1091
  }
895
1092
  }
@@ -920,11 +1117,8 @@ export class SteerLiquidityService extends Service {
920
1117
  100,
921
1118
  null,
922
1119
  );
923
- if (poolsResponse.success && poolsResponse.data) {
924
- const pools: SteerPoolNode[] =
925
- poolsResponse.data.edges
926
- ?.map((edge: { node?: SteerPoolNode }) => edge.node)
927
- .filter((n): n is SteerPoolNode => n !== undefined) || [];
1120
+ if (isSuccessfulSdkResponse(poolsResponse)) {
1121
+ const pools = getPoolNodes(poolsResponse);
928
1122
  const matchingPool = pools.find(
929
1123
  (pool: SteerPoolNode) =>
930
1124
  pool.poolAddress?.toLowerCase() === poolAddress.toLowerCase() ||
@@ -949,7 +1143,7 @@ export class SteerLiquidityService extends Service {
949
1143
  } catch (error) {
950
1144
  logger.log(
951
1145
  `Could not fetch pool data from SDK for ${poolAddress}:`,
952
- error,
1146
+ formatLogError(error),
953
1147
  );
954
1148
  }
955
1149
 
@@ -963,7 +1157,7 @@ export class SteerLiquidityService extends Service {
963
1157
  } catch (error) {
964
1158
  logger.error(
965
1159
  `Error getting pool data for ${poolAddress} on chain ${chainId}:`,
966
- error,
1160
+ formatLogError(error),
967
1161
  );
968
1162
  return null;
969
1163
  }
@@ -998,7 +1192,7 @@ export class SteerLiquidityService extends Service {
998
1192
  } catch (error) {
999
1193
  logger.error(
1000
1194
  `Error getting staking pool details for ${poolAddress} on chain ${chainId}:`,
1001
- error,
1195
+ formatLogError(error),
1002
1196
  );
1003
1197
  return null;
1004
1198
  }
@@ -1035,9 +1229,9 @@ export class SteerLiquidityService extends Service {
1035
1229
  );
1036
1230
  }
1037
1231
 
1038
- const result = await response.json();
1232
+ const result: unknown = await response.json();
1039
1233
 
1040
- if (result.data?._meta) {
1234
+ if (hasGraphQLMeta(result)) {
1041
1235
  logger.log("GraphQL connection test successful");
1042
1236
  return { success: true };
1043
1237
  } else {
@@ -1045,7 +1239,7 @@ export class SteerLiquidityService extends Service {
1045
1239
  return { success: false, error: "Unexpected response structure" };
1046
1240
  }
1047
1241
  } catch (error) {
1048
- logger.error("GraphQL connection test failed:", error);
1242
+ logger.error("GraphQL connection test failed:", formatLogError(error));
1049
1243
  return {
1050
1244
  success: false,
1051
1245
  error: error instanceof Error ? error.message : "Unknown error",
@@ -1074,7 +1268,7 @@ export class SteerLiquidityService extends Service {
1074
1268
  } catch (error) {
1075
1269
  logger.error(
1076
1270
  `GraphQL vault query test failed for ${vaultAddress}:`,
1077
- error,
1271
+ formatLogError(error),
1078
1272
  );
1079
1273
  return {
1080
1274
  success: false,
@@ -1107,20 +1301,13 @@ export class SteerLiquidityService extends Service {
1107
1301
  100,
1108
1302
  null,
1109
1303
  );
1110
- logger.log(`Chain ${chainId} vault response:`, {
1111
- success: vaultsResponse.success,
1112
- hasData: !!vaultsResponse.data,
1113
- dataType: typeof vaultsResponse.data,
1114
- isArray: Array.isArray(vaultsResponse.data),
1115
- hasEdges: !!vaultsResponse.data?.edges,
1116
- edgesLength: vaultsResponse.data?.edges?.length || 0,
1117
- });
1304
+ logger.log(
1305
+ getResponseDebug(vaultsResponse),
1306
+ `Chain ${chainId} vault response`,
1307
+ );
1118
1308
 
1119
- if (vaultsResponse.success && vaultsResponse.data) {
1120
- const vaults =
1121
- vaultsResponse.data.edges
1122
- ?.map((edge: { node?: RawSteerVault }) => edge.node)
1123
- .filter((n): n is RawSteerVault => n !== undefined) || [];
1309
+ if (isSuccessfulSdkResponse(vaultsResponse)) {
1310
+ const vaults = getRawVaultNodes(vaultsResponse);
1124
1311
  totalVaultCount += vaults.length;
1125
1312
  logger.log(`Chain ${chainId}: Found ${vaults.length} vaults`);
1126
1313
  }
@@ -1143,7 +1330,10 @@ export class SteerLiquidityService extends Service {
1143
1330
  } catch (error) {
1144
1331
  const errorMsg = `Chain ${chainId}: ${error instanceof Error ? error.message : "Unknown error"}`;
1145
1332
  connectionErrors.push(errorMsg);
1146
- logger.error(`Connection test failed for chain ${chainId}:`, error);
1333
+ logger.error(
1334
+ `Connection test failed for chain ${chainId}:`,
1335
+ formatLogError(error),
1336
+ );
1147
1337
  }
1148
1338
  }
1149
1339
 
@@ -1161,7 +1351,7 @@ export class SteerLiquidityService extends Service {
1161
1351
  );
1162
1352
  return result;
1163
1353
  } catch (error) {
1164
- logger.error("Error testing Steer connection:", error);
1354
+ logger.error("Error testing Steer connection:", formatLogError(error));
1165
1355
  return {
1166
1356
  connectionTest: false,
1167
1357
  supportedChains: this.supportedChains,
@@ -1272,7 +1462,10 @@ export class SteerLiquidityService extends Service {
1272
1462
  this.isRunning = true;
1273
1463
  logger.log("SteerLiquidityService started successfully");
1274
1464
  } catch (error) {
1275
- logger.error("Failed to start SteerLiquidityService:", error);
1465
+ logger.error(
1466
+ "Failed to start SteerLiquidityService:",
1467
+ formatLogError(error),
1468
+ );
1276
1469
  throw error;
1277
1470
  }
1278
1471
  }
@@ -1287,7 +1480,10 @@ export class SteerLiquidityService extends Service {
1287
1480
  this.isRunning = false;
1288
1481
  logger.log("SteerLiquidityService stopped successfully");
1289
1482
  } catch (error) {
1290
- logger.error("Failed to stop SteerLiquidityService:", error);
1483
+ logger.error(
1484
+ "Failed to stop SteerLiquidityService:",
1485
+ formatLogError(error),
1486
+ );
1291
1487
  throw error;
1292
1488
  }
1293
1489
  }
@@ -1319,7 +1515,12 @@ export class SteerLiquidityService extends Service {
1319
1515
  throw new Error(`Vault ${vaultAddress} not found on chain ${chainId}`);
1320
1516
  }
1321
1517
 
1322
- if (!vault.poolAddress || !vault.singleAssetDepositContract) {
1518
+ const poolAddress = vault.poolAddress;
1519
+ const singleAssetDepositContract = vault.singleAssetDepositContract;
1520
+ if (
1521
+ !isHexAddress(poolAddress) ||
1522
+ !isHexAddress(singleAssetDepositContract)
1523
+ ) {
1323
1524
  throw new Error(
1324
1525
  `Vault ${vaultAddress} does not support single-asset deposits`,
1325
1526
  );
@@ -1330,22 +1531,22 @@ export class SteerLiquidityService extends Service {
1330
1531
  {
1331
1532
  assets,
1332
1533
  receiver:
1333
- "0x0000000000000000000000000000000000000000" as `0x${string}`, // Placeholder
1534
+ "0x0000000000000000000000000000000000000000" as `0x${string}`,
1334
1535
  vault: vaultAddress as `0x${string}`,
1335
1536
  isToken0,
1336
1537
  depositSlippagePercent,
1337
1538
  swapSlippageBP,
1338
1539
  ammType: AMMType.UniswapV3,
1339
- singleAssetDepositContract: vault.singleAssetDepositContract,
1540
+ singleAssetDepositContract,
1340
1541
  },
1341
- vault.poolAddress,
1542
+ poolAddress,
1342
1543
  );
1343
1544
 
1344
1545
  return preview;
1345
1546
  } catch (error) {
1346
1547
  logger.error(
1347
1548
  `Error previewing single-asset deposit for vault ${vaultAddress}:`,
1348
- error,
1549
+ formatLogError(error),
1349
1550
  );
1350
1551
  throw error;
1351
1552
  }
@@ -1375,7 +1576,12 @@ export class SteerLiquidityService extends Service {
1375
1576
  throw new Error(`Vault ${vaultAddress} not found on chain ${chainId}`);
1376
1577
  }
1377
1578
 
1378
- if (!vault.singleAssetDepositContract) {
1579
+ if (!isHexAddress(receiver)) {
1580
+ throw new Error(`Receiver ${receiver} is not a valid EVM address`);
1581
+ }
1582
+
1583
+ const singleAssetDepositContract = vault.singleAssetDepositContract;
1584
+ if (!isHexAddress(singleAssetDepositContract)) {
1379
1585
  throw new Error(
1380
1586
  `Vault ${vaultAddress} does not support single-asset deposits`,
1381
1587
  );
@@ -1384,20 +1590,20 @@ export class SteerLiquidityService extends Service {
1384
1590
  // Execute the single-asset deposit using SDK
1385
1591
  const result = await vaultClient.singleAssetDeposit({
1386
1592
  assets,
1387
- receiver: receiver as `0x${string}`,
1593
+ receiver,
1388
1594
  vault: vaultAddress as `0x${string}`,
1389
1595
  isToken0,
1390
1596
  depositSlippagePercent,
1391
1597
  swapSlippageBP,
1392
1598
  ammType: AMMType.UniswapV3,
1393
- singleAssetDepositContract: vault.singleAssetDepositContract,
1599
+ singleAssetDepositContract,
1394
1600
  });
1395
1601
 
1396
1602
  return result;
1397
1603
  } catch (error) {
1398
1604
  logger.error(
1399
1605
  `Error executing single-asset deposit for vault ${vaultAddress}:`,
1400
- error,
1606
+ formatLogError(error),
1401
1607
  );
1402
1608
  throw error;
1403
1609
  }
@@ -1425,7 +1631,7 @@ export class SteerLiquidityService extends Service {
1425
1631
  } catch (error) {
1426
1632
  logger.error(
1427
1633
  `Error getting earned rewards for pool ${poolAddress}:`,
1428
- error,
1634
+ formatLogError(error),
1429
1635
  );
1430
1636
  throw error;
1431
1637
  }
@@ -1451,7 +1657,7 @@ export class SteerLiquidityService extends Service {
1451
1657
  } catch (error) {
1452
1658
  logger.error(
1453
1659
  `Error getting total supply for pool ${poolAddress}:`,
1454
- error,
1660
+ formatLogError(error),
1455
1661
  );
1456
1662
  throw error;
1457
1663
  }
@@ -1477,7 +1683,10 @@ export class SteerLiquidityService extends Service {
1477
1683
  );
1478
1684
  return balance;
1479
1685
  } catch (error) {
1480
- logger.error(`Error getting balance for pool ${poolAddress}:`, error);
1686
+ logger.error(
1687
+ `Error getting balance for pool ${poolAddress}:`,
1688
+ formatLogError(error),
1689
+ );
1481
1690
  throw error;
1482
1691
  }
1483
1692
  }
@@ -1547,32 +1756,36 @@ export class SteerLiquidityService extends Service {
1547
1756
  );
1548
1757
  }
1549
1758
 
1550
- const result: GraphQLResponse = await response.json();
1759
+ const result: unknown = await response.json();
1760
+ const vaultData = getGraphQLVaultData(result);
1551
1761
 
1552
- if (result.data?.vault) {
1762
+ if (vaultData) {
1553
1763
  logger.log(
1554
1764
  `Successfully fetched GraphQL data for vault ${vaultAddress}`,
1555
1765
  );
1556
- logger.log(`GraphQL vault data:`, {
1557
- name: result.data.vault.name,
1558
- token0Symbol: result.data.vault.token0Symbol,
1559
- token1Symbol: result.data.vault.token1Symbol,
1560
- weeklyFeeAPR: result.data.vault.weeklyFeeAPR,
1561
- token0Balance: result.data.vault.token0Balance,
1562
- token1Balance: result.data.vault.token1Balance,
1563
- });
1564
- return result.data.vault;
1766
+ logger.log(
1767
+ {
1768
+ name: vaultData.name,
1769
+ token0Symbol: vaultData.token0Symbol,
1770
+ token1Symbol: vaultData.token1Symbol,
1771
+ weeklyFeeAPR: vaultData.weeklyFeeAPR,
1772
+ token0Balance: vaultData.token0Balance,
1773
+ token1Balance: vaultData.token1Balance,
1774
+ },
1775
+ "GraphQL vault data",
1776
+ );
1777
+ return vaultData;
1565
1778
  } else {
1566
1779
  logger.warn(
1567
1780
  `No vault data found in GraphQL response for ${vaultAddress}`,
1568
1781
  );
1569
- logger.log(`GraphQL response:`, JSON.stringify(result, null, 2));
1782
+ logger.log("GraphQL response:", JSON.stringify(result, null, 2));
1570
1783
  return null;
1571
1784
  }
1572
1785
  } catch (error) {
1573
1786
  logger.error(
1574
1787
  `Error fetching GraphQL data for vault ${vaultAddress}:`,
1575
- error,
1788
+ formatLogError(error),
1576
1789
  );
1577
1790
  return null;
1578
1791
  }
@@ -1586,12 +1799,11 @@ export class SteerLiquidityService extends Service {
1586
1799
  _chainId: number,
1587
1800
  ): Promise<SteerVaultDetailInput> {
1588
1801
  try {
1589
- if (!vault.address && !vault.vaultAddress) {
1802
+ const vaultAddress = vault.address || vault.vaultAddress;
1803
+ if (!vaultAddress) {
1590
1804
  logger.warn("Vault missing address, cannot fetch GraphQL data");
1591
1805
  return vault;
1592
1806
  }
1593
-
1594
- const vaultAddress = vault.address || vault.vaultAddress;
1595
1807
  logger.log(`Enriching vault ${vaultAddress} with GraphQL data...`);
1596
1808
 
1597
1809
  // Fetch GraphQL data
@@ -1653,7 +1865,10 @@ export class SteerLiquidityService extends Service {
1653
1865
  );
1654
1866
  return vault;
1655
1867
  } catch (error) {
1656
- logger.error(`Error enriching vault with GraphQL data:`, error);
1868
+ logger.error(
1869
+ "Error enriching vault with GraphQL data:",
1870
+ formatLogError(error),
1871
+ );
1657
1872
  return vault; // Return original vault data if enrichment fails
1658
1873
  }
1659
1874
  }
@@ -1683,7 +1898,10 @@ export class SteerLiquidityService extends Service {
1683
1898
  logger.log(`Estimated TVL: $${estimatedTvl.toLocaleString()}`);
1684
1899
  return estimatedTvl;
1685
1900
  } catch (error) {
1686
- logger.error("Error calculating TVL from balances:", error);
1901
+ logger.error(
1902
+ "Error calculating TVL from balances:",
1903
+ formatLogError(error),
1904
+ );
1687
1905
  return 0;
1688
1906
  }
1689
1907
  }