@moonwell-fi/moonwell-sdk
Version:
TypeScript Interface for Moonwell
47 lines • 2.67 kB
JavaScript
import { Amount } from "../../../common/amount.js";
import { findTokenByAddress } from "../../../environments/utils/index.js";
export async function getMorphoVaultUserPositionsData(params) {
const vaults = Object.values(params.environment.vaults).filter((vault) => params.vaults ? params.vaults.includes(vault.address) : true);
const userVaultsShares = await Promise.all(vaults.map((vaultContract) => vaultContract.read.balanceOf([params.account])));
const userVaultBalances = await Promise.all(vaults.map((vaultContract, index) => vaultContract.read.convertToAssets([userVaultsShares[index]])));
return vaults.map((vaultContract, index) => {
const shares = userVaultsShares[index];
const balance = userVaultBalances[index];
const vaultToken = findTokenByAddress(params.environment, vaultContract.address);
const vaultConfig = Object.values(params.environment.config.vaults).find((vault) => vault.vaultToken === vaultToken.symbol);
const underlyingToken = params.environment.config.tokens[vaultConfig.underlyingToken];
const result = {
chainId: params.environment.chainId,
account: params.account,
vaultToken,
underlyingToken,
supplied: new Amount(balance, underlyingToken.decimals),
suppliedShares: new Amount(shares, vaultToken.decimals),
};
return result;
});
}
export async function getMorphoMarketUserPositionsData(params) {
const markets = Object.values(params.environment.config.morphoMarkets).filter((market) => (params.markets ? params.markets.includes(market.id) : true));
const userMarketPositions = await params.environment.contracts.morphoViews.read.getMorphoBlueUserBalances([markets.map((market) => market.id), params.account]);
return markets.map((market, index) => {
const position = userMarketPositions[index];
const loanToken = params.environment.config.tokens[market.loanToken];
const collateralToken = params.environment.config.tokens[market.collateralToken];
const supplied = new Amount(position.collateralAssets, collateralToken.decimals);
const borrowed = new Amount(position.loanAssets, loanToken.decimals);
const borrowedShares = new Amount(position.loanShares, loanToken.decimals + 6);
const result = {
chainId: params.environment.chainId,
account: params.account,
marketId: market.id,
loanToken,
collateralToken,
supplied,
borrowed,
borrowedShares,
};
return result;
});
}
//# sourceMappingURL=common.js.map