@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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-wallet",
3
- "version": "2.0.0-beta.1",
4
- "description": "Unified non-custodial wallet for elizaOS agents — EVM + Solana, ERC-6551 token-bound accounts, on-chain spend policies, x402 micropayments, CCTP bridge, Li.Fi swap routing, Jupiter routing, multi-DEX LP management (Raydium/Orca/Meteora on Solana, Uniswap/Aerodrome on EVM), Hyperliquid perps, Polymarket, Aave/Morpho lending, and Clanker token launches. Replaces plugin-evm + plugin-solana + plugin-raydium + plugin-orca + plugin-meteora + plugin-jupiter + plugin-lp-manager + plugin-clanker behind one canonical action+provider surface.",
3
+ "version": "2.0.3-beta.6",
4
+ "description": "Non-custodial wallet for elizaOS agents — EVM + Solana, ERC-6551 token-bound accounts, on-chain spend policies, x402 micropayments, CCTP bridge, Li.Fi swap routing, Jupiter routing, multi-DEX LP management (Raydium/Orca/Meteora on Solana, Uniswap/Aerodrome on EVM), Hyperliquid perps, Polymarket, Aave/Morpho lending, and Clanker token launches. Replaces plugin-evm + plugin-solana + plugin-raydium + plugin-orca + plugin-meteora + plugin-jupiter + plugin-lp-manager + plugin-clanker behind one canonical action+provider surface.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/eliza-ai/eliza/tree/main/eliza/plugins/plugin-wallet",
@@ -11,16 +11,33 @@
11
11
  "directory": "eliza/plugins/plugin-wallet"
12
12
  },
13
13
  "main": "dist/index.mjs",
14
- "types": "dist/index.d.mts",
14
+ "types": "dist/index.d.ts",
15
15
  "exports": {
16
16
  ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "eliza-source": {
19
+ "types": "./src/index.ts",
20
+ "import": "./src/index.ts",
21
+ "default": "./src/index.ts"
22
+ },
17
23
  "import": "./dist/index.mjs",
18
- "default": "./dist/index.mjs",
19
- "types": "./dist/index.d.mts"
24
+ "default": "./dist/index.mjs"
20
25
  },
21
- "./package.json": "./package.json"
26
+ "./package.json": "./package.json",
27
+ "./*.css": "./dist/*.css",
28
+ "./*": {
29
+ "types": "./dist/*.d.ts",
30
+ "eliza-source": {
31
+ "types": "./src/*.ts",
32
+ "import": "./src/*.ts",
33
+ "default": "./src/*.ts"
34
+ },
35
+ "import": "./dist/*.js",
36
+ "default": "./dist/*.js"
37
+ }
22
38
  },
23
39
  "files": [
40
+ "registry-entry.json",
24
41
  "dist",
25
42
  "src",
26
43
  "auto-enable.ts",
@@ -37,28 +54,23 @@
37
54
  }
38
55
  },
39
56
  "scripts": {
40
- "build": "tsdown --no-config src/index.ts --format esm --dts --clean -d dist && tsdown --no-config src/sdk/index.ts --format esm --dts --no-clean -d dist/sdk && tsdown --no-config src/wallet-action.ts --format esm --dts --no-clean -d dist && tsdown --no-config src/lib/server-wallet-trade.ts --format esm --dts --no-clean -d dist/lib && mv dist/index-*.d.ts dist/index.d.ts 2>/dev/null || true && mv dist/sdk/index-*.d.ts dist/sdk/index.d.ts 2>/dev/null || true && mv dist/wallet-action-*.d.ts dist/wallet-action.d.ts 2>/dev/null || true && mv dist/lib/server-wallet-trade-*.d.ts dist/lib/server-wallet-trade.d.ts 2>/dev/null || true",
57
+ "build": "bun run build.ts",
41
58
  "check": "tsc --noEmit",
42
59
  "lint": "bunx @biomejs/biome check --write --unsafe .",
43
60
  "test": "vitest run --config ./vitest.config.ts",
44
61
  "test:watch": "vitest --config ./vitest.config.ts",
45
- "clean": "rm -rf dist"
62
+ "clean": "node ../../packages/scripts/rm-path-recursive.mjs dist"
46
63
  },
