keyring-agent-core 0.2.1 → 0.2.2

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 (417) hide show
  1. package/dist/index.d.ts +6692 -27
  2. package/dist/index.js +877 -70
  3. package/package.json +4 -3
  4. package/dist/agent/AgentCore.d.ts +0 -256
  5. package/dist/agent/AgentCore.d.ts.map +0 -1
  6. package/dist/agent/AgentCore.js +0 -1093
  7. package/dist/agent/AgentCore.js.map +0 -1
  8. package/dist/agent/QueryRewriter.d.ts +0 -84
  9. package/dist/agent/QueryRewriter.d.ts.map +0 -1
  10. package/dist/agent/QueryRewriter.js +0 -306
  11. package/dist/agent/QueryRewriter.js.map +0 -1
  12. package/dist/agent/Router.d.ts +0 -33
  13. package/dist/agent/Router.d.ts.map +0 -1
  14. package/dist/agent/Router.js +0 -229
  15. package/dist/agent/Router.js.map +0 -1
  16. package/dist/agent/Subagent.d.ts +0 -80
  17. package/dist/agent/Subagent.d.ts.map +0 -1
  18. package/dist/agent/Subagent.js +0 -272
  19. package/dist/agent/Subagent.js.map +0 -1
  20. package/dist/agent/Synthesizer.d.ts +0 -11
  21. package/dist/agent/Synthesizer.d.ts.map +0 -1
  22. package/dist/agent/Synthesizer.js +0 -86
  23. package/dist/agent/Synthesizer.js.map +0 -1
  24. package/dist/agent/chatGraph.d.ts +0 -364
  25. package/dist/agent/chatGraph.d.ts.map +0 -1
  26. package/dist/agent/chatGraph.js +0 -184
  27. package/dist/agent/chatGraph.js.map +0 -1
  28. package/dist/agent/index.d.ts +0 -10
  29. package/dist/agent/index.d.ts.map +0 -1
  30. package/dist/agent/index.js +0 -24
  31. package/dist/agent/index.js.map +0 -1
  32. package/dist/agent/subagents/AiAgent.d.ts +0 -6
  33. package/dist/agent/subagents/AiAgent.d.ts.map +0 -1
  34. package/dist/agent/subagents/AiAgent.js +0 -52
  35. package/dist/agent/subagents/AiAgent.js.map +0 -1
  36. package/dist/agent/subagents/NftAgent.d.ts +0 -6
  37. package/dist/agent/subagents/NftAgent.d.ts.map +0 -1
  38. package/dist/agent/subagents/NftAgent.js +0 -79
  39. package/dist/agent/subagents/NftAgent.js.map +0 -1
  40. package/dist/agent/subagents/PoolAgent.d.ts +0 -6
  41. package/dist/agent/subagents/PoolAgent.d.ts.map +0 -1
  42. package/dist/agent/subagents/PoolAgent.js +0 -184
  43. package/dist/agent/subagents/PoolAgent.js.map +0 -1
  44. package/dist/agent/subagents/PoolSubgraphAgent.d.ts +0 -6
  45. package/dist/agent/subagents/PoolSubgraphAgent.d.ts.map +0 -1
  46. package/dist/agent/subagents/PoolSubgraphAgent.js +0 -117
  47. package/dist/agent/subagents/PoolSubgraphAgent.js.map +0 -1
  48. package/dist/agent/subagents/TokenAgent.d.ts +0 -6
  49. package/dist/agent/subagents/TokenAgent.d.ts.map +0 -1
  50. package/dist/agent/subagents/TokenAgent.js +0 -76
  51. package/dist/agent/subagents/TokenAgent.js.map +0 -1
  52. package/dist/agent/subagents/WalletActionAgent.d.ts +0 -6
  53. package/dist/agent/subagents/WalletActionAgent.d.ts.map +0 -1
  54. package/dist/agent/subagents/WalletActionAgent.js +0 -55
  55. package/dist/agent/subagents/WalletActionAgent.js.map +0 -1
  56. package/dist/agent/subagents/WalletAgent.d.ts +0 -6
  57. package/dist/agent/subagents/WalletAgent.d.ts.map +0 -1
  58. package/dist/agent/subagents/WalletAgent.js +0 -93
  59. package/dist/agent/subagents/WalletAgent.js.map +0 -1
  60. package/dist/agent/subagents/index.d.ts +0 -34
  61. package/dist/agent/subagents/index.d.ts.map +0 -1
  62. package/dist/agent/subagents/index.js +0 -69
  63. package/dist/agent/subagents/index.js.map +0 -1
  64. package/dist/constants/abi.d.ts +0 -551
  65. package/dist/constants/abi.d.ts.map +0 -1
  66. package/dist/constants/abi.js +0 -690
  67. package/dist/constants/abi.js.map +0 -1
  68. package/dist/functions/pool.d.ts +0 -25
  69. package/dist/functions/pool.d.ts.map +0 -1
  70. package/dist/functions/pool.js +0 -151
  71. package/dist/functions/pool.js.map +0 -1
  72. package/dist/functions/web3.d.ts +0 -31
  73. package/dist/functions/web3.d.ts.map +0 -1
  74. package/dist/functions/web3.js +0 -232
  75. package/dist/functions/web3.js.map +0 -1
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js.map +0 -1
  78. package/dist/llm/GeminiProvider.d.ts +0 -16
  79. package/dist/llm/GeminiProvider.d.ts.map +0 -1
  80. package/dist/llm/GeminiProvider.js +0 -329
  81. package/dist/llm/GeminiProvider.js.map +0 -1
  82. package/dist/llm/index.d.ts +0 -2
  83. package/dist/llm/index.d.ts.map +0 -1
  84. package/dist/llm/index.js +0 -6
  85. package/dist/llm/index.js.map +0 -1
  86. package/dist/memory/ChatHistory.d.ts +0 -83
  87. package/dist/memory/ChatHistory.d.ts.map +0 -1
  88. package/dist/memory/ChatHistory.js +0 -143
  89. package/dist/memory/ChatHistory.js.map +0 -1
  90. package/dist/memory/KnowledgeBase.d.ts +0 -38
  91. package/dist/memory/KnowledgeBase.d.ts.map +0 -1
  92. package/dist/memory/KnowledgeBase.js +0 -139
  93. package/dist/memory/KnowledgeBase.js.map +0 -1
  94. package/dist/memory/Summarizer.d.ts +0 -12
  95. package/dist/memory/Summarizer.d.ts.map +0 -1
  96. package/dist/memory/Summarizer.js +0 -39
  97. package/dist/memory/Summarizer.js.map +0 -1
  98. package/dist/memory/UpstashKnowledgeBase.d.ts +0 -124
  99. package/dist/memory/UpstashKnowledgeBase.d.ts.map +0 -1
  100. package/dist/memory/UpstashKnowledgeBase.js +0 -152
  101. package/dist/memory/UpstashKnowledgeBase.js.map +0 -1
  102. package/dist/memory/historyUtils.d.ts +0 -58
  103. package/dist/memory/historyUtils.d.ts.map +0 -1
  104. package/dist/memory/historyUtils.js +0 -190
  105. package/dist/memory/historyUtils.js.map +0 -1
  106. package/dist/memory/index.d.ts +0 -7
  107. package/dist/memory/index.d.ts.map +0 -1
  108. package/dist/memory/index.js +0 -12
  109. package/dist/memory/index.js.map +0 -1
  110. package/dist/memory/ingestKnowledgeBase.d.ts +0 -17
  111. package/dist/memory/ingestKnowledgeBase.d.ts.map +0 -1
  112. package/dist/memory/ingestKnowledgeBase.js +0 -35
  113. package/dist/memory/ingestKnowledgeBase.js.map +0 -1
  114. package/dist/services/MoralisService.d.ts +0 -1328
  115. package/dist/services/MoralisService.d.ts.map +0 -1
  116. package/dist/services/MoralisService.js +0 -1239
  117. package/dist/services/MoralisService.js.map +0 -1
  118. package/dist/services/PantographService.d.ts +0 -98
  119. package/dist/services/PantographService.d.ts.map +0 -1
  120. package/dist/services/PantographService.js +0 -451
  121. package/dist/services/PantographService.js.map +0 -1
  122. package/dist/services/PoolService.d.ts +0 -238
  123. package/dist/services/PoolService.d.ts.map +0 -1
  124. package/dist/services/PoolService.js +0 -485
  125. package/dist/services/PoolService.js.map +0 -1
  126. package/dist/services/UniswapService.d.ts +0 -289
  127. package/dist/services/UniswapService.d.ts.map +0 -1
  128. package/dist/services/UniswapService.js +0 -585
  129. package/dist/services/UniswapService.js.map +0 -1
  130. package/dist/services/UniswapSubgraphService.d.ts +0 -144
  131. package/dist/services/UniswapSubgraphService.d.ts.map +0 -1
  132. package/dist/services/UniswapSubgraphService.js +0 -606
  133. package/dist/services/UniswapSubgraphService.js.map +0 -1
  134. package/dist/services/rpc.d.ts +0 -35
  135. package/dist/services/rpc.d.ts.map +0 -1
  136. package/dist/services/rpc.js +0 -110
  137. package/dist/services/rpc.js.map +0 -1
  138. package/dist/services/swap/BaseSwapService.d.ts +0 -17
  139. package/dist/services/swap/BaseSwapService.d.ts.map +0 -1
  140. package/dist/services/swap/BaseSwapService.js +0 -19
  141. package/dist/services/swap/BaseSwapService.js.map +0 -1
  142. package/dist/services/swap/DebridgeAdapter.d.ts +0 -37
  143. package/dist/services/swap/DebridgeAdapter.d.ts.map +0 -1
  144. package/dist/services/swap/DebridgeAdapter.js +0 -243
  145. package/dist/services/swap/DebridgeAdapter.js.map +0 -1
  146. package/dist/services/swap/RelayAdapter.d.ts +0 -19
  147. package/dist/services/swap/RelayAdapter.d.ts.map +0 -1
  148. package/dist/services/swap/RelayAdapter.js +0 -189
  149. package/dist/services/swap/RelayAdapter.js.map +0 -1
  150. package/dist/services/swap/SwapServiceFactory.d.ts +0 -25
  151. package/dist/services/swap/SwapServiceFactory.d.ts.map +0 -1
  152. package/dist/services/swap/SwapServiceFactory.js +0 -79
  153. package/dist/services/swap/SwapServiceFactory.js.map +0 -1
  154. package/dist/services/swap/addresses.d.ts +0 -3
  155. package/dist/services/swap/addresses.d.ts.map +0 -1
  156. package/dist/services/swap/addresses.js +0 -68
  157. package/dist/services/swap/addresses.js.map +0 -1
  158. package/dist/services/swap/affiliate.d.ts +0 -17
  159. package/dist/services/swap/affiliate.d.ts.map +0 -1
  160. package/dist/services/swap/affiliate.js +0 -126
  161. package/dist/services/swap/affiliate.js.map +0 -1
  162. package/dist/services/swap/config.d.ts +0 -9
  163. package/dist/services/swap/config.d.ts.map +0 -1
  164. package/dist/services/swap/config.js +0 -19
  165. package/dist/services/swap/config.js.map +0 -1
  166. package/dist/services/swap/index.d.ts +0 -10
  167. package/dist/services/swap/index.d.ts.map +0 -1
  168. package/dist/services/swap/index.js +0 -22
  169. package/dist/services/swap/index.js.map +0 -1
  170. package/dist/services/swap/types.d.ts +0 -89
  171. package/dist/services/swap/types.d.ts.map +0 -1
  172. package/dist/services/swap/types.js +0 -6
  173. package/dist/services/swap/types.js.map +0 -1
  174. package/dist/tools/BaseTool.d.ts +0 -15
  175. package/dist/tools/BaseTool.d.ts.map +0 -1
  176. package/dist/tools/BaseTool.js +0 -35
  177. package/dist/tools/BaseTool.js.map +0 -1
  178. package/dist/tools/ToolRegistry.d.ts +0 -27
  179. package/dist/tools/ToolRegistry.d.ts.map +0 -1
  180. package/dist/tools/ToolRegistry.js +0 -80
  181. package/dist/tools/ToolRegistry.js.map +0 -1
  182. package/dist/tools/builtin/ai/GeminiSearchAiTool.d.ts +0 -36
  183. package/dist/tools/builtin/ai/GeminiSearchAiTool.d.ts.map +0 -1
  184. package/dist/tools/builtin/ai/GeminiSearchAiTool.js +0 -91
  185. package/dist/tools/builtin/ai/GeminiSearchAiTool.js.map +0 -1
  186. package/dist/tools/builtin/ai/index.d.ts +0 -3
  187. package/dist/tools/builtin/ai/index.d.ts.map +0 -1
  188. package/dist/tools/builtin/ai/index.js +0 -6
  189. package/dist/tools/builtin/ai/index.js.map +0 -1
  190. package/dist/tools/builtin/index.d.ts +0 -8
  191. package/dist/tools/builtin/index.d.ts.map +0 -1
  192. package/dist/tools/builtin/index.js +0 -24
  193. package/dist/tools/builtin/index.js.map +0 -1
  194. package/dist/tools/builtin/nft/BaseNftMessageTool.d.ts +0 -35
  195. package/dist/tools/builtin/nft/BaseNftMessageTool.d.ts.map +0 -1
  196. package/dist/tools/builtin/nft/BaseNftMessageTool.js +0 -45
  197. package/dist/tools/builtin/nft/BaseNftMessageTool.js.map +0 -1
  198. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts +0 -15
  199. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts.map +0 -1
  200. package/dist/tools/builtin/nft/NFTContractInfoTool.js +0 -19
  201. package/dist/tools/builtin/nft/NFTContractInfoTool.js.map +0 -1
  202. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts +0 -15
  203. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts.map +0 -1
  204. package/dist/tools/builtin/nft/NFTMetadataTool.js +0 -20
  205. package/dist/tools/builtin/nft/NFTMetadataTool.js.map +0 -1
  206. package/dist/tools/builtin/nft/SendNftTool.d.ts +0 -14
  207. package/dist/tools/builtin/nft/SendNftTool.d.ts.map +0 -1
  208. package/dist/tools/builtin/nft/SendNftTool.js +0 -20
  209. package/dist/tools/builtin/nft/SendNftTool.js.map +0 -1
  210. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts +0 -15
  211. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts.map +0 -1
  212. package/dist/tools/builtin/nft/WalletNFTsTool.js +0 -20
  213. package/dist/tools/builtin/nft/WalletNFTsTool.js.map +0 -1
  214. package/dist/tools/builtin/nft/index.d.ts +0 -7
  215. package/dist/tools/builtin/nft/index.d.ts.map +0 -1
  216. package/dist/tools/builtin/nft/index.js +0 -10
  217. package/dist/tools/builtin/nft/index.js.map +0 -1
  218. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts +0 -124
  219. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts.map +0 -1
  220. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js +0 -236
  221. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js.map +0 -1
  222. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts +0 -128
  223. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts.map +0 -1
  224. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js +0 -520
  225. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js.map +0 -1
  226. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts +0 -127
  227. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts.map +0 -1
  228. package/dist/tools/builtin/pool/PoolByAddressTool.js +0 -238
  229. package/dist/tools/builtin/pool/PoolByAddressTool.js.map +0 -1
  230. package/dist/tools/builtin/pool/PoolDetailTool.d.ts +0 -127
  231. package/dist/tools/builtin/pool/PoolDetailTool.d.ts.map +0 -1
  232. package/dist/tools/builtin/pool/PoolDetailTool.js +0 -273
  233. package/dist/tools/builtin/pool/PoolDetailTool.js.map +0 -1
  234. package/dist/tools/builtin/pool/PoolSearchTool.d.ts +0 -50
  235. package/dist/tools/builtin/pool/PoolSearchTool.d.ts.map +0 -1
  236. package/dist/tools/builtin/pool/PoolSearchTool.js +0 -160
  237. package/dist/tools/builtin/pool/PoolSearchTool.js.map +0 -1
  238. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts +0 -124
  239. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts.map +0 -1
  240. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js +0 -382
  241. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js.map +0 -1
  242. package/dist/tools/builtin/pool/TopPoolsTool.d.ts +0 -68
  243. package/dist/tools/builtin/pool/TopPoolsTool.d.ts.map +0 -1
  244. package/dist/tools/builtin/pool/TopPoolsTool.js +0 -159
  245. package/dist/tools/builtin/pool/TopPoolsTool.js.map +0 -1
  246. package/dist/tools/builtin/pool/index.d.ts +0 -15
  247. package/dist/tools/builtin/pool/index.d.ts.map +0 -1
  248. package/dist/tools/builtin/pool/index.js +0 -18
  249. package/dist/tools/builtin/pool/index.js.map +0 -1
  250. package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.d.ts +0 -54
  251. package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.d.ts.map +0 -1
  252. package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.js +0 -98
  253. package/dist/tools/builtin/pool-subgraph/SubgraphCoinPoolPairsTool.js.map +0 -1
  254. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.d.ts +0 -63
  255. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.d.ts.map +0 -1
  256. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.js +0 -82
  257. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByAddressTool.js.map +0 -1
  258. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.d.ts +0 -79
  259. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.d.ts.map +0 -1
  260. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.js +0 -97
  261. package/dist/tools/builtin/pool-subgraph/SubgraphPoolByPositionIdTool.js.map +0 -1
  262. package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.d.ts +0 -77
  263. package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.d.ts.map +0 -1
  264. package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.js +0 -190
  265. package/dist/tools/builtin/pool-subgraph/SubgraphPoolSearchTool.js.map +0 -1
  266. package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.d.ts +0 -107
  267. package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.d.ts.map +0 -1
  268. package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.js +0 -92
  269. package/dist/tools/builtin/pool-subgraph/SubgraphPositionDetailTool.js.map +0 -1
  270. package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.d.ts +0 -56
  271. package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.d.ts.map +0 -1
  272. package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.js +0 -94
  273. package/dist/tools/builtin/pool-subgraph/SubgraphTrendingPoolsTool.js.map +0 -1
  274. package/dist/tools/builtin/pool-subgraph/index.d.ts +0 -13
  275. package/dist/tools/builtin/pool-subgraph/index.d.ts.map +0 -1
  276. package/dist/tools/builtin/pool-subgraph/index.js +0 -18
  277. package/dist/tools/builtin/pool-subgraph/index.js.map +0 -1
  278. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts +0 -71
  279. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts.map +0 -1
  280. package/dist/tools/builtin/token/TokenAnalyticsTool.js +0 -147
  281. package/dist/tools/builtin/token/TokenAnalyticsTool.js.map +0 -1
  282. package/dist/tools/builtin/token/TokenHoldersTool.d.ts +0 -81
  283. package/dist/tools/builtin/token/TokenHoldersTool.d.ts.map +0 -1
  284. package/dist/tools/builtin/token/TokenHoldersTool.js +0 -139
  285. package/dist/tools/builtin/token/TokenHoldersTool.js.map +0 -1
  286. package/dist/tools/builtin/token/TokenInfoTool.d.ts +0 -40
  287. package/dist/tools/builtin/token/TokenInfoTool.d.ts.map +0 -1
  288. package/dist/tools/builtin/token/TokenInfoTool.js +0 -221
  289. package/dist/tools/builtin/token/TokenInfoTool.js.map +0 -1
  290. package/dist/tools/builtin/token/TokenScoreTool.d.ts +0 -63
  291. package/dist/tools/builtin/token/TokenScoreTool.d.ts.map +0 -1
  292. package/dist/tools/builtin/token/TokenScoreTool.js +0 -148
  293. package/dist/tools/builtin/token/TokenScoreTool.js.map +0 -1
  294. package/dist/tools/builtin/token/TopGainersTool.d.ts +0 -37
  295. package/dist/tools/builtin/token/TopGainersTool.d.ts.map +0 -1
  296. package/dist/tools/builtin/token/TopGainersTool.js +0 -100
  297. package/dist/tools/builtin/token/TopGainersTool.js.map +0 -1
  298. package/dist/tools/builtin/token/TopLosersTool.d.ts +0 -66
  299. package/dist/tools/builtin/token/TopLosersTool.d.ts.map +0 -1
  300. package/dist/tools/builtin/token/TopLosersTool.js +0 -129
  301. package/dist/tools/builtin/token/TopLosersTool.js.map +0 -1
  302. package/dist/tools/builtin/token/TrendingTokensTool.d.ts +0 -39
  303. package/dist/tools/builtin/token/TrendingTokensTool.d.ts.map +0 -1
  304. package/dist/tools/builtin/token/TrendingTokensTool.js +0 -83
  305. package/dist/tools/builtin/token/TrendingTokensTool.js.map +0 -1
  306. package/dist/tools/builtin/token/index.d.ts +0 -13
  307. package/dist/tools/builtin/token/index.d.ts.map +0 -1
  308. package/dist/tools/builtin/token/index.js +0 -16
  309. package/dist/tools/builtin/token/index.js.map +0 -1
  310. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts +0 -70
  311. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts.map +0 -1
  312. package/dist/tools/builtin/wallet/TransactionByHashTool.js +0 -111
  313. package/dist/tools/builtin/wallet/TransactionByHashTool.js.map +0 -1
  314. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts +0 -107
  315. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts.map +0 -1
  316. package/dist/tools/builtin/wallet/WalletApprovalsTool.js +0 -164
  317. package/dist/tools/builtin/wallet/WalletApprovalsTool.js.map +0 -1
  318. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts +0 -61
  319. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts.map +0 -1
  320. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js +0 -100
  321. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js.map +0 -1
  322. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts +0 -68
  323. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts.map +0 -1
  324. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js +0 -115
  325. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js.map +0 -1
  326. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts +0 -50
  327. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts.map +0 -1
  328. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js +0 -80
  329. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js.map +0 -1
  330. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts +0 -31
  331. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts.map +0 -1
  332. package/dist/tools/builtin/wallet/WalletHistoryTool.js +0 -154
  333. package/dist/tools/builtin/wallet/WalletHistoryTool.js.map +0 -1
  334. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts +0 -44
  335. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts.map +0 -1
  336. package/dist/tools/builtin/wallet/WalletNetWorthTool.js +0 -122
  337. package/dist/tools/builtin/wallet/WalletNetWorthTool.js.map +0 -1
  338. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts +0 -86
  339. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts.map +0 -1
  340. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js +0 -265
  341. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js.map +0 -1
  342. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts +0 -43
  343. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts.map +0 -1
  344. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js +0 -89
  345. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js.map +0 -1
  346. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts +0 -43
  347. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts.map +0 -1
  348. package/dist/tools/builtin/wallet/WalletPnlTool.js +0 -175
  349. package/dist/tools/builtin/wallet/WalletPnlTool.js.map +0 -1
  350. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts +0 -35
  351. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts.map +0 -1
  352. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js +0 -68
  353. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js.map +0 -1
  354. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts +0 -109
  355. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts.map +0 -1
  356. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js +0 -354
  357. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js.map +0 -1
  358. package/dist/tools/builtin/wallet/index.d.ts +0 -28
  359. package/dist/tools/builtin/wallet/index.d.ts.map +0 -1
  360. package/dist/tools/builtin/wallet/index.js +0 -32
  361. package/dist/tools/builtin/wallet/index.js.map +0 -1
  362. package/dist/tools/builtin/wallet-action/ApproveTokenTool.d.ts +0 -25
  363. package/dist/tools/builtin/wallet-action/ApproveTokenTool.d.ts.map +0 -1
  364. package/dist/tools/builtin/wallet-action/ApproveTokenTool.js +0 -98
  365. package/dist/tools/builtin/wallet-action/ApproveTokenTool.js.map +0 -1
  366. package/dist/tools/builtin/wallet-action/BaseWalletActionTool.d.ts +0 -211
  367. package/dist/tools/builtin/wallet-action/BaseWalletActionTool.d.ts.map +0 -1
  368. package/dist/tools/builtin/wallet-action/BaseWalletActionTool.js +0 -499
  369. package/dist/tools/builtin/wallet-action/BaseWalletActionTool.js.map +0 -1
  370. package/dist/tools/builtin/wallet-action/BuyTokenTool.d.ts +0 -240
  371. package/dist/tools/builtin/wallet-action/BuyTokenTool.d.ts.map +0 -1
  372. package/dist/tools/builtin/wallet-action/BuyTokenTool.js +0 -1257
  373. package/dist/tools/builtin/wallet-action/BuyTokenTool.js.map +0 -1
  374. package/dist/tools/builtin/wallet-action/SendNativeTool.d.ts +0 -41
  375. package/dist/tools/builtin/wallet-action/SendNativeTool.d.ts.map +0 -1
  376. package/dist/tools/builtin/wallet-action/SendNativeTool.js +0 -127
  377. package/dist/tools/builtin/wallet-action/SendNativeTool.js.map +0 -1
  378. package/dist/tools/builtin/wallet-action/SendTokenTool.d.ts +0 -63
  379. package/dist/tools/builtin/wallet-action/SendTokenTool.d.ts.map +0 -1
  380. package/dist/tools/builtin/wallet-action/SendTokenTool.js +0 -294
  381. package/dist/tools/builtin/wallet-action/SendTokenTool.js.map +0 -1
  382. package/dist/tools/builtin/wallet-action/SwapTokenTool.d.ts +0 -247
  383. package/dist/tools/builtin/wallet-action/SwapTokenTool.d.ts.map +0 -1
  384. package/dist/tools/builtin/wallet-action/SwapTokenTool.js +0 -1258
  385. package/dist/tools/builtin/wallet-action/SwapTokenTool.js.map +0 -1
  386. package/dist/tools/builtin/wallet-action/UnwrapNativeTool.d.ts +0 -20
  387. package/dist/tools/builtin/wallet-action/UnwrapNativeTool.d.ts.map +0 -1
  388. package/dist/tools/builtin/wallet-action/UnwrapNativeTool.js +0 -36
  389. package/dist/tools/builtin/wallet-action/UnwrapNativeTool.js.map +0 -1
  390. package/dist/tools/builtin/wallet-action/WrapNativeTool.d.ts +0 -23
  391. package/dist/tools/builtin/wallet-action/WrapNativeTool.d.ts.map +0 -1
  392. package/dist/tools/builtin/wallet-action/WrapNativeTool.js +0 -54
  393. package/dist/tools/builtin/wallet-action/WrapNativeTool.js.map +0 -1
  394. package/dist/tools/builtin/wallet-action/amountSpec.d.ts +0 -62
  395. package/dist/tools/builtin/wallet-action/amountSpec.d.ts.map +0 -1
  396. package/dist/tools/builtin/wallet-action/amountSpec.js +0 -93
  397. package/dist/tools/builtin/wallet-action/amountSpec.js.map +0 -1
  398. package/dist/tools/builtin/wallet-action/gasReserve.d.ts +0 -42
  399. package/dist/tools/builtin/wallet-action/gasReserve.d.ts.map +0 -1
  400. package/dist/tools/builtin/wallet-action/gasReserve.js +0 -103
  401. package/dist/tools/builtin/wallet-action/gasReserve.js.map +0 -1
  402. package/dist/tools/builtin/wallet-action/index.d.ts +0 -9
  403. package/dist/tools/builtin/wallet-action/index.d.ts.map +0 -1
  404. package/dist/tools/builtin/wallet-action/index.js +0 -20
  405. package/dist/tools/builtin/wallet-action/index.js.map +0 -1
  406. package/dist/tools/chainResolver.d.ts +0 -98
  407. package/dist/tools/chainResolver.d.ts.map +0 -1
  408. package/dist/tools/chainResolver.js +0 -302
  409. package/dist/tools/chainResolver.js.map +0 -1
  410. package/dist/tools/index.d.ts +0 -4
  411. package/dist/tools/index.d.ts.map +0 -1
  412. package/dist/tools/index.js +0 -23
  413. package/dist/tools/index.js.map +0 -1
  414. package/dist/types/index.d.ts +0 -777
  415. package/dist/types/index.d.ts.map +0 -1
  416. package/dist/types/index.js +0 -6
  417. package/dist/types/index.js.map +0 -1
