ndtr-dexter
Version:
Customizable Typescript SDK for interacting with Cardano DEXs
48 lines (47 loc) • 2.31 kB
JavaScript
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 [];
});
}
}