47
64
  "peerDependencies": {
48
- "@elizaos/core": "2.0.0-beta.1",
49
- "@elizaos/plugin-elizacloud": "2.0.0-beta.1"
65
+ "@elizaos/core": "2.0.3-beta.6",
66
+ "@elizaos/plugin-elizacloud": "2.0.3-beta.6"
50
67
  },
51
68
  "dependencies": {
52
69
  "@coral-xyz/anchor": "^0.32.1",
53
- "@elizaos/cloud-routing": "2.0.0-beta.1",
54
- "@lifi/data-types": "^6.0.0",
70
+ "@elizaos/cloud-routing": "2.0.3-beta.6",
71
+ "@elizaos/shared": "2.0.3-beta.6",
55
72
  "@lifi/sdk": "^3.7.9",
56
- "@lifi/types": "^17.18.0",
57
- "@noble/hashes": "^1.8.0",
58
- "@orca-so/whirlpools": "^2.2.0",
59
- "@orca-so/whirlpools-client": "^6.2.1",
60
- "@orca-so/whirlpools-core": "^3.1.0",
61
- "@orca-so/whirlpools-sdk": "^0.20.0",
73
+ "@meteora-ag/dlmm": "^1.9.7",
62
74
  "@raydium-io/raydium-sdk": "^1.3.1-beta.58",
63
75
  "@solana/spl-token": "0.4.14",
64
76
  "@solana/spl-token-metadata": "^0.1.6",
@@ -66,7 +78,9 @@
66
78
  "@steerprotocol/sdk": "^3.0.7",
67
79
  "bignumber.js": "^11.0.0",
68
80
  "bs58": "^6.0.0",
81
+ "ethers": "^6.16.0",
69
82
  "tweetnacl": "^1.0.3",
83
+ "uuid": "^11.1.0",
70
84
  "viem": "^2.48.8",
71
85
  "zod": "^4.4.3"
72
86
  },
@@ -74,9 +88,8 @@
74
88
  "access": "public"
75
89
  },
76
90
  "devDependencies": {
77
- "@elizaos/core": "2.0.0-beta.1",
91
+ "@elizaos/core": "2.0.3-beta.6",
78
92
  "@types/node": "^24.0.0",
79
- "tsdown": "^0.21.10",
80
93
  "typescript": "^6.0.3",
81
94
  "vitest": "^4.0.18"
82
95
  },
@@ -148,5 +161,6 @@
148
161
  "trading",
149
162
  "automation"
150
163
  ],
151
- "packageType": "plugin"
164
+ "packageType": "plugin",
165
+ "gitHead": "990dc996172b3e0fb525a75052a5ac28a4cd4de5"
152
166
  }
