@kamino-finance/farms-sdk
Version:
56 lines • 2.13 kB
JavaScript
;
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