UNPKG

@chorus-one/ethereum

Version:

All-in-one toolkit for building staking dApps on Ethereum network

44 lines (43 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMaxMint = void 0; const mintCotrollerAbi_1 = require("../contracts/mintCotrollerAbi"); const getBaseData_1 = require("../utils/getBaseData"); const getStake_1 = require("./getStake"); const getMint_1 = require("./getMint"); const getMaxMint = async (params) => { const { connector, vault, userAccount } = params; const { ltvPercent } = await (0, getBaseData_1.getBaseData)(connector, vault); const { assets } = await (0, getStake_1.getStake)({ connector, userAccount, vaultAddress: vault }); const mint = await (0, getMint_1.getMint)({ connector, userAccount, vaultAddress: vault }); if (ltvPercent <= 0n || assets <= 0n) { return 0n; } const avgRewardPerSecond = (await connector.eth.readContract({ abi: mintCotrollerAbi_1.MintTokenControllerAbi, functionName: 'avgRewardPerSecond', address: connector.mintTokenController })); const maxMintedAssets = (assets * ltvPercent) / 1000000000000000000n; const maxMintedAssetsHourReward = (maxMintedAssets * avgRewardPerSecond * 3600n) / 1000000000000000000n; const canMintAssets = maxMintedAssets - maxMintedAssetsHourReward - mint.minted.assets; if (canMintAssets > 0) { const maxMintShares = (await connector.eth.readContract({ abi: mintCotrollerAbi_1.MintTokenControllerAbi, functionName: 'convertToShares', address: connector.mintTokenController, args: [canMintAssets] })); return maxMintShares; } return 0n; }; exports.getMaxMint = getMaxMint;