@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,529 +0,0 @@
1
- import { n as __exportAll } from "./chunk-hT5z_Zn9.mjs";
2
- import { logger } from "@elizaos/core";
3
- import { resolveCloudApiBaseUrl } from "@elizaos/plugin-elizacloud";
4
- //#region src/routes/wallet-market-overview-route.ts
5
- const MARKET_OVERVIEW_PATH = "/api/wallet/market-overview";
6
- const CLOUD_MARKET_OVERVIEW_PREVIEW_PATH = "/market/preview/wallet-overview";
7
- const MARKET_OVERVIEW_CACHE_TTL_MS = 12e4;
8
- const MARKET_OVERVIEW_FETCH_TIMEOUT_MS = 8e3;
9
- const MARKET_OVERVIEW_REFRESH_WINDOW_MS = 6e4;
10
- const MARKET_OVERVIEW_REFRESH_LIMIT = 24;
11
- const COINGECKO_MARKET_LIMIT = 80;
12
- const POLYMARKET_MARKET_LIMIT = 10;
13
- const CACHE_CONTROL_VALUE = "public, max-age=60, stale-while-revalidate=180";
14
- const MARKET_PRICE_IDS = [
15
- "bitcoin",
16
- "ethereum",
17
- "solana"
18
- ];
19
- const MARKET_PRICE_ID_SET = new Set(MARKET_PRICE_IDS);
20
- function isAbortError(error) {
21
- return error instanceof DOMException ? error.name === "AbortError" || error.name === "TimeoutError" : error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
22
- }
23
- function createTimeoutError(message) {
24
- const timeoutError = new Error(message);
25
- timeoutError.name = "TimeoutError";
26
- return timeoutError;
27
- }
28
- async function fetchWithTimeoutGuard(input, init, timeoutMs) {
29
- const controller = new AbortController();
30
- const upstreamSignal = init.signal;
31
- let timedOut = false;
32
- const onAbort = () => {
33
- controller.abort();
34
- };
35
- if (upstreamSignal) if (upstreamSignal.aborted) controller.abort();
36
- else upstreamSignal.addEventListener("abort", onAbort, { once: true });
37
- const timeoutHandle = setTimeout(() => {
38
- timedOut = true;
39
- controller.abort();
40
- }, timeoutMs);
41
- try {
42
- return await fetch(input, {
43
- ...init,
44
- signal: controller.signal
45
- });
46
- } catch (error) {
47
- if (timedOut && isAbortError(error)) throw createTimeoutError(`Upstream request timed out after ${timeoutMs}ms`);
48
- throw error;
49
- } finally {
50
- clearTimeout(timeoutHandle);
51
- if (upstreamSignal) upstreamSignal.removeEventListener("abort", onAbort);
52
- }
53
- }
54
- const COINGECKO_SOURCE = {
55
- providerId: "coingecko",
56
- providerName: "CoinGecko",
57
- providerUrl: "https://www.coingecko.com/"
58
- };
59
- const POLYMARKET_SOURCE = {
60
- providerId: "polymarket",
61
- providerName: "Polymarket",
62
- providerUrl: "https://polymarket.com/"
63
- };
64
- const STABLE_ASSET_IDS = new Set([
65
- "tether",
66
- "usd-coin",
67
- "binance-usd",
68
- "first-digital-usd",
69
- "dai",
70
- "ethena-usde",
71
- "true-usd",
72
- "usds"
73
- ]);
74
- const STABLE_ASSET_SYMBOLS = new Set([
75
- "usdt",
76
- "usdc",
77
- "busd",
78
- "fdusd",
79
- "dai",
80
- "usde",
81
- "tusd",
82
- "usds"
83
- ]);
84
- let cachedWalletMarketOverview = null;
85
- let walletMarketOverviewInFlight = null;
86
- const walletMarketRefreshBuckets = /* @__PURE__ */ new Map();
87
- let walletMarketOverviewFetch = fetchWithTimeoutGuard;
88
- function scrubStackFields(value) {
89
- if (value instanceof Error) return { error: value.message || "Internal error" };
90
- if (Array.isArray(value)) return value.map(scrubStackFields);
91
- if (value && typeof value === "object") {
92
- const out = {};
93
- for (const [key, nestedValue] of Object.entries(value)) {
94
- if (key === "stack" || key === "stackTrace") continue;
95
- out[key] = scrubStackFields(nestedValue);
96
- }
97
- return out;
98
- }
99
- return value;
100
- }
101
- function sendJson(res, status, body) {
102
- if (res.headersSent) return;
103
- res.statusCode = status;
104
- res.setHeader("content-type", "application/json; charset=utf-8");
105
- res.end(JSON.stringify(scrubStackFields(body)));
106
- }
107
- function sendJsonError(res, status, message) {
108
- sendJson(res, status, { error: message });
109
- }
110
- function marketOverviewErrorMessage(error) {
111
- return error instanceof Error && error.message.trim().length > 0 ? error.message.trim() : "Upstream market feed failed";
112
- }
113
- function buildMarketOverviewSource(source, { available, stale, error }) {
114
- return {
115
- ...source,
116
- available,
117
- stale,
118
- error
119
- };
120
- }
121
- function markMarketOverviewSourcesStale(sources) {
122
- return {
123
- prices: {
124
- ...sources.prices,
125
- stale: true
126
- },
127
- movers: {
128
- ...sources.movers,
129
- stale: true
130
- },
131
- predictions: {
132
- ...sources.predictions,
133
- stale: true
134
- }
135
- };
136
- }
137
- function asRecord(value) {
138
- return value && typeof value === "object" && !Array.isArray(value) ? value : null;
139
- }
140
- function numberFromUnknown(value) {
141
- if (typeof value === "number" && Number.isFinite(value)) return value;
142
- if (typeof value !== "string" || value.trim().length === 0) return null;
143
- const parsed = Number.parseFloat(value);
144
- return Number.isFinite(parsed) ? parsed : null;
145
- }
146
- function integerFromUnknown(value) {
147
- const parsed = numberFromUnknown(value);
148
- if (parsed === null) return null;
149
- return Number.isInteger(parsed) ? parsed : Math.round(parsed);
150
- }
151
- function stringFromUnknown(value) {
152
- return typeof value === "string" && value.trim().length > 0 ? value : null;
153
- }
154
- function parseStringArray(value) {
155
- if (Array.isArray(value)) return value.filter((item) => typeof item === "string");
156
- if (typeof value !== "string" || value.trim().length === 0) return [];
157
- try {
158
- const parsed = JSON.parse(value);
159
- return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
160
- } catch {
161
- return [];
162
- }
163
- }
164
- function clampProbability(value) {
165
- if (value === null || !Number.isFinite(value)) return null;
166
- return Math.min(1, Math.max(0, value));
167
- }
168
- function isStableAsset(market) {
169
- const id = market.id.toLowerCase();
170
- const symbol = market.symbol.toLowerCase();
171
- return STABLE_ASSET_IDS.has(id) || STABLE_ASSET_SYMBOLS.has(symbol);
172
- }
173
- function mapCoinGeckoMarket(input) {
174
- const record = asRecord(input);
175
- if (!record) return null;
176
- const id = stringFromUnknown(record.id);
177
- const symbol = stringFromUnknown(record.symbol);
178
- const name = stringFromUnknown(record.name);
179
- const currentPriceUsd = numberFromUnknown(record.current_price);
180
- const change24hPct = numberFromUnknown(record.price_change_percentage_24h);
181
- if (!id || !symbol || !name || currentPriceUsd === null || change24hPct === null) return null;
182
- return {
183
- id,
184
- symbol: symbol.toUpperCase(),
185
- name,
186
- currentPriceUsd,
187
- change24hPct,
188
- marketCapRank: integerFromUnknown(record.market_cap_rank),
189
- imageUrl: stringFromUnknown(record.image)
190
- };
191
- }
192
- function mapPolymarketMarket(input) {
193
- const record = asRecord(input);
194
- if (!record) return null;
195
- const question = stringFromUnknown(record.question);
196
- if (!question) return null;
197
- const outcomeLabels = parseStringArray(record.outcomes);
198
- const outcomeProbabilities = parseStringArray(record.outcomePrices).map((value) => clampProbability(numberFromUnknown(value))).filter((value) => value !== null);
199
- const volume24hUsd = numberFromUnknown(record.volume24hr);
200
- if (volume24hUsd === null) return null;
201
- return {
202
- slug: stringFromUnknown(record.slug),
203
- question,
204
- outcomeLabels,
205
- outcomeProbabilities,
206
- volume24hUsd,
207
- totalVolumeUsd: numberFromUnknown(record.volume),
208
- endsAt: stringFromUnknown(record.endDate),
209
- imageUrl: stringFromUnknown(record.image) ?? stringFromUnknown(record.icon)
210
- };
211
- }
212
- function highlightedPredictionOutcome(market) {
213
- const yesIndex = market.outcomeLabels.findIndex((label) => label.trim().toLowerCase() === "yes");
214
- if (yesIndex >= 0) return {
215
- label: market.outcomeLabels[yesIndex] ?? "Yes",
216
- probability: market.outcomeProbabilities[yesIndex] ?? null
217
- };
218
- let highestIndex = -1;
219
- let highestProbability = -1;
220
- for (const [index, probability] of market.outcomeProbabilities.entries()) if (probability > highestProbability) {
221
- highestIndex = index;
222
- highestProbability = probability;
223
- }
224
- if (highestIndex >= 0) return {
225
- label: market.outcomeLabels[highestIndex] ?? "Top",
226
- probability: market.outcomeProbabilities[highestIndex] ?? null
227
- };
228
- return {
229
- label: "Top",
230
- probability: null
231
- };
232
- }
233
- async function fetchCoinGeckoMarkets() {
234
- const url = new URL("https://api.coingecko.com/api/v3/coins/markets");
235
- url.searchParams.set("vs_currency", "usd");
236
- url.searchParams.set("order", "market_cap_desc");
237
- url.searchParams.set("per_page", String(COINGECKO_MARKET_LIMIT));
238
- url.searchParams.set("page", "1");
239
- url.searchParams.set("price_change_percentage", "24h");
240
- const response = await walletMarketOverviewFetch(url, {
241
- method: "GET",
242
- headers: {
243
- accept: "application/json",
244
- "user-agent": "Eliza Wallet Market Feed/1.0"
245
- }
246
- }, MARKET_OVERVIEW_FETCH_TIMEOUT_MS);
247
- if (!response.ok) throw new Error(`CoinGecko responded ${response.status}`);
248
- const payload = await response.json();
249
- if (!Array.isArray(payload)) throw new Error("CoinGecko payload was not an array");
250
- return payload.map(mapCoinGeckoMarket).filter((market) => market !== null);
251
- }
252
- async function fetchPolymarketMarkets() {
253
- const url = new URL("https://gamma-api.polymarket.com/markets");
254
- url.searchParams.set("active", "true");
255
- url.searchParams.set("closed", "false");
256
- url.searchParams.set("order", "volume24hr");
257
- url.searchParams.set("ascending", "false");
258
- url.searchParams.set("limit", String(POLYMARKET_MARKET_LIMIT));
259
- const response = await walletMarketOverviewFetch(url, {
260
- method: "GET",
261
- headers: {
262
- accept: "application/json",
263
- "user-agent": "Eliza Wallet Market Feed/1.0"
264
- }
265
- }, MARKET_OVERVIEW_FETCH_TIMEOUT_MS);
266
- if (!response.ok) throw new Error(`Polymarket responded ${response.status}`);
267
- const payload = await response.json();
268
- if (!Array.isArray(payload)) throw new Error("Polymarket payload was not an array");
269
- return payload.map(mapPolymarketMarket).filter((market) => market !== null);
270
- }
271
- function buildPriceSnapshots(markets) {
272
- const byId = new Map(markets.map((market) => [market.id, market]));
273
- return MARKET_PRICE_IDS.reduce((items, id) => {
274
- const market = byId.get(id);
275
- if (!market) return items;
276
- items.push({
277
- id: market.id,
278
- symbol: market.symbol,
279
- name: market.name,
280
- priceUsd: market.currentPriceUsd,
281
- change24hPct: market.change24hPct,
282
- imageUrl: market.imageUrl
283
- });
284
- return items;
285
- }, []);
286
- }
287
- function buildMovers(markets) {
288
- return markets.filter((market) => !MARKET_PRICE_ID_SET.has(market.id)).filter((market) => !isStableAsset(market)).filter((market) => market.marketCapRank === null || market.marketCapRank <= 200).sort((left, right) => Math.abs(right.change24hPct) - Math.abs(left.change24hPct)).slice(0, 6).map((market) => ({
289
- id: market.id,
290
- symbol: market.symbol,
291
- name: market.name,
292
- priceUsd: market.currentPriceUsd,
293
- change24hPct: market.change24hPct,
294
- marketCapRank: market.marketCapRank,
295
- imageUrl: market.imageUrl
296
- }));
297
- }
298
- function buildPredictions(markets) {
299
- const seenQuestions = /* @__PURE__ */ new Set();
300
- const predictions = [];
301
- for (const market of markets) {
302
- const normalizedQuestion = market.question.trim().toLowerCase();
303
- if (seenQuestions.has(normalizedQuestion)) continue;
304
- seenQuestions.add(normalizedQuestion);
305
- const highlightedOutcome = highlightedPredictionOutcome(market);
306
- predictions.push({
307
- id: market.slug ?? normalizedQuestion,
308
- slug: market.slug,
309
- question: market.question,
310
- highlightedOutcomeLabel: highlightedOutcome.label,
311
- highlightedOutcomeProbability: highlightedOutcome.probability,
312
- volume24hUsd: market.volume24hUsd,
313
- totalVolumeUsd: market.totalVolumeUsd,
314
- endsAt: market.endsAt,
315
- imageUrl: market.imageUrl
316
- });
317
- }
318
- return predictions.slice(0, 6);
319
- }
320
- function isWalletMarketOverviewSource(value) {
321
- const record = asRecord(value);
322
- return record !== null && typeof record.providerId === "string" && typeof record.providerName === "string" && typeof record.providerUrl === "string" && typeof record.available === "boolean" && typeof record.stale === "boolean" && (typeof record.error === "string" || record.error === null);
323
- }
324
- function isWalletMarketOverviewResponse(value) {
325
- const record = asRecord(value);
326
- const sources = asRecord(record?.sources);
327
- return record !== null && typeof record.generatedAt === "string" && typeof record.cacheTtlSeconds === "number" && typeof record.stale === "boolean" && sources !== null && isWalletMarketOverviewSource(sources.prices) && isWalletMarketOverviewSource(sources.movers) && isWalletMarketOverviewSource(sources.predictions) && Array.isArray(record.prices) && Array.isArray(record.movers) && Array.isArray(record.predictions);
328
- }
329
- function resolveWalletMarketOverviewCloudPreviewUrl() {
330
- return `${resolveCloudApiBaseUrl(process.env.ELIZAOS_CLOUD_BASE_URL)}${CLOUD_MARKET_OVERVIEW_PREVIEW_PATH}`;
331
- }
332
- async function fetchCloudWalletMarketOverview(clientAddress) {
333
- const response = await walletMarketOverviewFetch(resolveWalletMarketOverviewCloudPreviewUrl(), {
334
- method: "GET",
335
- headers: {
336
- accept: "application/json",
337
- "user-agent": "Eliza Wallet Market Feed/1.0",
338
- ...clientAddress !== "unknown" ? { "x-forwarded-for": clientAddress } : {}
339
- }
340
- }, MARKET_OVERVIEW_FETCH_TIMEOUT_MS);
341
- if (!response.ok) throw new Error(`Cloud preview responded ${response.status}`);
342
- const payload = await response.json();
343
- if (!isWalletMarketOverviewResponse(payload)) throw new Error("Cloud preview payload was invalid");
344
- return payload;
345
- }
346
- async function buildWalletMarketOverview(clientAddress) {
347
- const [cloudPreviewResult, polymarketResult] = await Promise.allSettled([fetchCloudWalletMarketOverview(clientAddress), fetchPolymarketMarkets()]);
348
- const polymarketMarkets = polymarketResult.status === "fulfilled" ? polymarketResult.value : [];
349
- const polymarketError = polymarketResult.status === "rejected" ? marketOverviewErrorMessage(polymarketResult.reason) : null;
350
- if (cloudPreviewResult.status === "fulfilled") {
351
- if (polymarketError) logger.warn(`[WalletMarketOverviewRoute] Polymarket feed unavailable (${polymarketError})`);
352
- return {
353
- ...cloudPreviewResult.value,
354
- sources: {
355
- ...cloudPreviewResult.value.sources,
356
- predictions: buildMarketOverviewSource(POLYMARKET_SOURCE, {
357
- available: polymarketError === null,
358
- stale: false,
359
- error: polymarketError
360
- })
361
- },
362
- predictions: polymarketError === null ? buildPredictions(polymarketMarkets) : []
363
- };
364
- }
365
- {
366
- const error = cloudPreviewResult.reason;
367
- logger.warn(`[WalletMarketOverviewRoute] Cloud preview unavailable (${marketOverviewErrorMessage(error)}); falling back to direct feeds`);
368
- }
369
- const [coinGeckoResult] = await Promise.allSettled([fetchCoinGeckoMarkets()]);
370
- const coinGeckoMarkets = coinGeckoResult.status === "fulfilled" ? coinGeckoResult.value : [];
371
- const coinGeckoError = coinGeckoResult.status === "rejected" ? marketOverviewErrorMessage(coinGeckoResult.reason) : null;
372
- if (coinGeckoError) logger.warn(`[WalletMarketOverviewRoute] CoinGecko feed unavailable (${coinGeckoError})`);
373
- if (polymarketError) logger.warn(`[WalletMarketOverviewRoute] Polymarket feed unavailable (${polymarketError})`);
374
- if (coinGeckoError && polymarketError) throw new Error(`CoinGecko: ${coinGeckoError}; Polymarket: ${polymarketError}`);
375
- return {
376
- generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
377
- cacheTtlSeconds: Math.floor(MARKET_OVERVIEW_CACHE_TTL_MS / 1e3),
378
- stale: false,
379
- sources: {
380
- prices: buildMarketOverviewSource(COINGECKO_SOURCE, {
381
- available: coinGeckoError === null,
382
- stale: false,
383
- error: coinGeckoError
384
- }),
385
- movers: buildMarketOverviewSource(COINGECKO_SOURCE, {
386
- available: coinGeckoError === null,
387
- stale: false,
388
- error: coinGeckoError
389
- }),
390
- predictions: buildMarketOverviewSource(POLYMARKET_SOURCE, {
391
- available: polymarketError === null,
392
- stale: false,
393
- error: polymarketError
394
- })
395
- },
396
- prices: buildPriceSnapshots(coinGeckoMarkets),
397
- movers: buildMovers(coinGeckoMarkets),
398
- predictions: buildPredictions(polymarketMarkets)
399
- };
400
- }
401
- function freshCachedWalletMarketOverview() {
402
- if (!cachedWalletMarketOverview || cachedWalletMarketOverview.expiresAt <= Date.now()) return null;
403
- return cachedWalletMarketOverview.response;
404
- }
405
- function staleCachedWalletMarketOverview() {
406
- if (!cachedWalletMarketOverview) return null;
407
- return {
408
- ...cachedWalletMarketOverview.response,
409
- stale: true,
410
- sources: markMarketOverviewSourcesStale(cachedWalletMarketOverview.response.sources)
411
- };
412
- }
413
- function resolveClientAddress(req) {
414
- const forwardedFor = req.headers["x-forwarded-for"];
415
- if (typeof forwardedFor === "string" && forwardedFor.trim().length > 0) return forwardedFor.split(",")[0]?.trim() || "unknown";
416
- if (Array.isArray(forwardedFor) && forwardedFor.length > 0) return forwardedFor[0]?.trim() || "unknown";
417
- return req.socket.remoteAddress ?? "unknown";
418
- }
419
- function consumeRefreshSlot(clientAddress) {
420
- const now = Date.now();
421
- for (const [key, bucket] of walletMarketRefreshBuckets) if (bucket.resetAt <= now) walletMarketRefreshBuckets.delete(key);
422
- const bucket = walletMarketRefreshBuckets.get(clientAddress);
423
- if (!bucket || bucket.resetAt <= now) {
424
- walletMarketRefreshBuckets.set(clientAddress, {
425
- count: 1,
426
- resetAt: now + MARKET_OVERVIEW_REFRESH_WINDOW_MS
427
- });
428
- return {
429
- allowed: true,
430
- retryAfterSeconds: Math.ceil(MARKET_OVERVIEW_REFRESH_WINDOW_MS / 1e3)
431
- };
432
- }
433
- if (bucket.count >= MARKET_OVERVIEW_REFRESH_LIMIT) return {
434
- allowed: false,
435
- retryAfterSeconds: Math.max(1, Math.ceil((bucket.resetAt - now) / 1e3))
436
- };
437
- bucket.count += 1;
438
- walletMarketRefreshBuckets.set(clientAddress, bucket);
439
- return {
440
- allowed: true,
441
- retryAfterSeconds: Math.max(1, Math.ceil((bucket.resetAt - now) / 1e3))
442
- };
443
- }
444
- function setPublicMarketHeaders(res) {
445
- res.setHeader("Access-Control-Allow-Origin", "*");
446
- res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
447
- res.setHeader("Cache-Control", CACHE_CONTROL_VALUE);
448
- }
449
- async function loadWalletMarketOverview(clientAddress) {
450
- const fresh = freshCachedWalletMarketOverview();
451
- if (fresh) return fresh;
452
- if (!walletMarketOverviewInFlight) walletMarketOverviewInFlight = buildWalletMarketOverview(clientAddress).then((response) => {
453
- cachedWalletMarketOverview = {
454
- response,
455
- expiresAt: Date.now() + MARKET_OVERVIEW_CACHE_TTL_MS
456
- };
457
- return response;
458
- }).catch((error) => {
459
- const stale = staleCachedWalletMarketOverview();
460
- if (stale) {
461
- logger.warn(`[WalletMarketOverviewRoute] Refresh failed; serving stale market overview (${error instanceof Error ? error.message : String(error)})`);
462
- return stale;
463
- }
464
- throw error;
465
- }).finally(() => {
466
- walletMarketOverviewInFlight = null;
467
- });
468
- return walletMarketOverviewInFlight;
469
- }
470
- async function handleWalletMarketOverviewRoute(req, res) {
471
- const method = (req.method ?? "GET").toUpperCase();
472
- if (new URL(req.url ?? "/", "http://localhost").pathname !== MARKET_OVERVIEW_PATH) return false;
473
- setPublicMarketHeaders(res);
474
- if (method === "OPTIONS") {
475
- res.statusCode = 204;
476
- res.end();
477
- return true;
478
- }
479
- if (method !== "GET") {
480
- sendJsonError(res, 405, "Method not allowed");
481
- return true;
482
- }
483
- const clientAddress = resolveClientAddress(req);
484
- const fresh = freshCachedWalletMarketOverview();
485
- if (fresh) {
486
- sendJson(res, 200, fresh);
487
- return true;
488
- }
489
- if (!walletMarketOverviewInFlight) {
490
- const rateLimit = consumeRefreshSlot(clientAddress);
491
- if (!rateLimit.allowed) {
492
- const stale = staleCachedWalletMarketOverview();
493
- if (stale) {
494
- sendJson(res, 200, stale);
495
- return true;
496
- }
497
- res.setHeader("Retry-After", String(rateLimit.retryAfterSeconds));
498
- sendJsonError(res, 429, "Too many market overview refreshes");
499
- return true;
500
- }
501
- }
502
- try {
503
- sendJson(res, 200, await loadWalletMarketOverview(clientAddress));
504
- } catch (error) {
505
- logger.error(`[WalletMarketOverviewRoute] Failed to load market overview (${error instanceof Error ? error.message : String(error)})`);
506
- sendJsonError(res, 502, "Failed to load market overview");
507
- }
508
- return true;
509
- }
510
- //#endregion
511
- //#region src/routes/plugin.ts
512
- var plugin_exports = /* @__PURE__ */ __exportAll({ walletRoutePlugin: () => walletRoutePlugin });
513
- async function marketOverviewHandler(req, res, _runtime) {
514
- await handleWalletMarketOverviewRoute(req, res);
515
- }
516
- const walletRoutePlugin = {
517
- name: "@elizaos/plugin-wallet:routes",
518
- description: "Wallet HTTP route handlers (market overview, etc.) — extracted from packages/app-core/src/api.",
519
- routes: [{
520
- type: "GET",
521
- path: "/api/wallet/market-overview",
522
- rawPath: true,
523
- public: true,
524
- name: "wallet-market-overview",
525
- handler: marketOverviewHandler
526
- }]
527
- };
528
- //#endregion
529
- export { walletRoutePlugin as n, plugin_exports as t };