UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

42 lines 1.97 kB
import { Amount, getEnvironmentsFromArgs } from "../../common/index.js"; import { findTokenByAddress } from "../../environments/utils/index.js"; export async function getMorphoUserBalances(client, args) { const environments = getEnvironmentsFromArgs(client, args); const environmentsTokensBalances = await Promise.all(environments.map((environment) => { return environment.contracts.views?.read.getTokensBalances([ [ // Remove duplicates ...new Set([ ...Object.values(environment.config.vaults).map((vault) => environment.config.tokens[vault.underlyingToken].address), ...Object.values(environment.config.vaults).map((vault) => environment.config.tokens[vault.vaultToken].address), ...Object.values(environment.config.morphoMarkets).map((market) => environment.config.tokens[market.collateralToken].address), ...Object.values(environment.config.morphoMarkets).map((market) => environment.config.tokens[market.loanToken].address), ]), ], args.userAddress, ]); })); const tokensBalances = environments.flatMap((curr, index) => { const balances = environmentsTokensBalances[index]; const userBalances = balances .map((balance) => { const token = findTokenByAddress(curr, balance.token); if (token) { const result = { chainId: curr.chainId, account: args.userAddress, token, tokenBalance: new Amount(balance.amount, token.decimals), }; return result; } else { return; } }) .filter((item) => item !== undefined); return userBalances; }); return tokensBalances; } //# sourceMappingURL=getMorphoUserBalances.js.map