@@ -0,0 +1,134 @@
1
+ {
2
+ "id": "evm",
3
+ "name": "Evm",
4
+ "description": "This plugin enables interaction with EVM-compatible chains, supporting token transfers, cross-chain bridging, and swaps via LiFi integration.",
5
+ "npmName": "@elizaos/plugin-wallet",
6
+ "version": "2.0.0-beta.0",
7
+ "source": "bundled",
8
+ "tags": ["crypto", "evm"],
9
+ "config": {
10
+ "EVM_PRIVATE_KEY": {
11
+ "type": "secret",
12
+ "required": true,
13
+ "sensitive": true,
14
+ "label": "Private Key",
15
+ "help": "Hex-encoded private key (starting with 0x) used by the WalletProvider to sign transactions.",
16
+ "advanced": false
17
+ },
18
+ "EVM_RPC_PROVIDER": {
19
+ "type": "string",
20
+ "required": false,
21
+ "sensitive": false,
22
+ "label": "Rpc Provider",
23
+ "help": "Preferred RPC provider: 'alchemy', 'infura', 'ankr', or 'elizacloud'. If set, this provider is used first for all chains it supports, with fallback to others.",
24
+ "advanced": false
25
+ },
26
+ "ALCHEMY_API_KEY": {
27
+ "type": "secret",
28
+ "required": false,
29
+ "sensitive": true,
30
+ "label": "Api Key",
31
+ "help": "Alchemy API key for RPC access. Supports Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BSC, and many more chains.",
32
+ "advanced": false
33
+ },
34
+ "INFURA_API_KEY": {
35
+ "type": "secret",
36
+ "required": false,
37
+ "sensitive": true,
38
+ "label": "Api Key",
39
+ "help": "Infura API key for RPC access. Supports Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, Linea, and more.",
40
+ "advanced": false
41
+ },
42
+ "ANKR_API_KEY": {
43
+ "type": "secret",
44
+ "required": false,
45
+ "sensitive": true,
46
+ "label": "Api Key",
47
+ "help": "Ankr premium API key for RPC access. Supports the broadest range of EVM chains.",
48
+ "advanced": false
49
+ },
50
+ "ETHEREUM_PROVIDER_ETHEREUM": {
51
+ "type": "string",
52
+ "required": false,
53
+ "sensitive": false,
54
+ "label": "Provider Ethereum",
55
+ "help": "Custom RPC URL for Ethereum mainnet (overrides provider-based RPC). For other chains, set ETHEREUM_PROVIDER_<CHAINNAME> (or EVM_PROVIDER_<CHAINNAME>) in your .env.",
56
+ "advanced": false
57
+ },
58
+ "ETHEREUM_PROVIDER_BASE": {
59
+ "type": "string",
60
+ "required": false,
61
+ "sensitive": false,
62
+ "label": "Provider Base",
63
+ "help": "Custom RPC URL for Base mainnet (overrides provider-based RPC).",
64
+ "advanced": false
65
+ },
66
+ "ETHEREUM_PROVIDER_ARBITRUM": {
67
+ "type": "string",
68
+ "required": false,
69
+ "sensitive": false,
70
+ "label": "Provider Arbitrum",
71
+ "help": "Custom RPC URL for Arbitrum One (overrides provider-based RPC).",
72
+ "advanced": false
73
+ },
74
+ "ETHEREUM_PROVIDER_OPTIMISM": {
75
+ "type": "string",
76
+ "required": false,
77
+ "sensitive": false,
78
+ "label": "Provider Optimism",
79
+ "help": "Custom RPC URL for Optimism mainnet (overrides provider-based RPC).",
80
+ "advanced": false
81
+ },
82
+ "TEE_MODE": {
83
+ "type": "string",
84
+ "required": false,
85
+ "sensitive": false,
86
+ "default": "OFF",
87
+ "label": "Mode",
88
+ "help": "Controls whether Trusted Execution Environment (TEE) mode is enabled.",
89
+ "advanced": false
90
+ },
91
+ "WALLET_SECRET_SALT": {
92
+ "type": "secret",
93
+ "required": false,
94
+ "sensitive": true,
95
+ "label": "Secret Salt",
96
+ "help": "Salt value for TEE-derived wallet keypair.",
97
+ "advanced": false
98
+ },
99
+ "SEPOLIA_RPC_URL": {
100
+ "type": "url",
101
+ "required": false,
102
+ "sensitive": false,
103
+ "default": "https://ethereum-sepolia-rpc.publicnode.com",
104
+ "label": "Rpc Url",
105
+ "help": "RPC endpoint URL for Sepolia testnet.",
106
+ "advanced": false
107
+ },
108
+ "BASE_SEPOLIA_RPC_URL": {
109
+ "type": "url",
110
+ "required": false,
111
+ "sensitive": false,
112
+ "default": "https://sepolia.base.org",
113
+ "label": "Sepolia Rpc Url",
114
+ "help": "RPC endpoint URL for Base Sepolia testnet.",
115
+ "advanced": false
116
+ }
117
+ },
118
+ "render": {
119
+ "visible": true,
120
+ "pinTo": [],
121
+ "style": "card",
122
+ "icon": "Link",
123
+ "group": "blockchain",
124
+ "groupOrder": 4,
125
+ "actions": ["enable", "configure"]
126
+ },
127
+ "resources": {
128
+ "homepage": "https://github.com/elizaOS/eliza/tree/develop/plugins/plugin-wallet#readme",
129
+ "repository": "https://github.com/elizaOS/eliza"
130
+ },
131
+ "dependsOn": [],
132
+ "kind": "plugin",
133
+ "subtype": "blockchain"
134
+ }
@@ -1,9 +1,89 @@
1
- import { tokenInfoAction } from "../../token-info/action";
1
+ import type {
2
+ ActionResult,
3
+ HandlerCallback,
4
+ HandlerOptions,
5
+ IAgentRuntime,
6
+ Memory,
7
+ State,
8
+ } from "@elizaos/core";
9
+ import { parseTokenInfoParams } from "../../token-info/params";
10
+ import {
11
+ TOKEN_INFO_SERVICE_TYPE,
12
+ type TokenInfoService,
13
+ } from "../../token-info/service";
14
+
15
+ function unavailable(
16
+ callback: HandlerCallback | undefined,
17
+ text: string,
18
+ data: Record<string, unknown>,
19
+ ): ActionResult {
20
+ const dataAsContent = data as Parameters<HandlerCallback>[0]["data"];
21
+ callback?.({ text, actions: ["WALLET"], data: dataAsContent });
22
+ return {
23
+ success: false,
24
+ text,
25
+ error: String(data.error ?? "BIRDEYE_SEARCH_UNAVAILABLE"),
26
+ data: data as ActionResult["data"],
27
+ };
28
+ }
2
29
 
