@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,5 +1,4 @@
1
- // @ts-nocheck legacy code from absorbed plugins (lp-manager, lpinfo, dexscreener, defi-news, birdeye); strict types pending cleanup
2
- import type { Plugin } from "@elizaos/core";
1
+ import type { IAgentRuntime, Plugin } from "@elizaos/core";
3
2
  // Providers
4
3
  import { defiNewsProvider } from "./providers/defiNewsProvider";
5
4
  // Services
@@ -37,6 +36,12 @@ export const defiNewsPlugin: Plugin = {
37
36
  providers: [defiNewsProvider],
38
37
  actions: [],
39
38
  services: [NewsDataService],
39
+ async dispose(runtime: IAgentRuntime) {
40
+ const svc = runtime.getService<NewsDataService>(
41
+ NewsDataService.serviceType,
42
+ );
43
+ await svc?.stop();
44
+ },
40
45
  };
41
46
 
42
47
  export default defiNewsPlugin;
@@ -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, State } from "@elizaos/core";
3
2
 
4
3
  /**
@@ -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 type { NewsDataService } from "../services/newsDataService";
4
3
 
@@ -29,10 +28,13 @@ interface CoinGeckoSearchResult {
29
28
  interface CoinGeckoCoinData {
30
29
  name: string;
31
30
  symbol: string;
31
+ market_cap_rank?: number;
32
32
  market_data?: {
33
33
  current_price?: { usd?: number };
34
34
  market_cap?: { usd?: number };
35
35
  total_volume?: { usd?: number };
36
+ high_24h?: { usd?: number };
37
+ low_24h?: { usd?: number };
36
38
  price_change_percentage_24h?: number;
37
39
  price_change_percentage_7d?: number;
38
40
  price_change_percentage_30d?: number;
@@ -40,6 +42,11 @@ interface CoinGeckoCoinData {
40
42
  community_data?: {
41
43
  twitter_followers?: number;
42
44
  reddit_subscribers?: number;
45
+ telegram_channel_user_count?: number;
46
+ };
47
+ developer_data?: {
48
+ forks?: number;
49
+ stars?: number;
43
50
  };
44
51
  }
45
52
 
@@ -92,7 +99,7 @@ export const defiNewsProvider: Provider = {
92
99
  description:
93
100
  "Provides DeFi market data, global crypto statistics, token information, and real-world crypto news",
94
101
  descriptionCompressed:
95
- "provide DeFi market data, global crypto statistic, token information, real-world crypto new",
102
+ "DeFi market data, crypto stats, token info, crypto news",
96
103
  dynamic: true,
97
104
  contexts: ["finance", "crypto", "wallet"],
98
105
  contextGate: { anyOf: ["finance", "crypto", "wallet"] },
@@ -100,8 +107,6 @@ export const defiNewsProvider: Provider = {
100
107
  cacheScope: "turn",
101
108
  roleGate: { minRole: "USER" },
102
109
  get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {
103
- console.log("DEFI_NEWS provider called");
104
-
105
110
  let defiNewsInfo = "";
106
111
 
107
112
  try {
@@ -114,7 +119,6 @@ export const defiNewsProvider: Provider = {
114
119
  ) as NewsDataService;
115
120
 
116
121
  if (!newsDataService) {
117
- console.log("NewsData service not available");
118
122
  return {
119
123
  data: {},
120
124
  values: {},
@@ -122,10 +126,8 @@ export const defiNewsProvider: Provider = {
122
126
  };
123
127
  }
124
128
 
125
- console.log("DeFi News services found, generating report...");
126
-
127
129
  // Check if a specific token is mentioned in the message
128
- const messageText = message.content?.text || "";
130
+ const messageText = message.content.text || "";
129
131
 
130
132
  defiNewsInfo += `=== DEFI & CRYPTO MARKET REPORT ===\n\n`;
131
133
 
@@ -139,8 +141,6 @@ export const defiNewsProvider: Provider = {
139
141
  extractedSymbols.unshift(namedSymbol); // Add to front
140
142
  }
141
143
 
142
- console.log(`Extracted symbols: ${extractedSymbols.join(", ")}`);
143
-
144
144
  // If token symbols are detected and services are available, look them up
145
145
  if (extractedSymbols.length > 0 && coinGeckoService) {
146
146
  // Try to get Birdeye service for symbol lookup
@@ -154,8 +154,6 @@ export const defiNewsProvider: Provider = {
154
154
  if (birdeyeService && solanaService) {
155
155
  // Process up to 3 tokens
156
156
  for (const detectedSymbol of extractedSymbols.slice(0, 3)) {
157
- console.log(`Looking up symbol: ${detectedSymbol}`);
158
-
159
157
  try {
160
158
  // Look up token by symbol across all chains
161
159
  const options =
@@ -164,17 +162,11 @@ export const defiNewsProvider: Provider = {
164
162
  (t) => t.symbol.toUpperCase() === detectedSymbol.toUpperCase(),
165
163
  );
166
164
 
167
- console.log(
168
- `Birdeye found ${exactOptions.length} exact matches for ${detectedSymbol}`,
169
- );
170
-
171
165
  if (exactOptions.length > 0) {
172
166
  // Use the first exact match (usually the most popular/main token)
173
167
  const tokenOption = exactOptions[0];
174
168
  const tokenCA = tokenOption.address;
175
169
 
176
- console.log(`Using token: ${tokenOption.symbol} at ${tokenCA}`);
177
-
178
170
  // Verify it's actually a token
179
171
  const addressType = await solanaService.getAddressType(tokenCA);
180
172
 
@@ -188,28 +180,16 @@ export const defiNewsProvider: Provider = {
188
180
  if (tokenData) {
189
181
  defiNewsInfo += tokenData;
190
182
  }
191
- } else {
192
- console.log(
193
- `Address ${tokenCA} is not a Token, it's a ${addressType}`,
194
- );
195
183
  }
196
- } else {
197
- console.log(
198
- `No exact matches found for ${detectedSymbol}, skipping...`,
199
- );
200
184
  }
201
185
  } catch (error) {
202
- console.log(
203
- `Error looking up ${detectedSymbol} via Birdeye:`,
204
- error,
186
+ runtime.logger.warn(
187
+ `[DEFI_NEWS] error looking up ${detectedSymbol} via Birdeye: ${error instanceof Error ? error.message : String(error)}`,
205
188
  );
206
189
  }
207
190
  }
208
191
  } else {
209
192
  // Fallback to CoinGecko ID lookup for major tokens
210
- console.log(
211
- "Birdeye or Solana service not available, using CoinGecko fallback",
212
- );
213
193
  for (const detectedSymbol of extractedSymbols.slice(0, 1)) {
214
194
  const coingeckoId = getCoinGeckoIdFromSymbol(detectedSymbol);
215
195
  if (coingeckoId) {
@@ -233,7 +213,6 @@ export const defiNewsProvider: Provider = {
233
213
  const globalCryptoData = await getGlobalCryptoData(coinGeckoService);
234
214
  defiNewsInfo += globalCryptoData;
235
215
  } else {
236
- console.log("CoinGecko service not available, skipping market data");
237
216
  defiNewsInfo +=
238
217
  "⚠️ Market data unavailable (CoinGecko service not configured)\n\n";
239
218
  }
@@ -276,7 +255,7 @@ export const extractSymbols = (
276
255
  // strict mode will only extract symbols that are clearly formatted as a symbol using $SOL format
277
256
  mode: "strict" | "loose" = "loose",
278
257
  ): string[] => {
279
- if (!text?.matchAll) return [];
258
+ if (!text.matchAll) return [];
280
259
  const symbols = new Set<string>();
281
260
 
282
261
  // Match patterns
@@ -557,15 +536,11 @@ async function getTokenInfoByAddress(
557
536
  tokenSymbol = onChainSymbol;
558
537
  }
559
538
  } catch (_error) {
560
- console.log("Could not fetch on-chain symbol, using provided:", symbol);
539
+ // fall back to provided symbol when on-chain lookup fails
561
540
  }
562
541
 
563
- console.log(
564
- `Fetching CoinGecko data for ${tokenSymbol} at ${tokenAddress}`,
565
- );
566
-
567
542
  // Try to search CoinGecko by symbol
568
- let coinData = null;
543
+ let coinData: CoinGeckoCoinData | null = null;
569
544
  const searchResults = await coinGeckoService.searchCoin(tokenSymbol);
570
545
 
571
546
  if (searchResults && searchResults.length > 0) {
@@ -576,11 +551,9 @@ async function getTokenInfoByAddress(
576
551
  );
577
552
 
578
553
  if (solanaMatch) {
579
- console.log(`Found exact Solana platform match: ${solanaMatch.id}`);
580
554
  coinData = await coinGeckoService.getCoinData(solanaMatch.id);
581
555
  } else {
582
556
  // Use first result as fallback
583
- console.log(`Using first search result: ${searchResults[0].id}`);
584
557
  coinData = await coinGeckoService.getCoinData(searchResults[0].id);
585
558
  }
586
559
  }
@@ -608,8 +581,8 @@ async function getTokenInfoByAddress(
608
581
  if (md.total_volume?.usd) {
609
582
  tokenInfo += ` 24h Volume: $${(md.total_volume.usd / 1e9).toFixed(2)}B\n`;
610
583
  }
611
- if (md.market_cap_rank) {
612
- tokenInfo += ` Market Cap Rank: #${md.market_cap_rank}\n`;
584
+ if (coinData.market_cap_rank) {
585
+ tokenInfo += ` Market Cap Rank: #${coinData.market_cap_rank}\n`;
613
586
  }
614
587
 
615
588
  tokenInfo += "\n📈 PRICE CHANGES:\n";
@@ -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 } from "@elizaos/core";
3
2
  import { Service } from "@elizaos/core";
4
3
  import type { RealWorldNewsArticle } from "../interfaces/types";
@@ -31,13 +30,6 @@ export class NewsDataService extends Service {
31
30
  return "Provides real-world cryptocurrency news and events from Brave New Coin RSS feed";
32
31
  }
33
32
 
34
- constructor(runtime?: IAgentRuntime) {
35
- super(runtime);
36
- console.log(
37
- "✅ [NewsDataService] Initialized with Brave New Coin RSS feed",
38
- );
39
- }
40
-
41
33
  /**
42
34
  * Start the NewsData service (static method for framework)
43
35
  */
