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,507 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tickToPrice = exports.roundTickToSpacing = exports.priceToTick = exports.clampTick = exports.PoolService = exports.TRANSFER_TOPIC = exports.ZERO_ADDRESS = void 0;
4
+ exports.getChainMeta = getChainMeta;
5
+ exports.getNativeTokenInfo = getNativeTokenInfo;
6
+ exports.buildRangePresets = buildRangePresets;
7
+ const pool_1 = require("../functions/pool");
8
+ Object.defineProperty(exports, "clampTick", { enumerable: true, get: function () { return pool_1.clampTick; } });
9
+ Object.defineProperty(exports, "priceToTick", { enumerable: true, get: function () { return pool_1.priceToTick; } });
10
+ Object.defineProperty(exports, "roundTickToSpacing", { enumerable: true, get: function () { return pool_1.roundTickToSpacing; } });
11
+ Object.defineProperty(exports, "tickToPrice", { enumerable: true, get: function () { return pool_1.tickToPrice; } });
12
+ const swap_1 = require("./swap");
13
+ // ============================================================
14
+ // PoolService — on-chain reads + add-liquidity tx builders
15
+ // ============================================================
16
+ //
17
+ // Self-contained: uses raw JSON-RPC (`eth_call`, `eth_getBalance`,
18
+ // `eth_gasPrice`) and minimal ABI encode/decode helpers — no viem dependency.
19
+ // Mirrors the behaviour of coinpool-v2's ProvideLiquidity flow, restricted
20
+ // to native-coin input (the only mode supported by the gateway today).
21
+ // ---- Chain registry ----
22
+ exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
23
+ const CHAIN_REGISTRY = {
24
+ '0x1': {
25
+ hexId: '0x1',
26
+ name: 'Ethereum',
27
+ defaultRpc: 'https://eth.llamarpc.com',
28
+ native: { symbol: 'ETH', name: 'Ether', decimals: 18, coingeckoId: 'ethereum' },
29
+ defaultMintGasLimit: 1_200_000,
30
+ },
31
+ '0xa': {
32
+ hexId: '0xa',
33
+ name: 'Optimism',
34
+ defaultRpc: 'https://mainnet.optimism.io',
35
+ native: { symbol: 'ETH', name: 'Ether', decimals: 18, coingeckoId: 'ethereum' },
36
+ defaultMintGasLimit: 1_200_000,
37
+ },
38
+ '0x38': {
39
+ hexId: '0x38',
40
+ name: 'BNB Smart Chain',
41
+ defaultRpc: 'https://bsc-dataseed.binance.org',
42
+ native: { symbol: 'BNB', name: 'BNB', decimals: 18, coingeckoId: 'binancecoin' },
43
+ defaultMintGasLimit: 1_200_000,
44
+ },
45
+ '0x89': {
46
+ hexId: '0x89',
47
+ name: 'Polygon',
48
+ defaultRpc: 'https://polygon-rpc.com',
49
+ native: { symbol: 'MATIC', name: 'Polygon', decimals: 18, coingeckoId: 'matic-network' },
50
+ defaultMintGasLimit: 1_200_000,
51
+ },
52
+ '0x2105': {
53
+ hexId: '0x2105',
54
+ name: 'Base',
55
+ defaultRpc: 'https://mainnet.base.org',
56
+ native: { symbol: 'ETH', name: 'Ether', decimals: 18, coingeckoId: 'ethereum' },
57
+ defaultMintGasLimit: 1_200_000,
58
+ },
59
+ '0xa4b1': {
60
+ hexId: '0xa4b1',
61
+ name: 'Arbitrum One',
62
+ defaultRpc: 'https://arb1.arbitrum.io/rpc',
63
+ native: { symbol: 'ETH', name: 'Ether', decimals: 18, coingeckoId: 'ethereum' },
64
+ defaultMintGasLimit: 2_200_000,
65
+ },
66
+ '0xa86a': {
67
+ hexId: '0xa86a',
68
+ name: 'Avalanche',
69
+ defaultRpc: 'https://api.avax.network/ext/bc/C/rpc',
70
+ native: { symbol: 'AVAX', name: 'Avalanche', decimals: 18, coingeckoId: 'avalanche-2' },
71
+ defaultMintGasLimit: 1_200_000,
72
+ },
73
+ '0xe708': {
74
+ hexId: '0xe708',
75
+ name: 'Linea',
76
+ defaultRpc: 'https://rpc.linea.build',
77
+ native: { symbol: 'ETH', name: 'Ether', decimals: 18, coingeckoId: 'ethereum' },
78
+ defaultMintGasLimit: 1_200_000,
79
+ },
80
+ };
81
+ function getChainMeta(chainId) {
82
+ return CHAIN_REGISTRY[chainId.toLowerCase()];
83
+ }
84
+ function getNativeTokenInfo(chainId) {
85
+ return getChainMeta(chainId)?.native;
86
+ }
87
+ async function rpcCall(rpcUrl, method, params) {
88
+ const maxRetries = 5;
89
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
90
+ const res = await fetch(rpcUrl, {
91
+ method: 'POST',
92
+ headers: { 'Content-Type': 'application/json' },
93
+ body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method, params }),
94
+ });
95
+ if (res.status === 429 && attempt < maxRetries) {
96
+ await new Promise((r) => setTimeout(r, 2 ** attempt * 500));
97
+ continue;
98
+ }
99
+ if (!res.ok)
100
+ throw new Error(`RPC ${method} HTTP ${res.status}`);
101
+ const json = (await res.json());
102
+ if (json.error)
103
+ throw new Error(`RPC ${method}: ${json.error.message}`);
104
+ if (json.result === undefined)
105
+ throw new Error(`RPC ${method}: empty result`);
106
+ return json.result;
107
+ }
108
+ throw new Error(`RPC ${method}: exceeded max retries (429)`);
109
+ }
110
+ /** keccak256("Transfer(address,address,uint256)") — ERC-20 / ERC-721 transfer */
111
+ exports.TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
112
+ function buildRangePresets(input) {
113
+ const stableTicks = input.stableTicks ?? 3;
114
+ const widePercent = input.widePercent ?? { down: 50, up: 100 };
115
+ const currentPrice = (0, pool_1.tickToPrice)(input.currentTick, input.token0Decimals, input.token1Decimals);
116
+ // Stable: ±N tickSpacing units around current
117
+ const stableLower = (0, pool_1.clampTick)((0, pool_1.roundTickToSpacing)(input.currentTick - stableTicks * input.tickSpacing, input.tickSpacing, 'down'));
118
+ const stableUpper = (0, pool_1.clampTick)((0, pool_1.roundTickToSpacing)(input.currentTick + stableTicks * input.tickSpacing, input.tickSpacing, 'up'));
119
+ // Wide: -down% / +up% around current price → convert to ticks → round to spacing
120
+ const wideMinPrice = currentPrice * (1 - widePercent.down / 100);
121
+ const wideMaxPrice = currentPrice * (1 + widePercent.up / 100);
122
+ const wideLowerRaw = (0, pool_1.priceToTick)(wideMinPrice, input.token0Decimals, input.token1Decimals);
123
+ const wideUpperRaw = (0, pool_1.priceToTick)(wideMaxPrice, input.token0Decimals, input.token1Decimals);
124
+ const wideLower = (0, pool_1.clampTick)((0, pool_1.roundTickToSpacing)(wideLowerRaw, input.tickSpacing, 'down'));
125
+ const wideUpper = (0, pool_1.clampTick)((0, pool_1.roundTickToSpacing)(wideUpperRaw, input.tickSpacing, 'up'));
126
+ const toPreset = (id, label, description, tickLower, tickUpper) => {
127
+ const minPrice = (0, pool_1.tickToPrice)(tickLower, input.token0Decimals, input.token1Decimals);
128
+ const maxPrice = (0, pool_1.tickToPrice)(tickUpper, input.token0Decimals, input.token1Decimals);
129
+ return {
130
+ id,
131
+ label,
132
+ description,
133
+ tickLower,
134
+ tickUpper,
135
+ minPrice,
136
+ maxPrice,
137
+ minPercentChange: ((minPrice - currentPrice) / currentPrice) * 100,
138
+ maxPercentChange: ((maxPrice - currentPrice) / currentPrice) * 100,
139
+ };
140
+ };
141
+ return [
142
+ toPreset('stable', 'Stable', 'Good for stablecoins or low volatility pairs', stableLower, stableUpper),
143
+ toPreset('wide', 'Wide', 'Good for volatile pairs', wideLower, wideUpper),
144
+ ];
145
+ }
146
+ const SLOT0_SELECTOR = (0, pool_1.functionSelector)('slot0()');
147
+ const LIQUIDITY_SELECTOR = (0, pool_1.functionSelector)('liquidity()');
148
+ const TICK_SPACING_SELECTOR = (0, pool_1.functionSelector)('tickSpacing()');
149
+ const FEE_SELECTOR = (0, pool_1.functionSelector)('fee()');
150
+ const TOKEN0_SELECTOR = (0, pool_1.functionSelector)('token0()');
151
+ const TOKEN1_SELECTOR = (0, pool_1.functionSelector)('token1()');
152
+ const DECIMALS_SELECTOR = (0, pool_1.functionSelector)('decimals()');
153
+ class PoolService {
154
+ rpcUrls;
155
+ swapFactory;
156
+ isProduction;
157
+ constructor(config) {
158
+ this.rpcUrls = config?.rpcUrls ?? {};
159
+ this.isProduction = config?.isProduction ?? true;
160
+ this.swapFactory =
161
+ config?.swapFactory ?? (this.isProduction ? swap_1.swapServiceFactory : new swap_1.SwapServiceFactory(undefined, false));
162
+ }
163
+ getRpcUrl(chainId) {
164
+ const override = this.rpcUrls[chainId.toLowerCase()];
165
+ if (override)
166
+ return override;
167
+ const meta = getChainMeta(chainId);
168
+ if (!meta)
169
+ throw new Error(`Unsupported chain: ${chainId}`);
170
+ return meta.defaultRpc;
171
+ }
172
+ async getGatewayAddress(chainId) {
173
+ return (0, swap_1.getGatewayAddress)(chainId, this.isProduction);
174
+ }
175
+ async getPositionManagerAddress(chainId) {
176
+ return (0, swap_1.getPositionManagerAddress)(chainId, this.isProduction);
177
+ }
178
+ /** Generic eth_call helper. `data` is the encoded calldata (with selector). */
179
+ async ethCall(chainId, to, data) {
180
+ return rpcCall(this.getRpcUrl(chainId), 'eth_call', [{ to, data }, 'latest']);
181
+ }
182
+ /** Read native balance (wei) */
183
+ async getNativeBalance(chainId, userAddress) {
184
+ const hex = await rpcCall(this.getRpcUrl(chainId), 'eth_getBalance', [userAddress, 'latest']);
185
+ return BigInt(hex);
186
+ }
187
+ /** Read current gas price (wei) */
188
+ async getGasPrice(chainId) {
189
+ const hex = await rpcCall(this.getRpcUrl(chainId), 'eth_gasPrice', []);
190
+ return BigInt(hex);
191
+ }
192
+ /**
193
+ * Fetch the receipt for a transaction. Returns null while the tx is still
194
+ * pending. Throws on RPC errors.
195
+ */
196
+ async getTransactionReceipt(chainId, txHash) {
197
+ const res = await rpcCall(this.getRpcUrl(chainId), 'eth_getTransactionReceipt', [
198
+ txHash,
199
+ ]);
200
+ return res;
201
+ }
202
+ /**
203
+ * Pull the minted NFT id out of a Uniswap V3 mint receipt. Looks for an
204
+ * ERC-721 Transfer event from the zero address emitted by the position
205
+ * manager contract. Returns null when no such log is present (pending tx,
206
+ * failed tx, or wrong contract).
207
+ */
208
+ async extractMintedNftId(chainId, receipt) {
209
+ const positionManager = await this.getPositionManagerAddress(chainId);
210
+ if (!positionManager)
211
+ return null;
212
+ const pmLower = positionManager.toLowerCase();
213
+ for (const log of receipt.logs ?? []) {
214
+ if ((log.address ?? '').toLowerCase() !== pmLower)
215
+ continue;
216
+ const topics = log.topics ?? [];
217
+ if (topics.length < 4)
218
+ continue;
219
+ if (topics[0]?.toLowerCase() !== exports.TRANSFER_TOPIC)
220
+ continue;
221
+ // Mint = transfer FROM zero address (topic[1] is the indexed `from`).
222
+ const from = '0x' + topics[1].slice(-40).toLowerCase();
223
+ if (from !== exports.ZERO_ADDRESS)
224
+ continue;
225
+ try {
226
+ return BigInt(topics[3]).toString();
227
+ }
228
+ catch {
229
+ return null;
230
+ }
231
+ }
232
+ return null;
233
+ }
234
+ /**
235
+ * Estimate the gas reserve we should subtract from the user's native balance
236
+ * before quoting "spendable". Mirrors coinpool-v2: gasLimit × gasPrice × 1.8.
237
+ */
238
+ async estimateGasReserveWei(chainId) {
239
+ const meta = getChainMeta(chainId);
240
+ if (!meta)
241
+ throw new Error(`Unsupported chain: ${chainId}`);
242
+ const gasPrice = await this.getGasPrice(chainId);
243
+ // ×18/10 for the 1.8× safety multiplier without floating point.
244
+ return (BigInt(meta.defaultMintGasLimit) * gasPrice * 18n) / 10n;
245
+ }
246
+ /** Read full pool state in one batch of eth_calls */
247
+ async readPoolOnchain(chainId, poolAddress) {
248
+ const [slot0Hex, liquidityHex, tickSpacingHex, feeHex, token0Hex, token1Hex] = await Promise.all([
249
+ this.ethCall(chainId, poolAddress, SLOT0_SELECTOR),
250
+ this.ethCall(chainId, poolAddress, LIQUIDITY_SELECTOR),
251
+ this.ethCall(chainId, poolAddress, TICK_SPACING_SELECTOR),
252
+ this.ethCall(chainId, poolAddress, FEE_SELECTOR),
253
+ this.ethCall(chainId, poolAddress, TOKEN0_SELECTOR),
254
+ this.ethCall(chainId, poolAddress, TOKEN1_SELECTOR),
255
+ ]);
256
+ // slot0 returns: (sqrtPriceX96 uint160, tick int24, observationIndex uint16,
257
+ // observationCardinality uint16, observationCardinalityNext uint16,
258
+ // feeProtocol uint8, unlocked bool)
259
+ const slot0Body = (0, pool_1.strip0x)(slot0Hex);
260
+ const sqrtPriceX96 = (0, pool_1.decodeUint256)(slot0Body, 0);
261
+ const tick = (0, pool_1.decodeInt24)(slot0Body, 64);
262
+ const liquidity = (0, pool_1.decodeUint256)((0, pool_1.strip0x)(liquidityHex), 0);
263
+ const tickSpacing = Number((0, pool_1.decodeInt24)((0, pool_1.strip0x)(tickSpacingHex), 0));
264
+ const fee = Number((0, pool_1.decodeUint256)((0, pool_1.strip0x)(feeHex), 0));
265
+ const token0 = (0, pool_1.decodeAddress)((0, pool_1.strip0x)(token0Hex), 0);
266
+ const token1 = (0, pool_1.decodeAddress)((0, pool_1.strip0x)(token1Hex), 0);
267
+ const [token0Decimals, token1Decimals] = await Promise.all([
268
+ this.readErc20Decimals(chainId, token0),
269
+ this.readErc20Decimals(chainId, token1),
270
+ ]);
271
+ const currentPrice = (0, pool_1.sqrtPriceX96ToPrice)(sqrtPriceX96, token0Decimals, token1Decimals);
272
+ return {
273
+ poolAddress,
274
+ chainId,
275
+ fee,
276
+ tickSpacing,
277
+ liquidity,
278
+ sqrtPriceX96,
279
+ currentTick: tick,
280
+ token0,
281
+ token1,
282
+ currentPrice,
283
+ };
284
+ }
285
+ async readErc20Decimals(chainId, tokenAddress) {
286
+ if (tokenAddress.toLowerCase() === exports.ZERO_ADDRESS)
287
+ return 18;
288
+ const hex = await this.ethCall(chainId, tokenAddress, DECIMALS_SELECTOR);
289
+ return Number((0, pool_1.decodeUint256)((0, pool_1.strip0x)(hex), 0));
290
+ }
291
+ // ---- Native price (USD) ----
292
+ /**
293
+ * Best-effort USD price for a chain's native coin. Tries Coingecko's free
294
+ * simple-price endpoint; returns null on failure (caller can degrade
295
+ * gracefully — show form without the USD warning).
296
+ */
297
+ async getNativePriceUsd(chainId) {
298
+ const meta = getChainMeta(chainId);
299
+ if (!meta)
300
+ return null;
301
+ try {
302
+ const url = `https://api.coingecko.com/api/v3/simple/price?ids=${meta.native.coingeckoId}&vs_currencies=usd`;
303
+ const res = await fetch(url);
304
+ if (!res.ok)
305
+ return null;
306
+ const json = (await res.json());
307
+ const price = json[meta.native.coingeckoId]?.usd;
308
+ return typeof price === 'number' ? price : null;
309
+ }
310
+ catch {
311
+ return null;
312
+ }
313
+ }
314
+ // ---- Add-liquidity amount split ----
315
+ /**
316
+ * Given a native deposit and a tick range, split it across token0/token1
317
+ * legs. Pure pool math — no swap quote calls.
318
+ *
319
+ * Uniswap V3 (in-range), using RAW √P (no decimal adjustment):
320
+ * amount0_raw = L · (1/√P - 1/√Pmax) // token0 base units
321
+ * amount1_raw = L · (√P - √Pmin) // token1 base units
322
+ *
323
+ * Critical: the V3 formula only works on raw sqrt price. Using a
324
+ * decimal-adjusted √P silently breaks the amount0:amount1 ratio whenever
325
+ * token0/token1 have different decimals (e.g. WETH/USDC: 18 vs 6).
326
+ *
327
+ * To split a single tokenIn (native) across both legs we need both legs
328
+ * in the same unit. Convert amount0 → token1 human-space via the
329
+ * decimal-adjusted pool price (`P_human = token1_human / token0_human`):
330
+ * value0_in_t1 = (amount0_raw / 10^d0) · P_human
331
+ * value1_in_t1 = amount1_raw / 10^d1
332
+ * ratio0 = value0_in_t1 / (value0 + value1)
333
+ *
334
+ * Note: this assumes 1 native ↔ 1 token0 / 1 token1 in *value* — fine when
335
+ * native is one of the pool tokens. When neither is native, swap
336
+ * fees/spreads pull the deposit slightly off ratio and the gateway's
337
+ * refund leg picks up the dust.
338
+ */
339
+ splitNativeAmountForRange(args) {
340
+ const { nativeAmountWei, pool, tickLower, tickUpper, token0Decimals, token1Decimals } = args;
341
+ // Raw sqrt prices (no decimal adjustment). sqrtPriceX96 / 2^96 = √(t1_raw/t0_raw).
342
+ const Q96_NUM = 2 ** 96;
343
+ const sqrtPRaw = Number(pool.sqrtPriceX96) / Q96_NUM;
344
+ const sqrtPminRaw = Math.pow(1.0001, tickLower / 2);
345
+ const sqrtPmaxRaw = Math.pow(1.0001, tickUpper / 2);
346
+ // Below range → all token0; above range → all token1.
347
+ if (sqrtPRaw <= sqrtPminRaw) {
348
+ return { ratio0: 1, ratio1: 0, amountInFor0Wei: nativeAmountWei, amountInFor1Wei: 0n };
349
+ }
350
+ if (sqrtPRaw >= sqrtPmaxRaw) {
351
+ return { ratio0: 0, ratio1: 1, amountInFor0Wei: 0n, amountInFor1Wei: nativeAmountWei };
352
+ }
353
+ // Per-unit-L raw amounts (token0/token1 base units, modulo L). L cancels.
354
+ const amount0PerL = 1 / sqrtPRaw - 1 / sqrtPmaxRaw;
355
+ const amount1PerL = sqrtPRaw - sqrtPminRaw;
356
+ // Both legs in token1 raw units: value0 = amount0_t0_wei * (t1/t0)_raw.
357
+ // (t1/t0)_raw = sqrtPRaw². The 10^d1 denominator is identical in both legs
358
+ // and cancels in the ratio, so we don't apply decimals here at all.
359
+ const priceRaw = sqrtPRaw * sqrtPRaw;
360
+ const value0 = amount0PerL * priceRaw;
361
+ const value1 = amount1PerL;
362
+ const total = value0 + value1;
363
+ if (!Number.isFinite(total) || total <= 0) {
364
+ throw new Error('splitNativeAmountForRange: invalid total value');
365
+ }
366
+ const ratio0 = value0 / total;
367
+ const ratio1 = 1 - ratio0;
368
+ void token0Decimals;
369
+ void token1Decimals;
370
+ // SCALE=1e15: stays under Number.MAX_SAFE_INTEGER (~9.007e15) and ratio0
371
+ // is in [0,1] so ratio0*SCALE never overflows. leg1 = total - leg0 keeps
372
+ // the wei sum exact (no rounding loss).
373
+ const SCALE = 1000000000000000n;
374
+ const ratio0Scaled = BigInt(Math.floor(ratio0 * Number(SCALE)));
375
+ const amountInFor0Wei = (nativeAmountWei * ratio0Scaled) / SCALE;
376
+ const amountInFor1Wei = nativeAmountWei - amountInFor0Wei;
377
+ return { ratio0, ratio1, amountInFor0Wei, amountInFor1Wei };
378
+ }
379
+ // ---- Swap quote (single-leg, same-chain) ----
380
+ /**
381
+ * Fetches a single-leg same-chain swap quote (native → token) used to mix
382
+ * the user's native input into pool token0 / token1 before minting.
383
+ *
384
+ * Provider is picked by `SwapServiceFactory` from the (numeric) chain id —
385
+ * deBridge for chains it supports, Relay otherwise. The return shape is
386
+ * normalised: `{ to, data, value, minAmountOut }`, regardless of provider.
387
+ *
388
+ * Throws on failure; caller decides whether to surface or skip.
389
+ */
390
+ async fetchSwapLeg(args) {
391
+ const numericChainId = Number.parseInt(args.chainId, 16);
392
+ if (!Number.isFinite(numericChainId)) {
393
+ throw new Error(`Invalid hex chain id: ${args.chainId}`);
394
+ }
395
+ const service = await this.swapFactory.getService(numericChainId);
396
+ const quote = await service.getQuote({
397
+ srcChainId: numericChainId,
398
+ srcTokenAddress: args.tokenIn,
399
+ srcTokenAmount: args.tokenInAmount,
400
+ dstChainId: numericChainId,
401
+ dstTokenAddress: args.tokenOut,
402
+ recipientAddress: args.tokenOutRecipient,
403
+ senderAddress: args.senderAddress ?? args.tokenOutRecipient,
404
+ slippage: args.slippage,
405
+ isCrossChain: false,
406
+ });
407
+ if (!quote.success || !quote.tx) {
408
+ throw new Error(quote.errorMessage ?? 'Swap quote failed');
409
+ }
410
+ const tx = quote.tx;
411
+ if (!tx.to || typeof tx.data !== 'string') {
412
+ throw new Error('Swap quote returned an unsupported tx shape (non-EVM payload?)');
413
+ }
414
+ // minAmountOut shape differs per provider: deBridge returns raw.tokenOut.minAmount;
415
+ // Relay surfaces it via raw.details.currencyOut.minimumAmount (string).
416
+ const raw = (quote.raw ?? {});
417
+ const minAmountOut = raw.tokenOut?.minAmount ?? raw.details?.currencyOut?.minimumAmount ?? '0';
418
+ return {
419
+ to: tx.to,
420
+ data: tx.data,
421
+ value: tx.value ?? '0',
422
+ minAmountOut,
423
+ };
424
+ }
425
+ // ---- Mint tx encoding ----
426
+ /**
427
+ * Encode a call to the CoinPool gateway's `mint(paymentInfo, exchanges, params)`
428
+ * function. Layout matches coinpool-v2's GatewayAbi.
429
+ *
430
+ * Function signature:
431
+ * mint(
432
+ * PaymentInfo[2] paymentInfo,
433
+ * Exchange[2] exchanges,
434
+ * MintParams params
435
+ * )
436
+ *
437
+ * Where:
438
+ * PaymentInfo = (address tokenIn, uint256 tokenInAmount, address tokenOut, uint256 tokenOutAmount)
439
+ * Exchange = (address to, bytes data, uint256 value)
440
+ * MintParams = (uint24 fee, uint256 amount0Min, uint256 amount1Min, int24 tickLower, int24 tickUpper)
441
+ */
442
+ encodeMintCalldata(args) {
443
+ if (args.paymentInfo.length !== 2 || args.exchanges.length !== 2) {
444
+ throw new Error('encodeMintCalldata: paymentInfo and exchanges must each have length 2');
445
+ }
446
+ const selector = (0, pool_1.functionSelector)('mint((address,uint256,address,uint256)[2],(address,bytes,uint256)[2],(uint24,uint256,uint256,int24,int24))');
447
+ // PaymentInfo[2] is a fixed-size array of static structs (4 × 32 bytes each)
448
+ // → encoded inline (no offset).
449
+ const paymentInfoEnc = args.paymentInfo
450
+ .map((p) => (0, pool_1.encodeAddress)(p.tokenIn) +
451
+ (0, pool_1.encodeUint)(p.tokenInAmount) +
452
+ (0, pool_1.encodeAddress)(p.tokenOut) +
453
+ (0, pool_1.encodeUint)(p.tokenOutAmount))
454
+ .join('');
455
+ // Exchange[2] contains a dynamic field (bytes), so it's a fixed array of dynamic
456
+ // structs → encoded with offsets relative to the start of the array.
457
+ const exchangeBodies = args.exchanges.map((e) => {
458
+ const dataClean = (0, pool_1.strip0x)(e.data || '0x');
459
+ const dataLen = dataClean.length / 2;
460
+ const dataLenEnc = (0, pool_1.encodeUint)(dataLen);
461
+ // Pad data to 32-byte boundary
462
+ const padding = (64 - (dataClean.length % 64)) % 64;
463
+ const dataPadded = dataClean + '0'.repeat(padding);
464
+ // Inside one Exchange struct: head = (to, dataOffset, value); offsets are
465
+ // relative to the struct start. dataOffset = 3*32 = 96.
466
+ const head = (0, pool_1.encodeAddress)(e.to) + (0, pool_1.encodeUint)(96) + (0, pool_1.encodeUint)(e.value);
467
+ return { head, body: dataLenEnc + dataPadded };
468
+ });
469
+ // For Exchange[2]: each element is itself a dynamic tuple. Encode each as a
470
+ // standalone tuple (head + body), then prefix with offsets relative to the
471
+ // start of the array (the array itself has no length prefix because it's fixed-size).
472
+ const elementEncodings = exchangeBodies.map((e) => e.head + e.body);
473
+ let cursor = elementEncodings.length * 32; // 2 offsets, each 32 bytes
474
+ const offsets = [];
475
+ for (const enc of elementEncodings) {
476
+ offsets.push((0, pool_1.encodeUint)(cursor));
477
+ cursor += enc.length / 2;
478
+ }
479
+ const exchangesEnc = offsets.join('') + elementEncodings.join('');
480
+ // MintParams (static struct: uint24, uint256, uint256, int24, int24 → 5 slots)
481
+ const mintParamsEnc = (0, pool_1.encodeUint)(args.fee, 24) +
482
+ (0, pool_1.encodeUint)(args.amount0Min) +
483
+ (0, pool_1.encodeUint)(args.amount1Min) +
484
+ (0, pool_1.encodeInt24)(args.tickLower) +
485
+ (0, pool_1.encodeInt24)(args.tickUpper);
486
+ // Top-level args:
487
+ // - paymentInfo: static (4*32*2 = 256 bytes inline)
488
+ // - exchanges: dynamic → offset
489
+ // - mintParams: static → inline
490
+ const paymentInfoSize = 256; // 8 slots
491
+ const mintParamsSize = 160; // 5 slots
492
+ // Layout in calldata (after selector):
493
+ // [paymentInfo inline (8 slots)]
494
+ // [exchanges offset (1 slot)]
495
+ // [mintParams inline (5 slots)]
496
+ // [exchanges body]
497
+ const exchangesOffset = paymentInfoSize + 32 + mintParamsSize;
498
+ const body = paymentInfoEnc + (0, pool_1.encodeUint)(exchangesOffset) + mintParamsEnc + exchangesEnc;
499
+ return selector + body;
500
+ }
501
+ // suppress ts unused warning for keccakHex (kept exported for future address-derive needs)
502
+ _keccak(hex) {
503
+ return (0, pool_1.keccakHex)(hex);
504
+ }
505
+ }
506
+ exports.PoolService = PoolService;
507
+ //# sourceMappingURL=PoolService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolService.js","sourceRoot":"","sources":["../../src/services/PoolService.ts"],"names":[],"mappings":"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"}