3
30
  /**
4
- * Compatibility export for the old BIRDEYE_LOOKUP action module.
5
- * Birdeye lookup is now TOKEN_INFO with target="birdeye".
31
+ * Folded into WALLET as `action=search_address`. Forces the TokenInfoService
32
+ * route through the Birdeye provider with the `wallet` subaction so callers get
33
+ * Birdeye portfolio data for a wallet address.
6
34
  */
7
- export const walletSearchAddressAction = tokenInfoAction;
35
+ export async function walletSearchAddressHandler(
36
+ runtime: IAgentRuntime,
37
+ message: Memory,
38
+ state?: State,
39
+ options?: HandlerOptions | Record<string, unknown>,
40
+ callback?: HandlerCallback,
41
+ ): Promise<ActionResult> {
42
+ const service = runtime.getService(
43
+ TOKEN_INFO_SERVICE_TYPE,
44
+ ) as TokenInfoService | null;
45
+ if (!service || typeof service.route !== "function") {
46
+ return unavailable(callback, "Token info service is not available.", {
47
+ actionName: "WALLET",
48
+ subaction: "search_address",
49
+ error: "SERVICE_UNAVAILABLE",
50
+ });
51
+ }
52
+
53
+ const baseParams = parseTokenInfoParams(message, state, options);
54
+ const params = {
55
+ ...baseParams,
56
+ target: "birdeye",
57
+ subaction: "wallet" as const,
58
+ };
59
+
60
+ const routed = await service.route({
61
+ runtime,
62
+ message,
63
+ state,
64
+ options,
65
+ params,
66
+ callback,
67
+ });
68
+
69
+ if (routed.ok) {
70
+ const result = routed.result;
71
+ return {
72
+ ...result,
73
+ data: {
74
+ ...(result.data ?? {}),
75
+ actionName: "WALLET",
76
+ subaction: "search_address",
77
+ target: routed.provider.name,
78
+ },
79
+ };
80
+ }
8
81
 
9
- export default tokenInfoAction;
82
+ return unavailable(callback, routed.detail, {
83
+ actionName: "WALLET",
84
+ subaction: "search_address",
85
+ error: routed.error,
86
+ detail: routed.detail,
87
+ providers: routed.providers,
88
+ });
89
+ }
@@ -1,4 +1,3 @@
1
- // @ts-nocheck -- legacy wallet sync task from absorbed Birdeye plugin; strict types pending cleanup
2
1
  import {
3
2
  type Content,
4
3
  createUniqueUuid,
@@ -15,6 +14,11 @@ import type {
15
14
  } from "./types/shared";
16
15
  import { extractChain } from "./utils";
17
16
 
17
+ const settingAsString = (
18
+ value: string | number | boolean | null,
19
+ ): string | undefined =>
20
+ typeof value === "string" && value.trim().length > 0 ? value : undefined;
21
+
18
22
  export interface SentimentContent extends Content {
19
23
  text: string;
20
24
  source: "sentiment-analysis";
@@ -39,7 +43,7 @@ export default class Birdeye {
39
43
  beService!: BirdeyeService;
40
44
 
41
45
  constructor(runtime: IAgentRuntime) {
42
- this.apiKey = runtime.getSetting("BIRDEYE_API_KEY");
46
+ this.apiKey = settingAsString(runtime.getSetting("BIRDEYE_API_KEY")) ?? "";
43
47
  this.sentimentRoomId = createUniqueUuid(runtime, "sentiment-analysis");
44
48
  this.twitterFeedRoomId = createUniqueUuid(runtime, "twitter-feed");
45
49
  this.runtime = runtime;
@@ -69,13 +73,21 @@ export default class Birdeye {
69
73
  publicKey,
70
74
  );
71
75
 
72
- const transactions: TransactionHistory[] = birdeyeData.map(
73
- (tx: { txHash: string; blockTime: number | string }) => ({
76
+ if (!Array.isArray(birdeyeData)) {
77
+ return [];
78
+ }
79
+
80
+ const transactions: TransactionHistory[] = [];
81
+ for (const tx of birdeyeData) {
82
+ if (typeof tx.txHash !== "string" || typeof tx.blockTime !== "string") {
83
+ continue;
84
+ }
85
+ transactions.push({
74
86
  txHash: tx.txHash,
75
87
  blockTime: new Date(tx.blockTime),
76
88
  data: tx,
77
- }),
78
- );
89
+ });
90
+ }
79
91
 
80
92
  try {
81
93
  const cachedTxs = await this.runtime.getCache<TransactionHistory[]>(
@@ -150,12 +162,16 @@ export default class Birdeye {
150
162
  }
151
163
 
152
164
  async syncWallet() {
153
- const walletAddr = this.runtime.getSetting("BIRDEYE_WALLET_ADDR");
165
+ const walletAddr = settingAsString(
166
+ this.runtime.getSetting("BIRDEYE_WALLET_ADDR"),
167
+ );
154
168
  if (!walletAddr) {
155
169
  return;
156
170
  }
157
171
 
158
- const explicitChain = this.runtime.getSetting("BIRDEYE_CHAIN");
172
+ const explicitChain = settingAsString(
173
+ this.runtime.getSetting("BIRDEYE_CHAIN"),
174
+ );
159
175
 
160
176
  try {
161
177
  const chain = extractChain(walletAddr, explicitChain);
@@ -164,7 +180,7 @@ export default class Birdeye {
164
180
 
165
181
  return true;
166
182
  } catch (error) {
167
- this.runtime.logger?.error(
183
+ this.runtime.logger.error(
168
184
  `Failed to sync wallet: ${
169
185
  error instanceof Error ? error.message : String(error)
170
186
  }`,
@@ -1,5 +1,4 @@
1
- // @ts-nocheck legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
2
- import { elizaLogger } from "@elizaos/core";
1
+ import { elizaLogger, type IAgentRuntime } from "@elizaos/core";
3
2
  import {
4
3
  API_BASE_URL,
5
4
  BIRDEYE_ENDPOINTS,
@@ -162,11 +161,11 @@ class HttpError extends Error {
162
161
  // extends BaseCachedProvider
163
162
  // really more like a service
164
163
  export class BirdeyeProvider {
165
- private runtime: unknown;
164
+ private runtime: Pick<IAgentRuntime, "getCache" | "setCache">;
166
165
  private maxRetries: number;
167
166
 
168
167
  constructor(
169
- runtime,
168
+ runtime: Pick<IAgentRuntime, "getCache" | "setCache">,
170
169
  //cacheManager: ICacheManager,
171
170
  _symbolMap?: Record<string, string>,
172
171
  maxRetries?: number,
@@ -184,10 +183,10 @@ export class BirdeyeProvider {
184
183
  options: RequestInit = {},
185
184
  ): Promise<T> {
186
185
  let attempts = 0;
186
+ const headers = new Headers(options.headers);
187
187
 
188
188
  // allow the user to override the chain
189
- const chain =
190
- options.headers?.["x-chain"] || settings.BIRDEYE_CHAIN || "solana";
189
+ const chain = headers.get("x-chain") || settings.BIRDEYE_CHAIN || "solana";
191
190
 
192
191
  while (attempts < this.maxRetries) {
193
192
  attempts++;
@@ -278,7 +277,7 @@ export class BirdeyeProvider {
278
277
  : `${url}:${JSON.stringify(params)}`;
279
278
 
280
279
  // Check cache first
281
- const cachedVal = await this.runtime.getCache(cacheKey);
280
+ const cachedVal = await this.runtime.getCache<T>(cacheKey);
282
281
  if (cachedVal) return cachedVal as T;
283
282
 
284
283
  const urlWithParams =
@@ -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
  export const DEFAULT_MAX_RETRIES = 3;
3
2
 
4
3
  export const BIRDEYE_SERVICE_NAME = "birdeye";
@@ -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 {
3
2
  createBirdeyePortfolioProvider,
4
3
  formatPortfolio,
@@ -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, Memory, Provider, State } from "@elizaos/core";
3
2
  //import { addHeader, composeActionExamples, formatActionNames, formatActions } from '@elizaos/core';
4
3
  //import type { IToken } from '../types';
@@ -8,6 +7,30 @@ import { formatJsonScalar, formatJsonTable } from "../utils";
8
7
 
9
8
  const MARKET_ROW_LIMIT = 12;
10
9
 
10
+ type MarketTokenSnapshot = {
11
+ symbol?: string;
12
+ priceUsd: number;
13
+ priceChange24h: number;
14
+ liquidity: number;
15
+ marketCapUsd?: number;
16
+ };
17
+
18
+ type MarketRow = {
19
+ chain: string;
20
+ address: string;
21
+ symbol: string;
22
+ priceUsd: string;
23
+ marketCapUsd: string;
24
+ change24hPct: string;
25
+ liquidityUsd: string;
26
+ };
27
+
28
+ function formatUsd(value: number | undefined): string {
29
+ return typeof value === "number" && Number.isFinite(value)
30
+ ? value.toFixed(2)
31
+ : "unknown";
32
+ }
33
+
11
34
  export async function getCacheTimed<T>(
12
35
  runtime: IAgentRuntime,
13
36
  key: string,
@@ -30,12 +53,6 @@ export async function getCacheTimed<T>(
30
53
  /**
31
54
  * Provider for Birdeye market data
32
55
  *
33
- * @typedef {import('./Provider').Provider} Provider
34
- * @typedef {import('./Runtime').IAgentRuntime} IAgentRuntime
35
- * @typedef {import('./Memory').Memory} Memory
36
- * @typedef {import('./State').State} State
37
- * @typedef {import('./Action').Action} Action
38
- *
39
56
  * @type {Provider}
40
57
  * @property {string} name - The name of the provider
41
58
  * @property {string} description - Description of the provider
@@ -62,15 +79,14 @@ export const marketProvider: Provider = {
62
79
  try {
63
80
  //console.log('BIRDEYE_CRYPTOCURRENCY_MARKET_DATA getting');
64
81
 
65
- // define the market
66
- // FIXME: get out of runtime.getSettings
82
+ // Static Solana market addresses used for the Birdeye overview.
67
83
  const TOKEN_ADDRESSES = {
68
84
  SOL: "So11111111111111111111111111111111111111112",
69
85
  BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", // wBTC
70
86
  ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", // wETH
71
87
  };
72
88
 
73
- const hardcodedSolanaCA2SymbolMap = {
89
+ const hardcodedSolanaCA2SymbolMap: Record<string, string> = {
74
90
  So11111111111111111111111111111111111111112: "SOL",
75
91
  "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh": "BTC", // wBTC
76
92
  "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs": "ETH", // wETH
@@ -85,17 +101,8 @@ export const marketProvider: Provider = {
85
101
  getTokensMarketData?: (
86
102
  chain: string,
87
103
  addresses: string[],
88
- ) => Promise<
89
- Record<
90
- string,
91
- {
92
- symbol: string;
93
- priceUsd: number;
94
- priceChange24h: number;
95
- liquidity: number;
96
- }
97
- >
98
- >;
104
+ options?: GetCacheTimedOptions,
105
+ ) => Promise<Record<string, MarketTokenSnapshot | undefined>>;
99
106
  }
100
107
  | undefined;
101
108
  // want this for custom symbols
@@ -112,7 +119,7 @@ export const marketProvider: Provider = {
112
119
  !birdeyeService ||
113
120
  typeof birdeyeService.getTokensMarketData !== "function"
114
121
  ) {
115
- runtime.logger?.error(
122
+ runtime.logger.error(
116
123
  "Birdeye service is unavailable or does not have getTokensMarketData method",
117
124
  );
118
125
  return {
@@ -126,23 +133,21 @@ export const marketProvider: Provider = {
126
133
  };
127
134
  }
128
135
 
129
- // FIXME: cache (how fresh does this have to be? 5 mins? 1 min?)
130
136
  // get data
131
- const ps = [birdeyeService.getTokensMarketData("solana", CAs)];
132
- if (
133
- solanaService &&
134
- typeof solanaService.getTokensSymbols === "function"
135
- ) {
136
- ps.push(solanaService.getTokensSymbols(CAs));
137
- }
137
+ const tokenSymbolsPromise =
138
+ solanaService && typeof solanaService.getTokensSymbols === "function"
139
+ ? solanaService.getTokensSymbols(CAs)
140
+ : Promise.resolve({} as Record<string, string>);
138
141
 
139
- const results = await Promise.all(ps);
142
+ const [result, tokenSymbols] = await Promise.all([
143
+ birdeyeService.getTokensMarketData("solana", CAs, {
144
+ notOlderThan: 30 * 1000,
145
+ }),
146
+ tokenSymbolsPromise,
147
+ ]);
140
148
 
141
- const result = results[0]; // birdeye Results
142
- const rows = [];
149
+ const rows: MarketRow[] = [];
143
150
 
144
- // FIXME: Market cap column is currently not populated from Birdeye API response
145
- // Need to calculate or fetch market cap data separately
146
151
  for (const ca of CAs) {
147
152
  // Check if result[ca] exists before accessing it
148
153
  if (!result[ca]) {
@@ -159,20 +164,21 @@ export const marketProvider: Provider = {
159
164
  }
160
165
 
161
166
  const t = result[ca];
162
- t.symbol =
163
- solanaService && results[1]
164
- ? results[1][ca]
165
- : (hardcodedSolanaCA2SymbolMap[ca] ?? "(Not available)");
167
+ let symbol =
168
+ tokenSymbols[ca] ??
169
+ t.symbol ??
170
+ hardcodedSolanaCA2SymbolMap[ca] ??
171
+ "(Not available)";
166
172
  // unwrap symbols
167
- if (t.symbol === "WBTC") t.symbol = "BTC";
168
- if (t.symbol === "WETH") t.symbol = "ETH";
173
+ if (symbol === "WBTC") symbol = "BTC";
174
+ if (symbol === "WETH") symbol = "ETH";
169
175
  //console.log('t', t)
170
176
  rows.push({
171
177
  chain: "solana",
172
178
  address: ca,
173
- symbol: t.symbol,
179
+ symbol,
174
180
  priceUsd: t.priceUsd.toFixed(4),
175
- marketCapUsd: "unknown",
181
+ marketCapUsd: formatUsd(t.marketCapUsd),
176
182
  change24hPct: t.priceChange24h.toFixed(2),
177
183
  liquidityUsd: t.liquidity.toFixed(2),
178
184
  });
@@ -183,7 +189,7 @@ export const marketProvider: Provider = {
183
189
  const boundedRows = rows.slice(0, MARKET_ROW_LIMIT);
184
190
  const data = {
185
191
  tokens: Object.fromEntries(
186
- Object.entries(results[0] ?? {}).slice(0, MARKET_ROW_LIMIT),
192
+ Object.entries(result).slice(0, MARKET_ROW_LIMIT),
187
193
  ),
188
194
  };
189
195
 
@@ -210,7 +216,7 @@ export const marketProvider: Provider = {
210
216
  text,
211
217
  };
212
218
  } catch (err) {
213
- runtime.logger?.error(
219
+ runtime.logger.error(
214
220
  `Error fetching Birdeye market data: ${err instanceof Error ? err.message : String(err)}`,
215
221
  );
216
222
  return {