kiban-agent-kit
Version:
Open-source framework connecting AI agents to Katana ecosystem protocols
74 lines (73 loc) • 2.81 kB
JavaScript
;
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;