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,585 @@
1
+ "use strict";
2
+ /**
3
+ * UniswapService — Uniswap Explore API (interface.gateway.uniswap.org).
4
+ *
5
+ * Wraps the public ExploreStats endpoint that powers https://app.uniswap.org/explore.
6
+ * The endpoint is a Connect-RPC service: the request payload is JSON-encoded
7
+ * inside a `message` query parameter and the response is plain JSON.
8
+ *
9
+ * No SDK dependencies — uses native `fetch`.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UniswapService = void 0;
13
+ const web3_1 = require("../functions/web3");
14
+ // ---------------------------------------------------------------------------
15
+ // Constants
16
+ // ---------------------------------------------------------------------------
17
+ const DEFAULT_BASE_URL = 'https://interface.gateway.uniswap.org';
18
+ const EXPLORE_STATS_PATH = '/v2/uniswap.explore.v1.ExploreStatsService/ExploreStats';
19
+ const SEARCH_TOKENS_PATH = '/v2/Search.v1.SearchService/SearchTokens';
20
+ const GRAPHQL_PATH = '/v1/graphql';
21
+ const MAX_RETRIES = 3;
22
+ const RETRY_DELAY_MS = 800;
23
+ /**
24
+ * Map hex chain id → Uniswap GraphQL `Chain` enum value.
25
+ * The GraphQL gateway expects upper-case chain names (e.g. "ARBITRUM").
26
+ */
27
+ const HEX_TO_UNISWAP_CHAIN_NAME = {
28
+ '0x1': 'ETHEREUM',
29
+ '0xa': 'OPTIMISM',
30
+ '0x38': 'BNB',
31
+ '0x89': 'POLYGON',
32
+ '0x2105': 'BASE',
33
+ '0xa4b1': 'ARBITRUM',
34
+ '0xa86a': 'AVALANCHE',
35
+ '0xe708': 'LINEA',
36
+ };
37
+ const V3_POOL_QUERY = `query V3Pool($chain: Chain!, $address: String!) {
38
+ v3Pool(chain: $chain, address: $address) {
39
+ id
40
+ protocolVersion
41
+ address
42
+ feeTier
43
+ token0 { ...SimpleTokenDetails ...TokenPrice __typename }
44
+ token0Supply
45
+ token1 { ...SimpleTokenDetails ...TokenPrice __typename }
46
+ token1Supply
47
+ txCount
48
+ volume24h: cumulativeVolume(duration: DAY) { value __typename }
49
+ historicalVolume(duration: WEEK) { value timestamp __typename }
50
+ totalLiquidity { value __typename }
51
+ totalLiquidityPercentChange24h { value __typename }
52
+ __typename
53
+ }
54
+ }
55
+
56
+ fragment SimpleTokenDetails on Token {
57
+ ...TokenBasicInfoParts
58
+ project { id isSpam logoUrl name safetyLevel __typename }
59
+ __typename
60
+ }
61
+
62
+ fragment TokenBasicInfoParts on Token {
63
+ id address chain decimals name standard symbol isBridged __typename
64
+ }
65
+
66
+ fragment TokenPrice on Token {
67
+ id
68
+ market(currency: USD) { id price { id value __typename } __typename }
69
+ __typename
70
+ }`;
71
+ const POOL_TOKEN_FRAGMENTS = `
72
+ fragment SimpleTokenDetails on Token {
73
+ ...TokenBasicInfoParts
74
+ project { id isSpam logoUrl name safetyLevel __typename }
75
+ __typename
76
+ }
77
+
78
+ fragment TokenBasicInfoParts on Token {
79
+ id address chain decimals name standard symbol isBridged __typename
80
+ }
81
+
82
+ fragment TokenPrice on Token {
83
+ id
84
+ market(currency: USD) { id price { id value __typename } __typename }
85
+ __typename
86
+ }`;
87
+ const V2_POOL_QUERY = `query V2Pair($chain: Chain!, $address: String!) {
88
+ v2Pair(chain: $chain, address: $address) {
89
+ id
90
+ protocolVersion
91
+ address
92
+ token0 { ...SimpleTokenDetails ...TokenPrice __typename }
93
+ token0Supply
94
+ token1 { ...SimpleTokenDetails ...TokenPrice __typename }
95
+ token1Supply
96
+ txCount
97
+ volume24h: cumulativeVolume(duration: DAY) { value __typename }
98
+ historicalVolume(duration: WEEK) { value timestamp __typename }
99
+ totalLiquidity { value __typename }
100
+ totalLiquidityPercentChange24h { value __typename }
101
+ __typename
102
+ }
103
+ }
104
+ ${POOL_TOKEN_FRAGMENTS}`;
105
+ const V4_POOL_QUERY = `query V4Pool($chain: Chain!, $poolId: String!) {
106
+ v4Pool(chain: $chain, poolId: $poolId) {
107
+ id
108
+ protocolVersion
109
+ feeTier
110
+ isDynamicFee
111
+ tickSpacing
112
+ poolId
113
+ hook { id address __typename }
114
+ token0 { ...SimpleTokenDetails ...TokenPrice __typename }
115
+ token0Supply
116
+ token1 { ...SimpleTokenDetails ...TokenPrice __typename }
117
+ token1Supply
118
+ txCount
119
+ volume24h: cumulativeVolume(duration: DAY) { value __typename }
120
+ historicalVolume(duration: WEEK) { value timestamp __typename }
121
+ totalLiquidity { value __typename }
122
+ totalLiquidityPercentChange24h { value __typename }
123
+ __typename
124
+ }
125
+ }
126
+ ${POOL_TOKEN_FRAGMENTS}`;
127
+ /**
128
+ * Map hex chain id → numeric chain id used by Uniswap's gateway.
129
+ * Only chains that Uniswap Explore actually supports are listed.
130
+ */
131
+ const HEX_TO_UNISWAP_CHAIN_ID = {
132
+ '0x1': 1, // Ethereum
133
+ '0xa': 10, // Optimism
134
+ '0x38': 56, // BSC
135
+ '0x89': 137, // Polygon
136
+ '0x2105': 8453, // Base
137
+ '0xa4b1': 42161, // Arbitrum
138
+ '0xa86a': 43114, // Avalanche
139
+ '0xe708': 59144, // Linea
140
+ };
141
+ // ---------------------------------------------------------------------------
142
+ // Helpers
143
+ // ---------------------------------------------------------------------------
144
+ function delay(ms) {
145
+ return new Promise((resolve) => setTimeout(resolve, ms));
146
+ }
147
+ /** Default to Ethereum mainnet (1) when no chain is supplied. */
148
+ function toUniswapChainId(chain) {
149
+ if (!chain)
150
+ return 1;
151
+ const normalized = chain.toLowerCase();
152
+ return HEX_TO_UNISWAP_CHAIN_ID[normalized] ?? 1;
153
+ }
154
+ /** Default to Ethereum when no chain is supplied. */
155
+ function toUniswapChainName(chain) {
156
+ if (!chain)
157
+ return 'ETHEREUM';
158
+ const normalized = chain.toLowerCase();
159
+ return HEX_TO_UNISWAP_CHAIN_NAME[normalized] ?? 'ETHEREUM';
160
+ }
161
+ function selectPoolBucket(stats, version) {
162
+ if (!stats)
163
+ return [];
164
+ switch (version) {
165
+ case 'V2':
166
+ return stats.poolStatsV2 ?? [];
167
+ case 'V3':
168
+ return stats.poolStatsV3 ?? [];
169
+ case 'V4':
170
+ return stats.poolStatsV4 ?? [];
171
+ }
172
+ }
173
+ function getSortValue(p, key) {
174
+ switch (key) {
175
+ case 'volume1Day':
176
+ return p.volume1Day?.value ?? 0;
177
+ case 'volume1Week':
178
+ return p.volume1Week?.value ?? 0;
179
+ case 'volume30Day':
180
+ return p.volume30Day?.value ?? 0;
181
+ case 'txCount':
182
+ return p.txCount ?? 0;
183
+ case 'apr':
184
+ return p.apr ?? 0;
185
+ case 'tvl':
186
+ default:
187
+ return p.totalLiquidity?.value ?? 0;
188
+ }
189
+ }
190
+ function computeApr(p) {
191
+ const volume24h = p.volume1Day?.value;
192
+ const tvl = p.totalLiquidity?.value;
193
+ if (typeof p.feeTier !== 'number' || !volume24h || !tvl)
194
+ return undefined;
195
+ const fee24h = (p.feeTier / 10_000) * volume24h;
196
+ return (fee24h / tvl) * 365;
197
+ }
198
+ // ---------------------------------------------------------------------------
199
+ // Service
200
+ // ---------------------------------------------------------------------------
201
+ class UniswapService {
202
+ baseUrl;
203
+ constructor(config) {
204
+ this.baseUrl = (config?.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, '');
205
+ }
206
+ /**
207
+ * Fetch the raw ExploreStats payload for a chain.
208
+ *
209
+ * Mirrors the request issued by app.uniswap.org/explore. The endpoint is
210
+ * Connect-RPC over HTTP-GET: the JSON body is URL-encoded into the `message`
211
+ * query parameter.
212
+ */
213
+ async getExploreStats(params) {
214
+ const chainId = toUniswapChainId(params?.chain);
215
+ const multichain = params?.multichain === true;
216
+ const message = encodeURIComponent(JSON.stringify({ chainId: String(chainId), multichain }));
217
+ const url = `${this.baseUrl}${EXPLORE_STATS_PATH}` + `?connect=v1&encoding=json&message=${message}`;
218
+ let lastError = 'Unknown error';
219
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
220
+ try {
221
+ const res = await fetch(url, {
222
+ headers: {
223
+ accept: '*/*',
224
+ origin: 'https://app.uniswap.org',
225
+ referer: 'https://app.uniswap.org/',
226
+ 'x-request-source': 'uniswap-web',
227
+ },
228
+ });
229
+ if (!res.ok)
230
+ throw new Error(`HTTP ${res.status}`);
231
+ const json = (await res.json());
232
+ return { success: true, data: json };
233
+ }
234
+ catch (error) {
235
+ lastError = error instanceof Error ? error.message : 'Unknown error';
236
+ if (attempt < MAX_RETRIES)
237
+ await delay(RETRY_DELAY_MS);
238
+ }
239
+ }
240
+ return { success: false, error: lastError };
241
+ }
242
+ /**
243
+ * Convenience wrapper: fetch ExploreStats and return the top pools sorted by TVL
244
+ * (or another provided metric), filtered to a single protocol version.
245
+ */
246
+ async getTopPools(params) {
247
+ const version = params?.protocolVersion ?? 'V3';
248
+ const limit = params?.limit && params.limit > 0 ? Math.floor(params.limit) : 10;
249
+ const sortBy = params?.sortBy ?? 'tvl';
250
+ const stats = await this.getExploreStats({ chain: params?.chain, multichain: params?.multichain });
251
+ if (!stats.success || !stats.data) {
252
+ return { success: false, error: stats.error || 'Failed to fetch ExploreStats' };
253
+ }
254
+ const pools = selectPoolBucket(stats.data.stats, version).map((p) => ({
255
+ ...p,
256
+ apr: computeApr(p),
257
+ fee24hUsd: p.volume1Day?.value && p.feeTier ? (p.feeTier / 10_000) * p.volume1Day.value : undefined,
258
+ }));
259
+ const sorted = pools.sort((a, b) => getSortValue(b, sortBy) - getSortValue(a, sortBy));
260
+ return { success: true, data: sorted.slice(0, limit) };
261
+ }
262
+ /**
263
+ * Fetch detailed stats for a single Uniswap V3 pool by address.
264
+ *
265
+ * Uses the GraphQL operation `V3Pool` exposed by the Uniswap interface gateway.
266
+ * Returns token metadata + USD prices, current TVL with 24h percent change,
267
+ * 24h cumulative volume, weekly historical volume series, and total tx count.
268
+ */
269
+ async getV3PoolDetail(params) {
270
+ const address = params.address?.trim();
271
+ if (!address) {
272
+ return { success: false, error: 'Pool address is required' };
273
+ }
274
+ return this.fetchPoolDetailGraphQL({
275
+ operationName: 'V3Pool',
276
+ query: V3_POOL_QUERY,
277
+ variables: { chain: toUniswapChainName(params.chain), address },
278
+ pickField: 'v3Pool',
279
+ });
280
+ }
281
+ /**
282
+ * Fetch detailed stats for a single Uniswap V2 pair by address.
283
+ * Uses the GraphQL operation `V2Pair`. Same shape as V3 detail (no fee tier;
284
+ * V2 pairs are fixed at 0.30%).
285
+ */
286
+ async getV2PoolDetail(params) {
287
+ const address = params.address?.trim();
288
+ if (!address) {
289
+ return { success: false, error: 'Pair address is required' };
290
+ }
291
+ return this.fetchPoolDetailGraphQL({
292
+ operationName: 'V2Pair',
293
+ query: V2_POOL_QUERY,
294
+ variables: { chain: toUniswapChainName(params.chain), address },
295
+ pickField: 'v2Pair',
296
+ });
297
+ }
298
+ /**
299
+ * Fetch detailed stats for a single Uniswap V4 pool by 32-byte poolId.
300
+ * Uses the GraphQL operation `V4Pool`. V4 pools live behind a singleton
301
+ * PoolManager — they have no individual contract address, so the lookup key
302
+ * is the `poolId` returned by SearchPools for V4 hits.
303
+ */
304
+ async getV4PoolDetail(params) {
305
+ const poolId = params.poolId?.trim();
306
+ if (!poolId) {
307
+ return { success: false, error: 'V4 poolId is required' };
308
+ }
309
+ return this.fetchPoolDetailGraphQL({
310
+ operationName: 'V4Pool',
311
+ query: V4_POOL_QUERY,
312
+ variables: { chain: toUniswapChainName(params.chain), poolId },
313
+ pickField: 'v4Pool',
314
+ });
315
+ }
316
+ async fetchPoolDetailGraphQL(args) {
317
+ const url = `${this.baseUrl}${GRAPHQL_PATH}`;
318
+ const body = JSON.stringify({
319
+ operationName: args.operationName,
320
+ variables: args.variables,
321
+ query: args.query,
322
+ });
323
+ let lastError = 'Unknown error';
324
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
325
+ try {
326
+ const res = await fetch(url, {
327
+ method: 'POST',
328
+ headers: {
329
+ accept: '*/*',
330
+ 'content-type': 'application/json',
331
+ origin: 'https://app.uniswap.org',
332
+ referer: 'https://app.uniswap.org/',
333
+ 'x-request-source': 'uniswap-web',
334
+ '_dd-custom-header-graph-ql-operation-name': args.operationName,
335
+ '_dd-custom-header-graph-ql-operation-type': 'query',
336
+ },
337
+ body,
338
+ });
339
+ if (!res.ok)
340
+ throw new Error(`HTTP ${res.status}`);
341
+ const json = (await res.json());
342
+ if (json.errors) {
343
+ throw new Error(`GraphQL error: ${JSON.stringify(json.errors)}`);
344
+ }
345
+ const pool = json.data?.[args.pickField] ?? undefined;
346
+ if (!pool) {
347
+ return { success: false, error: 'Pool not found' };
348
+ }
349
+ return { success: true, data: pool };
350
+ }
351
+ catch (error) {
352
+ lastError = error instanceof Error ? error.message : 'Unknown error';
353
+ if (attempt < MAX_RETRIES)
354
+ await delay(RETRY_DELAY_MS);
355
+ }
356
+ }
357
+ return { success: false, error: lastError };
358
+ }
359
+ /**
360
+ * Search Uniswap-known tokens by symbol, name, or contract address.
361
+ *
362
+ * Wraps the Connect-RPC `Search.v1.SearchService/SearchTokens` endpoint with
363
+ * `searchType: "TOKEN"`. When the query is a contract address, an empty
364
+ * result means the address is not a token Uniswap recognizes on this chain
365
+ * (it may still be a pool address — see `searchPools`).
366
+ */
367
+ async searchTokens(params) {
368
+ const query = params.query?.trim();
369
+ if (!query) {
370
+ return { success: false, error: 'Search query is required' };
371
+ }
372
+ if ((0, web3_1.isAddressEVM)(query)) {
373
+ return {
374
+ success: false,
375
+ error: 'Address is invalid for token search. If you pasted a 0x address, it may be a Uniswap pool — try the pool search tool instead.',
376
+ };
377
+ }
378
+ const chainId = toUniswapChainId(params.chain);
379
+ const page = params.page && params.page > 0 ? Math.floor(params.page) : 1;
380
+ const size = params.size && params.size > 0 ? Math.min(Math.floor(params.size), 50) : 15;
381
+ const url = `${this.baseUrl}${SEARCH_TOKENS_PATH}`;
382
+ const body = JSON.stringify({
383
+ searchQuery: query,
384
+ chainIds: [chainId],
385
+ searchType: 'TOKEN',
386
+ page,
387
+ size,
388
+ });
389
+ let lastError = 'Unknown error';
390
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
391
+ try {
392
+ const res = await fetch(url, {
393
+ method: 'POST',
394
+ headers: {
395
+ accept: '*/*',
396
+ 'connect-protocol-version': '1',
397
+ 'content-type': 'application/json',
398
+ origin: 'https://app.uniswap.org',
399
+ referer: 'https://app.uniswap.org/',
400
+ 'x-request-source': 'uniswap-web',
401
+ },
402
+ body,
403
+ });
404
+ if (!res.ok)
405
+ throw new Error(`HTTP ${res.status}`);
406
+ const json = (await res.json());
407
+ return { success: true, data: json.tokens ?? [] };
408
+ }
409
+ catch (error) {
410
+ lastError = error instanceof Error ? error.message : 'Unknown error';
411
+ if (attempt < MAX_RETRIES)
412
+ await delay(RETRY_DELAY_MS);
413
+ }
414
+ }
415
+ return { success: false, error: lastError };
416
+ }
417
+ /**
418
+ * Search Uniswap pools by token symbol, name, or pool address.
419
+ *
420
+ * Wraps the Connect-RPC `Search.v1.SearchService/SearchTokens` endpoint with
421
+ * `searchType: "POOL"`. Returns a paginated list of pools that match the
422
+ * query, scoped to a single chain.
423
+ */
424
+ async searchPools(params) {
425
+ const query = params.query?.trim();
426
+ if (!query) {
427
+ return { success: false, error: 'Search query is required' };
428
+ }
429
+ const chainId = toUniswapChainId(params.chain);
430
+ const page = params.page && params.page > 0 ? Math.floor(params.page) : 1;
431
+ const size = params.size && params.size > 0 ? Math.min(Math.floor(params.size), 50) : 15;
432
+ const protocolFilter = params.protocolVersion ?? 'V3';
433
+ const feeTierFilter = params.feeTier && params.feeTier > 0 ? Math.floor(params.feeTier) : undefined;
434
+ const url = `${this.baseUrl}${SEARCH_TOKENS_PATH}`;
435
+ const body = JSON.stringify({ searchQuery: query, chainIds: [chainId], searchType: 'POOL', page, size });
436
+ // Run search + ExploreStats in parallel so we can enrich results with
437
+ // apr/tvl/txCount without a serial second round-trip.
438
+ const [searchRes, statsRes] = await Promise.allSettled([
439
+ this.fetchSearchPools(url, body),
440
+ this.getExploreStats({ chain: params.chain }),
441
+ ]);
442
+ if (searchRes.status === 'rejected' || !searchRes.value.success) {
443
+ const err = searchRes.status === 'rejected'
444
+ ? String(searchRes.reason)
445
+ : (searchRes.value.error ?? 'Failed to search pools');
446
+ return { success: false, error: err };
447
+ }
448
+ // Split query into terms for matching/scoring (shared across enrich + sort).
449
+ const queryTerms = query.toLowerCase().split(/\s+/).filter(Boolean);
450
+ // Apply version + fee tier filters to search results (client-side).
451
+ let searchFiltered = searchRes.value.data ?? [];
452
+ if (protocolFilter !== 'ALL')
453
+ searchFiltered = searchFiltered.filter((p) => p.protocolVersion === protocolFilter);
454
+ if (feeTierFilter != null)
455
+ searchFiltered = searchFiltered.filter((p) => p.feeTier === feeTierFilter);
456
+ // Build address → SearchPoolResult map from search results for deduplication.
457
+ const byAddress = new Map();
458
+ for (const p of searchFiltered) {
459
+ if (p.id)
460
+ byAddress.set(p.id.toLowerCase(), p);
461
+ }
462
+ // Collect top pools from ExploreStats that match the query token(s) by
463
+ // symbol, filtered by version + fee tier. These are merged into the result
464
+ // set — pools present in both sources get enriched, pools only in top are
465
+ // added as-is (they carry apr/tvl that search doesn't have).
466
+ if (statsRes.status === 'fulfilled' && statsRes.value.success && statsRes.value.data) {
467
+ const stats = statsRes.value.data.stats;
468
+ const versions = protocolFilter === 'ALL' ? ['V2', 'V3', 'V4'] : [protocolFilter];
469
+ // Match top-pool tokens against the pre-computed query terms.
470
+ for (const v of versions) {
471
+ for (const p of selectPoolBucket(stats, v)) {
472
+ if (!p.id)
473
+ continue;
474
+ if (feeTierFilter != null && p.feeTier !== feeTierFilter)
475
+ continue;
476
+ // Pool matches if at least one query term appears in any token symbol/name.
477
+ const sym0 = (p.token0?.symbol ?? '').toLowerCase();
478
+ const sym1 = (p.token1?.symbol ?? '').toLowerCase();
479
+ const name0 = (p.token0?.name ?? '').toLowerCase();
480
+ const name1 = (p.token1?.name ?? '').toLowerCase();
481
+ const matches = queryTerms.some((t) => sym0.includes(t) || sym1.includes(t) || name0.includes(t) || name1.includes(t));
482
+ if (!matches)
483
+ continue;
484
+ const apr = computeApr(p);
485
+ const key = p.id.toLowerCase();
486
+ const existing = byAddress.get(key);
487
+ if (existing) {
488
+ // Enrich existing search result with top-pools data.
489
+ byAddress.set(key, {
490
+ ...existing,
491
+ ...(apr != null ? { apr } : {}),
492
+ ...(p.totalLiquidity?.value != null ? { tvlUsd: p.totalLiquidity.value } : {}),
493
+ ...(p.volume1Day?.value != null ? { volume1DayUsd: p.volume1Day.value } : {}),
494
+ ...(p.txCount != null ? { txCount: p.txCount } : {}),
495
+ });
496
+ }
497
+ else {
498
+ // Add top pool not found by search.
499
+ byAddress.set(key, {
500
+ id: p.id,
501
+ protocolVersion: p.protocolVersion,
502
+ feeTier: p.feeTier,
503
+ token0: p.token0
504
+ ? {
505
+ address: p.token0.address,
506
+ symbol: p.token0.symbol,
507
+ name: p.token0.name,
508
+ decimals: p.token0.decimals,
509
+ }
510
+ : undefined,
511
+ token1: p.token1
512
+ ? {
513
+ address: p.token1.address,
514
+ symbol: p.token1.symbol,
515
+ name: p.token1.name,
516
+ decimals: p.token1.decimals,
517
+ }
518
+ : undefined,
519
+ ...(apr != null ? { apr } : {}),
520
+ ...(p.totalLiquidity?.value != null ? { tvlUsd: p.totalLiquidity.value } : {}),
521
+ ...(p.volume1Day?.value != null ? { volume1DayUsd: p.volume1Day.value } : {}),
522
+ ...(p.txCount != null ? { txCount: p.txCount } : {}),
523
+ });
524
+ }
525
+ }
526
+ }
527
+ }
528
+ // Sort: pools whose token symbols exactly match a query term rank highest,
529
+ // then startsWith matches, then substring matches.
530
+ const results = Array.from(byAddress.values()).sort((a, b) => {
531
+ return this.matchScore(b, queryTerms) - this.matchScore(a, queryTerms);
532
+ });
533
+ return { success: true, data: results };
534
+ }
535
+ async fetchSearchPools(url, body) {
536
+ let lastError = 'Unknown error';
537
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
538
+ try {
539
+ const res = await fetch(url, {
540
+ method: 'POST',
541
+ headers: {
542
+ accept: '*/*',
543
+ 'connect-protocol-version': '1',
544
+ 'content-type': 'application/json',
545
+ origin: 'https://app.uniswap.org',
546
+ referer: 'https://app.uniswap.org/',
547
+ 'x-request-source': 'uniswap-web',
548
+ },
549
+ body,
550
+ });
551
+ if (!res.ok)
552
+ throw new Error(`HTTP ${res.status}`);
553
+ const json = (await res.json());
554
+ return { success: true, data: json.pools ?? [] };
555
+ }
556
+ catch (error) {
557
+ lastError = error instanceof Error ? error.message : 'Unknown error';
558
+ if (attempt < MAX_RETRIES)
559
+ await delay(RETRY_DELAY_MS);
560
+ }
561
+ }
562
+ return { success: false, error: lastError };
563
+ }
564
+ /** Score a pool result by how closely its token symbols match the query terms.
565
+ * exact match = 3, startsWith = 2, includes = 1, no match = 0 (per term, take max). */
566
+ matchScore(p, queryTerms) {
567
+ const symbols = [p.token0?.symbol ?? '', p.token1?.symbol ?? ''].map((s) => s.toLowerCase());
568
+ let total = 0;
569
+ for (const term of queryTerms) {
570
+ let best = 0;
571
+ for (const sym of symbols) {
572
+ if (sym === term)
573
+ best = Math.max(best, 3);
574
+ else if (sym.startsWith(term))
575
+ best = Math.max(best, 2);
576
+ else if (sym.includes(term))
577
+ best = Math.max(best, 1);
578
+ }
579
+ total += best;
580
+ }
581
+ return total;
582
+ }
583
+ }
584
+ exports.UniswapService = UniswapService;
585
+ //# sourceMappingURL=UniswapService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniswapService.js","sourceRoot":"","sources":["../../src/services/UniswapService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { CheckApprovalParams, CheckApprovalResult, ExecuteSwapParams, ExecuteSwapResult, ProviderName, SwapQuoteParams, SwapQuoteResult, SwapServiceConfig, TrackTransactionParams, TrackTransactionResult } from './types';
2
+ /**
3
+ * Abstract base for swap/bridge providers. Each adapter must implement the five
4
+ * methods below; the factory wires the active provider based on chain config.
5
+ */
6
+ export declare abstract class BaseSwapService {
7
+ protected readonly config: SwapServiceConfig;
8
+ protected constructor(config: SwapServiceConfig);
9
+ abstract getProviderName(): ProviderName;
10
+ /** True when approval is delivered as part of the quote (e.g. Relay). */
11
+ hasIntegratedApproval(): boolean;
12
+ abstract getQuote(params: SwapQuoteParams): Promise<SwapQuoteResult>;
13
+ abstract checkApproval(params: CheckApprovalParams): Promise<CheckApprovalResult>;
14
+ abstract executeSwap(params: ExecuteSwapParams): Promise<ExecuteSwapResult>;
15
+ abstract trackTransaction(params: TrackTransactionParams): Promise<TrackTransactionResult>;
16
+ }
17
+ //# sourceMappingURL=BaseSwapService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSwapService.d.ts","sourceRoot":"","sources":["../../../src/services/swap/BaseSwapService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,8BAAsB,eAAe;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAE7C,SAAS,aAAa,MAAM,EAAE,iBAAiB;IAI/C,QAAQ,CAAC,eAAe,IAAI,YAAY;IAExC,yEAAyE;IACzE,qBAAqB,IAAI,OAAO;IAIhC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAEpE,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAEjF,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAE3E,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAC3F"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseSwapService = void 0;
4
+ /**
5
+ * Abstract base for swap/bridge providers. Each adapter must implement the five
6
+ * methods below; the factory wires the active provider based on chain config.
7
+ */
8
+ class BaseSwapService {
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ }
13
+ /** True when approval is delivered as part of the quote (e.g. Relay). */
14
+ hasIntegratedApproval() {
15
+ return false;
16
+ }
17
+ }
18
+ exports.BaseSwapService = BaseSwapService;
19
+ //# sourceMappingURL=BaseSwapService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSwapService.js","sourceRoot":"","sources":["../../../src/services/swap/BaseSwapService.ts"],"names":[],"mappings":";;;AAaA;;;GAGG;AACH,MAAsB,eAAe;IAChB,MAAM,CAAoB;IAE7C,YAAsB,MAAyB;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAID,yEAAyE;IACzE,qBAAqB;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;CASF;AArBD,0CAqBC"}