UNPKG

ndtr-dexter

Version:

Customizable Typescript SDK for interacting with Cardano DEXs

48 lines (47 loc) 2.31 kB
import { BaseApi } from './base-api'; import { Asset } from '../models/asset'; import { LiquidityPool } from '../models/liquidity-pool'; import axios from 'axios'; export class VyfinanceApi extends BaseApi { constructor(dex, requestConfig) { super(); this.dex = dex; this.api = axios.create({ timeout: requestConfig.timeout, baseURL: `${requestConfig.proxyUrl}https://api.vyfi.io`, headers: { 'Content-Type': 'application/json', } }); } liquidityPools(assetA, assetB) { const assetAId = (assetA === 'lovelace') ? 'lovelace' : assetA.id(); let assetBId = (assetB && assetB !== 'lovelace') ? assetB.id() : 'lovelace'; const url = assetB ? `/lp?networkId=1&v2=true&tokenAUnit=${assetAId}&tokenBUnit=${assetBId}` : '/lp?networkId=1&v2=true'; return this.api.get(url) .then((poolResponse) => { return poolResponse.data.map((pool) => { const poolDetails = JSON.parse(pool.json); const tokenA = poolDetails['aAsset']['tokenName'] ? new Asset(poolDetails['aAsset']['currencySymbol'], Buffer.from(poolDetails['aAsset']['tokenName']).toString('hex')) : 'lovelace'; const tokenB = poolDetails['bAsset']['tokenName'] ? new Asset(poolDetails['bAsset']['currencySymbol'], Buffer.from(poolDetails['bAsset']['tokenName']).toString('hex')) : 'lovelace'; let liquidityPool = new LiquidityPool(this.dex.name, tokenA, tokenB, BigInt(pool['tokenAQuantity']), BigInt(pool['tokenBQuantity']), pool['poolValidatorUtxoAddress'], pool['orderValidatorUtxoAddress'], pool['orderValidatorUtxoAddress']); const lpTokenDetails = pool['lpPolicyId-assetId'].split('-'); liquidityPool.lpToken = new Asset(lpTokenDetails[0], lpTokenDetails[1]); liquidityPool.poolFeePercent = (poolDetails['feesSettings']['barFee'] + poolDetails['feesSettings']['liqFee']) / 100; return liquidityPool; }).filter((pool) => pool !== undefined); }).catch(() => { return []; }); } }