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 @@
1
+ {"version":3,"file":"SolanaCortexTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/ai/SolanaCortexTool.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,EAAE,MAAM,kCAAkC,CAAC;AAE7F,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAoB1D,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,IAAI,SAAsB;IAC1B,WAAW,SAS6C;IACxD,QAAQ,SAAmB;IAC3B,UAAU,EAAE,aAAa,EAAE,CAgBzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,sBAAsB;cAK3B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;CA2B7E"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolanaCortexTool = void 0;
4
+ const BaseTool_1 = require("../../BaseTool");
5
+ const MoralisService_1 = require("../../../services/MoralisService");
6
+ const SOLANA_SYSTEM_PROMPT = `You are a Solana blockchain data specialist with real-time on-chain access.
7
+
8
+ Your expertise covers:
9
+ - Native SOL and SPL token balances, transfers, prices
10
+ - Solana NFTs (Metaplex standard, compressed NFTs / cNFTs)
11
+ - Solana DeFi: Jupiter, Raydium, Orca, Marinade, Jito, etc.
12
+ - Solana wallet history, transactions, staking, validators
13
+ - Token metadata, collection info, rarity
14
+ - Solana program interactions and decoded instructions
15
+
16
+ Rules:
17
+ - Always use accurate, current on-chain data.
18
+ - When returning lists (tokens, NFTs, transactions), structure them clearly.
19
+ - Express SOL amounts with 9 decimal places (lamports base unit).
20
+ - For USD values, use current market prices.
21
+ - If data is unavailable or the address has no activity, say so explicitly.
22
+ - Be concise but complete — cover all aspects the user asked about.`;
23
+ class SolanaCortexTool extends BaseTool_1.BaseTool {
24
+ name = 'solana-cortex-ai';
25
+ description = 'Specialized AI tool for all Solana blockchain questions. ' +
26
+ 'Use this tool when: (1) the user is connected to Solana chain (0x736f6c), ' +
27
+ '(2) the user provides a Solana wallet address (base58, not 0x…), ' +
28
+ '(3) the user asks about SOL, SPL tokens, Solana NFTs, Solana DeFi (Jupiter, Raydium, Orca, Marinade, Jito), ' +
29
+ 'Solana staking, validators, or any Solana-specific topic. ' +
30
+ 'The "prompt" parameter must be a precise, self-contained English question crafted from the user query ' +
31
+ 'including all relevant context (wallet address, token names, time range, etc.). ' +
32
+ 'Examples: token/SOL balances on a Solana address, Solana NFT holdings, Solana transaction history, ' +
33
+ 'SPL token price or metadata, Solana DeFi positions.';
34
+ category = 'blockchain-ai';
35
+ parameters = [
36
+ {
37
+ name: 'prompt',
38
+ type: 'string',
39
+ description: 'A precise, self-contained English question for the Solana AI. ' +
40
+ 'Include all relevant details: wallet address (if applicable), token name/mint, time range, chain context. ' +
41
+ 'Example: "What are the current SOL and SPL token balances for wallet EaQEsLPoV9Hy12C5nARZvTLATSVUecgR3VxfoB8WxbWd on Solana?"',
42
+ required: true,
43
+ },
44
+ {
45
+ name: 'address',
46
+ type: 'string',
47
+ description: 'Solana wallet address (base58). If omitted, uses the connected wallet from user context.',
48
+ required: false,
49
+ },
50
+ ];
51
+ service;
52
+ constructor(config) {
53
+ super();
54
+ this.service = new MoralisService_1.MoralisService(config);
55
+ }
56
+ async run(args, userContext) {
57
+ const prompt = args.prompt;
58
+ if (!prompt) {
59
+ return { error: 'Missing required parameter: prompt' };
60
+ }
61
+ const address = args.address || userContext?.walletAddress || null;
62
+ const contextLines = [];
63
+ if (address)
64
+ contextLines.push(`Solana wallet address: ${address}`);
65
+ const enrichedPrompt = contextLines.length > 0 ? `${contextLines.join('\n')}\n\n${prompt}` : prompt;
66
+ const result = await this.service.chatWithCortex({
67
+ prompt: enrichedPrompt,
68
+ systemPrompt: SOLANA_SYSTEM_PROMPT,
69
+ });
70
+ if (!result.success) {
71
+ return { error: result.error || 'Solana Cortex AI request failed' };
72
+ }
73
+ return {
74
+ source: 'solana-cortex-ai',
75
+ answer: result.data?.text || '',
76
+ };
77
+ }
78
+ }
79
+ exports.SolanaCortexTool = SolanaCortexTool;
80
+ //# sourceMappingURL=SolanaCortexTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolanaCortexTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/ai/SolanaCortexTool.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,qEAA6F;AAI7F,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;oEAgBuC,CAAC;AAErE,MAAa,gBAAiB,SAAQ,mBAAQ;IAC5C,IAAI,GAAG,kBAAkB,CAAC;IAC1B,WAAW,GACT,2DAA2D;QAC3D,4EAA4E;QAC5E,mEAAmE;QACnE,8GAA8G;QAC9G,4DAA4D;QAC5D,wGAAwG;QACxG,kFAAkF;QAClF,qGAAqG;QACrG,qDAAqD,CAAC;IACxD,QAAQ,GAAG,eAAe,CAAC;IAC3B,UAAU,GAAoB;QAC5B;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,gEAAgE;gBAChE,4GAA4G;gBAC5G,+HAA+H;YACjI,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0FAA0F;YACvG,QAAQ,EAAE,KAAK;SAChB;KACF,CAAC;IAEM,OAAO,CAAiB;IAEhC,YAAY,MAA+B;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAES,KAAK,CAAC,GAAG,CAAC,IAA6B,EAAE,WAAyB;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,WAAW,EAAE,aAAa,IAAI,IAAI,CAAC;QAE/E,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,YAAY,CAAC,IAAI,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAC/C,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,oBAAoB;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,iCAAiC,EAAE,CAAC;QACtE,CAAC;QAED,OAAO;YACL,MAAM,EAAE,kBAAkB;YAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;CACF;AAjED,4CAiEC"}
@@ -0,0 +1,5 @@
1
+ export { MoralisCortexTool } from './MoralisCortexTool';
2
+ export type { MoralisCortexToolConfig } from './MoralisCortexTool';
3
+ export { SolanaCortexTool } from './SolanaCortexTool';
4
+ export type { SolanaCortexToolConfig } from './SolanaCortexTool';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolanaCortexTool = exports.MoralisCortexTool = void 0;
4
+ var MoralisCortexTool_1 = require("./MoralisCortexTool");
5
+ Object.defineProperty(exports, "MoralisCortexTool", { enumerable: true, get: function () { return MoralisCortexTool_1.MoralisCortexTool; } });
6
+ var SolanaCortexTool_1 = require("./SolanaCortexTool");
7
+ Object.defineProperty(exports, "SolanaCortexTool", { enumerable: true, get: function () { return SolanaCortexTool_1.SolanaCortexTool; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/builtin/ai/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './token';
2
+ export * from './wallet';
3
+ export * from './nft';
4
+ export * from './ai';
5
+ export * from './pool';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./token"), exports);
18
+ __exportStar(require("./wallet"), exports);
19
+ __exportStar(require("./nft"), exports);
20
+ __exportStar(require("./ai"), exports);
21
+ __exportStar(require("./pool"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,wCAAsB;AACtB,uCAAqB;AACrB,yCAAuB"}
@@ -0,0 +1,21 @@
1
+ import { BaseTool } from '../../BaseTool';
2
+ import type { ToolParameter, UserContext } from '../../../types';
3
+ import { type MoralisServiceConfig } from '../../../services/MoralisService';
4
+ export type NFTContractInfoToolConfig = MoralisServiceConfig;
5
+ /**
6
+ * Tool: get-nft-contract-info
7
+ *
8
+ * Fetches metadata for an NFT contract (name, symbol, type) via Moralis EVM API.
9
+ */
10
+ export declare class NFTContractInfoTool extends BaseTool {
11
+ name: string;
12
+ description: string;
13
+ category: string;
14
+ parameters: ToolParameter[];
15
+ private service;
16
+ constructor(config?: NFTContractInfoToolConfig);
17
+ protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<import("../../../services/MoralisService").NFTContractMetadata | {
18
+ error: string;
19
+ } | undefined>;
20
+ }
21
+ //# sourceMappingURL=NFTContractInfoTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NFTContractInfoTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/NFTContractInfoTool.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,EAAE,MAAM,kCAAkC,CAAC;AAE7F,MAAM,MAAM,yBAAyB,GAAG,oBAAoB,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,IAAI,SAA2B;IAC/B,WAAW,SAGsE;IACjF,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAezB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,yBAAyB;cAK9B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;CAmB7E"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NFTContractInfoTool = void 0;
4
+ const BaseTool_1 = require("../../BaseTool");
5
+ const MoralisService_1 = require("../../../services/MoralisService");
6
+ /**
7
+ * Tool: get-nft-contract-info
8
+ *
9
+ * Fetches metadata for an NFT contract (name, symbol, type) via Moralis EVM API.
10
+ */
11
+ class NFTContractInfoTool extends BaseTool_1.BaseTool {
12
+ name = 'get-nft-contract-info';
13
+ description = 'Get metadata for an NFT collection/contract: name, symbol, and contract type (ERC721/ERC1155). ' +
14
+ 'Use this when the user asks about a specific NFT collection or contract address. ' +
15
+ 'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea';
16
+ category = 'blockchain-data';
17
+ parameters = [
18
+ {
19
+ name: 'contractAddress',
20
+ type: 'string',
21
+ description: 'NFT contract address (0x…).',
22
+ required: true,
23
+ },
24
+ {
25
+ name: 'chain',
26
+ type: 'string',
27
+ description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
28
+ '"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea . Defaults to connected chain.',
29
+ required: true,
30
+ },
31
+ ];
32
+ service;
33
+ constructor(config) {
34
+ super();
35
+ this.service = new MoralisService_1.MoralisService(config);
36
+ }
37
+ async run(args, userContext) {
38
+ const contractAddress = args.contractAddress;
39
+ const chain = args.chain || userContext?.chain || undefined;
40
+ if (!contractAddress) {
41
+ return { error: 'NFT contract address is required.' };
42
+ }
43
+ const result = await this.service.getNftContractMetadata({
44
+ address: contractAddress,
45
+ chain,
46
+ });
47
+ if (!result.success) {
48
+ return { error: result.error || 'Failed to fetch NFT contract metadata' };
49
+ }
50
+ return result.data;
51
+ }
52
+ }
53
+ exports.NFTContractInfoTool = NFTContractInfoTool;
54
+ //# sourceMappingURL=NFTContractInfoTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NFTContractInfoTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/NFTContractInfoTool.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,qEAA6F;AAI7F;;;;GAIG;AACH,MAAa,mBAAoB,SAAQ,mBAAQ;IAC/C,IAAI,GAAG,uBAAuB,CAAC;IAC/B,WAAW,GACT,iGAAiG;QACjG,mFAAmF;QACnF,8EAA8E,CAAC;IACjF,QAAQ,GAAG,iBAAiB,CAAC;IAC7B,UAAU,GAAoB;QAC5B;YACE,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,2FAA2F;gBAC3F,sFAAsF;YACxF,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IAEM,OAAO,CAAiB;IAEhC,YAAY,MAAkC;QAC5C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAES,KAAK,CAAC,GAAG,CAAC,IAA6B,EAAE,WAAyB;QAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,eAAyB,CAAC;QACvD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS,CAAC;QAExE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACvD,OAAO,EAAE,eAAe;YACxB,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,uCAAuC,EAAE,CAAC;QAC5E,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;CACF;AAlDD,kDAkDC"}
@@ -0,0 +1,121 @@
1
+ import { BaseTool } from '../../BaseTool';
2
+ import type { ToolParameter, UserContext } from '../../../types';
3
+ import { type MoralisServiceConfig } from '../../../services/MoralisService';
4
+ export type NFTMetadataToolConfig = MoralisServiceConfig;
5
+ /**
6
+ * Tool: get-nft-metadata
7
+ *
8
+ * Fetches full metadata for a single NFT identified by its contract address
9
+ * and token id via the Moralis EVM `GET /nft/{address}/{token_id}` endpoint.
10
+ *
11
+ * Moralis docs: https://docs.moralis.com/data-api/evm/nft/metadata/nft-metadata
12
+ */
13
+ export declare class NFTMetadataTool extends BaseTool {
14
+ name: string;
15
+ description: string;
16
+ category: string;
17
+ parameters: ToolParameter[];
18
+ private service;
19
+ constructor(config?: NFTMetadataToolConfig);
20
+ protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
21
+ error: string;
22
+ chain?: undefined;
23
+ contractAddress?: undefined;
24
+ tokenId?: undefined;
25
+ contractType?: undefined;
26
+ amount?: undefined;
27
+ owner?: undefined;
28
+ minter?: undefined;
29
+ blockNumber?: undefined;
30
+ blockNumberMinted?: undefined;
31
+ tokenHash?: undefined;
32
+ name?: undefined;
33
+ description?: undefined;
34
+ image?: undefined;
35
+ animationUrl?: undefined;
36
+ attributes?: undefined;
37
+ tokenUri?: undefined;
38
+ metadata?: undefined;
39
+ collection?: undefined;
40
+ media?: undefined;
41
+ floorPrice?: undefined;
42
+ floorPriceUsd?: undefined;
43
+ floorPriceCurrency?: undefined;
44
+ rarityRank?: undefined;
45
+ rarityPercentage?: undefined;
46
+ rarityLabel?: undefined;
47
+ verifiedCollection?: undefined;
48
+ possibleSpam?: undefined;
49
+ lastMetadataSync?: undefined;
50
+ lastTokenUriSync?: undefined;
51
+ } | {
52
+ chain: string | undefined;
53
+ contractAddress: string;
54
+ tokenId: string;
55
+ contractType: "ERC721" | "ERC1155";
56
+ amount: string;
57
+ owner: string;
58
+ minter: string | undefined;
59
+ blockNumber: string;
60
+ blockNumberMinted: string;
61
+ tokenHash: string;
62
+ name: string;
63
+ description: string | undefined;
64
+ image: string | undefined;
65
+ animationUrl: string | undefined;
66
+ attributes: {
67
+ trait_type: string;
68
+ value: string;
69
+ }[] | undefined;
70
+ tokenUri: string | undefined;
71
+ metadata: string | undefined;
72
+ collection: {
73
+ name: string;
74
+ symbol: string;
75
+ logo: string | undefined;
76
+ banner: string | undefined;
77
+ category: string | undefined;
78
+ projectUrl: string | undefined;
79
+ wikiUrl: string | undefined;
80
+ discordUrl: string | undefined;
81
+ telegramUrl: string | undefined;
82
+ twitter: string | undefined;
83
+ instagram: string | undefined;
84
+ };
85
+ media: {
86
+ mimetype: string | undefined;
87
+ status: string | undefined;
88
+ originalUrl: string | undefined;
89
+ previews: {
90
+ low?: {
91
+ url: string;
92
+ width: number;
93
+ height: number;
94
+ };
95
+ medium?: {
96
+ url: string;
97
+ width: number;
98
+ height: number;
99
+ };
100
+ high?: {
101
+ url: string;
102
+ width: number;
103
+ height: number;
104
+ };
105
+ } | undefined;
106
+ updatedAt: string | undefined;
107
+ } | undefined;
108
+ floorPrice: string | undefined;
109
+ floorPriceUsd: string | undefined;
110
+ floorPriceCurrency: string | undefined;
111
+ rarityRank: number | undefined;
112
+ rarityPercentage: number | undefined;
113
+ rarityLabel: string | undefined;
114
+ verifiedCollection: boolean;
115
+ possibleSpam: boolean;
116
+ lastMetadataSync: string | undefined;
117
+ lastTokenUriSync: string | undefined;
118
+ error?: undefined;
119
+ }>;
120
+ }
121
+ //# sourceMappingURL=NFTMetadataTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NFTMetadataTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/NFTMetadataTool.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,EAAE,MAAM,kCAAkC,CAAC;AAE7F,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEzD;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,IAAI,SAAsB;IAC1B,WAAW,SAMuF;IAClG,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CA+CzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,qBAAqB;cAK1B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0F7E"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NFTMetadataTool = void 0;
4
+ const BaseTool_1 = require("../../BaseTool");
5
+ const MoralisService_1 = require("../../../services/MoralisService");
6
+ /**
7
+ * Tool: get-nft-metadata
8
+ *
9
+ * Fetches full metadata for a single NFT identified by its contract address
10
+ * and token id via the Moralis EVM `GET /nft/{address}/{token_id}` endpoint.
11
+ *
12
+ * Moralis docs: https://docs.moralis.com/data-api/evm/nft/metadata/nft-metadata
13
+ */
14
+ class NFTMetadataTool extends BaseTool_1.BaseTool {
15
+ name = 'get-nft-metadata';
16
+ description = 'Get the full metadata for a specific NFT by its contract address and token ID: ' +
17
+ 'name, description, image, attributes/traits, media variants, collection info, ' +
18
+ 'floor price, rarity rank, owner, mint block, and sync timestamps. ' +
19
+ 'Use this when the user asks about a specific NFT, e.g. "show NFT #1234 of collection X", ' +
20
+ '"details of token ID 42 in contract 0x…", "traits of this NFT", or "floor price of this NFT". ' +
21
+ 'Only supports EVM chains: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea.';
22
+ category = 'blockchain-data';
23
+ parameters = [
24
+ {
25
+ name: 'contractAddress',
26
+ type: 'string',
27
+ description: 'NFT contract address (0x…). The collection / contract that mints the token.',
28
+ required: true,
29
+ },
30
+ {
31
+ name: 'tokenId',
32
+ type: 'string',
33
+ description: 'The NFT token ID to look up (as a string, in the format specified by the "format" parameter).',
34
+ required: true,
35
+ },
36
+ {
37
+ name: 'chain',
38
+ type: 'string',
39
+ description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
40
+ '"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
41
+ required: true,
42
+ },
43
+ {
44
+ name: 'format',
45
+ type: 'string',
46
+ description: 'Format of the provided token ID: "decimal" (default) or "hex".',
47
+ required: false,
48
+ },
49
+ {
50
+ name: 'normalizeMetadata',
51
+ type: 'boolean',
52
+ description: 'Whether Moralis should return a normalized metadata object (name/description/image/attributes). Default: true.',
53
+ required: false,
54
+ },
55
+ {
56
+ name: 'mediaItems',
57
+ type: 'boolean',
58
+ description: 'Whether to include resized media variants (low / medium / high previews). Default: true.',
59
+ required: false,
60
+ },
61
+ {
62
+ name: 'include',
63
+ type: 'string',
64
+ description: 'Optional extra field to refresh / include in the response: "last_token_uri_sync" or "last_metadata_sync".',
65
+ required: false,
66
+ },
67
+ ];
68
+ service;
69
+ constructor(config) {
70
+ super();
71
+ this.service = new MoralisService_1.MoralisService(config);
72
+ }
73
+ async run(args, userContext) {
74
+ const contractAddress = args.contractAddress;
75
+ const tokenId = args.tokenId != null ? String(args.tokenId) : '';
76
+ const chain = args.chain || userContext?.chain || undefined;
77
+ const format = args.format || undefined;
78
+ const normalizeMetadata = typeof args.normalizeMetadata === 'boolean' ? args.normalizeMetadata : undefined;
79
+ const mediaItems = typeof args.mediaItems === 'boolean' ? args.mediaItems : undefined;
80
+ const include = args.include || undefined;
81
+ if (!contractAddress) {
82
+ return { error: 'NFT contract address is required.' };
83
+ }
84
+ if (!tokenId) {
85
+ return { error: 'Token ID is required.' };
86
+ }
87
+ const result = await this.service.getNftMetadata({
88
+ address: contractAddress,
89
+ tokenId,
90
+ chain,
91
+ format,
92
+ normalizeMetadata,
93
+ mediaItems,
94
+ include,
95
+ });
96
+ if (!result.success) {
97
+ return { error: result.error || 'Failed to fetch NFT metadata' };
98
+ }
99
+ const data = result.data;
100
+ if (!data) {
101
+ return { error: 'NFT not found' };
102
+ }
103
+ const normalized = data.normalized_metadata;
104
+ const media = data.media;
105
+ return {
106
+ chain: chain,
107
+ contractAddress: data.token_address,
108
+ tokenId: data.token_id,
109
+ contractType: data.contract_type,
110
+ amount: data.amount,
111
+ owner: data.owner_of,
112
+ minter: data.minter_address,
113
+ blockNumber: data.block_number,
114
+ blockNumberMinted: data.block_number_minted,
115
+ tokenHash: data.token_hash,
116
+ name: normalized?.name || data.name,
117
+ description: normalized?.description,
118
+ image: normalized?.image || media?.original_media_url,
119
+ animationUrl: normalized?.animation_url,
120
+ attributes: normalized?.attributes,
121
+ tokenUri: data.token_uri,
122
+ metadata: data.metadata,
123
+ collection: {
124
+ name: data.name,
125
+ symbol: data.symbol,
126
+ logo: data.collection_logo,
127
+ banner: data.collection_banner_image,
128
+ category: data.collection_category,
129
+ projectUrl: data.project_url,
130
+ wikiUrl: data.wiki_url,
131
+ discordUrl: data.discord_url,
132
+ telegramUrl: data.telegram_url,
133
+ twitter: data.twitter_username,
134
+ instagram: data.instagram_username,
135
+ },
136
+ media: media
137
+ ? {
138
+ mimetype: media.mimetype,
139
+ status: media.status,
140
+ originalUrl: media.original_media_url,
141
+ previews: media.media_collection,
142
+ updatedAt: media.updated_at,
143
+ }
144
+ : undefined,
145
+ floorPrice: data.floor_price,
146
+ floorPriceUsd: data.floor_price_usd,
147
+ floorPriceCurrency: data.floor_price_currency,
148
+ rarityRank: data.rarity_rank,
149
+ rarityPercentage: data.rarity_percentage,
150
+ rarityLabel: data.rarity_label,
151
+ verifiedCollection: data.verified_collection,
152
+ possibleSpam: data.possible_spam,
153
+ lastMetadataSync: data.last_metadata_sync,
154
+ lastTokenUriSync: data.last_token_uri_sync,
155
+ };
156
+ }
157
+ }
158
+ exports.NFTMetadataTool = NFTMetadataTool;
159
+ //# sourceMappingURL=NFTMetadataTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NFTMetadataTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/NFTMetadataTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { BaseTool } from '../../BaseTool';
2
+ import type { ToolParameter, UserContext } from '../../../types';
3
+ import { type MoralisServiceConfig } from '../../../services/MoralisService';
4
+ export type WalletNFTsToolConfig = MoralisServiceConfig;
5
+ interface NormalizedNftAttribute {
6
+ trait_type: string;
7
+ value: string;
8
+ }
9
+ interface NormalizedNftMedia {
10
+ original?: string;
11
+ low?: string;
12
+ medium?: string;
13
+ high?: string;
14
+ mimetype?: string;
15
+ status?: string;
16
+ }
17
+ interface NormalizedNft {
18
+ name: string | null;
19
+ collectionName: string | null;
20
+ symbol: string | null;
21
+ tokenId: string;
22
+ contractAddress: string;
23
+ contractType: 'ERC721' | 'ERC1155' | string;
24
+ amount: string;
25
+ ownerOf: string;
26
+ tokenHash: string;
27
+ tokenUri: string | null;
28
+ description: string | null;
29
+ image: string | null;
30
+ animationUrl: string | null;
31
+ media: NormalizedNftMedia;
32
+ attributes: NormalizedNftAttribute[];
33
+ verifiedCollection: boolean;
34
+ possibleSpam: boolean;
35
+ collectionLogo: string | null;
36
+ collectionBanner: string | null;
37
+ blockNumber: string;
38
+ blockNumberMinted: string;
39
+ }
40
+ interface WalletNFTsResult {
41
+ walletAddress: string;
42
+ chain: string;
43
+ filters: {
44
+ contractAddresses: string[] | null;
45
+ excludeSpam: boolean;
46
+ includePrices: boolean;
47
+ limit: number;
48
+ cursor: string | null;
49
+ };
50
+ pagination: {
51
+ cursor: string | null;
52
+ pageSize: number;
53
+ page: number | null;
54
+ hasMore: boolean;
55
+ };
56
+ nftCount: number;
57
+ nfts: NormalizedNft[];
58
+ }
59
+ /**
60
+ * Tool: get-wallet-nfts
61
+ *
62
+ * Fetches NFTs owned by a wallet address via the Moralis EVM API
63
+ * `GET /{address}/nft`. Returns normalized metadata, media variants,
64
+ * collection info, and cursor-based pagination.
65
+ *
66
+ * Default page size is 10. Pass `cursor` from a previous response to
67
+ * fetch the next page.
68
+ */
69
+ export declare class WalletNFTsTool extends BaseTool {
70
+ name: string;
71
+ description: string;
72
+ category: string;
73
+ parameters: ToolParameter[];
74
+ private service;
75
+ constructor(config?: WalletNFTsToolConfig);
76
+ protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<WalletNFTsResult | {
77
+ error: string;
78
+ }>;
79
+ private normalize;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=WalletNFTsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletNFTsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/nft/WalletNFTsTool.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,EAAgB,MAAM,kCAAkC,CAAC;AAE3G,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAExD,UAAU,sBAAsB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,iBAAiB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAI,SAAqB;IACzB,WAAW,SAMuE;IAClF,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAmDzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,oBAAoB;cAKzB,GAAG,CACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,gBAAgB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA2DhD,OAAO,CAAC,SAAS;CA0ClB"}