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,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletApprovalsTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const MoralisService_1 = require("../../../services/MoralisService");
|
|
6
|
+
/**
|
|
7
|
+
* Anything above 2^255 (≈ 5.79e76) is effectively unlimited for practical
|
|
8
|
+
* purposes. Strict-max (2^256-1) is the canonical `type(uint256).max`
|
|
9
|
+
* allowance, but some contracts round down when decrementing — so we treat
|
|
10
|
+
* "half of max" as the unlimited threshold.
|
|
11
|
+
*/
|
|
12
|
+
const UNLIMITED_ALLOWANCE_THRESHOLD = BigInt(2) ** BigInt(255);
|
|
13
|
+
/**
|
|
14
|
+
* Tool: get-wallet-approvals
|
|
15
|
+
*
|
|
16
|
+
* Queries `GET /wallets/{address}/approvals` — every active ERC-20 token
|
|
17
|
+
* approval the wallet currently has outstanding. This is the primary
|
|
18
|
+
* security-surface tool: surfacing unlimited approvals, high USD-at-risk
|
|
19
|
+
* approvals, and approvals to spam / unverified contracts.
|
|
20
|
+
*
|
|
21
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/approvals
|
|
22
|
+
*/
|
|
23
|
+
class WalletApprovalsTool extends BaseTool_1.BaseTool {
|
|
24
|
+
name = 'get-wallet-approvals';
|
|
25
|
+
description = "List every active ERC-20 token approval granted by a wallet — i.e. which contracts can still spend the wallet's tokens. " +
|
|
26
|
+
'For each approval, returns: the token (address, name, symbol, logo, current balance, USD price, ' +
|
|
27
|
+
'USD at risk, possible_spam, verified_contract), the spender (address, label, entity — e.g. ' +
|
|
28
|
+
'"Uniswap V3 Router", "Permit2"), the approved amount (value / value_formatted / isUnlimited flag), ' +
|
|
29
|
+
'and when the approval was granted (block number, timestamp, transaction hash). ' +
|
|
30
|
+
'Also returns aggregates: total approvals, unlimited-approval count, total USD at risk, ' +
|
|
31
|
+
'and approvals flagged as risky (spam tokens, unverified contracts, or unlimited allowance to unlabeled spenders). ' +
|
|
32
|
+
'Use for questions like: "What approvals do I have?", "Show my token approvals", ' +
|
|
33
|
+
'"Am I exposed to any risky approvals?", "Which contracts can drain my wallet?", ' +
|
|
34
|
+
'"Do I have any unlimited approvals?", "Revoke approvals / token allowances". ' +
|
|
35
|
+
'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea (EVM mainnets only). ' +
|
|
36
|
+
'Paginated — pass cursor to fetch the next page.';
|
|
37
|
+
category = 'blockchain-data';
|
|
38
|
+
parameters = [
|
|
39
|
+
{
|
|
40
|
+
name: 'address',
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'EVM wallet address (0x…). If omitted, uses the connected wallet from user context.',
|
|
43
|
+
required: false,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'chain',
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
|
|
49
|
+
'"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
|
|
50
|
+
required: true,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'limit',
|
|
54
|
+
type: 'number',
|
|
55
|
+
description: 'Page size (1-100, default 100).',
|
|
56
|
+
required: false,
|
|
57
|
+
default: 100,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'cursor',
|
|
61
|
+
type: 'string',
|
|
62
|
+
description: 'Pagination cursor from a previous response.',
|
|
63
|
+
required: false,
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
service;
|
|
67
|
+
constructor(config) {
|
|
68
|
+
super();
|
|
69
|
+
this.service = new MoralisService_1.MoralisService(config);
|
|
70
|
+
}
|
|
71
|
+
async run(args, userContext) {
|
|
72
|
+
const address = args.address || userContext?.walletAddress || undefined;
|
|
73
|
+
const chain = args.chain || userContext?.chain || undefined;
|
|
74
|
+
if (!address) {
|
|
75
|
+
return { error: 'No wallet address available. Please connect a wallet or pass "address".' };
|
|
76
|
+
}
|
|
77
|
+
const rawLimit = typeof args.limit === 'number' ? args.limit : Number(args.limit);
|
|
78
|
+
const limit = Number.isFinite(rawLimit) && rawLimit > 0 ? Math.min(100, Math.floor(rawLimit)) : 100;
|
|
79
|
+
const cursor = typeof args.cursor === 'string' && args.cursor ? args.cursor : undefined;
|
|
80
|
+
const result = await this.service.getWalletApprovals({ address, chain, limit, cursor });
|
|
81
|
+
if (!result.success) {
|
|
82
|
+
return { error: result.error || 'Failed to fetch wallet approvals' };
|
|
83
|
+
}
|
|
84
|
+
const data = result.data;
|
|
85
|
+
const rows = data.result || [];
|
|
86
|
+
const enriched = rows.map((a) => enrich(a));
|
|
87
|
+
let totalUsdAtRisk = 0;
|
|
88
|
+
let unlimitedCount = 0;
|
|
89
|
+
const risky = [];
|
|
90
|
+
for (const a of enriched) {
|
|
91
|
+
if (a.isUnlimited)
|
|
92
|
+
unlimitedCount += 1;
|
|
93
|
+
const atRisk = parseFloat(a.token.usdAtRisk ?? '');
|
|
94
|
+
if (Number.isFinite(atRisk))
|
|
95
|
+
totalUsdAtRisk += atRisk;
|
|
96
|
+
const tokenRisky = a.token.possibleSpam || a.token.verifiedContract === false;
|
|
97
|
+
const spenderRisky = !a.spender.label && !a.spender.entity;
|
|
98
|
+
if (tokenRisky || (a.isUnlimited && spenderRisky))
|
|
99
|
+
risky.push(a);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
walletAddress: address,
|
|
103
|
+
chain: chain || 'default',
|
|
104
|
+
filters: { limit, cursor: cursor ?? null },
|
|
105
|
+
pagination: {
|
|
106
|
+
cursor: data.cursor ?? null,
|
|
107
|
+
pageSize: data.page_size ?? limit,
|
|
108
|
+
page: data.page ?? null,
|
|
109
|
+
hasMore: !!data.cursor,
|
|
110
|
+
},
|
|
111
|
+
summary: {
|
|
112
|
+
totalApprovals: enriched.length,
|
|
113
|
+
unlimitedApprovals: unlimitedCount,
|
|
114
|
+
totalUsdAtRisk,
|
|
115
|
+
riskyApprovalCount: risky.length,
|
|
116
|
+
},
|
|
117
|
+
approvals: enriched,
|
|
118
|
+
riskyApprovals: risky,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.WalletApprovalsTool = WalletApprovalsTool;
|
|
123
|
+
function enrich(a) {
|
|
124
|
+
const isUnlimited = isUnlimitedValue(a.value);
|
|
125
|
+
return {
|
|
126
|
+
blockNumber: a.block_number,
|
|
127
|
+
blockTimestamp: a.block_timestamp ?? null,
|
|
128
|
+
transactionHash: a.transaction_hash ?? null,
|
|
129
|
+
value: a.value,
|
|
130
|
+
valueFormatted: a.value_formatted ?? null,
|
|
131
|
+
isUnlimited,
|
|
132
|
+
token: {
|
|
133
|
+
address: a.token.address,
|
|
134
|
+
addressLabel: a.token.address_label ?? null,
|
|
135
|
+
name: a.token.name ?? null,
|
|
136
|
+
symbol: a.token.symbol ?? null,
|
|
137
|
+
logo: a.token.logo ?? null,
|
|
138
|
+
possibleSpam: !!a.token.possible_spam,
|
|
139
|
+
verifiedContract: a.token.verified_contract ?? null,
|
|
140
|
+
currentBalance: a.token.current_balance ?? null,
|
|
141
|
+
currentBalanceFormatted: a.token.current_balance_formatted ?? null,
|
|
142
|
+
usdPrice: a.token.usd_price ?? null,
|
|
143
|
+
usdAtRisk: a.token.usd_at_risk ?? null,
|
|
144
|
+
},
|
|
145
|
+
spender: {
|
|
146
|
+
address: a.spender.address,
|
|
147
|
+
label: a.spender.address_label ?? null,
|
|
148
|
+
entity: a.spender.entity ?? null,
|
|
149
|
+
entityLogo: a.spender.entity_logo ?? null,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function isUnlimitedValue(raw) {
|
|
154
|
+
if (!raw)
|
|
155
|
+
return false;
|
|
156
|
+
try {
|
|
157
|
+
return BigInt(raw) >= UNLIMITED_ALLOWANCE_THRESHOLD;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=WalletApprovalsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletApprovalsTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletApprovalsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type MoralisServiceConfig } from '../../../services/MoralisService';
|
|
4
|
+
export type WalletDefiPositionsToolConfig = MoralisServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: get-wallet-defi-positions
|
|
7
|
+
*
|
|
8
|
+
* Queries `GET /wallets/{address}/defi/positions` — every DeFi position a
|
|
9
|
+
* wallet holds across all supported protocols, each enriched with tokens,
|
|
10
|
+
* balances, unclaimed rewards, and position-specific details.
|
|
11
|
+
*
|
|
12
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/wallet-positions
|
|
13
|
+
*/
|
|
14
|
+
export declare class WalletDefiPositionsTool extends BaseTool {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
category: string;
|
|
18
|
+
parameters: ToolParameter[];
|
|
19
|
+
private service;
|
|
20
|
+
constructor(config?: WalletDefiPositionsToolConfig);
|
|
21
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
22
|
+
error: string;
|
|
23
|
+
walletAddress?: undefined;
|
|
24
|
+
chain?: undefined;
|
|
25
|
+
positionCount?: undefined;
|
|
26
|
+
positions?: undefined;
|
|
27
|
+
} | {
|
|
28
|
+
walletAddress: string;
|
|
29
|
+
chain: string;
|
|
30
|
+
positionCount: number;
|
|
31
|
+
positions: {
|
|
32
|
+
protocolName: string;
|
|
33
|
+
protocolId: string;
|
|
34
|
+
protocolUrl: string;
|
|
35
|
+
protocolLogo: string;
|
|
36
|
+
accountHealthFactor: number | null;
|
|
37
|
+
position: {
|
|
38
|
+
label: string;
|
|
39
|
+
address: string | undefined;
|
|
40
|
+
balanceUsd: number;
|
|
41
|
+
totalUnclaimedUsdValue: number;
|
|
42
|
+
tokens: {
|
|
43
|
+
tokenType: string;
|
|
44
|
+
name: string;
|
|
45
|
+
symbol: string;
|
|
46
|
+
contractAddress: string;
|
|
47
|
+
decimals: number;
|
|
48
|
+
logo: string | undefined;
|
|
49
|
+
thumbnail: string | undefined;
|
|
50
|
+
balance: string;
|
|
51
|
+
balanceFormatted: string;
|
|
52
|
+
usdPrice: number | undefined;
|
|
53
|
+
usdValue: number | undefined;
|
|
54
|
+
}[];
|
|
55
|
+
details: import("../../../services/MoralisService").DefiPositionDetails | null;
|
|
56
|
+
};
|
|
57
|
+
}[];
|
|
58
|
+
error?: undefined;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=WalletDefiPositionsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletDefiPositionsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletDefiPositionsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD,IAAI,SAA+B;IACnC,WAAW,SASuE;IAClF,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAezB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,6BAA6B;cAKlC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB7E"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletDefiPositionsTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const MoralisService_1 = require("../../../services/MoralisService");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: get-wallet-defi-positions
|
|
8
|
+
*
|
|
9
|
+
* Queries `GET /wallets/{address}/defi/positions` — every DeFi position a
|
|
10
|
+
* wallet holds across all supported protocols, each enriched with tokens,
|
|
11
|
+
* balances, unclaimed rewards, and position-specific details.
|
|
12
|
+
*
|
|
13
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/wallet-positions
|
|
14
|
+
*/
|
|
15
|
+
class WalletDefiPositionsTool extends BaseTool_1.BaseTool {
|
|
16
|
+
name = 'get-wallet-defi-positions';
|
|
17
|
+
description = 'Get every DeFi position a wallet holds across all supported protocols, with full detail: ' +
|
|
18
|
+
'protocol identity, position label (e.g. "Liquidity Provision", "Supply", "Borrow", "Staking"), ' +
|
|
19
|
+
'tokens involved (with balances and USD values), balance_usd, total_unclaimed_usd_value, and ' +
|
|
20
|
+
'position_details (fee tier, liquidity, APY, price range, health factor, etc.). ' +
|
|
21
|
+
'Use for questions like: "Show my DeFi positions", "What LP positions do I have?", ' +
|
|
22
|
+
'"What am I staking?", "Do I have any borrows?", "List all my DeFi holdings with details". ' +
|
|
23
|
+
'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea. ' +
|
|
24
|
+
'Do NOT use for: aggregate totals → get-wallet-defi-summary; ' +
|
|
25
|
+
'positions filtered to a single protocol → get-wallet-defi-protocol-positions.';
|
|
26
|
+
category = 'blockchain-data';
|
|
27
|
+
parameters = [
|
|
28
|
+
{
|
|
29
|
+
name: 'address',
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'EVM wallet address (0x…). If omitted, uses the connected wallet from user context.',
|
|
32
|
+
required: false,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'chain',
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
|
|
38
|
+
'"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
|
|
39
|
+
required: true,
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
service;
|
|
43
|
+
constructor(config) {
|
|
44
|
+
super();
|
|
45
|
+
this.service = new MoralisService_1.MoralisService(config);
|
|
46
|
+
}
|
|
47
|
+
async run(args, userContext) {
|
|
48
|
+
const address = args.address || userContext?.walletAddress || undefined;
|
|
49
|
+
const chain = args.chain || userContext?.chain || undefined;
|
|
50
|
+
if (!address) {
|
|
51
|
+
return { error: 'No wallet address available. Please connect a wallet or pass "address".' };
|
|
52
|
+
}
|
|
53
|
+
const result = await this.service.getWalletDefiPositions({ address, chain });
|
|
54
|
+
if (!result.success) {
|
|
55
|
+
return { error: result.error || 'Failed to fetch wallet DeFi positions' };
|
|
56
|
+
}
|
|
57
|
+
const rows = result.data || [];
|
|
58
|
+
return {
|
|
59
|
+
walletAddress: address,
|
|
60
|
+
chain: chain || 'default',
|
|
61
|
+
positionCount: rows.length,
|
|
62
|
+
positions: rows.map((row) => mapRow(row)),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.WalletDefiPositionsTool = WalletDefiPositionsTool;
|
|
67
|
+
function mapRow(row) {
|
|
68
|
+
return {
|
|
69
|
+
protocolName: row.protocol_name,
|
|
70
|
+
protocolId: row.protocol_id,
|
|
71
|
+
protocolUrl: row.protocol_url,
|
|
72
|
+
protocolLogo: row.protocol_logo,
|
|
73
|
+
accountHealthFactor: row.account_data?.health_factor ?? null,
|
|
74
|
+
position: mapPosition(row.position),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function mapPosition(position) {
|
|
78
|
+
return {
|
|
79
|
+
label: position.label,
|
|
80
|
+
address: position.address,
|
|
81
|
+
balanceUsd: position.balance_usd,
|
|
82
|
+
totalUnclaimedUsdValue: position.total_unclaimed_usd_value,
|
|
83
|
+
tokens: (position.tokens || []).map((t) => ({
|
|
84
|
+
tokenType: t.token_type,
|
|
85
|
+
name: t.name,
|
|
86
|
+
symbol: t.symbol,
|
|
87
|
+
contractAddress: t.contract_address,
|
|
88
|
+
decimals: t.decimals,
|
|
89
|
+
logo: t.logo,
|
|
90
|
+
thumbnail: t.thumbnail,
|
|
91
|
+
balance: t.balance,
|
|
92
|
+
balanceFormatted: t.balance_formatted,
|
|
93
|
+
usdPrice: t.usd_price,
|
|
94
|
+
usdValue: t.usd_value,
|
|
95
|
+
})),
|
|
96
|
+
details: position.position_details ?? null,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=WalletDefiPositionsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletDefiPositionsTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletDefiPositionsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type MoralisServiceConfig } from '../../../services/MoralisService';
|
|
4
|
+
export type WalletDefiProtocolPositionsToolConfig = MoralisServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: get-wallet-defi-protocol-positions
|
|
7
|
+
*
|
|
8
|
+
* Queries `GET /wallets/{address}/defi/{protocol}/positions` — all positions
|
|
9
|
+
* a wallet holds inside a single, named DeFi protocol, with totals and full
|
|
10
|
+
* per-position details.
|
|
11
|
+
*
|
|
12
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/detailed-positions
|
|
13
|
+
*/
|
|
14
|
+
export declare class WalletDefiProtocolPositionsTool extends BaseTool {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
category: string;
|
|
18
|
+
parameters: ToolParameter[];
|
|
19
|
+
private service;
|
|
20
|
+
constructor(config?: WalletDefiProtocolPositionsToolConfig);
|
|
21
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
22
|
+
error: string;
|
|
23
|
+
walletAddress?: undefined;
|
|
24
|
+
chain?: undefined;
|
|
25
|
+
protocolName?: undefined;
|
|
26
|
+
protocolId?: undefined;
|
|
27
|
+
protocolUrl?: undefined;
|
|
28
|
+
protocolLogo?: undefined;
|
|
29
|
+
totalUsdValue?: undefined;
|
|
30
|
+
totalUnclaimedUsdValue?: undefined;
|
|
31
|
+
accountHealthFactor?: undefined;
|
|
32
|
+
positionCount?: undefined;
|
|
33
|
+
positions?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
walletAddress: string;
|
|
36
|
+
chain: string;
|
|
37
|
+
protocolName: string;
|
|
38
|
+
protocolId: string;
|
|
39
|
+
protocolUrl: string;
|
|
40
|
+
protocolLogo: string;
|
|
41
|
+
totalUsdValue: number;
|
|
42
|
+
totalUnclaimedUsdValue: number | null;
|
|
43
|
+
accountHealthFactor: number | null;
|
|
44
|
+
positionCount: number;
|
|
45
|
+
positions: {
|
|
46
|
+
label: string;
|
|
47
|
+
address: string | undefined;
|
|
48
|
+
balanceUsd: number;
|
|
49
|
+
totalUnclaimedUsdValue: number;
|
|
50
|
+
tokens: {
|
|
51
|
+
tokenType: string;
|
|
52
|
+
name: string;
|
|
53
|
+
symbol: string;
|
|
54
|
+
contractAddress: string;
|
|
55
|
+
decimals: number;
|
|
56
|
+
logo: string | undefined;
|
|
57
|
+
thumbnail: string | undefined;
|
|
58
|
+
balance: string;
|
|
59
|
+
balanceFormatted: string;
|
|
60
|
+
usdPrice: number | undefined;
|
|
61
|
+
usdValue: number | undefined;
|
|
62
|
+
}[];
|
|
63
|
+
details: import("../../../services/MoralisService").DefiPositionDetails | null;
|
|
64
|
+
}[];
|
|
65
|
+
error?: undefined;
|
|
66
|
+
}>;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=WalletDefiProtocolPositionsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletDefiProtocolPositionsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletDefiProtocolPositionsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAqC,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEhH,MAAM,MAAM,qCAAqC,GAAG,oBAAoB,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,SAAQ,QAAQ;IAC3D,IAAI,SAAwC;IAC5C,WAAW,SASiG;IAC5G,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAuBzB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,qCAAqC;cAK1C,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7E"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletDefiProtocolPositionsTool = void 0;
|
|
4
|
+
const BaseTool_1 = require("../../BaseTool");
|
|
5
|
+
const MoralisService_1 = require("../../../services/MoralisService");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: get-wallet-defi-protocol-positions
|
|
8
|
+
*
|
|
9
|
+
* Queries `GET /wallets/{address}/defi/{protocol}/positions` — all positions
|
|
10
|
+
* a wallet holds inside a single, named DeFi protocol, with totals and full
|
|
11
|
+
* per-position details.
|
|
12
|
+
*
|
|
13
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/detailed-positions
|
|
14
|
+
*/
|
|
15
|
+
class WalletDefiProtocolPositionsTool extends BaseTool_1.BaseTool {
|
|
16
|
+
name = 'get-wallet-defi-protocol-positions';
|
|
17
|
+
description = 'Get every position a wallet holds inside a specific DeFi protocol, with full detail. ' +
|
|
18
|
+
'Returns the protocol identity, totals (total_usd_value, total_unclaimed_usd_value), ' +
|
|
19
|
+
'and an array of positions (label, tokens, balance_usd, unclaimed, fee tier, APY, health factor, etc.). ' +
|
|
20
|
+
'Use when the user names a specific protocol, e.g. "my Uniswap v3 positions", "what do I have on Aave v3", ' +
|
|
21
|
+
'"show my Lido staking", "my Curve pools", "Pendle positions". ' +
|
|
22
|
+
'The "protocol" argument is the Moralis protocol id (kebab-case), e.g. uniswap-v2, uniswap-v3, ' +
|
|
23
|
+
'pancakeswap-v2, pancakeswap-v3, quickswap-v2, quickswap-v3, sushiswap-v2, aave-v2, aave-v3, aave-lido, fraxswap-v1, fraxswap-v2, lido, makerdao, eigenlayer, pendle, etherfi, rocketpool, sparkfi, takara-lend, neverland, kintsu. ' +
|
|
24
|
+
'Supports: Ethereum, Optimism, BSC, Polygon, Base, Arbitrum, Avalanche, Linea (EVM mainnets only). ' +
|
|
25
|
+
'Do NOT use for: cross-protocol view → get-wallet-defi-positions; totals only → get-wallet-defi-summary.';
|
|
26
|
+
category = 'blockchain-data';
|
|
27
|
+
parameters = [
|
|
28
|
+
{
|
|
29
|
+
name: 'address',
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'EVM wallet address (0x…). If omitted, uses the connected wallet from user context.',
|
|
32
|
+
required: false,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'protocol',
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Moralis protocol identifier in kebab-case. Examples: "uniswap-v2", "uniswap-v3", "pancakeswap-v2", "pancakeswap-v3", "quickswap-v2", "quickswap-v3", "sushiswap-v2", "aave-v2", "aave-v3", "aave-lido", "fraxswap-v1", "fraxswap-v2", "lido", "makerdao", "eigenlayer", "pendle", "etherfi", "rocketpool", "sparkfi", "takara-lend", "neverland", "kintsu"' +
|
|
38
|
+
'Use get-wallet-defi-summary to discover which protocols a wallet uses.',
|
|
39
|
+
required: true,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'chain',
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'Hex chain ID: "0x1" Ethereum, "0xa" Optimism, "0x38" BSC, "0x89" Polygon, "0x2105" Base, ' +
|
|
45
|
+
'"0xa4b1" Arbitrum, "0xa86a" Avalanche, "0xe708" Linea. Defaults to connected chain.',
|
|
46
|
+
required: true,
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
service;
|
|
50
|
+
constructor(config) {
|
|
51
|
+
super();
|
|
52
|
+
this.service = new MoralisService_1.MoralisService(config);
|
|
53
|
+
}
|
|
54
|
+
async run(args, userContext) {
|
|
55
|
+
const address = args.address || userContext?.walletAddress || undefined;
|
|
56
|
+
const protocol = args.protocol?.trim();
|
|
57
|
+
const chain = args.chain || userContext?.chain || undefined;
|
|
58
|
+
if (!address) {
|
|
59
|
+
return { error: 'No wallet address available. Please connect a wallet or pass "address".' };
|
|
60
|
+
}
|
|
61
|
+
if (!protocol) {
|
|
62
|
+
return { error: 'Protocol identifier is required (e.g. "uniswap-v3", "aave-v3").' };
|
|
63
|
+
}
|
|
64
|
+
const result = await this.service.getWalletDefiProtocolPositions({
|
|
65
|
+
address,
|
|
66
|
+
protocol,
|
|
67
|
+
chain,
|
|
68
|
+
});
|
|
69
|
+
if (!result.success) {
|
|
70
|
+
return { error: result.error || 'Failed to fetch wallet DeFi protocol positions' };
|
|
71
|
+
}
|
|
72
|
+
const data = result.data;
|
|
73
|
+
if (!data) {
|
|
74
|
+
return { error: 'No data returned for this protocol' };
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
walletAddress: address,
|
|
78
|
+
chain: chain || 'default',
|
|
79
|
+
protocolName: data.protocol_name,
|
|
80
|
+
protocolId: data.protocol_id,
|
|
81
|
+
protocolUrl: data.protocol_url,
|
|
82
|
+
protocolLogo: data.protocol_logo,
|
|
83
|
+
totalUsdValue: data.total_usd_value,
|
|
84
|
+
totalUnclaimedUsdValue: data.total_unclaimed_usd_value,
|
|
85
|
+
accountHealthFactor: data.account_data?.health_factor ?? null,
|
|
86
|
+
positionCount: (data.positions || []).length,
|
|
87
|
+
positions: (data.positions || []).map(mapPosition),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.WalletDefiProtocolPositionsTool = WalletDefiProtocolPositionsTool;
|
|
92
|
+
function mapPosition(position) {
|
|
93
|
+
return {
|
|
94
|
+
label: position.label,
|
|
95
|
+
address: position.address,
|
|
96
|
+
balanceUsd: position.balance_usd,
|
|
97
|
+
totalUnclaimedUsdValue: position.total_unclaimed_usd_value,
|
|
98
|
+
tokens: (position.tokens || []).map((t) => ({
|
|
99
|
+
tokenType: t.token_type,
|
|
100
|
+
name: t.name,
|
|
101
|
+
symbol: t.symbol,
|
|
102
|
+
contractAddress: t.contract_address,
|
|
103
|
+
decimals: t.decimals,
|
|
104
|
+
logo: t.logo,
|
|
105
|
+
thumbnail: t.thumbnail,
|
|
106
|
+
balance: t.balance,
|
|
107
|
+
balanceFormatted: t.balance_formatted,
|
|
108
|
+
usdPrice: t.usd_price,
|
|
109
|
+
usdValue: t.usd_value,
|
|
110
|
+
})),
|
|
111
|
+
details: position.position_details ?? null,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=WalletDefiProtocolPositionsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletDefiProtocolPositionsTool.js","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletDefiProtocolPositionsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BaseTool } from '../../BaseTool';
|
|
2
|
+
import type { ToolParameter, UserContext } from '../../../types';
|
|
3
|
+
import { type MoralisServiceConfig } from '../../../services/MoralisService';
|
|
4
|
+
export type WalletDefiSummaryToolConfig = MoralisServiceConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Tool: get-wallet-defi-summary
|
|
7
|
+
*
|
|
8
|
+
* Queries `GET /wallets/{address}/defi/summary` — a high-level DeFi overview
|
|
9
|
+
* for a wallet: total USD value, total unclaimed rewards, number of active
|
|
10
|
+
* protocols and positions, plus a per-protocol breakdown.
|
|
11
|
+
*
|
|
12
|
+
* Moralis docs: https://docs.moralis.com/data-api/evm/wallet/wallet-protocols
|
|
13
|
+
*/
|
|
14
|
+
export declare class WalletDefiSummaryTool extends BaseTool {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
category: string;
|
|
18
|
+
parameters: ToolParameter[];
|
|
19
|
+
private service;
|
|
20
|
+
constructor(config?: WalletDefiSummaryToolConfig);
|
|
21
|
+
protected run(args: Record<string, unknown>, userContext?: UserContext): Promise<{
|
|
22
|
+
error: string;
|
|
23
|
+
walletAddress?: undefined;
|
|
24
|
+
chain?: undefined;
|
|
25
|
+
activeProtocols?: undefined;
|
|
26
|
+
totalPositions?: undefined;
|
|
27
|
+
totalUsdValue?: undefined;
|
|
28
|
+
totalUnclaimedUsdValue?: undefined;
|
|
29
|
+
protocols?: undefined;
|
|
30
|
+
} | {
|
|
31
|
+
walletAddress: string;
|
|
32
|
+
chain: string;
|
|
33
|
+
activeProtocols: number;
|
|
34
|
+
totalPositions: number;
|
|
35
|
+
totalUsdValue: number;
|
|
36
|
+
totalUnclaimedUsdValue: number;
|
|
37
|
+
protocols: {
|
|
38
|
+
protocolName: string | undefined;
|
|
39
|
+
protocolId: string | undefined;
|
|
40
|
+
protocolUrl: string | undefined;
|
|
41
|
+
protocolLogo: string | undefined;
|
|
42
|
+
positions: number;
|
|
43
|
+
totalUsdValue: number;
|
|
44
|
+
totalUnclaimedUsdValue: number;
|
|
45
|
+
accountHealthFactor: number | null;
|
|
46
|
+
}[];
|
|
47
|
+
error?: undefined;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=WalletDefiSummaryTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletDefiSummaryTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/builtin/wallet/WalletDefiSummaryTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7F,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAE/D;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,IAAI,SAA6B;IACjC,WAAW,SASkE;IAC7E,QAAQ,SAAqB;IAC7B,UAAU,EAAE,aAAa,EAAE,CAezB;IAEF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,2BAA2B;cAKhC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC7E"}
|