@@ -59,9 +51,7 @@ export class NewsDataService extends Service {
59
51
  /**
60
52
  * Stop the service instance
61
53
  */
62
- async stop(): Promise<void> {
63
- console.log("✅ [NewsDataService] Stopped");
64
- }
54
+ async stop(): Promise<void> {}
65
55
 
66
56
  /**
67
57
  * Parse RSS XML to extract news items
@@ -198,10 +188,6 @@ export class NewsDataService extends Service {
198
188
  const limit = options?.limit || 10;
199
189
  const query = options?.query?.toLowerCase();
200
190
 
201
- console.log(
202
- `🔍 [NewsDataService] Fetching news from Brave New Coin RSS feed`,
203
- );
204
-
205
191
  const response = await fetch(this.rssUrl, {
206
192
  method: "GET",
207
193
  headers: {
@@ -222,10 +208,6 @@ export class NewsDataService extends Service {
222
208
  const xmlText = await response.text();
223
209
  const rssItems = this.parseRSS(xmlText);
224
210
 
225
- console.log(
226
- `✅ [NewsDataService] Parsed ${rssItems.length} news articles from RSS`,
227
- );
228
-
229
211
  // Convert RSS items to RealWorldNewsArticle format
230
212
  let articles: RealWorldNewsArticle[] = rssItems.map((item, index) => ({
231
213
  article_id: item.guid || `bnc-${Date.now()}-${index}`,
@@ -260,9 +242,6 @@ export class NewsDataService extends Service {
260
242
  `${article.title} ${article.description || ""} ${article.content || ""} ${article.category?.join(" ") || ""}`.toLowerCase();
261
243
  return searchText.includes(query);
262
244
  });
263
- console.log(
264
- `🔍 [NewsDataService] Filtered to ${articles.length} articles matching query: ${query}`,
265
- );
266
245
  }
267
246
 
268
247
  // Limit results
@@ -0,0 +1,60 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import {
3
+ extractTokenSymbol,
4
+ formatCurrency,
5
+ formatNumber,
6
+ formatPercentage,
7
+ getSentimentEmoji,
8
+ isValidTokenAddress,
9
+ stripHtml,
10
+ truncateText,
11
+ } from "./formatters.js";
12
+
13
+ /**
14
+ * DeFi news formatters render financial figures and validate token addresses.
15
+ * Magnitude suffixes, percent sign/emoji, and address-shape validation must be
16
+ * exact — isValidTokenAddress in particular gates EVM/Solana address inputs.
17
+ */
18
+
19
+ describe("formatCurrency", () => {
20
+ it("scales with T/B/M/K suffixes", () => {
21
+ expect(formatCurrency(1.5e12)).toBe("$1.50T");
22
+ expect(formatCurrency(2.5e9)).toBe("$2.50B");
23
+ expect(formatCurrency(3.5e6)).toBe("$3.50M");
24
+ expect(formatCurrency(4.5e3)).toBe("$4.50K");
25
+ expect(formatCurrency(12.3)).toBe("$12.30");
26
+ });
27
+ });
28
+
29
+ describe("formatPercentage", () => {
30
+ it("adds sign + trend emoji", () => {
31
+ expect(formatPercentage(5)).toBe("📈 +5.00%");
32
+ expect(formatPercentage(-3.2)).toBe("📉 -3.20%");
33
+ });
34
+ });
35
+
36
+ describe("text helpers", () => {
37
+ it("truncateText, getSentimentEmoji, formatNumber, extractTokenSymbol, stripHtml", () => {
38
+ expect(truncateText("short", 200)).toBe("short");
39
+ expect(truncateText("abcdef", 3)).toBe("abc...");
40
+ expect(getSentimentEmoji("positive")).toBe("😊");
41
+ expect(getSentimentEmoji("negative")).toBe("😟");
42
+ expect(getSentimentEmoji(undefined)).toBe("😐");
43
+ expect(formatNumber(1234567)).toBe("1,234,567");
44
+ expect(extractTokenSymbol("buy some WBTC now")).toBe("WBTC");
45
+ expect(extractTokenSymbol("nothing here")).toBeNull();
46
+ expect(stripHtml("<p>hi <b>there</b></p>")).toBe("hi there");
47
+ });
48
+ });
49
+
50
+ describe("isValidTokenAddress", () => {
51
+ it("accepts EVM + Solana shapes, rejects others", () => {
52
+ expect(isValidTokenAddress(`0x${"a".repeat(40)}`)).toBe(true);
53
+ expect(
54
+ isValidTokenAddress("So11111111111111111111111111111111111111112"),
55
+ ).toBe(true);
56
+ expect(isValidTokenAddress("0x123")).toBe(false); // too short
57
+ expect(isValidTokenAddress(`0x${"g".repeat(40)}`)).toBe(false); // non-hex
58
+ expect(isValidTokenAddress("not an address")).toBe(false);
59
+ });
60
+ });
@@ -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
  /**
3
2
  * Utility functions for formatting DeFi news data
4
3
  */
@@ -1,5 +1,4 @@
1
1
  import type {
2
- Action,
3
2
  ActionResult,
4
3
  HandlerCallback,
5
4
  HandlerOptions,
@@ -7,41 +6,8 @@ import type {
7
6
  Memory,
8
7
  State,
9
8
  } from "@elizaos/core";
10
- import { parseTokenInfoParams, selectedContextMatches } from "./params";
9
+ import { parseTokenInfoParams } from "./params";
11
10
  import { TOKEN_INFO_SERVICE_TYPE, type TokenInfoService } from "./service";
12
- import { TOKEN_INFO_SUBACTIONS } from "./types";
13
-
14
- const TOKEN_INFO_CONTEXTS = ["finance", "crypto", "wallet"] as const;
15
- const TOKEN_INFO_KEYWORDS = [
16
- "token",
17
- "coin",
18
- "crypto",
19
- "dexscreener",
20
- "birdeye",
21
- "coingecko",
22
- "price",
23
- "pair",
24
- "pairs",
25
- "market cap",
26
- "liquidity",
27
- "trending",
28
- "wallet",
29
- "portfolio",
30
- "boosted",
31
- "profile",
32
- ] as const;
33
-
34
- function hasTokenInfoIntent(message: Memory, state?: State): boolean {
35
- const text = [
36
- typeof message.content?.text === "string" ? message.content.text : "",
37
- typeof state?.values?.recentMessages === "string"
38
- ? state.values.recentMessages
39
- : "",
40
- ]
41
- .join("\n")
42
- .toLowerCase();
43
- return TOKEN_INFO_KEYWORDS.some((keyword) => text.includes(keyword));
44
- }
45
11
 
46
12
  function unavailable(
47
13
  callback: HandlerCallback | undefined,
@@ -49,7 +15,7 @@ function unavailable(
49
15
  data: Record<string, unknown>,
50
16
  ): ActionResult {
51
17
  const dataAsContent = data as Parameters<HandlerCallback>[0]["data"];
52
- callback?.({ text, actions: ["TOKEN_INFO"], data: dataAsContent });
18
+ callback?.({ text, actions: ["WALLET"], data: dataAsContent });
53
19
  return {
54
20
  success: false,
55
21
  text,
@@ -58,183 +24,57 @@ function unavailable(
58
24
  };
59
25
  }
60
26
 
61
- export const tokenInfoAction: Action = {
62
- name: "TOKEN_INFO",
63
- contexts: [...TOKEN_INFO_CONTEXTS],
64
- contextGate: { anyOf: [...TOKEN_INFO_CONTEXTS] },
65
- roleGate: { minRole: "USER" },
66
- similes: [
67
- "DEXSCREENER_SEARCH",
68
- "DEXSCREENER_TOKEN_INFO",
69
- "DEXSCREENER_TRENDING",
70
- "DEXSCREENER_NEW_PAIRS",
71
- "DEXSCREENER_CHAIN_PAIRS",
72
- "DEXSCREENER_BOOSTED_TOKENS",
73
- "DEXSCREENER_TOKEN_PROFILES",
74
- "BIRDEYE_LOOKUP",
75
- "BIRDEYE_TOKEN_SEARCH",
76
- "TOKEN_SEARCH",
77
- "TOKEN_LOOKUP",
78
- "TOKEN_PRICE",
79
- "COINGECKO",
80
- ],
81
- description:
82
- "Fetch crypto token and market information from registered providers. target selects provider (dexscreener, birdeye, coingecko). subaction selects search, token, trending, new-pairs, chain-pairs, boosted, profiles, or wallet.",
83
- descriptionCompressed:
84
- "Crypto token info provider registry: target dexscreener|birdeye|coingecko; subaction search|token|trending|new-pairs|chain-pairs|boosted|profiles|wallet.",
85
- parameters: [
86
- {
87
- name: "target",
88
- description:
89
- "Provider to use. Omit to use the default provider for the subaction.",
90
- required: false,
91
- schema: { type: "string", enum: ["dexscreener", "birdeye", "coingecko"] },
92
- examples: ["dexscreener", "birdeye", "coingecko"],
93
- },
94
- {
95
- name: "subaction",
96
- description: "Token information operation.",
97
- required: true,
98
- schema: { type: "string", enum: [...TOKEN_INFO_SUBACTIONS] },
99
- examples: ["search", "token", "trending", "wallet"],
100
- },
101
- {
102
- name: "query",
103
- description:
104
- "Search query, coin id, token symbol, token address, or wallet address.",
105
- required: false,
106
- schema: { type: "string" },
107
- },
108
- {
109
- name: "address",
110
- description: "Token or wallet address.",
111
- required: false,
112
- schema: { type: "string" },
113
- },
114
- {
115
- name: "tokenAddress",
116
- description: "Token contract address.",
117
- required: false,
118
- schema: { type: "string" },
119
- },
120
- {
121
- name: "chain",
122
- description:
123
- "Chain/network for provider operations that need one, such as chain-pairs or CoinGecko contract lookup.",
124
- required: false,
125
- schema: { type: "string" },
126
- examples: ["ethereum", "solana", "base"],
127
- },
128
- {
129
- name: "timeframe",
130
- description: "Trending window when supported.",
131
- required: false,
132
- schema: { type: "string", enum: ["1h", "6h", "24h"], default: "24h" },
133
- },
134
- {
135
- name: "limit",
136
- description: "Maximum result count.",
137
- required: false,
138
- schema: { type: "number", minimum: 1, maximum: 100, default: 10 },
139
- },
140
- {
141
- name: "sortBy",
142
- description: "Pair ranking metric for chain-pairs.",
143
- required: false,
144
- schema: {
145
- type: "string",
146
- enum: ["volume", "liquidity", "priceChange", "txns"],
147
- },
148
- },
149
- {
150
- name: "top",
151
- description: "For boosted tokens, return top boosted rather than latest.",
152
- required: false,
153
- schema: { type: "boolean", default: false },
154
- },
155
- {
156
- name: "id",
157
- description: "CoinGecko coin id.",
158
- required: false,
159
- schema: { type: "string" },
160
- },
161
- ],
162
- validate: async (_runtime, message, state) =>
163
- selectedContextMatches(state, TOKEN_INFO_CONTEXTS) ||
164
- hasTokenInfoIntent(message, state),
165
- handler: async (
166
- runtime: IAgentRuntime,
167
- message: Memory,
168
- state?: State,
169
- options?: HandlerOptions | Record<string, unknown>,
170
- callback?: HandlerCallback,
171
- ): Promise<ActionResult> => {
172
- const service = runtime.getService(
173
- TOKEN_INFO_SERVICE_TYPE,
174
- ) as TokenInfoService | null;
175
- if (!service || typeof service.route !== "function") {
176
- return unavailable(callback, "Token info service is not available.", {
177
- actionName: "TOKEN_INFO",
178
- error: "SERVICE_UNAVAILABLE",
179
- });
180
- }
181
-
182
- const params = parseTokenInfoParams(message, state, options);
183
- const routed = await service.route({
184
- runtime,
185
- message,
186
- state,
187
- options,
188
- params,
189
- callback,
27
+ /**
28
+ * Folded into WALLET as `action=token_info`. Routes token-info queries through
29
+ * the registered TokenInfoService providers (DexScreener, Birdeye, CoinGecko).
30
+ */
31
+ export async function tokenInfoHandler(
32
+ runtime: IAgentRuntime,
33
+ message: Memory,
34
+ state?: State,
35
+ options?: HandlerOptions | Record<string, unknown>,
36
+ callback?: HandlerCallback,
37
+ ): Promise<ActionResult> {
38
+ const service = runtime.getService(
39
+ TOKEN_INFO_SERVICE_TYPE,
40
+ ) as TokenInfoService | null;
41
+ if (!service || typeof service.route !== "function") {
42
+ return unavailable(callback, "Token info service is not available.", {
43
+ actionName: "WALLET",
44
+ subaction: "token_info",
45
+ error: "SERVICE_UNAVAILABLE",
190
46
  });
47
+ }
191
48
 
192
- if (routed.ok) {
193
- const result = routed.result;
194
- return {
195
- ...result,
196
- data: {
197
- ...(result.data ?? {}),
198
- actionName: "TOKEN_INFO",
199
- target: routed.provider.name,
200
- supportedProviders: service.listProviders(),
201
- },
202
- };
203
- }
49
+ const params = parseTokenInfoParams(message, state, options);
50
+ const routed = await service.route({
51
+ runtime,
52
+ message,
53
+ state,
54
+ options,
55
+ params,
56
+ callback,
57
+ });
204
58
 
205
- return unavailable(callback, routed.detail, {
206
- actionName: "TOKEN_INFO",
207
- error: routed.error,
208
- detail: routed.detail,
209
- providers: routed.providers,
210
- });
211
- },
212
- examples: [
213
- [
214
- {
215
- name: "{{user1}}",
216
- content: { text: "Search for PEPE on DexScreener" },
59
+ if (routed.ok) {
60
+ const result = routed.result;
61
+ return {
62
+ ...result,
63
+ data: {
64
+ ...(result.data ?? {}),
65
+ actionName: "WALLET",
66
+ subaction: "token_info",
67
+ target: routed.provider.name,
68
+ supportedProviders: service.listProviders(),
217
69
  },
218
- {
219
- name: "{{agent}}",
220
- content: {
221
- text: "Searching DexScreener.",
222
- action: "TOKEN_INFO",
223
- },
224
- },
225
- ],
226
- [
227
- {
228
- name: "{{user1}}",
229
- content: { text: "Look up bitcoin on CoinGecko" },
230
- },
231
- {
232
- name: "{{agent}}",
233
- content: {
234
- text: "Looking up Bitcoin on CoinGecko.",
235
- action: "TOKEN_INFO",
236
- },
237
- },
238
- ],
239
- ],
240
- };
70
+ };
71
+ }
72
+
73
+ return unavailable(callback, routed.detail, {
74
+ actionName: "WALLET",
75
+ subaction: "token_info",
76
+ error: routed.error,
77
+ detail: routed.detail,
78
+ providers: routed.providers,
79
+ });
80
+ }
@@ -1,3 +1,3 @@
1
- export { tokenInfoAction } from "./action";
1
+ export { tokenInfoHandler } from "./action";
2
2
  export { TOKEN_INFO_SERVICE_TYPE, TokenInfoService } from "./service";
3
3
  export * from "./types";