UNPKG

@kamino-finance/farms-sdk

Version:
56 lines 2.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.KSWAP_BASE_API = void 0; exports.getTokensBatchPrice = getTokensBatchPrice; exports.getTokenPrice = getTokenPrice; const decimal_js_1 = __importDefault(require("decimal.js")); exports.KSWAP_BASE_API = "https://api.kamino.finance/kswap"; async function getTokensBatchPrice(tokens) { const tokensParams = tokens .map((token) => `tokens=${encodeURIComponent(token)}`) .join("&"); const url = `${exports.KSWAP_BASE_API}/batch-token-prices?${tokensParams}`; const response = await fetch(url, { method: "GET", headers: { "Content-Type": "application/json", }, }); if (!response.ok) { throw new Error(`Failed to fetch tokens batch price: ${response.statusText}`); } const data = (await response.json()); // Check if response has success field and it's true if (!data.success) { throw new Error("API response indicates failure: " + JSON.stringify(data)); } const prices = new Map(); for (const token of tokens) { const tokenData = data.data[token]; if (tokenData && tokenData.value !== null && tokenData.value !== undefined) { try { const price = new decimal_js_1.default(tokenData.value); prices.set(token, price); } catch (error) { console.error(`Failed to parse price for token, setting to 0: ${token}: ${error}`); prices.set(token, new decimal_js_1.default(0)); } } else { console.warn(`No price data available for token ${token}, setting to 0`); prices.set(token, new decimal_js_1.default(0)); } } return prices; } async function getTokenPrice(token) { const tokenPrice = await getTokensBatchPrice([token]); return tokenPrice.get(token); } //# sourceMappingURL=price.js.map