UNPKG

kiban-agent-kit

Version:

Open-source framework connecting AI agents to Katana ecosystem protocols

74 lines (73 loc) 2.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DexScreenerService = void 0; const axios_1 = __importDefault(require("axios")); const DEXSCREENER_API = "https://api.dexscreener.com/latest/dex"; /** * Core DexScreener service for fetching token data */ class DexScreenerService { /** * Get token price and market data from DexScreener using a token address */ async getTokenData(tokenAddress) { try { const response = await axios_1.default.get(`${DEXSCREENER_API}/tokens/${tokenAddress}`); if (!response.data.pairs || response.data.pairs.length === 0) { return null; } const pair = response.data.pairs[0]; return { name: pair.baseToken.name, symbol: pair.baseToken.symbol, address: pair.baseToken.address, priceUsd: pair.priceUsd || "N/A", volume24h: pair.volume.h24 || "N/A", liquidity: pair.liquidity.usd || "N/A", pairAddress: pair.pairAddress, }; } catch (error) { throw new Error(`Failed to fetch token data: ${error.message}`); } } /** * Search for a token on DexScreener using its ticker symbol */ async searchTokenByTicker(ticker) { try { const response = await axios_1.default.get(`${DEXSCREENER_API}/search?q=${ticker}`); if (!response.data.pairs || response.data.pairs.length === 0) { return { message: "No tokens found matching this ticker", results: [], }; } // Sort pairs by volume and get top 3 const topPairs = response.data.pairs .sort((a, b) => Number(b.volume.h24) - Number(a.volume.h24)) .slice(0, 3); const results = topPairs.map((pair) => ({ name: pair.baseToken.name, symbol: pair.baseToken.symbol, address: pair.baseToken.address, chain: pair.chainId, price_usd: pair.priceUsd || "N/A", volume_24h: pair.volume.h24 || "N/A", liquidity: pair.liquidity.usd || "N/A", dex: pair.dexId, })); return { message: `Found ${topPairs.length} top pairs for ${ticker}`, results, }; } catch (error) { throw new Error(`Failed to search for token: ${error.message}`); } } } exports.DexScreenerService = DexScreenerService;