diff --git a/src/api/hls/getHLSVaults.ts b/src/api/hls/getHLSVaults.ts new file mode 100644 index 00000000..2b09a9b3 --- /dev/null +++ b/src/api/hls/getHLSVaults.ts @@ -0,0 +1,34 @@ +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() { + const assetParams = await getAssetParams() + const client = await getCreditManagerQueryClient() + const vaultConfigs = await getVaultConfigs() + 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, + ), + ) +} diff --git a/src/components/HLS/Farm/Table/Columns/Name.tsx b/src/components/HLS/Farm/Table/Columns/Name.tsx new file mode 100644 index 00000000..45aec3b4 --- /dev/null +++ b/src/components/HLS/Farm/Table/Columns/Name.tsx @@ -0,0 +1,19 @@ +import React from 'react' + +import TitleAndSubCell from 'components/TitleAndSubCell' + +interface Props { + strategy: HLSStrategy +} + +export default function Name(props: Props) { + return ( +
+ +
+ ) +} diff --git a/src/components/Trade/TradeModule/AssetSelector/AssetOverlay.tsx b/src/components/Trade/TradeModule/AssetSelector/AssetOverlay.tsx index 7b19f656..30dbaeed 100644 --- a/src/components/Trade/TradeModule/AssetSelector/AssetOverlay.tsx +++ b/src/components/Trade/TradeModule/AssetSelector/AssetOverlay.tsx @@ -48,7 +48,11 @@ export default function AssetOverlay(props: Props) { } return ( - +
Select asset diff --git a/src/hooks/useHLSVaults.ts b/src/hooks/useHLSVaults.ts new file mode 100644 index 00000000..42106fc6 --- /dev/null +++ b/src/hooks/useHLSVaults.ts @@ -0,0 +1,10 @@ +import useSWR from 'swr' + +import getHLSVaults from 'api/hls/getHLSVaults' + +export default function useHLSVaults() { + return useSWR('hls-vaults', getHLSVaults, { + fallbackData: [], + revalidateOnFocus: false, + }) +}