keyring-agent-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/README.md +169 -0
  2. package/dist/agent/AgentCore.d.ts +220 -0
  3. package/dist/agent/AgentCore.d.ts.map +1 -0
  4. package/dist/agent/AgentCore.js +950 -0
  5. package/dist/agent/AgentCore.js.map +1 -0
  6. package/dist/agent/QueryRewriter.d.ts +67 -0
  7. package/dist/agent/QueryRewriter.d.ts.map +1 -0
  8. package/dist/agent/QueryRewriter.js +262 -0
  9. package/dist/agent/QueryRewriter.js.map +1 -0
  10. package/dist/agent/Router.d.ts +33 -0
  11. package/dist/agent/Router.d.ts.map +1 -0
  12. package/dist/agent/Router.js +191 -0
  13. package/dist/agent/Router.js.map +1 -0
  14. package/dist/agent/Subagent.d.ts +63 -0
  15. package/dist/agent/Subagent.d.ts.map +1 -0
  16. package/dist/agent/Subagent.js +240 -0
  17. package/dist/agent/Subagent.js.map +1 -0
  18. package/dist/agent/Synthesizer.d.ts +11 -0
  19. package/dist/agent/Synthesizer.d.ts.map +1 -0
  20. package/dist/agent/Synthesizer.js +86 -0
  21. package/dist/agent/Synthesizer.js.map +1 -0
  22. package/dist/agent/index.d.ts +10 -0
  23. package/dist/agent/index.d.ts.map +1 -0
  24. package/dist/agent/index.js +24 -0
  25. package/dist/agent/index.js.map +1 -0
  26. package/dist/agent/subagents/AiAgent.d.ts +6 -0
  27. package/dist/agent/subagents/AiAgent.d.ts.map +1 -0
  28. package/dist/agent/subagents/AiAgent.js +48 -0
  29. package/dist/agent/subagents/AiAgent.js.map +1 -0
  30. package/dist/agent/subagents/NftAgent.d.ts +6 -0
  31. package/dist/agent/subagents/NftAgent.d.ts.map +1 -0
  32. package/dist/agent/subagents/NftAgent.js +69 -0
  33. package/dist/agent/subagents/NftAgent.js.map +1 -0
  34. package/dist/agent/subagents/PoolAgent.d.ts +6 -0
  35. package/dist/agent/subagents/PoolAgent.d.ts.map +1 -0
  36. package/dist/agent/subagents/PoolAgent.js +184 -0
  37. package/dist/agent/subagents/PoolAgent.js.map +1 -0
  38. package/dist/agent/subagents/TokenAgent.d.ts +6 -0
  39. package/dist/agent/subagents/TokenAgent.d.ts.map +1 -0
  40. package/dist/agent/subagents/TokenAgent.js +75 -0
  41. package/dist/agent/subagents/TokenAgent.js.map +1 -0
  42. package/dist/agent/subagents/WalletAgent.d.ts +6 -0
  43. package/dist/agent/subagents/WalletAgent.d.ts.map +1 -0
  44. package/dist/agent/subagents/WalletAgent.js +92 -0
  45. package/dist/agent/subagents/WalletAgent.js.map +1 -0
  46. package/dist/agent/subagents/index.d.ts +14 -0
  47. package/dist/agent/subagents/index.d.ts.map +1 -0
  48. package/dist/agent/subagents/index.js +38 -0
  49. package/dist/agent/subagents/index.js.map +1 -0
  50. package/dist/constants/abi.d.ts +520 -0
  51. package/dist/constants/abi.d.ts.map +1 -0
  52. package/dist/constants/abi.js +667 -0
  53. package/dist/constants/abi.js.map +1 -0
  54. package/dist/functions/pool.d.ts +25 -0
  55. package/dist/functions/pool.d.ts.map +1 -0
  56. package/dist/functions/pool.js +151 -0
  57. package/dist/functions/pool.js.map +1 -0
  58. package/dist/functions/web3.d.ts +32 -0
  59. package/dist/functions/web3.d.ts.map +1 -0
  60. package/dist/functions/web3.js +277 -0
  61. package/dist/functions/web3.js.map +1 -0
  62. package/dist/index.d.ts +24 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +65 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/llm/GeminiProvider.d.ts +16 -0
  67. package/dist/llm/GeminiProvider.d.ts.map +1 -0
  68. package/dist/llm/GeminiProvider.js +248 -0
  69. package/dist/llm/GeminiProvider.js.map +1 -0
  70. package/dist/llm/index.d.ts +2 -0
  71. package/dist/llm/index.d.ts.map +1 -0
  72. package/dist/llm/index.js +6 -0
  73. package/dist/llm/index.js.map +1 -0
  74. package/dist/memory/ChatHistory.d.ts +83 -0
  75. package/dist/memory/ChatHistory.d.ts.map +1 -0
  76. package/dist/memory/ChatHistory.js +143 -0
  77. package/dist/memory/ChatHistory.js.map +1 -0
  78. package/dist/memory/KnowledgeBase.d.ts +38 -0
  79. package/dist/memory/KnowledgeBase.d.ts.map +1 -0
  80. package/dist/memory/KnowledgeBase.js +139 -0
  81. package/dist/memory/KnowledgeBase.js.map +1 -0
  82. package/dist/memory/Summarizer.d.ts +12 -0
  83. package/dist/memory/Summarizer.d.ts.map +1 -0
  84. package/dist/memory/Summarizer.js +39 -0
  85. package/dist/memory/Summarizer.js.map +1 -0
  86. package/dist/memory/UpstashKnowledgeBase.d.ts +124 -0
  87. package/dist/memory/UpstashKnowledgeBase.d.ts.map +1 -0
  88. package/dist/memory/UpstashKnowledgeBase.js +152 -0
  89. package/dist/memory/UpstashKnowledgeBase.js.map +1 -0
  90. package/dist/memory/historyUtils.d.ts +58 -0
  91. package/dist/memory/historyUtils.d.ts.map +1 -0
  92. package/dist/memory/historyUtils.js +190 -0
  93. package/dist/memory/historyUtils.js.map +1 -0
  94. package/dist/memory/index.d.ts +7 -0
  95. package/dist/memory/index.d.ts.map +1 -0
  96. package/dist/memory/index.js +12 -0
  97. package/dist/memory/index.js.map +1 -0
  98. package/dist/memory/ingestKnowledgeBase.d.ts +17 -0
  99. package/dist/memory/ingestKnowledgeBase.d.ts.map +1 -0
  100. package/dist/memory/ingestKnowledgeBase.js +35 -0
  101. package/dist/memory/ingestKnowledgeBase.js.map +1 -0
  102. package/dist/services/MoralisService.d.ts +1350 -0
  103. package/dist/services/MoralisService.d.ts.map +1 -0
  104. package/dist/services/MoralisService.js +1364 -0
  105. package/dist/services/MoralisService.js.map +1 -0
  106. package/dist/services/PantographService.d.ts +38 -0
  107. package/dist/services/PantographService.d.ts.map +1 -0
  108. package/dist/services/PantographService.js +199 -0
  109. package/dist/services/PantographService.js.map +1 -0
  110. package/dist/services/PoolService.d.ts +241 -0
  111. package/dist/services/PoolService.d.ts.map +1 -0
  112. package/dist/services/PoolService.js +507 -0
  113. package/dist/services/PoolService.js.map +1 -0
  114. package/dist/services/UniswapService.d.ts +289 -0
  115. package/dist/services/UniswapService.d.ts.map +1 -0
  116. package/dist/services/UniswapService.js +585 -0
  117. package/dist/services/UniswapService.js.map +1 -0
  118. package/dist/services/swap/BaseSwapService.d.ts +17 -0
  119. package/dist/services/swap/BaseSwapService.d.ts.map +1 -0
  120. package/dist/services/swap/BaseSwapService.js +19 -0
  121. package/dist/services/swap/BaseSwapService.js.map +1 -0
  122. package/dist/services/swap/DebridgeAdapter.d.ts +20 -0
  123. package/dist/services/swap/DebridgeAdapter.d.ts.map +1 -0
  124. package/dist/services/swap/DebridgeAdapter.js +175 -0
  125. package/dist/services/swap/DebridgeAdapter.js.map +1 -0
  126. package/dist/services/swap/RelayAdapter.d.ts +19 -0
  127. package/dist/services/swap/RelayAdapter.d.ts.map +1 -0
  128. package/dist/services/swap/RelayAdapter.js +189 -0
  129. package/dist/services/swap/RelayAdapter.js.map +1 -0
  130. package/dist/services/swap/SwapServiceFactory.d.ts +24 -0
  131. package/dist/services/swap/SwapServiceFactory.d.ts.map +1 -0
  132. package/dist/services/swap/SwapServiceFactory.js +74 -0
  133. package/dist/services/swap/SwapServiceFactory.js.map +1 -0
  134. package/dist/services/swap/addresses.d.ts +3 -0
  135. package/dist/services/swap/addresses.d.ts.map +1 -0
  136. package/dist/services/swap/addresses.js +68 -0
  137. package/dist/services/swap/addresses.js.map +1 -0
  138. package/dist/services/swap/affiliate.d.ts +17 -0
  139. package/dist/services/swap/affiliate.d.ts.map +1 -0
  140. package/dist/services/swap/affiliate.js +126 -0
  141. package/dist/services/swap/affiliate.js.map +1 -0
  142. package/dist/services/swap/config.d.ts +9 -0
  143. package/dist/services/swap/config.d.ts.map +1 -0
  144. package/dist/services/swap/config.js +19 -0
  145. package/dist/services/swap/config.js.map +1 -0
  146. package/dist/services/swap/index.d.ts +10 -0
  147. package/dist/services/swap/index.d.ts.map +1 -0
  148. package/dist/services/swap/index.js +22 -0
  149. package/dist/services/swap/index.js.map +1 -0
  150. package/dist/services/swap/types.d.ts +89 -0
  151. package/dist/services/swap/types.d.ts.map +1 -0
  152. package/dist/services/swap/types.js +6 -0
  153. package/dist/services/swap/types.js.map +1 -0
  154. package/dist/tools/BaseTool.d.ts +15 -0
  155. package/dist/tools/BaseTool.d.ts.map +1 -0
  156. package/dist/tools/BaseTool.js +35 -0
  157. package/dist/tools/BaseTool.js.map +1 -0
  158. package/dist/tools/ToolRegistry.d.ts +27 -0
  159. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  160. package/dist/tools/ToolRegistry.js +80 -0
  161. package/dist/tools/ToolRegistry.js.map +1 -0
  162. package/dist/tools/builtin/ai/MoralisCortexTool.d.ts +33 -0
  163. package/dist/tools/builtin/ai/MoralisCortexTool.d.ts.map +1 -0
  164. package/dist/tools/builtin/ai/MoralisCortexTool.js +76 -0
  165. package/dist/tools/builtin/ai/MoralisCortexTool.js.map +1 -0
  166. package/dist/tools/builtin/ai/SolanaCortexTool.d.ts +22 -0
  167. package/dist/tools/builtin/ai/SolanaCortexTool.d.ts.map +1 -0
  168. package/dist/tools/builtin/ai/SolanaCortexTool.js +80 -0
  169. package/dist/tools/builtin/ai/SolanaCortexTool.js.map +1 -0
  170. package/dist/tools/builtin/ai/index.d.ts +5 -0
  171. package/dist/tools/builtin/ai/index.d.ts.map +1 -0
  172. package/dist/tools/builtin/ai/index.js +8 -0
  173. package/dist/tools/builtin/ai/index.js.map +1 -0
  174. package/dist/tools/builtin/index.d.ts +6 -0
  175. package/dist/tools/builtin/index.d.ts.map +1 -0
  176. package/dist/tools/builtin/index.js +22 -0
  177. package/dist/tools/builtin/index.js.map +1 -0
  178. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts +21 -0
  179. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts.map +1 -0
  180. package/dist/tools/builtin/nft/NFTContractInfoTool.js +54 -0
  181. package/dist/tools/builtin/nft/NFTContractInfoTool.js.map +1 -0
  182. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts +121 -0
  183. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts.map +1 -0
  184. package/dist/tools/builtin/nft/NFTMetadataTool.js +159 -0
  185. package/dist/tools/builtin/nft/NFTMetadataTool.js.map +1 -0
  186. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts +82 -0
  187. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts.map +1 -0
  188. package/dist/tools/builtin/nft/WalletNFTsTool.js +172 -0
  189. package/dist/tools/builtin/nft/WalletNFTsTool.js.map +1 -0
  190. package/dist/tools/builtin/nft/index.d.ts +7 -0
  191. package/dist/tools/builtin/nft/index.d.ts.map +1 -0
  192. package/dist/tools/builtin/nft/index.js +10 -0
  193. package/dist/tools/builtin/nft/index.js.map +1 -0
  194. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts +124 -0
  195. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts.map +1 -0
  196. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js +235 -0
  197. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js.map +1 -0
  198. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts +127 -0
  199. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts.map +1 -0
  200. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js +517 -0
  201. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js.map +1 -0
  202. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts +127 -0
  203. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts.map +1 -0
  204. package/dist/tools/builtin/pool/PoolByAddressTool.js +237 -0
  205. package/dist/tools/builtin/pool/PoolByAddressTool.js.map +1 -0
  206. package/dist/tools/builtin/pool/PoolDetailTool.d.ts +127 -0
  207. package/dist/tools/builtin/pool/PoolDetailTool.d.ts.map +1 -0
  208. package/dist/tools/builtin/pool/PoolDetailTool.js +272 -0
  209. package/dist/tools/builtin/pool/PoolDetailTool.js.map +1 -0
  210. package/dist/tools/builtin/pool/PoolSearchTool.d.ts +50 -0
  211. package/dist/tools/builtin/pool/PoolSearchTool.d.ts.map +1 -0
  212. package/dist/tools/builtin/pool/PoolSearchTool.js +159 -0
  213. package/dist/tools/builtin/pool/PoolSearchTool.js.map +1 -0
  214. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts +123 -0
  215. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts.map +1 -0
  216. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js +380 -0
  217. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js.map +1 -0
  218. package/dist/tools/builtin/pool/TopPoolsTool.d.ts +68 -0
  219. package/dist/tools/builtin/pool/TopPoolsTool.d.ts.map +1 -0
  220. package/dist/tools/builtin/pool/TopPoolsTool.js +158 -0
  221. package/dist/tools/builtin/pool/TopPoolsTool.js.map +1 -0
  222. package/dist/tools/builtin/pool/index.d.ts +15 -0
  223. package/dist/tools/builtin/pool/index.d.ts.map +1 -0
  224. package/dist/tools/builtin/pool/index.js +18 -0
  225. package/dist/tools/builtin/pool/index.js.map +1 -0
  226. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts +71 -0
  227. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts.map +1 -0
  228. package/dist/tools/builtin/token/TokenAnalyticsTool.js +146 -0
  229. package/dist/tools/builtin/token/TokenAnalyticsTool.js.map +1 -0
  230. package/dist/tools/builtin/token/TokenHoldersTool.d.ts +81 -0
  231. package/dist/tools/builtin/token/TokenHoldersTool.d.ts.map +1 -0
  232. package/dist/tools/builtin/token/TokenHoldersTool.js +138 -0
  233. package/dist/tools/builtin/token/TokenHoldersTool.js.map +1 -0
  234. package/dist/tools/builtin/token/TokenInfoTool.d.ts +36 -0
  235. package/dist/tools/builtin/token/TokenInfoTool.d.ts.map +1 -0
  236. package/dist/tools/builtin/token/TokenInfoTool.js +163 -0
  237. package/dist/tools/builtin/token/TokenInfoTool.js.map +1 -0
  238. package/dist/tools/builtin/token/TokenScoreTool.d.ts +63 -0
  239. package/dist/tools/builtin/token/TokenScoreTool.d.ts.map +1 -0
  240. package/dist/tools/builtin/token/TokenScoreTool.js +147 -0
  241. package/dist/tools/builtin/token/TokenScoreTool.js.map +1 -0
  242. package/dist/tools/builtin/token/TopGainersTool.d.ts +46 -0
  243. package/dist/tools/builtin/token/TopGainersTool.d.ts.map +1 -0
  244. package/dist/tools/builtin/token/TopGainersTool.js +110 -0
  245. package/dist/tools/builtin/token/TopGainersTool.js.map +1 -0
  246. package/dist/tools/builtin/token/TopLosersTool.d.ts +66 -0
  247. package/dist/tools/builtin/token/TopLosersTool.d.ts.map +1 -0
  248. package/dist/tools/builtin/token/TopLosersTool.js +128 -0
  249. package/dist/tools/builtin/token/TopLosersTool.js.map +1 -0
  250. package/dist/tools/builtin/token/TrendingTokensTool.d.ts +39 -0
  251. package/dist/tools/builtin/token/TrendingTokensTool.d.ts.map +1 -0
  252. package/dist/tools/builtin/token/TrendingTokensTool.js +75 -0
  253. package/dist/tools/builtin/token/TrendingTokensTool.js.map +1 -0
  254. package/dist/tools/builtin/token/index.d.ts +15 -0
  255. package/dist/tools/builtin/token/index.d.ts.map +1 -0
  256. package/dist/tools/builtin/token/index.js +18 -0
  257. package/dist/tools/builtin/token/index.js.map +1 -0
  258. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts +70 -0
  259. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts.map +1 -0
  260. package/dist/tools/builtin/wallet/TransactionByHashTool.js +110 -0
  261. package/dist/tools/builtin/wallet/TransactionByHashTool.js.map +1 -0
  262. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts +107 -0
  263. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts.map +1 -0
  264. package/dist/tools/builtin/wallet/WalletApprovalsTool.js +163 -0
  265. package/dist/tools/builtin/wallet/WalletApprovalsTool.js.map +1 -0
  266. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts +61 -0
  267. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts.map +1 -0
  268. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js +99 -0
  269. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js.map +1 -0
  270. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts +68 -0
  271. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts.map +1 -0
  272. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js +114 -0
  273. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js.map +1 -0
  274. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts +50 -0
  275. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts.map +1 -0
  276. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js +79 -0
  277. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js.map +1 -0
  278. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts +31 -0
  279. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts.map +1 -0
  280. package/dist/tools/builtin/wallet/WalletHistoryTool.js +153 -0
  281. package/dist/tools/builtin/wallet/WalletHistoryTool.js.map +1 -0
  282. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts +44 -0
  283. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts.map +1 -0
  284. package/dist/tools/builtin/wallet/WalletNetWorthTool.js +122 -0
  285. package/dist/tools/builtin/wallet/WalletNetWorthTool.js.map +1 -0
  286. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts +86 -0
  287. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts.map +1 -0
  288. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js +264 -0
  289. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js.map +1 -0
  290. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts +43 -0
  291. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts.map +1 -0
  292. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js +88 -0
  293. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js.map +1 -0
  294. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts +43 -0
  295. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts.map +1 -0
  296. package/dist/tools/builtin/wallet/WalletPnlTool.js +174 -0
  297. package/dist/tools/builtin/wallet/WalletPnlTool.js.map +1 -0
  298. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts +35 -0
  299. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts.map +1 -0
  300. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js +67 -0
  301. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js.map +1 -0
  302. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts +109 -0
  303. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts.map +1 -0
  304. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js +353 -0
  305. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js.map +1 -0
  306. package/dist/tools/builtin/wallet/index.d.ts +25 -0
  307. package/dist/tools/builtin/wallet/index.d.ts.map +1 -0
  308. package/dist/tools/builtin/wallet/index.js +28 -0
  309. package/dist/tools/builtin/wallet/index.js.map +1 -0
  310. package/dist/tools/index.d.ts +4 -0
  311. package/dist/tools/index.d.ts.map +1 -0
  312. package/dist/tools/index.js +23 -0
  313. package/dist/tools/index.js.map +1 -0
  314. package/dist/types/index.d.ts +566 -0
  315. package/dist/types/index.d.ts.map +1 -0
  316. package/dist/types/index.js +6 -0
  317. package/dist/types/index.js.map +1 -0
  318. package/package.json +52 -0
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletNFTsTool = void 0;
4
+ const BaseTool_1 = require("../../BaseTool");
5
+ const MoralisService_1 = require("../../../services/MoralisService");
6
+ /**
7
+ * Tool: get-wallet-nfts
8
+ *
9
+ * Fetches NFTs owned by a wallet address via the Moralis EVM API
10
+ * `GET /{address}/nft`. Returns normalized metadata, media variants,
11
+ * collection info, and cursor-based pagination.
12
+ *
13
+ * Default page size is 10. Pass `cursor` from a previous response to
14
+ * fetch the next page.
15
+ */
16
+ class WalletNFTsTool extends BaseTool_1.BaseTool {
17
+ name = 'get-wallet-nfts';
18
+ description = 'Get NFTs owned by a wallet address, including metadata, images, and collection info. ' +
19
+ 'Use this when the user asks about: "my NFTs", "show my NFTs", "what NFTs do I own", ' +
20
+ '"NFT collection", or any wallet NFT query. ' +
21
+ 'Supports filtering by one or more NFT contract addresses (collections) and spam exclusion. ' +
22
+ 'Returns paginated results — default page size is 10, pass cursor to get the next page. ' +
23
+ 'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea.';
24
+ category = 'blockchain-data';
25
+ parameters = [
26
+ {
27
+ name: 'address',
28
+ type: 'string',
29
+ description: 'Wallet address to query (0x…). If omitted, uses the connected wallet from user context.',
30
+ required: false,
31
+ },
32
+ {
33
+ name: 'chain',
34
+ type: 'string',
35
+ description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
36
+ '"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
37
+ required: true,
38
+ },
39
+ {
40
+ name: 'contractAddresses',
41
+ type: 'array',
42
+ description: 'Filter by one or more NFT contract addresses (0x…). ' +
43
+ 'Use this to scope results to specific collections. Omit to return NFTs across all collections.',
44
+ required: false,
45
+ items: { type: 'string' },
46
+ },
47
+ {
48
+ name: 'excludeSpam',
49
+ type: 'boolean',
50
+ description: 'If true (default) hides NFTs flagged as spam by Moralis.',
51
+ required: false,
52
+ default: true,
53
+ },
54
+ {
55
+ name: 'includePrices',
56
+ type: 'boolean',
57
+ description: 'If true, include floor price and last sale data when available.',
58
+ required: false,
59
+ default: false,
60
+ },
61
+ {
62
+ name: 'limit',
63
+ type: 'number',
64
+ description: 'Page size (1-100, default 10).',
65
+ required: false,
66
+ default: 10,
67
+ },
68
+ {
69
+ name: 'cursor',
70
+ type: 'string',
71
+ description: 'Pagination cursor from a previous response. Pass to fetch the next page.',
72
+ required: false,
73
+ },
74
+ ];
75
+ service;
76
+ constructor(config) {
77
+ super();
78
+ this.service = new MoralisService_1.MoralisService(config);
79
+ }
80
+ async run(args, userContext) {
81
+ const address = args.address || userContext?.walletAddress || undefined;
82
+ const chain = args.chain || userContext?.chain || undefined;
83
+ if (!address) {
84
+ return { error: 'No wallet address available. Please connect a wallet or pass "address".' };
85
+ }
86
+ const rawLimit = typeof args.limit === 'number' ? args.limit : Number(args.limit);
87
+ const limit = Number.isFinite(rawLimit) && rawLimit > 0 ? Math.min(100, Math.floor(rawLimit)) : 10;
88
+ const excludeSpam = typeof args.excludeSpam === 'boolean' ? args.excludeSpam : true;
89
+ const includePrices = typeof args.includePrices === 'boolean' ? args.includePrices : false;
90
+ const cursor = typeof args.cursor === 'string' && args.cursor ? args.cursor : undefined;
91
+ const contractAddresses = Array.isArray(args.contractAddresses)
92
+ ? args.contractAddresses
93
+ .filter((c) => typeof c === 'string' && !!c)
94
+ .map((c) => c.trim())
95
+ : undefined;
96
+ const result = await this.service.getWalletNFTs({
97
+ address,
98
+ chain,
99
+ limit,
100
+ excludeSpam,
101
+ cursor,
102
+ tokenAddresses: contractAddresses,
103
+ includePrices,
104
+ });
105
+ if (!result.success) {
106
+ return { error: result.error || 'Failed to fetch NFTs' };
107
+ }
108
+ const rawNfts = result.data?.result ?? [];
109
+ const nfts = rawNfts.map((nft) => this.normalize(nft));
110
+ return {
111
+ walletAddress: address,
112
+ chain: chain || 'default',
113
+ filters: {
114
+ contractAddresses: contractAddresses && contractAddresses.length > 0 ? contractAddresses : null,
115
+ excludeSpam,
116
+ includePrices,
117
+ limit,
118
+ cursor: cursor ?? null,
119
+ },
120
+ pagination: {
121
+ cursor: result.data?.cursor ?? null,
122
+ pageSize: result.data?.page_size ?? limit,
123
+ page: result.data?.page ?? null,
124
+ hasMore: !!result.data?.cursor,
125
+ },
126
+ nftCount: nfts.length,
127
+ nfts,
128
+ };
129
+ }
130
+ normalize(nft) {
131
+ const meta = nft.normalized_metadata;
132
+ const mediaCollection = nft.media?.media_collection;
133
+ const attributes = Array.isArray(meta?.attributes)
134
+ ? meta.attributes.map((a) => ({
135
+ trait_type: a.trait_type,
136
+ value: String(a.value),
137
+ }))
138
+ : [];
139
+ return {
140
+ name: meta?.name ?? nft.name ?? null,
141
+ collectionName: nft.name ?? null,
142
+ symbol: nft.symbol ?? null,
143
+ tokenId: nft.token_id,
144
+ contractAddress: nft.token_address,
145
+ contractType: nft.contract_type,
146
+ amount: nft.amount,
147
+ ownerOf: nft.owner_of,
148
+ tokenHash: nft.token_hash,
149
+ tokenUri: nft.token_uri ?? null,
150
+ description: meta?.description ?? null,
151
+ image: meta?.image ?? nft.media?.original_media_url ?? null,
152
+ animationUrl: meta?.animation_url ?? null,
153
+ media: {
154
+ original: nft.media?.original_media_url,
155
+ low: mediaCollection?.low?.url,
156
+ medium: mediaCollection?.medium?.url,
157
+ high: mediaCollection?.high?.url,
158
+ mimetype: nft.media?.mimetype,
159
+ status: nft.media?.status,
160
+ },
161
+ attributes,
162
+ verifiedCollection: nft.verified_collection,
163
+ possibleSpam: nft.possible_spam,
164
+ collectionLogo: nft.collection_logo ?? null,
165
+ collectionBanner: nft.collection_banner_image ?? null,
166
+ blockNumber: nft.block_number,
167
+ blockNumberMinted: nft.block_number_minted,
168
+ };
169
+ }
170
+ }
171
+ exports.WalletNFTsTool = WalletNFTsTool;
172
+ //# sourceMappingURL=WalletNFTsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletNFTsTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/WalletNFTsTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { WalletNFTsTool } from './WalletNFTsTool';
2
+ export type { WalletNFTsToolConfig } from './WalletNFTsTool';
3
+ export { NFTContractInfoTool } from './NFTContractInfoTool';
4
+ export type { NFTContractInfoToolConfig } from './NFTContractInfoTool';
5
+ export { NFTMetadataTool } from './NFTMetadataTool';
6
+ export type { NFTMetadataToolConfig } from './NFTMetadataTool';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NFTMetadataTool = exports.NFTContractInfoTool = exports.WalletNFTsTool = void 0;
4
+ var WalletNFTsTool_1 = require("./WalletNFTsTool");
5
+ Object.defineProperty(exports, "WalletNFTsTool", { enumerable: true, get: function () { return WalletNFTsTool_1.WalletNFTsTool; } });
6
+ var NFTContractInfoTool_1 = require("./NFTContractInfoTool");
7
+ Object.defineProperty(exports, "NFTContractInfoTool", { enumerable: true, get: function () { return NFTContractInfoTool_1.NFTContractInfoTool; } });
8
+ var NFTMetadataTool_1 = require("./NFTMetadataTool");
9
+ Object.defineProperty(exports, "NFTMetadataTool", { enumerable: true, get: function () { return NFTMetadataTool_1.NFTMetadataTool; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
@@ -0,0 +1,124 @@
1
+ import { BaseTool } from '../../BaseTool';
2
+ import type { ToolParameter, UserContext } from '../../../types';
3
+ import { type UniswapServiceConfig } from '../../../services/UniswapService';
4
+ export type EstimatePoolYieldToolConfig = UniswapServiceConfig;
5
+ /**
6
+ * Yield formula (matches Uniswap UI's "estimated APR"):
7
+ * fees24h = volume24h × feeTier_decimal
8
+ * APR = (fees24h / TVL) × 365
9
+ * yield = deposit × APR / period
10
+ *
11
+ * Note: assumes full-range liquidity. Concentrated positions earn more when in
12
+ * range, zero when out of range. Does not account for impermanent loss.
13
+ */
14
+ interface YieldEstimate {
15
+ depositUsd: number;
16
+ aprPercent: number;
17
+ dailyUsd: number;
18
+ weeklyUsd: number;
19
+ monthlyUsd: number;
20
+ yearlyUsd: number;
21
+ }
22
+ export declare class EstimatePoolYieldTool extends BaseTool {
23
+ name: string;
24
+ description: string;
25
+ category: string;
26
+ parameters: ToolParameter[];
27
+ private service;
28
+ constructor(config?: EstimatePoolYieldToolConfig);
29
+ protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
30
+ error: string;
31
+ _instructions?: undefined;
32
+ reason?: undefined;
33
+ missing?: undefined;
34
+ candidates?: undefined;
35
+ pool?: undefined;
36
+ autoPickedReason?: undefined;
37
+ aprUnavailableReason?: undefined;
38
+ estimate?: undefined;
39
+ depositMode?: undefined;
40
+ disclaimer?: undefined;
41
+ } | {
42
+ _instructions: string;
43
+ reason: string;
44
+ missing: string[];
45
+ candidates: {
46
+ pair: string | undefined;
47
+ feeTierBps: number | undefined;
48
+ feeTierPercent: number | undefined;
49
+ volume24hUsd: number | undefined;
50
+ address: string | undefined;
51
+ }[];
52
+ error?: undefined;
53
+ pool?: undefined;
54
+ autoPickedReason?: undefined;
55
+ aprUnavailableReason?: undefined;
56
+ estimate?: undefined;
57
+ depositMode?: undefined;
58
+ disclaimer?: undefined;
59
+ } | {
60
+ _instructions: string;
61
+ pool: {
62
+ address: string | undefined;
63
+ pair: string | undefined;
64
+ feeTierBps: number | undefined;
65
+ feeTierPercent: number | undefined;
66
+ tvlUsd: number | undefined;
67
+ volume24hUsd: number | undefined;
68
+ fees24hUsd: number | undefined;
69
+ aprPercent: number | undefined;
70
+ chain: string;
71
+ token0: {
72
+ symbol: string | undefined;
73
+ } | undefined;
74
+ token1: {
75
+ symbol: string | undefined;
76
+ } | undefined;
77
+ };
78
+ autoPickedReason: string | undefined;
79
+ aprUnavailableReason: string;
80
+ error?: undefined;
81
+ reason?: undefined;
82
+ missing?: undefined;
83
+ candidates?: undefined;
84
+ estimate?: undefined;
85
+ depositMode?: undefined;
86
+ disclaimer?: undefined;
87
+ } | {
88
+ _instructions: string;
89
+ pool: {
90
+ address: string | undefined;
91
+ pair: string | undefined;
92
+ feeTierBps: number | undefined;
93
+ feeTierPercent: number | undefined;
94
+ tvlUsd: number | undefined;
95
+ volume24hUsd: number | undefined;
96
+ fees24hUsd: number | undefined;
97
+ aprPercent: number | undefined;
98
+ chain: string;
99
+ token0: {
100
+ symbol: string | undefined;
101
+ } | undefined;
102
+ token1: {
103
+ symbol: string | undefined;
104
+ } | undefined;
105
+ };
106
+ estimate: YieldEstimate;
107
+ depositMode: string;
108
+ autoPickedReason: string | undefined;
109
+ disclaimer: string;
110
+ error?: undefined;
111
+ reason?: undefined;
112
+ missing?: undefined;
113
+ candidates?: undefined;
114
+ aprUnavailableReason?: undefined;
115
+ }>;
116
+ private filterPools;
117
+ private sym;
118
+ private rankByVolume;
119
+ /** Keep the highest-volume pool per fee tier — useful when the same pair has duplicates across protocols. */
120
+ private dedupeByFeeTier;
121
+ private describeQuery;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=EstimatePoolYieldTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EstimatePoolYieldTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/EstimatePoolYieldTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAkB,KAAK,oBAAoB,EAAyB,MAAM,kCAAkC,CAAC;AAEpH,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAM/D;;;;;;;;GAQG;AAEH,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,IAAI,SAAyB;IAC7B,WAAW,SAauE;IAElF,QAAQ,SAAqB;IAE7B,UAAU,EAAE,aAAa,EAAE,CAsCzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,2BAA2B;cAKhC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4I5E,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,YAAY;IAIpB,6GAA6G;IAC7G,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;CAItB"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EstimatePoolYieldTool = void 0;
4
+ const BaseTool_1 = require("../../BaseTool");
5
+ const UniswapService_1 = require("../../../services/UniswapService");
6
+ const DAYS_PER_YEAR = 365;
7
+ const DEFAULT_DEPOSIT_USD = 1000;
8
+ const EVM_ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
9
+ function computeYield(depositUsd, aprDecimal) {
10
+ return {
11
+ depositUsd,
12
+ aprPercent: aprDecimal * 100,
13
+ dailyUsd: (depositUsd * aprDecimal) / DAYS_PER_YEAR,
14
+ weeklyUsd: (depositUsd * aprDecimal) / 52,
15
+ monthlyUsd: (depositUsd * aprDecimal) / 12,
16
+ yearlyUsd: depositUsd * aprDecimal,
17
+ };
18
+ }
19
+ class EstimatePoolYieldTool extends BaseTool_1.BaseTool {
20
+ name = 'estimate_pool_yield';
21
+ description = 'Estimate daily / weekly / monthly / yearly fee yield for a USD deposit into a Uniswap V3 pool. ' +
22
+ 'Answers questions like: "If I put $1000 into the USDC/WETH 0.05% pool, how much per day?", ' +
23
+ '"bỏ 500$ vào pool ETH/USDC 0.3% mỗi ngày lời bao nhiêu?", "APR of WBTC/ETH 0.3% on Arbitrum". ' +
24
+ 'BEHAVIOR (designed to minimize back-and-forth with the user):\n' +
25
+ ' • If only ONE token symbol is given → auto-pick the highest-volume V3 pool containing that token and compute yield. ' +
26
+ 'Do NOT ask the user for the other token.\n' +
27
+ ' • If BOTH tokens are given but fee tier is missing AND multiple fee tiers exist → return candidates (one per fee tier) ' +
28
+ 'so the agent can ask the user to pick.\n' +
29
+ ' • If depositUsd is missing → default to $1000 and clearly mark the result as a per-$1000 example. ' +
30
+ 'Do NOT ask the user for the deposit amount.\n' +
31
+ ' • If chain is missing → default to userContext.chain or "0x1" (Ethereum).\n' +
32
+ 'Source: Uniswap ExploreStats (live 24h data). ' +
33
+ 'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea.';
34
+ category = 'blockchain-data';
35
+ parameters = [
36
+ {
37
+ name: 'token0Symbol',
38
+ type: 'string',
39
+ description: 'Symbol of one of the pool tokens (e.g. "USDC"). Pair order does not matter.',
40
+ required: true,
41
+ },
42
+ {
43
+ name: 'token1Symbol',
44
+ type: 'string',
45
+ description: 'Symbol of the other pool token (e.g. "WETH"). ' +
46
+ 'Optional — if omitted, the tool auto-picks the highest-volume pool containing token0Symbol.',
47
+ required: false,
48
+ },
49
+ {
50
+ name: 'feeTier',
51
+ type: 'number',
52
+ description: 'Fee tier in basis points: 100 = 0.01%, 500 = 0.05%, 3000 = 0.30%, 10000 = 1.00%. ' +
53
+ 'Optional — if omitted and the pair has multiple fee tiers, the tool returns candidates.',
54
+ required: false,
55
+ },
56
+ {
57
+ name: 'depositUsd',
58
+ type: 'number',
59
+ description: 'USD amount to deposit. Optional — defaults to 1000 and the response is marked as a per-$1000 example.',
60
+ required: false,
61
+ },
62
+ {
63
+ name: 'chain',
64
+ type: 'string',
65
+ description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
66
+ '"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
67
+ required: true,
68
+ },
69
+ ];
70
+ service;
71
+ constructor(config) {
72
+ super();
73
+ this.service = new UniswapService_1.UniswapService(config);
74
+ }
75
+ async run(args, userContext) {
76
+ const chain = typeof args.chain === 'string' && args.chain.trim() ? args.chain.trim() : userContext?.chain || '0x1';
77
+ const token0Symbol = typeof args.token0Symbol === 'string' ? args.token0Symbol.trim() : '';
78
+ const token1Symbol = typeof args.token1Symbol === 'string' ? args.token1Symbol.trim() : '';
79
+ const feeTier = typeof args.feeTier === 'number' && Number.isFinite(args.feeTier) ? Math.floor(args.feeTier) : undefined;
80
+ const userProvidedDeposit = typeof args.depositUsd === 'number' && Number.isFinite(args.depositUsd) && args.depositUsd > 0;
81
+ const depositUsd = userProvidedDeposit ? args.depositUsd : DEFAULT_DEPOSIT_USD;
82
+ if (!token0Symbol) {
83
+ return { error: 'token0Symbol is required. Ask the user which pool / token they want to estimate yield for.' };
84
+ }
85
+ const searchQuery = token1Symbol ? `${token0Symbol} ${token1Symbol}` : token0Symbol;
86
+ const search = await this.service.searchPools({
87
+ query: searchQuery,
88
+ chain,
89
+ page: 1,
90
+ size: 50,
91
+ protocolVersion: 'V3',
92
+ });
93
+ if (!search.success)
94
+ return { error: search.error || 'Pool search failed' };
95
+ const all = search.data ?? [];
96
+ const matched = this.filterPools(all, token0Symbol, token1Symbol, feeTier);
97
+ if (matched.length === 0) {
98
+ return {
99
+ error: `No V3 pool found for ${this.describeQuery(token0Symbol, token1Symbol, feeTier)} on chain ${chain}. ` +
100
+ 'Verify the token symbols with the user.',
101
+ };
102
+ }
103
+ const ranked = this.rankByVolume(matched);
104
+ // Disambiguation: ONLY when BOTH symbols are given but feeTier is missing
105
+ // AND there are multiple distinct fee tiers. In every other case we pick
106
+ // the top pool automatically — this is what makes the UX feel natural.
107
+ if (token1Symbol && feeTier == null) {
108
+ const distinctFeeTiers = new Set(ranked.map((p) => p.feeTier).filter((f) => typeof f === 'number'));
109
+ if (distinctFeeTiers.size > 1) {
110
+ const candidates = this.dedupeByFeeTier(ranked).slice(0, 5);
111
+ return {
112
+ _instructions: 'The pair has multiple fee tiers. Present them as a short numbered list (fee tier %, 24h volume). ' +
113
+ 'Ask which fee tier the user wants, then re-call with the same token symbols + chosen feeTier. ' +
114
+ 'If the user already mentioned a deposit amount, pass it along as depositUsd. ' +
115
+ 'Do NOT mention tool names. Format numbers human-readably (e.g. $12.5M, 0.05%).',
116
+ reason: `${token0Symbol}/${token1Symbol} exists across multiple fee tiers — user choice required.`,
117
+ missing: ['feeTier'],
118
+ candidates: candidates.map((p) => ({
119
+ pair: p.token0?.symbol && p.token1?.symbol ? `${p.token0.symbol}/${p.token1.symbol}` : undefined,
120
+ feeTierBps: p.feeTier,
121
+ feeTierPercent: typeof p.feeTier === 'number' ? p.feeTier / 10_000 : undefined,
122
+ volume24hUsd: p.volumeUsd24hr,
123
+ address: p.id,
124
+ })),
125
+ };
126
+ }
127
+ }
128
+ // Auto-pick: highest-volume pool from the filtered set.
129
+ const chosen = ranked[0];
130
+ if (!chosen.id || !EVM_ADDRESS_RE.test(chosen.id)) {
131
+ return { error: 'Resolved pool has no valid address.' };
132
+ }
133
+ const detail = await this.service.getV3PoolDetail({ address: chosen.id, chain });
134
+ if (!detail.success || !detail.data) {
135
+ return { error: detail.error || 'Failed to fetch pool detail.' };
136
+ }
137
+ const pool = detail.data;
138
+ const tvlUsd = pool.totalLiquidity?.value;
139
+ const volume24hUsd = pool.volume24h?.value;
140
+ const feeTierBps = pool.feeTier;
141
+ const feeTierPercent = typeof feeTierBps === 'number' ? feeTierBps / 10_000 : undefined;
142
+ const fees24hUsd = typeof volume24hUsd === 'number' && typeof feeTierPercent === 'number'
143
+ ? (volume24hUsd * feeTierPercent) / 100
144
+ : undefined;
145
+ const aprDecimal = typeof fees24hUsd === 'number' && typeof tvlUsd === 'number' && tvlUsd > 0
146
+ ? (fees24hUsd / tvlUsd) * DAYS_PER_YEAR
147
+ : undefined;
148
+ const poolSummary = {
149
+ address: pool.address,
150
+ pair: pool.token0?.symbol && pool.token1?.symbol ? `${pool.token0.symbol}/${pool.token1.symbol}` : undefined,
151
+ feeTierBps,
152
+ feeTierPercent,
153
+ tvlUsd,
154
+ volume24hUsd,
155
+ fees24hUsd,
156
+ aprPercent: typeof aprDecimal === 'number' ? aprDecimal * 100 : undefined,
157
+ chain,
158
+ token0: pool.token0 ? { symbol: pool.token0.symbol } : undefined,
159
+ token1: pool.token1 ? { symbol: pool.token1.symbol } : undefined,
160
+ };
161
+ const autoPickedReason = !token1Symbol
162
+ ? `User only provided ${token0Symbol}; auto-picked the highest-volume V3 pool containing it.`
163
+ : undefined;
164
+ if (aprDecimal == null) {
165
+ return {
166
+ _instructions: 'Pool APR could not be computed (TVL or volume data unavailable). Inform the user briefly and show TVL/volume if present. ' +
167
+ 'Do NOT mention tool names.',
168
+ pool: poolSummary,
169
+ autoPickedReason,
170
+ aprUnavailableReason: !tvlUsd ? 'TVL is zero or unavailable' : 'Volume data unavailable',
171
+ };
172
+ }
173
+ const estimate = computeYield(depositUsd, aprDecimal);
174
+ return {
175
+ _instructions: "Present the yield estimate naturally in the user's language. " +
176
+ (userProvidedDeposit
177
+ ? "Lead with: pool (pair + fee %), chain, APR %. Then show projected earnings for the user's deposit — daily, weekly, monthly, yearly. "
178
+ : 'IMPORTANT: depositUsd was NOT specified by the user — the result is a per-$1000 EXAMPLE. ' +
179
+ 'Lead with: pool (pair + fee %), chain, APR %. Then say "for every $1000 deposited you would earn approximately:" and list daily / weekly / monthly / yearly. ' +
180
+ 'End with a short note that the user can multiply these numbers by (their deposit / 1000) for a custom amount. ') +
181
+ (autoPickedReason
182
+ ? 'Mention briefly that you picked the highest-volume pool for this token (do NOT say "auto-picked"). '
183
+ : '') +
184
+ 'Add a one-line disclaimer about impermanent loss. ' +
185
+ 'Format USD numbers with 2 decimal places (e.g. $3.45/day). Do NOT mention tool names.',
186
+ pool: poolSummary,
187
+ estimate,
188
+ depositMode: userProvidedDeposit ? 'user-specified' : 'default-1000-example',
189
+ autoPickedReason,
190
+ disclaimer: "Fee yield is based on the pool's 24h volume snapshot and assumes full-range liquidity. Actual returns vary with price movement, volume changes, and impermanent loss.",
191
+ };
192
+ }
193
+ filterPools(pools, sym0, sym1, fee) {
194
+ const x = sym0.toLowerCase();
195
+ const y = sym1 ? sym1.toLowerCase() : '';
196
+ return pools.filter((p) => {
197
+ if (fee != null && p.feeTier !== fee)
198
+ return false;
199
+ const a = (p.token0?.symbol ?? '').toLowerCase();
200
+ const b = (p.token1?.symbol ?? '').toLowerCase();
201
+ if (y) {
202
+ return (this.sym(a, x) && this.sym(b, y)) || (this.sym(a, y) && this.sym(b, x));
203
+ }
204
+ return this.sym(a, x) || this.sym(b, x);
205
+ });
206
+ }
207
+ sym(poolSym, userSym) {
208
+ if (!poolSym || !userSym)
209
+ return false;
210
+ return poolSym.includes(userSym) || userSym.includes(poolSym);
211
+ }
212
+ rankByVolume(pools) {
213
+ return [...pools].sort((a, b) => (b.volumeUsd24hr ?? 0) - (a.volumeUsd24hr ?? 0));
214
+ }
215
+ /** Keep the highest-volume pool per fee tier — useful when the same pair has duplicates across protocols. */
216
+ dedupeByFeeTier(pools) {
217
+ const seen = new Set();
218
+ const out = [];
219
+ for (const p of pools) {
220
+ if (typeof p.feeTier !== 'number')
221
+ continue;
222
+ if (seen.has(p.feeTier))
223
+ continue;
224
+ seen.add(p.feeTier);
225
+ out.push(p);
226
+ }
227
+ return out;
228
+ }
229
+ describeQuery(sym0, sym1, fee) {
230
+ const pair = sym1 ? `${sym0}/${sym1}` : sym0;
231
+ return fee != null ? `${pair} at ${fee} bps` : pair;
232
+ }
233
+ }
234
+ exports.EstimatePoolYieldTool = EstimatePoolYieldTool;
235
+ //# sourceMappingURL=EstimatePoolYieldTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EstimatePoolYieldTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/pool/EstimatePoolYieldTool.ts"],"names":[],"mappings":"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"}