35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { getCreditManagerQueryClient } from 'api/cosmwasm-client'
|
|
import getAssetParams from 'api/params/getAssetParams'
|
|
import { getVaultConfigs } from 'api/vaults/getVaultConfigs'
|
|
import { BN } from 'utils/helpers'
|
|
import { resolveHLSStrategies } from 'utils/resolvers'
|
|
|
|
export default async function getHLSVaults(chainConfig: ChainConfig) {
|
|
const assetParams = await getAssetParams(chainConfig)
|
|
const client = await getCreditManagerQueryClient(chainConfig)
|
|
const vaultConfigs = await getVaultConfigs(chainConfig)
|
|
const HLSAssets = assetParams.filter((asset) => asset.credit_manager.hls)
|
|
const strategies = resolveHLSStrategies('vault', HLSAssets)
|
|
|
|
const vaultUtilizations$ = strategies.map((strategy) =>
|
|
client.vaultUtilization({ vault: { address: strategy.denoms.deposit } }),
|
|
)
|
|
|
|
return Promise.all(vaultUtilizations$).then((vaultUtilizations) =>
|
|
vaultUtilizations.map(
|
|
(utilization, index) =>
|
|
({
|
|
...strategies[index],
|
|
depositCap: {
|
|
denom: utilization.vault.address,
|
|
used: BN(utilization.utilization.amount),
|
|
max: BN(
|
|
vaultConfigs.find((config) => config.addr === utilization.vault.address)?.deposit_cap
|
|
.amount || 0,
|
|
),
|
|
},
|
|
}) as HLSStrategy,
|
|
),
|
|
)
|
|
}
|