UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

51 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMorphoVaultUserPositionsData = getMorphoVaultUserPositionsData; exports.getMorphoMarketUserPositionsData = getMorphoMarketUserPositionsData; const amount_js_1 = require("../../../common/amount.js"); const index_js_1 = require("../../../environments/utils/index.js"); 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 = (0, index_js_1.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_js_1.Amount(balance, underlyingToken.decimals), suppliedShares: new amount_js_1.Amount(shares, vaultToken.decimals), }; return result; }); } 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_js_1.Amount(position.collateralAssets, collateralToken.decimals); const borrowed = new amount_js_1.Amount(position.loanAssets, loanToken.decimals); const borrowedShares = new amount_js_1.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