mars-v2-frontend/src/pages/api/markets/borrow.ts
2023-02-24 15:19:23 +01:00

46 lines
1.5 KiB
TypeScript

import { NextApiRequest, NextApiResponse } from 'next'
import { ENV_MISSING_MESSAGE, URL_API } from 'constants/env'
import { getMarketAssets } from 'utils/assets'
import { Coin } from '@cosmjs/stargate'
import BigNumber from 'bignumber.js'
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (!URL_API) {
return res.status(404).json(ENV_MISSING_MESSAGE)
}
const marketAssets = getMarketAssets()
const $liquidity = fetch(`${URL_API}/markets/liquidity`)
const $markets = fetch(`${URL_API}/markets`)
const $prices = fetch(`${URL_API}/prices`)
const borrow: BorrowAsset[] = await Promise.all([$liquidity, $markets, $prices]).then(
async ([$liquidity, $markets, $prices]) => {
const liquidity: Coin[] = await $liquidity.json()
const markets: Market[] = await $markets.json()
const prices: Coin[] = await $prices.json()
return marketAssets.map((asset) => {
const currentMarket = markets.find((market) => market.denom === asset.denom)
const price = prices.find((coin) => coin.denom === asset.denom)?.amount ?? '1'
const amount = liquidity.find((coin) => coin.denom === asset.denom)?.amount ?? '0'
return {
denom: asset.denom,
borrowRate: currentMarket?.borrow_rate ?? '0',
liquidity: {
amount: amount,
value: new BigNumber(amount).times(price).toString(),
},
}
})
},
)
if (borrow) {
return res.status(200).json(borrow)
}
return res.status(404)
}