@@ -1,585 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"UniswapService.js","sourceRoot":"","sources":["../../src/services/UniswapService.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,4CAAiD;AAgPjD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;AACjE,MAAM,kBAAkB,GAAG,yDAAyD,CAAC;AACrF,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AACtE,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;GAGG;AACH,MAAM,yBAAyB,GAA2B;IACxD,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCpB,CAAC;AAEH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;EAe3B,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;EAiBpB,oBAAoB,EAAE,CAAC;AAEzB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBpB,oBAAoB,EAAE,CAAC;AAEzB;;;GAGG;AACH,MAAM,uBAAuB,GAA2B;IACtD,KAAK,EAAE,CAAC,EAAE,WAAW;IACrB,KAAK,EAAE,EAAE,EAAE,WAAW;IACtB,MAAM,EAAE,EAAE,EAAE,MAAM;IAClB,MAAM,EAAE,GAAG,EAAE,UAAU;IACvB,QAAQ,EAAE,IAAI,EAAE,OAAO;IACvB,QAAQ,EAAE,KAAK,EAAE,WAAW;IAC5B,QAAQ,EAAE,KAAK,EAAE,YAAY;IAC7B,QAAQ,EAAE,KAAK,EAAE,QAAQ;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,iEAAiE;AACjE,SAAS,gBAAgB,CAAC,KAAgC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,qDAAqD;AACrD,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,yBAAyB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA+B,EAAE,OAA+B;IACxF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QACjC,KAAK,IAAI;YACP,OAAO,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QACjC,KAAK,IAAI;YACP,OAAO,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAmB,EAAE,GAAgC;IACzE,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;QAClC,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QACnC,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,KAAK,KAAK,CAAC;QACX;YACE,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAmB;IACrC,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC;IACpC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAChD,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAa,cAAc;IACjB,OAAO,CAAS;IAExB,YAAY,MAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,MAGrB;QACC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QAE/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE,GAAG,qCAAqC,OAAO,EAAE,CAAC;QAEpG,IAAI,SAAS,GAAG,eAAe,CAAC;QAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC3B,OAAO,EAAE;wBACP,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,yBAAyB;wBACjC,OAAO,EAAE,0BAA0B;wBACnC,kBAAkB,EAAE,aAAa;qBAClC;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACrE,IAAI,OAAO,GAAG,WAAW;oBAAE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,MAA0B;QAC1C,MAAM,OAAO,GAA2B,MAAM,EAAE,eAAe,IAAI,IAAI,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC;QAEvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,8BAA8B,EAAE,CAAC;QAClF,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC;YACJ,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;YAClB,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACpG,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;YAC/D,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;YAC/D,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE;YAC9D,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,IAKpC;QACC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,eAAe,CAAC;QAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC3B,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,KAAK;wBACb,cAAc,EAAE,kBAAkB;wBAClC,MAAM,EAAE,yBAAyB;wBACjC,OAAO,EAAE,0BAA0B;wBACnC,kBAAkB,EAAE,aAAa;wBACjC,2CAA2C,EAAE,IAAI,CAAC,aAAa;wBAC/D,2CAA2C,EAAE,OAAO;qBACrD;oBACD,IAAI;iBACL,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;gBACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;gBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;gBACrD,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACrE,IAAI,OAAO,GAAG,WAAW;oBAAE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC/D,CAAC;QACD,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,+HAA+H;aAClI,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,UAAU,EAAE,OAAO;YACnB,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,eAAe,CAAC;QAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC3B,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,KAAK;wBACb,0BAA0B,EAAE,GAAG;wBAC/B,cAAc,EAAE,kBAAkB;wBAClC,MAAM,EAAE,yBAAyB;wBACjC,OAAO,EAAE,0BAA0B;wBACnC,kBAAkB,EAAE,aAAa;qBAClC;oBACD,IAAI;iBACL,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;gBACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACrE,IAAI,OAAO,GAAG,WAAW;oBAAE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,cAAc,GAAmC,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACtF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzG,sEAAsE;QACtE,sDAAsD;QACtD,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;SAC9C,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAChE,MAAM,GAAG,GACP,SAAS,CAAC,MAAM,KAAK,UAAU;gBAC7B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC1B,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;YAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;QAED,6EAA6E;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpE,oEAAoE;QACpE,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAChD,IAAI,cAAc,KAAK,KAAK;YAAE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,cAAc,CAAC,CAAC;QAClH,IAAI,aAAa,IAAI,IAAI;YAAE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC;QAEtG,8EAA8E;QAC9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,EAAE;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,uEAAuE;QACvE,2EAA2E;QAC3E,0EAA0E;QAC1E,6DAA6D;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACrF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxC,MAAM,QAAQ,GAA6B,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC5G,8DAA8D;YAE9D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,SAAS;oBACpB,IAAI,aAAa,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa;wBAAE,SAAS;oBAEnE,4EAA4E;oBAC5E,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtF,CAAC;oBACF,IAAI,CAAC,OAAO;wBAAE,SAAS;oBAEvB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,QAAQ,EAAE,CAAC;wBACb,qDAAqD;wBACrD,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;4BACjB,GAAG,QAAQ;4BACX,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC9E,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7E,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACrD,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,oCAAoC;wBACpC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;4BACjB,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,eAAe,EAAE,CAAC,CAAC,eAAe;4BAClC,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gCACd,CAAC,CAAC;oCACE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;oCACzB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;oCACvB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;oCACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;iCAC5B;gCACH,CAAC,CAAC,SAAS;4BACb,MAAM,EAAE,CAAC,CAAC,MAAM;gCACd,CAAC,CAAC;oCACE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;oCACzB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;oCACvB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;oCACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;iCAC5B;gCACH,CAAC,CAAC,SAAS;4BACb,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC9E,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7E,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACrD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,mDAAmD;QACnD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAY;QACtD,IAAI,SAAS,GAAG,eAAe,CAAC;QAChC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC3B,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,KAAK;wBACb,0BAA0B,EAAE,GAAG;wBAC/B,cAAc,EAAE,kBAAkB;wBAClC,MAAM,EAAE,yBAAyB;wBACjC,OAAO,EAAE,0BAA0B;wBACnC,kBAAkB,EAAE,aAAa;qBAClC;oBACD,IAAI;iBACL,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACrE,IAAI,OAAO,GAAG,WAAW;oBAAE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;4FACwF;IAChF,UAAU,CAAC,CAAmB,EAAE,UAAoB;QAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7F,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,GAAG,KAAK,IAAI;oBAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;qBACtC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;qBACnD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,IAAI,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7ZD,wCA6ZC"}