UNPKG

@devasher/kuru-sdk

Version:

Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)

86 lines 3.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PoolFetcher = void 0; // ============ Internal Imports ============ const ethers_1 = require("ethers"); const cross_fetch_1 = __importDefault(require("cross-fetch")); // Define your most important base tokens const BASE_TOKENS = [ { symbol: 'MON', address: ethers_1.ZeroAddress }, { symbol: 'WMON', address: '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701' }, { symbol: 'USDC', address: '0xf817257fed379853cDe0fa4F97AB987181B1E5Ea' }, { symbol: 'kuruUSDC', address: '0x6C15057930e0d8724886C09e940c5819fBE65465' }, ]; class PoolFetcher { constructor(baseUrl) { this.baseUrl = baseUrl.replace(/\/$/, ''); } static async create(baseUrl) { return new PoolFetcher(baseUrl); } addDirectPairs(tokenIn, tokenOut) { return [ { baseToken: tokenIn, quoteToken: tokenOut }, { baseToken: tokenOut, quoteToken: tokenIn }, ]; } addBaseTokenPairs(token, baseTokens) { return baseTokens.flatMap((base) => [ { baseToken: token, quoteToken: base.address }, { baseToken: base.address, quoteToken: token }, ]); } addBasePairCombinations(baseTokens) { return baseTokens.flatMap((base1, index) => baseTokens.slice(index + 1).flatMap((base2) => [ { baseToken: base1.address, quoteToken: base2.address }, { baseToken: base2.address, quoteToken: base1.address }, ])); } async fetchMarketData(pairs) { try { const response = await (0, cross_fetch_1.default)(`${this.baseUrl}/api/v1/markets/filtered`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ pairs }), }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return (await response.json()); } catch (error) { throw new Error(`Failed to fetch market data: ${JSON.stringify(error)}`); } } async getAllPools(tokenInAddress, tokenOutAddress, customBaseTokens) { try { let pairs = []; const baseTokens = customBaseTokens || BASE_TOKENS; if (tokenInAddress && tokenOutAddress) { // Add direct pairs pairs.push(...this.addDirectPairs(tokenInAddress, tokenOutAddress)); // Add pairs with base tokens pairs.push(...this.addBaseTokenPairs(tokenInAddress, baseTokens), ...this.addBaseTokenPairs(tokenOutAddress, baseTokens)); } // Add base token combinations pairs.push(...this.addBasePairCombinations(baseTokens)); const data = await this.fetchMarketData(pairs); return data.data.map((market) => ({ baseToken: market.baseasset, quoteToken: market.quoteasset, orderbook: market.market, })); } catch (error) { console.error('Error fetching pools:', error); throw error; } } } exports.PoolFetcher = PoolFetcher; //# sourceMappingURL=fetcher.js.map