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