{"version":3,"sources":["assets/icons/hamburger.svg","assets/icons/coins/op.svg","assets/icons/coins/eth.svg","assets/icons/coins/matic.svg","assets/icons/coins/arb.svg","assets/icons/coins/bsc.svg","assets/icons/coins/avax.svg","storage/Chains.ts","assets/icons/coins/kava.svg","Reducer.tsx","Store.tsx","components/Button.tsx","storage/Abis.ts","functions/safeMath.ts","functions/formatters.ts","assets/icons/wallet.svg","assets/ethos-logo.svg","components/ConnectWalletButton.tsx","storage/Routes.ts","assets/icons/coins/btc.svg","assets/icons/coins/oath.svg","assets/icons/coins/boath.svg","assets/icons/coins/ern.svg","assets/icons/coins/wsteth.svg","storage/Coins.ts","functions/coinHelpers.ts","functions/chainHelpers.ts","functions/subgraph.ts","functions/blockchain.ts","storage/LeverageConfig.ts","functions/blockchainRouter.ts","functions/api.ts","functions/stateHelpers.ts","assets/icons/cog.svg","components/SettingsButton.tsx","components/DropDown.tsx","components/HamburgerMenu.tsx","assets/icons/caret-down.svg","components/LoadingSpinner.tsx","components/CollateralStatusBox.tsx","components/Header.tsx","assets/icons/help.svg","assets/icons/edit.svg","components/Tooltip.tsx","assets/icons/arrow-up.svg","components/PositionBox.tsx","functions/browser.ts","components/SwitchNetworkButton.tsx","assets/icons/x.svg","components/modals/Modal.tsx","components/modals/CollateralChangesModal.tsx","components/PositionsPage.tsx","assets/icons/gift.svg","components/Input.tsx","components/ClaimRewardsBox.tsx","webpack:///./src/assets/icons/coins/ern.svg?0c7c","assets/icons/stability.svg","components/StabilityPage.tsx","assets/icons/stake.svg","components/StakingPage.tsx","components/ClassicOpenInputs.tsx","components/Slider.tsx","assets/icons/check.svg","components/LeverageOpenInputs.tsx","assets/icons/status-x.svg","assets/icons/dash.svg","components/ConditionBox.tsx","components/ClassicOpenConditionBoxes.tsx","components/LeverageOpenConditionBoxes.tsx","components/InfoBox.tsx","assets/icons/leverage.svg","assets/icons/link.svg","components/modals/LeverageWarningModal.tsx","components/modals/CollateralHelpModal.tsx","components/modals/RankWarningModal.tsx","components/NewPositionPage.tsx","assets/icons/coins/stERN.svg","components/modals/AllPositionsModal.tsx","components/DashboardPage.tsx","components/EditPositionPage.tsx","assets/icons/coins/oathv1.svg","assets/icons/coins/oathv2.svg","components/MigrationPage.tsx","components/VaultPage.tsx","assets/icons/analytics.svg","components/modals/AllTrovesModal.tsx","components/StabilityCoinWidget.tsx","components/AnalyticsPage.tsx","components/Body.tsx","assets/icons/brands/twitter.svg","assets/icons/brands/discord.svg","components/Disclaimer.tsx","components/Footer.tsx","components/NetworkWarning.tsx","assets/icons/house.svg","components/modals/EthosVersionModal.tsx","assets/icons/dashboard.svg","assets/icons/eye.svg","components/BalanceBox.tsx","components/SideMenu.tsx","assets/icons/sun.svg","assets/icons/moon.svg","assets/icons/status-check.svg","components/modals/SettingsModal.tsx","functions/walletconnect.ts","components/modals/ConnectWalletModal.tsx","assets/icons/pc_bulb.png","components/modals/TransactionStatusModal.tsx","components/HeaderAlert.tsx","components/modals/SelectNetworkModal.tsx","components/App.tsx","functions/routeHelper.ts","index.tsx"],"names":["_rect","_rect2","_rect3","chains","optimism","label","shortLabel","chainId","readable","hex","nativeCurrency","name","symbol","decimals","defaultRpc","explorerUrl","configV2_1","tokenUIDs","collaterals","staking","stability","stakingReward","stabilityReward","migrationOnly","contracts","borrowerOperationsAddr","sortedTrovesAddr","hintHelpersAddr","priceFeedAddr","multiTroveGetterAddr","troveManagerAddr","stabilityPoolAddr","stakingPoolAddr","stERNVaultAddr","collateralConfigAddr","collSurplusPoolAddr","communityIssuance","oathMigrationAddr","leveragerAddr","gasOracle","subgraphUrl","configV2","configV1","isEthosSupported","icon","opIconSrc","ethereum","EthIconSrc","polygon","MaticIconSrc","bsc","BscIconSrc","arbitrum","ArbIconSrc","kava","avalanche","AvaxIconSrc","defaultChain","supportedChains","defaultState","isAppInitialized","walletAddress","walletProvider","undefined","walletType","isWalletDetected","isWalletConnected","isConnectWalletLocked","readProvider","connectedChain","chainView","isOnSupportedChain","currentPage","appVersion","showDisclaimer","isMobile","isSettingsOpen","isConnectWalletOpen","isSelectNetworkOpen","isLeverageWarningRead","showHeaderAlert","stakingCoin","stabilityCoin","stakingRewardCoin","stabilityRewardCoin","newPositionCollateralId","userStakingDeposits","userStabilityDeposits","userStERNDeposits","userStERNDepositsInERN","userStERNDepositsUSD","userStakingRewards","userRedemptionRewards","userStabilityRewards","userLiquidationRewards","oathv1UserBalance","oathv2UserBalance","hasV1Position","hasV2Position","btcPrice","btcStatus","btcCollateralAmount","btcBorrowAmount","btcMinCollateralRatio","btcCritCollateralRatio","btcTotalCollateralRatio","btcLiquidationReserve","btcBorrowRate","btcTVL","btcTotalDebt","btcUserBalance","btcClaimableCollateral","btcUserTroveChanges","btcAllOpenTroves","btcVaultData","btcUserTroveRank","ethPrice","ethStatus","ethCollateralAmount","ethBorrowAmount","ethMinCollateralRatio","ethCritCollateralRatio","ethTotalCollateralRatio","ethLiquidationReserve","ethBorrowRate","ethTVL","ethTotalDebt","ethUserBalance","ethClaimableCollateral","ethUserTroveChanges","ethAllOpenTroves","ethVaultData","ethUserTroveRank","opPrice","opStatus","opCollateralAmount","opBorrowAmount","opMinCollateralRatio","opCritCollateralRatio","opTotalCollateralRatio","opLiquidationReserve","opBorrowRate","opTVL","opTotalDebt","opUserBalance","opClaimableCollateral","opUserTroveChanges","opAllOpenTroves","opVaultData","opUserTroveRank","wstethPrice","wstethStatus","wstethCollateralAmount","wstethBorrowAmount","wstethMinCollateralRatio","wstethCritCollateralRatio","wstethTotalCollateralRatio","wstethLiquidationReserve","wstethBorrowRate","wstethTVL","wstethTotalDebt","wstethUserBalance","wstethClaimableCollateral","wstethUserTroveChanges","wstethAllOpenTroves","wstethVaultData","wstethUserTroveRank","totalStakingDeposits","totalStabilityDeposits","stakingApr","stabilityApr","stERNApy","totalStERNDeposits","stabilityCoinPrice","stakingCoinPrice","stabilityRewardCoinPrice","topBorrowers","txMessages","currentTxNumber","currentTxStatus","isTxModalOpen","isLoadingTxSteps","isLoadingStability","isLoadingStaking","isLoadingPositions","theme","hamburgerMenuPosition","autoBrowserWallet","Reducer","state","action","type","_objectSpread","content","Context","createContext","Store","_ref","children","_useReducer","useReducer","_useReducer2","_slicedToArray","dispatch","_jsx","Provider","value","_excluded","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgHamburger","svgRef","title","titleId","props","width","height","viewBox","xmlns","ref","id","x","y","fill","className","ForwardRef","Button","_props$text","text","_props$onButtonClick","onButtonClick","_props$onMouseEnter","onMouseEnter","_props$onMouseLeave","onMouseLeave","_props$disabled","disabled","_props$selected","selected","_props$className","_props$children","_props$iconStart","iconStart","_Fragment","_props$iconEnd","iconEnd","onClick","_jsxs","abis","borrowerOperations","collSurplusPool","collateralConfig","erc20","hintHelpers","leverager","lqtyStaking","multiTroveGetter","oathMigrator","oathMigratorOp","optimismGasOracle","priceAggregator","priceFeed","reaperVaultERC4626","sortedTroves","stabilityPool","testToken","troveManager","safeAdd","a","b","bigA","BigNumber","bigB","plus","toFixed","safeSub","minus","safeMult","multipliedBy","safeDiv","dividedBy","isZero","isANum","isNumber","isBigZero","isGreaterThan","isBNum","isGreaterThanOrEqual","isGreaterThanOrEqualTo","isLessThan","isLessThanOrEqual","isLessThanOrEqualTo","isEqualTo","bottomNPercentofNum","nPercent","num","res","parseFloat","Math","ceil","toString","roundUp","checksumAddress","address","ethers","utils","getAddress","error","console","shortenAddress","checksummedAddress","substring","shortenAddressMore","check","numberOrNot","Number","isNaN","getDecimals","_x","_x2","_getDecimals","_asyncToGenerator","_regeneratorRuntime","mark","_callee","tokenAddr","walletProviderOrSigner","token","wrap","_context","prev","next","Contract","sent","abrupt","stop","formatPositiveNumber","rawValue","format","prefix","decimalSeparator","groupSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","suffix","bigValue","toFormat","replace","isErrorMsg","msg","errorMsgCheck","success","toFixedDecimals","_path","capitalizeFirstLetter","string","charAt","toUpperCase","slice","getFirstWord","split","SvgWallet","fillRule","clipRule","d","_g","_defs","ConnectWalletButton","_useContext","useContext","_useContext2","_props$showIcon","showIcon","_useState","useState","_useState2","walletConnected","setWalletConnected","_useState3","_useState4","formattedWalletAddress","setFormattedWalletAddress","isSmallerScreen","useMediaQuery","minWidth","maxWidth","useEffect","WalletIcon","routes","path","visible","SvgEthosLogo","clipPath","transform","opChainId","ethChainId","bscChainId","kavaChainId","polygonChainId","avalancheChainId","arbitrumChainId","coins","eth","ticker","uid","iconSrc","addresses","_addresses","_defineProperty","vaults","vaultsV2","vaultsV2_1","btc","BtcIconSrc","_addresses2","op","OpIconSrc","wsteth","wstETHSrc","boath","BOathIconSrc","boathv2","ern","ErnIconSrc","testERN","oath","OathIconSrc","_addresses9","oathv2","_addresses10","getIconSrcFromCoin","coin","getIconSrcFromCoinId","getCoinFromUID","_i","_Object$entries","entries","v","getCoinFromAddress","_i2","_Object$entries2","toLowerCase","getCoinTickerFromAddress","_i3","_Object$entries3","getChainFromId","chain","Error","getChainCollateralFromId","configType","getConfigKeyFromVersion","getChainStabilityCoinFromId","stabilityId","getChainStakingRewardCoinFromId","stakingId","getChainConfigFromId","getChainNameFromId","getChainHexFromReadableId","getChainFromReadableId","version","beethovenOpGraph","ApolloClient","uri","cache","InMemoryCache","getBeethovenTokenData","buildBeethovenTokenQuery","queryResult","gql","query","data","tokenGetCurrentPrices","t0","getBeethovenPoolSnapshotData","_ref2","_callee2","_context2","variables","poolId","range","snapshots","approveSpend","_x3","_x4","_approveSpend","spenderAddr","amount","tx","receipt","getSigner","approve","wait","status","getAllowance","_x5","_x6","_x7","_x8","_getAllowance","_callee3","ownerAddr","_context3","allowance","getTotalSupply","_x9","_x10","_getTotalSupply","_callee4","_context4","totalSupply","getCollateralPriceFromAggregator","_x11","_x12","_x13","_getCollateralPriceFromAggregator","_callee5","collAddr","contractAddresses","priceFeedContract","aggregatorAddr","aggregatorContract","priceRaw","_context5","latestAnswer","getBorrowingRateWithDecay","_x25","_x26","_getBorrowingRateWithDecay","_callee10","troveManagerContract","_context10","getTCR","_x27","_x28","_x29","_x30","_getTCR","_callee11","collateralAddr","price","_context11","getMinDebtAndCompensation","_x36","_x37","_getMinDebtAndCompensation","_callee13","minNetDebt","gasCompensation","_context13","MIN_NET_DEBT","LUSD_GAS_COMPENSATION","getTroveStatus","_x38","_x39","_x40","_x41","_getTroveStatus","_callee14","borrowerAddr","statusCode","troveDebt","troveColl","_context14","getTroveDebt","getTroveColl","debt","coll","claimCollateral","_x42","_x43","_x44","_x45","_claimCollateral","_callee15","walletAddr","borrowerOpAddr","result","_context15","gasLimit","getClaimableCollateral","_x46","_x47","_x48","_x49","_getClaimableCollateral","_callee16","_context16","getUserCollateral","openTrove","_x50","_x51","_x52","_x53","_x54","_x55","_openTrove","_callee17","collAmount","maxFee","stableAmount","_yield$getUpperLowerH","upperHint","lowerHint","_context17","getUpperLowerHints","closeTrove","_x56","_x57","_x58","_closeTrove","_callee18","_context18","adjustTrove","_x59","_x60","_x61","_x62","_x63","_x64","_x65","_x66","_x67","_x68","_adjustTrove","_callee19","collDecimals","collTopUp","collWithdrawal","debtChange","isDebtIncrease","gasCustomLimit","troveStatus","bigZero","currentColl","currentDebt","estColl","decimalDiff","estDebt","_yield$getUpperLowerH2","_context19","constants","Zero","gt","eq","add","sub","mul","from","pow","lt","getUpperLowerHintsFromNICR","_x83","_x84","_x85","_x86","_getUpperLowerHintsFromNICR","_callee23","NICR","numTroves","numTrials","_yield$hintHelpers$ge","hintAddress","_yield$sortedTroves$f","_context23","getSize","getApproxHint","findInsertPosition","_x87","_x88","_x89","_x90","_x91","_getUpperLowerHints","_callee24","debtAmount","_1e20","hints","_context24","parseEther","div","getMinCollateralRatio","_x92","_x93","_x94","_getMinCollateralRatio","_callee25","collConfigAddr","collConfig","mcr","_context25","getCollateralMCR","getCritCollateralRatio","_x95","_x96","_x97","_getCritCollateralRatio","_callee26","_context26","getCollateralCCR","depositStableToStabilityPool","_x98","_x99","_x100","_depositStableToStabilityPool","_callee27","_context27","provideToSP","withdrawStableFromStabilityPool","_x101","_x102","_x103","_withdrawStableFromStabilityPool","_callee28","_context28","withdrawFromSP","getUserStabilityPoolDeposits","_x104","_x105","_x106","_getUserStabilityPoolDeposits","_callee29","depositBig","_context29","getCompoundedLUSDDeposit","getTotalStabilityPoolDeposits","_x107","_x108","_getTotalStabilityPoolDeposits","_callee30","_context30","getTotalLUSDDeposits","getUserStabilityPoolRewards","_x112","_x113","_x114","_getUserStabilityPoolRewards","_callee32","gainsBig","_context32","getDepositorLQTYGain","getUserStabilityPoolCollateralRewardsGain","_x115","_x116","_x117","_getUserStabilityPoolCollateralRewardsGain","_callee33","_yield$stabilityPool$","amounts","assets","_context33","getDepositorCollateralGain","depositInStakingPool","_x118","_x119","_x120","_depositInStakingPool","_callee34","_context34","stake","withdrawFromStakingPool","_x121","_x122","_x123","_withdrawFromStakingPool","_callee35","_context35","unstake","getTotalStakingPoolDeposits","_x124","_x125","_getTotalStakingPoolDeposits","_callee36","oathStakesBig","_context36","totalLQTYStaked","getUserStakingPoolDeposits","_x126","_x127","_x128","_getUserStakingPoolDeposits","_callee37","_context37","stakes","getOATHStakePendingStableGain","_x132","_x133","_x134","_getOATHStakePendingStableGain","_callee39","pendingStableBig","_context39","getPendingLUSDGain","getOATHStakePendingCollateralGain","_x135","_x136","_x137","_getOATHStakePendingCollateralGain","_callee40","gains","_context40","getPendingCollateralGain","getTokenBalance","_x138","_x139","_x140","_getTokenBalance","_callee41","contract","balance","_context41","balanceOf","getEntireSystemColl","_x141","_x142","_x143","_getEntireSystemColl","_callee42","_context42","getEntireSystemDebt","_x144","_x145","_x146","_getEntireSystemDebt","_callee43","_context43","getStabilityRewardsPerSecond","_x147","_x148","_getStabilityRewardsPerSecond","_callee44","_context44","rewardPerSecond","getCollateralDebtLimit","_x149","_x150","_x151","_getCollateralDebtLimit","_callee45","_context45","migrateOath","_x152","_x153","_x154","_migrateOath","_callee46","_context46","exchange","migrateOathOpOldForNew","_x155","_x156","_x157","_migrateOathOpOldForNew","_callee47","_context47","exchangeOldForNew","migrateOathOpNewForOld","_x158","_x159","_x160","_migrateOathOpNewForOld","_callee48","_context48","exchangeNewForOld","getPricePerFullShareOfVault","_x161","_x162","_getPricePerFullShareOfVault","_callee49","contractAddress","_context49","getPricePerFullShare","depositIntoVault","_x163","_x164","_x165","_depositIntoVault","_callee50","vaultAddress","vaultContract","_context50","deposit","withdrawFromVault","_x166","_x167","_x168","_withdrawFromVault","_callee51","_context51","withdraw","leverToTargetCRWithNIterations","_x169","_x170","_x171","_x172","_x173","_x174","_x175","_x176","_x177","_x178","_leverToTargetCRWithNIterations","_callee52","targetCR","iterations","ernPrice","swapPercentOut","_yield$getUpperLowerH4","_context52","deleverAndCloseTrove","_x179","_x180","_x181","_x182","_x183","_x184","_x185","_deleverAndCloseTrove","_callee53","lusdAmount","_yield$getUpperLowerH5","_context53","LeverageConfig","dexFee","maxIterations","minIterations","minCollateralRatioForUser","slippage","defaultTCR","minStabilityCoinPrice","chainConfig","_yield$fGetOATHStakeP","amountsArray","assetsArray","shit","fGetOATHStakePendingCollateralGain","map","formatEther","asset","push","bigPendingStableGain","fGetOATHStakePendingStableGain","bigOATHStakes","fGetOATHStakes","fallbackWalletProvider","bigTotalOATHStakes","buildFallbackWalletProvider","fGetTotalOATHStakes","bigAmount","fDepositInStakingPool","_callee6","_context6","fWithdrawFromStakingPool","_claimStakingPoolRewards","_callee7","_context7","_claimStabilityPoolRewards","_callee8","_context8","fWithdrawStableFromStabilityPool","_x16","_x17","_callee9","_yield$fGetUserStabil","rewards","_context9","fGetUserStabilityPoolCollateralGain","_x18","fGetUserStabilityPoolRewards","newWalletProvider","providers","JsonRpcProvider","_x21","_x22","_x23","_callee12","_context12","fGetTotalStabilityPoolDeposits","_x24","fGetUserStabilityPoolDeposits","fDepositStableToStabilityPool","_callee21","debtAddr","debtDecimals","bigMaxFee","bigCollTopUp","bigCollWithdrawal","bigDebtChange","_context21","parseUnits","fAdjustTrove","_callee22","_context22","fCloseTrove","formattedAmount","fGetClaimableCollateral","formatUnits","fClaimCollateral","bigCollAmount","bigStableAmount","fOpenTrove","_x69","_x70","_x71","debtAddress","specificVersion","statusStrings","trove","statusIndex","fGetTroveStatus","toNumber","_x72","_x73","_x74","fGetMinDebtAndCompensation","_x79","_x80","_x81","_x82","_yield$fGetCollateral","bigTCR","tcr","fGetCollateralPriceFromAggregator","fGetTCR","bigRate","fGetBorrowingRateWithDecay","_yield$fGetCollateral2","formattedPrice","tokenDecimals","fApproveSpend","provider","allowanceRaw","fGetAllowance","rawBalance","fGetTokenBalance","_callee38","_context38","fGetMinCollateralRatio","_x109","ccr","fGetCritCollateralRatio","_x110","_x111","entireSysColl","fGetEntireSystemColl","entireSysDebt","fGetEntireSystemDebt","collateralDebtLimit","formattedDebtLimit","fGetCollateralDebtLimit","log","estimateNewTCR","_x129","_estimateNewTCR","collChange","collPriceRaw","collPrice","sysCollRaw","sysDebtRaw","sysColl","sysDebt","numerator","denominator","newTCR","_getRecoveryModePriceThreshold","ratio","liqPrice","rps","fGetStabilityRewardsPerSecond","total","fGetTotalSupply","fMigrateOath","fMigrateOathOpOldForNew","fMigrateOathOpNewForOld","getUserStERNVaultDeposits","_getUserStERNVaultDeposits","vaultTokenBalanceRes","ppFullShareRes","deposits","depositsInERN","ppFullShare","fGetPricePerFullShareOfVault","fDepositIntoVault","fWithdrawFromVault","leverToTargetCRWithIterations","_leverToTargetCRWithIterations","_callee54","useMaxIterations","bigtargetCR","bigErnPrice","bigSwapPercentageOut","_context54","fLeverToTargetCRWithNIterations","_callee55","bigLusdAmount","_context55","fDeleverAndCloseTrove","reaperDatabase","axios","create","baseURL","headers","tokenPriceDatabase","getReaperVaultInfo","vaultAddr","get","concat","getTokenPrice","getUserTroveChanges","_ref3","getLastDaysOfTroveChanges","_ref4","days","getGlobalTrovesData","_ref5","getTopBorrowers","_ref6","_x14","ITER_CAP","SLEEP_TIME_MED","runFuncUntilSuccess","_runFuncUntilSuccess","func","timeInterval","sleep","pass","finished","_args38","ms","Promise","resolve","setTimeout","checkShowNetworkWarning","checkShowNetworkWarningForEthos","isOnEthosSupportedChain","showNetworkWarning","isChainViewAligned","isWalletConnectedAndOnSupportedChain","isThereAnEmptyCollateralPosition","collUIDs","conclusion","forEach","getCollateralData","getUserLiquidationPrice","borrowAmount","editUserStakingPoolDeposits","isDepositing","finalAmount","editTotalStakingPoolDeposits","editUserStabilityPoolDeposits","editTotalStabilityPoolDeposits","refreshUserStakingRewards","then","rewardsResponse","clearUserStakingRewards","refreshUserStakingRedemptionRewards","redemptionRewards","dat","collateralId","find","collateral","reward","clearUserStakingRedemptionRewards","currentRewards","clearedRewards","scrubbedReward","refreshUserStabilityRewards","clearUserStabilityRewards","refreshUserLiquidationRewards","liquidationRewards","clearUserLiquidationRewards","refreshAllUserClaimableCollateral","collId","response","refreshUserClaimableCollateral","refreshStakingCoin","getChainStakingCoinFromId","refreshStabilityRewardCoin","getChainStabilityRewardCoinFromId","refreshCollateralPrice","_ref10","collateralCoin","collPriceResponse","_x15","refreshUserCollateralBalance","_ref12","collUserBalance","collBalance","_x19","refreshOathv1UserBalance","_ref14","oathv1","oathv1Balance","_x20","refreshOathv2UserBalance","_ref16","oathv2Balance","refreshCollateralStatus","_ref18","troveStatusResponse","collStatus","collDebt","stateCollAmountName","stateBorrowAmountName","checkIfPositionIsOpen","_ref20","_callee20","_context20","refreshCollateralMCR","_ref22","colMCRResponse","collMCR","_x31","_x32","refreshCollateralCCR","_ref24","colCCRResponse","collCCR","_x33","_x34","_x35","refreshCollateralTVL","_ref26","colTVLResponse","collTVL","refreshCollateralDebt","_ref28","debtCoin","colDebtResponse","refreshCollateralLiquidationReserve","_ref30","_ref31","refreshCollateralBorrowRate","_ref32","_callee31","_context31","refreshCollateralTCR","tcrRes","getAllCollateralData","collateralIds","allCollateralData","collateralData","liqReserve","borrowRate","collateralRatio","collateralAmount","collateralPrice","minimumCollateralRatio","criticalCollateralRatio","liquidationReserve","checkForUserOpenPositionOnVersion","_ref34","collateralList","editUserCollateralPosition","refreshAllOpenTroves","editUserCollateralBalance","collateralAmountChange","isIncreasing","refreshStabilityApr","rpsRes","apr","getStakingApr","_ref35","stakingTokenPrice","derivePositiveDebtChange","deriveDailyBOathFees","rawBeetData","test","positiveDebtChange","boathFees","boathTotalSupply","ethosBOathRatio","dailyYield","raw","change","transaction","timestamp","borrowingFee","current","fees24h","refreshUserStERNVaultDeposits","userDeposits","refreshStERNAnalytics","_ref37","yields","apy","tvl","tokens","lpToken","refreshStabilityCoinPrice","_ref38","editTotalStERNVaultDeposits","_refreshUserTroveChangess","troveChanges","collateralAddress","changes","_getUnderlyingVaults","_refreshAllOpenTroves","organizeAllTroves","_organizeAllTroves","allTroves","helperIdx","_loop","arrayLength","sortedArrayWithRanks","sort","index","owner","rank","t1","done","delegateYield","SvgCog","SettingsButton","CogIcon","DropDown","Select","options","classNamePrefix","onChange","isMulti","isSearchable","placeholder","HamburgerMenu","navbarOpen","setNavbarOpen","versionOptions","setVersionOptions","_useState5","_useState6","selectedVersion","setSelectedVersion","navigate","useNavigate","findVersionInSelectOptions","includes","pop","closeMenu","HamburgerIcon","NavLink","to","EthosLogo","filter","route","isActive","handleSelectedVersion","LoadingSpinner","loadingText","setLoadingSpinner","frames","loadStr","counter","interval","setInterval","clearInterval","SvgCaretDown","CollateralStatusBox","setCoin","healthStatus","setHealthStatus","isExpanded","setIsExpanded","_useState7","_useState8","rmpt","setRmpt","_useState9","_useState10","tvlUsd","setTvlUsd","_props$uid","_props$price","_props$tvl","_props$ccr","_props$mcr","_props$td","td","collCoin","_x130","_x131","getRecoveryModePriceThreshold","tabIndex","onFocus","onBlur","CaretDown","buildHealthStatusMessage","Header","_style","collateralUIDs","setCollateralUIDs","useMemo","Routes","Route","element","href","rel","EthosLogoSrc","boxes","buildCollateralStatusBoxes","SvgHelp","ToolTip","tooltipDirection","HelpIcon","SvgEdit","SvgArrowUp","PositionBox","_props$isBoxMode","isBoxMode","_props$status","claimable","hasClaimableColl","stateCollAmount","stateCollPrice","stateBorrowAmount","stateMinCollateralRatio","stateCritCollateralRatio","foundCollateralCoin","threatStatus","redemptionThreatStatus","critCollateralRatio","minCollateralRatio","threatEvaluation","determineThreatStatus","troveRank","totalTroves","bottom15Percent","bottom10Percent","determineRedemptionThreatStatus","liquidationPrice","buildPositionLabel","collateralID","coinIcon","src","alt","buildThreatTag","buildCollateralRatioMessage","ccrMessage","mcrMessage","buildClaimableCollateralRow","inProgress","failure","pending","buildCollateralRatioMessageBox","Link","EditIcon","PositionsIcon","buildLowerRow","DEBUG_MODE","connectToNetwork","_connectToNetwork","chainIdHex","chainName","rpcUrl","blockExplorerUrl","window","request","method","params","catch","rpcUrls","blockExplorerUrls","checkBrowserWallet","_checkBrowserWallet","signer","addr","Web3Provider","_connectBrowserWallet","retrieveAutoBrowserWallet","localStorage","getItem","SwitchNetworkButton","_getChainFromId","SvgX","Modal","_props$classNameBody","classNameBody","_props$classNameHeade","classNameHeader","_props$title","onMouseDown","handleClose","event","stopPropagation","XIcon","CollateralChangesModal","_props$isOpen","isOpen","_props$handleClose","selectedCollateralId","setSelectedCollateralId","selectedCollateral","setSelectedCollateral","availableCollateral","coinId","buildButton","buildCollateralSelectButtons","idx","troveOperation","match","join","collateralChange","collateralAfter","debtAfter","Date","toLocaleString","month","day","year","PositionsPage","isCollateralChangesModalOpen","setIsCollateralChangesModalOpen","isLoadingPage","showPositions","connectedToWrongChain","buildActionButtonIfDataIsntLoading","activeBoxes","inactiveBoxes","liquidatedBoxes","newElem","buildPositionElements","Input","_props$onClick","_props$value","_props$showMaxButton","showMaxButton","_props$maxValueFuncti","maxValueFunction","_props$isValid","isValid","_props$label","_props$errorMessage","errorMessage","_props$isNumber","_props$readonly","readonly","_props$showEditButton","showEditButton","_props$isEditButtonEn","isEditButtonEnabled","_props$editValueFunct","editValueFunction","_props$showResetButto","showResetButton","_props$resetValueFunc","resetValueFunction","_props$showApplyButto","showApplyButton","_props$applyButtonFun","applyButtonFunction","_props$isApplyButtonD","isApplyButtonDisabled","checkNumberError","checkIsNumber","errorStatus","onSubmit","preventDefault","submit","setValue","readOnly","SvgGift","ClaimRewardsBox","_path2","_path3","_path4","_path5","isShown","GiftIcon","claimFunction","SvgErn","SvgStability","StabilityPage","_state$stabilityCoin","_state$stabilityCoin2","_state$stabilityRewar","_state$stabilityCoin3","_state$stabilityCoin4","_state$stabilityCoin5","_state$stabilityCoin6","depositInputVal","setDepositInputVal","withdrawInputVal","setWithdrawInputVal","depositMoreInputVal","setDepositMoreInputVal","maxStableAvailable","setMaxStableAvailable","isEditModalOpen","setIsEditModalOpen","_useState11","_useState12","editModalMode","setEditModalMode","isMounted","tokenTicker","depositResponse","withdrawResponse","openPositionExists","isStabilityPositionOpen","isLoaded","stabilityRewardIconSrc","ErnIcon","liquidationRewardsList","coinIconSrc","rewardElement","buildUserLiquidationRewardsList","claimStabilityPoolRewards","isAnyClaimableLiquidationRewards","every","StabilityIcon","SvgStake","StakingPage","_state$stakingCoin","_state$stakingCoin2","_state$stakingRewardC","_state$stakingCoin3","_state$stakingCoin4","_state$stakingCoin5","_state$stakingCoin6","maxStakingCoinAvailable","setMaxStakingCoinAvailable","bOathUrl","stakingCoinAddr","stakingContractAddr","justDeposit","approveAndDeposit","approveResponse","allowanceRes","isStakingPositionOpen","stakingIconSrc","redemptionRewardsList","buildUserRedemptionRewardsList","claimStakingPoolRewards","isAnyClaimableRedemptionRewards","StakeIcon","ClassicOpenInputs","_props$selectedCollat","_props$maxCollateralA","maxCollateralAvailable","_props$submitInputs","submitInputs","collInput","borrowInput","_props$minBorrow","minBorrow","_props$debtLimit","debtLimit","_props$totalCollDebt","totalCollDebt","collateralInputVal","setCollateralInputVal","collateralInputErrorMsg","setCollateralInputErrorMsg","isCollateralInputValid","setIsCollateralInputValid","borrowInputVal","setBorrowInputVal","borrowInputErrorMsg","setBorrowInputErrorMsg","isBorrowInputValid","setIsBorrowInputValid","errorMsg","checkIfDebtLimitIsReached","availableToBorrow","cancel","useImperativeHandle","forwardRef","Slider","_props$min","min","_props$max","max","_props$displayValue","displayValue","_props$valueLabel","valueLabel","LeverageOpenInputs","tcrInput","iterationsInput","leverageData","_props$borrowRate","_props$liqReserve","_props$selectedCollat2","selectedCollateralPrice","_props$minCollateralR","minCollateralRatioForLeverage","_props$stateCollPrice","_props$stabilityCoinP","tcrInputVal","setTcrInputVal","tcrInputErrorMsg","setTcrInputErrorMsg","isTcrInputValid","setIsTcrInputValid","_useState13","_useState14","iterationsInputVal","setIterationsInputVal","_useState15","_useState16","iterationsInputErrorMsg","setIterationsInputErrorMsg","_useState17","_useState18","isIterationsInputValid","setIsIterationsInputValid","_useState19","_useState20","targetTroveCollateralIdxInputVal","setTargetTroveCollateralIdxInputVal","_useState21","_useState22","targetLeverageData","setTargetLeverageData","_useState23","_useState24","isTargetLeverageDataValid","setIsTargetLeverageDataValid","_useState25","_useState26","leverageIterationsArray","setLeverageIterationsArray","targetCollRatio","totalTroveCollateralUSD","totalTroveDebt","totalERNBorrowed","ernBorrowedInFirstIteration","collAmountInHandUSD","ernInWallet","borrowFee","iterationArray","totalTroveCollateral","iteration","_unused","calculateLeverageData","minBorrowFee","minCollateral","resetSlider","parseInt","SvgCheck","SvgStatusX","SvgDash","stroke","strokeDasharray","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","ConditionBox","_props$isActive","_props$description","description","_props$checkboxColorT","checkboxColorType","CheckIcon","CircledXIcon","DashIcon","ClassicOpenConditionBoxes","_props$showDisclaimer","showDisclaimerMessage","_props$stateMinCollat","_props$stateCritColla","_props$collateralRati","_props$isCollateralRa","isCollateralRatioValid","_props$newTCREstimate","newTCREstimate","_props$collateralInpu","_props$borrowInputVal","_props$isBorrowingFee","isBorrowingFeeValid","_props$borrowFee","_props$isTotalDebtVal","isTotalDebtValid","_props$totalDebt","totalDebt","_props$isLiqReserveVa","isLiqReserveValid","_props$isLiqPriceNorm","isLiqPriceNormalValid","_props$liqPriceNormal","liqPriceNormal","_props$isLiqPriceReco","isLiqPriceRecoveryValid","_props$liqPriceRecove","liqPriceRecovery","_props$isCollateralRa2","isCollateralRatioRankValid","_props$collateralRati2","collateralRatioRank","_props$isCRRankNearLa","isCRRankNearLast","LeverageOpenConditionBoxes","_props$totalERNBorrow","_props$isTotalERNBorr","isTotalERNBorrowedValid","_props$ernInWallet","_props$isERNInWalletV","isERNInWalletValid","_props$totalTroveColl","_props$isTotalTroveCo","isTotalTroveCollateralValid","_props$tcrInputVal","_props$iterationsInpu","InfoBox","_path6","_path7","_path8","_path9","_path10","SvgLeverage","SvgLink","LeverageWarningModal","CollateralHelpModal","RankWarningModal","_props$handleSubmit","handleSubmit","LinkIcon","NewPositionPage","setMaxCollateralAvailable","isLeverageModeEnabled","setIsLeverageModeEnabled","targetCRInputVal","setTargetCRInputVal","setSelectedCollateralPrice","setBorrowFee","setIsBorrowingFeeValid","setBorrowRate","setMinBorrow","_useState27","_useState28","setTotalDebt","_useState29","_useState30","setIsTotalDebtValid","_useState31","_useState32","setCollateralRatio","_useState33","_useState34","setIsCollateralRatioValid","_useState35","_useState36","setLiqReserve","_useState37","_useState38","setIsLiqReserveValid","_useState39","_useState40","setLiqPriceNormal","_useState41","_useState42","setIsLiqPriceNormalValid","_useState43","_useState44","setLiqPriceRecovery","_useState45","_useState46","setIsLiqPriceRecoveryValid","_useState47","_useState48","setCollateralRatioRank","_useState49","_useState50","setIsCollateralRatioRankValid","_useState51","_useState52","setIsCRRankNearLast","_useState53","_useState54","setTotalTroveCollateral","_useState55","_useState56","setIsTotalTroveCollateralValid","_useState57","_useState58","setTotalERNBorrowed","_useState59","_useState60","setIsTotalERNBorrowedValid","_useState61","_useState62","setERNInWallet","_useState63","_useState64","setIsERNInWalletValid","_useState65","_useState66","setERNBorrowedInFirstIteration","_useState67","_useState68","setNewTCREstimate","_useState69","_useState70","setDebtLimit","_useState71","_useState72","setShowDisclaimerMessage","_useState73","_useState74","disclaimerMessage","setDisclaimerMessage","_useState75","_useState76","showLeverageWarning","setShowLeverageWarning","_useState77","_useState78","showCollateralHelpModal","setShowCollateralHelpModal","_useState79","_useState80","showRankWarningModal","setShowRankWarningModal","stateCollStatus","classicOpenInputsRef","useRef","leverageOpenInputsRef","resetInputs","resetConditionBoxes","resetDisclaimer","openLeverageWarning","unstakedCollateralPositions","position","getUnstakedCollateralPositions","userCollAmount","userBorrowAmount","borrowingRate","limit","sumA","totalSum","collateralPosition","targetCRRaw","checkIfCRWithinLiquidateRange","checkPositionRank","ratioRaw","ratioPercent","_leverageOpenInputsRe","_classicOpenInputsRef","openPosition","collTokenTicker","currentTxMessages","contractAddr","justOpen","approveAndOpen","openRes","approveRes","openTroves","openTrovesCopy","_toConsumableArray","findIndex","obj","gapUntilLast","trovesInDanger","buildPositionTypeButtons","leverageDisabled","checkIfLeverageIsDisabled","LeverageIcon","borrowAmountToShow","collateralRatioToShow","buildOpenPositionDescriptionText","SvgStErn","AllPositionsModal","positionElements","setPositionElements","positions","DashboardPage","setPositions","isPositionsModalOpen","setIsPositionsModalOpen","slicedBoxes","buildUserRewardsList","buildDashPositions","internals","buildDashStability","buildDashStaking","StERNIcon","buildDashStERN","EditPositionPage","_circle","maxStabilityAvailable","setMaxStabilityAvailable","deleverAndCloseInputVal","setDeleverAndCloseInputVal","deleverAndCloseInputErrorMsg","setDeleverAndCloseInputErrorMsg","isDeleverAndCloseInputValid","setIsDeleverAndCloseInputValid","setCollateralCoin","setCollateralPosition","setCollateralPrice","baseBorrow","setBaseBorrow","isEditCollateralOpen","setIsEditCollateralOpen","isEditBorrowOpen","setIsEditBorrowOpen","isClosePositionModalOpen","setIsClosePositionModalOpen","isEditCollateralModalDepositMode","setIsEditCollateralModalDepositMode","editCollateralModalInput","setEditCollateralModalInput","isEditBorrowModalDepositMode","setIsEditBorrowModalDepositMode","editBorrowModalInput","setEditBorrowModalInput","isDeleverAndClosePositionModalOpen","setIsDeleverAndClosePositionModalOpen","_useState81","_useState82","_useState83","_useState84","_useState85","_useState86","_useState87","_useState88","_useState89","_useState90","_useState91","_useState92","deleverInNIterations","setDeleverInNIterations","_useState93","_useState94","_useState95","_useState96","stateLiquidationReserve","divA","borrowWithoutLiqReserve","updatedBorrowFee","subA","subB","borrowWithLiqReserve","oldTotalBorrow","newTotalBorrow","maxERNToInput","canDeleverInNIterations","ernInput","totalCollateral","hasReachedMinDebt","collInHand","totalDebtLeft","ernInHand","totalCollateralLeft","netDebtAfterRepayment","isEnoughERNNeededForDelever","closePosition","deleverAndClosePosition","stabilityCoinInput","justDeleverAndClose","approveAndDeleverAndClose","adjustPosition","_collAddr","collIncreaseAmount","isCollIncreasing","isDebtIncreasing","_contractAddr","justAdjust","approveAndAdjust","adjustRes","newCollAmount","newBorrowAmount","minAmount","currentBorrowedAmount","newCollateralRatio","currentTroveIdx","enoughStabilityCoins","repayAmount","isEnoughStabilityCoinToClose","isEditCollateralModalConfirmButtonEnabled","currentAmount","buildCollInputLabel","style","maxColl","buildBorrowInputLabel","maxBorrow","SvgOathv1","cx","cy","r","SvgOathv2","MigrationPage","oathInputVal","setOathInputVal","inputCoin","setInputCoin","availableOathv1","setAvailableOathv1","openLinkNewTab","link","openTab","open","focus","oathv1Config","MigrateIcon","OathIconV1","OathIconV2","ArrowUpIcon","oathInputConfig","justMigrate","migrateRes","approveAndMigrate","VaultPage","withdrawAmountInERN","userStWENDepositsInERN","bigYourTokensAmount","bigMaxWithdraw","getInputShareWithdrawAmount","isStERNPositionOpen","SvgAnalytics","AllTrovesModal","tableRef","entryElement","querySelector","scrollIntoView","behavior","scrollToUserPosition","StabilityCoinWidget","stabilityCoinSupply","setStabilityCoinSupply","tokenAddress","explorer","buildExplorerUrl","strategyLabels","AnalyticsPage","isAllTrovesModalOpen","setIsAllTrovesModalOpen","trovesGlobalData","setTrovesGlobalData","vaultData","aprBreakdown","strategy","allocBPS","numberOfOpenTroves","numberOfLiquidatedTroves","numberOfRedeemedTroves","redemptionCount","liquidationCount","AnalyticsIcon","Body","buildNewCollateralPositionRoutes","buildEditCollateralPositionRoutes","SvgTwitter","SvgDiscord","Disclaimer","readMode","nowInSeconds","now","setItem","Footer","isTermsModalOpen","setIsTermsModalOpen","DiscordIcon","TwitterIcon","NetworkWarning","networkModalOpen","setNetworkModalOpen","supportedChainKeys","EthosVersionModal","setIsOpen","SvgHouse","preserveAspectRatio","SvgDashboard","SvgEye","BalanceBox","EyeIcon","collIds","balanceElements","userCollValue","underline","elem","buildBalances","SideMenu","pathname","useLocation","isCollapsed","iconMap","HomeIcon","DashboardIcon","StakingIcon","totalTvl","stakingPool","getTvl","SvgSun","SvgMoon","SettingsModal","setTheme","saveTheme","setMenuPosition","saveHamburgerMenuPosition","setAutoBrowserWallet","setting","SunIcon","MoonIcon","initWalletConnect","projectId","web3Modal","univProvider","checkForPersistedSession","persistedSession","accounts","walletDetails","_walletDetails","Web3Modal","walletConnectVersion","standaloneChains","themeMode","themeVariables","explorerRecommendedWalletIds","UniversalProvider","init","session","on","openModal","disconnect","connect","namespaces","eip155","methods","events","rpcMap","closeModal","enable","ConnectWalletModal","connectBrowserWallet","SvgStatusCheck","TransactionStatusModal","_props$txMessages","_props$currentTxNumbe","_props$currentTxStatu","_props$isLoadingTxSte","_props$modalTitle","modalTitle","_props$isContentOnlyM","isContentOnlyMode","buildInternals","pcImgSrc","showTxStatusIcon","txStatus","showTxMessage","messages","txList","txMessage","buildTxList","HeaderAlert","versions","getMessage","SelectNetworkModal","connectToChainView","App","_state$walletProvider","_state$walletProvider2","lastAgreed","show","scrubbedAutoBrowserWallet","checkAndSetWallet","_yield$checkBrowserWa","setChainSupported","newAddress","scrubbedChainId","refreshStabilityCoin","refreshStakingRewardCoin","chainInfo","buildReadProvider","totalDeposits","refreshTotalStabilityPoolDeposits","refreshTotalStakingPoolDeposits","lastPrice","sharePrice","stabilityRewardId","stabilityRewardCoinAddr","oathPrice","refreshBeethovenPrices","refreshUserStERNVaultUSD","conditional","initializeCollaterals","refreshUserStabilityPoolDeposits","refreshUserStakingPoolDeposits","refreshUserTroveChangess","getUnderlyingVaults","network","areCollateralPricesLoaded","getRouteFromPath","lastRead","checkShowHeaderAlert","ReactDOM","render","React","StrictMode","BrowserRouter","document","getElementById"],"mappings":"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","file":"static/js/main.d6d4cba4.chunk.js","sourcesContent":["var _rect, _rect2, _rect3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgHamburger(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"512px\",\n height: \"512px\",\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 352,\n height: 32,\n x: 80,\n y: 96,\n fill: \"var(--ci-primary-color, currentColor)\",\n className: \"ci-primary\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 352,\n height: 32,\n x: 80,\n y: 240,\n fill: \"var(--ci-primary-color, currentColor)\",\n className: \"ci-primary\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 352,\n height: 32,\n x: 80,\n y: 384,\n fill: \"var(--ci-primary-color, currentColor)\",\n className: \"ci-primary\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHamburger);\nexport default __webpack_public_path__ + \"static/media/hamburger.6113c20b.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/op.7dd7e6d7.svg\";","export default __webpack_public_path__ + \"static/media/eth.4bd06736.svg\";","export default __webpack_public_path__ + \"static/media/matic.f9c7fa99.svg\";","export default __webpack_public_path__ + \"static/media/arb.20df7bed.svg\";","export default __webpack_public_path__ + \"static/media/bsc.24b1e0ef.svg\";","export default __webpack_public_path__ + \"static/media/avax.234db155.svg\";","import { ChainHolderInterface } from './Types';\n\nimport opIconSrc from '../assets/icons/coins/op.svg';\nimport EthIconSrc from '../assets/icons/coins/eth.svg';\nimport MaticIconSrc from '../assets/icons/coins/matic.svg';\nimport ArbIconSrc from '../assets/icons/coins/arb.svg';\nimport BscIconSrc from '../assets/icons/coins/bsc.svg';\nimport AvaxIconSrc from '../assets/icons/coins/avax.svg';\nimport KavaIconSrc from '../assets/icons/coins/kava.svg';\n\nexport const chains: ChainHolderInterface = {\n optimism: {\n label: 'Optimism',\n shortLabel: 'OP',\n chainId: {\n readable: '10',\n hex: '0xa',\n },\n nativeCurrency: {\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n defaultRpc: 'https://mainnet.optimism.io',\n explorerUrl: 'https://optimistic.etherscan.io',\n configV2_1: {\n tokenUIDs: {\n collaterals: ['btc', 'eth', 'wsteth'],\n staking: 'boathv2',\n stability: 'ern',\n stakingReward: 'ern',\n stabilityReward: 'oathv2',\n },\n migrationOnly: false,\n contracts: {\n borrowerOperationsAddr: '0xaA0B41B61f76587cf85155147d7F3B7725D14Eb3',\n sortedTrovesAddr: '0xe36e5aA08756074D7e12d6a753b5Ed2c54Aea573',\n hintHelpersAddr: '0xA253C8b11FC03Ea74710CF668d86fd9FdBf8E550',\n priceFeedAddr: '0xadd6F326a395629926D9a535d809B5e3d8c7FE8d',\n multiTroveGetterAddr: '0x6aF72c0F9CFeC2567730C30bA60C3DD9080F8fBF',\n troveManagerAddr: '0x75C72F459f2054B46ceFD6D10eC99d0fbd777F05',\n stabilityPoolAddr: '0xD839A111598d5e27BD8f7A1A18ce9Bf079F0c0a2',\n stakingPoolAddr: '0x7D6a62d496D42d5E978C4eDa0d367Ac1Ba70A200',\n stERNVaultAddr: '0x3eE6107d9C93955acBb3f39871D32B02F82B78AB',\n collateralConfigAddr: '0xA2f01800Bd6d878b82E6009a7022fa9B1cDC810c',\n collSurplusPoolAddr: '0xEe9C13e27D8A60671cB3E7EF351ffd8aDdb670FB',\n communityIssuance: '0x323A9C4CB4Be7A3c9d31209B0a2bAd56276bbf89',\n oathMigrationAddr: '0x1f854b4889691012F33B5863Bf6DAB4ceEdD96a9',\n leveragerAddr: '0xC047AD7Dc2b80811302C949658B228e4468fBF14',\n gasOracle: '0x420000000000000000000000000000000000000F'\n },\n subgraphUrl: 'https://api.thegraph.com/subgraphs/name/kquach12/ethos-reserve-v2-1',\n },\n configV2: {\n tokenUIDs: {\n collaterals: ['btc', 'eth'],\n staking: 'boathv2',\n stability: 'ern',\n stakingReward: 'ern',\n stabilityReward: 'oathv2',\n },\n migrationOnly: false,\n contracts: {\n borrowerOperationsAddr: '0x0067E18FF0a6c54585646B068A25be4b81A17429',\n sortedTrovesAddr: '0x0F3d415e0225F8d98f001411D2E2c2839d6f48E6',\n hintHelpersAddr: '0x3a75aD444d6d9C100D93741CF4fa7Ca470297A6b',\n priceFeedAddr: '0x9cC5bDdF2Cc8C38332c2e71e08cf21308C8422EF',\n multiTroveGetterAddr: '0xe6EBFA62180d6838A1f45B34De7D9dad7697528A',\n troveManagerAddr: '0x06cbD15D58069193717486CFDe37Ebf5Ec72a8A6',\n stabilityPoolAddr: '0x1E302e0D9fCaa6ed10ab042AcC670Aa961498152',\n stakingPoolAddr: '0x6c56A0Ca937A3C9f29bCF386D3cD0667Ef9d7e88',\n stERNVaultAddr: '0x3eE6107d9C93955acBb3f39871D32B02F82B78AB',\n collateralConfigAddr: '0xB1623a029033ecd5C91a62FF734f1c7F07A26e52',\n collSurplusPoolAddr: '0x4aB8A9A89578f4907b48a6a2DfC0f766dBC0C01b',\n communityIssuance: '0xf25b178cD0FeD5c173018faB872F27E311c3268F',\n oathMigrationAddr: '0x1f854b4889691012F33B5863Bf6DAB4ceEdD96a9',\n leveragerAddr: '0x975496F8e43280bf5dee941A1bf70FD2b6429492',\n gasOracle: '0x420000000000000000000000000000000000000F'\n },\n subgraphUrl: 'https://api.thegraph.com/subgraphs/name/munchies69/ethos-reserve-v2',\n },\n configV1: {\n tokenUIDs: {\n collaterals: ['btc', 'eth', 'op'],\n staking: 'boathv1',\n stability: 'ern',\n stakingReward: 'ern',\n stabilityReward: 'oathv1',\n },\n migrationOnly: false,\n contracts: {\n borrowerOperationsAddr: '0x0a4582d3d9ecBAb80a66DAd8A881BE3b771d3e5B',\n sortedTrovesAddr: '0x09B841517E6A0adA7E53DDF4d8837860f6F9E91d',\n hintHelpersAddr: '0xcA716B88B5B9519350A18c6BFb7a959dA7eE4205',\n priceFeedAddr: '0xC6b3Eea38Cbe0123202650fB49c59ec41a406427',\n multiTroveGetterAddr: '0xAde403FFD50f8C568F1A72BaACF063736f80d788',\n troveManagerAddr: '0xd584A5E956106DB2fE74d56A0B14a9d64BE8DC93',\n stabilityPoolAddr: '0x8B147A2d4Fc3598079C64b8BF9Ad2f776786CFed',\n stakingPoolAddr: '0x9425B96462B1940e7563CD765464300F6a774805',\n stERNVaultAddr: '0x3eE6107d9C93955acBb3f39871D32B02F82B78AB',\n collateralConfigAddr: '0x236931e351d8b7cc9686E9b9AdfeA630B05B6062',\n collSurplusPoolAddr: '0x00D8f80D35de57cC12Efb3A5D7d09Fe26Da346d9',\n communityIssuance: '0xC84936612d38B847155FEC294fD08Ec1f64C2BDA',\n oathMigrationAddr: '0x1f854b4889691012F33B5863Bf6DAB4ceEdD96a9',\n leveragerAddr: '',\n gasOracle: '0x420000000000000000000000000000000000000F'\n },\n subgraphUrl: 'https://api.thegraph.com/subgraphs/name/munchies69/ethos-reserve',\n },\n isEthosSupported: true,\n icon: opIconSrc,\n },\n ethereum: {\n label: 'Ethereum Mainnet',\n shortLabel: 'ETH',\n chainId: {\n readable: '1',\n hex: '0x1',\n },\n nativeCurrency: {\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n defaultRpc: 'https://mainnet.infura.io/v3/',\n explorerUrl: 'https://etherscan.io/',\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x609C00BcC0EFAe35Bf5F85f0fb519a4dFA7e2d3e',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x609C00BcC0EFAe35Bf5F85f0fb519a4dFA7e2d3e',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x609C00BcC0EFAe35Bf5F85f0fb519a4dFA7e2d3e',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: 'https://api.thegraph.com/subgraphs/name/munchies69/liquity-optimism',\n },\n icon: EthIconSrc,\n },\n polygon: {\n label: 'Polygon Mainnet',\n shortLabel: 'Polygon',\n chainId: {\n readable: '137',\n hex: '0x89',\n },\n nativeCurrency: {\n name: 'MATIC',\n symbol: 'MATIC',\n decimals: 18,\n },\n defaultRpc: 'https://polygon-rpc.com',\n explorerUrl: 'https://polygonscan.com',\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n icon: MaticIconSrc,\n },\n bsc: {\n label: 'BNB Smart Chain',\n shortLabel: 'BSC',\n chainId: {\n readable: '56',\n hex: '0x38',\n },\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n defaultRpc: 'https://rpc.ankr.com/bsc',\n explorerUrl: 'https://bscscan.com',\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x8BB7E345436f81c5E948797E5d895A9c1c86f9BA',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x8BB7E345436f81c5E948797E5d895A9c1c86f9BA',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x8BB7E345436f81c5E948797E5d895A9c1c86f9BA',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n icon: BscIconSrc,\n },\n arbitrum: {\n label: 'Arbitrum One',\n shortLabel: 'Arbitrum',\n chainId: {\n readable: '42161',\n hex: '0xa4b1',\n },\n nativeCurrency: {\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n defaultRpc: 'https://arb1.arbitrum.io/rpc',\n explorerUrl: 'https://arbiscan.io',\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x64BAFF2eB676cF1f773861DD529fbF86F24C6aAD',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x64BAFF2eB676cF1f773861DD529fbF86F24C6aAD',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0x64BAFF2eB676cF1f773861DD529fbF86F24C6aAD',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n icon: ArbIconSrc,\n },\n kava: {\n label: 'Kava EVM Co-Chain',\n shortLabel: 'Kava',\n chainId: {\n readable: '2222',\n hex: '0x8ae',\n },\n nativeCurrency: {\n name: 'KAVA',\n symbol: 'KAVA',\n decimals: 18,\n },\n defaultRpc: 'https://evm.kava.io',\n explorerUrl: 'https://explorer.kava.io',\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n icon: KavaIconSrc,\n },\n avalanche: {\n label: 'Avalanche Network',\n shortLabel: 'Avalanche',\n chainId: {\n readable: '43114',\n hex: '0xa86a',\n },\n nativeCurrency: {\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n defaultRpc: 'https://api.avax.network/ext/bc/C/rpc',\n explorerUrl: 'https://snowtrace.io/',\n configV2_1:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV1: {\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n configV2:{\n tokenUIDs: {\n collaterals: [],\n staking: '',\n stability: '',\n stakingReward: '',\n stabilityReward: 'oathv1',\n },\n migrationOnly: true,\n contracts: {\n borrowerOperationsAddr: '',\n sortedTrovesAddr: '',\n hintHelpersAddr: '',\n priceFeedAddr: '',\n multiTroveGetterAddr: '',\n troveManagerAddr: '',\n stabilityPoolAddr: '',\n stakingPoolAddr: '',\n stERNVaultAddr: '',\n collateralConfigAddr: '',\n collSurplusPoolAddr: '',\n communityIssuance: '',\n oathMigrationAddr: '0xfef3385BC7a87dA4a603D36E6eCE415342c68D57',\n leveragerAddr: '',\n gasOracle: ''\n },\n subgraphUrl: '',\n },\n icon: AvaxIconSrc,\n },\n};\n\nexport const defaultChain = chains.optimism;\n\nexport const supportedChains = [\n chains.optimism.chainId.hex,\n chains.ethereum.chainId.hex,\n chains.polygon.chainId.hex,\n chains.arbitrum.chainId.hex,\n chains.bsc.chainId.hex,\n chains.avalanche.chainId.hex,\n];\n","export default __webpack_public_path__ + \"static/media/kava.d4d2b461.svg\";","import { defaultChain } from './storage/Chains';\nimport { GlobalStateInterface } from './storage/Types';\n\nexport const defaultState: GlobalStateInterface = {\n isAppInitialized: false,\n\n // Wallet\n walletAddress: '',\n walletProvider: undefined,\n walletType: '',\n isWalletDetected: false,\n isWalletConnected: false,\n isConnectWalletLocked: false,\n readProvider: undefined,\n\n // Chain\n connectedChain: '',\n chainView: defaultChain.chainId.hex,\n isOnSupportedChain: false,\n\n // View\n currentPage: 'home',\n appVersion: '2_1',\n showDisclaimer: true,\n isMobile: false,\n isSettingsOpen: false,\n isConnectWalletOpen: false,\n isSelectNetworkOpen: false,\n isLeverageWarningRead: false,\n showHeaderAlert: false,\n stakingCoin: undefined,\n stabilityCoin: undefined,\n stakingRewardCoin: undefined,\n stabilityRewardCoin: undefined,\n newPositionCollateralId: '',\n\n // User Status\n userStakingDeposits: '',\n userStabilityDeposits: '',\n userStERNDeposits: '',\n userStERNDepositsInERN: '',\n userStERNDepositsUSD: '',\n userStakingRewards: '',\n userRedemptionRewards: [],\n userStabilityRewards: '',\n userLiquidationRewards: [],\n\n oathv1UserBalance: '',\n oathv2UserBalance: '',\n\n hasV1Position: false,\n hasV2Position: false,\n\n // Collaterals\n btcPrice: '',\n btcStatus: '',\n btcCollateralAmount: '',\n btcBorrowAmount: '',\n btcMinCollateralRatio: '',\n btcCritCollateralRatio: '',\n btcTotalCollateralRatio: '',\n btcLiquidationReserve: '',\n btcBorrowRate: '',\n btcTVL: '',\n btcTotalDebt: '',\n btcUserBalance: '',\n btcClaimableCollateral: '',\n btcUserTroveChanges: [],\n btcAllOpenTroves: [],\n btcVaultData: undefined,\n btcUserTroveRank: '',\n\n ethPrice: '',\n ethStatus: '',\n ethCollateralAmount: '',\n ethBorrowAmount: '',\n ethMinCollateralRatio: '',\n ethCritCollateralRatio: '',\n ethTotalCollateralRatio: '',\n ethLiquidationReserve: '',\n ethBorrowRate: '',\n ethTVL: '',\n ethTotalDebt: '',\n ethUserBalance: '',\n ethClaimableCollateral: '',\n ethUserTroveChanges: [],\n ethAllOpenTroves: [],\n ethVaultData: undefined,\n ethUserTroveRank: '',\n\n opPrice: '',\n opStatus: '',\n opCollateralAmount: '',\n opBorrowAmount: '',\n opMinCollateralRatio: '',\n opCritCollateralRatio: '',\n opTotalCollateralRatio: '',\n opLiquidationReserve: '',\n opBorrowRate: '',\n opTVL: '',\n opTotalDebt: '',\n opUserBalance: '',\n opClaimableCollateral: '',\n opUserTroveChanges: [],\n opAllOpenTroves: [],\n opVaultData: undefined,\n opUserTroveRank: '',\n\n wstethPrice: '',\n wstethStatus: '',\n wstethCollateralAmount: '',\n wstethBorrowAmount: '',\n wstethMinCollateralRatio: '',\n wstethCritCollateralRatio: '',\n wstethTotalCollateralRatio: '',\n wstethLiquidationReserve: '',\n wstethBorrowRate: '',\n wstethTVL: '',\n wstethTotalDebt: '',\n wstethUserBalance: '',\n wstethClaimableCollateral: '',\n wstethUserTroveChanges: [],\n wstethAllOpenTroves: [],\n wstethVaultData: undefined,\n wstethUserTroveRank: '',\n\n // Protocol Status\n totalStakingDeposits: '',\n totalStabilityDeposits: '',\n stakingApr: '',\n stabilityApr: '',\n stERNApy: '',\n totalStERNDeposits: '',\n stabilityCoinPrice: '',\n stakingCoinPrice: '',\n stabilityRewardCoinPrice: '',\n topBorrowers: [],\n\n // Transaction Box\n txMessages: [],\n currentTxNumber: 0,\n currentTxStatus: '',\n isTxModalOpen: false,\n isLoadingTxSteps: true,\n\n // Loading\n isLoadingStability: true,\n isLoadingStaking: true,\n isLoadingPositions: true,\n\n // Settings\n theme: 'ethos-light',\n hamburgerMenuPosition: 'right',\n autoBrowserWallet: true,\n};\n\nconst Reducer = (state: any, action: any) => {\n switch (action.type) {\n case 'isAppInitialized':\n return {\n ...state,\n isAppInitialized: action.content,\n };\n // Wallet\n case 'walletAddress':\n return {\n ...state,\n walletAddress: action.content,\n };\n case 'walletProvider':\n return {\n ...state,\n walletProvider: action.content,\n };\n case 'walletType':\n return {\n ...state,\n walletType: action.content,\n };\n case 'isWalletDetected':\n return {\n ...state,\n isWalletDetected: action.content,\n };\n case 'isWalletConnected':\n return {\n ...state,\n isWalletConnected: action.content,\n };\n case 'isConnectWalletLocked':\n return {\n ...state,\n isConnectWalletLocked: action.content,\n };\n case 'readProvider':\n return {\n ...state,\n readProvider: action.content,\n };\n\n // Chain\n case 'connectedChain':\n return {\n ...state,\n connectedChain: action.content,\n };\n case 'chainView':\n return {\n ...state,\n chainView: action.content,\n };\n case 'isOnSupportedChain':\n return {\n ...state,\n isOnSupportedChain: action.content,\n };\n // View\n case 'currentPage':\n return {\n ...state,\n currentPage: action.content,\n };\n case 'appVersion':\n return {\n ...state,\n appVersion: action.content,\n };\n case 'showDisclaimer':\n return {\n ...state,\n showDisclaimer: action.content,\n };\n case 'isMobile':\n return {\n ...state,\n isMobile: action.content,\n };\n case 'isSettingsOpen':\n return {\n ...state,\n isSettingsOpen: action.content,\n };\n case 'isConnectWalletOpen':\n return {\n ...state,\n isConnectWalletOpen: action.content,\n };\n case 'isSelectNetworkOpen':\n return {\n ...state,\n isSelectNetworkOpen: action.content,\n };\n case 'isLeverageWarningRead':\n return {\n ...state,\n isLeverageWarningRead: action.content,\n };\n case 'showHeaderAlert':\n return {\n ...state,\n showHeaderAlert: action.content,\n };\n case 'stakingCoin':\n return {\n ...state,\n stakingCoin: action.content,\n };\n case 'stabilityCoin':\n return {\n ...state,\n stabilityCoin: action.content,\n };\n case 'stakingRewardCoin':\n return {\n ...state,\n stakingRewardCoin: action.content,\n };\n case 'stabilityRewardCoin':\n return {\n ...state,\n stabilityRewardCoin: action.content,\n };\n case 'newPositionCollateralId':\n return {\n ...state,\n newPositionCollateralId: action.content,\n };\n // User Status\n case 'userStakingDeposits':\n return {\n ...state,\n userStakingDeposits: action.content,\n };\n case 'userStabilityDeposits':\n return {\n ...state,\n userStabilityDeposits: action.content,\n };\n case 'userStERNDeposits':\n return {\n ...state,\n userStERNDeposits: action.content,\n };\n case 'userStERNDepositsInERN':\n return {\n ...state,\n userStERNDepositsInERN: action.content,\n };\n case 'userStERNDepositsUSD':\n return {\n ...state,\n userStERNDepositsUSD: action.content,\n };\n case 'userStakingRewards':\n return {\n ...state,\n userStakingRewards: action.content,\n };\n case 'userRedemptionRewards':\n return {\n ...state,\n userRedemptionRewards: action.content,\n };\n case 'userStabilityRewards':\n return {\n ...state,\n userStabilityRewards: action.content,\n };\n case 'userLiquidationRewards':\n return {\n ...state,\n userLiquidationRewards: action.content,\n };\n case 'oathv1UserBalance':\n return {\n ...state,\n oathv1UserBalance: action.content,\n };\n case 'oathv2UserBalance':\n return {\n ...state,\n oathv2UserBalance: action.content,\n };\n case 'hasV1Position':\n return {\n ...state,\n hasV1Position: action.content,\n };\n case 'hasV2Position':\n return {\n ...state,\n hasV2Position: action.content,\n };\n // Collaterals\n case 'btcPrice':\n return {\n ...state,\n btcPrice: action.content,\n };\n case 'btcStatus':\n return {\n ...state,\n btcStatus: action.content,\n };\n case 'btcCollateralAmount':\n return {\n ...state,\n btcCollateralAmount: action.content,\n };\n case 'btcBorrowAmount':\n return {\n ...state,\n btcBorrowAmount: action.content,\n };\n case 'btcMinCollateralRatio':\n return {\n ...state,\n btcMinCollateralRatio: action.content,\n };\n case 'btcCritCollateralRatio':\n return {\n ...state,\n btcCritCollateralRatio: action.content,\n };\n case 'btcTotalCollateralRatio':\n return {\n ...state,\n btcTotalCollateralRatio: action.content,\n };\n case 'btcLiquidationReserve':\n return {\n ...state,\n btcLiquidationReserve: action.content,\n };\n case 'btcBorrowRate':\n return {\n ...state,\n btcBorrowRate: action.content,\n };\n case 'btcTVL':\n return {\n ...state,\n btcTVL: action.content,\n };\n case 'btcTotalDebt':\n return {\n ...state,\n btcTotalDebt: action.content,\n };\n case 'btcUserBalance':\n return {\n ...state,\n btcUserBalance: action.content,\n };\n case 'btcClaimableCollateral':\n return {\n ...state,\n btcClaimableCollateral: action.content,\n };\n case 'btcUserTroveChanges':\n return {\n ...state,\n btcUserTroveChanges: action.content,\n };\n case 'btcAllOpenTroves':\n return {\n ...state,\n btcAllOpenTroves: action.content,\n };\n case 'btcVaultData':\n return {\n ...state,\n btcVaultData: action.content,\n };\n case 'btcUserTroveRank':\n return {\n ...state,\n btcUserTroveRank: action.content,\n };\n case 'ethPrice':\n return {\n ...state,\n ethPrice: action.content,\n };\n case 'ethStatus':\n return {\n ...state,\n ethStatus: action.content,\n };\n case 'ethCollateralAmount':\n return {\n ...state,\n ethCollateralAmount: action.content,\n };\n case 'ethBorrowAmount':\n return {\n ...state,\n ethBorrowAmount: action.content,\n };\n case 'ethMinCollateralRatio':\n return {\n ...state,\n ethMinCollateralRatio: action.content,\n };\n case 'ethCritCollateralRatio':\n return {\n ...state,\n ethCritCollateralRatio: action.content,\n };\n case 'ethTotalCollateralRatio':\n return {\n ...state,\n ethTotalCollateralRatio: action.content,\n };\n case 'ethLiquidationReserve':\n return {\n ...state,\n ethLiquidationReserve: action.content,\n };\n case 'ethBorrowRate':\n return {\n ...state,\n ethBorrowRate: action.content,\n };\n case 'ethTVL':\n return {\n ...state,\n ethTVL: action.content,\n };\n case 'ethTotalDebt':\n return {\n ...state,\n ethTotalDebt: action.content,\n };\n case 'ethUserBalance':\n return {\n ...state,\n ethUserBalance: action.content,\n };\n case 'ethClaimableCollateral':\n return {\n ...state,\n ethClaimableCollateral: action.content,\n };\n case 'ethUserTroveChanges':\n return {\n ...state,\n ethUserTroveChanges: action.content,\n };\n case 'ethAllOpenTroves':\n return {\n ...state,\n ethAllOpenTroves: action.content,\n };\n case 'ethVaultData':\n return {\n ...state,\n ethVaultData: action.content,\n };\n case 'ethUserTroveRank':\n return {\n ...state,\n ethUserTroveRank: action.content,\n };\n case 'opPrice':\n return {\n ...state,\n opPrice: action.content,\n };\n case 'opStatus':\n return {\n ...state,\n opStatus: action.content,\n };\n case 'opCollateralAmount':\n return {\n ...state,\n opCollateralAmount: action.content,\n };\n case 'opBorrowAmount':\n return {\n ...state,\n opBorrowAmount: action.content,\n };\n case 'opMinCollateralRatio':\n return {\n ...state,\n opMinCollateralRatio: action.content,\n };\n case 'opCritCollateralRatio':\n return {\n ...state,\n opCritCollateralRatio: action.content,\n };\n case 'opTotalCollateralRatio':\n return {\n ...state,\n opTotalCollateralRatio: action.content,\n };\n case 'opLiquidationReserve':\n return {\n ...state,\n opLiquidationReserve: action.content,\n };\n case 'opBorrowRate':\n return {\n ...state,\n opBorrowRate: action.content,\n };\n case 'opTVL':\n return {\n ...state,\n opTVL: action.content,\n };\n case 'opTotalDebt':\n return {\n ...state,\n opTotalDebt: action.content,\n };\n case 'opUserBalance':\n return {\n ...state,\n opUserBalance: action.content,\n };\n case 'opClaimableCollateral':\n return {\n ...state,\n opClaimableCollateral: action.content,\n };\n case 'opUserTroveChanges':\n return {\n ...state,\n opUserTroveChanges: action.content,\n };\n case 'opAllOpenTroves':\n return {\n ...state,\n opAllOpenTroves: action.content,\n };\n case 'opVaultData':\n return {\n ...state,\n opVaultData: action.content,\n };\n case 'opUserTroveRank':\n return {\n ...state,\n opUserTroveRank: action.content,\n };\n case 'wstethPrice':\n return {\n ...state,\n wstethPrice: action.content,\n };\n case 'wstethStatus':\n return {\n ...state,\n wstethStatus: action.content,\n };\n case 'wstethCollateralAmount':\n return {\n ...state,\n wstethCollateralAmount: action.content,\n };\n case 'wstethBorrowAmount':\n return {\n ...state,\n wstethBorrowAmount: action.content,\n };\n case 'wstethMinCollateralRatio':\n return {\n ...state,\n wstethMinCollateralRatio: action.content,\n };\n case 'wstethCritCollateralRatio':\n return {\n ...state,\n wstethCritCollateralRatio: action.content,\n };\n case 'wstethTotalCollateralRatio':\n return {\n ...state,\n wstethTotalCollateralRatio: action.content,\n };\n case 'wstethLiquidationReserve':\n return {\n ...state,\n wstethLiquidationReserve: action.content,\n };\n case 'wstethBorrowRate':\n return {\n ...state,\n wstethBorrowRate: action.content,\n };\n case 'wstethTVL':\n return {\n ...state,\n wstethTVL: action.content,\n };\n case 'wstethTotalDebt':\n return {\n ...state,\n wstethTotalDebt: action.content,\n };\n case 'wstethUserBalance':\n return {\n ...state,\n wstethUserBalance: action.content,\n };\n case 'wstethClaimableCollateral':\n return {\n ...state,\n wstethClaimableCollateral: action.content,\n };\n case 'wstethUserTroveChanges':\n return {\n ...state,\n wstethUserTroveChanges: action.content,\n };\n case 'wstethAllOpenTroves':\n return {\n ...state,\n wstethAllOpenTroves: action.content,\n };\n case 'wstethVaultData':\n return {\n ...state,\n wstethVaultData: action.content,\n };\n case 'wstethUserTroveRank':\n return {\n ...state,\n wstethUserTroveRank: action.content,\n };\n // Protocol Status\n case 'totalStakingDeposits':\n return {\n ...state,\n totalStakingDeposits: action.content,\n };\n case 'totalStabilityDeposits':\n return {\n ...state,\n totalStabilityDeposits: action.content,\n };\n case 'stakingApr':\n return {\n ...state,\n stakingApr: action.content,\n };\n case 'stabilityApr':\n return {\n ...state,\n stabilityApr: action.content,\n };\n case 'stERNApy':\n return {\n ...state,\n stERNApy: action.content,\n };\n case 'totalStERNDeposits':\n return {\n ...state,\n totalStERNDeposits: action.content,\n };\n case 'stabilityCoinPrice':\n return {\n ...state,\n stabilityCoinPrice: action.content,\n };\n case 'stakingCoinPrice':\n return {\n ...state,\n stakingCoinPrice: action.content,\n };\n case 'stabilityRewardCoinPrice':\n return {\n ...state,\n stabilityRewardCoinPrice: action.content,\n };\n case 'topBorrowers':\n return {\n ...state,\n topBorrowers: action.content,\n };\n\n // Transaction Status Modal\n case 'txMessages':\n return {\n ...state,\n txMessages: action.content,\n };\n case 'currentTxNumber':\n return {\n ...state,\n currentTxNumber: action.content,\n };\n case 'currentTxStatus':\n return {\n ...state,\n currentTxStatus: action.content,\n };\n case 'isTxModalOpen':\n return {\n ...state,\n isTxModalOpen: action.content,\n };\n case 'isLoadingTxSteps':\n return {\n ...state,\n isLoadingTxSteps: action.content,\n };\n // Loading\n case 'isLoadingPositions':\n return {\n ...state,\n isLoadingPositions: action.content,\n };\n case 'isLoadingStaking':\n return {\n ...state,\n isLoadingStaking: action.content,\n };\n case 'isLoadingStability':\n return {\n ...state,\n isLoadingStability: action.content,\n };\n // Settings\n case 'theme':\n return {\n ...state,\n theme: action.content,\n };\n case 'hamburgerMenuPosition':\n return {\n ...state,\n hamburgerMenuPosition: action.content,\n };\n case 'autoBrowserWallet':\n return {\n ...state,\n autoBrowserWallet: action.content,\n };\n\n case 'resetUserState':\n return {\n ...state,\n\n walletAddress: defaultState.walletAddress,\n walletProvider: defaultState.walletProvider,\n walletType: defaultState.walletType,\n isWalletDetected: defaultState.isWalletDetected,\n isWalletConnected: defaultState.isWalletConnected,\n\n connectedChain: defaultState.connectedChain,\n isOnSupportedChain: defaultState.isOnSupportedChain,\n \n showHeaderAlert: defaultState.showHeaderAlert,\n\n userStakingDeposits: defaultState.userStakingDeposits,\n userStabilityDeposits: defaultState.userStabilityDeposits,\n userStakingRewards: defaultState.userStakingRewards,\n userRedemptionRewards: defaultState.userRedemptionRewards,\n userStabilityRewards: defaultState.userStabilityRewards,\n userLiquidationRewards: defaultState.userLiquidationRewards,\n\n oathv1UserBalance: defaultState.oathv1UserBalance,\n oathv2UserBalance: defaultState.oathv2UserBalance,\n\n btcStatus: defaultState.btcStatus,\n btcUserBalance: defaultState.btcUserBalance,\n btcCollateralAmount: defaultState.btcCollateralAmount,\n btcBorrowAmount: defaultState.btcBorrowAmount,\n\n ethStatus: defaultState.ethStatus,\n ethUserBalance: defaultState.ethUserBalance,\n ethCollateralAmount: defaultState.ethCollateralAmount,\n ethBorrowAmount: defaultState.ethBorrowAmount,\n\n opStatus: defaultState.opStatus,\n opUserBalance: defaultState.opUserBalance,\n opCollateralAmount: defaultState.opCollateralAmount,\n opBorrowAmount: defaultState.opBorrowAmount,\n\n wstethStatus: defaultState.wstethStatus,\n wstethUserBalance: defaultState.wstethUserBalance,\n wstethCollateralAmount: defaultState.wstethCollateralAmount,\n wstethBorrowAmount: defaultState.wstethBorrowAmount,\n\n txMessages: defaultState.txMessages,\n currentTxNumber: defaultState.currentTxNumber,\n currentTxStatus: defaultState.currentTxStatus,\n isTxModalOpen: defaultState.isTxModalOpen,\n isLoadingTxSteps: defaultState.isLoadingTxSteps,\n };\n case 'resetAnalytics':\n return {\n ...state,\n\n userStakingDeposits: defaultState.userStakingDeposits,\n userStabilityDeposits: defaultState.userStabilityDeposits,\n userStERNDeposits: defaultState.userStERNDeposits,\n userStERNDepositsInERN: defaultState.userStERNDepositsInERN,\n userStERNDepositsUSD: defaultState.userStERNDepositsUSD,\n userStakingRewards: defaultState.userStakingRewards,\n userRedemptionRewards: defaultState.userRedemptionRewards,\n userStabilityRewards: defaultState.userStabilityRewards,\n userLiquidationRewards: defaultState.userLiquidationRewards,\n\n oathv1UserBalance: defaultState.oathv1UserBalance,\n oathv2UserBalance: defaultState.oathv2UserBalance,\n\n btcStatus: defaultState.btcStatus,\n btcUserBalance: defaultState.btcUserBalance,\n btcCollateralAmount: defaultState.btcCollateralAmount,\n btcBorrowAmount: defaultState.btcBorrowAmount,\n btcTotalCollateralRatio: defaultState.btcTotalCollateralRatio,\n btcUserTroveChanges: defaultState.btcUserTroveChanges,\n btcAllOpenTroves: defaultState.btcAllOpenTroves,\n btcVaultData: defaultState.btcVaultData,\n\n ethStatus: defaultState.ethStatus,\n ethUserBalance: defaultState.ethUserBalance,\n ethCollateralAmount: defaultState.ethCollateralAmount,\n ethBorrowAmount: defaultState.ethBorrowAmount,\n ethTotalCollateralRatio: defaultState.ethTotalCollateralRatio,\n ethUserTroveChanges: defaultState.ethUserTroveChanges,\n ethAllOpenTroves: defaultState.ethAllOpenTroves,\n ethVaultData: defaultState.ethVaultData,\n\n opStatus: defaultState.opStatus,\n opUserBalance: defaultState.opUserBalance,\n opCollateralAmount: defaultState.opCollateralAmount,\n opBorrowAmount: defaultState.opBorrowAmount,\n opTotalCollateralRatio: defaultState.opTotalCollateralRatio,\n opUserTroveChanges: defaultState.opUserTroveChanges,\n opAllOpenTroves: defaultState.opAllOpenTroves,\n opVaultData: defaultState.opVaultData,\n\n wstethStatus: defaultState.wstethStatus,\n wstethUserBalance: defaultState.wstethUserBalance,\n wstethCollateralAmount: defaultState.wstethCollateralAmount,\n wstethBorrowAmount: defaultState.wstethBorrowAmount,\n wstethTotalCollateralRatio: defaultState.wstethTotalCollateralRatio,\n\n totalStakingDeposits: defaultState.totalStakingDeposits,\n totalStabilityDeposits: defaultState.totalStabilityDeposits,\n stakingApr: defaultState.stakingApr,\n stabilityApr: defaultState.stabilityApr,\n stERNApy: defaultState.stERNApy,\n totalStERNDeposits: defaultState.totalStERNDeposits,\n stabilityCoinPrice: defaultState.stabilityCoinPrice,\n stakingCoinPrice: defaultState.stakingCoinPrice,\n stabilityRewardCoinPrice: defaultState.stabilityRewardCoinPrice\n };\n case 'resetState':\n return defaultState;\n default:\n return state;\n }\n};\n\nexport default Reducer;\n","import { createContext, useReducer } from 'react';\nimport Reducer, { defaultState } from './Reducer';\n\nconst Store = ({ children }: any) => {\n const [state, dispatch] = useReducer(Reducer, defaultState);\n return (\n // @ts-expect-error\n {children}\n );\n};\n\nexport const Context = createContext(defaultState);\nexport default Store;\n","import '../styling/Button.css';\n\ninterface ButtonProps {\n text?: string;\n onButtonClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n disabled?: boolean;\n selected?: boolean;\n className?: string;\n children?: any;\n iconStart?: any;\n iconEnd?: any;\n}\n\nconst Button = (props: ButtonProps) => {\n let {\n text = '',\n onButtonClick = () => {},\n onMouseEnter = () => {},\n onMouseLeave = () => {},\n disabled = false,\n selected = false,\n className = '',\n children = {text},\n iconStart = <>,\n iconEnd = <>,\n } = props;\n\n if (disabled) {\n className += ' disabled-button';\n }\n if (selected) {\n className += ' selected-button';\n }\n\n return (\n {}}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={\n 'common-button border-full display-inline-block disable-highlight ' +\n className +\n (disabled ? ' disabled-text' : ' clickable')\n }\n >\n \n
{iconStart}
\n
{children}
\n
{iconEnd}
\n
\n \n );\n};\n\nexport default Button;\n","import borrowerOperations from './contracts/BorrowerOperations.json';\nimport collSurplusPool from './contracts/CollSurplusPool.json';\nimport collateralConfig from './contracts/CollateralConfig.json';\nimport communityIssuance from './contracts/CommunityIssuance.json';\nimport erc20 from './contracts/ERC20.json';\nimport hintHelpers from './contracts/HintHelpers.json';\nimport { abi as leverager} from './contracts/Leverager.json';\nimport lqtyStaking from './contracts/LQTYStaking.json';\nimport multiTroveGetter from './contracts/MultiTroveGetter.json';\nimport { abi as oathMigrator } from './contracts/OathMigrator.json';\nimport { abi as oathMigratorOp } from './contracts/OathMigratorOP.json';\nimport optimismGasOracle from './contracts/OptimismGasOracle.json';\nimport priceAggregator from './contracts/PriceAggregator.json';\nimport priceFeed from './contracts/PriceFeed.json';\nimport reaperVaultERC4626 from './contracts/ReaperVaultERC4626.json';\nimport sortedTroves from './contracts/SortedTroves.json';\nimport stabilityPool from './contracts/StabilityPool.json';\nimport testToken from './contracts/TestToken.json';\nimport troveManager from './contracts/TroveManager.json';\n\nexport const abis: { [key: string]: any } = {\n borrowerOperations,\n collSurplusPool,\n collateralConfig,\n communityIssuance,\n erc20,\n hintHelpers,\n leverager,\n lqtyStaking,\n multiTroveGetter,\n oathMigrator,\n oathMigratorOp,\n optimismGasOracle,\n priceAggregator,\n priceFeed,\n reaperVaultERC4626,\n sortedTroves,\n stabilityPool,\n testToken,\n troveManager,\n};\n\n\n","import BigNumber from 'bignumber.js';\nimport { isNumber, roundUp } from './formatters';\n\nexport function safeAdd(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigSum = bigA.plus(bigB);\n return bigSum.toFixed();\n}\n\nexport function safeSub(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigDifference = bigA.minus(bigB);\n return bigDifference.toFixed();\n}\n\nexport function safeMult(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigProduct = bigA.multipliedBy(bigB);\n return bigProduct.toFixed();\n}\n\nexport function safeDiv(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigQuotient = bigA.dividedBy(bigB);\n return bigQuotient.toFixed();\n}\n\nexport function safeMod(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigRemainder = bigA.modulo(bigB);\n return bigRemainder.toFixed();\n}\n\nexport function safePow(a: string, b: string) {\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const bigPower = bigA.exponentiatedBy(bigB);\n return bigPower.toFixed();\n}\n\nexport function safeAbs(a: string) {\n const bigA = new BigNumber(a);\n const bigAbs = bigA.absoluteValue();\n return bigAbs.toFixed();\n}\n\nexport function isZero(a: string) {\n const isANum = isNumber(a);\n if (!isANum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const isBigZero = bigA.isZero();\n return isANum && isBigZero;\n}\nexport function isGreaterThan(a: string, b: string) {\n const isANum = isNumber(a);\n const isBNum = isNumber(a);\n if (!isANum || !isBNum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const isBigGreaterThan = bigA.isGreaterThan(bigB);\n return isBigGreaterThan;\n}\nexport function isGreaterThanOrEqual(a: string, b: string) {\n const isANum = isNumber(a);\n const isBNum = isNumber(a);\n if (!isANum || !isBNum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const isBigGreaterThanOrEqual = bigA.isGreaterThanOrEqualTo(bigB);\n return isBigGreaterThanOrEqual;\n}\nexport function isLessThan(a: string, b: string) {\n const isANum = isNumber(a);\n const isBNum = isNumber(a);\n if (!isANum || !isBNum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const isBigLessThan = bigA.isLessThan(bigB);\n return isBigLessThan;\n}\nexport function isLessThanOrEqual(a: string, b: string) {\n const isANum = isNumber(a);\n const isBNum = isNumber(a);\n if (!isANum || !isBNum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const isBigLessThanOrEqual = bigA.isLessThanOrEqualTo(bigB);\n return isBigLessThanOrEqual;\n}\nexport function isEqualTo(a: string, b: string) {\n const isANum = isNumber(a);\n const isBNum = isNumber(a);\n if (!isANum || !isBNum) {\n return false;\n }\n const bigA = new BigNumber(a);\n const bigB = new BigNumber(b);\n const isBigEqual = bigA.isEqualTo(bigB);\n return isBigEqual;\n}\n\nexport const bottomNPercentofNum = (nPercent:string, num:string) => {\n const res = roundUp(safeMult(num, nPercent));\n return res;\n} ","import { ethers } from 'ethers';\nimport { abis } from '../storage/Abis';\nimport { EthersProviderOrSigner } from '../storage/Types';\nimport BigNumber from 'bignumber.js';\nimport { isGreaterThan, isLessThanOrEqual, safeDiv } from './safeMath';\n\nexport function checksumAddress(address: string) {\n try {\n const csAddr = ethers.utils.getAddress(address);\n return csAddr;\n } catch (error) {\n console.error(error);\n return address;\n }\n}\n\nexport function shortenAddress(address: string) {\n const checksummedAddress = checksumAddress(address);\n if (checksummedAddress.length === 42) {\n return checksummedAddress.substring(0, 6) + '...' + checksummedAddress.substring(38, 42);\n } else {\n return address;\n }\n}\n\nexport function shortenAddressMore(address: string) {\n const checksummedAddress = checksumAddress(address);\n if (checksummedAddress.length === 42) {\n return checksummedAddress.substring(0, 5) + '...' + checksummedAddress.substring(40, 42);\n } else {\n return address;\n }\n}\n\nexport function isNumber(check: string) {\n if (check !== '' && check !== undefined && check !== null) {\n const numberOrNot = Number(check);\n return !isNaN(numberOrNot);\n }\n return false;\n}\n\nexport async function getDecimals(\n tokenAddr: string,\n walletProviderOrSigner: EthersProviderOrSigner\n) {\n const token = new ethers.Contract(tokenAddr, abis.erc20, walletProviderOrSigner);\n const decimals = await token.decimals();\n return decimals;\n}\n\n// purely view function\nexport const formatPositiveNumber = (rawValue: string, decimals?: number) => {\n if (!isNumber(rawValue)) {\n return rawValue;\n }\n\n if (isLessThanOrEqual(rawValue, '0')) {\n return '0';\n }\n\n let format: any = {\n prefix: '',\n decimalSeparator: '.',\n groupSeparator: ',',\n groupSize: 3,\n secondaryGroupSize: 0,\n fractionGroupSeparator: ' ',\n fractionGroupSize: 0,\n suffix: '',\n };\n\n let bigValue = new BigNumber(rawValue);\n let value: string;\n\n if (decimals !== undefined) {\n value = bigValue.toFormat(decimals, format).toString();\n } else {\n value = bigValue.toFormat(format).toString();\n }\n value = value.replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1');\n if (isGreaterThan(bigValue.toString(), '1000000000000')) {\n return '>1b'\n }\n return value;\n\n /*\n if (!isNumber(rawValue)) {\n return rawValue;\n }\n //let value = new Intl.NumberFormat('en-US').format(parseFloat(rawValue));\n //let shortValue = rawValue;\n let shortValue = rawValue;\n /*\n if (applyShortening) {\n if (isNumber(rawValue)) {\n if (isGreaterThanOrEqual(rawValue, '100000')) {\n // shorten number and add 'k' at the end\n } else if (isGreaterThanOrEqual(rawValue, '1000000')) {\n // shorten number and add 'm' at the end\n } else if (isGreaterThanOrEqual(rawValue, '1000000000')) {\n // shorten number and add 'b' at the end\n } \n }\n }\n */\n /*\n \n let removeTrailingZeros = shortValue.replace(/(\\.[0-9]*[1-9])0+$|\\.0*$/, '$1');\n let value = removeTrailingZeros.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n //let value = removeTrailingZeros.replace(\n //removeTrailingZeros.replace('(?:^|\\G)(\\d{1,3})(?=(\\d{3})+(?:\\.\\d+)?$)', '$1');\n //removeTrailingZeros.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return value;\n */\n};\n\n// need to standardize message format at some point\nexport function isErrorMsg(msg: any) {\n const errorMsgCheck = msg !== undefined && msg.success !== undefined && !msg.success;\n return msg === undefined || msg === false || errorMsgCheck;\n}\n\nexport function toFixedDecimals(value:string, decimals:number|undefined) {\n if (decimals === undefined) {\n return value;\n } else {\n const decimalValue = new BigNumber(value);\n return decimalValue.toFixed(decimals);\n }\n}\n\nexport function roundUp(value:string) {\n if (!isNumber(value)) {\n return undefined;\n } else {\n let num = parseFloat(value);\n num = Math.ceil(num);\n return num.toString();\n }\n}\n\nexport const getInputShareWithdrawAmount = (withdrawAmountInERN:string, userStWENDepositsInERN:string, userStERNDeposits:string) => {\n const bigYourTokensAmount = new BigNumber(userStWENDepositsInERN);\n const bigMaxWithdraw = new BigNumber(userStERNDeposits);\n const bigInput = new BigNumber(withdrawAmountInERN);\n const ratio = bigInput.dividedBy(bigYourTokensAmount);\n const calculation = ratio.multipliedBy(bigMaxWithdraw);\n return calculation.toFixed(18).toString();\n};\n\nexport const epochToDate = (timestamp: number) => {\n return new Date(timestamp * 1000).toLocaleString(undefined, {\n month: 'short',\n day: '2-digit',\n year: 'numeric'\n });\n};\n\nexport const capitalizeFirstLetter = (string: string) => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\nexport const camelCaseToWords = (string:string) => {\n const words = string.match(/[A-Za-z][a-z]*/g) || [];\n return words.map(capitalizeFirstLetter).join(\" \");\n};\n\nexport const getFirstWord = (string:string) => {\n const first = string.split(' ')[0];\n return first;\n}\n\nexport const bpToPercent = (value: string) => {\n return safeDiv(value, '100');\n};","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgWallet(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.19824 3.49896C2.81753 3.49896 1.69824 4.61825 1.69824 5.99896V14.3323C1.69824 15.713 2.81753 16.8323 4.19824 16.8323H15.8649C17.2457 16.8323 18.3649 15.713 18.3649 14.3323V5.99896C18.3649 4.61825 17.2457 3.49896 15.8649 3.49896H4.19824ZM16.6982 6.97455V5.99896C16.6982 5.53873 16.3252 5.16563 15.8649 5.16563H4.19824C3.73801 5.16563 3.36491 5.53873 3.36491 5.99896V6.97455C3.62556 6.88242 3.90604 6.8323 4.19824 6.8323H15.8649C16.1571 6.8323 16.4376 6.88242 16.6982 6.97455ZM3.36491 9.3323V10.1656H7.53158C7.55522 10.1656 7.57863 10.1666 7.60178 10.1685C7.9713 10.1362 8.33015 10.3553 8.45949 10.7213C8.68866 11.3697 9.30716 11.8323 10.0315 11.8323C10.7559 11.8323 11.3744 11.3697 11.6036 10.7213C11.7329 10.3553 12.0918 10.1362 12.4613 10.1685C12.4845 10.1666 12.5079 10.1656 12.5316 10.1656H16.6982V9.3323C16.6982 8.87205 16.3252 8.49896 15.8649 8.49896H4.19824C3.73801 8.49896 3.36491 8.87205 3.36491 9.3323ZM12.9187 11.8323C12.3427 12.828 11.2662 13.499 10.0315 13.499C8.79683 13.499 7.72034 12.828 7.14439 11.8323H3.36491V14.3323C3.36491 14.7925 3.73801 15.1656 4.19824 15.1656H15.8649C16.3252 15.1656 16.6982 14.7925 16.6982 14.3323V11.8323H12.9187Z\",\n fill: \"#08001C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWallet);\nexport default __webpack_public_path__ + \"static/media/wallet.c56b69e3.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgEthosLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 137,\n height: 64,\n viewBox: \"0 0 137 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_12211)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.6802 39.1901H52.0625V0H58.6595V15.6489C58.769 15.5545 58.8222 15.5279 58.8459 15.4866C60.4848 12.4979 63.9401 10.8663 67.7415 11.418C71.9246 12.0258 74.6669 14.7048 75.5721 19.0625C75.8354 20.3282 75.9774 21.6412 75.9863 22.9364C76.0336 28.0907 76.0041 33.2451 76.0041 38.3994V39.1695H69.3449V38.4791C69.3449 33.5283 69.3538 28.5775 69.336 23.6268C69.3331 22.839 69.268 22.0336 69.1082 21.2635C68.6172 18.8766 66.9724 17.546 64.5229 17.4841C60.8013 17.3867 58.6891 19.5523 58.6802 23.5029C58.6684 28.4743 58.6802 33.4457 58.6802 38.4171V39.1901Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.3458 27.722H7.9098C7.88614 30.1649 9.88299 32.7111 12.4301 33.487C14.2524 34.0417 16.0925 34.0624 17.9148 33.4605C18.9088 33.133 19.7164 32.5282 20.3702 31.7109C20.4944 31.5575 20.7074 31.3745 20.879 31.3745C23.1451 31.3509 25.4111 31.3598 27.7689 31.3598C27.6979 31.6194 27.6535 31.826 27.5825 32.0236C26.0442 36.2604 22.935 38.6768 18.5922 39.5206C14.3559 40.3467 10.3119 39.7743 6.72352 37.234C2.98719 34.5816 1.07908 30.8759 0.877915 26.3353C0.679708 21.833 2.06124 17.8706 5.48104 14.8287C9.49841 11.2558 14.2169 10.4267 19.2608 12.0731C24.2426 13.7017 27.0234 17.3985 28.1239 22.4112C28.5026 24.1313 28.5795 25.878 28.3458 27.722ZM21.231 22.9364C21.231 19.9152 18.2757 17.254 14.8293 17.1684C10.7823 17.071 8.41567 20.4197 8.07843 22.9364H21.231Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.7988 25.639C80.8787 18.9445 85.0499 13.386 91.286 11.7573C99.1048 9.71567 107.083 14.7697 108.468 22.7122C109.388 28.0022 108.154 32.717 104.039 36.3489C100.007 39.91 95.2472 40.7686 90.1914 39.0397C85.1919 37.3314 82.2277 33.6817 81.145 28.5392C80.9438 27.5892 80.9112 26.6067 80.8018 25.639H80.7988ZM94.7798 33.8912C97.5783 33.8175 99.6462 32.5665 100.844 30.1029C102.241 27.2351 102.232 24.2552 100.939 21.3638C99.7556 18.7203 97.6641 17.2451 94.6792 17.2923C91.7741 17.3395 89.7773 18.853 88.6442 21.4287C87.4225 24.2021 87.3958 27.067 88.6413 29.8374C89.8128 32.4485 91.9132 33.8086 94.7827 33.8883L94.7798 33.8912Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.557 30.808H118.245C119.012 33.3335 121.053 34.018 123.399 34.2039C124.789 34.3131 126.185 34.3042 127.517 33.8174C128.043 33.6256 128.576 33.3601 129.008 33.009C130.286 31.9645 130.073 30.1441 128.534 29.557C127.327 29.0938 126.026 28.8548 124.754 28.5775C122.582 28.1025 120.381 27.7514 118.231 27.2026C116.32 26.7158 114.604 25.813 113.459 24.1047C111.134 20.6321 112.249 15.6459 115.864 13.2944C117.654 12.132 119.651 11.5802 121.751 11.4032C124.615 11.1613 127.434 11.3383 130.085 12.5775C132.711 13.8078 134.46 15.7905 135.158 18.6376C135.22 18.8884 135.253 19.1451 135.309 19.4519C135.066 19.4667 134.889 19.4844 134.711 19.4844C132.851 19.4844 130.99 19.4932 129.129 19.4755C128.919 19.4755 128.588 19.3899 128.517 19.2424C127.848 17.8764 126.65 17.2952 125.26 17.0119C123.86 16.7257 122.449 16.7434 121.071 17.1211C120.588 17.2539 120.103 17.4781 119.701 17.7672C118.373 18.7202 118.506 20.4668 120.006 21.0923C121.011 21.5113 122.109 21.7267 123.18 21.9627C125.668 22.5144 128.173 22.9924 130.652 23.5736C131.374 23.7418 132.067 24.1106 132.72 24.4764C135.64 26.1139 136.611 28.9286 136.256 32.1298C135.912 35.2365 134.12 37.3844 131.297 38.5144C126.253 40.5325 121.183 40.4204 116.296 37.9715C113.669 36.6557 112.045 34.4665 111.619 31.4954C111.586 31.28 111.58 31.0588 111.557 30.8021V30.808Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.3647 39.4232C44.5455 39.9542 41.8061 39.8716 39.2235 38.5646C36.5906 37.231 35.2949 34.912 34.7772 32.118C34.5878 31.1031 34.502 30.0586 34.4932 29.023C34.4577 25.518 34.4813 22.0158 34.4813 18.5108V17.6994H30.9609V12.0907H34.4606V4.40198H41.1345V12.0553H47.06V17.664H41.2144C41.1819 17.785 41.1464 17.8587 41.1464 17.9325C41.1523 21.7001 41.1464 25.4707 41.1848 29.2384C41.1908 29.8816 41.315 30.5395 41.4925 31.1591C41.9895 32.8851 43.229 33.7673 45.2229 33.8145C45.93 33.8322 46.64 33.726 47.3677 33.6758V39.4202L47.3647 39.4232Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.8213 52.4373C15.6614 52.4373 17.4867 52.3075 19.2823 52.4698C21.578 52.6763 22.7731 54.6324 22.1105 56.7951C21.7762 57.8838 20.9627 58.4857 19.8474 58.881C20.7615 60.1792 21.6431 61.4331 22.6045 62.7991C21.8531 62.7991 21.2141 62.8227 20.5751 62.7814C20.4213 62.7726 20.2497 62.569 20.1373 62.4156C19.4717 61.4892 18.8031 60.5627 18.17 59.6157C17.9393 59.2675 17.6789 59.1318 17.2648 59.1554C16.7382 59.1879 16.2116 59.1642 15.617 59.1642V62.7637H13.8184V52.4344L13.8213 52.4373ZM15.6318 57.5976C16.8033 57.5386 17.9245 57.5504 19.0279 57.4088C19.877 57.2996 20.4035 56.5591 20.3917 55.7683C20.3799 54.9629 19.9006 54.2695 19.0516 54.1899C17.9304 54.0837 16.7885 54.1633 15.6318 54.1633V57.5976Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.454 59.1702V62.7609H81.6465V52.4876C83.5605 52.4876 85.4597 52.3607 87.3353 52.5259C88.9417 52.6675 89.9268 53.7828 90.0747 55.14C90.267 56.9102 89.6191 58.052 88.0216 58.7572C87.9329 58.7955 87.8471 58.8398 87.7051 58.9076C88.6133 60.1999 89.4919 61.4568 90.4386 62.8051C89.6901 62.8051 89.063 62.8287 88.4388 62.7874C88.282 62.7786 88.0986 62.5927 87.9921 62.4422C87.3116 61.501 86.6697 60.5304 85.9686 59.6069C85.8029 59.3915 85.4686 59.2204 85.1905 59.1879C84.6492 59.123 84.096 59.1702 83.4511 59.1702H83.454ZM83.4718 57.5977C84.6403 57.5416 85.7615 57.5505 86.8649 57.4088C87.7169 57.2997 88.2435 56.5621 88.2317 55.7684C88.2198 54.963 87.7406 54.2696 86.8945 54.19C85.7733 54.0837 84.6314 54.1634 83.4718 54.1634V57.5947V57.5977Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.4844 52.4255H39.1109V54.0512H33.3215V56.7656H38.4246V58.3824H33.3156V61.1204H39.173V62.7637H31.4844V52.4255Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.7295 52.4255H72.356V54.0542H66.5666V56.7685H71.6697V58.3853H66.5607V61.1233H72.4182V62.7667H64.7266V52.4285L64.7295 52.4255Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.115 52.4255H124.742V54.0542H118.952V56.7685H124.058V58.3853H118.949V61.1233H124.807V62.7667H117.115V52.4285V52.4255Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.2836 53.6264C54.9552 54.0896 54.6505 54.5174 54.4168 54.8479C53.5086 54.5351 52.6566 54.2401 51.8016 53.951C51.6892 53.9126 51.5591 53.9126 51.4378 53.9185C50.5621 53.951 49.9497 54.367 49.8492 54.9925C49.7456 55.6386 50.0888 56.0812 51.0177 56.3939C51.9821 56.7214 52.9938 56.9309 53.9227 57.3292C55.3812 57.9547 55.9196 59.2351 55.4758 60.7516C55.2037 61.6751 54.5824 62.2888 53.695 62.6369C51.7928 63.3863 49.0563 62.7756 47.5742 61.2414C47.9292 60.8195 48.2872 60.3917 48.6717 59.9344C49.5711 60.7044 50.5236 61.2561 51.6774 61.2709C52.1507 61.2768 52.6714 61.2089 53.0915 61.0054C53.976 60.5805 53.9878 59.4682 53.1151 59.0197C52.5619 58.7365 51.9288 58.6067 51.3313 58.4061C50.7514 58.2143 50.1568 58.0579 49.5977 57.8219C48.6185 57.4059 48.0505 56.6771 47.9943 55.5737C47.9322 54.3375 48.3789 53.3845 49.4646 52.7679C51.1035 51.8355 53.8074 52.225 55.2836 53.6264Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108.404 52.3813C107.848 53.7356 107.33 54.9924 106.816 56.2493C105.967 58.3205 105.109 60.3858 104.28 62.4658C104.135 62.8317 103.946 62.9467 103.564 62.9408C102.425 62.9261 102.425 62.9408 101.982 61.8639C100.778 58.9283 99.5707 55.9926 98.3666 53.057C98.2897 52.8741 98.2276 52.6823 98.1211 52.3902C98.7926 52.3902 99.3961 52.3577 99.9907 52.4138C100.133 52.4256 100.292 52.7059 100.366 52.8947C101.239 55.1075 102.097 57.3262 102.961 59.5449C103.05 59.7721 103.144 59.9934 103.28 60.3297C103.73 59.182 104.141 58.1346 104.549 57.0813C105.094 55.6769 105.644 54.2755 106.168 52.8652C106.301 52.5082 106.478 52.343 106.875 52.3725C107.339 52.4079 107.81 52.3813 108.401 52.3813H108.404Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.15282 63.0175H5.47518V63.9881H2.89258V51.7115H5.62309C5.48701 52.098 5.46334 52.5583 5.24147 52.694C4.97818 52.8534 4.54331 52.7324 4.14986 52.7324V63.0175H4.15282Z\",\n fill: \"#08001C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.688 64.0001H133.114V63.053C133.537 63.0323 133.972 63.0117 134.448 62.9881V52.7974C133.993 52.7443 133.534 52.759 133.138 52.6056C133.016 52.5584 133.075 52.0539 133.049 51.7146H135.688V63.9971V64.0001Z\",\n fill: \"#08001C\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_12211\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 135.467,\n height: 64,\n fill: \"white\",\n transform: \"translate(0.859375)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEthosLogo);\nexport default __webpack_public_path__ + \"static/media/ethos-logo.002b23dd.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useContext, useState } from 'react';\nimport { Context } from '../Store';\nimport { useMediaQuery } from 'react-responsive';\n\nimport Button from './Button';\nimport { shortenAddress } from '../functions/formatters';\nimport { ReactComponent as WalletIcon } from '../assets/icons/wallet.svg';\n\nimport '../styling/Button.css';\n\ninterface ConnectWalletButtonProps {\n className?: string;\n showIcon?: boolean;\n}\n\nconst ConnectWalletButton = (props: ConnectWalletButtonProps) => {\n const [state, dispatch]: any = useContext(Context);\n const { className = '', showIcon = false } = props;\n const [walletConnected, setWalletConnected] = useState(false);\n const [formattedWalletAddress, setFormattedWalletAddress] = useState('');\n\n const isSmallerScreen = useMediaQuery({ minWidth: 1240, maxWidth: 1530 });\n\n useEffect(() => {\n if (state.walletAddress.length !== 0) {\n setWalletConnected(true);\n setFormattedWalletAddress(shortenAddress(state.walletAddress));\n } else {\n setWalletConnected(false);\n setFormattedWalletAddress('');\n }\n }, [state.walletAddress]);\n\n return (\n {\n dispatch({ type: 'isConnectWalletOpen', content: true });\n }}\n className={'connect-wallet-button nowrap ' + className}\n iconStart={\n (showIcon && !isSmallerScreen) ? : <>\n }\n >\n {!isSmallerScreen ? \n walletConnected ? \n formattedWalletAddress \n : \n 'Connect Wallet' \n : \n \n }\n \n );\n};\n\nexport default ConnectWalletButton;\n","export const routes = [\n {\n name: 'Home',\n path: '/',\n visible: false,\n id: 'home',\n },\n {\n name: 'Dashboard',\n path: '/dashboard',\n visible: true,\n id: 'dashboard',\n },\n {\n name: 'My Positions',\n path: '/positions',\n visible: true,\n id: 'positions',\n },\n {\n name: 'Stability Pool',\n path: '/stability',\n visible: true,\n id: 'stability',\n },\n {\n name: 'Stake',\n path: '/stake',\n visible: true,\n id: 'stake',\n },\n {\n name: 'stERN Vault',\n path: '/stern',\n visible: true,\n id: 'stern',\n },\n {\n name: 'Analytics',\n path: '/analytics',\n visible: true,\n id: 'analytics',\n },\n {\n name: 'Migrate OATH',\n path: '/migrate',\n visible: true,\n id: 'migrate',\n },\n {\n name: 'Mint Test Tokens',\n path: '/mint',\n visible: false,\n id: 'mint',\n },\n];\n","export default __webpack_public_path__ + \"static/media/btc.3fc02065.svg\";","export default __webpack_public_path__ + \"static/media/oath.1b7812c1.svg\";","export default __webpack_public_path__ + \"static/media/boath.fed99ecd.svg\";","export default __webpack_public_path__ + \"static/media/ern.62c8e571.svg\";","export default __webpack_public_path__ + \"static/media/wsteth.ff95a580.svg\";","import { chains } from './Chains';\n\nimport EthIconSrc from '../assets/icons/coins/eth.svg';\nimport BtcIconSrc from '../assets/icons/coins/btc.svg';\nimport OpIconSrc from '../assets/icons/coins/op.svg';\nimport OathIconSrc from '../assets/icons/coins/oath.svg';\nimport BOathIconSrc from '../assets/icons/coins/boath.svg';\nimport ErnIconSrc from '../assets/icons/coins/ern.svg';\nimport wstETHSrc from '../assets/icons/coins/wsteth.svg';\n\nconst opChainId = chains.optimism.chainId.hex;\nconst ethChainId = chains.ethereum.chainId.hex;\nconst bscChainId = chains.bsc.chainId.hex;\nconst kavaChainId = chains.kava.chainId.hex;\nconst polygonChainId = chains.polygon.chainId.hex;\nconst avalancheChainId = chains.avalanche.chainId.hex;\nconst arbitrumChainId = chains.arbitrum.chainId.hex;\n\nexport const coins = {\n eth: {\n label: 'Ethereum',\n ticker: 'wETH',\n uid: 'eth',\n iconSrc: EthIconSrc,\n decimals: 18,\n addresses: {\n [ethChainId]: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n [opChainId]: '0x4200000000000000000000000000000000000006',\n },\n vaults: {\n [opChainId]: '0x1225c53F510877074d0D1Bace26C4f0581c24cF7',\n },\n vaultsV2: {\n [opChainId]: '0x01Cd26dD056671DED555314d43841d8AaaBC72e3',\n },\n vaultsV2_1: {\n [opChainId]: '0x7c09733834873b1FDB8A70c19eE1A514023f74f9',\n }\n },\n btc: {\n label: 'Bitcoin',\n ticker: 'wBTC',\n uid: 'btc',\n iconSrc: BtcIconSrc,\n decimals: 8,\n addresses: {\n [ethChainId]: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',\n [opChainId]: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',\n },\n vaults: {\n [opChainId]: '0xef82200DC96a14af76f5fB7f27DbaDB5228f6A0C',\n },\n vaultsV2: {\n [opChainId]: '0x8669CC362aa0AcB2b15423090B28acdc89163e84',\n },\n vaultsV2_1: {\n [opChainId]: '0xbb341D8249c1C747708D4e6F7Cd967A2479CAD75',\n }\n },\n op: {\n label: 'Optimism',\n ticker: 'OP',\n uid: 'op',\n iconSrc: OpIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0x4200000000000000000000000000000000000042',\n },\n vaults: {\n [opChainId]: '0x6938b5b43b281bF24202437b86bbd2866a79cF6C',\n }\n },\n wsteth: {\n label: 'Wrapped stETH',\n ticker: 'wstETH',\n uid: 'wsteth',\n iconSrc: wstETHSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb',\n },\n vaultsV2_1: {\n [opChainId]: '0xA70266C8F8Cf33647dcFEE763961aFf418D9E1E4',\n }\n },\n boath: {\n label: 'bOATH',\n ticker: 'bOATH',\n uid: 'boathv1',\n iconSrc: BOathIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0xd20f6F1D8a675cDCa155Cb07b5dC9042c467153f',\n },\n },\n boathv2: {\n label: 'bOATHv2',\n ticker: 'bOATHv2',\n uid: 'boathv2',\n iconSrc: BOathIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0xD13D81aF624956327A24d0275CBe54b0eE0E9070',\n },\n },\n ern: {\n label: 'ERN',\n ticker: 'ERN',\n uid: 'ern',\n iconSrc: ErnIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0xc5b001DC33727F8F26880B184090D3E252470D45', // done\n },\n },\n testERN: {\n label: 'Test ERN',\n ticker: 'Test ERN',\n uid: 'testERN',\n iconSrc: ErnIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0xfFaDbf2b6568C81f0049331A6AfEa43F00200fF4', // done\n },\n },\n oath: {\n label: 'OATHv1',\n ticker: 'OATHv1',\n uid: 'oathv1',\n iconSrc: OathIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0x39FdE572a18448F8139b7788099F0a0740f51205',\n [ethChainId]: '0x6f9c26fa731c7ea4139fa669962cf8f1ce6c8b0b',\n [bscChainId]: '0xd3c6ceedd1cc7bd4304f72b011d53441d631e662',\n [kavaChainId]: '0x7D3B448c1242b563c65e8DAfCc13557c3069B5b6',\n [polygonChainId]: '0xc2c52ff5134596f5ff1b1204d3304228f2432836',\n [avalancheChainId]: '0x2c69095d81305f1e3c6ed372336d407231624cea',\n [arbitrumChainId]: '0xa1150db5105987cec5fd092273d1e3cbb22b378b',\n },\n },\n oathv2: {\n label: 'OATHv2',\n ticker: 'OATHv2',\n uid: 'oathv2',\n iconSrc: OathIconSrc,\n decimals: 18,\n addresses: {\n [opChainId]: '0x00e1724885473B63bCE08a9f0a52F35b0979e35A',\n [ethChainId]: '0xd20523b39fAF1D6e9023a4D6085f87B7b0DE7926',\n [bscChainId]: '0x73f4C95AF5C2892253c068850B8C9a753636f58d',\n // [kavaChainId]: '0x7D3B448c1242b563c65e8DAfCc13557c3069B5b6',\n [polygonChainId]: '0x7c603C3C0C97a565cf202c94AB5298bF8510f7dc',\n [avalancheChainId]: '0xAD090976CE846935DCfF1dEd852668beeD912916',\n [arbitrumChainId]: '0x00e1724885473B63bCE08a9f0a52F35b0979e35A',\n },\n },\n};\n","import { coins } from '../storage/Coins';\nimport { Coin } from '../storage/Types';\n\nexport const getIconSrcFromCoin = (coin: Coin) => {\n if (coin === undefined) {\n return undefined;\n }\n return coin.iconSrc;\n};\n\nexport const getIconSrcFromCoinId = (uid: string) => {\n const coin = getCoinFromUID(uid);\n if (coin !== undefined) {\n return coin.iconSrc;\n } else {\n return undefined;\n }\n};\n\nexport const getCoinFromUID = (uid: string) => {\n for (const [, v] of Object.entries(coins)) {\n if (v.uid === uid) {\n return v;\n }\n }\n return undefined;\n};\n\nexport const getCoinFromAddress = (address: string, chainView: string) => {\n for (const [, v] of Object.entries(coins)) {\n if (v.addresses[chainView] && v.addresses[chainView].toLowerCase() === address.toLowerCase()) {\n return v;\n }\n }\n return undefined;\n};\n\nexport const getCoinTickerFromAddress = (address: string, chainView: string) => {\n for (const [, v] of Object.entries(coins)) {\n if (v.addresses[chainView] && v.addresses[chainView].toLowerCase() === address.toLowerCase()) {\n return v.ticker;\n }\n }\n return undefined;\n};\n","import { chains } from '../storage/Chains';\nimport { getCoinFromUID } from './coinHelpers';\n\nexport function getChainFromId(id: string) {\n try {\n let chain: string;\n for (chain in chains) {\n if (chains[chain].chainId.hex === id) {\n return chains[chain];\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n // console.log(error);\n }\n}\n\nexport function getChainFromReadableId(id: string) {\n try {\n let chain: string;\n for (chain in chains) {\n if (chains[chain].chainId.readable === id) {\n return chains[chain];\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n // console.log(error);\n }\n}\n\nexport function getChainIdFromName(name: string) {\n return chains[name].chainId.hex;\n}\n\nexport function getChainRPCFromId(id: string) {\n try {\n let chain: string;\n for (chain in chains) {\n if (chains[chain].chainId.hex === id) {\n return chains[chain].defaultRpc;\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n console.log(error);\n }\n}\n\nexport function getChainCollateralFromId(id: string, appVersion:string) {\n try {\n let chain: string;\n const configType = getConfigKeyFromVersion(appVersion);\n for (chain in chains) {\n if (chains[chain].chainId.hex === id && configType) {\n return chains[chain][configType].tokenUIDs.collaterals;\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n return [];\n }\n}\n\nexport function getChainStakingCoinFromId(id: string, appVersion:string) {\n try {\n let chain: string;\n const configType = getConfigKeyFromVersion(appVersion);\n for (chain in chains) {\n if (chains[chain].chainId.hex === id && configType) {\n const stakingId = chains[chain][configType].tokenUIDs.staking;\n return getCoinFromUID(stakingId);\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n return undefined;\n }\n}\nexport function getChainStabilityCoinFromId(id: string, appVersion:string) {\n try {\n let chain: string;\n const configType = getConfigKeyFromVersion(appVersion);\n for (chain in chains) {\n if (chains[chain].chainId.hex === id && configType) {\n const stabilityId = chains[chain][configType].tokenUIDs.stability;\n return getCoinFromUID(stabilityId);\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n return undefined;\n }\n}\nexport function getChainStakingRewardCoinFromId(id: string, appVersion:string) {\n try {\n let chain: string;\n const configType = getConfigKeyFromVersion(appVersion);\n for (chain in chains) {\n if (chains[chain].chainId.hex === id && configType) {\n const stakingId = chains[chain][configType].tokenUIDs.stakingReward;\n return getCoinFromUID(stakingId);\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n return undefined;\n }\n}\nexport function getChainStabilityRewardCoinFromId(id: string, appVersion:string) {\n try {\n let chain: string;\n const configType = getConfigKeyFromVersion(appVersion);\n for (chain in chains) {\n if (chains[chain].chainId.hex === id && configType) {\n const stabilityId = chains[chain][configType].tokenUIDs.stabilityReward;\n return getCoinFromUID(stabilityId);\n }\n }\n throw Error('No chain found.');\n } catch (error) {\n return undefined;\n }\n}\n\nexport function getChainConfigFromId(id: string, appVersion:string) {\n try {\n const chain = getChainFromId(id);\n const configType = getConfigKeyFromVersion(appVersion);\n if (chain && configType) {\n return chain[configType];\n }\n } catch (error) {\n return undefined;\n }\n}\n\nexport function getChainNameFromId(id: string) {\n try {\n const chain = getChainFromId(id);\n return chain?.label;\n } catch (error) {\n return undefined;\n }\n}\n\nexport function getChainHexFromReadableId(id: number) {\n try {\n const chain = getChainFromReadableId(id.toString());\n return chain?.chainId.hex;\n } catch (error) {\n return undefined;\n }\n}\n\nexport const getConfigKeyFromVersion = (version:string) => {\n switch (version) {\n case '2_1':\n return 'configV2_1';\n case '2':\n return 'configV2';\n case '1':\n return 'configV1';\n default:\n return undefined;\n }\n}","import { ApolloClient, InMemoryCache, gql } from '@apollo/client';\n\nconst beethovenSubgraphUrl = 'https://backend-v3.beets-ftm-node.com/';\n\nconst beethovenOpGraph = new ApolloClient({\n uri: beethovenSubgraphUrl,\n cache: new InMemoryCache(),\n});\n\nexport const getBeethovenTokenData = async () => {\n const buildBeethovenTokenQuery = () => {\n let queryString: string = `\n query \n GetAppGlobalPollingData {\n tokenGetCurrentPrices (chains: OPTIMISM) {\n price\n address\n __typename\n }\n }\n `;\n return gql(queryString);\n };\n try {\n const queryResult = await beethovenOpGraph.query({\n query: buildBeethovenTokenQuery(),\n });\n return queryResult.data.tokenGetCurrentPrices;\n } catch (error) {\n //console.log(error);\n }\n};\n\nexport const getBeethovenPoolSnapshotData = async () => {\n const buildBeethovenTokenQuery = () => {\n let queryString: string = `\n query \n GetPoolSnapshots($poolId: String!, $range: GqlPoolSnapshotDataRange!) { \n snapshots: poolGetSnapshots(id: $poolId, range: $range, chain: OPTIMISM) { \n id \n timestamp \n totalLiquidity \n volume24h \n fees24h \n sharePrice \n __typename \n }\n }`;\n return gql(queryString);\n };\n try {\n const poolId = '0xd20f6f1d8a675cdca155cb07b5dc9042c467153f0002000000000000000000bc';\n const range = 'THIRTY_DAYS';\n const queryResult = await beethovenOpGraph.query({\n query: buildBeethovenTokenQuery(),\n variables: { poolId, range },\n });\n return queryResult.data.snapshots;\n } catch (error) {\n //console.log(error);\n }\n};","import { BigNumber, ethers } from 'ethers';\nimport { abis } from '../storage/Abis';\nimport { EthersProvider, ContractAddressesInterface } from '../storage/Types';\nimport { safeAdd, safeMult } from './safeMath';\nimport { serializeTransaction } from 'ethers/lib/utils';\n\nexport async function approveSpend(\n tokenAddr: string,\n spenderAddr: string,\n amount: ethers.BigNumber,\n walletProvider: EthersProvider\n) {\n const token = new ethers.Contract(tokenAddr, abis.erc20, walletProvider.getSigner());\n\n const tx = await token.approve(spenderAddr, amount);\n const receipt = await tx.wait();\n if (receipt.status === 0) {\n throw new Error('approveSpend call failed');\n }\n return receipt;\n}\n\nexport async function getAllowance(\n tokenAddr: string,\n ownerAddr: string,\n spenderAddr: string,\n walletProvider: EthersProvider\n) {\n const token = new ethers.Contract(tokenAddr, abis.erc20, walletProvider.getSigner());\n const tx = await token.allowance(ownerAddr, spenderAddr);\n return tx;\n}\n\nexport async function getTotalSupply(tokenAddr: string, walletProvider: EthersProvider) {\n const token = new ethers.Contract(tokenAddr, abis.erc20, walletProvider);\n const tx = await token.totalSupply();\n return tx;\n}\n\nexport async function getCollateralPriceFromAggregator(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const priceFeedContract = new ethers.Contract(\n contractAddresses.priceFeedAddr,\n abis.priceFeed,\n walletProvider\n );\n //const ogpriceRaw = await priceFeedContract.lastGoodPrice(collAddr);\n const aggregatorAddr = await priceFeedContract.priceAggregator(collAddr);\n const aggregatorContract = new ethers.Contract(\n aggregatorAddr,\n abis.priceAggregator,\n walletProvider\n );\n const priceRaw = await aggregatorContract.latestAnswer();\n const decimals = await aggregatorContract.decimals();\n return { priceRaw, decimals };\n}\n\nexport async function getCollateralPrice(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const priceFeedContract = new ethers.Contract(\n contractAddresses.priceFeedAddr,\n abis.priceFeed,\n walletProvider\n );\n const priceRaw = await priceFeedContract.lastGoodPrice(collAddr);\n return priceRaw;\n}\n\nexport async function getCollateralRecoveryMode(\n addr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const price = await getCollateralPrice(addr, contractAddresses, walletProvider);\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider\n );\n const recoveryMode = await troveManagerContract.checkRecoveryMode(\n addr,\n ethers.utils.parseUnits(`${price}`, 'ether')\n );\n return recoveryMode;\n}\n\nexport async function getStableCoinSupply(\n stabilityTokenAddr: string,\n walletProvider: EthersProvider\n) {\n const stableCoinContract = new ethers.Contract(\n stabilityTokenAddr,\n abis.erc20,\n walletProvider.getSigner()\n );\n const totalSupplyBig = await stableCoinContract.totalSupply();\n return totalSupplyBig;\n}\n\nexport async function getBorrowingFeeWithDecay(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n const bigFee = await troveManagerContract.getBorrowingFeeWithDecay(amount);\n return bigFee;\n}\n\nexport async function getBorrowingRateWithDecay(\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n return await troveManagerContract.getBorrowingRateWithDecay();\n}\n\nexport async function getTCR(\n collateralAddr: string,\n price: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n return await troveManagerContract.getTCR(collateralAddr, price);\n}\n\nexport async function getTroves(\n addr: string,\n starting: number,\n count: number,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const multiTroveGetterContract = new ethers.Contract(\n contractAddresses.multiTroveGetterAddr,\n abis.multiTroveGetter,\n walletProvider.getSigner()\n );\n const trovesRaw = await multiTroveGetterContract.getMultipleSortedTroves(addr, starting, count);\n return trovesRaw;\n}\n\nexport async function getMinDebtAndCompensation(\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider\n );\n const minNetDebt = await troveManagerContract.MIN_NET_DEBT();\n const gasCompensation = await troveManagerContract.LUSD_GAS_COMPENSATION();\n return { minNetDebt, gasCompensation };\n}\n\nexport async function getTroveStatus(\n borrowerAddr: string,\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider\n );\n const statusCode = await troveManagerContract.getTroveStatus(borrowerAddr, collAddr);\n const troveDebt = await troveManagerContract.getTroveDebt(borrowerAddr, collAddr);\n const troveColl = await troveManagerContract.getTroveColl(borrowerAddr, collAddr);\n\n return {\n status: statusCode,\n debt: troveDebt,\n coll: troveColl,\n };\n}\n\nexport async function claimCollateral(\n collAddr: string,\n walletAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const borrowerOpAddr = contractAddresses.borrowerOperationsAddr;\n const borrowerOperations = new ethers.Contract(\n borrowerOpAddr,\n abis.borrowerOperations,\n walletProvider.getSigner()\n );\n const result = await borrowerOperations.claimCollateral(collAddr, { gasLimit: 2000000 });\n return result;\n}\n\nexport async function getClaimableCollateral(\n collAddr: string,\n walletAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const collSurplusPoolAddr = contractAddresses.collSurplusPoolAddr;\n const collSurplusPool = new ethers.Contract(\n collSurplusPoolAddr,\n abis.collSurplusPool,\n walletProvider.getSigner()\n );\n const result = await collSurplusPool.getUserCollateral(walletAddr, collAddr);\n return result;\n}\n\nexport async function openTrove(\n collAddr: string,\n collAmount: ethers.BigNumber,\n maxFee: ethers.BigNumber,\n stableAmount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const { upperHint, lowerHint } = await getUpperLowerHints(\n collAddr,\n collAmount,\n stableAmount,\n contractAddresses,\n walletProvider\n );\n if (upperHint !== undefined && lowerHint !== undefined) {\n const borrowerOpAddr = contractAddresses.borrowerOperationsAddr;\n const borrowerOperations = new ethers.Contract(\n borrowerOpAddr,\n abis.borrowerOperations,\n walletProvider.getSigner()\n );\n const result = await borrowerOperations.openTrove(\n collAddr,\n collAmount,\n maxFee,\n stableAmount,\n upperHint,\n lowerHint,\n { gasLimit: 3000000 }\n );\n return result;\n } else {\n throw new Error('Could not get upper and lower hints.');\n }\n}\n\nexport async function closeTrove(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const borrowerOpAddr = contractAddresses.borrowerOperationsAddr;\n const borrowerOperations = new ethers.Contract(\n borrowerOpAddr,\n abis.borrowerOperations,\n walletProvider.getSigner()\n );\n return borrowerOperations.closeTrove(collAddr);\n}\n\nexport async function adjustTrove(\n borrowerAddr: string,\n collAddr: string,\n collDecimals: number,\n maxFee: ethers.BigNumber,\n collTopUp: ethers.BigNumber,\n collWithdrawal: ethers.BigNumber,\n debtChange: ethers.BigNumber,\n isDebtIncrease: boolean,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n let gasCustomLimit = 3000000;\n\n const troveStatus = await getTroveStatus(\n borrowerAddr,\n collAddr,\n contractAddresses,\n walletProvider\n );\n if (troveStatus === undefined) {\n throw Error('Could not get trove status.');\n }\n\n const bigZero = ethers.constants.Zero;\n\n const currentColl = troveStatus.coll;\n const currentDebt = troveStatus.debt;\n\n if (collTopUp.gt(bigZero) && collWithdrawal.gt(bigZero)) {\n throw Error('Coll increase and decrease cannot both be greater than zero.');\n }\n if (collTopUp.eq(bigZero) && collWithdrawal.eq(bigZero) && debtChange.eq(bigZero)) {\n throw Error('No change to collateral or debt.');\n }\n\n let estColl = currentColl.add(collTopUp).sub(collWithdrawal);\n\n if (collDecimals !== 18) {\n const decimalDiff = 18 - collDecimals;\n estColl = estColl.mul(BigNumber.from(10).pow(decimalDiff));\n }\n\n let estDebt = currentDebt;\n if (isDebtIncrease) {\n estDebt = estDebt.add(debtChange);\n } else {\n const data = await getMinDebtAndCompensation(contractAddresses, walletProvider);\n estDebt = estDebt.sub(debtChange);\n if (data === undefined || data.minNetDebt === undefined) {\n throw Error('Bad min net debt.');\n }\n if (estDebt.lt(data.minNetDebt)) {\n throw Error('Debt change under min net debt.');\n }\n }\n\n const { upperHint, lowerHint } = await getUpperLowerHints(\n collAddr,\n estColl,\n estDebt,\n contractAddresses,\n walletProvider\n );\n\n if (upperHint !== undefined && lowerHint !== undefined) {\n const borrowerOpAddr = contractAddresses.borrowerOperationsAddr;\n const borrowerOperations = new ethers.Contract(\n borrowerOpAddr,\n abis.borrowerOperations,\n walletProvider.getSigner()\n );\n return borrowerOperations.adjustTrove(\n collAddr,\n maxFee,\n collTopUp,\n collWithdrawal,\n debtChange,\n isDebtIncrease,\n upperHint,\n lowerHint,\n { gasLimit: gasCustomLimit }\n );\n } else {\n throw Error('Hints are undefined.');\n }\n}\n\nexport async function liquidateTrove(\n borrowerAddr: string,\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n const liq = await troveManagerContract.liquidate(borrowerAddr, collAddr);\n return liq;\n}\n\nexport async function liquidateTroves(\n collAddr: string,\n nTroves: number,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n const liq = await troveManagerContract.liquidateTroves(collAddr, nTroves);\n return liq;\n}\n\nexport async function redeemCollateral(\n collAddr: string,\n stableAmount: ethers.BigNumber,\n maxIterations: ethers.BigNumber,\n maxFeePercentage: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveManagerContract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider.getSigner()\n );\n const hintHelpersContract = new ethers.Contract(\n contractAddresses.hintHelpersAddr,\n abis.hintHelpers,\n walletProvider.getSigner()\n );\n\n const collPrice = await getCollateralPrice(collAddr, contractAddresses, walletProvider);\n\n // Get the redemptions hints from the deployed HintHelpers contract\n // note: set maxIterations = 50 in ui router\n const redemptionHint = await hintHelpersContract.getRedemptionHints(\n collAddr,\n stableAmount,\n collPrice,\n maxIterations\n );\n const {\n 0: firstRedemptionHint,\n 1: partialRedemptionNewICR,\n 2: truncatedStableAmount,\n } = redemptionHint;\n const { upperHint, lowerHint } = await getUpperLowerHintsFromNICR(\n collAddr,\n partialRedemptionNewICR,\n contractAddresses,\n walletProvider\n );\n\n const res = await troveManagerContract.redeemCollateral(\n collAddr,\n truncatedStableAmount,\n firstRedemptionHint,\n upperHint,\n lowerHint,\n partialRedemptionNewICR,\n 0,\n maxFeePercentage\n );\n return res;\n}\n\nexport async function getUpperLowerHintsFromNICR(\n collAddr: string,\n NICR: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const sortedTrovesAddr = contractAddresses.sortedTrovesAddr;\n const sortedTroves = new ethers.Contract(\n sortedTrovesAddr,\n abis.sortedTroves,\n walletProvider.getSigner()\n );\n let numTroves = await sortedTroves.getSize(collAddr);\n let numTrials = numTroves.mul(ethers.BigNumber.from('15'));\n\n const hintHelpersAddr = contractAddresses.hintHelpersAddr;\n const hintHelpers = new ethers.Contract(\n hintHelpersAddr,\n abis.hintHelpers,\n walletProvider.getSigner()\n );\n\n let { hintAddress } = await hintHelpers.getApproxHint(collAddr, NICR, numTrials, 42);\n let { 0: upperHint, 1: lowerHint } = await sortedTroves.findInsertPosition(\n collAddr,\n NICR,\n hintAddress,\n hintAddress\n );\n return { upperHint, lowerHint };\n}\n\nexport async function getUpperLowerHints(\n collAddr: string,\n collAmount: ethers.BigNumber,\n debtAmount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const _1e20 = ethers.utils.parseEther('100');\n const NICR = collAmount.mul(_1e20).div(debtAmount);\n const hints = await getUpperLowerHintsFromNICR(collAddr, NICR, contractAddresses, walletProvider);\n return hints;\n}\n\nexport async function getMinCollateralRatio(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const collConfigAddr = contractAddresses.collateralConfigAddr;\n const collConfig = new ethers.Contract(collConfigAddr, abis.collateralConfig, walletProvider);\n const mcr = await collConfig.getCollateralMCR(collAddr);\n return mcr;\n}\n\nexport async function getCritCollateralRatio(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const collConfigAddr = contractAddresses.collateralConfigAddr;\n const collConfig = new ethers.Contract(collConfigAddr, abis.collateralConfig, walletProvider);\n const mcr = await collConfig.getCollateralCCR(collAddr);\n return mcr;\n}\n\n/*\n * Stable Coin Stability Pool\n */\nexport async function depositStableToStabilityPool(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n return await stabilityPool.provideToSP(amount, { gasLimit: 3000000 });\n}\n\nexport async function withdrawStableFromStabilityPool(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n return await stabilityPool.withdrawFromSP(amount, { gasLimit: 3000000 });\n}\n\nexport async function getUserStabilityPoolDeposits(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n const depositBig = await stabilityPool.getCompoundedLUSDDeposit(address);\n return depositBig;\n}\n\nexport async function getTotalStabilityPoolDeposits(\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider\n );\n const depositBig = await stabilityPool.getTotalLUSDDeposits();\n return depositBig;\n}\n\nexport async function getUserCompoundedStabilityPoolDeposits(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n const depositBig = await stabilityPool.getCompoundedLUSDDeposit(address);\n return depositBig;\n}\nexport async function getUserStabilityPoolRewards(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n const gainsBig = await stabilityPool.getDepositorLQTYGain(address);\n return gainsBig;\n}\n\nexport async function getUserStabilityPoolCollateralRewardsGain(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const stabilityPool = new ethers.Contract(\n contractAddresses.stabilityPoolAddr,\n abis.stabilityPool,\n walletProvider.getSigner()\n );\n const { amounts, assets } = await stabilityPool.getDepositorCollateralGain(address);\n return { amounts, assets };\n}\n\n/*\n * OATH Staking\n */\n\nexport async function depositInStakingPool(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider.getSigner()\n );\n return await lqtyStaking.stake(amount, { gasLimit: 3000000 });\n}\n\nexport async function withdrawFromStakingPool(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider.getSigner()\n );\n return await lqtyStaking.unstake(amount, { gasLimit: 3000000 });\n}\n\nexport async function getTotalStakingPoolDeposits(\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider\n );\n const oathStakesBig = await lqtyStaking.totalLQTYStaked();\n return oathStakesBig;\n}\n\nexport async function getUserStakingPoolDeposits(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking, // doesn't exist\n walletProvider.getSigner()\n );\n const oathStakesBig = await lqtyStaking.stakes(address);\n return oathStakesBig;\n}\n\nexport async function getUserStakingPoolRewards(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider.getSigner()\n );\n const oathStakesBig = await lqtyStaking.stakes(address);\n return oathStakesBig;\n}\n\nexport async function getOATHStakePendingStableGain(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider.getSigner()\n );\n const pendingStableBig = await lqtyStaking.getPendingLUSDGain(address);\n return pendingStableBig;\n}\n\nexport async function getOATHStakePendingCollateralGain(\n address: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const lqtyStaking = new ethers.Contract(\n contractAddresses.stakingPoolAddr,\n abis.lqtyStaking,\n walletProvider.getSigner()\n );\n const gains = await lqtyStaking.getPendingCollateralGain(address);\n return { assets: gains[0], amounts: gains[1] };\n}\n\nexport async function getTokenBalance(\n tokenAddr: string,\n walletAddr: string,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(tokenAddr, abis.erc20, walletProvider.getSigner());\n const balance = await contract.balanceOf(walletAddr);\n return balance;\n}\n\nexport async function getEntireSystemColl(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider\n );\n return await contract.getEntireSystemColl(collAddr);\n}\n\nexport async function getEntireSystemDebt(\n collAddr: string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.troveManagerAddr,\n abis.troveManager,\n walletProvider\n );\n return await contract.getEntireSystemDebt(collAddr);\n}\n\nexport async function getStabilityRewardsPerSecond(\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.communityIssuance,\n abis.communityIssuance,\n walletProvider\n );\n return await contract.rewardPerSecond();\n}\n\nexport async function getCollateralDebtLimit(\n collAddr:string,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.collateralConfigAddr,\n abis.collateralConfig,\n walletProvider\n );\n return await contract.getCollateralDebtLimit(collAddr);\n}\n\nexport async function migrateOath(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.oathMigrationAddr,\n abis.oathMigrator,\n walletProvider.getSigner()\n );\n return await contract.exchange(amount, { gasLimit: 3000000 });\n}\n\nexport async function migrateOathOpOldForNew(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.oathMigrationAddr,\n abis.oathMigratorOp,\n walletProvider.getSigner()\n );\n return await contract.exchangeOldForNew(amount, { gasLimit: 3000000 });\n}\n\nexport async function migrateOathOpNewForOld(\n amount: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddresses.oathMigrationAddr,\n abis.oathMigratorOp,\n walletProvider.getSigner()\n );\n return await contract.exchangeNewForOld(amount, { gasLimit: 3000000 });\n}\n\nexport async function getPricePerFullShareOfVault(\n contractAddress: string,\n walletProvider: EthersProvider\n) {\n const contract = new ethers.Contract(\n contractAddress,\n abis.reaperVaultERC4626,\n walletProvider.getSigner()\n );\n return await contract.getPricePerFullShare();\n}\n\nexport async function depositIntoVault(\n amount: ethers.BigNumber,\n vaultAddress: string,\n walletProvider: EthersProvider\n) {\n const vaultContract = new ethers.Contract(\n vaultAddress,\n abis.reaperVaultERC4626,\n walletProvider.getSigner()\n );\n return await vaultContract.deposit(amount, { gasLimit: 3000000 });\n}\n\nexport async function withdrawFromVault(\n amount: ethers.BigNumber,\n vaultAddress: string,\n walletProvider: EthersProvider\n) {\n const vaultContract = new ethers.Contract(\n vaultAddress,\n abis.reaperVaultERC4626,\n walletProvider.getSigner()\n );\n return await vaultContract.withdraw(amount, { gasLimit: 3000000 });\n}\n\nexport async function leverToTargetCRWithNIterations(\n collAddr: string,\n targetCR: ethers.BigNumber,\n iterations: number,\n collAmount: ethers.BigNumber,\n stableAmount: ethers.BigNumber,\n maxFee: ethers.BigNumber,\n ernPrice: ethers.BigNumber,\n swapPercentOut: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const { upperHint, lowerHint } = await getUpperLowerHints(collAddr, collAmount, stableAmount, contractAddresses, walletProvider);\n\n if (upperHint !== undefined && lowerHint !== undefined) {\n const leveragerAddr = contractAddresses.leveragerAddr;\n const leverager = new ethers.Contract(\n leveragerAddr!,\n abis.leverager,\n walletProvider.getSigner()\n );\n\n const result = await leverager.leverToTargetCRWithNIterations(\n collAddr,\n targetCR,\n iterations,\n collAmount,\n maxFee,\n upperHint,\n lowerHint,\n ernPrice,\n swapPercentOut,\n { gasLimit: 3000000 }\n );\n return result;\n } else {\n throw new Error('Could not get upper and lower hints.');\n }\n}\n\nexport async function deleverAndCloseTrove(\n borrowerAddr: string,\n collAddr: string,\n lusdAmount: ethers.BigNumber,\n ernPrice: ethers.BigNumber,\n swapPercentOut: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveStatus = await getTroveStatus(\n borrowerAddr,\n collAddr,\n contractAddresses,\n walletProvider\n );\n if (troveStatus === undefined) {\n throw Error('Could not get trove status.');\n }\n const currentColl = troveStatus.coll;\n const currentDebt = troveStatus.debt;\n let estDebt = currentDebt.sub(lusdAmount);\n const { upperHint, lowerHint } = await getUpperLowerHints(collAddr, currentColl, estDebt, contractAddresses, walletProvider);\n\n if (upperHint !== undefined && lowerHint !== undefined) {\n const leveragerAddr = contractAddresses.leveragerAddr;\n const leverager = new ethers.Contract(\n leveragerAddr!,\n abis.leverager,\n walletProvider.getSigner()\n );\n\n const result = await leverager.deleverAndCloseTrove(\n collAddr,\n lusdAmount,\n upperHint,\n lowerHint,\n ernPrice,\n swapPercentOut,\n { gasLimit: 3000000 }\n );\n return result;\n } else {\n throw new Error('Could not get upper and lower hints.');\n }\n}\n\nexport async function estimateDeleverAndCloseTroveGas(\n borrowerAddr: string,\n collAddr: string,\n lusdAmount: ethers.BigNumber,\n ernPrice: ethers.BigNumber,\n swapPercentOut: ethers.BigNumber,\n contractAddresses: ContractAddressesInterface,\n walletProvider: EthersProvider\n) {\n const troveStatus = await getTroveStatus(\n borrowerAddr,\n collAddr,\n contractAddresses,\n walletProvider\n );\n if (troveStatus === undefined) {\n throw Error('Could not get trove status.');\n }\n const currentColl = troveStatus.coll;\n const currentDebt = troveStatus.debt;\n let estDebt = currentDebt.sub(lusdAmount);\n const { upperHint, lowerHint } = await getUpperLowerHints(collAddr, currentColl, estDebt, contractAddresses, walletProvider);\n\n if (upperHint !== undefined && lowerHint !== undefined) {\n const leveragerAddr = contractAddresses.leveragerAddr;\n const leverager = new ethers.Contract(\n leveragerAddr!,\n abis.leverager,\n walletProvider.getSigner()\n );\n\n const gasContract= new ethers.Contract(contractAddresses.gasOracle, abis.optimismGasOracle, walletProvider);\n const gasEstimate = await leverager.estimateGas.deleverAndCloseTrove(\n collAddr,\n lusdAmount,\n upperHint,\n lowerHint,\n ernPrice,\n swapPercentOut\n );\n const gasPrice = await gasContract.gasPrice();\n const gasCostL2 = ethers.utils.formatEther(safeMult(gasEstimate.toString(),gasPrice.toString()));\n const txReq = await leverager.populateTransaction.deleverAndCloseTrove(\n collAddr,\n lusdAmount,\n upperHint,\n lowerHint,\n ernPrice,\n swapPercentOut\n );\n const gasCostL1 = await getL1Gasfee(\n walletProvider, txReq, gasContract\n )\n return safeAdd(gasCostL1.toString(), gasCostL2);\n } else {\n throw new Error('Could not estimate gas fee.');\n }\n}\n\nconst getL1Gasfee = async (walletProvider:any, txReq:any, gasContract:any) => {\n try {\n const signer = walletProvider.getSigner();\n const fakeHarvestTx = await signer.populateTransaction(txReq);\n let nonce;\n if (fakeHarvestTx.nonce !== undefined) {\n nonce = parseInt(fakeHarvestTx.nonce.toString());\n }\n \n const l1GasCost = await gasContract.getL1Fee(\n serializeTransaction({\n chainId: fakeHarvestTx.chainId,\n data: fakeHarvestTx.data,\n to: fakeHarvestTx.to,\n gasPrice: fakeHarvestTx.gasPrice,\n type: fakeHarvestTx.type,\n gasLimit: fakeHarvestTx.gasLimit,\n nonce: nonce,\n })\n );\n return ethers.utils.formatEther(l1GasCost);\n } catch (error) {\n throw new Error('Could not get L1 gas fees.')\n }\n} ","import { LeverageConfigInterface } from \"./Types\";\n\nexport const LeverageConfig:LeverageConfigInterface = {\n dexFee: '.0005',\n maxIterations: 15,\n minIterations: 2,\n minCollateralRatioForUser: 'mcr',\n slippage: '.995',\n defaultTCR: '1.50',\n minStabilityCoinPrice: '.99'\n}","import { ethers } from 'ethers';\nimport {\n getCollateralPriceFromAggregator as fGetCollateralPriceFromAggregator,\n getTroveStatus as fGetTroveStatus,\n approveSpend as fApproveSpend,\n getCollateralRecoveryMode as fGetCollateralRecoveryMode,\n getStableCoinSupply as fGetStableCoinSupply,\n getBorrowingFeeWithDecay as fGetBorrowingFeeWithDecay,\n getBorrowingRateWithDecay as fGetBorrowingRateWithDecay,\n getTroves as fGetTroves,\n getMinDebtAndCompensation as fGetMinDebtAndCompensation,\n openTrove as fOpenTrove,\n closeTrove as fCloseTrove,\n adjustTrove as fAdjustTrove,\n liquidateTrove as fLiquidateTrove,\n liquidateTroves as fLiquidateTroves,\n redeemCollateral as fRedeemCollateral,\n getUpperLowerHintsFromNICR as fGetUpperLowerHintsFromNICR,\n getUpperLowerHints as fGetUpperLowerHints,\n depositStableToStabilityPool as fDepositStableToStabilityPool,\n withdrawStableFromStabilityPool as fWithdrawStableFromStabilityPool,\n getUserStabilityPoolDeposits as fGetUserStabilityPoolDeposits,\n getTotalStabilityPoolDeposits as fGetTotalStabilityPoolDeposits,\n getUserCompoundedStabilityPoolDeposits as fGetUserCompoundedStabilityPoolDeposits,\n getUserStabilityPoolRewards as fGetUserStabilityPoolRewards,\n getUserStabilityPoolCollateralRewardsGain as fGetUserStabilityPoolCollateralGain,\n depositInStakingPool as fDepositInStakingPool,\n withdrawFromStakingPool as fWithdrawFromStakingPool,\n getTotalStakingPoolDeposits as fGetTotalOATHStakes,\n getUserStakingPoolDeposits as fGetOATHStakes,\n getOATHStakePendingStableGain as fGetOATHStakePendingStableGain,\n getOATHStakePendingCollateralGain as fGetOATHStakePendingCollateralGain,\n getTokenBalance as fGetTokenBalance,\n getMinCollateralRatio as fGetMinCollateralRatio,\n getCritCollateralRatio as fGetCritCollateralRatio,\n getAllowance as fGetAllowance,\n getTCR as fGetTCR,\n claimCollateral as fClaimCollateral,\n getClaimableCollateral as fGetClaimableCollateral,\n getEntireSystemColl as fGetEntireSystemColl,\n getEntireSystemDebt as fGetEntireSystemDebt,\n getStabilityRewardsPerSecond as fGetStabilityRewardsPerSecond,\n getTotalSupply as fGetTotalSupply,\n migrateOath as fMigrateOath,\n migrateOathOpOldForNew as fMigrateOathOpOldForNew,\n migrateOathOpNewForOld as fMigrateOathOpNewForOld,\n getPricePerFullShareOfVault as fGetPricePerFullShareOfVault,\n depositIntoVault as fDepositIntoVault,\n withdrawFromVault as fWithdrawFromVault,\n leverToTargetCRWithNIterations as fLeverToTargetCRWithNIterations,\n deleverAndCloseTrove as fDeleverAndCloseTrove,\n estimateDeleverAndCloseTroveGas as fEstimateDeleverAndCloseTroveGas,\n getCollateralDebtLimit as fGetCollateralDebtLimit,\n} from './blockchain';\nimport { EthersProvider, GlobalStateInterface } from '../storage/Types';\nimport { getDecimals, isErrorMsg, toFixedDecimals } from './formatters';\nimport { getChainConfigFromId, getChainFromId, getChainStabilityCoinFromId } from './chainHelpers';\nimport { isEqualTo, isGreaterThan, safeAdd, safeDiv, safeMult } from './safeMath';\nimport { LeverageConfig } from '../storage/LeverageConfig';\n\nexport async function getOATHStakePendingCollateralGain(\n address: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const { assets, amounts } = await fGetOATHStakePendingCollateralGain(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n\n //convert amounts to string with formatEther and assets to lowercase\n let amountsArray = amounts.map((amount: any) => ethers.utils.formatEther(amount));\n let assetsArray = assets.map((asset: any) => asset.toLowerCase());\n\n let shit = [];\n for (let i = 0; i < amountsArray.length; i++) {\n shit.push({\n address: assetsArray[i],\n amount: amountsArray[i],\n });\n }\n return {\n success: true,\n data: shit,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get OATH stake pending collateral gain.',\n };\n }\n}\n\nexport async function getOATHStakePendingStableGain(address: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let bigPendingStableGain = await fGetOATHStakePendingStableGain(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(bigPendingStableGain),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get OATH stake pending Stable gains.',\n };\n }\n}\n\nexport async function getUserStakingPoolDeposits(address: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let bigOATHStakes = await fGetOATHStakes(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(bigOATHStakes),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get OATH stakes.',\n };\n }\n}\n\nexport async function getTotalStakingPoolDeposits(\n walletProvider: EthersProvider | undefined,\n appVersion:string,\n chainView: string\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n const fallbackWalletProvider = buildFallbackWalletProvider(walletProvider, chainView);\n if (chainConfig !== undefined && fallbackWalletProvider !== undefined) {\n let bigTotalOATHStakes = await fGetTotalOATHStakes(\n chainConfig.contracts,\n fallbackWalletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(bigTotalOATHStakes),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get total OATH stakes.',\n };\n }\n}\n\nexport async function depositInStakingPool(amount: string, state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fDepositInStakingPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to unstake OATH.',\n };\n }\n}\n\nexport async function withdrawFromStakingPool(amount: string, state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fWithdrawFromStakingPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to stake OATH.',\n };\n }\n}\n\nexport async function claimStakingPoolRewards(state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther('0');\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fWithdrawFromStakingPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to claim staking pool rewards.',\n };\n }\n}\nexport async function claimStabilityPoolRewards(state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther('0');\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fWithdrawStableFromStabilityPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to claim stability pool rewards.',\n };\n }\n}\n\nexport async function getUserStabilityPoolCollateralRewardsGain(\n address: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const { amounts, assets } = await fGetUserStabilityPoolCollateralGain(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n\n //convert amounts to string with formatEther and assets to lowercase\n let amountsArray = amounts.map((amount: any) => ethers.utils.formatEther(amount));\n let assetsArray = assets.map((asset: any) => asset.toLowerCase());\n\n let rewards = [];\n for (let i = 0; i < amountsArray.length; i++) {\n rewards.push({\n address: assetsArray[i],\n amount: amountsArray[i],\n });\n }\n return {\n success: true,\n data: rewards,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user stability pool collateral gain.',\n };\n }\n}\n\nexport async function getUserStabilityPoolRewards(state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let gainsBig = await fGetUserStabilityPoolRewards(\n state.walletAddress,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(gainsBig),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user stability pool OATH gain.',\n };\n }\n}\n\nexport async function getUserCompoundedStabilityPoolDeposits(\n address: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let depositBig = await fGetUserCompoundedStabilityPoolDeposits(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(depositBig),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user compounded stability pool deposits.',\n };\n }\n}\n\nconst buildFallbackWalletProvider = (\n walletProvider: EthersProvider | undefined,\n chainView: string\n) => {\n let newWalletProvider = walletProvider;\n if (walletProvider === undefined && chainView !== '') {\n const chain = getChainFromId(chainView);\n if (chain !== undefined) {\n newWalletProvider = new ethers.providers.JsonRpcProvider(chain.defaultRpc);\n }\n }\n return newWalletProvider;\n};\n\nexport async function getTotalStabilityPoolDeposits(\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView,appVersion);\n const fallbackWalletProvider = buildFallbackWalletProvider(walletProvider, chainView);\n if (chainConfig !== undefined && fallbackWalletProvider !== undefined) {\n let depositBig = await fGetTotalStabilityPoolDeposits(\n chainConfig.contracts,\n fallbackWalletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(depositBig),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get total stability pool deposits.',\n };\n }\n}\n\nexport async function getUserStabilityPoolDeposits(address: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let depositBig = await fGetUserStabilityPoolDeposits(\n address,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(depositBig),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user stability pool deposits.',\n };\n }\n}\n\nexport async function withdrawStableFromStabilityPool(amount: string, state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fWithdrawStableFromStabilityPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to withdraw from stability pool.',\n };\n }\n}\n\nexport async function depositStableToStabilityPool(amount: string, state: GlobalStateInterface) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fDepositStableToStabilityPool(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to deposit into stability pool.',\n };\n }\n}\n\nexport async function getUpperLowerHints(\n collAddr: string,\n collAmount: ethers.BigNumber,\n debtAmount: ethers.BigNumber,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let upperLowerHints = await fGetUpperLowerHints(\n collAddr,\n collAmount,\n debtAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: upperLowerHints,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get upper and lower hints.',\n };\n }\n}\n\nexport async function getUpperLowerHintsFromNICR(\n collAddr: string,\n NICR: ethers.BigNumber,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let upperLowerHints = await fGetUpperLowerHintsFromNICR(\n collAddr,\n NICR,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: upperLowerHints,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get upper and lower hints from NICR.',\n };\n }\n}\n\nexport async function redeemCollateral(\n collAddr: string,\n stableAmount: ethers.BigNumber,\n maxIterations: ethers.BigNumber,\n maxFeePercentage: ethers.BigNumber,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fRedeemCollateral(\n collAddr,\n stableAmount,\n maxIterations,\n maxFeePercentage,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to redeem collateral.',\n };\n }\n}\n\nexport async function liquidateTroves(\n borrowerAddr: string,\n nTroves: number,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n await fLiquidateTroves(borrowerAddr, nTroves, chainConfig.contracts, state.walletProvider);\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not liquidate troves.',\n };\n }\n}\n\nexport async function liquidateTrove(\n borrowerAddr: string,\n collAddr: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n await fLiquidateTrove(borrowerAddr, collAddr, chainConfig.contracts, state.walletProvider);\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not liquidate trove.',\n };\n }\n}\n\nexport async function adjustTrove(\n collAddr: string,\n debtAddr: string,\n maxFee: string,\n collTopUp: string,\n collWithdrawal: string,\n debtChange: string,\n isDebtIncrease: boolean,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (\n chainConfig !== undefined &&\n state.walletProvider !== undefined &&\n state.walletAddress !== ''\n ) {\n const collDecimals = await getDecimals(collAddr, state.walletProvider);\n const debtDecimals = await getDecimals(debtAddr, state.walletProvider);\n const bigMaxFee = ethers.utils.parseUnits(maxFee);\n const bigCollTopUp = ethers.utils.parseUnits(collTopUp, collDecimals);\n const bigCollWithdrawal = ethers.utils.parseUnits(collWithdrawal, collDecimals);\n const bigDebtChange = ethers.utils.parseUnits(debtChange, debtDecimals);\n const tx = await fAdjustTrove(\n state.walletAddress,\n collAddr,\n collDecimals,\n bigMaxFee,\n bigCollTopUp,\n bigCollWithdrawal,\n bigDebtChange,\n isDebtIncrease,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not adjust trove.',\n };\n }\n}\n\nexport async function closeTrove(collAddr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fCloseTrove(collAddr, chainConfig.contracts, state.walletProvider);\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not close trove.',\n };\n }\n}\n\nexport async function getClaimableCollateral(collAddr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const result = await fGetClaimableCollateral(\n collAddr,\n state.walletAddress,\n chainConfig.contracts,\n state.walletProvider\n );\n const collDecimals = await getDecimals(collAddr, state.walletProvider);\n const formattedAmount = ethers.utils.formatUnits(result, collDecimals);\n return {\n success: true,\n data: formattedAmount,\n };\n } else {\n throw Error('No chain config or wallet provider found.');\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get pending collateral reward.',\n };\n }\n}\n\nexport async function claimCollateral(collAddr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const tx = await fClaimCollateral(\n collAddr,\n state.walletAddress,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not claim collateral.',\n };\n }\n}\n\nexport async function openTrove(\n collAddr: string,\n collAmount: string,\n maxFee: string,\n stableAmount: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const collDecimals = await getDecimals(collAddr, state.walletProvider);\n\n const bigCollAmount = ethers.utils.parseUnits(collAmount, collDecimals);\n const bigMaxFee = ethers.utils.parseUnits(maxFee);\n const bigStableAmount = ethers.utils.parseUnits(stableAmount); //get stable decimals later\n\n const tx = await fOpenTrove(\n collAddr,\n bigCollAmount,\n bigMaxFee,\n bigStableAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n await tx.wait();\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to open trove.',\n };\n }\n}\n\nexport async function getTroveStatus(\n borrowerAddr: string,\n collAddr: string,\n debtAddress: string,\n state: GlobalStateInterface,\n specificVersion: string | undefined\n) {\n try {\n const statusStrings = [\n 'NonExistent',\n 'Active',\n 'Closed By Owner',\n 'Closed By Liquidation',\n 'Closed By Redemption',\n ];\n\n const walletProvider = state.walletProvider;\n\n const chainConfig = specificVersion ? \n getChainConfigFromId(state.chainView, specificVersion) \n : \n getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n /*\n if (walletProvider === undefined) {\n // build rpc provider\n }\n */\n\n const trove = await fGetTroveStatus(\n borrowerAddr,\n collAddr,\n chainConfig.contracts,\n walletProvider\n );\n const statusIndex = trove!.status.toNumber();\n const status = statusStrings[statusIndex];\n\n const collDecimals = await getDecimals(collAddr, walletProvider);\n const debtDecimals = await getDecimals(debtAddress, walletProvider);\n const coll = ethers.utils.formatUnits(trove!.coll, collDecimals);\n const debt = ethers.utils.formatUnits(trove!.debt, debtDecimals);\n return {\n success: true,\n data: {\n status: status,\n debt: debt,\n coll: coll,\n },\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get trove status.',\n };\n }\n}\n\nexport async function getMinDebtAndCompensation(\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const data = await fGetMinDebtAndCompensation(chainConfig.contracts, walletProvider);\n if (data === undefined) {\n throw Error();\n }\n const minNetDebt = ethers.utils.formatEther(data.minNetDebt);\n const gasCompensation = ethers.utils.formatEther(data.gasCompensation);\n return {\n success: true,\n data: { minNetDebt, gasCompensation },\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get min debt and compensation.',\n };\n }\n}\n\nexport async function getTroves(\n collAddr: string,\n starting: number,\n count: number,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let packagedTroves: any[] = [];\n // port over to system where decimals are pulled from coins.ts config\n const collDecimals = await getDecimals(collAddr, state.walletProvider);\n const debtDecimals = 18; // change later\n const rawTroves = await fGetTroves(\n collAddr,\n starting,\n count,\n chainConfig.contracts,\n state.walletProvider\n );\n for (let i = 0; i < rawTroves.length; i++) {\n const trove = {\n owner: rawTroves[i].owner,\n coll: ethers.utils.formatUnits(rawTroves[i].coll, collDecimals),\n debt: ethers.utils.formatUnits(rawTroves[i].debt, debtDecimals),\n snapshotCollAmount: rawTroves[i].snapshotCollAmount.toString(),\n snapshotStableDebt: rawTroves[i].snapshotStableDebt.toString(),\n stake: rawTroves[i].stake.toString(),\n };\n packagedTroves.push(trove);\n }\n return {\n success: true,\n data: packagedTroves,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get troves.',\n };\n }\n}\n\nexport async function getTCR(\n collateralAddr: string,\n appVersion: string,\n chainView: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n // change to getting price from aggregator\n let { priceRaw, decimals } = await fGetCollateralPriceFromAggregator(\n collateralAddr,\n chainConfig.contracts,\n walletProvider\n );\n const bigTCR = await fGetTCR(collateralAddr, priceRaw, chainConfig.contracts, walletProvider);\n const tcr = ethers.utils.formatUnits(bigTCR, decimals);\n return {\n success: true,\n data: tcr,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get TCR.',\n };\n }\n}\n\nexport async function getBorrowingRateWithDecay(\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const bigRate = await fGetBorrowingRateWithDecay(chainConfig.contracts, walletProvider);\n return {\n success: true,\n data: ethers.utils.formatEther(bigRate),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get borrowing rate with decay.',\n };\n }\n}\n\nexport async function getBorrowingFeeWithDecay(amount: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const bigAmount = ethers.utils.parseEther(amount);\n const bigFee = await fGetBorrowingFeeWithDecay(\n bigAmount,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatEther(bigFee),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get borrowing fee with decay.',\n };\n }\n}\n\nexport async function getStableCoinSupply(state: GlobalStateInterface, appVersion: string,) {\n try {\n const stabilityCoin = getChainStabilityCoinFromId(state.chainView, appVersion);\n if (stabilityCoin !== undefined && state.walletProvider !== undefined) {\n let bigSupply = await fGetStableCoinSupply(\n stabilityCoin.addresses[state.chainView],\n state.walletProvider\n );\n const supply = ethers.utils.formatEther(bigSupply);\n return {\n success: true,\n data: supply,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get stablecoin supply.',\n };\n }\n}\n\nexport async function getCollateralRecoveryMode(addr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let recoveryMode = await fGetCollateralRecoveryMode(\n addr,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: recoveryMode,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get collateral recovery mode.',\n };\n }\n}\n\nexport async function getCollateralPriceFromAggregator(\n collAddr: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n let { priceRaw, decimals } = await fGetCollateralPriceFromAggregator(\n collAddr,\n chainConfig.contracts,\n walletProvider\n );\n const formattedPrice = ethers.utils.formatUnits(priceRaw, decimals);\n return {\n success: true,\n data: formattedPrice,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get collateral price.',\n };\n }\n}\n\nexport async function approveSpend(\n tokenAddr: string,\n spenderAddr: string,\n amount: string,\n state: GlobalStateInterface\n) {\n try {\n if (state.walletProvider !== undefined) {\n const tokenDecimals = await getDecimals(tokenAddr, state.walletProvider);\n const bigAmount = ethers.utils.parseUnits(amount, tokenDecimals);\n await fApproveSpend(tokenAddr, spenderAddr, bigAmount, state.walletProvider);\n return {\n success: true,\n data: undefined,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to approve spend.',\n };\n }\n}\n\nexport async function getAllowance(\n tokenAddr: string,\n spenderAddr: string,\n state: GlobalStateInterface\n) {\n try {\n const ownerAddr = state.walletAddress;\n const provider = state.walletProvider;\n if (ownerAddr !== '' && provider !== undefined) {\n const tokenDecimals = await getDecimals(tokenAddr, provider);\n const allowanceRaw = await fGetAllowance(tokenAddr, ownerAddr, spenderAddr, provider);\n const allowance = ethers.utils.formatUnits(allowanceRaw, tokenDecimals);\n return {\n success: true,\n data: allowance,\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to get token allowance.',\n };\n }\n}\n\nexport async function getTokenBalance(\n tokenAddr: string,\n walletAddress: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n if (walletProvider !== undefined && walletAddress !== '') {\n const tokenDecimals = await getDecimals(tokenAddr, walletProvider);\n const rawBalance = await fGetTokenBalance(tokenAddr, walletAddress, walletProvider);\n return {\n success: true,\n data: ethers.utils.formatUnits(rawBalance, tokenDecimals),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get token balance.',\n };\n }\n}\n\nexport async function getMinCollateralRatio(collAddr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const mcr = await fGetMinCollateralRatio(\n collAddr,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatUnits(mcr, 18),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get minimum collateral ratio.',\n };\n }\n}\n\nexport async function getCritCollateralRatio(collAddr: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const ccr = await fGetCritCollateralRatio(\n collAddr,\n chainConfig.contracts,\n state.walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatUnits(ccr, 18),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get critical collateral ratio.',\n };\n }\n}\n\nexport async function getEntireSystemColl(\n collAddr: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const collDecimals = await getDecimals(collAddr, walletProvider);\n const entireSysColl = await fGetEntireSystemColl(\n collAddr,\n chainConfig.contracts,\n walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatUnits(entireSysColl, collDecimals),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get entire system collateral.',\n };\n }\n}\n\nexport async function getEntireSystemDebt(\n collAddr: string,\n debtAddr: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const debtDecimals = await getDecimals(debtAddr, walletProvider);\n const entireSysDebt = await fGetEntireSystemDebt(\n collAddr,\n chainConfig.contracts,\n walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatUnits(entireSysDebt, debtDecimals),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get entire system debt.',\n };\n }\n}\n\nexport async function getCollateralDebtLimit(\n collAddr: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const collDecimals = await getDecimals(collAddr, walletProvider);\n const collateralDebtLimit = await fGetCollateralDebtLimit(\n collAddr,\n chainConfig.contracts,\n walletProvider\n );\n const formattedDebtLimit = ethers.utils.formatUnits(collateralDebtLimit, collDecimals);\n // consider anything more than 1b as no debt limit\n return {\n success: true,\n data: isGreaterThan(formattedDebtLimit, '1000000000') ? '' : formattedDebtLimit\n };\n } else {\n throw Error();\n }\n } catch (error) {\n console.log(error)\n return {\n success: false,\n data: 'Could not get collateral debt limit.',\n };\n }\n}\n\nexport async function estimateNewTCR(\n collAddr: string,\n collChange: string,\n debtAddr: string,\n debtChange: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const collPriceRaw = await getCollateralPriceFromAggregator(\n collAddr,\n chainView,\n appVersion,\n walletProvider\n );\n\n if (!isErrorMsg(collPriceRaw)) {\n const collPrice = collPriceRaw.data;\n const sysCollRaw = await getEntireSystemColl(collAddr, chainView, appVersion, walletProvider);\n const sysDebtRaw = await getEntireSystemDebt(collAddr, debtAddr, chainView, appVersion, walletProvider);\n\n if (!isErrorMsg(sysCollRaw) && !isErrorMsg(sysDebtRaw)) {\n const sysColl = sysCollRaw.data;\n const sysDebt = sysDebtRaw.data;\n\n const numerator = safeAdd(safeMult(sysColl, collPrice), safeMult(collChange, collPrice));\n const denominator = safeAdd(sysDebt, debtChange);\n\n if (!isEqualTo(denominator, '0')) {\n const newTCR = safeDiv(numerator, denominator);\n return {\n success: true,\n data: newTCR,\n };\n }\n }\n }\n throw Error();\n } catch (error) {\n return {\n success: false,\n data: 'Could not get TCR estimate.',\n };\n }\n}\n\nexport async function getRecoveryModePriceThreshold(\n collAddr: string,\n debtAddr: string,\n ratio: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const sysCollRaw = await getEntireSystemColl(collAddr, chainView, appVersion, walletProvider);\n const sysDebtRaw = await getEntireSystemDebt(collAddr, debtAddr, chainView, appVersion, walletProvider);\n\n if (!isErrorMsg(sysCollRaw) && !isErrorMsg(sysDebtRaw)) {\n const sysColl = sysCollRaw.data;\n const sysDebt = sysDebtRaw.data;\n\n const numerator = safeMult(sysDebt, ratio);\n const denominator = sysColl;\n\n if (!isEqualTo(denominator, '0')) {\n const liqPrice = safeDiv(numerator, denominator);\n return {\n success: true,\n data: liqPrice,\n };\n }\n }\n throw Error();\n } catch (error) {\n return {\n success: false,\n data: 'Could not get recovery mode price threshold.',\n };\n }\n}\n\nexport async function getStabilityRewardsPerSecond(\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const rps = await fGetStabilityRewardsPerSecond(chainConfig.contracts, walletProvider);\n return {\n success: true,\n data: ethers.utils.formatUnits(rps, 18),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get stability rewards per second.',\n };\n }\n}\n\nexport function buildReadProvider(chainView: string) {\n const chainInfo = getChainFromId(chainView);\n if (chainInfo !== undefined) {\n return new ethers.providers.JsonRpcProvider(chainInfo.defaultRpc);\n } else {\n return undefined;\n }\n}\n\nexport async function getTotalSupply(tokenAddr: string, walletProvider: EthersProvider) {\n try {\n if (walletProvider !== undefined) {\n const total = await fGetTotalSupply(tokenAddr, walletProvider);\n const decimals = await getDecimals(tokenAddr, walletProvider);\n return {\n success: true,\n data: ethers.utils.formatUnits(total, decimals),\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get token (' + tokenAddr + ') total supply.',\n };\n }\n}\n\nexport async function migrateOath(\n amount: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider\n) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const tx = await fMigrateOath(bigAmount, chainConfig.contracts, walletProvider);\n await tx.wait();\n return {\n success: true,\n data: 'Succesfully migrated OATH.',\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not migrate OATH.',\n };\n }\n}\n\nexport async function migrateOathOpOldForNew(\n amount: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider\n) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const tx = await fMigrateOathOpOldForNew(bigAmount, chainConfig.contracts, walletProvider);\n await tx.wait();\n return {\n success: true,\n data: 'Succesfully migrated old for new OATH.',\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not migrate old for new OATH.',\n };\n }\n}\n\nexport async function migrateOathOpNewForOld(\n amount: string,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider\n) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && walletProvider !== undefined) {\n const tx = await fMigrateOathOpNewForOld(bigAmount, chainConfig.contracts, walletProvider);\n await tx.wait();\n return {\n success: true,\n data: 'Succesfully migrated new for old OATH.',\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not migrate new for old OATH.',\n };\n }\n}\n\nexport async function getUserStERNVaultDeposits(walletAddress: string, state: GlobalStateInterface) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n let vaultTokenBalanceRes = await getTokenBalance(\n chainConfig.contracts.stERNVaultAddr,\n walletAddress,\n state.walletProvider\n );\n let ppFullShareRes = await getPricePerFullShareOfVault(\n chainConfig.contracts.stERNVaultAddr,\n state.walletProvider\n );\n if (vaultTokenBalanceRes.success && ppFullShareRes.success) {\n let balance: string = safeMult(vaultTokenBalanceRes.data, ppFullShareRes.data);\n balance = toFixedDecimals(balance, 18);\n return {\n success: true,\n data: {\n deposits: vaultTokenBalanceRes.data,\n depositsInERN: balance\n }\n };\n } else {\n throw Error();\n }\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user stERN vault deposits.',\n };\n }\n}\n\nexport async function getPricePerFullShareOfVault(\n contractAddress: string,\n walletProvider: EthersProvider | undefined\n) {\n try {\n if (walletProvider) {\n const tokenDecimals = await getDecimals(contractAddress, walletProvider);\n let ppFullShare = await fGetPricePerFullShareOfVault(\n contractAddress,\n walletProvider\n );\n return {\n success: true,\n data: ethers.utils.formatUnits(ppFullShare, tokenDecimals),\n };\n } else {\n throw Error()\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get price per full share.',\n };\n }\n}\n\nexport async function depositIntoVault(\n amount: string,\n vaultAddress: string,\n walletProvider: EthersProvider\n) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n if (walletProvider !== undefined) {\n const tx = await fDepositIntoVault(bigAmount, vaultAddress, walletProvider);\n await tx.wait();\n return {\n success: true,\n data: 'Succesfully deposited into vault.',\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not deposit into vault.',\n };\n }\n}\n\nexport async function withdrawFromVault(\n amount: string,\n vaultAddress: string,\n walletProvider: EthersProvider\n) {\n try {\n const bigAmount = ethers.utils.parseEther(amount);\n if (walletProvider !== undefined) {\n const tx = await fWithdrawFromVault(bigAmount, vaultAddress, walletProvider);\n await tx.wait();\n return {\n success: true,\n data: 'Succesfully withdrew from vault.',\n };\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not withdraw from vault.',\n };\n }\n}\n\n\nexport async function leverToTargetCRWithIterations(\n collAddr: string,\n targetCR: string,\n iterations: string,\n collAmount: string,\n maxFee: string,\n stableAmount: string,\n state: GlobalStateInterface,\n useMaxIterations: boolean\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n\n const collDecimals = await getDecimals(collAddr, state.walletProvider);\n const bigCollAmount = ethers.utils.parseUnits(collAmount, collDecimals);\n const bigtargetCR = ethers.utils.parseEther(targetCR);\n const bigMaxFee = ethers.utils.parseUnits(maxFee);\n const bigErnPrice = ethers.utils.parseEther(state.stabilityCoinPrice);\n const bigSwapPercentageOut = ethers.utils.parseEther(LeverageConfig.slippage);\n const bigStableAmount = ethers.utils.parseUnits(toFixedDecimals(stableAmount, collDecimals));\n\n const tx = await fLeverToTargetCRWithNIterations(\n collAddr,\n bigtargetCR,\n Number(iterations),\n bigCollAmount,\n bigStableAmount,\n bigMaxFee,\n bigErnPrice,\n bigSwapPercentageOut,\n chainConfig.contracts,\n state.walletProvider\n );\n\n await tx.wait();\n\n return {\n success: true,\n data: undefined,\n };\n\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to open leveraged position.',\n };\n }\n}\n\nexport async function deleverAndCloseTrove(\n collAddr: string,\n lusdAmount: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const bigErnPrice = ethers.utils.parseEther(state.stabilityCoinPrice);\n const bigSwapPercentageOut = ethers.utils.parseEther(LeverageConfig.slippage);\n const bigLusdAmount = ethers.utils.parseUnits(lusdAmount);\n\n const tx = await fDeleverAndCloseTrove(\n state.walletAddress,\n collAddr,\n bigLusdAmount,\n bigErnPrice,\n bigSwapPercentageOut,\n chainConfig.contracts,\n state.walletProvider\n );\n\n await tx.wait();\n\n return {\n success: true,\n data: undefined,\n };\n\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to delever and close position.',\n };\n }\n}\n\nexport async function estimateDeleverAndCloseTroveGas(\n collAddr: string,\n lusdAmount: string,\n state: GlobalStateInterface\n) {\n try {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.walletProvider !== undefined) {\n const bigErnPrice = ethers.utils.parseEther(state.stabilityCoinPrice);\n const bigSwapPercentageOut = ethers.utils.parseEther(LeverageConfig.slippage);\n const bigLusdAmount = ethers.utils.parseUnits(lusdAmount);\n\n const gasFee = await fEstimateDeleverAndCloseTroveGas(\n state.walletAddress,\n collAddr,\n bigLusdAmount,\n bigErnPrice,\n bigSwapPercentageOut,\n chainConfig.contracts,\n state.walletProvider\n );\n\n return {\n success: true,\n data: gasFee,\n };\n\n } else {\n throw Error();\n }\n } catch (error) {\n return {\n success: false,\n data: 'Failed to calculate gas fee.',\n };\n }\n}","import axios from \"axios\";\nconst REAPER_API_URL = 'https://2ch9hbg8hh.execute-api.us-east-1.amazonaws.com/dev/api/';\nconst TOKEN_PRICE_API_URL = 'https://4avzt2764b.execute-api.us-east-1.amazonaws.com/dev/api/';\n\nconst reaperDatabase = axios.create({\n baseURL: REAPER_API_URL,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\nconst tokenPriceDatabase = axios.create({\n baseURL: TOKEN_PRICE_API_URL,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\nexport const getReaperVaultInfo = async (vaultAddr: string, chainId: string) => {\n try {\n const res = await reaperDatabase.get(`/vault/${vaultAddr}:${chainId}`);\n if (Object.keys(res.data.data).length > 0) {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get vault.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get vault.',\n };\n }\n};\n\nexport const getTokenPrice = async (tokenAddr: string, chainId: string) => {\n try {\n const res = await tokenPriceDatabase.get(`/prices/tokens/${tokenAddr}:${chainId}`);\n if (Object.keys(res.data.data).length > 0) {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get token price.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get token price.',\n };\n }\n};\n\nexport const getUserTroveChanges = async (walletAddress: string, chainView: string, appVersion: string) => {\n try {\n const res = await reaperDatabase.get(`/subgraph/cdp/user-trove-changes/user/${walletAddress}/version/${appVersion}/chain/${chainView}`);\n if (res.data.status === \"success\") {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get user trove changes.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get user trove changes.',\n };\n }\n};\n\nexport const getLastDaysOfTroveChanges = async (days: number, chainView: string, appVersion: string) => {\n try {\n const res = await reaperDatabase.get(`/subgraph/cdp/trove-changes/days/${days}/version/${appVersion}/chain/${chainView}`);\n if (res.data.status === \"success\") {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n};\n\nexport const getGlobalTrovesData = async (chainView: string, appVersion: string) => {\n try {\n const res = await reaperDatabase.get(`/subgraph/cdp/global-data/version/${appVersion}/chain/${chainView}`);\n if (res.data.status === \"success\") {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n};\n\nexport const getTopBorrowers = async (chainView: string, appVersion: string) => {\n try {\n const res = await reaperDatabase.get(`/subgraph/cdp/top-borrowers/version/${appVersion}/chain/${chainView}`);\n if (res.data.status === \"success\") {\n return {\n success: true,\n data: res.data.data\n }\n } else {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n } catch (error) {\n return {\n success: false,\n data: 'Could not get trove changes.',\n };\n }\n};\n","import {\n GlobalStateInterface,\n Reward,\n UserCollateralPositionData,\n MinDebtAndCompensation,\n EthersProvider,\n Coin,\n TroveSubgraphUserDataInterface,\n} from '../storage/Types';\nimport {\n getChainCollateralFromId,\n getChainConfigFromId,\n getChainFromId,\n getChainStabilityCoinFromId,\n getChainStabilityRewardCoinFromId,\n getChainStakingCoinFromId,\n getChainStakingRewardCoinFromId,\n getConfigKeyFromVersion,\n} from './chainHelpers';\nimport { getCoinFromAddress, getCoinFromUID } from './coinHelpers';\nimport { isErrorMsg, isNumber } from './formatters';\nimport {\n isEqualTo,\n isGreaterThan,\n isGreaterThanOrEqual,\n isLessThan,\n isLessThanOrEqual,\n isZero,\n safeAdd,\n safeDiv,\n safeMult,\n safeSub,\n} from './safeMath';\nimport {\n getBeethovenPoolSnapshotData,\n getBeethovenTokenData,\n} from './subgraph';\nimport {\n getCollateralPriceFromAggregator,\n getTotalStabilityPoolDeposits,\n getTotalStakingPoolDeposits,\n getTroveStatus,\n getUserStabilityPoolDeposits,\n getUserStakingPoolDeposits,\n getMinCollateralRatio,\n getCritCollateralRatio,\n getOATHStakePendingStableGain,\n getOATHStakePendingCollateralGain,\n getUserStabilityPoolRewards,\n getUserStabilityPoolCollateralRewardsGain,\n getMinDebtAndCompensation,\n getBorrowingRateWithDecay,\n getTokenBalance,\n getClaimableCollateral,\n getEntireSystemColl,\n getStabilityRewardsPerSecond,\n getTotalSupply,\n getUserStERNVaultDeposits,\n getTCR,\n getEntireSystemDebt,\n} from './blockchainRouter';\nimport { getLastDaysOfTroveChanges, getReaperVaultInfo, getTokenPrice, getTopBorrowers, getUserTroveChanges } from './api';\nimport { LeverageConfig } from '../storage/LeverageConfig';\n\nconst ITER_CAP = 20;\nconst SLEEP_TIME_MED = 200;\n//const SLEEP_TIME_LOW = 100;\n//const SLEEP_TIME_HIGH = 1000;\n\nconst sleep = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\nexport async function runFuncUntilSuccess(\n func: () => any,\n timeInterval: number = 100,\n maxIterations: number = ITER_CAP\n) {\n const sleep = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n };\n let pass = 0;\n let finished = false;\n let result;\n while (!finished) {\n result = await func();\n if (!isErrorMsg(result) || pass === maxIterations - 1) {\n finished = true;\n } else {\n await sleep(timeInterval);\n }\n }\n return result;\n}\n\nexport function resetWallet(dispatch: any) {\n dispatch({ type: 'walletAddress', content: '' });\n dispatch({ type: 'walletProvider', content: undefined });\n dispatch({ type: 'isWalletConnected', content: false });\n dispatch({ type: 'walletType', content: '' });\n}\n\nexport function checkShowNetworkWarning(state: GlobalStateInterface) {\n return (\n state.isWalletConnected &&\n state.walletProvider !== undefined &&\n state.chainView !== state.connectedChain\n );\n}\n\nexport function checkShowNetworkWarningForEthos(state: GlobalStateInterface) {\n return (\n state.isWalletConnected &&\n state.walletProvider !== undefined &&\n !isOnEthosSupportedChain(state)\n );\n}\n\nexport function checkShowHeaderAlert(oathv1UserBalance: string, hasV1Position: boolean, appVersion: string, dispatch: any) {\n if (isGreaterThan(oathv1UserBalance, '0') || (hasV1Position && appVersion === '2_1')) {\n const lastRead = localStorage.getItem('headerAlertTimestamp');\n if (lastRead === null) {\n dispatch({ type: 'showHeaderAlert', content: true });\n } else {\n const oneDayInSeconds = '86400';\n const nowInSeconds = safeDiv(Date.now().toString(), '1000');\n const timeDiff = safeSub(nowInSeconds, lastRead);\n const show = isGreaterThanOrEqual(timeDiff, oneDayInSeconds);\n dispatch({ type: 'showHeaderAlert', content: show });\n }\n }\n}\n\nexport function showNetworkWarning(state: GlobalStateInterface) {\n if (state.currentPage === \"migrate\") {\n return checkShowNetworkWarning(state);\n } else {\n return checkShowNetworkWarningForEthos(state);\n }\n}\n\nexport function isChainViewAligned(state: GlobalStateInterface) {\n return (\n state.chainView === state.connectedChain &&\n state.chainView !== '' &&\n state.connectedChain !== ''\n );\n}\n\nexport function isWalletConnectedAndOnSupportedChain(\n chainView: string,\n connectedChain: string,\n walletAddress: string,\n walletProvider: EthersProvider | undefined\n) {\n return (\n chainView === connectedChain &&\n chainView !== '' &&\n connectedChain !== '' &&\n walletAddress !== '' &&\n walletProvider !== undefined\n );\n}\n\nexport function isOnEthosSupportedChain(state: GlobalStateInterface) {\n const chain = getChainFromId(state.connectedChain);\n return chain && chain.isEthosSupported ? true : false;\n}\n\nexport function isStakingPositionOpen(state: GlobalStateInterface) {\n if (state.userStakingDeposits === '') {\n return false;\n }\n return isGreaterThan(state.userStakingDeposits, '0');\n}\n\nexport function isStabilityPositionOpen(state: GlobalStateInterface) {\n if (state.userStabilityDeposits === '') {\n return false;\n }\n return isGreaterThan(state.userStabilityDeposits, '0');\n}\n\nexport function isStERNPositionOpen(state: GlobalStateInterface) {\n if (state.userStERNDepositsInERN === '') {\n return false;\n }\n return isGreaterThan(state.userStERNDepositsInERN, '0');\n}\n\nexport function isThereAnEmptyCollateralPosition(state: GlobalStateInterface) {\n const collUIDs = getChainCollateralFromId(state.chainView, state.appVersion);\n let conclusion = false;\n collUIDs.forEach((uid) => {\n const data = getCollateralData(uid, state);\n if (data.status !== 'Active') {\n conclusion = true;\n }\n });\n return conclusion;\n}\n\nexport function getUserLiquidationPrice(collAmount: string, borrowAmount: string, ratio: string) {\n const numerator = safeMult(borrowAmount, ratio);\n const denominator = collAmount;\n let result = '';\n if (!isEqualTo(denominator, '0')) {\n result = safeDiv(numerator, denominator);\n }\n return result;\n}\n\nexport function getUnstakedCollateralPositions(state: GlobalStateInterface) {\n let unstakedCollateralPositions: UserCollateralPositionData[] = [];\n const positions = getAllCollateralData(state.chainView, state);\n positions.forEach((position) => {\n if (position.status !== 'Active') {\n unstakedCollateralPositions.push(position);\n }\n });\n return unstakedCollateralPositions;\n}\n\nexport function getUserCollateralPositionsStatus(state: GlobalStateInterface) {\n const positions = getAllCollateralData(state.chainView, state);\n let statusArray: string[] = [];\n positions.forEach((position) => {\n statusArray.push(position.status);\n });\n return statusArray;\n}\n\n//THIS IS WRONG\nexport function getCollateralRatioFromPositionData(position: UserCollateralPositionData) {\n if (\n isNumber(position.collateralAmount) &&\n isNumber(position.collateralPrice) &&\n isNumber(position.borrowAmount)\n ) {\n if (!isZero(position.borrowAmount)) {\n const collateralValue = safeMult(position.collateralAmount, position.collateralPrice);\n const div = safeDiv(collateralValue, position.borrowAmount);\n return div;\n } else {\n return undefined;\n }\n }\n}\n\nexport function refreshUserStakingPoolDeposits(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getUserStakingPoolDeposits(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((userDeposits) => {\n if (!isErrorMsg(userDeposits) && state.walletAddress.length !== 0) {\n dispatch({ type: 'userStakingDeposits', content: userDeposits.data });\n }\n });\n}\nexport async function refreshUserStakingPoolDepositsUntilChange(\n initValue: string,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let i = ITER_CAP;\n while (i > 0) {\n const userDeposits = await getUserStakingPoolDeposits(state.walletAddress, state);\n if (\n !isErrorMsg(userDeposits) &&\n userDeposits.data !== initValue &&\n state.walletAddress.length !== 0\n ) {\n dispatch({ type: 'userStakingDeposits', content: userDeposits.data });\n return;\n }\n await sleep(SLEEP_TIME_MED);\n i--;\n }\n}\nexport function editUserStakingPoolDeposits(\n amount: string,\n isDepositing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let finalAmount;\n if (isDepositing) {\n finalAmount = safeAdd(state.userStakingDeposits, amount);\n } else {\n finalAmount = safeSub(state.userStakingDeposits, amount);\n }\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userStakingDeposits', content: finalAmount });\n }\n}\n\nexport function refreshTotalStakingPoolDeposits(\n chainView: string,\n walletProvider: EthersProvider | undefined,\n appVersion: string,\n dispatch: any\n) {\n runFuncUntilSuccess(async () => {\n return await getTotalStakingPoolDeposits(walletProvider, appVersion, chainView);\n }, SLEEP_TIME_MED).then((totalDeposits) => {\n if (!isErrorMsg(totalDeposits)) {\n dispatch({ type: 'totalStakingDeposits', content: totalDeposits.data });\n }\n });\n}\nexport async function refreshTotalStakingPoolDepositsUntilChange(\n initValue: string,\n chainView: string,\n walletAddress: string,\n walletProvider: EthersProvider | undefined,\n appVersion: string,\n dispatch: any\n) {\n let i = ITER_CAP;\n while (i > 0) {\n const totalDeposits = await getTotalStakingPoolDeposits(walletProvider, appVersion, chainView);\n if (\n !isErrorMsg(totalDeposits) &&\n totalDeposits.data !== initValue &&\n walletAddress.length !== 0\n ) {\n dispatch({ type: 'totalStakingDeposits', content: totalDeposits.data });\n return;\n }\n await sleep(SLEEP_TIME_MED);\n i--;\n }\n}\nexport function editTotalStakingPoolDeposits(\n amount: string,\n isDepositing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let finalAmount;\n if (isDepositing) {\n finalAmount = safeAdd(state.totalStakingDeposits, amount);\n } else {\n finalAmount = safeSub(state.totalStakingDeposits, amount);\n }\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'totalStakingDeposits', content: finalAmount });\n }\n}\n\nexport function refreshUserStabilityPoolDeposits(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getUserStabilityPoolDeposits(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((userDeposits) => {\n if (\n !isErrorMsg(userDeposits) &&\n state.walletAddress.length !== 0 &&\n state.walletAddress.length !== 0\n ) {\n dispatch({ type: 'userStabilityDeposits', content: userDeposits.data });\n }\n });\n}\nexport function editUserStabilityPoolDeposits(\n amount: string,\n isDepositing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let finalAmount;\n if (isDepositing) {\n finalAmount = safeAdd(state.userStabilityDeposits, amount);\n } else {\n finalAmount = safeSub(state.userStabilityDeposits, amount);\n }\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userStabilityDeposits', content: finalAmount });\n }\n}\n\nexport function refreshTotalStabilityPoolDeposits(\n chainView: string,\n walletProvider: EthersProvider | undefined,\n appVersion: string,\n dispatch: any\n) {\n runFuncUntilSuccess(async () => {\n return await getTotalStabilityPoolDeposits(chainView, appVersion, walletProvider);\n }, SLEEP_TIME_MED).then((totalDeposits) => {\n if (!isErrorMsg(totalDeposits)) {\n dispatch({ type: 'totalStabilityDeposits', content: totalDeposits.data });\n }\n });\n}\nexport function editTotalStabilityPoolDeposits(\n amount: string,\n isDepositing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let finalAmount;\n if (isDepositing) {\n finalAmount = safeAdd(state.totalStabilityDeposits, amount);\n } else {\n finalAmount = safeSub(state.totalStabilityDeposits, amount);\n }\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'totalStabilityDeposits', content: finalAmount });\n }\n}\n\nexport function refreshUserStakingRewards(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getOATHStakePendingStableGain(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((rewardsResponse) => {\n if (!isErrorMsg(rewardsResponse) && state.walletAddress.length !== 0) {\n dispatch({ type: 'userStakingRewards', content: rewardsResponse.data });\n }\n });\n}\nexport function clearUserStakingRewards(state: GlobalStateInterface, dispatch: any) {\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userStakingRewards', content: '0' });\n }\n}\n\nexport function refreshUserStakingRedemptionRewards(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getOATHStakePendingCollateralGain(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((rewardsResponse) => {\n if (!isErrorMsg(rewardsResponse)) {\n if (!isErrorMsg(rewardsResponse) && typeof rewardsResponse.data !== 'string') {\n let redemptionRewards: Reward[] = [];\n rewardsResponse.data.forEach((dat: any) => {\n const collateralIds = getChainCollateralFromId(state.chainView, state.appVersion);\n const collateralId = collateralIds.find((id) => {\n const coin = getCoinFromUID(id);\n return (\n coin !== undefined &&\n coin.addresses[state.chainView] !== undefined &&\n coin.addresses[state.chainView].toLowerCase() === dat.address.toLowerCase()\n );\n });\n if (collateralId !== undefined) {\n const collateral = getCoinFromUID(collateralId);\n if (collateral !== undefined) {\n let ticker = collateral.ticker;\n let amount = dat.amount;\n const reward: Reward = {\n uid: collateral.uid,\n ticker: ticker,\n amount: amount,\n };\n redemptionRewards.push(reward);\n }\n }\n });\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userRedemptionRewards', content: redemptionRewards });\n }\n }\n }\n });\n}\nexport function clearUserStakingRedemptionRewards(state: GlobalStateInterface, dispatch: any) {\n let currentRewards = state.userRedemptionRewards;\n let clearedRewards: Reward[] = [];\n currentRewards.forEach((reward: Reward) => {\n const scrubbedReward = {\n uid: reward.uid,\n ticker: reward.ticker,\n amount: '0',\n };\n clearedRewards.push(scrubbedReward);\n });\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userRedemptionRewards', content: clearedRewards });\n }\n}\n\nexport function refreshUserStabilityRewards(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getUserStabilityPoolRewards(state);\n }, SLEEP_TIME_MED).then((rewardsResponse) => {\n if (!isErrorMsg(rewardsResponse) && state.walletAddress.length !== 0) {\n dispatch({ type: 'userStabilityRewards', content: rewardsResponse.data });\n }\n });\n}\nexport function clearUserStabilityRewards(state: GlobalStateInterface, dispatch: any) {\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userStabilityRewards', content: '0' });\n }\n}\n\nexport function refreshUserLiquidationRewards(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getUserStabilityPoolCollateralRewardsGain(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((rewardsResponse) => {\n if (!isErrorMsg(rewardsResponse) && typeof rewardsResponse.data !== 'string') {\n let liquidationRewards: Reward[] = [];\n rewardsResponse.data.forEach((dat: any) => {\n const collateralIds = getChainCollateralFromId(state.chainView, state.appVersion);\n const collateralId = collateralIds.find((id) => {\n const coin = getCoinFromUID(id);\n return (\n coin !== undefined &&\n coin.addresses[state.chainView] !== undefined &&\n coin.addresses[state.chainView].toLowerCase() === dat.address.toLowerCase()\n );\n });\n if (collateralId !== undefined) {\n const collateral = getCoinFromUID(collateralId);\n if (collateral !== undefined) {\n let ticker = collateral.ticker;\n let amount = dat.amount;\n const reward: Reward = {\n uid: collateral.uid,\n ticker: ticker,\n amount: amount,\n };\n liquidationRewards.push(reward);\n }\n }\n });\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userLiquidationRewards', content: liquidationRewards });\n }\n }\n });\n}\nexport function clearUserLiquidationRewards(state: GlobalStateInterface, dispatch: any) {\n let currentRewards = state.userLiquidationRewards;\n let clearedRewards: Reward[] = [];\n currentRewards.forEach((reward: Reward) => {\n const scrubbedReward = {\n uid: reward.uid,\n ticker: reward.ticker,\n amount: '0',\n };\n clearedRewards.push(scrubbedReward);\n });\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'userLiquidationRewards', content: clearedRewards });\n }\n}\n\nexport function refreshAllUserClaimableCollateral(state: GlobalStateInterface, dispatch: any) {\n if (state.chainView !== '') {\n const collateralList = getChainCollateralFromId(state.chainView, state.appVersion);\n collateralList.forEach((collId) => {\n refreshUserClaimableCollateral(collId, state, dispatch);\n });\n }\n}\n\nexport function refreshUserClaimableCollateral(\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) {\n const collateral = getCoinFromUID(uid);\n if (collateral !== undefined && state.chainView !== '') {\n runFuncUntilSuccess(async () => {\n return await getClaimableCollateral(collateral.addresses[state.chainView], state);\n }, SLEEP_TIME_MED).then((response) => {\n if (!isErrorMsg(response) && state.walletAddress.length !== 0) {\n const stateName = uid + 'ClaimableCollateral';\n dispatch({ type: stateName, content: response.data });\n }\n });\n }\n}\n\nexport const refreshStakingCoin = (chainView: string, appVersion: string, dispatch: any) => {\n const stakingCoin = getChainStakingCoinFromId(chainView, appVersion);\n if (stakingCoin !== undefined) {\n dispatch({ type: 'stakingCoin', content: stakingCoin });\n }\n};\n\nexport const refreshStabilityCoin = (chainView: string, appVersion: string, dispatch: any) => {\n const stabilityCoin = getChainStabilityCoinFromId(chainView, appVersion);\n if (stabilityCoin !== undefined) {\n dispatch({ type: 'stabilityCoin', content: stabilityCoin });\n }\n};\n\nexport const refreshStakingRewardCoin = (chainView: string, appVersion: string, dispatch: any) => {\n const stakingRewardCoin = getChainStakingRewardCoinFromId(chainView, appVersion);\n if (stakingRewardCoin !== undefined) {\n dispatch({ type: 'stakingRewardCoin', content: stakingRewardCoin });\n }\n};\n\nexport const refreshStabilityRewardCoin = (chainView: string, appVersion: string, dispatch: any) => {\n const stabilityRewardCoin = getChainStabilityRewardCoinFromId(chainView, appVersion);\n if (stabilityRewardCoin !== undefined) {\n dispatch({ type: 'stabilityRewardCoin', content: stabilityRewardCoin });\n }\n};\n\nexport const refreshCollateralPrice = async (\n uid: string,\n chainView: string,\n walletAddress: string,\n walletProvider: EthersProvider | undefined,\n appVersion: string,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && chainView !== '') {\n let collPriceResponse = await runFuncUntilSuccess(async () => {\n return await getCollateralPriceFromAggregator(\n collateralCoin.addresses[chainView],\n chainView,\n appVersion,\n walletProvider\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(collPriceResponse) &&\n isNumber(collPriceResponse.data) &&\n walletAddress.length !== 0\n ) {\n const collPrice = collPriceResponse.data;\n const stateName = uid + 'Price';\n dispatch({ type: stateName, content: collPrice });\n }\n }\n};\nexport const refreshUserCollateralBalance = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && state.chainView !== '') {\n let collUserBalance = await runFuncUntilSuccess(async () => {\n return await getTokenBalance(\n collateralCoin.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(collUserBalance) &&\n isNumber(collUserBalance.data) &&\n state.walletAddress.length !== 0\n ) {\n const collBalance = collUserBalance.data;\n const stateName = uid + 'UserBalance';\n dispatch({ type: stateName, content: collBalance });\n }\n }\n};\n\nexport const refreshOathv1UserBalance = async (state: GlobalStateInterface, dispatch: any) => {\n const oathv1 = getCoinFromUID('oathv1');\n if (oathv1 !== undefined && state.chainView !== '') {\n let oathv1UserBalance = await runFuncUntilSuccess(async () => {\n return await getTokenBalance(\n oathv1.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(oathv1UserBalance) &&\n isNumber(oathv1UserBalance.data) &&\n state.walletAddress.length !== 0\n ) {\n const oathv1Balance = oathv1UserBalance.data;\n dispatch({ type: 'oathv1UserBalance', content: oathv1Balance });\n }\n }\n};\n\nexport const refreshOathv2UserBalance = async (state: GlobalStateInterface, dispatch: any) => {\n const oathv2 = getCoinFromUID('oathv2');\n if (oathv2 !== undefined && state.chainView !== '') {\n let oathv2UserBalance = await runFuncUntilSuccess(async () => {\n return await getTokenBalance(\n oathv2.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(oathv2UserBalance) &&\n isNumber(oathv2UserBalance.data) &&\n state.walletAddress.length !== 0\n ) {\n const oathv2Balance = oathv2UserBalance.data;\n dispatch({ type: 'oathv2UserBalance', content: oathv2Balance });\n }\n }\n};\n\nexport const refreshCollateralStatus = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n const stabilityCoin = state.stabilityCoin;\n if (collateralCoin !== undefined && stabilityCoin !== undefined && state.chainView !== '') {\n let troveStatusResponse = await runFuncUntilSuccess(async () => {\n return await getTroveStatus(\n state.walletAddress,\n collateralCoin.addresses[state.chainView],\n stabilityCoin.addresses[state.chainView],\n state,\n undefined\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(troveStatusResponse) &&\n typeof troveStatusResponse.data !== 'string' &&\n state.walletAddress.length !== 0\n ) {\n const collStatus = troveStatusResponse.data.status;\n const collAmount = troveStatusResponse.data.coll;\n const collDebt = troveStatusResponse.data.debt;\n const stateStatusName = uid + 'Status';\n const stateCollAmountName = uid + 'CollateralAmount';\n const stateBorrowAmountName = uid + 'BorrowAmount';\n dispatch({ type: stateStatusName, content: collStatus });\n dispatch({ type: stateCollAmountName, content: collAmount });\n dispatch({ type: stateBorrowAmountName, content: collDebt });\n }\n }\n};\nexport const checkIfPositionIsOpen = async (\n uid: string,\n state: GlobalStateInterface,\n specificVersion: string\n) => {\n const collateralCoin = getCoinFromUID(uid);\n const stabilityCoin = state.stabilityCoin;\n if (collateralCoin !== undefined && stabilityCoin !== undefined && state.chainView !== '') {\n let troveStatusResponse = await runFuncUntilSuccess(async () => {\n return await getTroveStatus(\n state.walletAddress,\n collateralCoin.addresses[state.chainView],\n stabilityCoin.addresses[state.chainView],\n state,\n specificVersion\n );\n }, SLEEP_TIME_MED);\n if (\n !isErrorMsg(troveStatusResponse) &&\n typeof troveStatusResponse.data !== 'string' &&\n state.walletAddress.length !== 0\n ) {\n const collStatus = troveStatusResponse.data.status;\n if (collStatus === \"Active\") {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else {\n return false;\n }\n};\nexport const refreshCollateralMCR = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && state.chainView !== '') {\n let colMCRResponse = await runFuncUntilSuccess(async () => {\n return await getMinCollateralRatio(collateralCoin.addresses[state.chainView], state);\n }, SLEEP_TIME_MED);\n if (!isErrorMsg(colMCRResponse) && state.walletAddress.length !== 0) {\n const collMCR = colMCRResponse.data;\n const stateName = uid + 'MinCollateralRatio';\n dispatch({ type: stateName, content: collMCR });\n }\n }\n};\nexport const refreshCollateralCCR = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && state.chainView !== '') {\n let colCCRResponse = await runFuncUntilSuccess(async () => {\n return await getCritCollateralRatio(collateralCoin.addresses[state.chainView], state);\n }, SLEEP_TIME_MED);\n if (!isErrorMsg(colCCRResponse) && state.walletAddress.length !== 0) {\n const collCCR = colCCRResponse.data;\n const stateName = uid + 'CritCollateralRatio';\n dispatch({ type: stateName, content: collCCR });\n }\n }\n};\n\nexport const refreshCollateralTVL = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && state.chainView !== '') {\n let colTVLResponse = await runFuncUntilSuccess(async () => {\n return await getEntireSystemColl(\n collateralCoin.addresses[state.chainView],\n state.chainView, \n state.appVersion,\n state.walletProvider\n );\n }, SLEEP_TIME_MED);\n if (!isErrorMsg(colTVLResponse) && state.walletAddress.length !== 0) {\n const collTVL = colTVLResponse.data;\n const stateName = uid + 'TVL';\n dispatch({ type: stateName, content: collTVL });\n }\n }\n};\n\nexport const refreshCollateralDebt = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const collateralCoin = getCoinFromUID(uid);\n if (collateralCoin !== undefined && state.chainView !== '') {\n const debtCoin = getChainStabilityCoinFromId(state.chainView, state.appVersion);\n if (!debtCoin) {\n return;\n }\n let colDebtResponse = await runFuncUntilSuccess(async () => {\n return await getEntireSystemDebt(\n collateralCoin.addresses[state.chainView],\n debtCoin.addresses[state.chainView],\n state.chainView, \n state.appVersion,\n state.walletProvider\n );\n }, SLEEP_TIME_MED);\n if (!isErrorMsg(colDebtResponse) && state.walletAddress.length !== 0) {\n const collDebt = colDebtResponse.data;\n const stateName = uid + 'TotalDebt';\n dispatch({ type: stateName, content: collDebt });\n }\n }\n};\n\nexport const refreshCollateralLiquidationReserve = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const res = await getMinDebtAndCompensation(state.chainView, state.appVersion, state.walletProvider);\n if (!isErrorMsg(res)) {\n const { gasCompensation } = res.data as MinDebtAndCompensation;\n if (gasCompensation !== undefined && state.walletAddress.length !== 0) {\n const stateName = uid + 'LiquidationReserve';\n dispatch({ type: stateName, content: gasCompensation });\n }\n }\n};\n\nexport const refreshCollateralBorrowRate = async (\n uid: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n const res = await getBorrowingRateWithDecay(state.chainView, state.appVersion, state.walletProvider);\n if (!isErrorMsg(res) && state.walletAddress.length !== 0) {\n const stateName = uid + 'BorrowRate';\n dispatch({ type: stateName, content: res.data });\n }\n};\n\nexport function refreshCollateralTCR (uid:string, chainView:string, walletProvider:EthersProvider, appVersion: string, dispatch:any) {\n const token = getCoinFromUID(uid);\n if (token) {\n runFuncUntilSuccess(async () => {\n return await getTCR(token.addresses[chainView], appVersion, chainView, walletProvider);\n }).then((tcrRes) => {\n if (!isErrorMsg(tcrRes)) {\n dispatch({ type: `${uid}TotalCollateralRatio`, content: tcrRes.data });\n }\n });\n }\n}\n\nexport const getAllCollateralData = (chainId: string, state: GlobalStateInterface) => {\n const collateralIds = getChainCollateralFromId(chainId, state.appVersion);\n let allCollateralData: UserCollateralPositionData[] = [];\n collateralIds.forEach((collateralId: string) => {\n const collateralData = getCollateralData(collateralId, state);\n allCollateralData.push(collateralData);\n });\n return allCollateralData;\n};\n\nexport const getCollateralData = (uid: string, state: GlobalStateInterface) => {\n const collateralCoin = getCoinFromUID(uid);\n let address = '';\n if (collateralCoin !== undefined && state.chainView !== '') {\n address = collateralCoin.addresses[state.chainView];\n }\n let status = state[(uid + 'Status') as keyof GlobalStateInterface];\n status = typeof status === 'string' ? status : '';\n let collAmount = state[(uid + 'CollateralAmount') as keyof GlobalStateInterface];\n collAmount = typeof collAmount === 'string' ? collAmount : '';\n let borrowAmount = state[(uid + 'BorrowAmount') as keyof GlobalStateInterface];\n borrowAmount = typeof borrowAmount === 'string' ? borrowAmount : '';\n let collPrice = state[(uid + 'Price') as keyof GlobalStateInterface];\n collPrice = typeof collPrice === 'string' ? collPrice : '';\n let mcr = state[(uid + 'MinCollateralRatio') as keyof GlobalStateInterface];\n mcr = typeof mcr === 'string' ? mcr : '';\n let ccr = state[(uid + 'CritCollateralRatio') as keyof GlobalStateInterface];\n ccr = typeof ccr === 'string' ? ccr : '';\n let liqReserve = state[(uid + 'LiquidationReserve') as keyof GlobalStateInterface];\n liqReserve = typeof liqReserve === 'string' ? liqReserve : '';\n let borrowRate = state[(uid + 'BorrowRate') as keyof GlobalStateInterface];\n borrowRate = typeof borrowRate === 'string' ? borrowRate : '';\n\n const collMult = safeMult(collAmount, collPrice);\n let collateralRatio = safeDiv(collMult, borrowAmount);\n collateralRatio = typeof collateralRatio === 'string' ? collateralRatio : '';\n\n let data: UserCollateralPositionData = {\n uid: uid,\n address: address,\n status: status,\n collateralAmount: collAmount,\n borrowAmount: borrowAmount,\n collateralPrice: collPrice,\n minimumCollateralRatio: mcr,\n criticalCollateralRatio: ccr,\n liquidationReserve: liqReserve,\n borrowRate: borrowRate,\n collateralRatio: collateralRatio\n };\n\n return data;\n};\n\nexport const checkForUserOpenPositionOnVersion = async (state: GlobalStateInterface, dispatch: any, specificVersion: string) => {\n if (state.appVersion) {\n const collateralList = getChainCollateralFromId(state.chainView, specificVersion);\n for (let i = 0; i < collateralList.length; i++) {\n const isOpen = await checkIfPositionIsOpen(collateralList[i], state, specificVersion);\n if (isOpen) {\n dispatch({ type: `hasV${specificVersion}Position`, content: true });\n break;\n };\n }\n return;\n }\n};\n\nexport const initializeCollaterals = (state: GlobalStateInterface, dispatch: any) => {\n if (state.chainView !== '') {\n const collateralList = getChainCollateralFromId(state.chainView, state.appVersion);\n collateralList.forEach((collId) => {\n refreshCollateralStatus(collId, state, dispatch);\n refreshCollateralPrice(\n collId,\n state.chainView,\n state.walletAddress,\n state.walletProvider, \n state.appVersion,\n dispatch\n );\n refreshCollateralMCR(collId, state, dispatch);\n refreshCollateralCCR(collId, state, dispatch);\n refreshCollateralLiquidationReserve(collId, state, dispatch);\n refreshCollateralBorrowRate(collId, state, dispatch);\n refreshUserCollateralBalance(collId, state, dispatch);\n refreshCollateralTVL(collId, state, dispatch);\n refreshCollateralDebt(collId, state, dispatch);\n });\n }\n};\n\nexport const areCollateralPricesLoaded = (state: GlobalStateInterface) => {\n if (state.appVersion === '2_1') {\n return (\n state.btcPrice &&\n state.ethPrice &&\n state.wstethPrice\n )\n } else if (state.appVersion === '2') {\n return (\n state.btcPrice &&\n state.ethPrice\n )\n } else {\n return (\n state.btcPrice &&\n state.ethPrice &&\n state.opPrice\n )\n }\n}\n\nexport const editUserCollateralPosition = (\n uid: string,\n collateralAmount: string,\n borrowAmount: string,\n status: string,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n if (state.walletAddress.length !== 0) {\n dispatch({ type: uid + 'CollateralAmount', content: collateralAmount });\n dispatch({ type: uid + 'BorrowAmount', content: borrowAmount });\n dispatch({ type: uid + 'Status', content: status });\n refreshAllOpenTroves(state, dispatch);\n }\n};\n\nexport const editUserCollateralBalance = (\n uid: string,\n collateralAmountChange: string,\n isIncreasing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) => {\n let collateralAmount = '';\n let collBalance = state[(uid + 'UserBalance') as keyof GlobalStateInterface];\n if (\n collBalance !== undefined &&\n typeof collBalance === 'string' &&\n state.walletAddress.length !== 0\n ) {\n if (isIncreasing) {\n collateralAmount = safeAdd(collBalance, collateralAmountChange);\n } else {\n collateralAmount = safeSub(collBalance, collateralAmountChange);\n }\n dispatch({ type: uid + 'UserBalance', content: collateralAmount });\n }\n};\n\nexport const refreshBeethovenPrices = (\n stakingCoin: Coin | undefined,\n chainView: string,\n appVersion: string,\n dispatch: any\n) => {\n getBeethovenPoolSnapshotData().then((res) => {\n if (res !== undefined) {\n const snapshots = res;\n const lastPrice = snapshots[snapshots.length - 1].sharePrice;\n if (lastPrice !== undefined) {\n dispatch({ type: 'stakingCoinPrice', content: lastPrice });\n }\n }\n });\n getBeethovenTokenData().then((res) => {\n const chainConfig = getChainFromId(chainView);\n if (\n res !== undefined &&\n chainView !== '' &&\n stakingCoin !== undefined &&\n chainConfig !== undefined\n ) {\n const configType = getConfigKeyFromVersion(appVersion);\n if (!configType) {return};\n const stabilityRewardId = chainConfig[configType].tokenUIDs.stabilityReward;\n const stabilityRewardCoin = getCoinFromUID(stabilityRewardId);\n if (stabilityRewardCoin !== undefined) {\n const stabilityRewardCoinAddr = stabilityRewardCoin.addresses[chainView];\n if (stabilityRewardCoinAddr !== undefined) {\n let oathPrice;\n for (let i = 0; i < res.length; i++) {\n if (res[i].address.toLowerCase() === stabilityRewardCoinAddr.toLowerCase()) {\n // oath\n oathPrice = res[i].price.toString();\n dispatch({ type: 'stabilityRewardCoinPrice', content: oathPrice });\n }\n if (oathPrice !== undefined) {\n break;\n }\n }\n }\n }\n }\n });\n};\n\nexport const refreshStabilityApr = (\n stabilityRewardCoinPrice: string,\n totalStabilityDeposits: string,\n chainView: string,\n walletProvider: EthersProvider | undefined,\n appVersion: string,\n dispatch: any\n) => {\n getStabilityRewardsPerSecond(chainView, appVersion, walletProvider).then((rpsRes) => {\n if (\n !isErrorMsg(rpsRes) &&\n isNumber(stabilityRewardCoinPrice) &&\n isNumber(totalStabilityDeposits) &&\n !isEqualTo(totalStabilityDeposits, '0')\n ) {\n const rps = rpsRes.data;\n const numerator = safeMult(stabilityRewardCoinPrice, rps);\n const denominator = totalStabilityDeposits;\n const returnPerSecond = safeDiv(numerator, denominator);\n const secondsPerYear = '31536000';\n const apr = safeMult(returnPerSecond, secondsPerYear);\n dispatch({ type: 'stabilityApr', content: apr });\n }\n });\n};\n\nexport const getTvl = (state: GlobalStateInterface) => {\n if (state.appVersion === '2_1') {\n if (\n state.chainView !== '' &&\n state.btcPrice !== '' &&\n state.btcTVL !== '' &&\n state.ethPrice !== '' &&\n state.ethTVL !== '' &&\n state.wstethPrice !== '' &&\n state.wstethTVL !== '' &&\n state.totalStabilityDeposits !== '' &&\n state.totalStakingDeposits !== '' &&\n state.stakingCoinPrice !== ''\n ) {\n let totalTvl = '';\n \n const btc = safeMult(state.btcPrice, state.btcTVL);\n const eth = safeMult(state.ethPrice, state.ethTVL);\n const wsteth = safeMult(state.wstethPrice, state.wstethTVL);\n const stabilityPool = state.totalStabilityDeposits;\n const stakingPool = safeMult(state.stakingCoinPrice, state.totalStakingDeposits);\n \n totalTvl = safeAdd(btc, eth);\n totalTvl = safeAdd(totalTvl, wsteth);\n totalTvl = safeAdd(totalTvl, stabilityPool);\n totalTvl = safeAdd(totalTvl, stakingPool);\n \n return {\n btc: btc,\n eth: eth,\n wsteth: wsteth,\n stabilityPool: stabilityPool,\n stakingPool: stakingPool,\n total: totalTvl,\n };\n } else {\n return {\n btc: '',\n eth: '',\n wsteth: '',\n stabilityPool: '',\n stakingPool: '',\n total: '',\n };\n }\n } else if (state.appVersion === '2') {\n if (\n state.chainView !== '' &&\n state.btcPrice !== '' &&\n state.btcTVL !== '' &&\n state.ethPrice !== '' &&\n state.ethTVL !== '' &&\n state.totalStabilityDeposits !== '' &&\n state.totalStakingDeposits !== '' &&\n state.stakingCoinPrice !== ''\n ) {\n let totalTvl = '';\n \n const btc = safeMult(state.btcPrice, state.btcTVL);\n const eth = safeMult(state.ethPrice, state.ethTVL);\n const stabilityPool = state.totalStabilityDeposits;\n const stakingPool = safeMult(state.stakingCoinPrice, state.totalStakingDeposits);\n \n totalTvl = safeAdd(btc, eth);\n totalTvl = safeAdd(totalTvl, stabilityPool);\n totalTvl = safeAdd(totalTvl, stakingPool);\n \n return {\n btc: btc,\n eth: eth,\n stabilityPool: stabilityPool,\n stakingPool: stakingPool,\n total: totalTvl,\n };\n } else {\n return {\n btc: '',\n eth: '',\n stabilityPool: '',\n stakingPool: '',\n total: '',\n };\n }\n } else {\n if (\n state.chainView !== '' &&\n state.btcPrice !== '' &&\n state.btcTVL !== '' &&\n state.ethPrice !== '' &&\n state.ethTVL !== '' &&\n state.opPrice !== '' &&\n state.opTVL !== '' &&\n state.totalStabilityDeposits !== '' &&\n state.totalStakingDeposits !== '' &&\n state.stakingCoinPrice !== ''\n ) {\n let totalTvl = '';\n \n const btc = safeMult(state.btcPrice, state.btcTVL);\n const eth = safeMult(state.ethPrice, state.ethTVL);\n const op = safeMult(state.opPrice, state.opTVL);\n const stabilityPool = state.totalStabilityDeposits;\n const stakingPool = safeMult(state.stakingCoinPrice, state.totalStakingDeposits);\n \n totalTvl = safeAdd(btc, eth);\n totalTvl = safeAdd(totalTvl, op);\n totalTvl = safeAdd(totalTvl, stabilityPool);\n totalTvl = safeAdd(totalTvl, stakingPool);\n \n return {\n btc: btc,\n eth: eth,\n op: op,\n stabilityPool: stabilityPool,\n stakingPool: stakingPool,\n total: totalTvl,\n };\n } else {\n return {\n btc: '',\n eth: '',\n stabilityPool: '',\n stakingPool: '',\n total: '',\n };\n }\n }\n};\n\nexport const getTvlFromExtenal = (state: GlobalStateInterface) => {\n if (\n state.chainView !== '' &&\n state.btcPrice !== '' &&\n state.btcTVL !== '' &&\n state.ethPrice !== '' &&\n state.ethTVL !== '' &&\n state.opPrice !== '' &&\n state.opTVL !== '' &&\n state.totalStabilityDeposits !== '' &&\n state.totalStakingDeposits !== '' &&\n state.stakingCoinPrice !== ''\n ) {\n let totalTvl = '';\n\n const btc = safeMult(state.btcPrice, state.btcTVL);\n const eth = safeMult(state.ethPrice, state.ethTVL);\n const op = safeMult(state.opPrice, state.opTVL);\n const stabilityPool = state.totalStabilityDeposits;\n const stakingPool = safeMult(state.stakingCoinPrice, state.totalStakingDeposits);\n\n totalTvl = safeAdd(btc, eth);\n totalTvl = safeAdd(totalTvl, op);\n totalTvl = safeAdd(totalTvl, stabilityPool);\n totalTvl = safeAdd(totalTvl, stakingPool);\n\n return {\n btc: btc,\n eth: eth,\n op: op,\n stabilityPool: stabilityPool,\n stakingPool: stakingPool,\n total: totalTvl,\n };\n } else {\n return {\n btc: '',\n eth: '',\n stabilityPool: '',\n stakingPool: '',\n total: '',\n };\n }\n};\n\nexport const getStakingApr = async (\n totalStakingDeposits: string,\n stakingTokenPrice: string,\n days: number,\n chainView: string,\n appVersion: string,\n walletProvider: EthersProvider\n) => {\n if (days === 0) {\n return undefined;\n }\n\n const derivePositiveDebtChange = (raw: any) => {\n if (raw !== undefined) {\n let total = '0';\n for (let i = 0; i < raw.length; i++) {\n const change = raw[i];\n if (change.transaction === undefined || change.transaction.timestamp === undefined) {\n break;\n }\n const debtChange = change.debtChange;\n const borrowingFee = change.borrowingFee;\n if (typeof debtChange === 'string' && isGreaterThan(debtChange, '0')) {\n total = safeAdd(total, borrowingFee);\n }\n }\n return total;\n } else {\n return undefined;\n }\n };\n const deriveDailyBOathFees = (raw: any) => {\n if (raw !== undefined && raw.length > 0) {\n let total = '0';\n for (let i = 1; i <= days; i++) {\n if (isLessThan((raw.length - i).toString(), '0')) {\n return undefined;\n }\n const current = raw[raw.length - i];\n if (current.fees24h !== undefined && isNumber(current.fees24h)) {\n total = safeAdd(total, current.fees24h);\n } else {\n return undefined;\n }\n }\n return total;\n } else {\n return undefined;\n }\n };\n\n if (totalStakingDeposits === '' || stakingTokenPrice === '') {\n return undefined;\n }\n\n const rawBeetData = await getBeethovenPoolSnapshotData();\n const test = await getLastDaysOfTroveChanges(7, chainView, appVersion);\n\n const positiveDebtChange = derivePositiveDebtChange(test.data);\n const boathFees = deriveDailyBOathFees(rawBeetData);\n\n const stakingCoin = getChainStakingRewardCoinFromId(chainView, appVersion);\n if (stakingCoin === undefined) {\n return undefined;\n }\n const boathTotalSupply = await getTotalSupply(stakingCoin.addresses[chainView], walletProvider);\n if (isErrorMsg(boathTotalSupply)) {\n return undefined;\n }\n const ethosBOathRatio = safeDiv(totalStakingDeposits, boathTotalSupply.data);\n\n if (\n positiveDebtChange !== undefined &&\n boathFees !== undefined &&\n totalStakingDeposits !== undefined &&\n isGreaterThan(totalStakingDeposits, '0')\n ) {\n const dailyYield = safeMult(\n safeDiv('365', days.toString()),\n safeDiv(\n safeAdd(safeMult(positiveDebtChange, ethosBOathRatio), boathFees),\n safeMult(safeMult(totalStakingDeposits, stakingTokenPrice), ethosBOathRatio)\n )\n );\n return dailyYield;\n } else {\n return undefined;\n }\n};\n\nexport function refreshUserStERNVaultDeposits(state: GlobalStateInterface, dispatch: any) {\n runFuncUntilSuccess(async () => {\n return await getUserStERNVaultDeposits(state.walletAddress, state);\n }, SLEEP_TIME_MED).then((userDeposits) => {\n if (\n !isErrorMsg(userDeposits) &&\n state.walletAddress.length !== 0 &&\n state.walletAddress.length !== 0\n ) {\n dispatch({ type: 'userStERNDeposits', content: userDeposits.data.deposits });\n dispatch({ type: 'userStERNDepositsInERN', content: userDeposits.data.depositsInERN });\n }\n });\n}\n\nexport function refreshUserStERNVaultUSD(stabilityCoinPrice: string, userStERNDepositsInERN:string, dispatch: any) {\n dispatch({ type: 'userStERNDepositsUSD', content: safeMult(stabilityCoinPrice, userStERNDepositsInERN) });\n}\n\nexport const refreshStERNAnalytics = async (chainView:string, appVersion: string, dispatch:any) => {\n const chainConfig = getChainConfigFromId(chainView, appVersion);\n if (chainConfig !== undefined && chainConfig.contracts && chainConfig.contracts.stERNVaultAddr.length !== 0) {\n const response = await getReaperVaultInfo(chainConfig.contracts.stERNVaultAddr, chainView);\n if (response.success) {\n dispatch({ type: 'stERNApy', content: response.data.yields.apy.toString() });\n dispatch({ type: 'totalStERNDeposits', content: safeDiv(response.data.tvl.tvl.toString(), response.data.tokens.lpToken.price.toString()) });\n }\n }\n}\n\nexport const refreshStabilityCoinPrice = async (stabilityCoin:Coin, chainView:string, dispatch:any) => {\n if (stabilityCoin !== undefined && stabilityCoin.addresses[chainView]) {\n const address = stabilityCoin.addresses[chainView];\n const response = await getTokenPrice(address, chainView);\n if (response.success) {\n const coin = response.data[`${address}:${chainView}`.toLowerCase()]\n dispatch({ type: 'stabilityCoinPrice', content: coin.price.toString() });\n }\n }\n}\n\nexport function editTotalStERNVaultDeposits(\n amount: string,\n isDepositing: boolean,\n state: GlobalStateInterface,\n dispatch: any\n) {\n let finalAmount;\n if (isDepositing) {\n finalAmount = safeAdd(state.totalStERNDeposits, amount);\n } else {\n finalAmount = safeSub(state.totalStERNDeposits, amount);\n }\n if (state.walletAddress.length !== 0) {\n dispatch({ type: 'totalStERNDeposits', content: finalAmount });\n }\n}\n\nexport async function refreshUserTroveChangess (walletAddress:string, chainView:string, appVersion:string, dispatch:any) {\n const troveChanges = await getUserTroveChanges(walletAddress, chainView, appVersion);\n if (troveChanges.success && troveChanges.data !== undefined) {\n troveChanges.data.forEach((trove:TroveSubgraphUserDataInterface) => {\n const coin = getCoinFromAddress(trove.collateralAddress, chainView);\n dispatch({ type: coin?.uid + 'UserTroveChanges', content: trove.changes });\n })\n }\n}\n\nexport async function getUnderlyingVaults(appVersion:string, chainView:string, dispatch:any) {\n const availableCollateral = getChainCollateralFromId(chainView, appVersion);\n availableCollateral.forEach((uid:string) => {\n const coin:Coin|undefined = getCoinFromUID(uid);\n if (appVersion === '2_1') {\n if (coin && coin.vaultsV2_1) {\n getReaperVaultInfo(coin.vaultsV2_1[chainView], chainView).then((res) => {\n if (!isErrorMsg(res)) {\n dispatch({ type: uid + 'VaultData', content: res.data });\n }\n });\n }\n } else if (appVersion === '2') {\n if (coin && coin.vaultsV2) {\n getReaperVaultInfo(coin.vaultsV2[chainView], chainView).then((res) => {\n if (!isErrorMsg(res)) {\n dispatch({ type: uid + 'VaultData', content: res.data });\n }\n });\n }\n } else {\n if (coin && coin.vaults) {\n getReaperVaultInfo(coin.vaults[chainView], chainView).then((res) => {\n if (!isErrorMsg(res)) {\n dispatch({ type: uid + 'VaultData', content: res.data });\n }\n });\n }\n }\n })\n}\n\nexport async function refreshAllOpenTroves (state: GlobalStateInterface, dispatch: any) {\n getTopBorrowers(state.chainView, state.appVersion).then((res) => {\n if (res.success && res.data !== undefined) {\n dispatch({ type: 'topBorrowers', content: res.data.slice(0, 20) });\n organizeAllTroves(res.data, state, dispatch);\n }\n })\n}\n\nexport async function organizeAllTroves (allTroves:any[], state:GlobalStateInterface, dispatch:any) {\n const helperIdx:any = {};\n allTroves.forEach((trove:any) => {\n const coin = getCoinFromAddress(trove.collateralAddress, state.chainView);\n if (coin) {\n const uid = coin.uid;\n if (!helperIdx[uid]) {\n helperIdx[uid] = [];\n }\n const collateralPrice = state[uid + `Price` as keyof GlobalStateInterface];\n if (typeof collateralPrice === 'string') {\n const collMult = safeMult(trove.collateral, collateralPrice);\n const collateralRatio = safeDiv(collMult, trove.debt);\n helperIdx[uid].push(\n {\n uid,\n collateralRatio,\n ...trove\n }\n )\n }\n }\n })\n for (const uid in helperIdx) {\n const arrayLength = helperIdx[uid].length;\n const sortedArrayWithRanks = helperIdx[uid]\n .slice()\n .sort((a:any, b:any) => safeSub(a.collateralRatio, b.collateralRatio))\n .map((trove:any, index:number) => {\n if (trove.owner.id === state.walletAddress.toLowerCase()) {\n dispatch({ type: uid + 'UserTroveRank', content: arrayLength - index });\n }\n return (\n {...trove, rank: arrayLength - index}\n )\n });\n dispatch({ type: uid + 'AllOpenTroves', content: sortedArrayWithRanks });\n }\n }\n\nexport function calculateLeverageData(\n collAmount: string,\n targetCollRatio: string,\n borrowRate: string,\n liquidationReserve: string,\n collPrice: string,\n ernPrice: string\n) {\n try {\n let totalTroveCollateralUSD = '0';\n let totalTroveDebt = '0';\n let totalERNBorrowed = '0';\n let ernBorrowedInFirstIteration = '0';\n let collAmountInHandUSD = safeMult(collAmount, collPrice);\n let ernInWallet = '0';\n let borrowFee = '0';\n const iterationArray = [];\n for (let i = 0; i < LeverageConfig.maxIterations; i++) {\n totalTroveCollateralUSD = safeAdd(totalTroveCollateralUSD, collAmountInHandUSD);\n totalTroveDebt = safeDiv(totalTroveCollateralUSD, targetCollRatio);\n if (i === 0) {\n const ernMintedInIteration = safeSub(safeDiv(collAmountInHandUSD, targetCollRatio), liquidationReserve);\n const borrowFeeInIteraion = safeSub('1', borrowRate);\n ernInWallet = safeMult(ernMintedInIteration, borrowFeeInIteraion);\n ernBorrowedInFirstIteration = ernInWallet;\n } else {\n const ernMintedInIteration = safeDiv(collAmountInHandUSD, targetCollRatio);\n const borrowFeeInIteraion = safeSub('1', borrowRate);\n ernInWallet = safeMult(ernMintedInIteration, borrowFeeInIteraion);\n }\n totalERNBorrowed = safeAdd(totalERNBorrowed, ernInWallet);\n collAmountInHandUSD = safeMult(safeMult(ernInWallet, ernPrice), safeSub('1', LeverageConfig.dexFee)); //this will be the coll amount in hand after ernInWallet is swapped for coll\n const totalTroveCollateral = safeDiv(totalTroveCollateralUSD, collPrice);\n borrowFee = safeMult(safeSub(totalTroveDebt, liquidationReserve), borrowRate);\n if (i >= LeverageConfig.minIterations - 1) {\n iterationArray.push(\n {\n ernInWallet,\n totalTroveDebt,\n totalTroveCollateral,\n totalERNBorrowed,\n borrowFee,\n ernBorrowedInFirstIteration,\n iteration: i + 1\n }\n )\n } \n }\n return iterationArray\n } catch {\n return undefined;\n }\n}\n\nexport function isEnoughERNNeededForDelever (\n ernInput: string,\n totalDebt: string,\n totalCollateral: string,\n collateralRatio: string,\n liqReserve: string,\n dexFee: string,\n collPrice:string,\n ernPrice:string,\n minBorrow:string\n ) {\n const totalCollateralUSD = safeMult(totalCollateral, collPrice);\n let hasReachedMinDebt = false;\n let collInHand = '0';\n let totalDebtLeft = totalDebt;\n let ernInHand = ernInput;\n let totalCollateralLeft = totalCollateralUSD;\n for (let i = 0; i < 18; i++) {\n if (i !== 0) {\n if (hasReachedMinDebt) {\n ernInHand = safeAdd(ernInHand, safeMult(safeDiv(collInHand, ernPrice), safeSub('1', dexFee)));\n } else {\n ernInHand = safeMult(safeDiv(collInHand, ernPrice), safeSub('1', dexFee));\n }\n }\n const minThresholdToClose = safeSub(totalDebtLeft, liqReserve);\n if (isGreaterThanOrEqual(ernInHand, minThresholdToClose)) {\n return {\n success: true,\n data: i + 1\n };\n }\n if (hasReachedMinDebt) {\n break;\n }\n //netDebt cannot go under 90 and totalDebt cannot go under 100. \n //Contract will not be able to adjust trove once these minimums are hit\n //and transaction will revert if it doesnt have enough ERN to close on the next iter\n const netDebtAfterRepayment = safeSub(safeSub(totalDebtLeft, liqReserve), ernInHand);\n totalDebtLeft = safeSub(totalDebtLeft, ernInHand);\n if (isLessThan(netDebtAfterRepayment, minBorrow)) {\n ernInHand = safeSub(minBorrow, netDebtAfterRepayment);\n totalDebtLeft = safeAdd(minBorrow, liqReserve);\n hasReachedMinDebt = true;\n }\n collInHand = safeSub(totalCollateralLeft, safeMult(totalDebtLeft, collateralRatio));\n totalCollateralLeft = safeSub(totalCollateralLeft, collInHand);\n }\n return {\n success: false,\n data: 0\n };\n}\n\nexport function checkIfLeverageIsDisabled (uid:string|undefined, state:GlobalStateInterface) {\n if (uid) {\n const tcr = state[`${uid}TotalCollateralRatio` as keyof GlobalStateInterface];\n const ccr = state[`${uid}CritCollateralRatio` as keyof GlobalStateInterface];\n if (typeof tcr === 'string' && typeof ccr === 'string' && state.stabilityCoinPrice !== '') {\n return (\n isLessThanOrEqual(tcr, ccr) || isLessThan(state.stabilityCoinPrice, LeverageConfig.minStabilityCoinPrice)\n )\n }\n }\n}","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCog(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 1706.667,\n height: 1706.667,\n viewBox: \"0 0 1280 1280\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M603.3 1C562.4 3.7 512 11.4 506 15.9c-6.1 4.4-6 3.6-6 51.9l-.1 44.3-2.2.9c-1.2.4-9.8 3.1-19.2 6-19 5.8-38.3 12.8-55.5 20.3-13.6 5.8-42 19.9-50.5 25l-6 3.6-31-30.8c-17-17-32-31.4-33.2-32-3-1.5-9.7-1.4-13.6.3-4.1 1.7-25.6 17.1-41.2 29.5-39.4 31.2-81.7 73.5-112.6 112.6-18.6 23.5-29.7 39.7-30.9 45-1.8 7.8-1 8.8 32.5 42.5l31.4 31.5-3.6 6c-5.1 8.6-19.2 37-25 50.5-7.5 17.2-14.5 36.5-20.3 55.5-2.9 9.3-5.6 18-6 19.2l-.9 2.2-44.3.1c-48.5 0-47.4-.1-52.1 6.2-3.4 4.6-9.8 42.6-13.4 79.3-2.4 25.2-2.4 83.8 0 109 3.6 36.7 10 74.8 13.5 79.4 4.6 6.2 3.6 6.1 52 6.1l44.3.1.9 2.2c.4 1.2 3.1 9.8 6 19.2 5.8 19 12.8 38.3 20.3 55.5 5.8 13.6 19.9 42 25 50.5l3.6 6-30.8 31c-17 17-31.4 32-32 33.2-1.5 3-1.4 9.7.3 13.6 1.7 4.1 17.1 25.6 29.5 41.2 31.2 39.4 73.5 81.7 112.6 112.6 23.5 18.6 39.7 29.7 45 30.9 7.8 1.8 8.8 1 42.5-32.5l31.5-31.4 6 3.6c8.6 5.1 37 19.2 50.5 25 17.2 7.5 36.5 14.5 55.5 20.3 9.4 2.9 18 5.6 19.2 6l2.2.9.1 44.3c0 48.5-.1 47.4 6.2 52.1 4.6 3.4 42.6 9.8 79.3 13.4 25.2 2.4 83.8 2.4 109 0 36.7-3.6 74.8-10 79.4-13.5 6.2-4.6 6.1-3.6 6.1-52l.1-44.3 2.2-.9c1.2-.4 9.9-3.1 19.2-6 19-5.8 38.3-12.8 55.5-20.3 13.6-5.8 42-19.9 50.5-25l6-3.6 31 30.8c17.1 17 32 31.4 33.2 32 3 1.5 9.7 1.4 13.6-.3 4.1-1.7 25.6-17.1 41.2-29.5 39.4-31.2 81.7-73.5 112.6-112.6 18.6-23.5 29.7-39.7 30.9-45 1.8-7.8 1-8.8-32.5-42.5l-31.4-31.5 3.6-6c5.1-8.6 19.2-37 25-50.5 7.5-17.2 14.5-36.5 20.3-55.5 2.9-9.4 5.6-18 6-19.2l.9-2.2 44.3-.1c48.5 0 47.4.1 52.1-6.2 3.4-4.6 9.8-42.6 13.4-79.3 2.4-25.2 2.4-83.8 0-109-3.6-36.7-10-74.8-13.5-79.4-4.6-6.2-3.6-6.1-52-6.1l-44.3-.1-.9-2.2c-.4-1.2-3.1-9.9-6-19.2-5.8-19-12.8-38.3-20.3-55.5-5.8-13.6-19.9-42-25-50.5l-3.6-6 30.8-31c17-17.1 31.4-32 32-33.2 1.5-3 1.4-9.7-.3-13.6-1.7-4.1-17.1-25.6-29.5-41.2-31.2-39.4-73.5-81.7-112.6-112.6-23.5-18.6-39.7-29.7-45-30.9-7.8-1.8-8.8-1-42.5 32.5l-31.5 31.4-6-3.6c-8.6-5.1-37-19.2-50.5-25-17.2-7.5-36.5-14.5-55.5-20.3-9.3-2.9-18-5.6-19.2-6l-2.2-.9-.1-44.3c0-48.5.1-47.4-6.2-52.1-4.6-3.4-43.2-9.9-78.3-13.2-20-1.9-73.3-2.7-92.2-1.5zm66 344.1c101.7 9.2 193.5 73.7 238.3 167.4 17 35.5 26.1 71.5 28.3 111.8C940 698.2 916.5 770 869.1 828 822 885.8 754.6 923.3 679 934c-20.8 2.9-57.2 2.9-78 0-66-9.3-124.2-38.2-170.5-84.5S355.3 745 346 679c-2.9-20.8-2.9-57.2 0-78 10.7-75.6 48.2-143 106-190.1 61.9-50.5 136.4-73.1 217.3-65.8z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCog);\nexport default __webpack_public_path__ + \"static/media/cog.cf613ad2.svg\";\nexport { ForwardRef as ReactComponent };","import { useContext } from 'react';\nimport { Context } from '../Store';\nimport Button from './Button';\nimport '../styling/Button.css';\nimport { ReactComponent as CogIcon } from '../assets/icons/cog.svg';\n\ninterface ConnectWalletButtonProps {\n className?: string;\n}\n\nconst SettingsButton = (props: ConnectWalletButtonProps) => {\n const [, dispatch]: any = useContext(Context);\n const { className = '' } = props;\n\n return (\n {\n dispatch({ type: 'isSettingsOpen', content: true });\n }}\n className={'settings-button icon-button ' + className}\n >\n \n \n );\n};\n\nexport default SettingsButton;\n","import Select from 'react-select';\n\nimport { DropDownOption } from '../storage/Types';\nimport '../styling/DropDown.css';\n\ninterface DropDownProps {\n options: DropDownOption[] | [];\n submit?: any;\n\n value: any;\n onChange: any;\n isMulti: boolean;\n isSearchable: boolean;\n placeholder?: string;\n className?: any;\n}\n\nconst DropDown = (props: DropDownProps) => {\n const { className = '' } = props;\n\n return (\n \n );\n};\n\nexport default DropDown;\n","import { useState, useContext, useEffect } from 'react';\nimport { ReactComponent as HamburgerIcon } from '../assets/icons/hamburger.svg';\nimport { Context } from '../Store';\n\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport Button from './Button';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport { routes } from '../storage/Routes';\n\nimport { ReactComponent as EthosLogo } from '../assets/ethos-logo.svg';\n\nimport '../styling/HamburgerMenu.css';\nimport { checkShowNetworkWarning } from '../functions/stateHelpers';\nimport SettingsButton from './SettingsButton';\nimport DropDown from './DropDown';\nimport { getChainFromId } from '../functions/chainHelpers';\nimport { DropDownOption } from '../storage/Types';\n\nexport default function HamburgerMenu() {\n const [state, dispatch]: any = useContext(Context);\n const [navbarOpen, setNavbarOpen] = useState(false);\n const [versionOptions, setVersionOptions] = useState([]);\n const [selectedVersion, setSelectedVersion] = useState(undefined);\n\n const navigate = useNavigate();\n\n useEffect(() => {\n if (state.appVersion !== '' && versionOptions.length > 0) {\n const findVersionInSelectOptions = (version: string) => {\n for (let i = 0; i < versionOptions.length; i++) {\n if (versionOptions[i].value === version) {\n return versionOptions[i];\n }\n }\n };\n const version = findVersionInSelectOptions(state.appVersion);\n if (version) {\n setSelectedVersion(version);\n }\n }\n }, [state.appVersion, versionOptions])\n\n useEffect(() => {\n if (state.chainView !== '') {\n const chain = getChainFromId(state.chainView);\n const options = [];\n for (const key in chain) {\n if (key.includes('config')) {\n const version = key.split('V').pop();\n if (version) {\n options.push({\n label: `Version: ${version.replace('_', '.')}`,\n value: version.toLowerCase()\n })\n }\n }\n }\n setVersionOptions(options)\n }\n }, [state.chainView])\n\n const handleSelectedVersion = (version:DropDownOption) => {\n dispatch({ type: 'appVersion', content: version.value })\n navigate('/dashboard');\n }\n\n const handleToggle = () => {\n setNavbarOpen(!navbarOpen);\n };\n const closeMenu = () => {\n setNavbarOpen(false);\n };\n\n return (\n \n );\n}\n","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCaretDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_12277)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.4491 13.0894C11.1237 13.4148 10.596 13.4148 10.2706 13.0894L5.55658 8.37531C5.23114 8.04991 5.23114 7.52228 5.55658 7.19683C5.88201 6.8714 6.40966 6.8714 6.73509 7.19683L10.8599 11.3216L14.9846 7.19683C15.3101 6.8714 15.8377 6.8714 16.1632 7.19683C16.4886 7.52228 16.4886 8.04991 16.1632 8.37531L11.4491 13.0894Z\",\n fill: \"#08001C\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_12277\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\",\n transform: \"translate(0.859375)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCaretDown);\nexport default __webpack_public_path__ + \"static/media/caret-down.8ebb311a.svg\";\nexport { ForwardRef as ReactComponent };","import { useState, useEffect } from 'react';\nimport '../styling/LoadingSpinner.css';\n\ninterface LoadingSpinnerProps {\n className?: any;\n}\n\nconst LoadingSpinner = (props: LoadingSpinnerProps) => {\n const [loadingText, setLoadingSpinner] = useState('');\n let { className = '' } = props;\n\n useEffect(() => {\n const frameSets = {\n setA: ['◜ ', '◠', ' ◝', ' ◞', '◡', '◟ '],\n setB: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠇', '⠏'],\n };\n const frames = frameSets['setB'];\n let loadStr = frames[0];\n let counter = 0;\n const interval = setInterval(() => {\n loadStr = frames[counter];\n counter = (counter + 1) % frames.length;\n setLoadingSpinner(loadStr);\n }, 100);\n return () => clearInterval(interval);\n }, []);\n\n return
{loadingText}
;\n //return \n};\n\nexport default LoadingSpinner;\n","import { useContext, useEffect, useState } from 'react';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport { formatPositiveNumber, isErrorMsg, isNumber } from '../functions/formatters';\nimport { isLessThan, safeAdd, safeMult } from '../functions/safeMath';\nimport { getRecoveryModePriceThreshold } from '../functions/blockchainRouter';\nimport { Coin } from '../storage/Types';\nimport { Context } from '../Store';\nimport '../styling/CollateralStatusBox.css';\nimport LoadingSpinner from './LoadingSpinner';\n\nimport { ReactComponent as CaretDown } from '../assets/icons/caret-down.svg';\n\ninterface CollateralStatusBoxProps {\n uid: string;\n price: string;\n tvl: string;\n ccr: string;\n mcr: string;\n td:string;\n className?: string;\n}\n\nfunction CollateralStatusBox(props: CollateralStatusBoxProps) {\n const [state]: any = useContext(Context);\n const [coin, setCoin] = useState(undefined);\n const [healthStatus, setHealthStatus] = useState('');\n const [isExpanded, setIsExpanded] = useState(false);\n const [rmpt, setRmpt] = useState('');\n const [tvlUsd, setTvlUsd] = useState('');\n\n let { className = '', uid = '', price = '', tvl = '', ccr = '', mcr = '', td = '' } = props;\n\n useEffect(() => {\n const collCoin = getCoinFromUID(uid);\n setCoin(collCoin);\n }, [uid]);\n\n\n useEffect(() => {\n if (state[`${uid}TotalCollateralRatio`] !== '' && ccr !== '') {\n if (isLessThan(state[`${uid}TotalCollateralRatio`], ccr)) {\n setHealthStatus('danger');\n } else if (isLessThan(state[`${uid}TotalCollateralRatio`], safeAdd(ccr, '0.2'))) {\n setHealthStatus('warning');\n } else {\n setHealthStatus('healthy');\n }\n }\n }, [state, uid, ccr]);\n\n useEffect(() => {\n const coll = getCoinFromUID(uid);\n if (\n coll !== undefined &&\n state.chainView !== '' &&\n state.stabilityCoin !== undefined &&\n state.walletProvider !== undefined\n ) {\n const collAddr = coll.addresses[state.chainView];\n const debtAddr = state.stabilityCoin.addresses[state.chainView];\n getRecoveryModePriceThreshold(\n collAddr,\n debtAddr,\n ccr,\n state.chainView, \n state.appVersion,\n state.walletProvider\n ).then((result) => {\n if (!isErrorMsg(result)) {\n setRmpt(result.data);\n }\n });\n }\n }, [uid, state.stabilityCoin, state.chainView, ccr, state.walletProvider, state.appVersion]);\n\n useEffect(() => {\n if (isNumber(tvl) && isNumber(price)) {\n setTvlUsd(safeMult(tvl, price));\n }\n }, [tvl, price]);\n\n const buildTcrBox = () => {\n if (healthStatus !== '') {\n return (\n {\n setIsExpanded(true);\n }}\n >\n {state[`${uid}TotalCollateralRatio`] !== '' ? (\n formatPositiveNumber(safeMult(state[`${uid}TotalCollateralRatio`], '100'), 2) +\n ' % ' +\n (isExpanded ? 'Total Collateral Ratio' : 'TCR')\n ) : (\n \n )}\n \n );\n } else {\n return <>;\n }\n };\n\n const buildHealthStatusMessage = () => {\n switch (healthStatus) {\n case 'healthy':\n return 'The pool is healthy.';\n case 'warning':\n return 'This pool is nearing recovery mode.';\n case 'danger':\n return 'This pool is in recovery mode.';\n default:\n return '';\n }\n };\n\n return state[`${uid}TotalCollateralRatio`] !== '' && ccr !== '' && mcr !== '' && price !== '' ? (\n {\n setIsExpanded(true);\n }}\n onBlur={() => {\n setIsExpanded(false);\n }}\n >\n {buildTcrBox()}\n \n
\n
\n
\n {coin !== undefined ? coin.ticker : ''}\n
\n
\n {price !== '' ? '$' + formatPositiveNumber(price, 2) : ''}\n
\n
\n {isExpanded ? (\n
\n ) : (\n
\n \n
\n )}\n
\n {isExpanded ? (\n
\n \n {buildHealthStatusMessage()}\n
\n
\n
\n
RM
\n
\n
\n
\n {isLessThan(state[`${uid}TotalCollateralRatio`], ccr) ? 'On' : 'Off'}\n
\n
Recovery Mode
\n
\n {'Activates when the ' +\n (coin !== undefined ? coin.ticker + ' ' : '') +\n \"pool's total collateral ratio falls below the critical collateral ratio of \" +\n formatPositiveNumber(safeMult(ccr, '100'), 2) +\n '%. '}\n
\n
\n
\n
\n
\n
TCR
\n
\n
\n
\n {formatPositiveNumber(safeMult(state[`${uid}TotalCollateralRatio`], '100'), 2) + ' %'}\n
\n
Total Collateral Ratio
\n
\n {'The ratio of the entire ' +\n (coin !== undefined ? coin.ticker + ' ' : '') +\n \"pool's collateral and debt. A 150% TCR would indicate there is $1.50 of \" +\n (coin !== undefined ? coin.ticker + ' ' : '') +\n 'backing each ERN minted by the pool.'}\n
\n
\n
\n
\n
\n
MCR
\n
\n
\n
\n {formatPositiveNumber(safeMult(mcr, '100'), 2) + ' %'}\n
\n
Minimum Collateral Ratio
\n
\n {\n 'The minimum required amount of collateral to debt ratio required to maintain an active position in Ethos Reserve.'\n }\n
\n
\n
\n
\n
\n
CCR
\n
\n
\n
\n {formatPositiveNumber(safeMult(ccr, '100'), 2) + ' %'}\n
\n
Critical Collateral Ratio
\n
\n {'The TCR below which a given collateral pool will enter Recovery Mode.'}\n
\n
\n
\n
\n
\n
RMT
\n
\n
\n
\n {'$' + formatPositiveNumber(rmpt, 2)}\n
\n
Recovery Mode Price Threshold
\n
\n {'The dollar value of this collateral at which the total collateral ratio ' +\n 'will drop below ' +\n formatPositiveNumber(safeMult(ccr, '100'), 2) +\n '% and the ' +\n ' system will enter recovery mode.'}\n
\n
\n
\n
\n
\n
TDA
\n
\n
\n
\n {formatPositiveNumber(td, 2)} {state.stabilityCoin ? state.stabilityCoin.ticker : ''}\n
\n
Total Debt Amount
\n
\n {`The amount of ${state.stabilityCoin ? state.stabilityCoin.ticker : ''} borrowed from this pool.`}\n
\n
\n
\n
\n
\n
TVL
\n
\n
\n
\n {'$' + formatPositiveNumber(tvlUsd, 2)}\n
\n
Total Value Locked
\n
\n {'The dollar value of all collateral in this pool.'}\n
\n
\n
\n \n ) : (\n <>\n )}\n \n \n ) : (\n <>\n );\n}\n\nexport default CollateralStatusBox;\n","import { ReactElement, useContext, useEffect, useMemo, useState } from 'react';\nimport { Context } from '../Store';\nimport { Route, Routes, useNavigate } from 'react-router-dom';\nimport HamburgerMenu from './HamburgerMenu';\n\nimport ConnectWalletButton from './ConnectWalletButton';\nimport { routes } from '../storage/Routes';\nimport '../styling/Header.css';\n\nimport { ReactComponent as EthosLogoSrc } from '../assets/ethos-logo.svg';\nimport { getChainCollateralFromId, getChainFromId } from '../functions/chainHelpers';\nimport CollateralStatusBox from './CollateralStatusBox';\nimport SettingsButton from './SettingsButton';\nimport DropDown from './DropDown';\nimport { DropDownOption } from '../storage/Types';\n\ninterface HeaderProps {\n className?: string;\n}\n\nfunction Header(props: HeaderProps) {\n const [state, dispatch]: any = useContext(Context);\n const [collateralUIDs, setCollateralUIDs] = useState([]);\n const [versionOptions, setVersionOptions] = useState([]);\n const [selectedVersion, setSelectedVersion] = useState(undefined);\n\n const { className = '' } = props;\n\n const navigate = useNavigate();\n\n useMemo(() => {\n if (\n state.chainView !== '' &&\n state.walletProvider !== undefined &&\n state.chainView === state.connectedChain\n ) {\n const collUIDs = getChainCollateralFromId(state.chainView, state.appVersion);\n setCollateralUIDs(collUIDs);\n }\n }, [state.chainView, state.walletProvider, state.connectedChain, state.appVersion]);\n\n const buildCollateralStatusBoxes = () => {\n const boxes: ReactElement[] = [];\n collateralUIDs.forEach((uid) => {\n boxes.push(\n \n );\n });\n return boxes;\n };\n\n useEffect(() => {\n if (state.appVersion !== '' && versionOptions.length > 0) {\n const findVersionInSelectOptions = (version: string) => {\n for (let i = 0; i < versionOptions.length; i++) {\n if (versionOptions[i].value === version) {\n return versionOptions[i];\n }\n }\n };\n const version = findVersionInSelectOptions(state.appVersion);\n if (version) {\n setSelectedVersion(version);\n }\n }\n }, [state.appVersion, versionOptions])\n\n useEffect(() => {\n if (state.chainView !== '') {\n const chain = getChainFromId(state.chainView);\n const options = [];\n for (const key in chain) {\n if (key.includes('config')) {\n const version = key.split('V').pop();\n if (version) {\n options.push({\n label: `Version: ${version.replace('_', '.')}`,\n value: version.toLowerCase()\n })\n }\n }\n }\n setVersionOptions(options)\n }\n }, [state.chainView])\n\n const handleSelectedVersion = (version:DropDownOption) => {\n dispatch({ type: 'appVersion', content: version.value });\n navigate('/dashboard');\n }\n\n return (\n \n
\n {!state.isMobile ? (\n
\n
\n \n \n \n
\n
\n ) : (\n
\n

\n \n {routes.map((route, index) => (\n \n ))}\n \n

\n
\n )}\n {!state.isMobile && (\n
\n
\n
\n {buildCollateralStatusBoxes()}\n
\n
\n
\n )}\n {!state.isMobile ? (\n <>\n
\n {handleSelectedVersion(version)}} \n isMulti={false} \n isSearchable={false} \n />\n \n {/*supportedChains.length > 1 && */}\n \n
\n \n ) : (\n \n )}\n
\n \n );\n}\n\nexport default Header;\n","var _style, _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgHelp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"1em\",\n viewBox: \"0 0 320 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \"svg{fill:#000000}\")), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHelp);\nexport default __webpack_public_path__ + \"static/media/help.6c671bc8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgEdit(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.9048 2.52499C14.2539 1.87412 13.1986 1.87412 12.5477 2.52499L3.95299 11.1197C3.64044 11.4323 3.46484 11.8562 3.46484 12.2982V16.6588C3.46484 17.1237 3.8417 17.5005 4.30651 17.5005L17.6346 17.5C18.0948 17.5 18.4679 17.1269 18.4679 16.6667C18.4679 16.2064 18.0948 15.8333 17.6346 15.8333H11.0246L18.4403 8.41757C19.0911 7.76667 19.0911 6.7114 18.4403 6.06052L14.9048 2.52499ZM8.66754 15.8333L17.2618 7.23903L13.7262 3.7035L5.13151 12.2982V15.8338C6.31018 15.8338 7.48889 15.8333 8.66754 15.8333Z\",\n fill: \"#08001C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEdit);\nexport default __webpack_public_path__ + \"static/media/edit.a0af0572.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as HelpIcon } from '../assets/icons/help.svg';\nimport '../styling/ToolTip.css';\n\ninterface ToolTipProps {\n tooltipDirection: string;\n children: JSX.Element | JSX.Element[] | null;\n className?: string;\n}\n\nconst ToolTip = (props: ToolTipProps) => {\n\n\n const buildTagLabel = () => {\n return (\n
\n
{props.children}
\n
\n \n
\n
\n );\n };\n return buildTagLabel();\n};\n\nexport default ToolTip;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgArrowUp(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4491 3.03009C11.1237 2.70465 10.596 2.70465 10.2706 3.03008L5.55658 7.74413C5.23114 8.06957 5.23114 8.59721 5.55658 8.92263C5.88202 9.24804 6.40965 9.24804 6.73509 8.92263L10.0265 5.63118V16.6667C10.0265 17.127 10.3996 17.5 10.8599 17.5C11.3201 17.5 11.6932 17.127 11.6932 16.6667V5.63119L14.9846 8.92263C15.3101 9.24804 15.8377 9.24804 16.1632 8.92263C16.4886 8.59721 16.4886 8.06957 16.1632 7.74413L11.4491 3.03009Z\",\n fill: \"#08001C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowUp);\nexport default __webpack_public_path__ + \"static/media/arrow-up.b244d450.svg\";\nexport { ForwardRef as ReactComponent };","import '../styling/PositionsPage.css';\nimport { useContext } from 'react';\nimport { Context } from '../Store';\nimport { Link, NavLink } from 'react-router-dom';\nimport LoadingSpinner from './LoadingSpinner';\nimport Button from './Button';\nimport ToolTip from './Tooltip';\nimport { ReactComponent as EditIcon } from '../assets/icons/edit.svg';\nimport { getCoinFromUID, getIconSrcFromCoin } from '../functions/coinHelpers';\nimport { Coin } from '../storage/Types';\nimport { formatPositiveNumber, isErrorMsg, isNumber } from '../functions/formatters';\nimport {\n bottomNPercentofNum,\n isGreaterThan,\n isLessThan,\n isLessThanOrEqual,\n isZero,\n safeAdd,\n safeDiv,\n safeMult,\n safeSub,\n} from '../functions/safeMath';\nimport { ReactComponent as PositionsIcon } from '../assets/icons/arrow-up.svg';\nimport { claimCollateral } from '../functions/blockchainRouter';\nimport { getUserLiquidationPrice } from '../functions/stateHelpers';\n\ninterface PositionBoxProps {\n collateralId: string;\n status?: string;\n isBoxMode?: boolean;\n className?: string;\n}\n\nfunction PositionBox(props: PositionBoxProps) {\n let { isBoxMode = false, status = '', className = '' } = props;\n\n const [state, dispatch]: any = useContext(Context);\n\n const claimable = state[props.collateralId + 'ClaimableCollateral'];\n const hasClaimableColl = isNumber(claimable) && isGreaterThan(claimable, '0');\n\n const stateCollAmount = state[props.collateralId + 'CollateralAmount'];\n const stateCollPrice = state[props.collateralId + 'Price'];\n const stateBorrowAmount = state[props.collateralId + 'BorrowAmount'];\n const stateMinCollateralRatio = state[props.collateralId + 'MinCollateralRatio'];\n const stateCritCollateralRatio = state[props.collateralId + 'CritCollateralRatio'];\n\n let collateralCoin: Coin | undefined = undefined;\n const foundCollateralCoin = getCoinFromUID(props.collateralId);\n if (foundCollateralCoin !== undefined) {\n collateralCoin = foundCollateralCoin;\n }\n\n let collateralRatio: string = '';\n if (props.collateralId !== '') {\n if (isNumber(stateCollAmount) && isNumber(stateCollPrice) && isNumber(stateBorrowAmount)) {\n if (!isZero(stateBorrowAmount)) {\n const collateralValue = safeMult(stateCollAmount, stateCollPrice);\n const div = safeDiv(collateralValue, stateBorrowAmount);\n collateralRatio = div;\n }\n }\n }\n\n const determineThreatStatus = (ccr: string, collateralRatio: string) => {\n if (isLessThan(collateralRatio, safeAdd(ccr, '0.2'))) {\n if (isLessThanOrEqual(collateralRatio, ccr)) {\n return 'danger';\n }\n return 'warning';\n }\n return 'healthy';\n };\n\n const determineRedemptionThreatStatus = () => {\n const troveRank = state[`${props.collateralId}UserTroveRank`];\n const totalTroves = state[`${props.collateralId}AllOpenTroves`].length.toString();\n const bottom15Percent = bottomNPercentofNum('.15', totalTroves);\n const bottom10Percent = bottomNPercentofNum('.10', totalTroves);\n if (bottom10Percent === undefined || bottom15Percent === undefined) {\n return '';\n }\n const gapUntilLast = safeSub(totalTroves, troveRank);\n if (isLessThanOrEqual(gapUntilLast, bottom15Percent)) {\n if (isLessThanOrEqual(collateralRatio, bottom10Percent)) {\n return 'danger';\n }\n return 'warning';\n }\n return 'healthy';\n };\n\n let threatStatus: string = '';\n let redemptionThreatStatus: string = '';\n let critCollateralRatio: string = '';\n let minCollateralRatio: string = '';\n\n if (\n isNumber(collateralRatio) &&\n isNumber(stateMinCollateralRatio) &&\n isNumber(stateCritCollateralRatio)\n ) {\n const threatEvaluation = determineThreatStatus(stateCritCollateralRatio, collateralRatio);\n threatStatus = threatEvaluation;\n critCollateralRatio = stateCritCollateralRatio;\n minCollateralRatio = stateMinCollateralRatio;\n }\n\n if (\n isNumber(state[`${props.collateralId}UserTroveRank`]) &&\n state[`${props.collateralId}AllOpenTroves`].length\n ) {\n redemptionThreatStatus = determineRedemptionThreatStatus();\n }\n\n let liquidationPrice: string = '';\n\n if (state.chainView !== '' && stateCollAmount !== '' && stateBorrowAmount !== '') {\n const mcr = stateMinCollateralRatio;\n liquidationPrice = getUserLiquidationPrice(stateCollAmount, stateBorrowAmount, mcr);\n }\n\n const showPositionBox = () => {\n //thing is not showing because collateral ratio update isn't caught\n return threatStatus !== ''; //props.collateralRatio !== '';\n };\n\n const buildPositionLabel = (collateralID: string) => {\n const collateralCoin = getCoinFromUID(collateralID);\n if (collateralCoin !== undefined) {\n const coinIcon = getIconSrcFromCoin(collateralCoin);\n return (\n
\n \"\"\n
{collateralCoin.label} Position
\n
\n );\n }\n };\n\n const buildThreatTag = (threatStatus: string, redemptionThreatStatus: string) => {\n if (threatStatus === 'danger' || redemptionThreatStatus === 'danger') {\n return
Warning
;\n } else if (threatStatus === 'warning' || redemptionThreatStatus === 'warning') {\n return
Warning
;\n } else if (threatStatus === 'healthy' && redemptionThreatStatus === 'healthy') {\n return
Healthy
;\n } else {\n return <>;\n }\n };\n\n const buildCollateralRatioMessage = (threatStatus: string, ccr: string, mcr: string) => {\n let ccrMessage = '';\n let mcrMessage = '';\n if (ccr !== '') {\n ccrMessage = ' of ' + formatPositiveNumber(safeMult(ccr, '100')) + '%';\n }\n if (mcr !== '') {\n mcrMessage = ' of ' + formatPositiveNumber(safeMult(mcr, '100')) + '%';\n }\n\n switch (threatStatus) {\n case 'danger':\n return (\n 'Your position is below the critical collateral ratio' +\n ccrMessage +\n ' meaning it may be subject to partial liquidation in the event Ethos enters recovery mode or' +\n ' full liquidation if your collateral ratio falls below the minimum collateral ratio' +\n mcrMessage +\n '. Be extra cautious to ensure your position has enough collateral by repaying debt or' +\n ' adding additional collateral.'\n );\n case 'warning':\n return (\n 'Your position is nearing the critical collateral ratio' +\n ccrMessage +\n ' meaning it may be subject to partial liquidation in the event Ethos enters recovery mode.' +\n ' You can raise your collateral ratio by adding more collateral or repaying debt.'\n );\n case 'healthy':\n return '';\n default:\n return '';\n }\n };\n\n const buildClaimableCollateralRow = () => {\n if (hasClaimableColl) {\n return (\n
\n
\n
Unclaimed Collateral
\n
\n You have collateral remaining from a partial liquidation available to claim.\n
\n
\n
\n {\n if (collateralCoin !== undefined && state.chainView !== '') {\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const currentTxMessages = [\n {\n inProgress: 'Check your wallet to claim collateral.',\n success: 'Successfully claimed collateral.',\n failure: 'Claim failed or the transaction was canceled.',\n pending: 'Waiting to claim collateral.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n claimCollateral(collateralCoin.addresses[state.chainView], state).then(\n (result) => {\n if (!isErrorMsg(result)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n }\n );\n }\n }}\n >\n Claim Collateral\n \n
\n
\n );\n } else {\n return <>;\n }\n };\n\n const buildCollateralRatioMessageBox = (threatStatus: string) => {\n if (threatStatus === 'healthy' || threatStatus === '') {\n return <>;\n } else {\n return (\n \n Collateral Ratio\n \n {buildCollateralRatioMessage(threatStatus, critCollateralRatio, minCollateralRatio)}\n \n \n );\n }\n };\n\n const buildLowerRow = (threatStatus: string) => {\n if (threatStatus === 'healthy' || threatStatus === '') {\n return (\n
\n \n \n {'$'}\n {formatPositiveNumber(liquidationPrice, 2)}\n \n Liquidation Price\n
\n {'When ' +\n (collateralCoin !== undefined ? collateralCoin.ticker : 'the collateral') +\n ' reaches this price your position will be liquidated.'}\n
\n
\n \n \n #{state[`${props.collateralId}UserTroveRank`]} of {state[`${props.collateralId}AllOpenTroves`].length}\n \n
\n Collateral Ratio Rank\n \n \n CR Rank assesses your trove's collateral ratio in comparison to others of the same asset. \n The troves with the lowest collateral ratios will have lower CR ranks and will be redeemed first.\n E.g. the 30th of 30 troves is most susceptible to redemption.\n \n \n
\n
\n {'The lowest CR ranked positions are the first to be redeemed.'}\n
\n \n \n );\n } else {\n return (\n
\n \n \n {'$'}\n {formatPositiveNumber(liquidationPrice, 2)}\n \n Liquidation Price\n
\n \n \n #{state[`${props.collateralId}UserTroveRank`]} of {state[`${props.collateralId}AllOpenTroves`].length}\n \n Collateral Ratio Rank\n \n {buildCollateralRatioMessageBox(threatStatus)}\n \n );\n }\n };\n\n if (status === 'Closed By Liquidation') {\n return (\n \n
\n
\n {buildPositionLabel(props.collateralId)}\n
{'-'}
\n {'Closed by Liquidation'}\n
\n
\n
\n
\n {'Your collateral fell under the minimum required to maintain your ' +\n 'position and has been liquidated. ' +\n (hasClaimableColl ? 'You may claim any remaining collateral.' : '')}\n {/*' Read more about liquidations [here]'*/}\n
\n {state.appVersion === '2_1' &&\n
\n \n
\n }\n
\n {buildClaimableCollateralRow()}\n \n );\n } else if (status === 'Closed By Redemption') {\n return (\n \n
\n
\n {buildPositionLabel(props.collateralId)}\n
{'-'}
\n {'Closed by Redemption'}\n
\n
\n
\n
\n {'Your collateral has been redeemed due to being one of the lowest collateralized positions. ' +\n (hasClaimableColl ? 'You may claim any remaining collateral.' : '')}\n
\n {state.appVersion === '2_1' &&\n
\n \n
\n }\n
\n {buildClaimableCollateralRow()}\n \n );\n } else if (status === 'Closed By Owner' && hasClaimableColl) {\n return (\n \n
\n
\n {buildPositionLabel(props.collateralId)}\n
{'-'}
\n {'Closed'}\n
\n {state.appVersion === '2_1' &&\n
\n \n
\n }\n
\n {buildClaimableCollateralRow()}\n \n );\n }\n\n return !isBoxMode ? (\n showPositionBox() ? (\n \n
\n
\n {buildPositionLabel(props.collateralId)}\n
{buildThreatTag(threatStatus, redemptionThreatStatus)}
\n
\n
\n
Borrowed Amount
\n
\n {isNumber(stateBorrowAmount) ? (\n formatPositiveNumber(stateBorrowAmount)\n ) : (\n \n )}{' '}\n {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n
\n
\n
\n
\n \n {collateralRatio !== '' ? (\n formatPositiveNumber(safeMult(collateralRatio, '100'), 5)\n ) : (\n \n )}\n {' %'}\n CR\n
\n
\n
My Collateral
\n
\n {isNumber(stateCollAmount) ? (\n formatPositiveNumber(stateCollAmount)\n ) : (\n \n )}{' '}\n {collateralCoin !== undefined ? collateralCoin.ticker : ''}\n {isNumber(stateCollPrice) && isNumber(stateCollAmount)\n ? ' ($' +\n formatPositiveNumber(safeMult(stateCollPrice, stateCollAmount), 2) +\n ')'\n : ''}\n
\n
\n
\n
\n
\n \n }\n >\n Edit\n \n \n
\n \n {buildLowerRow(threatStatus)}\n {buildClaimableCollateralRow()}\n \n ) : (\n <>\n )\n ) : isGreaterThan(stateCollAmount, '0') ? (\n \n
\n
\n {buildPositionLabel(props.collateralId)}\n {buildThreatTag(threatStatus, redemptionThreatStatus)}\n
\n \n
\n \n
\n \n
\n
\n
\n
\n
Borrowed Amount
\n
\n {isNumber(stateBorrowAmount) ? (\n formatPositiveNumber(stateBorrowAmount, 5)\n ) : (\n \n )}{' '}\n {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n
\n
\n
\n
My Collateral
\n
\n {isNumber(stateCollAmount) ? (\n formatPositiveNumber(stateCollAmount, 6)\n ) : (\n \n )}{' '}\n {collateralCoin !== undefined ? collateralCoin.ticker : ''}\n {isNumber(stateCollPrice) && isNumber(stateCollAmount)\n ? ' ($' +\n formatPositiveNumber(safeMult(stateCollPrice, stateCollAmount), 2) +\n ')'\n : ''}\n
\n
\n
\n\n
\n
\n \n {collateralRatio !== '' ? (\n formatPositiveNumber(safeMult(collateralRatio, '100'), 5)\n ) : (\n \n )}\n {' %'}\n CR\n
\n {(state[`${props.collateralId}UserTroveRank`] && state[`${props.collateralId}AllOpenTroves`]) &&\n
\n #{state[`${props.collateralId}UserTroveRank`]} of {state[`${props.collateralId}AllOpenTroves`].length}\n CR Rank\n \n \n CR Rank assesses your trove's collateral ratio in comparison to others of the same asset. \n The troves with the lowest collateral ratios will have lower CR ranks and will be redeemed first.\n E.g. the 30th of 30 troves is most susceptible to redemption.\n \n \n
\n }\n
\n
\n \n
\n
\n
\n {'$'}\n {formatPositiveNumber(liquidationPrice, 2)}\n
\n
Liquidation Price
\n
\n {'When ' +\n (collateralCoin !== undefined ? collateralCoin.ticker : 'the collateral') +\n ' reaches this price your position will be liquidated.'}\n
\n
\n {buildCollateralRatioMessageBox(threatStatus)}\n
\n {buildClaimableCollateralRow()}\n \n ) : (\n \n {collateralCoin !== undefined && state.stabilityCoin !== undefined && (\n
\n
\n
\n \n
\n
\n
\n Open {collateralCoin.ticker} Position\n
\n
\n
\n {state.appVersion === '2_1' ? \n 'Deposit ' +\n collateralCoin.ticker +\n ' to borrow ' +\n state.stabilityCoin.ticker +\n '.'\n :\n 'Switch over to Ethos V2.1 to open a new position.'\n }\n
\n
\n {state.appVersion === '2_1' &&\n
\n \n
\n }\n
\n )}\n \n );\n}\n\nexport default PositionBox;\n","import { ethers } from 'ethers';\nimport { ChainNativeCurrencyInterface } from '../storage/Types';\n\ndeclare const window: any;\nconst DEBUG_MODE = false;\n\nexport async function connectToNetwork(\n chainIdHex: string,\n chainName: string,\n nativeCurrency: ChainNativeCurrencyInterface,\n rpcUrl: string,\n blockExplorerUrl: string\n) {\n if (window.ethereum !== undefined) {\n if (chainIdHex === '0x1') {\n window.ethereum\n .request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: chainIdHex,\n },\n ],\n })\n .catch(() => {});\n } else {\n window.ethereum\n .request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: chainIdHex,\n chainName: chainName,\n nativeCurrency: nativeCurrency,\n rpcUrls: [rpcUrl],\n blockExplorerUrls: [blockExplorerUrl],\n },\n ],\n })\n .catch(() => {});\n }\n }\n}\n\nexport async function checkBrowserWallet() {\n try {\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const signer = provider.getSigner();\n const addr = await signer.getAddress();\n return {\n address: addr,\n provider: provider,\n };\n } catch (error) {\n DEBUG_MODE && console.log(error);\n return {\n address: undefined,\n provider: undefined,\n };\n }\n}\n\nexport async function connectBrowserWallet() {\n try {\n let addresses = await window.ethereum.request({ method: 'eth_requestAccounts' });\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const connectedChain = await window.ethereum.request({ method: 'eth_chainId' });\n return {\n address: ethers.utils.getAddress(addresses[0]),\n provider: provider,\n connectedChain: connectedChain,\n };\n } catch (error) {\n DEBUG_MODE && console.log(error);\n return {\n address: undefined,\n provider: undefined,\n connectedChain: undefined,\n };\n }\n}\n\nexport async function requestWalletPermissions() {\n await window.ethereum.request({\n method: 'wallet_requestPermissions',\n params: [\n {\n eth_accounts: {},\n },\n ],\n });\n}\n\nexport function buildBatchWalletProvider(chainRpc: string) {\n return new ethers.providers.JsonRpcBatchProvider(chainRpc);\n}\n\nexport function saveTheme(theme: string) {\n localStorage.setItem('theme', theme);\n}\nexport function retrieveTheme() {\n return localStorage.getItem('theme');\n}\n\nexport function saveHamburgerMenuPosition(position: string) {\n localStorage.setItem('hamburgerMenuPosition', position);\n}\nexport function retrieveHamburgerMenuPosition() {\n return localStorage.getItem('hamburgerMenuPosition');\n}\n\nexport function saveAutoBrowserWallet(position: boolean) {\n localStorage.setItem('autoBrowserWallet', position.toString());\n}\nexport function retrieveAutoBrowserWallet() {\n return localStorage.getItem('autoBrowserWallet');\n}\n\nexport function readEthosV2IsLiveModal() {\n localStorage.setItem('readEthosV2.1IsLiveModal', 'true');\n}\nexport function retrieveReadEthosV2IsLiveModal() {\n return localStorage.getItem('readEthosV2.1IsLiveModal');\n}","import { useContext } from 'react';\nimport { connectToNetwork } from '../functions/browser';\n\nimport '../styling/NetworkWarning.css';\nimport '../styling/Modal.css';\nimport { Context } from '../Store';\nimport { getChainFromId } from '../functions/chainHelpers';\nimport Button from './Button';\nimport { defaultChain } from '../storage/Chains';\n\ninterface SwitchNetworkButtonProps {\n className?: string;\n}\n\nfunction SwitchNetworkButton(props: SwitchNetworkButtonProps) {\n const [state]: any = useContext(Context);\n\n let { className = '' } = props;\n\n const connectToChainView = () => {\n const chain = state.currentPage === \"migrate\" ? getChainFromId(state.chainView) : defaultChain;\n if (chain !== undefined && chain.nativeCurrency !== undefined) {\n if (state.walletType === 'browser') {\n connectToNetwork(\n chain.chainId.hex,\n chain.label,\n chain.nativeCurrency,\n chain.defaultRpc,\n chain.explorerUrl\n );\n } else if (state.walletType === 'walletConnect') {\n }\n }\n };\n return (\n
\n \n
\n );\n}\nexport default SwitchNetworkButton;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.0312 11.3443L14.7452 16.0584C15.0706 16.3838 15.5983 16.3838 15.9237 16.0584C16.2491 15.7329 16.2491 15.2053 15.9237 14.8798L11.2097 10.1658L15.9237 5.45177C16.2491 5.12634 16.2491 4.5987 15.9237 4.27327C15.5983 3.94782 15.0706 3.94782 14.7452 4.27327L10.0312 8.98732L5.31711 4.27325C4.99168 3.94782 4.46404 3.94782 4.13861 4.27325C3.81317 4.59869 3.81317 5.12632 4.13861 5.45177L8.85262 10.1658L4.13861 14.8799C3.81317 15.2053 3.81317 15.7329 4.13861 16.0584C4.46404 16.3838 4.99168 16.3838 5.31711 16.0584L10.0312 11.3443Z\",\n fill: \"#08001C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgX);\nexport default __webpack_public_path__ + \"static/media/x.2daa0993.svg\";\nexport { ForwardRef as ReactComponent };","import '../../styling/Modal.css';\n\nimport { ReactComponent as XIcon } from '../../assets/icons/x.svg';\n\ninterface ModalProps {\n handleClose: () => void;\n children?: any;\n className?: string;\n classNameBody?: string;\n classNameHeader?: string;\n title?: string;\n}\n\nconst Modal = (props: ModalProps) => {\n const {\n className = '',\n classNameBody = 'padding-full',\n classNameHeader = '',\n title = '',\n } = props;\n\n return (\n
\n {\n event.stopPropagation();\n }}\n className={'modal ' + className}\n >\n
\n
{title}
\n \n \n
\n
\n
{props.children}
\n \n \n );\n};\n\nexport default Modal;\n","import { useContext, useEffect, useState } from 'react';\nimport Modal from './Modal';\nimport { Context } from '../../Store';\nimport { getCoinFromUID } from '../../functions/coinHelpers';\nimport Button from '../Button';\nimport { getChainCollateralFromId } from '../../functions/chainHelpers';\nimport { camelCaseToWords, epochToDate, toFixedDecimals, getFirstWord } from '../../functions/formatters';\nimport { Coin, TroveSubgraphUserChangesInterface } from '../../storage/Types';\n\ninterface CollateralChangesModalProps {\n isOpen:boolean;\n handleClose?: () => void;\n className?: string;\n}\n\nconst CollateralChangesModal = (props: CollateralChangesModalProps) => {\n const {\n isOpen = false,\n handleClose = () => {},\n } = props;\n\n const [state]: any = useContext(Context);\n const [selectedCollateralId, setSelectedCollateralId] = useState(\"btc\");\n const [selectedCollateral, setSelectedCollateral] = useState(undefined);\n\n useEffect(() => {\n if (selectedCollateralId !== \"\") {\n setSelectedCollateral(getCoinFromUID(selectedCollateralId));\n }\n }, [selectedCollateralId])\n\n const buildTroveChanges = () => {\n return (\n state[`${selectedCollateralId}UserTroveChanges`].map((change:TroveSubgraphUserChangesInterface, idx:number) => {\n return( \n \n {getFirstWord(camelCaseToWords(change.troveOperation))}\n {toFixedDecimals(change.collateralChange, state.isMobile ? 8 : undefined)} {selectedCollateral !== undefined ? selectedCollateral.ticker : ''}\n {toFixedDecimals(change.debtChange, 2)} {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n {!state.isMobile &&\n <>\n {toFixedDecimals(change.collateralAfter, state.isMobile ? 8 : undefined)} {selectedCollateral !== undefined ? selectedCollateral.ticker : ''}\n {toFixedDecimals(change.debtAfter, 2)} {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n \n }\n {epochToDate(change.timestamp)}\n \n )\n })\n )\n };\n\n const buildCollateralSelectButtons = () => {\n const availableCollateral = getChainCollateralFromId(state.chainView, state.appVersion);\n\n const buildButton = (coinId: string) => {\n const coin = getCoinFromUID(coinId);\n if (coin !== undefined) {\n return (\n \n }\n className={\n 'collateral-select-button border-full' +\n (selectedCollateralId === coinId ? ' selected' : '')\n }\n key={'coll-button-' + coin.label}\n text={!state.isMobile ? coin.label : ''}\n onButtonClick={() => {\n setSelectedCollateralId(coin.uid);\n }}\n />\n );\n } else {\n return
;\n }\n };\n\n if (availableCollateral !== undefined) {\n return (\n
\n
\n {availableCollateral.map((v) => buildButton(v))}\n
\n
\n );\n } else {\n return <>;\n }\n };\n\n return (\n <>\n {isOpen ? (\n \n
\n
\n {buildCollateralSelectButtons()}\n
\n {state[`${selectedCollateralId}UserTroveChanges`].length > 0 ?\n \n \n \n \n \n \n {!state.isMobile &&\n <>\n \n \n \n }\n \n \n \n \n {buildTroveChanges()}\n \n
TypeCollateral ChangeDebt ChangeCollateral LeftDebt LeftDate
\n :\n No transactions found.\n }\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default CollateralChangesModal;","import '../styling/PositionsPage.css';\nimport { ReactElement, useContext, useState } from 'react';\nimport { Context } from '../Store';\nimport { NavLink } from 'react-router-dom';\nimport Button from './Button';\n\nimport PositionBox from './PositionBox';\nimport { getChainCollateralFromId } from '../functions/chainHelpers';\nimport { checkShowNetworkWarningForEthos, isThereAnEmptyCollateralPosition } from '../functions/stateHelpers';\nimport { ReactComponent as PositionsIcon } from '../assets/icons/arrow-up.svg';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport CollateralChangesModal from './modals/CollateralChangesModal';\n\ninterface PositionsPageProps {\n className?: string;\n}\n\nfunction PositionsPage(props: PositionsPageProps) {\n const [state, dispatch]: any = useContext(Context);\n const [isCollateralChangesModalOpen, setIsCollateralChangesModalOpen] = useState(false);\n\n let { className = '' } = props;\n\n const isLoadingPage = state.btcStatus === '' && state.ethStatus === '' && state.opStatus === '' && state.wstethStatus === '';\n const showPositions =\n state.btcStatus === 'Active' ||\n state.ethStatus === 'Active' ||\n state.opStatus === 'Active' ||\n state.wstethStatus === 'Active' ||\n state.btcStatus === 'Closed By Liquidation' ||\n state.ethStatus === 'Closed By Liquidation' ||\n state.opStatus === 'Closed By Liquidation' ||\n state.wstethStatus === 'Closed By Liquidation' ||\n state.btcStatus === 'Closed By Redemption' ||\n state.ethStatus === 'Closed By Redemption' ||\n state.opStatus === 'Closed By Redemption' ||\n state.wstethStatus === 'Closed By Redemption';\n\n const buildPositionElements = () => {\n let boxes: ReactElement[] = [];\n let activeBoxes: ReactElement[] = [];\n let inactiveBoxes: ReactElement[] = [];\n let liquidatedBoxes: ReactElement[] = [];\n if (state.chainView !== '' && !isLoadingPage) {\n const collIds = getChainCollateralFromId(state.chainView, state.appVersion);\n collIds.forEach((collId: string) => {\n const collStatus = state[collId + 'Status'];\n const newElem = (\n \n );\n if (collStatus === 'Active') {\n activeBoxes.push(newElem);\n } else if (collStatus === 'Closed By Liquidation') {\n liquidatedBoxes.push(newElem);\n } else {\n inactiveBoxes.push(newElem);\n }\n });\n boxes = activeBoxes.concat(liquidatedBoxes).concat(inactiveBoxes);\n return boxes;\n }\n };\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n return !isLoadingPage ? (\n
\n {showPositions ? (\n
\n
\n \n
\n {isThereAnEmptyCollateralPosition(state) && state.appVersion === '2_1' ? (\n \n \n \n ) : (\n <>\n )}\n
\n
\n
\n
\n
\n
\n
\n
{buildPositionElements()}
\n
\n setIsCollateralChangesModalOpen(false)}/>\n
\n ) : (\n
\n
\n
\n
\n \n
\n
\n
\n Open a Position\n
\n
\n
\n Deposit your collateral to borrow Ethos Reserve Notes, or ERN. ERN loans are\n interest free, and cost only a small fee on issuance. You can use your ERN to earn\n passive income or trade on most popular decentralized exchanges.\n
\n
\n
\n {state.appVersion === '2_1' ?\n \n
\n
\n setIsCollateralChangesModalOpen(false)}/>\n
\n )}\n
\n ) : (\n
\n \n
\n
\n
\n \n
\n
\n
\n Open a Position\n
\n
\n
\n Deposit your collateral to borrow Ethos Reserve Notes, or ERN. ERN loans are interest\n free, and cost only a small fee on issuance. You can use your ERN to earn passive\n income or trade on most popular decentralized exchanges.\n
\n
\n
{buildActionButtonIfDataIsntLoading()}
\n
\n
\n
\n );\n}\n\nexport default PositionsPage;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgGift(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.33333 1.00018C5.0035 1.00018 5.60255 1.30443 6 1.78233C6.39745 1.30443 6.9965 1.00018 7.66665 1.00018H7.7C8.41795 1.00018 9 1.58221 9 2.30018C9 2.54972 8.94625 2.78671 8.84965 3.00018H9C9.82845 3.00018 10.5 3.67176 10.5 4.50018V9.00018C10.5 9.82863 9.82845 10.5002 9 10.5002H3C2.17158 10.5002 1.5 9.82863 1.5 9.00018V4.50018C1.5 3.67176 2.17158 3.00018 3 3.00018H3.15035C3.05377 2.78671 3 2.54972 3 2.30018C3 1.58221 3.58203 1.00018 4.3 1.00018H4.33333ZM9.5 7.00018H6.5V9.50018H9C9.25642 9.50018 9.46775 9.30717 9.49664 9.0585L9.5 9.00018V7.00018ZM5.5 7.00018H2.5V9.00018C2.5 9.27633 2.72386 9.50018 3 9.50018H5.5V7.00018ZM5.5 4.00018H3C2.74358 4.00018 2.53225 4.19321 2.50336 4.44187L2.5 4.50018V6.00018H5.5V4.00018ZM9 4.00018H6.5V6.00018H9.5V4.50018C9.5 4.22404 9.27615 4.00018 9 4.00018ZM4.33333 2.00018H4.3C4.13432 2.00018 4 2.1345 4 2.30018C4 2.68678 4.3134 3.00018 4.7 3.00018H5.4882C5.4073 2.4348 4.92108 2.00018 4.33333 2.00018ZM7.7 2.00018H7.66665C7.10689 2.00018 6.63924 2.3944 6.52608 2.92034L6.5118 3.00018H7.3C7.6866 3.00018 8 2.68678 8 2.30018C8 2.15107 7.89122 2.02736 7.74867 2.00411L7.7 2.00018Z\",\n fill: \"#7659A1\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGift);\nexport default __webpack_public_path__ + \"static/media/gift.b993c302.svg\";\nexport { ForwardRef as ReactComponent };","import '../styling/Input.css';\nimport Button from './Button';\nimport { isNumber as checkIsNumber } from '../functions/formatters';\nimport { ReactComponent as EditIcon } from '../assets/icons/edit.svg';\nimport { ReactComponent as XIcon } from '../assets/icons/x.svg';\n\ninterface InputProps {\n text?: string;\n onClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n className?: string;\n label?: string;\n placeholder?: any;\n value?: any;\n setValue?: any;\n submit?: any;\n showMaxButton?: boolean;\n maxValueFunction?: () => void;\n isValid?: boolean;\n errorMessage?: string;\n isNumber?: boolean;\n readonly?: boolean;\n showEditButton?: boolean;\n isEditButtonEnabled?: boolean;\n editValueFunction?: () => void;\n showResetButton?: boolean;\n resetValueFunction?: () => void;\n showApplyButton?: boolean;\n applyButtonFunction?: () => void;\n isApplyButtonDisabled?: boolean;\n}\n\nconst Input = (props: InputProps) => {\n const {\n onClick = () => {},\n onMouseEnter = () => {},\n onMouseLeave = () => {},\n className = '',\n value = '',\n showMaxButton = false,\n maxValueFunction = () => {},\n isValid = true,\n label = '',\n errorMessage = '',\n isNumber = true,\n readonly = false,\n showEditButton = false,\n isEditButtonEnabled = false,\n editValueFunction = () => {},\n showResetButton = false,\n resetValueFunction = () => {},\n showApplyButton = false,\n applyButtonFunction = () => {},\n isApplyButtonDisabled = false,\n } = props;\n\n const handleChange = (event: any) => {\n if (props.setValue !== undefined) {\n props.setValue(event.target.value);\n }\n };\n\n const handleSubmit = (event: any) => {\n event.preventDefault();\n if (props.submit) {\n props.submit();\n }\n };\n\n const checkNumberError = value !== '' && isNumber && !checkIsNumber(value);\n const errorStatus = value !== '' && (!isValid || checkNumberError) ? 'input-error ' : ' ';\n\n const displayErrorMessage = () => {\n if (checkNumberError) {\n return 'This value must be a number.';\n } else {\n if (errorMessage !== '' && !isValid) {\n return errorMessage;\n } else {\n return <>;\n }\n }\n };\n\n return (\n
\n {label !== '' ? (\n
\n
{label}
\n
\n ) : (\n <>\n )}\n
\n \n {}}\n >\n \n \n {showMaxButton ? (\n \n ) : (\n <>\n )}\n {showResetButton ? (\n \n ) : (\n <>\n )}\n {showEditButton ? (\n \n {isEditButtonEnabled ? (\n \n ) : (\n \n )}\n \n ) : (\n <>\n )}\n
\n {showApplyButton ? (\n \n Apply\n \n ) : (\n <>\n )}\n
\n
\n {displayErrorMessage()}\n
\n \n );\n};\n\nexport default Input;\n","import { ReactComponent as GiftIcon } from '../assets/icons/gift.svg';\nimport Button from './Button';\n\ninterface ClaimRewardsBoxProps {\n claimFunction: () => void;\n isShown: () => boolean;\n className?: string;\n}\n\nfunction ClaimRewardsBox(props: ClaimRewardsBoxProps) {\n return props.isShown() ? (\n \n
\n
\n
\n \n
\n
\n You have pending claimable rewards\n
\n
\n
\n Your position has earned you rewards! Send them to your connected wallet by clicking on\n the Claim Rewards button.\n
\n
\n \n
\n
\n \n ) : (\n <>\n );\n}\n\nexport default ClaimRewardsBox;\n","var _path, _path2, _path3, _path4, _path5;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgErn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 452.54 452.63\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M452.54,226.4c.29,124.53-101.46,227.24-228.23,226.22C100.91,451.63-1.32,350.9,.01,223.69,1.33,98.87,103.88-2.21,230.49,.04c123.81,2.2,222.4,103.59,222.04,226.36Zm-226.31,206.36c113.84-.31,204.77-91.29,206.42-203.15,1.72-116.6-91.79-207.84-202.77-209.65C114.82,18.07,21.05,110.56,19.93,224.2c-1.12,113.76,90.46,208.21,206.3,208.55h0Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M175.06,113.48c17.69,53.84,35.39,107.68,53.17,161.79-1.25,.07-2.16,.15-3.08,.15-36.61,0-73.21,.05-109.82,0-26.75-.05-47.1-21.15-45.59-47.77,.93-16.37,8.77-28.95,23.41-36.74,25.65-13.65,51.38-27.12,77.11-40.61,1.61-.85,2.24-1.8,2.32-3.64,.51-11.06,1.18-22.1,1.79-33.16,.22,0,.45,0,.67-.02h0Zm25.51,118.18c-4.54-13.81-8.95-27.2-13.4-40.71-.69,.28-1.08,.4-1.44,.59-15.47,8.01-30.86,16.19-46.43,23.98-10.26,5.14-19.76,12.68-32.3,11.51-.1,0-.24,0-.31,.06-.7,.69-2.01,1.5-1.92,2.07,.16,.89,1.12,1.93,2,2.35,.88,.41,2.07,.16,3.13,.16h90.66Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M224.32,177.18h4.06c36.39,0,72.8,0,109.19,0,21,0,38.72,13.69,44.04,33.97,5.24,19.98-3.9,40.95-22.14,50.59-25.5,13.48-51.02,26.92-76.57,40.29-2.05,1.07-2.89,2.32-2.98,4.61-.47,10.85-1.08,21.68-2.3,32.67-17.7-53.85-35.41-107.71-53.29-162.13h0Zm27.73,43.77c4.57,13.92,8.96,27.27,13.41,40.8,1.12-.54,1.87-.89,2.61-1.27,19.68-10.21,39.38-20.38,59.02-30.64,4.96-2.59,10.05-4.33,15.72-4.19,1.94,.05,4.9,.84,4.94-2.3,.04-3.17-2.94-2.37-4.88-2.37-28.96-.04-57.94-.03-86.9-.03h-3.91Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M238.06,134.1v-26.51h26.46v26.51h-26.46Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M187.96,344.95v-26.33h26.33v26.33h-26.33Z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgErn);\nexport default __webpack_public_path__ + \"static/media/ern.62c8e571.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStability(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_8642)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.25351 2.88633C7.80789 2.33197 8.74003 2.68672 8.81371 3.43851L8.81836 3.53452V16.6667C8.81836 17.1269 8.44526 17.5 7.98503 17.5C7.55766 17.5 7.20544 17.1783 7.1573 16.7639L7.15169 16.6667V5.34517L5.24095 7.25593C4.91551 7.58136 4.38788 7.58136 4.06243 7.25593C3.76203 6.95552 3.73893 6.48283 3.99311 6.15592L4.06243 6.07741L7.25351 2.88633ZM12.985 2.5C13.4124 2.5 13.7646 2.8217 13.8128 3.23615L13.8184 3.33333V14.6548L15.7291 12.7441C16.0545 12.4187 16.5822 12.4187 16.9076 12.7441C17.208 13.0445 17.2311 13.5172 16.9769 13.8441L16.9076 13.9226L13.7165 17.1137C13.1621 17.6681 12.23 17.3133 12.1563 16.5615L12.1517 16.4655V3.33333C12.1517 2.8731 12.5248 2.5 12.985 2.5Z\",\n fill: \"#08001C\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_8642\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\",\n transform: \"translate(0.484375)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStability);\nexport default __webpack_public_path__ + \"static/media/stability.f8e9d6dc.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactElement, useContext, useEffect, useState } from 'react';\nimport { Context } from '../Store';\n\nimport Input from './Input';\nimport Button from './Button';\n\nimport {\n claimStabilityPoolRewards,\n depositStableToStabilityPool,\n getTokenBalance,\n withdrawStableFromStabilityPool,\n} from '../functions/blockchainRouter';\nimport { isErrorMsg, formatPositiveNumber } from '../functions/formatters';\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport LoadingSpinner from './LoadingSpinner';\nimport Modal from './modals/Modal';\nimport {\n checkShowNetworkWarningForEthos,\n clearUserLiquidationRewards,\n clearUserStabilityRewards,\n editTotalStabilityPoolDeposits,\n editUserCollateralBalance,\n editUserStabilityPoolDeposits,\n isStabilityPositionOpen,\n} from '../functions/stateHelpers';\nimport { getChainConfigFromId } from '../functions/chainHelpers';\nimport { Reward } from '../storage/Types';\nimport ClaimRewardsBox from './ClaimRewardsBox';\nimport { getIconSrcFromCoin, getIconSrcFromCoinId } from '../functions/coinHelpers';\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport { ReactComponent as StabilityIcon } from '../assets/icons/stability.svg';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport InfoBox from './InfoBox';\n\ninterface StabilityPageProps {\n className?: string;\n}\n\nfunction StabilityPage(props: StabilityPageProps) {\n const [state, dispatch]: any = useContext(Context);\n\n const [depositInputVal, setDepositInputVal] = useState('');\n const [withdrawInputVal, setWithdrawInputVal] = useState('');\n const [depositMoreInputVal, setDepositMoreInputVal] = useState('');\n\n const [maxStableAvailable, setMaxStableAvailable] = useState('');\n\n const [isEditModalOpen, setIsEditModalOpen] = useState(false);\n const [editModalMode, setEditModalMode] = useState('');\n\n let { className = '' } = props;\n\n useEffect(() => {\n let isMounted = true;\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.isOnSupportedChain\n ) {\n if (state.stabilityCoin !== undefined) {\n getTokenBalance(\n state.stabilityCoin.addresses[state.connectedChain],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxStableAvailable(balance.data);\n }\n });\n }\n }\n return () => {\n isMounted = false;\n };\n }, [\n state.walletProvider,\n state.walletAddress,\n state.connectedChain,\n state.isOnSupportedChain,\n state.stabilityCoin,\n ]);\n\n const deposit = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const tokenTicker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'Check your wallet to confirm your deposit of ' + amount + ' ' + tokenTicker + '.',\n success: 'Successfully deposited ' + amount + ' ' + tokenTicker + ' in the stability pool.',\n failure: 'Deposit failed or the transaction was canceled.',\n pending: 'Waiting to deposit tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isTxModalOpen', content: true });\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.stabilityCoin !== undefined) {\n depositStableToStabilityPool(amount, state).then((depositResponse) => {\n if (!isErrorMsg(depositResponse)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n editUserStabilityPoolDeposits(amount, true, state, dispatch);\n editTotalStabilityPoolDeposits(amount, true, state, dispatch);\n clearUserStabilityRewards(state, dispatch);\n clearUserLiquidationRewards(state, dispatch);\n setDepositInputVal('');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n }\n };\n\n const withdraw = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const tokenTicker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'Check your wallet to confirm your withdrawal of ' + amount + ' ' + tokenTicker + '.',\n success:\n 'Successfully withdrew ' + amount + ' ' + tokenTicker + ' from the stability pool.',\n failure: 'Withdrawal failed or the transaction was canceled.',\n pending: 'Waiting to withdraw tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n dispatch({ type: 'isTxModalOpen', content: true });\n withdrawStableFromStabilityPool(amount, state).then((withdrawResponse) => {\n if (!isErrorMsg(withdrawResponse)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n clearUserStabilityRewards(state, dispatch);\n clearUserLiquidationRewards(state, dispatch);\n editUserStabilityPoolDeposits(amount, false, state, dispatch);\n editTotalStabilityPoolDeposits(amount, false, state, dispatch);\n setWithdrawInputVal('');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n\n const claimRewards = () => {\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const currentTxMessages = [\n {\n inProgress: 'Check your wallet to claim.',\n success: 'Successfully claimed rewards.',\n failure: 'Claim failed or the transaction was canceled.',\n pending: 'Waiting to withdraw tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n claimStabilityPoolRewards(state).then((result) => {\n if (!isErrorMsg(result)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n state.userLiquidationRewards.forEach((reward: Reward) => {\n if (isGreaterThan(reward.amount, '0')) {\n editUserCollateralBalance(reward.uid, reward.amount, true, state, dispatch);\n }\n });\n clearUserStabilityRewards(state, dispatch);\n clearUserLiquidationRewards(state, dispatch);\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n\n const maxOutStable = () => {\n if (maxStableAvailable !== '') {\n setDepositInputVal(maxStableAvailable);\n }\n };\n\n const checkInputHasError = (value: string) => {\n return false;\n };\n\n const buildUserLiquidationRewardsList = () => {\n const liquidationRewardsList: ReactElement[] = [];\n state.userLiquidationRewards.forEach((reward: Reward) => {\n const coinIconSrc = getIconSrcFromCoinId(reward.uid);\n const rewardElement = (\n
\n {formatPositiveNumber(reward.amount, 5)}\n {coinIconSrc !== undefined ? (\n \n ) : (\n ' '\n )}\n {reward.ticker}\n
\n );\n liquidationRewardsList.push(rewardElement);\n });\n\n return
{liquidationRewardsList}
;\n };\n\n const showClaimRewardsBox = () => {\n let isAnyClaimableLiquidationRewards = false;\n state.userLiquidationRewards.every((reward: Reward) => {\n if (isGreaterThan(reward.amount, '0')) {\n isAnyClaimableLiquidationRewards = true;\n return false;\n } else {\n return true;\n }\n });\n return isGreaterThan(state.userStabilityRewards, '0') || isAnyClaimableLiquidationRewards;\n };\n\n const openPositionExists: boolean = isStabilityPositionOpen(state);\n const isLoaded =\n state.userStabilityDeposits !== '' &&\n state.userStabilityRewards !== '' &&\n state.userLiquidationRewards !== '';\n\n let stabilityRewardIconSrc = undefined;\n if (state.stabilityRewardCoin !== undefined) {\n stabilityRewardIconSrc = getIconSrcFromCoin(state.stabilityRewardCoin);\n }\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n return (\n
\n {isLoaded ? (\n
\n
\n
\n
\n {openPositionExists ? 'My Stability Pool' : 'Deposit in the Stability Pool'}\n
\n
\n {state.stabilityApr !== '' ? (\n formatPositiveNumber(safeMult(state.stabilityApr, '100'), 3) + ' % APR'\n ) : (\n <>\n )}\n
\n
\n
\n {'There is currently '}\n {state.totalStabilityDeposits !== '' ? (\n formatPositiveNumber(state.totalStabilityDeposits, 2)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker} deposited in the stability pool.\n
\n
\n {openPositionExists ? (\n <>\n
\n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStabilityDeposits !== '' ? (\n formatPositiveNumber(state.userStabilityDeposits)\n ) : (\n \n )}\n \n {state.stabilityCoin?.ticker}\n
\n
\n
\n
\n Rewards\n
\n
\n {state.userStabilityRewards !== '' ? (\n formatPositiveNumber(state.userStabilityRewards, 5)\n ) : (\n \n )}\n {stabilityRewardIconSrc !== undefined ? (\n \n ) : (\n ' '\n )}\n \n {state.stabilityRewardCoin?.ticker}\n \n
\n
\n
\n {state.userLiquidationRewards.length !== 0 ? (\n
\n
\n Liquidation Rewards\n
\n
\n {state.userLiquidationRewards.length !== 0 ? (\n buildUserLiquidationRewardsList()\n ) : (\n \n )}{' '}\n
\n
\n ) : (\n <>\n )}\n
\n
\n
\n \n
\n
\n {/*
\n \n
\n \n Tired of claiming your rewards? Try out the stERN vault.\n \n
\n
*/}\n
\n
\n
\n {\n setIsEditModalOpen(true);\n setEditModalMode('withdraw');\n }}\n />\n {\n setIsEditModalOpen(true);\n setEditModalMode('deposit');\n }}\n />\n
\n
\n {isEditModalOpen ? (\n {\n setIsEditModalOpen(false);\n }}\n title={editModalMode === 'deposit' ? 'Deposit' : 'Withdraw'}\n >\n {editModalMode === 'deposit' ? (\n
\n
\n Tokens in Wallet\n
\n
\n {maxStableAvailable !== '' ? (\n formatPositiveNumber(maxStableAvailable)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker}\n
\n
\n ) : (\n
\n
\n Deposited Tokens\n
\n
\n {state.userStabilityDeposits !== '' ? (\n formatPositiveNumber(state.userStabilityDeposits)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker}\n
\n
\n )}\n {editModalMode === 'deposit' ? (\n {\n setDepositMoreInputVal(maxStableAvailable);\n }}\n value={depositMoreInputVal}\n setValue={setDepositMoreInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n ) : (\n {\n setWithdrawInputVal(state.userStabilityDeposits);\n }}\n value={withdrawInputVal}\n setValue={setWithdrawInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n )}\n {editModalMode === 'deposit' ? (\n
\n {\n setDepositMoreInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n deposit(depositMoreInputVal);\n }}\n />\n
\n ) : (\n
\n {\n setWithdrawInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n withdraw(withdrawInputVal);\n }}\n />\n
\n )}\n \n ) : (\n <>\n )}\n \n ) : (\n <>\n
\n \n
\n
\n
\n {\n setDepositInputVal('');\n }}\n disabled={depositInputVal === ''}\n />\n {\n deposit(depositInputVal);\n }}\n disabled={depositInputVal === '' || parseFloat(depositInputVal) === 0}\n />\n
\n
\n \n )}\n
\n ) : (\n \n
\n
\n
\n \n
\n
\n
\n Stability Pool\n
\n
\n
\n Invest ERN into the Stability Pool and receive up to{' '}\n {state.stabilityApr !== ''\n ? formatPositiveNumber(safeMult(state.stabilityApr, '100'), 2) + ' % APR'\n : '10% APY'}{' '}\n through rewards and liquidation gains.\n
\n
\n
{buildActionButtonIfDataIsntLoading()}
\n
\n
\n )}\n \n );\n}\n\nexport default StabilityPage;\n","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStake(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_5856)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip1_725_5856)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M18.814 11.5909C19.1069 11.298 19.1069 10.8232 18.814 10.5303C18.5211 10.2374 18.0462 10.2374 17.7533 10.5303L11.3893 16.8943C11.0964 17.1872 11.0964 17.662 11.3893 17.9549C11.6822 18.2478 12.1571 18.2478 12.45 17.9549L18.814 11.5909ZM18.1879 9.035C18.8434 8.37957 18.7534 7.29249 17.9991 6.75373L11.8119 2.33432C11.2153 1.9081 10.3979 1.97577 9.87943 2.49426L3.35334 9.02035C2.83484 9.53885 2.76716 10.3562 3.19339 10.9529L7.61279 17.1401C8.15153 17.8943 9.23862 17.9843 9.89406 17.3289L18.1879 9.035ZM17.1273 7.97434L8.8334 16.2682L4.414 10.081L10.9401 3.55492L17.1273 7.97434Z\",\n fill: \"#807D87\"\n })))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_5856\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\",\n transform: \"translate(0.859375)\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip1_725_5856\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 18,\n fill: \"white\",\n transform: \"translate(23.5879 10) rotate(135)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStake);\nexport default __webpack_public_path__ + \"static/media/stake.a59692a3.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactElement, useContext, useEffect, useState } from 'react';\nimport { Context } from '../Store';\n\nimport Input from './Input';\nimport Button from './Button';\nimport ClaimRewardsBox from './ClaimRewardsBox';\n\nimport {\n approveSpend,\n claimStakingPoolRewards,\n depositInStakingPool,\n getAllowance,\n getTokenBalance,\n withdrawFromStakingPool,\n} from '../functions/blockchainRouter';\nimport { isErrorMsg, isNumber, formatPositiveNumber } from '../functions/formatters';\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport LoadingSpinner from './LoadingSpinner';\nimport Modal from './modals/Modal';\nimport {\n isStakingPositionOpen,\n editUserStakingPoolDeposits,\n editTotalStakingPoolDeposits,\n clearUserStakingRewards,\n clearUserStakingRedemptionRewards,\n editUserCollateralBalance,\n checkShowNetworkWarningForEthos,\n} from '../functions/stateHelpers';\nimport { getChainConfigFromId } from '../functions/chainHelpers';\nimport { Reward } from '../storage/Types';\nimport { getIconSrcFromCoin, getIconSrcFromCoinId } from '../functions/coinHelpers';\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport { ReactComponent as StakeIcon } from '../assets/icons/stake.svg';\n\ninterface StakingPageProps {\n className?: string;\n}\n\nfunction StakingPage(props: StakingPageProps) {\n const [state, dispatch]: any = useContext(Context);\n\n const [depositInputVal, setDepositInputVal] = useState('');\n const [withdrawInputVal, setWithdrawInputVal] = useState('');\n const [depositMoreInputVal, setDepositMoreInputVal] = useState('');\n\n const [maxStakingCoinAvailable, setMaxStakingCoinAvailable] = useState('');\n\n const [isEditModalOpen, setIsEditModalOpen] = useState(false);\n const [editModalMode, setEditModalMode] = useState('');\n\n let { className = '' } = props;\n\n const bOathUrl = (state.appVersion === '2' || state.appVersion === '2_1') ?\n 'https://op.beets.fi/pool/0xd13d81af624956327a24d0275cbe54b0ee0e9070000200000000000000000109' \n :\n 'https://op.beets.fi/pool/0xd20f6f1d8a675cdca155cb07b5dc9042c467153f0002000000000000000000bc';\n\n useEffect(() => {\n let isMounted = true;\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.isOnSupportedChain\n ) {\n if (state.stakingCoin !== undefined) {\n getTokenBalance(\n state.stakingCoin.addresses[state.connectedChain],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxStakingCoinAvailable(balance.data);\n }\n });\n }\n }\n return () => {\n isMounted = false;\n };\n }, [\n state.walletProvider,\n state.walletAddress,\n state.connectedChain,\n state.isOnSupportedChain,\n state.stakingCoin,\n ]);\n\n const deposit = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n const tokenTicker = state.stakingCoin !== undefined ? state.stakingCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'You must approve ' +\n amount +\n ' ' +\n tokenTicker +\n ' for deposit. Check your wallet to continue.',\n success: 'Successfully approved ' + amount + ' ' + tokenTicker + '.',\n failure: 'Token approval failed or the transaction was rejected.',\n pending: 'Approve ' + tokenTicker + ' for deposit.',\n },\n {\n inProgress: 'Trying to deposit ' + amount + ' ' + tokenTicker + '.',\n success: 'Successfully deposited ' + amount + ' ' + tokenTicker + ' in the staking pool.',\n failure:\n 'Deposit for ' + amount + ' ' + tokenTicker + ' failed or the transaction was canceled.',\n pending: 'Waiting to deposit tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n if (chainConfig !== undefined && state.stakingCoin !== undefined && isNumber(amount)) {\n setIsEditModalOpen(false);\n dispatch({ type: 'isTxModalOpen', content: true });\n\n const stakingCoinAddr = state.stakingCoin.addresses[state.connectedChain];\n const stakingContractAddr = chainConfig.contracts.stakingPoolAddr;\n\n const justDeposit = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n depositInStakingPool(amount, state).then((depositResponse) => {\n if (!isErrorMsg(depositResponse)) {\n editUserStakingPoolDeposits(amount, true, state, dispatch);\n editTotalStakingPoolDeposits(amount, true, state, dispatch);\n clearUserStakingRewards(state, dispatch);\n clearUserStakingRedemptionRewards(state, dispatch);\n setDepositInputVal('');\n setIsEditModalOpen(false);\n dispatch({ type: 'currentTxStatus', content: 'success' });\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n const approveAndDeposit = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n approveSpend(stakingCoinAddr, chainConfig.contracts.stakingPoolAddr, amount, state).then(\n (approveResponse) => {\n if (!isErrorMsg(approveResponse)) {\n justDeposit();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n }\n );\n };\n dispatch({ type: 'currentTxStatus', content: 'pending' });\n\n getAllowance(stakingCoinAddr, stakingContractAddr, state).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(amount, allowance)) {\n approveAndDeposit();\n } else {\n justDeposit();\n }\n } else {\n // if can't get allowance just approve it\n approveAndDeposit();\n }\n });\n }\n };\n\n const withdraw = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const tokenTicker = state.stakingCoin !== undefined ? state.stakingCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'Check your wallet to confirm your withdrawal of ' + amount + ' ' + tokenTicker + '.',\n success: 'Successfully withdrew ' + amount + ' ' + tokenTicker + ' from the staking pool.',\n failure: 'Withdrawal failed or the transaction was canceled.',\n pending: 'Waiting to withdraw tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n withdrawFromStakingPool(amount, state).then((withdrawResponse) => {\n if (!isErrorMsg(withdrawResponse)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n editUserStakingPoolDeposits(amount, false, state, dispatch);\n editTotalStakingPoolDeposits(amount, false, state, dispatch);\n clearUserStakingRewards(state, dispatch);\n clearUserStakingRedemptionRewards(state, dispatch);\n setWithdrawInputVal('');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n\n const claimRewards = () => {\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const currentTxMessages = [\n {\n inProgress: 'Check your wallet to claim.',\n success: 'Successfully claimed rewards.',\n failure: 'Claim failed or the transaction was canceled.',\n pending: 'Waiting to withdraw tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n claimStakingPoolRewards(state).then((res) => {\n if (!isErrorMsg(res)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n clearUserStakingRewards(state, dispatch);\n state.userRedemptionRewards.forEach((reward: Reward) => {\n if (isGreaterThan(reward.amount, '0')) {\n editUserCollateralBalance(reward.uid, reward.amount, true, state, dispatch);\n }\n });\n clearUserStakingRedemptionRewards(state, dispatch);\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n\n const maxOutStable = () => {\n if (maxStakingCoinAvailable !== '') {\n setDepositInputVal(maxStakingCoinAvailable);\n }\n };\n\n const checkInputHasError = (value: string) => {\n return false;\n };\n\n const showClaimRewardsBox = () => {\n let isAnyClaimableRedemptionRewards = false;\n state.userRedemptionRewards.every((reward: Reward) => {\n if (isGreaterThan(reward.amount, '0')) {\n isAnyClaimableRedemptionRewards = true;\n return false;\n } else {\n return true;\n }\n });\n return isGreaterThan(state.userStakingRewards, '0') || isAnyClaimableRedemptionRewards;\n };\n\n const buildUserRedemptionRewardsList = () => {\n const redemptionRewardsList: ReactElement[] = [];\n state.userRedemptionRewards.forEach((reward: Reward) => {\n const coinIconSrc = getIconSrcFromCoinId(reward.uid);\n const rewardElement = (\n
\n {formatPositiveNumber(reward.amount, 5)}\n {coinIconSrc !== undefined ? (\n \n ) : (\n ' '\n )}\n {reward.ticker}\n
\n );\n redemptionRewardsList.push(rewardElement);\n });\n\n return
{redemptionRewardsList}
;\n };\n\n const openPositionExists: boolean = isStakingPositionOpen(state);\n const isLoaded =\n state.userStakingDeposits !== '' &&\n state.userStakingRewards !== '' &&\n state.userRedemptionRewards !== '';\n\n let stakingIconSrc = undefined;\n if (state.stakingCoin !== undefined) {\n stakingIconSrc = getIconSrcFromCoin(state.stakingCoin);\n }\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n return (\n
\n {isLoaded ? (\n
\n
\n
\n
\n {openPositionExists ? 'My Staking Pool' : 'Deposit in the Staking Pool'}\n
\n
\n {state.stakingApr !== '' ? (\n formatPositiveNumber(safeMult(state.stakingApr, '100'), 2) + ' % APR'\n ) : (\n <>\n )}\n
\n \n
\n
\n {'There is currently '}\n {state.totalStakingDeposits !== '' ? (\n formatPositiveNumber(state.totalStakingDeposits, 2)\n ) : (\n \n )}{' '}\n {state.stakingCoin?.ticker} deposited in the staking pool.\n
\n
\n {openPositionExists ? (\n <>\n
\n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStakingDeposits !== '' ? (\n formatPositiveNumber(state.userStakingDeposits)\n ) : (\n \n )}\n {stakingIconSrc !== undefined ? (\n \n ) : (\n
\n )}\n {state.stakingCoin?.ticker}\n
\n
\n
\n
\n Rewards\n
\n
\n {state.userStakingRewards !== '' ? (\n formatPositiveNumber(state.userStakingRewards, 5)\n ) : (\n \n )}\n \n \n {state.stakingRewardCoin?.ticker}\n \n
\n
\n {state.userRedemptionRewards.length !== 0 ? (\n
\n
\n Redemption Rewards\n
\n
\n {state.userRedemptionRewards.length !== 0 ? (\n buildUserRedemptionRewardsList()\n ) : (\n \n )}{' '}\n
\n
\n ) : (\n <>\n )}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n {\n setIsEditModalOpen(true);\n setEditModalMode('withdraw');\n }}\n />\n {\n setIsEditModalOpen(true);\n setEditModalMode('deposit');\n }}\n />\n
\n
\n {isEditModalOpen ? (\n {\n setIsEditModalOpen(false);\n }}\n title={editModalMode === 'deposit' ? 'Deposit' : 'Withdraw'}\n >\n {editModalMode === 'deposit' ? (\n
\n
\n Tokens in Wallet\n
\n
\n {maxStakingCoinAvailable !== '' ? (\n formatPositiveNumber(maxStakingCoinAvailable)\n ) : (\n \n )}{' '}\n {state.stakingCoin?.ticker}\n
\n
\n ) : (\n
\n
\n Deposited Tokens\n
\n
\n {state.userStakingDeposits !== '' ? (\n formatPositiveNumber(state.userStakingDeposits)\n ) : (\n \n )}{' '}\n {state.stakingCoin?.ticker}\n
\n
\n )}\n {editModalMode === 'deposit' ? (\n {\n setDepositMoreInputVal(maxStakingCoinAvailable);\n }}\n value={depositMoreInputVal}\n setValue={setDepositMoreInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n ) : (\n {\n setWithdrawInputVal(state.userStakingDeposits);\n }}\n value={withdrawInputVal}\n setValue={setWithdrawInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n )}\n {editModalMode === 'deposit' ? (\n
\n {\n setDepositMoreInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n deposit(depositMoreInputVal);\n }}\n />\n
\n ) : (\n
\n {\n setWithdrawInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n withdraw(withdrawInputVal);\n }}\n />\n
\n )}\n \n ) : (\n <>\n )}\n \n ) : (\n <>\n
\n \n
\n
\n
\n {\n setDepositInputVal('');\n }}\n disabled={depositInputVal === ''}\n />\n {\n deposit(depositInputVal);\n }}\n disabled={depositInputVal === '' || parseFloat(depositInputVal) === 0}\n />\n
\n
\n \n )}\n
\n ) : (\n \n
\n
\n
\n \n
\n
\n
\n Staking Pool\n
\n
\n
\n Stake your Bonded OATH tokens and earn 14% APY through platform and trading fees.\n
\n
\n
\n {buildActionButtonIfDataIsntLoading()}\n
\n
\n
\n )}\n
\n );\n}\n\nexport default StakingPage;\n","import { useContext, useEffect, useState, useImperativeHandle, forwardRef } from 'react';\nimport Input from './Input';\nimport { isGreaterThan, isLessThan, isZero, safeAdd, safeSub } from '../functions/safeMath';\nimport { Context } from '../Store';\nimport { formatPositiveNumber, isNumber } from '../functions/formatters';\n\ninterface ClassicOpenInputsProps {\n selectedCollateral:any;\n maxCollateralAvailable:string\n submitInputs:(collInput: string, borrowInput: string) => void\n minBorrow:string\n debtLimit:string;\n totalCollDebt:string;\n className?: string;\n}\n\nconst ClassicOpenInputs = (props: ClassicOpenInputsProps, ref:any) => {\n let {\n selectedCollateral={},\n maxCollateralAvailable='',\n submitInputs=(collInput: string, borrowInput: string) => {},\n minBorrow='',\n debtLimit='',\n totalCollDebt=''\n } = props;\n\n const [state]: any = useContext(Context);\n\n const [collateralInputVal, setCollateralInputVal] = useState('');\n const [collateralInputErrorMsg, setCollateralInputErrorMsg] = useState('');\n const [isCollateralInputValid, setIsCollateralInputValid] = useState(false);\n\n const [borrowInputVal, setBorrowInputVal] = useState('');\n const [borrowInputErrorMsg, setBorrowInputErrorMsg] = useState('');\n const [isBorrowInputValid, setIsBorrowInputValid] = useState(false);\n\n useEffect(() => {\n if (collateralInputVal !== '' && isCollateralInputValid && borrowInputVal !== '' && isBorrowInputValid) {\n submitInputs(collateralInputVal, borrowInputVal)\n } else if (\n (!isCollateralInputValid || !isBorrowInputValid) || \n (collateralInputVal === '' && borrowInputVal === '')\n ) {\n submitInputs('', '')\n }\n }, [collateralInputVal, borrowInputVal, isCollateralInputValid, isBorrowInputValid, submitInputs])\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (collateralInputVal !== '' && isZero(collateralInputVal)) {\n isValid = false;\n errorMsg = `Collateral cannot be zero.`\n } else if (collateralInputVal === '' && borrowInputVal !== '' ) {\n isValid = false;\n errorMsg = `Please enter collateral amount.`\n }\n setIsCollateralInputValid(isValid);\n setCollateralInputErrorMsg(errorMsg);\n }, [collateralInputVal, borrowInputVal]);\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (borrowInputVal !== '' && !isZero(borrowInputVal)) {\n if (isNumber(minBorrow) && isNumber(borrowInputVal) && state.stabilityCoin !== undefined) {\n if (isLessThan(borrowInputVal, minBorrow)) {\n isValid = false;\n errorMsg = `The minimum borrow amount is ${formatPositiveNumber(minBorrow)} ${state.stabilityCoin.ticker}.`\n } else if (checkIfDebtLimitIsReached(borrowInputVal, debtLimit, totalCollDebt)) {\n const availableToBorrow = safeSub(debtLimit, totalCollDebt);\n isValid = false;\n errorMsg = `Only ${formatPositiveNumber(availableToBorrow, 2)} ${state.stabilityCoin.ticker} available to borrow.`\n }\n }\n }\n\n setIsBorrowInputValid(isValid);\n setBorrowInputErrorMsg(errorMsg);\n }, [borrowInputVal, minBorrow, state.stabilityCoin, debtLimit, totalCollDebt]);\n\n const checkIfDebtLimitIsReached = (borrowInput:string, debtLimit:string, totalCollDebt:string) => {\n if (debtLimit === '' || totalCollDebt === '') {\n return false;\n } else {\n return isGreaterThan(safeAdd(borrowInput, totalCollDebt), debtLimit);\n }\n }\n\n const maxOutCollateral = () => {\n if (maxCollateralAvailable !== '') {\n setCollateralInputVal(maxCollateralAvailable);\n }\n };\n\n const cancel = () => {\n setCollateralInputVal('');\n setBorrowInputVal('');\n };\n\n useImperativeHandle(ref, () => ({\n cancel\n }));\n\n return (\n
\n \n \n
\n );\n};\n\nexport default forwardRef(ClassicOpenInputs);\n","import '../styling/Slider.css';\n\ninterface SliderProps {\n label:string\n value: string;\n min: string;\n max: string;\n errorMessage?:string\n className?: string;\n setValue?: any;\n displayValue?:string;\n valueLabel?:string;\n}\n\nfunction Slider(props: SliderProps) {\n let {\n label = '',\n errorMessage = '',\n className = '',\n value = '',\n min = '',\n max = '',\n displayValue = '',\n valueLabel = '',\n } = props;\n const handleChange = (event: any) => {\n if (props.setValue !== undefined) {\n props.setValue(event.target.value);\n }\n };\n\n const displayErrorMessage = () => {\n if (errorMessage !== '') {\n return errorMessage;\n } else {\n return <>;\n }\n };\n\n return (\n
\n {label !== '' ? (\n
\n
{label}
\n {\n displayValue &&\n
\n \n {`${displayValue}`}\n \n \n {`${valueLabel}`}\n \n
\n }\n
\n ) : (\n <>\n )}\n
\n \n \n \n \n
\n
\n
\n {displayErrorMessage()}\n
\n \n );\n}\n\nexport default Slider;\n","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_16215)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.6604 4.5538C17.9859 4.87924 17.9859 5.40688 17.6604 5.73231L8.29126 15.1015C7.93328 15.4594 7.35288 15.4594 6.99489 15.1015L2.33978 10.4463C2.01434 10.1209 2.01434 9.59326 2.33978 9.26785C2.66521 8.94243 3.19285 8.94243 3.51829 9.26785L7.64308 13.3926L16.4819 4.5538C16.8074 4.22836 17.335 4.22836 17.6604 4.5538Z\",\n fill: \"#235F5F\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_16215\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/check.a04d9761.svg\";\nexport { ForwardRef as ReactComponent };","import { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport Input from './Input';\nimport Slider from './Slider';\nimport { isGreaterThan, isLessThan, isZero, safeAdd, safeDiv, safeMult, safeSub } from '../functions/safeMath';\nimport { formatPositiveNumber, isNumber, toFixedDecimals } from '../functions/formatters';\nimport { Coin, LeverageCalculationsInterface } from '../storage/Types';\nimport { calculateLeverageData } from '../functions/stateHelpers';\nimport { LeverageConfig } from '../storage/LeverageConfig';\n\ninterface LeverageOpenInputsProps {\n selectedCollateral:Coin | undefined;\n maxCollateralAvailable:string\n submitInputs:(collInput: string, tcrInput: string, iterationsInput: string, leverageData: LeverageCalculationsInterface|undefined) => void\n minBorrow:string\n borrowRate:string\n liqReserve:string\n selectedCollateralPrice:string\n minCollateralRatioForLeverage:string\n stateCollPrice:string;\n stabilityCoinPrice:string;\n debtLimit:string;\n totalCollDebt:string;\n className?: string;\n}\n\nconst LeverageOpenInputs = (props: LeverageOpenInputsProps, ref:any) => {\n let {\n selectedCollateral={ticker:'', decimals:0},\n maxCollateralAvailable='',\n submitInputs=(collInput: string, tcrInput: string, iterationsInput: string, leverageData: LeverageCalculationsInterface|undefined) => {},\n minBorrow='',\n borrowRate='',\n liqReserve='',\n selectedCollateralPrice='',\n minCollateralRatioForLeverage='',\n stateCollPrice='',\n stabilityCoinPrice='',\n debtLimit='',\n totalCollDebt=''\n } = props;\n\n const [collateralInputVal, setCollateralInputVal] = useState('');\n const [collateralInputErrorMsg, setCollateralInputErrorMsg] = useState('');\n const [isCollateralInputValid, setIsCollateralInputValid] = useState(false);\n\n const [tcrInputVal, setTcrInputVal] = useState(safeMult(LeverageConfig.defaultTCR, '100'));\n const [tcrInputErrorMsg, setTcrInputErrorMsg] = useState('');\n const [isTcrInputValid, setIsTcrInputValid] = useState(true);\n\n const [iterationsInputVal, setIterationsInputVal] = useState('');\n const [iterationsInputErrorMsg, setIterationsInputErrorMsg] = useState('');\n const [isIterationsInputValid, setIsIterationsInputValid] = useState(false);\n const [targetTroveCollateralIdxInputVal, setTargetTroveCollateralIdxInputVal] = useState('0');\n const [targetLeverageData, setTargetLeverageData] = useState(undefined);\n const [isTargetLeverageDataValid, setIsTargetLeverageDataValid] = useState(false);\n\n const [leverageIterationsArray, setLeverageIterationsArray] = useState(undefined);\n\n useEffect(() => {\n if (selectedCollateral) {\n if (isGreaterThan(maxCollateralAvailable, '0')) {\n setCollateralInputVal(maxCollateralAvailable);\n } else {\n setCollateralInputVal('');\n }\n }\n }, [selectedCollateral, maxCollateralAvailable])\n\n useEffect(() => {\n if (\n collateralInputVal !== '' && \n isCollateralInputValid && \n tcrInputVal !== '' && \n isTcrInputValid && \n targetLeverageData &&\n isTargetLeverageDataValid &&\n isIterationsInputValid &&\n iterationsInputVal !== ''\n ) {\n submitInputs(collateralInputVal, tcrInputVal, iterationsInputVal, targetLeverageData);\n } else if (\n (!isCollateralInputValid || !isTcrInputValid || !isTargetLeverageDataValid || !isIterationsInputValid) ||\n (collateralInputVal === '' && targetLeverageData === undefined && tcrInputVal === '')\n ) {\n submitInputs('', '', '', undefined);\n }\n }, [\n collateralInputVal, \n tcrInputVal, \n isCollateralInputValid, \n isTcrInputValid, \n isTargetLeverageDataValid,\n targetLeverageData,\n iterationsInputVal,\n isIterationsInputValid,\n submitInputs\n ])\n\n useEffect(() => {\n if (\n isNumber(borrowRate) &&\n isNumber(liqReserve) &&\n isNumber(collateralInputVal) &&\n isCollateralInputValid &&\n isNumber(tcrInputVal) &&\n isTcrInputValid &&\n isNumber(stateCollPrice) &&\n isNumber(stabilityCoinPrice)\n ) {\n const data:LeverageCalculationsInterface[] | undefined = calculateLeverageData (\n collateralInputVal, \n safeDiv(tcrInputVal, '100'), \n borrowRate,\n liqReserve,\n stateCollPrice,\n stabilityCoinPrice\n )\n if (data) {\n setLeverageIterationsArray(data);\n }\n }\n }, [borrowRate, liqReserve, collateralInputVal, tcrInputVal, stateCollPrice, stabilityCoinPrice, isCollateralInputValid, isTcrInputValid])\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (collateralInputVal !== '') {\n if (collateralInputVal !== '' && isZero(collateralInputVal)) {\n isValid = false;\n errorMsg = `Collateral cannot be zero.`\n } else if (\n selectedCollateral && \n tcrInputVal !== \"0\" && \n isNumber(tcrInputVal) &&\n isNumber(liqReserve) && \n isNumber(minBorrow) && \n isNumber(selectedCollateralPrice)\n ) {\n const minBorrowFee = safeMult(minBorrow, borrowRate);\n const totalDebtAferOneIter = safeAdd(minBorrow, safeAdd(minBorrowFee, liqReserve));\n const minCollateral = safeDiv(safeMult(totalDebtAferOneIter, safeDiv(tcrInputVal, '100')), selectedCollateralPrice);\n if (isLessThan(collateralInputVal, minCollateral)) {\n isValid = false;\n errorMsg = `Minimum of ${toFixedDecimals(minCollateral, 8)} ${selectedCollateral?.ticker} needed based off your CR.`\n }\n }\n } else if (collateralInputVal === '' && tcrInputVal !== '' && iterationsInputVal !== '') {\n isValid = false;\n errorMsg = `Please enter collateral amount.`\n }\n setIsCollateralInputValid(isValid);\n setCollateralInputErrorMsg(errorMsg);\n if (!isValid) {\n resetSlider();\n }\n }, [collateralInputVal, tcrInputVal, borrowRate, iterationsInputVal, liqReserve, minBorrow, selectedCollateral, selectedCollateralPrice]);\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (targetLeverageData !== undefined && debtLimit !== '' && selectedCollateral !== undefined) {\n if (checkIfDebtLimitIsReached(targetLeverageData.totalERNBorrowed, debtLimit, totalCollDebt)) {\n const availableToBorrow = safeSub(debtLimit, totalCollDebt);\n isValid = false;\n errorMsg = `Only ${formatPositiveNumber(availableToBorrow, 2)} ${selectedCollateral.ticker} available to borrow.`\n }\n }\n setIsIterationsInputValid(isValid);\n setIterationsInputErrorMsg(errorMsg);\n }, [targetLeverageData, debtLimit, selectedCollateral, totalCollDebt]);\n\n useEffect(() => {\n let isValid = true;\n if (\n targetLeverageData === undefined ||\n !isNumber(targetLeverageData.ernInWallet) ||\n !isNumber(targetLeverageData.totalTroveDebt) ||\n !isNumber(targetLeverageData.totalTroveCollateral) ||\n !isNumber(targetLeverageData.totalERNBorrowed) ||\n !isNumber(targetLeverageData.borrowFee) ||\n !isNumber(targetLeverageData.ernBorrowedInFirstIteration)\n ) {\n isValid = false;\n }\n\n setIsTargetLeverageDataValid(isValid);\n }, [targetLeverageData]);\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n\n const mcr = safeMult(minCollateralRatioForLeverage, '100')\n if (tcrInputVal !== '' && isLessThan(tcrInputVal, mcr)) {\n isValid = false;\n errorMsg = `The minimum collateral ratio for leverage is ${mcr}.`\n } else if (tcrInputVal === '' && iterationsInputVal !== '' && collateralInputVal !== '') {\n isValid = false;\n errorMsg = `Please enter your target collateral ratio.`\n }\n setIsTcrInputValid(isValid);\n setTcrInputErrorMsg(errorMsg);\n if (!isValid) {\n resetSlider();\n }\n }, [tcrInputVal, collateralInputVal, iterationsInputVal, minCollateralRatioForLeverage]);\n\n useEffect(() => {\n if (\n isNumber(targetTroveCollateralIdxInputVal) &&\n leverageIterationsArray\n ) {\n const data = leverageIterationsArray[parseInt(targetTroveCollateralIdxInputVal)];\n setTargetLeverageData(data);\n setIterationsInputVal(data.iteration.toString());\n }\n }, [targetTroveCollateralIdxInputVal, leverageIterationsArray]);\n\n const checkIfDebtLimitIsReached = (borrowInput:string, debtLimit:string, totalCollDebt:string) => {\n if (debtLimit === '' || totalCollDebt === '') {\n return false;\n } else {\n return isGreaterThan(safeAdd(borrowInput, totalCollDebt), debtLimit);\n }\n }\n\n const maxOutCollateral = () => {\n if (maxCollateralAvailable !== '') {\n setCollateralInputVal(maxCollateralAvailable);\n }\n };\n\n const displayMultiplierValue = () => {\n if (\n targetLeverageData && \n isNumber(targetLeverageData.totalTroveCollateral) && \n isNumber(collateralInputVal)\n ) {\n return toFixedDecimals(safeDiv(targetLeverageData.totalTroveCollateral, collateralInputVal), 2);\n } else {\n return '';\n }\n }\n\n const cancel = () => {\n setCollateralInputVal('');\n setTcrInputVal('');\n setIterationsInputVal('');\n resetSlider();\n };\n\n const resetSlider = () => {\n setTargetTroveCollateralIdxInputVal('0');\n setLeverageIterationsArray(undefined);\n setTargetLeverageData(undefined);\n }\n\n useImperativeHandle(ref, () => ({\n cancel\n }));\n\n return (\n
\n
\n \n \n
\n \n
\n );\n};\n\nexport default forwardRef(LeverageOpenInputs);\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStatusX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.99935 1.66666C14.6017 1.66666 18.3327 5.39762 18.3327 10C18.3327 14.6023 14.6017 18.3333 9.99935 18.3333C5.39697 18.3333 1.66602 14.6023 1.66602 10C1.66602 5.39762 5.39697 1.66666 9.99935 1.66666ZM9.99935 3.33333C6.31745 3.33333 3.33268 6.3181 3.33268 10C3.33268 13.6819 6.31745 16.6667 9.99935 16.6667C13.6813 16.6667 16.666 13.6819 16.666 10C16.666 6.3181 13.6813 3.33333 9.99935 3.33333ZM8.23163 7.05369L9.99935 8.82141L11.7671 7.05367C12.0925 6.72823 12.6202 6.72823 12.9456 7.05367C13.271 7.37911 13.271 7.90675 12.9456 8.23218L11.1778 9.99991L12.9457 11.7677C13.2711 12.0932 13.2711 12.6208 12.9457 12.9462C12.6203 13.2717 12.0926 13.2717 11.7672 12.9462L9.99935 11.1784L8.23155 12.9462C7.90612 13.2717 7.37848 13.2717 7.05304 12.9462C6.72761 12.6208 6.72761 12.0932 7.05304 11.7677L8.82085 9.99991L7.05312 8.2322C6.72768 7.90676 6.72768 7.37913 7.05312 7.05369C7.37856 6.72826 7.90619 6.72826 8.23163 7.05369Z\",\n fill: \"#DC3545\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStatusX);\nexport default __webpack_public_path__ + \"static/media/status-x.12ae851c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgDash(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 5.292 5.292\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 -291.708)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"#000\",\n strokeDasharray: \"none\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 4,\n strokeOpacity: 1,\n strokeWidth: 0.453,\n d: \"M.22 294.354h4.852\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDash);\nexport default __webpack_public_path__ + \"static/media/dash.f3381cfb.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactElement, useContext } from 'react';\nimport { Context } from '../Store';\nimport { ReactComponent as CheckIcon } from '../assets/icons/check.svg';\nimport { ReactComponent as CircledXIcon } from '../assets/icons/status-x.svg';\nimport { ReactComponent as DashIcon } from '../assets/icons/dash.svg';\n\ninterface ConditionBoxProps {\n children?: any;\n className?: string;\n label?: string;\n isValid?: boolean;\n isActive?: boolean;\n description?: ReactElement | string;\n checkboxColorType?: string;\n}\n\nfunction ConditionBox(props: ConditionBoxProps) {\n const [state]: any = useContext(Context);\n\n const {\n className = '',\n children = <>,\n label = '',\n isValid = true,\n isActive = false,\n description = '',\n checkboxColorType = '',\n } = props;\n\n return (\n \n
\n
\n \n {isActive ? (\n isValid ? (\n \n ) : (\n \n )\n ) : (\n \n )}\n
\n
\n
\n \n {label}\n
\n
\n {description}\n
\n \n {isActive ? (\n \n {children}\n \n ) : (\n <>\n )}\n \n \n );\n}\n\nexport default ConditionBox;\n","import { useContext } from 'react';\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport { Context } from '../Store';\nimport { formatPositiveNumber, isNumber } from '../functions/formatters';\nimport ConditionBox from './ConditionBox';\n\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\n\ninterface ClassicOpenConditionBoxesProps {\n selectedCollateral:any;\n selectedCollateralId:string;\n showDisclaimerMessage:boolean;\n stateMinCollateralRatio:string;\n stateCritCollateralRatio:string;\n collateralRatio:string;\n isCollateralRatioValid:boolean;\n newTCREstimate:string;\n collateralInputVal:string;\n borrowInputVal:string;\n borrowRate:string;\n isBorrowingFeeValid:boolean;\n borrowFee:string;\n isTotalDebtValid:boolean;\n totalDebt:string;\n isLiqReserveValid:boolean;\n liqReserve:string;\n isLiqPriceNormalValid:boolean;\n liqPriceNormal:string;\n isLiqPriceRecoveryValid:boolean;\n liqPriceRecovery:string;\n isCollateralRatioRankValid:boolean;\n collateralRatioRank:string;\n isCRRankNearLast:boolean;\n className?: string;\n}\n\nconst ClassicOpenConditionBoxes = (props: ClassicOpenConditionBoxesProps) => {\n let {\n selectedCollateral={},\n selectedCollateralId ='',\n showDisclaimerMessage = false,\n stateMinCollateralRatio ='',\n stateCritCollateralRatio ='',\n collateralRatio ='',\n isCollateralRatioValid = false,\n newTCREstimate ='',\n collateralInputVal ='',\n borrowInputVal ='',\n borrowRate ='',\n isBorrowingFeeValid = false,\n borrowFee ='',\n isTotalDebtValid = false,\n totalDebt ='',\n isLiqReserveValid = false,\n liqReserve ='',\n isLiqPriceNormalValid = false,\n liqPriceNormal ='',\n isLiqPriceRecoveryValid = false,\n liqPriceRecovery ='',\n isCollateralRatioRankValid=false,\n collateralRatioRank='',\n isCRRankNearLast=false\n } = props;\n\n const [state]: any = useContext(Context);\n\n\n\n return (\n
\n
\n
\n \n
\n
\n {formatPositiveNumber(collateralRatio, 3)}\n {' %'}\n
\n
\n \n
\n
\n \n {'One time fee of ' +\n (borrowRate !== '' && isNumber(borrowRate)\n ? formatPositiveNumber((safeMult(borrowRate, '100')), 2) + '% '\n : '0.5% ') +\n 'incurred when your position is opened and when you increase your debt. This amount is added to your total debt.'}\n \n }\n isValid={isBorrowingFeeValid}\n isActive={collateralInputVal !== '' && borrowInputVal !== ''}\n >\n
\n {formatPositiveNumber(borrowFee)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {formatPositiveNumber(totalDebt, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {collateralRatioRank}\n
\n \n
\n
\n
\n
\n \n
\n {formatPositiveNumber(liqReserve, 2)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {'$'}\n {formatPositiveNumber(liqPriceNormal, 2)}\n
\n \n
\n
\n \n
\n {'$'}\n {formatPositiveNumber(liqPriceRecovery, 2)}\n
\n \n
\n
\n
\n );\n};\n\nexport default ClassicOpenConditionBoxes;\n","import { useContext } from 'react';\nimport { Context } from '../Store';\nimport { formatPositiveNumber, isNumber } from '../functions/formatters';\nimport ConditionBox from './ConditionBox';\n\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport { safeMult } from '../functions/safeMath';\n\ninterface LeverageOpenConditionBoxesProps {\n selectedCollateral:any;\n totalERNBorrowed:string;\n isTotalERNBorrowedValid:boolean;\n ernInWallet:string;\n isERNInWalletValid:boolean;\n totalTroveCollateral:string;\n isTotalTroveCollateralValid:boolean;\n collateralInputVal:string;\n tcrInputVal:string;\n iterationsInputVal:string;\n borrowRate:string;\n isBorrowingFeeValid:boolean;\n borrowFee:string;\n isTotalDebtValid:boolean;\n totalDebt:string;\n isLiqReserveValid:boolean;\n liqReserve:string;\n isLiqPriceNormalValid:boolean;\n liqPriceNormal:string;\n isLiqPriceRecoveryValid:boolean;\n liqPriceRecovery:string;\n isCollateralRatioRankValid:boolean;\n collateralRatioRank:string;\n isCRRankNearLast:boolean;\n className?: string;\n}\n\nconst LeverageOpenConditionBoxes = (props: LeverageOpenConditionBoxesProps) => {\n let {\n selectedCollateral={},\n totalERNBorrowed ='',\n isTotalERNBorrowedValid = false,\n ernInWallet ='',\n isERNInWalletValid =false,\n totalTroveCollateral ='',\n isTotalTroveCollateralValid = false,\n collateralInputVal ='',\n tcrInputVal ='',\n iterationsInputVal ='',\n borrowRate ='',\n isBorrowingFeeValid = false,\n borrowFee ='',\n isTotalDebtValid = false,\n totalDebt ='',\n isLiqReserveValid = false,\n liqReserve ='',\n isLiqPriceNormalValid = false,\n liqPriceNormal ='',\n isLiqPriceRecoveryValid = false,\n liqPriceRecovery ='',\n isCollateralRatioRankValid=false,\n collateralRatioRank='',\n isCRRankNearLast=false\n } = props;\n\n const [state]: any = useContext(Context);\n\n\n\n return (\n
\n
\n
\n \n
\n
\n {formatPositiveNumber(totalTroveCollateral, 3)}\n {selectedCollateral !== undefined ? ' ' + selectedCollateral.ticker : ''}\n
\n
\n \n
\n
\n \n The estimated total amount of ERN that you will borrow after leveraging.\n \n }\n isValid={isTotalERNBorrowedValid}\n isActive={collateralInputVal !== '' && tcrInputVal !== '' && iterationsInputVal !== ''}\n >\n
\n {formatPositiveNumber(totalERNBorrowed, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n The estimated total amount of ERN that will be in your wallet after the last iteration.\n \n }\n isValid={isERNInWalletValid}\n isActive={collateralInputVal !== '' && tcrInputVal !== '' && iterationsInputVal !== ''}\n >\n
\n {formatPositiveNumber(ernInWallet, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n {'One time fee of ' +\n (borrowRate !== '' && isNumber(borrowRate)\n ? formatPositiveNumber((safeMult(borrowRate, '100')), 2) + '% '\n : '0.5% ') +\n 'incurred when your position is opened and when you increase your debt. This amount is added to your total debt.'}\n \n }\n isValid={isBorrowingFeeValid}\n isActive={collateralInputVal !== '' && tcrInputVal !== '' && iterationsInputVal !== ''}\n >\n
\n {formatPositiveNumber(borrowFee, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {collateralRatioRank}\n
\n \n
\n
\n
\n
\n \n
\n {formatPositiveNumber(totalDebt, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {formatPositiveNumber(liqReserve, 2)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {'~$'}\n {formatPositiveNumber(liqPriceNormal, 2)}\n
\n \n
\n
\n \n
\n {'~$'}\n {formatPositiveNumber(liqPriceRecovery, 2)}\n
\n \n
\n
\n
\n );\n};\n\nexport default LeverageOpenConditionBoxes;\n","import '../styling/InfoBox.css';\n\ninterface InfoBoxProps {\n children: any;\n title?: string;\n className?: string;\n}\n\nfunction InfoBox(props: InfoBoxProps) {\n return (\n \n
\n
\n {props.title &&\n
\n {props.title}\n
\n }\n
\n
\n {props.children}\n
\n
\n \n )\n}\n\nexport default InfoBox;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLeverage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 18,\n viewBox: \"0 0 17 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 2L14 6\",\n stroke: \"#B3B2B5\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3L13.6464 1.35355C13.8417 1.15829 14.1583 1.15829 14.3536 1.35355L16 3\",\n stroke: \"#B3B2B5\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.29726 1.51795C2.05248 1.51795 1.85293 1.72303 1.85293 1.97016V2.85202C1.85293 3.10661 2.05985 3.30423 2.29726 3.30423H7.92372C8.15186 3.30423 8.35658 3.11498 8.36806 2.84701V1.97016C8.36806 1.71557 8.16113 1.51795 7.92372 1.51795H2.29726ZM1.33498 1.97016C1.33498 1.44921 1.75433 1 2.29726 1H7.92372C8.44589 1 8.88601 1.42822 8.88601 1.97016V2.8566L8.88585 2.86116C8.86726 3.38754 8.45399 3.82218 7.92372 3.82218H2.29726C1.7751 3.82218 1.33498 3.39396 1.33498 2.85202V1.97016Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.68986 3.52248L1.94561 3.5632C2.20136 3.60394 2.20136 3.60395 2.20136 3.60397L2.19748 3.62818L2.18644 3.69656C2.17686 3.75561 2.16302 3.84037 2.14593 3.94339C2.11176 4.14938 2.06455 4.42868 2.01245 4.72156C1.9604 5.01414 1.90322 5.3217 1.84912 5.58376C1.79645 5.83889 1.74294 6.07016 1.69676 6.19751C1.63327 6.3726 1.59217 6.67354 1.56933 7.03244C1.54702 7.38297 1.54348 7.76019 1.54348 8.07209C1.54348 8.15365 1.5386 8.25261 1.53309 8.36428C1.51466 8.73775 1.48922 9.25347 1.61588 9.73633C1.69541 10.0395 1.82988 10.299 2.04489 10.4804C2.25607 10.6585 2.57263 10.7846 3.0641 10.7717L3.0675 10.7716H3.0709C3.12299 10.7716 3.17665 10.7835 3.22454 10.8051C3.26268 10.8222 3.32192 10.8568 3.36582 10.9214C3.43419 11.0029 3.58119 11.163 3.79726 11.2695C4.01542 11.377 4.31379 11.4355 4.70205 11.2749L4.71008 11.2716L4.71832 11.2688C4.8678 11.2184 5.01066 11.2725 5.09771 11.3606L5.10778 11.3707L5.11667 11.382C5.18552 11.469 5.34939 11.6428 5.59461 11.7443C5.8292 11.8414 6.15762 11.8812 6.58982 11.6781L6.95895 11.5046V14.7857C6.95895 15.1834 7.27929 15.4939 7.65647 15.4939C8.04279 15.4939 8.35399 15.1741 8.35399 14.7857V8.35657C8.35399 8.10348 8.57585 7.93359 8.81074 7.97318L8.81453 7.97382C9.06598 8.02005 9.385 8.22587 9.72764 8.73762C9.95331 9.06671 10.302 9.33413 10.6357 9.42177C10.799 9.46467 10.9496 9.4625 11.0813 9.41519C11.2108 9.36867 11.3432 9.27103 11.4606 9.08561L11.4631 9.08164C11.4784 9.05854 11.4824 9.03891 11.482 9.02437C11.4817 9.01051 11.4773 8.99199 11.4601 8.96962L11.4581 8.96711L11.4563 8.96455C11.3335 8.79659 11.1454 8.52604 10.9692 8.22656C10.7957 7.93176 10.6227 7.59086 10.543 7.28531C10.4548 6.96128 10.2859 6.64961 10.0903 6.38922C9.8931 6.12663 9.68038 5.93157 9.51837 5.83211L9.51367 5.82922L9.5091 5.82614C9.31505 5.69533 8.95012 5.44141 8.62951 5.06925C8.30821 4.69629 8.0185 4.18941 8.00242 3.55554L8.52021 3.54241C8.53227 4.01799 8.74894 4.41431 9.02193 4.73119C9.29351 5.04643 9.60801 5.26802 9.79431 5.39375C10.0249 5.53653 10.2813 5.78104 10.5045 6.07816C10.7306 6.37928 10.9343 6.74988 11.0432 7.15083L11.0439 7.15345C11.1049 7.38803 11.2482 7.67949 11.4155 7.96386C11.5796 8.24269 11.7564 8.49733 11.8728 8.65667C12.0388 8.87496 12.0375 9.14979 11.897 9.36462C11.7263 9.63335 11.5074 9.81247 11.2564 9.90265C11.007 9.99224 10.747 9.98652 10.5041 9.92273C10.0259 9.79712 9.58025 9.43919 9.29951 9.02914L9.29794 9.02685C9.12158 8.76323 8.97514 8.62612 8.87195 8.55538V14.7857C8.87195 15.4497 8.33918 16.0118 7.65647 16.0118C6.99276 16.0118 6.441 15.4689 6.441 14.7857V12.2825C6.03313 12.3901 5.6807 12.3405 5.39651 12.2229C5.11434 12.1061 4.91136 11.9275 4.78952 11.7955C4.29783 11.966 3.88249 11.8889 3.5683 11.7341C3.29075 11.5973 3.09934 11.4038 3.00008 11.2906C2.44669 11.2913 2.02334 11.1398 1.71094 10.8763C1.38793 10.6039 1.21118 10.2349 1.11488 9.86775C0.964516 9.29453 0.998113 8.64918 1.01711 8.28426C1.02175 8.19507 1.02553 8.12263 1.02553 8.07209C1.02553 7.75816 1.02902 7.36731 1.05242 6.99954C1.0753 6.64014 1.11859 6.27258 1.20983 6.02095C1.24102 5.93495 1.28772 5.74129 1.34187 5.47903C1.39458 5.22371 1.45081 4.92143 1.5025 4.63084C1.55414 4.34056 1.601 4.06335 1.63496 3.85863C1.65194 3.7563 1.66568 3.67216 1.67517 3.61364L1.68608 3.54603L1.68986 3.52248Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.69997 10.0889C6.843 10.0889 6.95895 10.2049 6.95895 10.3479V11.8983C6.95895 12.0413 6.843 12.1572 6.69997 12.1572C6.55694 12.1572 6.44099 12.0413 6.44099 11.8983V10.3479C6.44099 10.2049 6.55694 10.0889 6.69997 10.0889Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.73572 10.3755C4.87758 10.3938 4.97774 10.5236 4.95944 10.6655C4.92677 10.9188 5.00475 11.1347 5.09834 11.2944C5.14491 11.3739 5.19374 11.4364 5.23033 11.4785C5.24851 11.4994 5.26335 11.5149 5.2729 11.5245C5.27767 11.5293 5.28109 11.5325 5.28291 11.5343L5.28433 11.5356C5.38989 11.6312 5.39853 11.7942 5.30342 11.9004C5.208 12.0069 5.04427 12.0159 4.93773 11.9205L5.11045 11.7276C4.93773 11.9205 4.93765 11.9204 4.93757 11.9203L4.9374 11.9202L4.93702 11.9199L4.93612 11.919L4.9338 11.9169L4.92709 11.9107C4.92174 11.9056 4.91467 11.8988 4.90614 11.8902C4.8891 11.8731 4.86613 11.849 4.83948 11.8184C4.7864 11.7574 4.71743 11.6688 4.65147 11.5563C4.52 11.3319 4.39401 11.0003 4.44574 10.5992C4.46404 10.4574 4.59387 10.3572 4.73572 10.3755Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.0337 10.0057C3.17555 10.024 3.27571 10.1538 3.25741 10.2957C3.22474 10.5489 3.30272 10.7649 3.39631 10.9246C3.44288 11.004 3.49171 11.0666 3.5283 11.1087C3.54649 11.1296 3.56132 11.1451 3.57088 11.1547C3.57564 11.1594 3.57906 11.1627 3.58088 11.1644L3.5823 11.1658C3.68786 11.2613 3.69651 11.4243 3.6014 11.5305C3.50597 11.6371 3.34225 11.6461 3.2357 11.5507L3.40848 11.3577C3.2357 11.5507 3.23578 11.5507 3.2357 11.5507L3.23499 11.55L3.2341 11.5492L3.23177 11.5471L3.22507 11.5408C3.21972 11.5358 3.21264 11.5289 3.20411 11.5204C3.18707 11.5033 3.1641 11.4792 3.13745 11.4486C3.08437 11.3875 3.0154 11.299 2.94944 11.1864C2.81797 10.9621 2.69199 10.6304 2.74372 10.2294C2.76201 10.0875 2.89184 9.98738 3.0337 10.0057Z\",\n fill: \"#B3B2B5\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.2357 11.5507C3.34225 11.6461 3.50597 11.6371 3.6014 11.5305C3.69651 11.4243 3.68786 11.2613 3.5823 11.1658L3.58088 11.1644C3.57906 11.1627 3.57564 11.1594 3.57088 11.1547C3.56132 11.1451 3.54649 11.1296 3.5283 11.1087C3.49171 11.0666 3.44288 11.004 3.39631 10.9246C3.30272 10.7649 3.22474 10.5489 3.25741 10.2957C3.27571 10.1538 3.17555 10.024 3.0337 10.0057C2.89184 9.98738 2.76201 10.0875 2.74372 10.2294C2.69199 10.6304 2.81797 10.9621 2.94944 11.1864C3.0154 11.299 3.08437 11.3875 3.13745 11.4486C3.1641 11.4792 3.18707 11.5033 3.20411 11.5204C3.21264 11.5289 3.21972 11.5358 3.22507 11.5408L3.23177 11.5471L3.2341 11.5492L3.23499 11.55L3.2357 11.5507ZM3.2357 11.5507L3.40848 11.3577C3.2357 11.5507 3.23578 11.5507 3.2357 11.5507Z\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.61298 7.21573C8.75601 7.21573 8.87196 7.33168 8.87196 7.4747V8.81173C8.87196 8.95476 8.75601 9.0707 8.61298 9.0707C8.46995 9.0707 8.354 8.95476 8.354 8.81173V7.4747C8.354 7.33168 8.46995 7.21573 8.61298 7.21573Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.40589 14.3275C5.54892 14.3275 5.66486 14.4435 5.66486 14.5865V15.0417C5.66486 16.1388 6.55032 17.03 7.62834 17.03C8.70636 17.03 9.59182 16.1388 9.59182 15.0417V14.5865C9.59182 14.4435 9.70777 14.3275 9.85079 14.3275C9.99382 14.3275 10.1098 14.4435 10.1098 14.5865V15.0417C10.1098 16.4194 8.99784 17.548 7.62834 17.548C6.25885 17.548 5.14691 16.4194 5.14691 15.0417V14.5865C5.14691 14.4435 5.26286 14.3275 5.40589 14.3275Z\",\n fill: \"#B3B2B5\",\n stroke: \"#B3B2B5\",\n strokeWidth: 0.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeverage);\nexport default __webpack_public_path__ + \"static/media/leverage.2d190aca.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgLink(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_725_12290)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.026 5C10.4863 5 10.8594 5.3731 10.8594 5.83333C10.8594 6.29357 10.4863 6.66667 10.026 6.66667H5.02604V15.8333H14.1927V10.8333C14.1927 10.3731 14.5658 10 15.026 10C15.4863 10 15.8594 10.3731 15.8594 10.8333V15.8333C15.8594 16.7538 15.1132 17.5 14.1927 17.5H5.02604C4.10557 17.5 3.35938 16.7538 3.35938 15.8333V6.66667C3.35938 5.74619 4.10557 5 5.02604 5H10.026ZM17.526 2.5C17.9863 2.5 18.3594 2.8731 18.3594 3.33333V7.5C18.3594 7.96023 17.9863 8.33333 17.526 8.33333C17.0658 8.33333 16.6927 7.96023 16.6927 7.5V5.34517L9.78196 12.2559C9.45654 12.5813 8.92889 12.5813 8.60345 12.2559C8.27802 11.9305 8.27802 11.4028 8.60345 11.0774L15.5142 4.16667H13.3594C12.8991 4.16667 12.526 3.79357 12.526 3.33333C12.526 2.8731 12.8991 2.5 13.3594 2.5H17.526Z\",\n fill: \"#08001C\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_725_12290\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\",\n transform: \"translate(0.859375)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLink);\nexport default __webpack_public_path__ + \"static/media/link.05a26e82.svg\";\nexport { ForwardRef as ReactComponent };","import Button from './../Button';\nimport Modal from './Modal';\n\ninterface LeverageWarningModalProps {\n isOpen:boolean;\n handleClose?: () => void;\n className?: string;\n}\n\nconst LeverageWarningModal = (props: LeverageWarningModalProps) => {\n const {\n isOpen = false,\n handleClose = () => {},\n } = props;\n\n return (\n <>\n {isOpen ? (\n \n
\n Using leverage while ERN is below peg may not be in your best interest.\n {/* */}\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default LeverageWarningModal;\n","import Modal from './Modal';\n\ninterface CollateralHelpModalProps {\n isOpen:boolean;\n handleClose?: () => void;\n className?: string;\n}\n\nconst CollateralHelpModal = (props: CollateralHelpModalProps) => {\n const {\n isOpen = false,\n handleClose = () => {},\n } = props;\n\n return (\n <>\n {isOpen ? (\n \n
\n Frequently Asked Questions\n
\n
\n

What is this for?

\n

\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n

\n
\n
\n

What is this for?

\n

\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n

\n
\n
\n

What is this for?

\n

\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n

\n
\n
\n

What is this for?

\n

\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n

\n
\n
\n

What is this for?

\n

\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah Blah Blah blah\n

\n
\n
\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default CollateralHelpModal;\n","import { useContext } from 'react';\nimport Button from '../Button';\nimport Modal from './Modal';\nimport { Context } from '../../Store';\nimport { formatPositiveNumber } from '../../functions/formatters';\nimport { ReactComponent as LinkIcon } from '../../assets/icons/link.svg';\n\ninterface RankWarningModalProps {\n isOpen:boolean;\n collateralRatio:string;\n handleClose?: () => void;\n handleSubmit: () => void;\n className?: string;\n}\n\nconst REDEMPTION_DOCS_URL = 'https://docs.ethos.finance/understanding-ethos-reserve/how-redemptions-work';\n\nconst RankWarningModal = (props: RankWarningModalProps) => {\n const {\n isOpen = false,\n collateralRatio = '',\n handleClose = () => {},\n handleSubmit = () => {},\n } = props;\n\n const [state]: any = useContext(Context);\n\n return (\n <>\n {isOpen ? (\n \n\n
\n Critically Low Collateral Ratio Ranking\n \n {`Opening this trove with a collateral ratio of ${formatPositiveNumber(collateralRatio,0)}% \n will place it among the worst ranked troves. \n This may lead to your trove being redeemed,\n especially when ${state.stabilityCoin?.ticker} is below peg.\n To improve your rank and decrease the risk of redemption \n consider increasing your collateral ratio.`}\n \n
\n \n \n
\n Learn More\n \n
\n \n
\n
\n \n \n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default RankWarningModal;","import { useContext, useEffect, useState, useRef } from 'react';\n\nimport '../styling/NewPositionPage.css';\n\nimport Button from './Button';\n\nimport { isErrorMsg, formatPositiveNumber, isNumber } from '../functions/formatters';\n\nimport { Context } from '../Store';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport { getChainCollateralFromId, getChainConfigFromId } from '../functions/chainHelpers';\nimport { Coin, LeverageCalculationsInterface } from '../storage/Types';\nimport {\n isGreaterThan,\n isGreaterThanOrEqual,\n isLessThanOrEqual,\n isZero,\n safeAdd,\n safeSub,\n safeDiv,\n safeMult,\n isLessThan,\n bottomNPercentofNum,\n} from '../functions/safeMath';\nimport {\n approveSpend,\n getBorrowingRateWithDecay,\n getMinDebtAndCompensation,\n getTokenBalance,\n openTrove,\n getAllowance,\n estimateNewTCR,\n leverToTargetCRWithIterations,\n getCollateralDebtLimit,\n} from '../functions/blockchainRouter';\nimport {\n getUnstakedCollateralPositions,\n editUserCollateralPosition,\n editUserCollateralBalance,\n getCollateralData,\n getUserLiquidationPrice,\n checkIfLeverageIsDisabled,\n refreshCollateralStatus,\n} from '../functions/stateHelpers';\nimport { useNavigate } from 'react-router-dom';\n\nimport ClassicOpenInputs from './ClassicOpenInputs';\nimport LeverageOpenInputs from './LeverageOpenInputs';\nimport ClassicOpenConditionBoxes from './ClassicOpenConditionBoxes';\nimport LeverageOpenConditionBoxes from './LeverageOpenConditionBoxes';\nimport InfoBox from './InfoBox';\n\nimport { ReactComponent as LeverageIcon } from '../assets/icons/leverage.svg';\nimport { ReactComponent as HelpIcon } from '../assets/icons/help.svg';\nimport { ReactComponent as LinkIcon } from '../assets/icons/link.svg';\nimport { LeverageConfig } from '../storage/LeverageConfig';\nimport LeverageWarningModal from './modals/LeverageWarningModal';\nimport CollateralHelpModal from './modals/CollateralHelpModal';\nimport ToolTip from './Tooltip';\nimport RankWarningModal from './modals/RankWarningModal';\n\ninterface NewPositionPageProps {\n collateralId?: string;\n className?: string;\n}\n\ninterface MinDebtAndCompensation {\n minNetDebt: string;\n gasCompensation: string;\n}\n\nconst MAX_ITERATIONS = \"15\";\n\nfunction NewPositionPage(props: NewPositionPageProps) {\n const navigate = useNavigate();\n const [state, dispatch]: any = useContext(Context);\n const [maxCollateralAvailable, setMaxCollateralAvailable] = useState('');\n\n const [isLeverageModeEnabled, setIsLeverageModeEnabled] = useState(false);\n\n const [collateralInputVal, setCollateralInputVal] = useState('');\n const [borrowInputVal, setBorrowInputVal] = useState('');\n const [targetCRInputVal, setTargetCRInputVal] = useState('');\n const [iterationsInputVal, setIterationsInputVal] = useState('');\n\n const [selectedCollateralId, setSelectedCollateralId] = useState(\n props.collateralId ? props.collateralId : ''\n );\n const [selectedCollateral, setSelectedCollateral] = useState(undefined);\n const [selectedCollateralPrice, setSelectedCollateralPrice] = useState('');\n\n const [borrowFee, setBorrowFee] = useState('');\n const [isBorrowingFeeValid, setIsBorrowingFeeValid] = useState(true);\n const [borrowRate, setBorrowRate] = useState('');\n const [minBorrow, setMinBorrow] = useState('');\n const [totalDebt, setTotalDebt] = useState('');\n const [isTotalDebtValid, setIsTotalDebtValid] = useState(true);\n const [collateralRatio, setCollateralRatio] = useState('');\n const [isCollateralRatioValid, setIsCollateralRatioValid] = useState(true);\n const [liqReserve, setLiqReserve] = useState('');\n const [isLiqReserveValid, setIsLiqReserveValid] = useState(true);\n const [liqPriceNormal, setLiqPriceNormal] = useState('');\n const [isLiqPriceNormalValid, setIsLiqPriceNormalValid] = useState(true);\n const [liqPriceRecovery, setLiqPriceRecovery] = useState('');\n const [isLiqPriceRecoveryValid, setIsLiqPriceRecoveryValid] = useState(true);\n const [collateralRatioRank, setCollateralRatioRank] = useState('');\n const [isCollateralRatioRankValid, setIsCollateralRatioRankValid] = useState(true);\n const [isCRRankNearLast, setIsCRRankNearLast] = useState(false);\n\n const [totalTroveCollateral, setTotalTroveCollateral] = useState('');\n const [isTotalTroveCollateralValid, setIsTotalTroveCollateralValid] = useState(true);\n const [totalERNBorrowed, setTotalERNBorrowed] = useState('');\n const [isTotalERNBorrowedValid, setIsTotalERNBorrowedValid] = useState(true);\n const [ernInWallet, setERNInWallet] = useState('');\n const [isERNInWalletValid, setIsERNInWalletValid] = useState(true);\n const [ernBorrowedInFirstIteration, setERNBorrowedInFirstIteration] = useState('');\n\n const [newTCREstimate, setNewTCREstimate] = useState('');\n const [debtLimit, setDebtLimit] = useState('');\n\n const [showDisclaimerMessage, setShowDisclaimerMessage] = useState(false);\n const [disclaimerMessage, setDisclaimerMessage] = useState('');\n\n const [showLeverageWarning, setShowLeverageWarning] = useState(false);\n const [showCollateralHelpModal, setShowCollateralHelpModal] = useState(false);\n const [showRankWarningModal, setShowRankWarningModal] = useState(false);\n\n let { className = '' } = props;\n\n const stateCollPrice = state[selectedCollateralId + 'Price'];\n const stateCollStatus = state[selectedCollateralId + 'Status'];\n const stateMinCollateralRatio = state[selectedCollateralId + 'MinCollateralRatio'];\n const stateCritCollateralRatio = state[selectedCollateralId + 'CritCollateralRatio'];\n\n const classicOpenInputsRef = useRef(null);\n const leverageOpenInputsRef = useRef(null);\n\n useEffect(() => {\n if (state.walletProvider === undefined) {\n navigate('/dashboard');\n }\n }, [navigate, state.walletProvider]);\n\n useEffect(() => {\n if (stateCollStatus !== undefined && stateCollStatus === 'Active') {\n navigate('/dashboard');\n }\n }, [navigate, stateCollStatus]);\n\n useEffect(() => {\n resetInputs();\n resetConditionBoxes();\n resetDisclaimer();\n }, [isLeverageModeEnabled]);\n\n useEffect(() => {\n resetInputs();\n resetConditionBoxes();\n resetDisclaimer();\n cancel();\n }, [selectedCollateralId]);\n\n useEffect(() => {\n if (\n isLeverageModeEnabled &&\n !state.isLeverageWarningRead &&\n isNumber(state.stabilityCoinPrice) &&\n isLessThan(state.stabilityCoinPrice, '1')\n ) {\n openLeverageWarning();\n }\n }, [isLeverageModeEnabled, state.stabilityCoinPrice, state.isLeverageWarningRead]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.walletProvider !== undefined &&\n props.collateralId === undefined\n ) {\n const availableCollateral = getUnstakedCollateralPositions(state);\n if (availableCollateral.length !== 0) {\n setSelectedCollateralId(availableCollateral[0].uid);\n }\n }\n // it wants 'state' in the dep array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.chainView, state.walletProvider, props.collateralId]);\n\n useEffect(() => {\n if (selectedCollateralId !== '') {\n const collateral = getCoinFromUID(selectedCollateralId);\n if (collateral !== undefined) {\n setSelectedCollateral(collateral);\n }\n if (stateCollPrice !== undefined) {\n setSelectedCollateralPrice(stateCollPrice);\n }\n }\n }, [selectedCollateralId, stateCollPrice]);\n\n useEffect(() => {\n const userCollAmount = !isLeverageModeEnabled ? collateralInputVal : totalTroveCollateral;\n const userBorrowAmount = !isLeverageModeEnabled ? borrowInputVal : totalERNBorrowed;\n const mcr = stateMinCollateralRatio;\n const ccr = stateCritCollateralRatio;\n if (\n selectedCollateralId !== '' &&\n isNumber(userCollAmount) &&\n isNumber(userBorrowAmount) &&\n isNumber(mcr) &&\n isNumber(ccr)\n ) {\n setLiqPriceNormal(getUserLiquidationPrice(userCollAmount, userBorrowAmount, mcr));\n setLiqPriceRecovery(getUserLiquidationPrice(userCollAmount, userBorrowAmount, ccr));\n }\n }, [\n selectedCollateralId,\n collateralInputVal,\n borrowInputVal,\n stateMinCollateralRatio,\n stateCritCollateralRatio,\n totalERNBorrowed,\n totalTroveCollateral,\n isLeverageModeEnabled\n ]);\n\n useEffect(() => {\n let isMounted = true;\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.chainView !== '' &&\n state.connectedChain !== '' &&\n state.chainView === state.connectedChain\n ) {\n getBorrowingRateWithDecay(state.chainView, state.appVersion, state.walletProvider).then((borrowingRate) => {\n if (!isErrorMsg(borrowingRate) && isMounted) {\n setBorrowRate(borrowingRate.data);\n }\n });\n getMinDebtAndCompensation(state.chainView, state.appVersion, state.walletProvider).then((res) => {\n if (!isErrorMsg(res)) {\n const { minNetDebt, gasCompensation } = res.data as MinDebtAndCompensation;\n if (minNetDebt !== undefined && gasCompensation !== undefined && isMounted) {\n setMinBorrow(minNetDebt);\n setLiqReserve(gasCompensation);\n }\n }\n });\n if (selectedCollateral !== undefined) {\n getTokenBalance(\n selectedCollateral.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxCollateralAvailable(balance.data);\n }\n });\n getCollateralDebtLimit(\n selectedCollateral.addresses[state.chainView],\n state.chainView,\n state.appVersion,\n state.walletProvider\n ).then((limit: any) => {\n if (!isErrorMsg(limit) && isMounted) {\n setDebtLimit(limit.data);\n }\n });\n }\n }\n return () => {\n isMounted = false;\n };\n }, [\n state.walletProvider,\n state.walletAddress,\n selectedCollateral,\n state.chainView,\n state.connectedChain,\n state.appVersion\n ]);\n\n\n useEffect(() => {\n if (isNumber(borrowRate) && isNumber(borrowInputVal)) {\n setBorrowFee(safeMult(borrowInputVal, borrowRate));\n }\n }, [borrowRate, borrowInputVal]);\n\n useEffect(() => {\n if (isNumber(borrowInputVal) && isNumber(borrowFee) && isNumber(liqReserve)) {\n const sumA = safeAdd(borrowInputVal, liqReserve);\n const totalSum = safeAdd(sumA, borrowFee);\n setTotalDebt(totalSum);\n }\n }, [borrowInputVal, borrowFee, liqReserve]);\n\n useEffect(() => {\n if (selectedCollateralId !== '' && state.chainView !== '' && !isLeverageModeEnabled) {\n const collateralPosition = getCollateralData(selectedCollateralId, state);\n if (isNumber(collateralInputVal) && isNumber(totalDebt) && collateralPosition !== undefined) {\n if (isLessThanOrEqual(totalDebt, '0')) {\n setIsCollateralRatioValid(false);\n } else {\n if (\n isNumber(selectedCollateralPrice) &&\n isNumber(collateralPosition.minimumCollateralRatio) &&\n isGreaterThan(collateralInputVal, '0') &&\n isGreaterThan(selectedCollateralPrice, '0')\n ) {\n const collMult = safeMult(collateralInputVal, selectedCollateralPrice);\n const ratioRaw = safeDiv(collMult, totalDebt);\n checkPositionRank(ratioRaw, state[`${selectedCollateralId}AllOpenTroves`]);\n const ratioPercent = safeMult(ratioRaw, '100');\n setCollateralRatio(ratioPercent);\n if (isLessThanOrEqual(ratioRaw, collateralPosition.minimumCollateralRatio)) {\n setIsCollateralRatioValid(false);\n setDisclaimerMessage('');\n setShowDisclaimerMessage(false);\n } else {\n setIsCollateralRatioValid(true);\n checkIfCRWithinLiquidateRange(ratioRaw, collateralPosition);\n }\n }\n }\n } else {\n setCollateralRatio('');\n setCollateralRatioRank('');\n setIsCRRankNearLast(false);\n }\n } else if (selectedCollateralId !== '' && targetCRInputVal !== '' && state.chainView !== '' && isLeverageModeEnabled) {\n const collateralPosition = getCollateralData(selectedCollateralId, state);\n const targetCRRaw = safeDiv(targetCRInputVal, '100');\n checkIfCRWithinLiquidateRange(targetCRRaw, collateralPosition);\n checkPositionRank(targetCRRaw, state[`${selectedCollateralId}AllOpenTroves`]);\n }\n // it wants 'state' in the dep array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n collateralInputVal,\n totalDebt,\n selectedCollateralPrice,\n selectedCollateralId,\n targetCRInputVal,\n state.chainView,\n ]);\n\n useEffect(() => {\n if (!isNumber(collateralInputVal) || !isNumber(borrowInputVal)) {\n setIsCollateralRatioValid(true);\n setIsBorrowingFeeValid(true);\n setIsTotalDebtValid(true);\n setIsLiqReserveValid(true);\n setIsLiqPriceNormalValid(true);\n setIsLiqPriceRecoveryValid(true);\n setIsCollateralRatioRankValid(true);\n }\n }, [collateralInputVal, borrowInputVal]);\n\n useEffect(() => {\n if (!isNumber(collateralInputVal) || !isNumber(targetCRInputVal) || !isNumber(iterationsInputVal)) {\n setIsTotalERNBorrowedValid(true);\n setIsTotalTroveCollateralValid(true);\n setIsERNInWalletValid(true);\n setIsBorrowingFeeValid(true);\n setIsTotalDebtValid(true);\n setIsLiqReserveValid(true);\n setIsLiqPriceNormalValid(true);\n setIsLiqPriceRecoveryValid(true);\n setIsCollateralRatioRankValid(true);\n }\n }, [collateralInputVal, targetCRInputVal, iterationsInputVal]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.walletProvider !== undefined &&\n state.stabilityCoin !== undefined &&\n selectedCollateralId !== '' &&\n collateralInputVal !== '' &&\n totalDebt !== ''\n ) {\n const coll = getCoinFromUID(selectedCollateralId);\n if (coll !== undefined) {\n const collAddr = coll.addresses[state.chainView];\n const debtAddr = state.stabilityCoin.addresses[state.chainView];\n const collChange = collateralInputVal !== '' ? collateralInputVal : '0';\n const debtChange = totalDebt !== '' ? totalDebt : '0';\n setNewTCREstimate('');\n estimateNewTCR(\n collAddr,\n collChange,\n debtAddr,\n debtChange,\n state.chainView, \n state.appVersion,\n state.walletProvider\n ).then((result) => {\n if (!isErrorMsg(result)) {\n setNewTCREstimate(result.data);\n }\n });\n }\n }\n }, [\n state.chainView,\n state.walletProvider,\n state.stabilityCoin,\n selectedCollateralId,\n collateralInputVal,\n totalDebt,\n state.appVersion\n ]);\n\n const resetInputs = () => {\n setBorrowInputVal('');\n setCollateralInputVal('');\n setTargetCRInputVal('');\n setIterationsInputVal('');\n }\n\n const resetConditionBoxes = () => {\n setTotalTroveCollateral('');\n setTotalERNBorrowed('');\n setERNInWallet('');\n setBorrowFee('');\n setTotalDebt('');\n setCollateralRatio('');\n setLiqPriceNormal('');\n setLiqPriceRecovery('');\n setCollateralRatioRank('');\n setIsCRRankNearLast(false);\n }\n\n const resetDisclaimer = () => {\n setShowDisclaimerMessage(false);\n setDisclaimerMessage('');\n }\n\n const cancel = () => {\n if (!isLeverageModeEnabled) {\n classicOpenInputsRef?.current?.cancel();\n } else {\n leverageOpenInputsRef?.current?.cancel();\n }\n };\n\n const submitInputsClassic = (collInput:string, borrowInput:string) => {\n setCollateralInputVal(collInput);\n setBorrowInputVal(borrowInput)\n }\n\n const submitInputsLeverage = (collInput:string, tcrInput:string, iterationsInput:string, leverageData:LeverageCalculationsInterface|undefined) => {\n setCollateralInputVal(collInput);\n setTargetCRInputVal(tcrInput);\n setIterationsInputVal(iterationsInput);\n if (leverageData) {\n setTotalTroveCollateral(leverageData.totalTroveCollateral);\n setTotalERNBorrowed(leverageData.totalERNBorrowed);\n setERNInWallet(leverageData.ernInWallet);\n setBorrowFee(leverageData.borrowFee);\n setTotalDebt(leverageData.totalTroveDebt);\n setERNBorrowedInFirstIteration(leverageData.ernBorrowedInFirstIteration);\n } else {\n setTotalTroveCollateral('');\n setTotalERNBorrowed('');\n setERNInWallet('');\n setBorrowFee('');\n setTotalDebt('');\n setERNBorrowedInFirstIteration('');\n setCollateralRatioRank('');\n setIsCRRankNearLast(false);\n }\n }\n\n const handleRankWarningAccepted = () => {\n setShowRankWarningModal(false);\n openPosition();\n }\n\n const isOpenPositionClassicDisabled = () => {\n if (state.appVersion !== '2_1') {\n return true;\n }\n return (\n collateralInputVal === '' ||\n borrowInputVal === '' ||\n !isCollateralRatioValid ||\n !isNumber(collateralInputVal) ||\n !isNumber(borrowInputVal) ||\n isZero(collateralInputVal) ||\n isZero(borrowInputVal)\n )\n };\n\n const isOpenPositionLeverageDisabled = () => {\n if (state.appVersion !== '2_1') {\n return true;\n }\n return (\n collateralInputVal === '' ||\n targetCRInputVal === '' ||\n iterationsInputVal === '' ||\n !isTotalTroveCollateralValid ||\n !ernBorrowedInFirstIteration ||\n !isNumber(collateralInputVal) ||\n !isNumber(targetCRInputVal) ||\n !isNumber(iterationsInputVal) ||\n !isNumber(ernBorrowedInFirstIteration)\n )\n };\n\n const openPosition = async () => {\n if (\n selectedCollateral !== undefined &&\n state.chainView !== ''\n ) {\n const collInput = collateralInputVal;\n const borrowInput = borrowInputVal;\n const collId = selectedCollateral.uid;\n\n const collAddr = selectedCollateral.addresses[state.chainView];\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n\n dispatch({ type: 'isTxModalOpen', content: true });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n const collTokenTicker = selectedCollateral !== undefined ? selectedCollateral.ticker : 'tokens';\n let currentTxMessages = [\n {\n inProgress: `You must approve ${collInput} ${collTokenTicker} for deposit. Check your wallet to continue.`,\n success: `Successfully approved ${collInput} ${collTokenTicker}.`,\n failure: `Token approval failed or the transaction was rejected.`,\n pending: `Approve ${collTokenTicker} for deposit.`,\n },\n {\n inProgress: `Check your wallet to confirm your deposit of ${collInput} ${collTokenTicker}.`,\n success: `Successfully deposited ${collInput} ${collTokenTicker} and opened the position.`,\n failure: 'Open failed or the transaction was canceled.',\n pending: 'Waiting to open position.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n\n if (chainConfig !== undefined) {\n const contractAddr = !isLeverageModeEnabled ?\n chainConfig.contracts.borrowerOperationsAddr\n : \n chainConfig.contracts.leveragerAddr;\n const justOpen = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n if (!isLeverageModeEnabled) {\n openTrove(collAddr, collInput, borrowRate, borrowInput, state).then((openRes) => {\n if (!isErrorMsg(openRes)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n editUserCollateralPosition(collId, collInput, totalDebt, 'Active', state, dispatch);\n editUserCollateralBalance(collId, collInput, false, state, dispatch);\n navigate('/dashboard');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n } else {\n const targetCR = safeDiv(targetCRInputVal, '100');\n const iterations = iterationsInputVal;\n const collAmount = collateralInputVal;\n const useMaxIterations = iterations === MAX_ITERATIONS\n\n leverToTargetCRWithIterations(collAddr, targetCR, iterations, collAmount, borrowRate, ernBorrowedInFirstIteration, state, useMaxIterations).then((openRes) => {\n if (!isErrorMsg(openRes)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n refreshCollateralStatus(collId, state, dispatch);\n navigate('/dashboard');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n })\n }\n };\n const approveAndOpen = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n approveSpend(collAddr, contractAddr, collInput, state).then((approveRes) => {\n if (!isErrorMsg(approveRes)) {\n justOpen();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n getAllowance(collAddr, contractAddr, state).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(collInput, allowance)) {\n approveAndOpen();\n } else {\n justOpen();\n }\n } else {\n // if can't get allowance just approve it\n approveAndOpen();\n }\n });\n }\n }\n };\n\n const checkPositionRank = (collateralRatio:string, openTroves:any[]) => {\n const openTrovesCopy = [...openTroves];\n openTrovesCopy.push({ collateralRatio });\n openTrovesCopy.sort((a, b) => parseFloat(b.collateralRatio) - parseFloat(a.collateralRatio));\n const rank = openTrovesCopy.findIndex(obj => obj.collateralRatio === collateralRatio) + 1;\n const totalTroves = openTrovesCopy.length.toString();\n const gapUntilLast = safeSub(totalTroves, rank.toString());\n const trovesInDanger = isGreaterThanOrEqual(totalTroves, '10') ?\n bottomNPercentofNum('.15', totalTroves) : '5';\n if (rank && gapUntilLast && trovesInDanger && openTroves.length > 0) {\n setCollateralRatioRank(`#${rank} of ${totalTroves}`);\n setIsCRRankNearLast(isLessThanOrEqual(gapUntilLast, trovesInDanger));\n }\n }\n\n const checkIfCRWithinLiquidateRange = (ratioRaw: string, collateralPosition: any) => {\n if (\n isGreaterThanOrEqual(ratioRaw, collateralPosition.minimumCollateralRatio) &&\n isLessThanOrEqual(ratioRaw, collateralPosition.criticalCollateralRatio)\n ) {\n setDisclaimerMessage(`\n Your collateral ratio is below the critical collateral ratio value of ${safeMult(\n collateralPosition.criticalCollateralRatio,\n '100'\n )}%, \n meaning your position may be subject to partial liquidation in the event Ethos enters recovery mode or \n full liquidation if your collateral ratio falls below the minimum collateral ratio of ${safeMult(\n collateralPosition.minimumCollateralRatio,\n '100'\n )}%.\n `);\n setShowDisclaimerMessage(true);\n } else if (\n isLessThanOrEqual(safeSub(ratioRaw, collateralPosition.criticalCollateralRatio), '.2')\n ) {\n setDisclaimerMessage(`\n Your collateral ratio is nearing the critical collateral ratio of ${safeMult(\n collateralPosition.criticalCollateralRatio,\n '100'\n )}% \n meaning your position may be subject to partial liquidation in the event Ethos enters recovery mode.\n `);\n setShowDisclaimerMessage(true);\n } else {\n setDisclaimerMessage('');\n setShowDisclaimerMessage(false);\n }\n return;\n };\n\n const openLeverageWarning = () => {\n // setShowLeverageWarning(true);\n }\n\n const closeLeverageWarning = () => {\n setShowLeverageWarning(false);\n dispatch({ type: 'isLeverageWarningRead', content: true });\n }\n\n const buildOpenPositionDescriptionText = () => {\n let text = '';\n if (selectedCollateral !== undefined) {\n text =\n `You are opening\n ${(selectedCollateral.uid === 'btc' ? 'a ' : 'an ')}\n ${selectedCollateral.label}\n ${isLeverageModeEnabled ? ' leveraged ': ''}\n position. `;\n if (isNumber(collateralInputVal)) {\n text +=\n 'You are depositing ' +\n formatPositiveNumber(collateralInputVal) +\n ' ' +\n selectedCollateral.ticker +\n ' valued at $' +\n formatPositiveNumber(safeMult(collateralInputVal, selectedCollateralPrice), 2);\n }\n const borrowAmountToShow = isLeverageModeEnabled ? totalERNBorrowed : borrowInputVal;\n const collateralRatioToShow = isLeverageModeEnabled ? targetCRInputVal : collateralRatio;\n if (\n isNumber(collateralRatioToShow) &&\n isNumber(borrowAmountToShow) &&\n state.stabilityCoin !== undefined\n ) {\n text +=\n ` and borrowing \n ${isLeverageModeEnabled ? ' an estimated total of ': ''}\n ${formatPositiveNumber(borrowAmountToShow, 3)}\n ${state.stabilityCoin.ticker}\n at a collateral ratio of \n ${formatPositiveNumber(collateralRatioToShow, 3)}%.`;\n }\n }\n return

{text}

;\n };\n\n const buildCollateralSelectButtons = () => {\n const availableCollateral = getChainCollateralFromId(state.chainView, state.appVersion);\n\n const buildButton = (coinId: string) => {\n const coin = getCoinFromUID(coinId);\n const isOpen = isGreaterThan(state[coinId + 'CollateralAmount'], '0');\n if (coin !== undefined && !isOpen) {\n return (\n {\n if (selectedCollateralId !== coinId) {\n setMaxCollateralAvailable('');\n setSelectedCollateralId(coinId);\n setCollateralInputVal('');\n setBorrowInputVal('');\n }\n }}\n >\n \n \n );\n } else {\n return;\n }\n };\n\n if (availableCollateral !== undefined) {\n return (\n
\n {/*
Select Collateral
*/}\n
\n {availableCollateral.map((v) => buildButton(v))}\n
\n
\n );\n } else {\n return <>;\n }\n };\n\n const buildPositionTypeButtons = () => {\n const leverageDisabled = checkIfLeverageIsDisabled(selectedCollateralId, state);\n return (\n
\n {/*
Select Collateral
*/}\n
\n {\n setIsLeverageModeEnabled(!isLeverageModeEnabled);\n }}\n iconStart={\n \n }\n />\n {leverageDisabled &&\n \n Leverage is disabled while ERN is below $0.99 or the collateral is in recovery mode.\n \n }\n
\n
\n );\n };\n\n return (\n \n
\n
\n
\n
\n {selectedCollateral !== undefined && (\n
\n \"\"\n
\n )}\n
\n {`Open a New ${selectedCollateral !== undefined ? selectedCollateral.label : ''} Position`}\n
\n {/*
\n \n
*/}\n
\n
\n {`Deposit ${selectedCollateral?.ticker} to borrow ${state.stabilityCoin?.ticker}`}\n
\n
\n
\n {buildCollateralSelectButtons()}\n {(state.appVersion === '2_1' && !state.isMobile) &&\n buildPositionTypeButtons()\n }\n
\n
\n
\n {(state.appVersion === '2_1' && state.isMobile) &&\n buildPositionTypeButtons()\n }\n
\n {isLeverageModeEnabled &&\n \n
\n Using leverage can result in increased price sensitivity and may \n make closing your position more difficult in the event of a downward price movement. \n In addition, use of leverage can make liquidation more punishing. \n Please use Leverage Mode wisely and ensure you've planned for both positive and negative outcomes. \n \n
\n Read more about leverage here \n
\n
\n
\n
\n }\n {!isLeverageModeEnabled ?\n \n :\n \n }\n {!isLeverageModeEnabled && \n \n }\n {isLeverageModeEnabled && \n \n }\n {showDisclaimerMessage && (\n \n Caution\n

{disclaimerMessage}

\n
\n )}\n
\n
\n
{buildOpenPositionDescriptionText()}
\n
\n
\n \n setShowRankWarningModal(true) \n : openPosition\n }\n disabled={!isLeverageModeEnabled ?\n isOpenPositionClassicDisabled() \n : \n isOpenPositionLeverageDisabled()\n }\n />\n
\n
\n \n closeLeverageWarning()} />\n setShowCollateralHelpModal(false)} />\n setShowRankWarningModal(false)} \n handleSubmit={handleRankWarningAccepted} \n />\n \n );\n}\n\nexport default NewPositionPage;\n","var _path, _path2, _path3, _path4, _path5;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStErn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 22,\n viewBox: \"0 0 17 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.05043 0.867818C8.77046 0.710477 8.42865 0.710744 8.14892 0.868521L1.21741 4.77814C0.928628 4.94102 0.75 5.24686 0.75 5.57841V13.3792C0.75 13.7092 0.926996 14.0139 1.21369 14.1773L8.14477 18.1294C8.42685 18.2902 8.77288 18.2902 9.05497 18.1294L15.986 14.1773C16.2727 14.0139 16.4497 13.7092 16.4497 13.3792V5.5637C16.4497 5.23164 16.2706 4.92542 15.9811 4.76273L9.05043 0.867818ZM8.57378 1.62176C8.59022 1.61249 8.6103 1.61247 8.62675 1.62172L15.5574 5.51663C15.5744 5.52619 15.5849 5.54419 15.5849 5.5637V13.3792C15.5849 13.3986 15.5745 13.4165 15.5577 13.4261L8.62661 17.3781C8.61003 17.3876 8.5897 17.3876 8.57312 17.3781L1.64204 13.4261C1.6252 13.4165 1.61479 13.3986 1.61479 13.3792V5.57841C1.61479 5.55893 1.62529 5.54095 1.64226 5.53138L8.57378 1.62176Z\",\n fill: \"#B3B2B5\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.80333 5.49756C6.80378 5.49756 6.80417 5.49784 6.80432 5.49826C7.44977 7.39136 8.09559 9.28445 8.74422 11.1867C8.76279 11.2412 8.72425 11.3006 8.6667 11.3006V11.3006C7.30534 11.3006 5.94435 11.3024 4.58299 11.3006C3.58827 11.2988 2.83155 10.5427 2.8877 9.58879C2.92228 9.00218 3.21382 8.55138 3.75821 8.27223C4.71202 7.78309 5.6688 7.3004 6.62558 6.81699C6.68545 6.78653 6.70888 6.75249 6.71186 6.68655C6.73042 6.29852 6.75469 5.91117 6.77699 5.52317C6.77779 5.5092 6.78939 5.49878 6.80333 5.49756V5.49756V5.49756ZM7.75245 9.73271C7.75259 9.73257 7.75264 9.73237 7.75258 9.73219C7.59013 9.256 7.43215 8.79373 7.27302 8.32816C7.26287 8.29846 7.22883 8.28057 7.20084 8.29481V8.29481C6.62558 8.58184 6.0533 8.87497 5.47432 9.15412C5.0928 9.33831 4.73954 9.6085 4.27323 9.56658C4.26951 9.56658 4.26431 9.56657 4.2617 9.56873C4.23567 9.59345 4.18696 9.62248 4.19031 9.6429C4.19626 9.6748 4.23195 9.71206 4.26468 9.72711C4.2974 9.74181 4.34165 9.73285 4.38107 9.73285H7.75211C7.75223 9.73285 7.75236 9.7328 7.75245 9.73271V9.73271Z\",\n fill: \"#B3B2B5\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.04031 7.68944H8.18874C9.5191 7.68944 10.8502 7.68944 12.1805 7.68944C12.9483 7.68944 13.5961 8.17951 13.7906 8.90548C13.9821 9.62071 13.648 10.3714 12.9812 10.7165C12.0489 11.199 11.116 11.6801 10.1819 12.1588C10.107 12.1971 10.0762 12.2418 10.073 12.3238C10.0558 12.7122 10.0335 13.0999 9.98887 13.4933C9.34179 11.5656 8.69434 9.63754 8.04068 7.68944H8.04031ZM9.05408 9.25629C9.22115 9.7546 9.38164 10.2325 9.54432 10.7168C9.58527 10.6975 9.61269 10.685 9.63974 10.6714C10.3592 10.3059 11.0794 9.94182 11.7974 9.57453C11.9787 9.48182 12.1648 9.41953 12.3721 9.42454C12.443 9.42633 12.5513 9.45461 12.5527 9.34221C12.5542 9.22873 12.4452 9.25737 12.3743 9.25737C11.3156 9.25594 10.2561 9.25629 9.19739 9.25629H9.05444H9.05408Z\",\n fill: \"#B3B2B5\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.78122 6.23848V5.49756H9.52214V6.23848H8.78122Z\",\n fill: \"#B3B2B5\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.33026 13.4933V12.7524H8.04031V13.4933H7.33026Z\",\n fill: \"#B3B2B5\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStErn);\nexport default __webpack_public_path__ + \"static/media/stERN.319dc37f.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactElement, useEffect, useState } from 'react';\nimport Modal from './Modal';\nimport { UserCollateralPositionData } from '../../storage/Types';\nimport PositionBox from '../PositionBox';\n\ninterface AllPositionsModalProps {\n positions:UserCollateralPositionData[];\n handleClose:any;\n className?: string;\n}\n\nconst AllPositionsModal = (props: AllPositionsModalProps) => {\n const [positionElements, setPositionElements] = useState([]);\n\n useEffect(() => {\n if (props.positions) {\n let activeBoxes: ReactElement[] = [];\n let inactiveBoxes: ReactElement[] = [];\n let liquidatedBoxes: ReactElement[] = [];\n props.positions.forEach((collateral: UserCollateralPositionData) => {\n const newElem = (\n \n );\n if (collateral.status === 'Active') {\n activeBoxes.push(newElem);\n } else if (collateral.status === 'Closed By Liquidation') {\n liquidatedBoxes.push(newElem);\n } else {\n inactiveBoxes.push(newElem);\n }\n });\n const boxes = activeBoxes.concat(liquidatedBoxes).concat(inactiveBoxes);\n setPositionElements(boxes)\n }\n }, [props.positions])\n\n return (\n \n
{positionElements}
\n \n );\n};\n\nexport default AllPositionsModal;\n","import '../styling/DashboardPage.css';\nimport { ReactElement, useContext, useMemo, useState } from 'react';\nimport { Context } from '../Store';\nimport { Link, NavLink } from 'react-router-dom';\nimport Button from './Button';\n\nimport ConnectWalletButton from './ConnectWalletButton';\nimport LoadingSpinner from './LoadingSpinner';\n\nimport { ReactComponent as StabilityIcon } from '../assets/icons/stability.svg';\nimport { ReactComponent as StakeIcon } from '../assets/icons/stake.svg';\nimport { ReactComponent as PositionsIcon } from '../assets/icons/arrow-up.svg';\n\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport { ReactComponent as StERNIcon } from '../assets/icons/coins/stERN.svg';\n\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport { Reward, UserCollateralPositionData } from '../storage/Types';\nimport { formatPositiveNumber, isNumber } from '../functions/formatters';\nimport PositionBox from './PositionBox';\nimport { checkShowNetworkWarningForEthos, getAllCollateralData } from '../functions/stateHelpers';\nimport { getIconSrcFromCoin, getIconSrcFromCoinId } from '../functions/coinHelpers';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport AllPositionsModal from './modals/AllPositionsModal';\n\nfunction DashboardPage() {\n const [state, dispatch]: any = useContext(Context);\n const [positionElements, setPositionElements] = useState([]);\n const [positions, setPositions] = useState([]);\n const [isPositionsModalOpen, setIsPositionsModalOpen] = useState(false);\n\n const checkPositionStatus = () => {\n if (state.appVersion === '2_1') {\n return (\n state.chainView !== '' &&\n state.btcStatus !== '' &&\n state.ethStatus !== '' &&\n state.wstethStatus !== ''\n )\n } else if (state.appVersion === '2') {\n return (\n state.chainView !== '' &&\n state.btcStatus !== '' &&\n state.ethStatus !== '' \n )\n } else {\n return (\n state.chainView !== '' &&\n state.btcStatus !== '' &&\n state.ethStatus !== '' &&\n state.opStatus !== ''\n )\n }\n }\n\n const checkIfPositionsAreLoaded = () => {\n if (state.appVersion === '2_1') {\n return (\n state.btcStatus === '' ||\n state.ethStatus === '' ||\n state.wstethStatus === '' ||\n state.btcCollateralAmount === '' ||\n state.ethCollateralAmount === '' ||\n state.wstethCollateralAmount === ''\n )\n } else if (state.appVersion === '2') {\n return (\n state.btcStatus === '' ||\n state.ethStatus === '' ||\n state.btcCollateralAmount === '' ||\n state.ethCollateralAmount === '' \n )\n } else {\n return (\n state.btcStatus === '' ||\n state.ethStatus === '' ||\n state.opStatus === '' ||\n state.btcCollateralAmount === '' ||\n state.ethCollateralAmount === '' ||\n state.opCollateralAmount === ''\n )\n }\n }\n\n useMemo(() => {\n const positions = getAllCollateralData(state.chainView, state);\n setPositions(positions)\n let boxes: ReactElement[] = [];\n let activeBoxes: ReactElement[] = [];\n let inactiveBoxes: ReactElement[] = [];\n let liquidatedBoxes: ReactElement[] = [];\n if (checkPositionStatus()) {\n positions.forEach((collateral: UserCollateralPositionData) => {\n const newElem = (\n \n );\n if (collateral.status === 'Active') {\n activeBoxes.push(newElem);\n } else if (collateral.status === 'Closed By Liquidation') {\n liquidatedBoxes.push(newElem);\n } else {\n inactiveBoxes.push(newElem);\n }\n });\n boxes = activeBoxes.concat(liquidatedBoxes).concat(inactiveBoxes);\n const slicedBoxes = boxes.slice(0, 3);\n setPositionElements(slicedBoxes);\n }\n // it wants 'state' in the dep array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.chainView, state.btcStatus, state.ethStatus, state.opStatus, state.wstethStatus]);\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n const buildUserRewardsList = (rewards: Reward[]) => {\n const redemptionRewardsList: ReactElement[] = [];\n rewards.forEach((reward: Reward) => {\n const coinIconSrc = getIconSrcFromCoinId(reward.uid);\n const rewardElement = (\n
\n {formatPositiveNumber(reward.amount, 5)}\n {coinIconSrc !== undefined ? (\n \n ) : (\n ' '\n )}\n {reward.ticker}\n
\n );\n redemptionRewardsList.push(rewardElement);\n });\n return
{redemptionRewardsList}
;\n };\n\n const bOathUrl = (state.appVersion === '2' || state.appVersion === '2_1') ?\n 'https://op.beets.fi/pool/0xd13d81af624956327a24d0275cbe54b0ee0e9070000200000000000000000109' \n :\n 'https://op.beets.fi/pool/0xd20f6f1d8a675cdca155cb07b5dc9042c467153f0002000000000000000000bc';\n\n const buildDashPositions = () => {\n const isLoadingPositions = checkIfPositionsAreLoaded();\n\n const isInAnyPosition =\n state.btcStatus === 'Active' ||\n state.ethStatus === 'Active' ||\n state.opStatus === 'Active' ||\n state.wstethStatus === 'Active' ||\n state.btcStatus === 'Closed By Liquidation' ||\n state.ethStatus === 'Closed By Liquidation' ||\n state.opStatus === 'Closed By Liquidation' ||\n state.wstethStatus === 'Closed By Liquidation' ||\n state.btcStatus === 'Closed By Redemption' ||\n state.ethStatus === 'Closed By Redemption' ||\n state.opStatus === 'Closed By Redemption' ||\n state.wstethStatus === 'Closed By Redemption';\n\n if (isInAnyPosition && state.walletAddress.length !== 0) {\n return (\n \n
\n
\n My Positions\n
\n
{setIsPositionsModalOpen(true)}}>\n View All +\n
\n
\n
{positionElements}
\n \n );\n } else {\n return (\n
\n
\n
\n
\n
\n \n
\n
\n
\n Open a Position\n
\n
\n
\n {\n `Deposit your collateral to borrow Ethos Reserve Notes, or ERN. ERN loans are\n interest free, and cost only a small fee on issuance. You can use your ERN to earn\n passive income or trade on most popular decentralized exchanges. \n ${state.appVersion !== '2_1' ? ` Only available on Ethos V2.1.` : '' }`\n }\n
\n
\n
\n {!isLoadingPositions && state.walletAddress.length !== 0 ? (\n state.appVersion === '2_1' ?\n \n
\n
\n
\n
\n );\n }\n };\n\n const buildDashStaking = () => {\n let stakingIconSrc = undefined;\n if (state.stakingCoin !== undefined) {\n stakingIconSrc = getIconSrcFromCoin(state.stakingCoin);\n }\n let internals = <>;\n if (\n isNumber(state.userStakingDeposits) &&\n isGreaterThan(state.userStakingDeposits, '0') &&\n state.walletAddress.length !== 0\n ) {\n internals = (\n
\n
\n
\n \n
\n
\n
Staking Pool
\n
\n {state.stakingApr !== '' ? (\n formatPositiveNumber(safeMult(state.stakingApr, '100'), 2) + ' % APR'\n ) : (\n <>\n )}\n
\n
\n
\n {formatPositiveNumber(state.totalStakingDeposits, 3)} {state.stakingCoin?.ticker}\n {' deposited in the pool.'}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStakingDeposits !== '' ? (\n formatPositiveNumber(state.userStakingDeposits, 3)\n ) : (\n \n )}\n {stakingIconSrc !== undefined ? (\n \n ) : (\n
\n )}\n {state.stakingCoin?.ticker}\n
\n
\n
\n
\n Rewards\n
\n
\n {state.userStakingRewards !== '' ? (\n formatPositiveNumber(state.userStakingRewards, 5)\n ) : (\n \n )}\n \n {state.stakingRewardCoin?.ticker}\n
\n
\n {state.userRedemptionRewards.length !== 0 ? (\n
\n
\n Redemption Rewards\n
\n
\n {state.userRedemptionRewards.length !== 0 ? (\n buildUserRewardsList(state.userRedemptionRewards)\n ) : (\n \n )}{' '}\n
\n
\n ) : (\n <>\n )}\n
\n
\n );\n } else {\n internals = (\n
\n
\n
\n \n
\n
\n
\n Staking Pool\n
\n
\n
\n Stake your Bonded OATH tokens{' '}\n {state.stakingApr !== ''\n ? 'and earn ' + formatPositiveNumber(safeMult(state.stakingApr, '100'), 2) + ' %'\n : 'and earn up to 6%'}{' '}\n APR through platform and trading fees.\n
\n
\n
\n {state.userStakingDeposits !== '' && state.walletAddress.length !== 0 ? (\n <>\n \n \n \n \n }\n >\n Get bOATH\n \n \n \n
\n
\n );\n }\n return (\n
\n {internals}\n
\n );\n };\n\n const buildDashStability = () => {\n let stabilityRewardIconSrc = undefined;\n if (state.stakingRewardCoin !== undefined) {\n stabilityRewardIconSrc = getIconSrcFromCoin(state.stabilityRewardCoin);\n }\n\n let internals = <>;\n if (\n isNumber(state.userStabilityDeposits) &&\n isGreaterThan(state.userStabilityDeposits, '0') &&\n state.walletAddress.length !== 0\n ) {\n internals = (\n
\n
\n
\n \n
\n
\n
Stability Pool
\n
\n {state.stabilityApr !== '' ? (\n formatPositiveNumber(safeMult(state.stabilityApr, '100'), 2) + ' % APR'\n ) : (\n <>\n )}\n
\n
\n
\n {formatPositiveNumber(state.totalStabilityDeposits, 3)}{' '}\n {state.stabilityCoin?.ticker}\n {' deposited in the pool.'}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStabilityDeposits !== '' ? (\n formatPositiveNumber(state.userStabilityDeposits, 3)\n ) : (\n \n )}\n \n {state.stabilityCoin?.ticker}\n
\n
\n
\n
\n Rewards\n
\n
\n {state.userStabilityRewards !== '' ? (\n formatPositiveNumber(state.userStabilityRewards, 5)\n ) : (\n \n )}\n {stabilityRewardIconSrc !== undefined ? (\n \n ) : (\n ' '\n )}\n {state.stabilityRewardCoin?.ticker}\n
\n
\n {state.userLiquidationRewards.length !== 0 ? (\n
\n
\n Liquidation Rewards\n
\n
\n {state.userLiquidationRewards.length !== 0 ? (\n buildUserRewardsList(state.userLiquidationRewards)\n ) : (\n \n )}{' '}\n
\n
\n ) : (\n <>\n )}\n
\n
\n );\n } else {\n internals = (\n
\n
\n
\n \n
\n
\n
\n Stability Pool\n
\n
\n
\n Invest ERN into the Stability Pool{' '}\n {state.stabilityApr !== ''\n ? ' and earn ' +\n formatPositiveNumber(safeMult(state.stabilityApr, '100'), 2) +\n ' % APR'\n : ' and earn up to 10% APY'}{' '}\n through rewards and liquidation gains.\n
\n
\n
\n {state.userStabilityDeposits !== '' && state.walletAddress.length !== 0 ? (\n \n
\n
\n );\n }\n return (\n
\n {internals}\n
\n );\n };\n\n const buildDashStERN = () => {\n let internals = <>;\n if (\n isNumber(state.userStERNDepositsInERN) &&\n isGreaterThan(state.userStERNDepositsInERN, '0') &&\n state.walletAddress.length !== 0\n ) {\n internals = (\n
\n
\n
\n \n
\n
\n
stERN Vault
\n
\n {state.stabilityApr !== '' ? (\n formatPositiveNumber(safeMult(state.stERNApy, '100'), 2) + ' % APY'\n ) : (\n <>\n )}\n
\n
\n
\n {formatPositiveNumber(state.totalStERNDeposits, 3)}{' '}\n {state.stabilityCoin?.ticker}\n {' deposited in the pool.'}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStERNDepositsInERN !== '' ? (\n formatPositiveNumber(state.userStERNDepositsInERN, 3)\n ) : (\n \n )}\n \n {state.stabilityCoin?.ticker}\n
\n
\n
\n
\n USD Value\n
\n
\n {state.userStERNDepositsUSD !== '' ? (\n `$${formatPositiveNumber(state.userStERNDepositsUSD, 2)}`\n ) : (\n \n )}\n
\n
\n
\n
\n );\n } else {\n internals = (\n
\n
\n
\n \n
\n
\n
\n stERN Vault\n
\n
\n
\n Invest ERN into the stERN vault{' '}\n {state.stabilityApr !== ''\n ? ' and earn ' +\n formatPositiveNumber(safeMult(state.stERNApy, '100'), 2) +\n ' % APY'\n : ' and earn up to 5% APY'}.\n
\n
\n
\n {state.userStERNDepositsInERN !== '' && state.walletAddress.length !== 0 ? (\n \n
\n
\n );\n }\n return (\n
\n {internals}\n
\n );\n };\n\n return (\n
\n
\n {buildDashPositions()}\n
\n {buildDashStability()}\n {buildDashStaking()}\n
\n
\n {state.appVersion === '1' && buildDashStERN()}\n
\n
\n {\n isPositionsModalOpen &&\n {setIsPositionsModalOpen(false)}} />\n }\n
\n );\n}\n\nexport default DashboardPage;\n","import { useContext, useEffect, useMemo, useState } from 'react';\n\nimport Input from './Input';\nimport Button from './Button';\nimport CollateralHelpModal from './modals/CollateralHelpModal';\n\nimport { isErrorMsg, formatPositiveNumber, isNumber } from '../functions/formatters';\n\nimport { Context } from '../Store';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport { getChainConfigFromId } from '../functions/chainHelpers';\nimport ConditionBox from './ConditionBox';\nimport { Coin, MinDebtAndCompensation, UserCollateralPositionData } from '../storage/Types';\nimport {\n bottomNPercentofNum,\n isEqualTo,\n isGreaterThan,\n isGreaterThanOrEqual,\n isLessThan,\n isLessThanOrEqual,\n isZero,\n safeAdd,\n safeDiv,\n safeMult,\n safeSub,\n} from '../functions/safeMath';\nimport {\n adjustTrove,\n approveSpend,\n closeTrove,\n getAllowance,\n getBorrowingRateWithDecay,\n getMinDebtAndCompensation,\n getTokenBalance,\n estimateNewTCR,\n deleverAndCloseTrove,\n getCollateralDebtLimit,\n} from '../functions/blockchainRouter';\nimport {\n editUserCollateralPosition,\n getCollateralData,\n editUserCollateralBalance,\n getUserLiquidationPrice,\n isEnoughERNNeededForDelever,\n} from '../functions/stateHelpers';\nimport Modal from './modals/Modal';\nimport { useNavigate } from 'react-router-dom';\nimport LoadingSpinner from './LoadingSpinner';\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport { ReactComponent as LinkIcon } from '../assets/icons/link.svg';\nimport { LeverageConfig } from '../storage/LeverageConfig';\nimport RankWarningModal from './modals/RankWarningModal';\n\ninterface EditPositionPageProps {\n collateralId: string;\n className?: string;\n}\n\nfunction EditPositionPage(props: EditPositionPageProps) {\n const navigate = useNavigate();\n\n const [state, dispatch]: any = useContext(Context);\n const [maxCollateralAvailable, setMaxCollateralAvailable] = useState('');\n const [maxStabilityAvailable, setMaxStabilityAvailable] = useState('');\n\n const [collateralInputVal, setCollateralInputVal] = useState('');\n const [collateralInputErrorMsg, setCollateralInputErrorMsg] = useState('');\n const [isCollateralInputValid, setIsCollateralInputValid] = useState(false);\n\n const [borrowInputVal, setBorrowInputVal] = useState('');\n const [borrowInputErrorMsg, setBorrowInputErrorMsg] = useState('');\n const [isBorrowInputValid, setIsBorrowInputValid] = useState(false);\n\n const [deleverAndCloseInputVal, setDeleverAndCloseInputVal] = useState('');\n const [deleverAndCloseInputErrorMsg, setDeleverAndCloseInputErrorMsg] = useState('');\n const [isDeleverAndCloseInputValid, setIsDeleverAndCloseInputValid] = useState(false);\n\n const [collateralId] = useState(props.collateralId);\n const [collateralCoin, setCollateralCoin] = useState(undefined);\n const [collateralPosition, setCollateralPosition] = useState<\n UserCollateralPositionData | undefined\n >(undefined);\n const [collateralPrice, setCollateralPrice] = useState('');\n\n const [borrowFee, setBorrowFee] = useState('');\n const [baseBorrow, setBaseBorrow] = useState('');\n const [isBorrowingFeeValid, setIsBorrowingFeeValid] = useState(true);\n const [borrowRate, setBorrowRate] = useState('');\n const [minBorrow, setMinBorrow] = useState('');\n const [totalDebt, setTotalDebt] = useState('');\n const [isTotalDebtValid, setIsTotalDebtValid] = useState(true);\n const [collateralRatio, setCollateralRatio] = useState('');\n const [isCollateralRatioValid, setIsCollateralRatioValid] = useState(true);\n const [liqReserve, setLiqReserve] = useState('');\n const [isLiqReserveValid, setIsLiqReserveValid] = useState(true);\n const [liqPriceNormal, setLiqPriceNormal] = useState('');\n const [isLiqPriceNormalValid, setIsLiqPriceNormalValid] = useState(true);\n const [liqPriceRecovery, setLiqPriceRecovery] = useState('');\n const [isLiqPriceRecoveryValid, setIsLiqPriceRecoveryValid] = useState(true);\n\n const [isEditCollateralOpen, setIsEditCollateralOpen] = useState(false);\n const [isEditBorrowOpen, setIsEditBorrowOpen] = useState(false);\n\n const [isClosePositionModalOpen, setIsClosePositionModalOpen] = useState(false);\n const [isEditCollateralModalDepositMode, setIsEditCollateralModalDepositMode] =\n useState(true);\n const [editCollateralModalInput, setEditCollateralModalInput] = useState('');\n const [isEditBorrowModalDepositMode, setIsEditBorrowModalDepositMode] = useState(true);\n const [editBorrowModalInput, setEditBorrowModalInput] = useState('');\n const [isDeleverAndClosePositionModalOpen, setIsDeleverAndClosePositionModalOpen] = useState(false);\n\n const [collateralRatioRank, setCollateralRatioRank] = useState('');\n const [isCollateralRatioRankValid, setIsCollateralRatioRankValid] = useState(true);\n const [isCRRankNearLast, setIsCRRankNearLast] = useState(false);\n\n const [debtLimit, setDebtLimit] = useState('');\n const [newTCREstimate, setNewTCREstimate] = useState('');\n\n const [showDisclaimerMessage, setShowDisclaimerMessage] = useState(false);\n const [disclaimerMessage, setDisclaimerMessage] = useState('');\n\n const [deleverInNIterations, setDeleverInNIterations] = useState(0);\n\n const [showCollateralHelpModal, setShowCollateralHelpModal] = useState(false);\n const [showRankWarningModal, setShowRankWarningModal] = useState(false);\n\n let { className = '' } = props;\n\n const stateCollAmount = state[props.collateralId + 'CollateralAmount'];\n const stateBorrowAmount = state[props.collateralId + 'BorrowAmount'];\n const stateMinCollateralRatio = state[props.collateralId + 'MinCollateralRatio'];\n const stateCritCollateralRatio = state[props.collateralId + 'CritCollateralRatio'];\n const stateLiquidationReserve = state[props.collateralId + 'LiquidationReserve'];\n\n useEffect(() => {\n if (state.walletProvider === undefined) {\n navigate('/dashboard');\n }\n }, [navigate, state.walletProvider]);\n\n useEffect(() => {\n if (collateralId !== '' && state.chainView !== '') {\n const collateralCoin = getCoinFromUID(collateralId);\n if (collateralCoin !== undefined) {\n setCollateralCoin(collateralCoin);\n }\n const collateralPosition = getCollateralData(collateralId, state);\n if (collateralPosition !== undefined) {\n if (\n isZero(collateralPosition.borrowAmount) ||\n isZero(collateralPosition.collateralAmount)\n ) {\n navigate('/positions');\n }\n setCollateralPosition(collateralPosition);\n setCollateralPrice(collateralPosition.collateralPrice);\n setCollateralInputVal(collateralPosition.collateralAmount);\n setTotalDebt(collateralPosition.borrowAmount);\n setBorrowInputVal(collateralPosition.borrowAmount);\n }\n }\n // it wants 'state' in the dep array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [navigate, collateralId, state.chainView]);\n\n useEffect(() => {\n const userCollAmount = collateralInputVal;\n const userBorrowAmount = borrowInputVal;\n const mcr = stateMinCollateralRatio;\n const ccr = stateCritCollateralRatio;\n if (\n collateralId !== '' &&\n isNumber(userCollAmount) &&\n isNumber(userBorrowAmount) &&\n isNumber(mcr) &&\n isNumber(ccr)\n ) {\n setLiqPriceNormal(getUserLiquidationPrice(userCollAmount, userBorrowAmount, mcr));\n setLiqPriceRecovery(getUserLiquidationPrice(userCollAmount, userBorrowAmount, ccr));\n }\n }, [\n collateralId,\n collateralInputVal,\n borrowInputVal,\n stateMinCollateralRatio,\n stateCritCollateralRatio,\n ]);\n\n useEffect(() => {\n if (\n collateralPosition !== undefined &&\n isNumber(totalDebt) &&\n isNumber(borrowRate) &&\n isNumber(liqReserve)\n ) {\n const subA = safeSub(totalDebt, liqReserve);\n const divA = safeDiv(subA, safeAdd('1', borrowRate));\n setBaseBorrow(divA);\n }\n }, [collateralPosition, totalDebt, borrowRate, liqReserve]);\n\n useMemo(() => {\n let isMounted = true;\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.chainView !== '' &&\n state.connectedChain !== '' &&\n state.chainView === state.connectedChain\n ) {\n getBorrowingRateWithDecay(state.chainView, state.appVersion, state.walletProvider).then((borrowingRate) => {\n if (!isErrorMsg(borrowingRate) && isMounted) {\n setBorrowRate(borrowingRate.data);\n }\n });\n getMinDebtAndCompensation(state.chainView, state.appVersion, state.walletProvider).then((res) => {\n if (!isErrorMsg(res)) {\n const { minNetDebt, gasCompensation } = res.data as MinDebtAndCompensation;\n if (minNetDebt !== undefined && gasCompensation !== undefined && isMounted) {\n setMinBorrow(minNetDebt);\n setLiqReserve(gasCompensation);\n }\n }\n });\n if (collateralCoin !== undefined) {\n getTokenBalance(\n collateralCoin.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxCollateralAvailable(balance.data);\n }\n });\n getCollateralDebtLimit(\n collateralCoin.addresses[state.chainView],\n state.chainView,\n state.appVersion,\n state.walletProvider\n ).then((limit: any) => {\n if (!isErrorMsg(limit) && isMounted) {\n setDebtLimit(limit.data);\n }\n });\n }\n if (state.stabilityCoin !== undefined) {\n getTokenBalance(\n state.stabilityCoin.addresses[state.chainView],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxStabilityAvailable(balance.data);\n }\n });\n }\n }\n return () => {\n isMounted = false;\n };\n }, [\n state.walletProvider,\n state.walletAddress,\n collateralCoin,\n state.stabilityCoin,\n state.chainView,\n state.connectedChain,\n state.appVersion\n ]);\n\n useEffect(() => {\n if (\n isNumber(liqReserve) &&\n isNumber(borrowRate) &&\n isNumber(borrowInputVal) &&\n collateralPosition !== undefined &&\n isNumber(collateralPosition.borrowAmount)\n ) {\n const borrowWithoutLiqReserve = safeSub(collateralPosition.borrowAmount, liqReserve);\n const borrowFeeWithoutLiqReserve = safeDiv(borrowWithoutLiqReserve, safeAdd('1', borrowRate));\n let updatedBorrowFee = safeSub(borrowWithoutLiqReserve, borrowFeeWithoutLiqReserve);\n if (isGreaterThan(borrowInputVal, collateralPosition.borrowAmount)) {\n const borrowIncrease = safeSub(borrowInputVal, collateralPosition.borrowAmount);\n const borrowIncreaseFee = safeMult(borrowIncrease, borrowRate);\n updatedBorrowFee = safeAdd(borrowIncreaseFee, borrowFee);\n }\n setBorrowFee(updatedBorrowFee);\n }\n // wants 'borrowFee' in the dependency array but this would cause an infinite loop\n // eslint-disable-next-line\n }, [liqReserve, collateralPosition, borrowInputVal, borrowRate]);\n\n useEffect(() => {\n // I think this might be overly complicated\n if (isNumber(borrowInputVal) && isNumber(borrowRate) && collateralPosition !== undefined) {\n const subA = safeSub(collateralPosition.borrowAmount, liqReserve);\n const divA = safeDiv(subA, safeAdd('1', borrowRate));\n let subB = safeSub(subA, divA);\n const baseBorrow = safeSub(subA, subB);\n const borrowWithLiqReserve = safeAdd(baseBorrow, liqReserve);\n const oldTotalBorrow = safeAdd(borrowWithLiqReserve, borrowFee);\n const borrowDif = safeSub(borrowInputVal, collateralPosition.borrowAmount);\n const newTotalBorrow = safeAdd(borrowDif, oldTotalBorrow);\n if (isNumber(newTotalBorrow)) {\n setTotalDebt(newTotalBorrow);\n }\n }\n }, [borrowInputVal, collateralPosition, liqReserve, borrowFee, borrowRate]);\n\n useEffect(() => {\n if (\n isNumber(collateralInputVal) &&\n isNumber(borrowInputVal) &&\n collateralPosition !== undefined\n ) {\n if (isLessThanOrEqual(borrowInputVal, '0')) {\n setIsCollateralRatioValid(false);\n setCollateralRatio('N/A');\n } else {\n if (\n isNumber(collateralPrice) &&\n isNumber(collateralPosition.minimumCollateralRatio) &&\n isGreaterThan(collateralInputVal, '0') &&\n isGreaterThan(collateralPrice, '0')\n ) {\n const collMult = safeMult(collateralInputVal, collateralPrice);\n const ratioRaw = safeDiv(collMult, borrowInputVal);\n checkPositionRank(ratioRaw, state[`${collateralId}AllOpenTroves`]);\n const ratioPercent = safeMult(ratioRaw, '100');\n setCollateralRatio(ratioPercent);\n if (isLessThan(ratioRaw, collateralPosition.minimumCollateralRatio)) {\n setIsCollateralRatioValid(false);\n setDisclaimerMessage('');\n setShowDisclaimerMessage(false);\n } else {\n setIsCollateralRatioValid(true);\n checkIfCRWithinLiquidateRange(ratioRaw, collateralPosition);\n }\n }\n }\n } else {\n setCollateralRatio('');\n setCollateralRatioRank('');\n setIsCRRankNearLast(false);\n }\n }, [collateralInputVal, collateralPosition, borrowInputVal, collateralPrice, collateralId]);\n\n useEffect(() => {\n if (!isNumber(collateralInputVal) || !isNumber(borrowInputVal)) {\n setIsCollateralRatioValid(true);\n setIsBorrowingFeeValid(true);\n setIsTotalDebtValid(true);\n setIsLiqReserveValid(true);\n setIsLiqPriceNormalValid(true);\n setIsLiqPriceRecoveryValid(true);\n }\n }, [collateralInputVal, borrowInputVal]);\n\n useEffect(() => {\n if (\n isNumber(deleverAndCloseInputVal) && \n collateralPosition &&\n isNumber(collateralPosition.collateralAmount) &&\n isNumber(collateralPosition.collateralRatio) &&\n isNumber(collateralPosition.borrowAmount) &&\n isNumber(collateralPosition.collateralPrice) &&\n isNumber(liqReserve) &&\n isNumber(state.stabilityCoinPrice) &&\n isNumber(minBorrow)\n ) {\n let isValid = true;\n let errorMsg = '';\n const maxERNToInput = safeSub(collateralPosition.borrowAmount, '.000000000000000001');\n const canDeleverInNIterations = isEnoughERNNeededForDelever(\n deleverAndCloseInputVal, \n collateralPosition.borrowAmount, \n collateralPosition.collateralAmount, \n collateralPosition.collateralRatio, \n liqReserve, \n LeverageConfig.dexFee, \n collateralPosition.collateralPrice,\n state.stabilityCoinPrice,\n minBorrow\n );\n if (!canDeleverInNIterations.success) {\n isValid = false;\n errorMsg = 'More ERN is needed to begin deleveraging.';\n } else if (isGreaterThan(deleverAndCloseInputVal, maxERNToInput)) {\n isValid = false;\n errorMsg = 'ERN must be less than your total debt';\n }\n setIsDeleverAndCloseInputValid(isValid);\n setDeleverAndCloseInputErrorMsg(errorMsg);\n if (isValid) {\n setDeleverInNIterations(canDeleverInNIterations.data);\n } else {\n setDeleverInNIterations(0);\n }\n } else if (deleverAndCloseInputVal === '') {\n setDeleverInNIterations(0);\n }\n }, [deleverAndCloseInputVal, collateralPosition, liqReserve, collateralId, minBorrow, state]);\n\n const closePosition = async () => {\n if (collateralId !== '' && state.chainView !== '') {\n const coin = getCoinFromUID(collateralId);\n if (coin !== undefined) {\n dispatch({ type: 'isLoadingTxSteps', content: true });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n let currentTxMessages = [\n {\n inProgress: 'Trying to close your position.',\n success: 'Successfully closed your position.',\n failure: 'Failed to close your position.',\n pending: '',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'isTxModalOpen', content: true });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n\n setIsClosePositionModalOpen(false);\n closeTrove(coin.addresses[state.chainView], state).then((response) => {\n if (!isErrorMsg(response)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n editUserCollateralBalance(\n coin.uid,\n state[coin.uid + 'CollateralAmount'],\n true,\n state,\n dispatch\n );\n editUserCollateralPosition(collateralId, '0', '0', 'Closed By Owner', state, dispatch);\n navigate('/positions');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n }\n }\n };\n\n const deleverAndClosePosition = async () => {\n if (\n state.stabilityCoin !== undefined &&\n collateralId !== '' && \n collateralPosition !== undefined && \n state.chainView !== '' && \n deleverAndCloseInputVal !== '' &&\n state.stabilityCoinPrice !== ''\n ) {\n const stabilityCoinInput = deleverAndCloseInputVal;\n const collAddr = state.stabilityCoin.addresses[state.chainView];\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n const coin = getCoinFromUID(collateralId);\n if (coin !== undefined) {\n dispatch({ type: 'isLoadingTxSteps', content: true });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });;\n const collTokenTicker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : 'tokens';\n let currentTxMessages = [\n {\n inProgress: `You must approve ${stabilityCoinInput} ${collTokenTicker} for deposit. Check your wallet to continue.`,\n success: `Successfully approved ${stabilityCoinInput} ${collTokenTicker}.`,\n failure: `Token approval failed or the transaction was rejected.`,\n pending: `Approve ${collTokenTicker} for deposit.`,\n },\n {\n inProgress: 'Trying to delever and close your position.',\n success: 'Successfully closed your position.',\n failure: 'Failed to close your position.',\n pending: 'Waiting to close position.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'isTxModalOpen', content: true });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n\n setIsDeleverAndClosePositionModalOpen(false);\n \n if (chainConfig !== undefined) {\n const contractAddr = chainConfig.contracts.leveragerAddr;\n const justDeleverAndClose = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n deleverAndCloseTrove(coin.addresses[state.chainView], deleverAndCloseInputVal, state).then((response) => {\n if (!isErrorMsg(response)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n editUserCollateralBalance(\n coin.uid,\n state[coin.uid + 'CollateralAmount'],\n true,\n state,\n dispatch\n );\n editUserCollateralPosition(collateralId, '0', '0', 'Closed By Owner', state, dispatch);\n navigate('/positions');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n const approveAndDeleverAndClose = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n approveSpend(collAddr, contractAddr, stabilityCoinInput, state).then((approveRes) => {\n if (!isErrorMsg(approveRes)) {\n justDeleverAndClose();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n getAllowance(collAddr, contractAddr, state).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(stabilityCoinInput, allowance)) {\n approveAndDeleverAndClose();\n } else {\n justDeleverAndClose();\n }\n } else {\n // if can't get allowance just approve it\n approveAndDeleverAndClose();\n }\n });\n }\n }\n }\n };\n\n const adjustPosition = async () => {\n if (\n isCollateralInputValid &&\n isBorrowInputValid &&\n collateralCoin !== undefined &&\n collateralPosition !== undefined &&\n state.stabilityCoin !== undefined &&\n state.chainView !== ''\n ) {\n const collAddr = collateralCoin.addresses[state.chainView];\n const debtAddr = state.stabilityCoin.addresses[state.chainView];\n const collAmount = collateralPosition.collateralAmount;\n const borrowAmount = collateralPosition.borrowAmount;\n const collId = collateralCoin.uid;\n const collIncreaseAmount = safeSub(collateralInputVal, collAmount);\n\n const isCollIncreasing = isGreaterThan(collIncreaseAmount, '0');\n const isDebtIncreasing = isGreaterThan(borrowInputVal, borrowAmount);\n\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n\n dispatch({ type: 'isLoadingTxSteps', content: true });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n const collTokenTicker = collateralCoin !== undefined ? collateralCoin.ticker : 'tokens';\n let currentTxMessages = [];\n currentTxMessages.push({\n inProgress:\n 'You must approve ' +\n collIncreaseAmount +\n ' ' +\n collTokenTicker +\n '. Check your wallet to continue.',\n success: 'All tokens approved.',\n failure: 'Token approval failed or the transaction was rejected.',\n pending: 'Approve ' + collTokenTicker + ' for deposit.',\n });\n currentTxMessages.push({\n inProgress: 'Check your wallet to confirm your adjustment.',\n success: 'Successfully adjusted your position.',\n failure: 'The adjustment failed or the transaction was canceled.',\n pending: 'Waiting to adjust position.',\n });\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'isTxModalOpen', content: true });\n if (chainConfig !== undefined) {\n const contractAddr = chainConfig.contracts.borrowerOperationsAddr;\n let maxFee = borrowRate; // clarify\n let collTopUp = '0';\n let collWithdrawal = '0';\n let debtChange = '0';\n\n if (!isEqualTo(borrowInputVal, borrowAmount)) {\n if (isDebtIncreasing) {\n debtChange = safeSub(borrowInputVal, borrowAmount);\n } else {\n debtChange = safeSub(borrowAmount, borrowInputVal);\n }\n }\n\n const justAdjust = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n adjustTrove(\n collAddr,\n debtAddr,\n maxFee,\n collTopUp,\n collWithdrawal,\n debtChange,\n isDebtIncreasing,\n state\n ).then((adjustRes) => {\n if (!isErrorMsg(adjustRes)) {\n let newCollAmount = safeAdd(collTopUp, collAmount);\n let newBorrowAmount = '';\n if (isDebtIncreasing) {\n newBorrowAmount = safeAdd(borrowAmount, debtChange);\n } else {\n newBorrowAmount = safeSub(borrowAmount, debtChange);\n }\n editUserCollateralBalance(collId, collTopUp, false, state, dispatch);\n editUserCollateralPosition(\n collId,\n newCollAmount,\n newBorrowAmount,\n 'Active',\n state,\n dispatch\n );\n navigate('/dashboard');\n dispatch({ type: 'currentTxStatus', content: 'success' });\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n const approveAndAdjust = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n approveSpend(collAddr, contractAddr, collTopUp, state).then((res) => {\n if (!isErrorMsg(res)) {\n justAdjust();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n\n if (isCollIncreasing) {\n collTopUp = safeSub(collateralInputVal, collAmount);\n getAllowance(collAddr, contractAddr, state).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(collTopUp, allowance)) {\n approveAndAdjust();\n } else {\n justAdjust();\n }\n } else {\n // if can't get allowance just approve it\n approveAndAdjust();\n }\n });\n } else {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n dispatch({ type: 'currentTxNumber', content: 1 });\n collWithdrawal = safeSub(collAmount, collateralInputVal);\n adjustTrove(\n collAddr,\n debtAddr,\n maxFee,\n collTopUp,\n collWithdrawal,\n debtChange,\n isDebtIncreasing,\n state\n ).then((adjustRes) => {\n if (!isErrorMsg(adjustRes)) {\n let newCollAmount = safeSub(collAmount, collWithdrawal);\n let newBorrowAmount = '';\n if (isDebtIncreasing) {\n newBorrowAmount = safeAdd(borrowAmount, debtChange);\n } else {\n newBorrowAmount = safeSub(borrowAmount, debtChange);\n }\n editUserCollateralBalance(collId, collWithdrawal, true, state, dispatch);\n editUserCollateralPosition(\n collId,\n newCollAmount,\n newBorrowAmount,\n 'Active',\n state,\n dispatch\n );\n navigate('/positions');\n dispatch({ type: 'currentTxStatus', content: 'success' });\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n }\n }\n }\n };\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (collateralInputVal !== '' && !isZero(collateralInputVal)) {\n // put checks in here\n }\n\n setIsCollateralInputValid(isValid);\n setCollateralInputErrorMsg(errorMsg);\n }, [collateralInputVal]);\n\n useEffect(() => {\n let isValid = true;\n let errorMsg = '';\n if (borrowInputVal !== '' && !isZero(borrowInputVal) && collateralPosition !== undefined) {\n if (\n isNumber(minBorrow) &&\n isNumber(stateLiquidationReserve) &&\n isNumber(borrowInputVal) &&\n state.stabilityCoin !== undefined\n ) {\n const minAmount = safeAdd(minBorrow, stateLiquidationReserve);\n if (isLessThan(borrowInputVal, minAmount)) {\n isValid = false;\n errorMsg =\n 'You can not go under the minimum of ' +\n formatPositiveNumber(minAmount) +\n ' ' +\n state.stabilityCoin.ticker +\n '.';\n } else if (checkIfDebtLimitIsReached(borrowInputVal, debtLimit, state[`${collateralId}TotalDebt`], collateralPosition.borrowAmount)) {\n const availableToBorrow = safeSub(debtLimit, state[`${collateralId}TotalDebt`]);\n isValid = false;\n errorMsg = `Only ${formatPositiveNumber(availableToBorrow, 2)} ${state.stabilityCoin.ticker} available to borrow.`\n }\n }\n }\n\n setIsBorrowInputValid(isValid);\n setBorrowInputErrorMsg(errorMsg);\n // eslint-disable-next-line\n }, [borrowInputVal, minBorrow, state.stabilityCoin, stateLiquidationReserve, debtLimit, collateralPosition, collateralId]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.walletProvider !== undefined &&\n state.stabilityCoin !== undefined &&\n collateralInputVal !== '' &&\n totalDebt !== '' &&\n isNumber(stateCollAmount) &&\n isNumber(stateBorrowAmount)\n ) {\n const coll = getCoinFromUID(props.collateralId);\n if (coll !== undefined) {\n const collAddr = coll.addresses[state.chainView];\n const debtAddr = state.stabilityCoin.addresses[state.chainView];\n\n const collAmount = stateCollAmount;\n const collInput = collateralInputVal !== '' ? collateralInputVal : '0';\n const collChange = safeSub(collInput, collAmount);\n\n const debtAmount = stateBorrowAmount;\n const debtInput = totalDebt !== '' ? totalDebt : '0';\n const debtChange = safeSub(debtInput, debtAmount);\n\n setNewTCREstimate('');\n estimateNewTCR(\n collAddr,\n collChange,\n debtAddr,\n debtChange,\n state.chainView,\n state.appVersion,\n state.walletProvider\n ).then((result) => {\n if (!isErrorMsg(result)) {\n setNewTCREstimate(result.data);\n }\n });\n }\n }\n }, [\n state.chainView,\n state.walletProvider,\n state.stabilityCoin,\n collateralInputVal,\n stateCollAmount,\n stateBorrowAmount,\n totalDebt,\n props.collateralId,\n state.appVersion\n ]);\n\n const checkIfDebtLimitIsReached = (borrowInput:string, debtLimit:string, totalCollDebt:string, currentBorrowedAmount:string) => {\n if (debtLimit === '' || totalCollDebt === '') {\n return false;\n } else {\n return isGreaterThan(safeAdd(borrowInput, safeSub(totalCollDebt, currentBorrowedAmount)), debtLimit);\n }\n }\n\n const checkPositionRank = (newCollateralRatio:string, openTroves:any[]) => {\n const openTrovesCopy = [...openTroves];\n const currentTroveIdx = openTrovesCopy.findIndex(obj => obj.owner.id === state.walletAddress.toLowerCase());\n openTrovesCopy[currentTroveIdx].collateralRatio = newCollateralRatio;\n openTrovesCopy.sort((a, b) => parseFloat(b.collateralRatio) - parseFloat(a.collateralRatio));\n const rank = openTrovesCopy.findIndex(obj => obj.collateralRatio === newCollateralRatio) + 1;\n const totalTroves = openTrovesCopy.length.toString();\n const gapUntilLast = safeSub(totalTroves, rank.toString());\n const bottom15Percent = bottomNPercentofNum('.15', totalTroves);\n if (rank && gapUntilLast && bottom15Percent && openTroves.length > 0) {\n setCollateralRatioRank(`#${rank} of ${totalTroves}`);\n setIsCRRankNearLast(isLessThanOrEqual(gapUntilLast, bottom15Percent));\n }\n }\n\n const isEnoughStabilityCoinToClose = (uid: string) => {\n const collateral = getCollateralData(uid, state);\n if (collateral !== undefined) {\n const repayAmount = safeSub(collateral.borrowAmount, collateral.liquidationReserve);\n return isGreaterThanOrEqual(maxStabilityAvailable, repayAmount);\n }\n return false;\n };\n\n const enoughStabilityCoins = isEnoughStabilityCoinToClose(collateralId);\n\n const isEditCollateralModalConfirmButtonEnabled = () => {\n if (isNumber(editCollateralModalInput) && isLessThan(editCollateralModalInput, '0')) {\n return false;\n }\n if (!isNumber(collateralInputVal) || !isNumber(editCollateralModalInput)) {\n return false;\n }\n if (isEditCollateralModalDepositMode) {\n if (state.appVersion === '1' && collateralId !== 'op') {\n return false\n }\n const addAmount = safeAdd(collateralInputVal, editCollateralModalInput);\n // non-negative and doesn't exceed max deposit\n return (\n isGreaterThan(addAmount, '0') &&\n isLessThanOrEqual(editCollateralModalInput, maxCollateralAvailable)\n );\n } else {\n const subAmount = safeSub(collateralInputVal, editCollateralModalInput);\n // non-negative\n return isGreaterThan(subAmount, '0');\n }\n };\n\n const isEditBorrowModalConfirmButtonEnabled = () => {\n if (state.appVersion === '1' && collateralId !== 'op') {\n return false\n }\n return true;\n };\n\n const maxMoreCollateral = () => {\n if (\n collateralPosition !== undefined &&\n collateralInputVal !== '' &&\n maxCollateralAvailable !== ''\n ) {\n let maxColl = maxCollateralAvailable;\n let collAmount = collateralPosition.collateralAmount;\n let collInput = collateralInputVal;\n\n // value hasn't changed or user is withdrawing\n if (isLessThanOrEqual(collInput, collAmount)) {\n setEditCollateralModalInput(maxColl);\n } else {\n // some has already been deposited\n // figure out how much\n const subA = safeSub(collInput, collAmount);\n // subtract that from collateral available in wallet\n const subB = safeSub(maxColl, subA);\n setEditCollateralModalInput(subB);\n }\n }\n };\n\n const maxReturnStability = () => {\n if (collateralPosition !== undefined && borrowInputVal !== '' && maxStabilityAvailable !== '') {\n let maxBorrow = maxStabilityAvailable;\n let borrowAmount = collateralPosition.borrowAmount;\n let borrowInput = borrowInputVal;\n\n if (isGreaterThan(maxBorrow, borrowInput)) {\n setEditBorrowModalInput(borrowInput);\n } else if (isGreaterThanOrEqual(borrowInput, borrowAmount)) {\n // value hasn't changed or user is borrowing more\n setEditBorrowModalInput(maxBorrow);\n } else {\n // some has already been returned\n // figure out how much\n const subA = safeSub(borrowAmount, borrowInput);\n // subtract that from borrow available in wallet\n const subB = safeSub(maxBorrow, subA);\n setEditBorrowModalInput(subB);\n }\n }\n };\n\n const maxReturnStabilityForDelever = () => {\n if (collateralPosition !== undefined && borrowInputVal !== '' && maxStabilityAvailable !== '') {\n const maxERNToInput = safeSub(collateralPosition.borrowAmount, '.000000000000000001');\n if (isGreaterThan(maxStabilityAvailable, maxERNToInput)) {\n setDeleverAndCloseInputVal(maxERNToInput);\n } else {\n setDeleverAndCloseInputVal(maxStabilityAvailable);\n }\n }\n };\n\n const checkIfCRWithinLiquidateRange = (ratioRaw: string, collateralPosition: any) => {\n if (\n isGreaterThanOrEqual(ratioRaw, collateralPosition.minimumCollateralRatio) &&\n isLessThanOrEqual(ratioRaw, collateralPosition.criticalCollateralRatio)\n ) {\n setDisclaimerMessage(`\n Your collateral ratio is below the critical collateral ratio value of ${safeMult(\n collateralPosition.criticalCollateralRatio,\n '100'\n )}%, \n meaning your position may be subject to partial liquidation in the event Ethos enters recovery mode or \n full liquidation if your collateral ratio falls below the minimum collateral ratio of ${safeMult(\n collateralPosition.minimumCollateralRatio,\n '100'\n )}%.\n `);\n setShowDisclaimerMessage(true);\n } else if (\n isLessThanOrEqual(safeSub(ratioRaw, collateralPosition.criticalCollateralRatio), '.2')\n ) {\n setDisclaimerMessage(`\n Your collateral ratio is nearing the critical collateral ratio of ${safeMult(\n collateralPosition.criticalCollateralRatio,\n '100'\n )}% \n meaning your position may be subject to partial liquidation in the event Ethos enters recovery mode.\n `);\n setShowDisclaimerMessage(true);\n } else {\n setDisclaimerMessage('');\n setShowDisclaimerMessage(false);\n }\n return;\n };\n\n const buildCollInputLabel = () => {\n const ticker = collateralCoin !== undefined ? collateralCoin.ticker : '';\n if (collateralPosition !== undefined) {\n const currentAmount = collateralPosition.collateralAmount;\n if (isGreaterThan(collateralInputVal, currentAmount)) {\n return 'Total ' + ticker + ' Collateral after Deposit (↑)';\n } else if (isLessThan(collateralInputVal, currentAmount)) {\n return 'Total ' + ticker + ' Collateral after Withdraw (↓)';\n } else {\n return 'Current ' + ticker + ' Collateral';\n }\n }\n };\n\n const buildBorrowInputLabel = () => {\n const ticker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : '';\n if (collateralPosition !== undefined) {\n const currentAmount = collateralPosition.borrowAmount;\n if (isGreaterThan(borrowInputVal, currentAmount)) {\n return 'Total ' + ticker + ' Debt after Borrow (↑)';\n } else if (isLessThan(borrowInputVal, currentAmount)) {\n return 'Total ' + ticker + ' Debt after Return (↓)';\n } else {\n return 'Current ' + ticker + ' Debt';\n }\n }\n };\n\n const openDeleverAndCloseInputModal = () => {\n setIsClosePositionModalOpen(false);\n setIsDeleverAndClosePositionModalOpen(true);\n };\n\n const handleRankWarningAccepted = () => {\n setShowRankWarningModal(false);\n adjustPosition();\n }\n\n return (\n \n
\n
\n
\n {collateralCoin !== undefined && (\n
\n \"\"\n
\n )}\n
\n {'Edit Your ' +\n (collateralCoin !== undefined ? collateralCoin.label : '') +\n ' Position'}\n
\n {/*
\n \n
*/}\n
\n
\n
\n \n {\n //setIsEditCollateralModalOpen(true);\n setIsEditCollateralOpen(!isEditCollateralOpen);\n }}\n isValid={isCollateralInputValid}\n label={buildCollInputLabel()}\n errorMessage={collateralInputErrorMsg}\n readonly={true}\n className=\"w-100 unselectable\"\n showResetButton={\n collateralPosition !== undefined &&\n !isEqualTo(collateralInputVal, collateralPosition.collateralAmount)\n }\n resetValueFunction={() => {\n if (collateralPosition !== undefined) {\n setCollateralInputVal(collateralPosition.collateralAmount);\n }\n }}\n />\n {isEditCollateralOpen && (\n
\n
\n {\n setIsEditCollateralModalDepositMode(true);\n setEditCollateralModalInput('');\n }}\n >\n {'Deposit More '}\n {collateralCoin !== undefined ? collateralCoin.ticker : ''}\n \n {\n setIsEditCollateralModalDepositMode(false);\n setEditCollateralModalInput('');\n }}\n >\n {'Withdraw '}\n {collateralCoin !== undefined ? collateralCoin.ticker : ''}\n \n
\n {(state.appVersion === '1' && collateralId !== 'op') &&\n
\n \n Warning: Due to the recent exploit on Sonne, \n you may not be able to withdraw any collateral from your position even after repaying some of your debt.\n We have disabled depositing more collateral and repayments in the meantime.\n \n \n
\n Learn More \n
\n
\n
\n }\n
\n {isEditCollateralModalDepositMode ? (\n {\n if (isNumber(editCollateralModalInput)) {\n if (isEditCollateralModalDepositMode) {\n setCollateralInputVal(\n safeAdd(collateralInputVal, editCollateralModalInput)\n );\n } else {\n setCollateralInputVal(\n safeSub(collateralInputVal, editCollateralModalInput)\n );\n }\n setEditCollateralModalInput('');\n setIsEditCollateralOpen(false);\n }\n }}\n isApplyButtonDisabled={!isEditCollateralModalConfirmButtonEnabled()}\n />\n ) : (\n {\n if (isNumber(editCollateralModalInput)) {\n if (isEditCollateralModalDepositMode) {\n setCollateralInputVal(\n safeAdd(collateralInputVal, editCollateralModalInput)\n );\n } else {\n setCollateralInputVal(\n safeSub(collateralInputVal, editCollateralModalInput)\n );\n }\n setEditCollateralModalInput('');\n setIsEditCollateralOpen(false);\n }\n }}\n isApplyButtonDisabled={!isEditCollateralModalConfirmButtonEnabled()}\n />\n )}\n
\n
\n )}\n
\n
\n \n {\n //setIsEditBorrowModalOpen(true);\n setIsEditBorrowOpen(!isEditBorrowOpen);\n }}\n isValid={isBorrowInputValid}\n label={buildBorrowInputLabel()}\n errorMessage={borrowInputErrorMsg}\n readonly={true}\n className=\"w-100 \"\n showResetButton={\n collateralPosition !== undefined &&\n isNumber(baseBorrow) &&\n !isEqualTo(borrowInputVal, collateralPosition.borrowAmount)\n }\n resetValueFunction={() => {\n if (\n collateralPosition !== undefined &&\n isNumber(collateralPosition.borrowAmount)\n ) {\n setBorrowInputVal(collateralPosition.borrowAmount);\n }\n }}\n />\n {isEditBorrowOpen && (\n
\n
\n {\n setIsEditBorrowModalDepositMode(true);\n setEditBorrowModalInput('');\n }}\n >\n {'Repay '}\n {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n \n {state.appVersion === '2_1' &&\n {\n setIsEditBorrowModalDepositMode(false);\n setEditBorrowModalInput('');\n }}\n >\n {'Borrow More '}\n {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n \n }\n
\n {(state.appVersion === '1' && collateralId !== 'op') &&\n
\n \n Warning: Due to the recent exploit on Sonne, \n you may not be able to withdraw any collateral from your position even after repaying some of your debt.\n We have disabled depositing more collateral and repaying debt in the meantime.\n \n \n
\n Learn More \n
\n
\n
\n }\n
\n {isEditBorrowModalDepositMode ? (\n {\n if (isNumber(editBorrowModalInput)) {\n if (isEditBorrowModalDepositMode) {\n if (isEqualTo(borrowInputVal, editBorrowModalInput)) {\n setIsClosePositionModalOpen(true);\n } else {\n setBorrowInputVal(safeSub(borrowInputVal, editBorrowModalInput));\n }\n } else {\n setBorrowInputVal(safeAdd(borrowInputVal, editBorrowModalInput));\n }\n setEditBorrowModalInput('');\n setIsEditBorrowOpen(false);\n }\n }}\n isApplyButtonDisabled={!isEditBorrowModalConfirmButtonEnabled()}\n />\n ) : (\n {\n if (isNumber(editBorrowModalInput)) {\n if (isEditBorrowModalDepositMode) {\n setBorrowInputVal(safeSub(borrowInputVal, editBorrowModalInput));\n } else {\n setBorrowInputVal(safeAdd(borrowInputVal, editBorrowModalInput));\n }\n setEditBorrowModalInput('');\n setIsEditBorrowOpen(false);\n }\n }}\n />\n )}\n
\n
\n )}\n
\n
\n
\n
\n
\n
\n \n
\n
\n {formatPositiveNumber(collateralRatio, 3)}\n {' %'}\n
\n
\n \n
\n
\n \n {'One time fee of ' +\n (borrowRate !== '' && isNumber(borrowRate)\n ? formatPositiveNumber((safeMult(borrowRate, '100')), 2) + '% '\n : '0.5% ') +\n 'incurred when your position is opened and when you increase your debt. ' +\n 'This amount is added to your total debt.'}\n \n }\n isValid={isBorrowingFeeValid}\n isActive={collateralInputVal !== '' && borrowInputVal !== ''}\n >\n
\n {formatPositiveNumber(borrowFee, 5)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {formatPositiveNumber(totalDebt, 3)}{' '}\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {collateralRatioRank}\n
\n \n
\n
\n
\n
\n \n
\n
{formatPositiveNumber(liqReserve, 2)}
\n
\n \n {state.stabilityCoin?.ticker}\n
\n
\n \n
\n
\n \n
\n {'$'}\n {formatPositiveNumber(liqPriceNormal, 2)}\n
\n \n
\n
\n \n
\n {'$'}\n {formatPositiveNumber(liqPriceRecovery, 2)}\n
\n \n
\n
\n
\n {showDisclaimerMessage && (\n \n Caution\n

{disclaimerMessage}

\n \n )}\n
\n
\n {/*
{buildOpenPositionDescriptionText()}
*/}\n
\n
\n {\n setIsClosePositionModalOpen(true);\n }}\n disabled={false}\n />\n setShowRankWarningModal(true)\n : adjustPosition}\n disabled={\n collateralPosition === undefined ||\n (collateralInputVal === collateralPosition.collateralAmount &&\n borrowInputVal === collateralPosition.borrowAmount) ||\n collateralInputVal === '' ||\n borrowInputVal === '' ||\n !isCollateralInputValid ||\n !isBorrowInputValid ||\n !isCollateralRatioValid ||\n newTCREstimate === '' ||\n collateralPosition.criticalCollateralRatio === '' ||\n isLessThanOrEqual(newTCREstimate, collateralPosition.criticalCollateralRatio)\n }\n >\n {newTCREstimate !== '' ||\n (collateralPosition !== undefined &&\n collateralPosition.collateralAmount !== undefined &&\n collateralPosition.borrowAmount !== undefined &&\n isEqualTo(collateralInputVal, collateralPosition.collateralAmount) &&\n isEqualTo(borrowInputVal, collateralPosition.borrowAmount)) ? (\n 'Confirm Changes'\n ) : (\n \n )}\n \n
\n
\n \n {isClosePositionModalOpen && (\n {\n setIsClosePositionModalOpen(false);\n }}\n className=\"compact\"\n >\n
\n
\n Close Your Position\n
\n
\n
\n {enoughStabilityCoins\n ? 'Are you sure you want to close your position?'\n : 'You do not have enough ' +\n (state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : '') +\n ' to close your position.'}\n
\n
\n \n Close Position\n \n
\n
\n {state.appVersion === '2_1' &&\n
\n
\n {isGreaterThan(maxStabilityAvailable, '0')\n ? 'Recommended if your positioned is leveraged.'\n : 'You do not have enough ' +\n (state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : '') +\n ' to close your position.'}\n
\n
\n \n Delever and Close Position\n \n
\n
\n }\n
\n \n )}\n {isDeleverAndClosePositionModalOpen && (\n {\n setIsDeleverAndClosePositionModalOpen(false);\n }}\n className=\"compact\"\n >\n
\n Enter the amount of ERN you wish to repay to begin deleveraging.\n
\n \n
\n \n \n \n \n \n \n {/* \n \n \n */}\n \n
\n Iterations to Delever\n \n {deleverInNIterations}\n
\n Expected Gas Fee\n \n {isDeleverGasCostsLoading ? : deleverGasCosts ? formatPositiveNumber(deleverGasCosts,8) : '0'}\n  \n {chain?.nativeCurrency?.symbol}\n
\n {deleverInNIterations > 1 &&\n

*Increase the amount of ERN to increase the chance of closing your position and lower gas fee.

\n }\n
\n \n Close Position\n \n \n )}\n setShowCollateralHelpModal(false)} />\n setShowRankWarningModal(false)} \n handleSubmit={handleRankWarningAccepted} \n />\n \n );\n}\n\nexport default EditPositionPage;\n","var _path, _path2, _path3, _circle;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgOathv1(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 227,\n height: 223,\n viewBox: \"0 0 227 223\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M226.479 109.812C226.824 130.86 221.885 150.128 211.624 167.617C201.364 185.123 187.398 198.725 169.728 208.459C152.04 218.175 132.772 222.86 111.924 222.515C90.5314 222.86 71.0817 217.739 53.5752 207.134C36.0687 196.528 22.6845 182.69 13.4046 165.637C4.12471 148.585 -0.342723 130.497 0.0204825 111.411C-0.342723 91.7793 4.57872 73.3103 14.7303 55.9854C24.9001 38.6604 38.7746 24.9131 56.3719 14.7433C73.9692 4.59172 92.8378 -0.311563 112.996 0.0153222C144.286 -0.329723 171.163 9.96717 193.609 30.906C216.055 51.863 227.024 78.1591 226.498 109.794L226.479 109.812Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.7554 187.975L154.365 98.6259C165.497 117.64 168.348 134.402 154.456 150.056C151.714 153.143 148.445 155.322 144.958 156.848C144.958 156.848 135.061 144.808 132.9 145.352L129.504 146.224C128.959 146.369 128.686 146.987 128.941 147.495L131.41 152.162C132.464 154.16 132.863 156.43 132.573 158.664C132.209 161.406 130.43 163.731 127.887 164.802L120.696 167.817C119.988 168.107 119.17 167.817 118.844 167.108L117.681 164.711L115.793 167.49C113.795 170.432 112.542 173.828 112.124 177.369C111.979 178.604 112.887 179.712 114.122 179.821C129.703 181.255 152.331 176.388 164.844 162.296C188.288 135.891 183.313 107.652 164.39 75.526L157.452 63.5039L76.639 172.193L85.7736 187.993L85.7554 187.975Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140.745 34.5742L72.1352 123.923C61.0029 104.909 58.1517 88.1471 72.0444 72.4929C74.7866 69.4057 78.0554 67.2264 81.5422 65.701C81.5422 65.701 91.4396 77.7412 93.6006 77.1964L96.9966 76.3247C97.5414 76.1795 97.8138 75.562 97.5596 75.0535L95.0898 70.3863C94.0365 68.3887 93.637 66.1187 93.9275 63.8849C94.2907 61.1427 96.0704 58.8182 98.6129 57.7468L105.804 54.7321C106.513 54.4416 107.33 54.7321 107.657 55.4404L108.819 57.8376L110.708 55.059C112.705 52.1171 113.958 48.7211 114.376 45.1798C114.521 43.9449 113.613 42.8372 112.378 42.7282C96.7968 41.2935 74.1691 46.1605 61.6567 60.2529C38.2117 86.6579 43.1876 114.897 62.1107 147.023L69.0479 159.045L149.879 50.3737L140.745 34.5742Z\",\n fill: \"white\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 193,\n cy: 188,\n r: 29,\n fill: \"#DB1919\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOathv1);\nexport default __webpack_public_path__ + \"static/media/oathv1.ccf875c2.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _circle;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgOathv2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 227,\n height: 223,\n viewBox: \"0 0 227 223\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M226.479 109.812C226.824 130.86 221.885 150.128 211.624 167.617C201.364 185.123 187.398 198.725 169.728 208.459C152.04 218.175 132.772 222.86 111.924 222.515C90.5314 222.86 71.0817 217.739 53.5752 207.134C36.0687 196.528 22.6845 182.69 13.4046 165.637C4.12471 148.585 -0.342723 130.497 0.0204825 111.411C-0.342723 91.7793 4.57872 73.3103 14.7303 55.9854C24.9001 38.6604 38.7746 24.9131 56.3719 14.7433C73.9692 4.59172 92.8378 -0.311563 112.996 0.0153222C144.286 -0.329723 171.163 9.96717 193.609 30.906C216.055 51.863 227.024 78.1591 226.498 109.794L226.479 109.812Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.7554 187.975L154.365 98.6259C165.497 117.64 168.348 134.402 154.456 150.056C151.714 153.143 148.445 155.322 144.958 156.848C144.958 156.848 135.061 144.808 132.9 145.352L129.504 146.224C128.959 146.369 128.686 146.987 128.941 147.495L131.41 152.162C132.464 154.16 132.863 156.43 132.573 158.664C132.209 161.406 130.43 163.731 127.887 164.802L120.696 167.817C119.988 168.107 119.17 167.817 118.844 167.108L117.681 164.711L115.793 167.49C113.795 170.432 112.542 173.828 112.124 177.369C111.979 178.604 112.887 179.712 114.122 179.821C129.703 181.255 152.331 176.388 164.844 162.296C188.288 135.891 183.313 107.652 164.39 75.526L157.452 63.5039L76.639 172.193L85.7736 187.993L85.7554 187.975Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M140.745 34.5742L72.1352 123.923C61.0029 104.909 58.1517 88.1471 72.0444 72.4929C74.7866 69.4057 78.0554 67.2264 81.5422 65.701C81.5422 65.701 91.4396 77.7412 93.6006 77.1964L96.9966 76.3247C97.5414 76.1795 97.8138 75.562 97.5596 75.0535L95.0898 70.3863C94.0365 68.3887 93.637 66.1187 93.9275 63.8849C94.2907 61.1427 96.0704 58.8182 98.6129 57.7468L105.804 54.7321C106.513 54.4416 107.33 54.7321 107.657 55.4404L108.819 57.8376L110.708 55.059C112.705 52.1171 113.958 48.7211 114.376 45.1798C114.521 43.9449 113.613 42.8372 112.378 42.7282C96.7968 41.2935 74.1691 46.1605 61.6567 60.2529C38.2117 86.6579 43.1876 114.897 62.1107 147.023L69.0479 159.045L149.879 50.3737L140.745 34.5742Z\",\n fill: \"white\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 193,\n cy: 188,\n r: 29,\n fill: \"#2BCE1D\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOathv2);\nexport default __webpack_public_path__ + \"static/media/oathv2.91226429.svg\";\nexport { ForwardRef as ReactComponent };","import '../styling/MigrationPage.css';\nimport { useContext, useEffect, useMemo, useState } from 'react';\nimport { Context } from '../Store';\nimport Button from './Button';\n\nimport { ReactComponent as OathIconV1 } from '../assets/icons/coins/oathv1.svg';\nimport { ReactComponent as OathIconV2 } from '../assets/icons/coins/oathv2.svg';\n\nimport { ReactComponent as MigrateIcon } from '../assets/icons/stability.svg';\nimport { ReactComponent as ArrowUpIcon } from '../assets/icons/arrow-up.svg';\n\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport Input from './Input';\nimport { isGreaterThan } from '../functions/safeMath';\nimport { getChainConfigFromId, getChainNameFromId } from '../functions/chainHelpers';\nimport {\n checkShowNetworkWarningForEthos,\n isChainViewAligned,\n isWalletConnectedAndOnSupportedChain,\n refreshOathv1UserBalance,\n refreshOathv2UserBalance,\n} from '../functions/stateHelpers';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport {\n approveSpend,\n getAllowance,\n getTokenBalance,\n migrateOath,\n migrateOathOpNewForOld,\n migrateOathOpOldForNew,\n} from '../functions/blockchainRouter';\nimport { formatPositiveNumber, isErrorMsg } from '../functions/formatters';\n\ninterface MigrationPageProps {\n className?: string;\n}\n\nfunction MigrationPage(props: MigrationPageProps) {\n const [state, dispatch]: any = useContext(Context);\n\n let { className = '' } = props;\n\n const [oathInputVal, setOathInputVal] = useState('');\n const [inputCoin, setInputCoin] = useState('oathv1');\n const [availableOathv1, setAvailableOathv1] = useState('');\n\n const discordUrl = 'https://discord.com/invite/Fe7Svu5rg3';\n const faqUrl = 'https://www.oath.eco/oath-v2-token-migration-guide';\n\n const openLinkNewTab = (link: string) => {\n const openTab = window.open(link, '_blank');\n if (openTab !== null) {\n openTab.focus();\n }\n };\n\n const toggleInputCoin = () => {\n if (state.chainView === '0xa') {\n setOathInputVal('');\n if (inputCoin === 'oathv1') {\n setInputCoin('oathv2');\n } else {\n setInputCoin('oathv1');\n }\n }\n };\n\n const isWalletConnected = state.walletProvider === undefined || state.walletAddress === '';\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n const executeMigration = () => {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n const oathInputConfig = getCoinFromUID(inputCoin);\n if (chainConfig && oathInputConfig) {\n const justMigrate = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n if (state.chainView === '0xa') {\n if (inputCoin === 'oathv1') {\n migrateOathOpOldForNew(oathInputVal, state.chainView, state.appVersion, state.walletProvider).then(\n (migrateRes) => {\n if (!isErrorMsg(migrateRes)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n setOathInputVal('');\n refreshOathv1UserBalance(state, dispatch);\n refreshOathv2UserBalance(state, dispatch);\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n }\n );\n } else if (inputCoin === 'oathv2') {\n migrateOathOpNewForOld(oathInputVal, state.chainView, state.appVersion, state.walletProvider).then(\n (migrateRes) => {\n if (!isErrorMsg(migrateRes)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n setOathInputVal('');\n refreshOathv1UserBalance(state, dispatch);\n refreshOathv2UserBalance(state, dispatch);\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n }\n );\n }\n } else {\n migrateOath(oathInputVal, state.chainView, state.appVersion, state.walletProvider).then((migrateRes) => {\n if (!isErrorMsg(migrateRes)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n setOathInputVal('');\n refreshOathv1UserBalance(state, dispatch);\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n }\n };\n const approveAndMigrate = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n approveSpend(\n oathInputConfig.addresses[state.chainView],\n chainConfig.contracts.oathMigrationAddr,\n oathInputVal,\n state\n ).then((approveRes) => {\n if (!isErrorMsg(approveRes)) {\n justMigrate();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n };\n dispatch({ type: 'isTxModalOpen', content: true });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n let currentTxMessages = [\n {\n inProgress:\n 'You must approve ' +\n oathInputVal +\n ' OATH for deposit. Check your wallet to continue.',\n success: 'Successfully approved ' + oathInputVal + ' OATH.',\n failure: 'Token approval failed or the transaction was rejected.',\n pending: 'Approve OATH for deposit.',\n },\n {\n inProgress: 'Check your wallet to confirm your migration of ' + oathInputVal + ' OATH.',\n success: 'Successfully migrated ' + oathInputVal + ' OATH.',\n failure: 'Migration failed or the transaction was canceled.',\n pending: 'Waiting to migrate position.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n getAllowance(\n oathInputConfig.addresses[state.chainView],\n chainConfig.contracts.oathMigrationAddr,\n state\n ).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(oathInputVal, allowance)) {\n approveAndMigrate();\n } else {\n justMigrate();\n }\n } else {\n // if can't get allowance just approve it\n approveAndMigrate();\n }\n });\n }\n };\n\n useEffect(() => {\n if (state.chainView !== '0xa') {\n setInputCoin('oathv1');\n }\n }, [state.chainView]);\n\n useMemo(() => {\n if (\n state.chainView === '0xa' &&\n isWalletConnectedAndOnSupportedChain(\n state.chainView,\n state.connectedChain,\n state.walletAddress,\n state.walletProvider\n )\n ) {\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n const oathv1Config = getCoinFromUID('oathv1');\n if (oathv1Config && chainConfig) {\n getTokenBalance(\n oathv1Config.addresses[state.chainView],\n chainConfig.contracts.oathMigrationAddr,\n state.walletProvider\n ).then((result) => {\n if (!isErrorMsg(result)) {\n setAvailableOathv1(result.data);\n }\n });\n }\n }\n }, [state.chainView, state.walletProvider, state.connectedChain, state.walletAddress, state.appVersion]);\n\n return !isWalletConnected ? (\n
\n
\n \n
\n
\n Migrate OATH\n
\n
\n
\n
\n Use this tool to migrate your deprecated OATH tokens to the new token contract.\n
\n
\n openLinkNewTab(faqUrl)}\n className=\"border-color-light\"\n >\n Migration FAQ\n \n openLinkNewTab(discordUrl)}\n className=\"border-color-light\"\n >\n Discord\n \n
\n
\n
\n
\n
\n
\n Current Chain: {getChainNameFromId(state.chainView)}\n
\n {\n dispatch({ type: 'isSelectNetworkOpen', content: true });\n }}\n >\n Select Chain\n \n
\n
\n {/*state.chainView !== state.connectedChain ? : <>*/}\n
\n
\n
\n
\n
\n {inputCoin === 'oathv1' ? (\n \n ) : (\n \n )}\n {state.chainView === '0xa'\n ? inputCoin === 'oathv1'\n ? 'OATHv1'\n : 'OATHv2'\n : 'OATHv1'}\n
\n
\n {state.chainView === '0xa' ? (\n \n ) : (\n \n )}\n
\n
\n {state.chainView === '0xa'\n ? inputCoin === 'oathv1'\n ? 'OATHv2'\n : 'OATHv1'\n : 'OATHv2'}\n {inputCoin === 'oathv2' ? (\n \n ) : (\n \n )}\n
\n
\n {state.chainView === '0xa' && inputCoin === 'oathv2' && availableOathv1 !== '' && (\n
\n {`Available to migrate: ${formatPositiveNumber(availableOathv1, 4)} OATHv2`}\n
\n )}\n
\n {\n if (inputCoin === 'oathv1') {\n setOathInputVal(state.oathv1UserBalance);\n } else {\n setOathInputVal(state.oathv2UserBalance);\n }\n }}\n value={oathInputVal}\n setValue={setOathInputVal}\n errorMessage=\"Put error message here.\"\n className=\"\"\n />\n \n Swap\n \n
\n
\n
\n \n ) : (\n
\n \n
\n
\n
\n \n
\n
\n
\n Migrate OATH\n
\n
\n
\n Use this tool to migrate your deprecated OATH tokens to the new token contract.\n
\n
\n
{buildActionButtonIfDataIsntLoading()}
\n
\n
\n \n );\n}\n\nexport default MigrationPage;\n","import { useContext, useEffect, useState } from 'react';\nimport { Context } from '../Store';\n\nimport Input from './Input';\nimport Button from './Button';\n\nimport {\n approveSpend,\n depositIntoVault,\n getAllowance,\n getTokenBalance,\n withdrawFromVault,\n} from '../functions/blockchainRouter';\nimport { isErrorMsg, formatPositiveNumber, getInputShareWithdrawAmount } from '../functions/formatters';\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport LoadingSpinner from './LoadingSpinner';\nimport Modal from './modals/Modal';\nimport {\n checkShowNetworkWarningForEthos,\n editTotalStERNVaultDeposits,\n isStERNPositionOpen,\n refreshUserStERNVaultDeposits,\n} from '../functions/stateHelpers';\nimport { getChainConfigFromId } from '../functions/chainHelpers';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport { ReactComponent as ErnIcon } from '../assets/icons/coins/ern.svg';\nimport { ReactComponent as StERNIcon } from '../assets/icons/coins/stERN.svg';\nimport { ReactComponent as LinkIcon } from '../assets/icons/link.svg';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport InfoBox from './InfoBox';\n\ninterface VaultPageProps {\n className?: string;\n}\n\nfunction VaultPage(props: VaultPageProps) {\n const [state, dispatch]: any = useContext(Context);\n\n const [depositInputVal, setDepositInputVal] = useState('');\n const [withdrawInputVal, setWithdrawInputVal] = useState('');\n const [depositMoreInputVal, setDepositMoreInputVal] = useState('');\n\n const [maxStableAvailable, setMaxStableAvailable] = useState('');\n\n const [isEditModalOpen, setIsEditModalOpen] = useState(false);\n const [editModalMode, setEditModalMode] = useState('');\n\n let { className = '' } = props;\n\n useEffect(() => {\n let isMounted = true;\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.stabilityCoin !== undefined &&\n state.isOnSupportedChain\n ) {\n const chainConfig = getCoinFromUID(state.stabilityCoin.uid);\n if (chainConfig) {\n getTokenBalance(\n chainConfig.addresses[state.connectedChain],\n state.walletAddress,\n state.walletProvider\n ).then((balance: any) => {\n if (!isErrorMsg(balance) && isMounted) {\n setMaxStableAvailable(balance.data);\n }\n });\n }\n }\n return () => {\n isMounted = false;\n };\n }, [\n state.walletProvider,\n state.walletAddress,\n state.connectedChain,\n state.isOnSupportedChain,\n state.stabilityCoin\n ]);\n\n const deposit = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const tokenTicker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'You must approve ' +\n amount +\n ' ' +\n tokenTicker +\n ' for deposit. Check your wallet to continue.',\n success: 'Successfully approved ' + amount + ' ' + tokenTicker + '.',\n failure: 'Token approval failed or the transaction was rejected.',\n pending: 'Approve ' + tokenTicker + ' for deposit.',\n },\n {\n inProgress: 'Trying to deposit ' + amount + ' ' + tokenTicker + '.',\n success: 'Successfully deposited ' + amount + ' ' + tokenTicker + ' in the stERN vault.',\n failure:\n 'Deposit for ' + amount + ' ' + tokenTicker + ' failed or the transaction was canceled. Deposit cap may have been exceeded.',\n pending: 'Waiting to deposit tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isTxModalOpen', content: true });\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined && state.stabilityCoin !== undefined) {\n const justDeposit = () => {\n dispatch({ type: 'currentTxNumber', content: 1 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n depositIntoVault(amount, chainConfig.contracts.stERNVaultAddr, state.walletProvider).then((depositResponse) => {\n if (!isErrorMsg(depositResponse)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n refreshUserStERNVaultDeposits(state, dispatch);\n editTotalStERNVaultDeposits(amount, true, state, dispatch);\n setDepositInputVal('');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n })\n };\n const approveAndDeposit = () => {\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n approveSpend(state.stabilityCoin.addresses[state.connectedChain], chainConfig.contracts.stERNVaultAddr, amount, state).then(\n (approveResponse) => {\n if (!isErrorMsg(approveResponse)) {\n justDeposit();\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n }\n );\n };\n dispatch({ type: 'currentTxStatus', content: 'pending' });\n\n getAllowance(state.stabilityCoin.addresses[state.connectedChain], chainConfig.contracts.stERNVaultAddr, state).then((allowanceRes) => {\n dispatch({ type: 'isLoadingTxSteps', content: false });\n if (!isErrorMsg(allowanceRes)) {\n const allowance = allowanceRes.data;\n if (isGreaterThan(amount, allowance)) {\n approveAndDeposit();\n } else {\n justDeposit();\n }\n } else {\n // if can't get allowance just approve it\n approveAndDeposit();\n }\n });\n }\n };\n\n const withdraw = (amount: string) => {\n setIsEditModalOpen(false);\n dispatch({ type: 'isTxModalOpen', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: true });\n const tokenTicker = state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : 'tokens';\n const currentTxMessages = [\n {\n inProgress:\n 'Check your wallet to confirm your withdrawal of ' + amount + ' ' + tokenTicker + '.',\n success:\n 'Successfully withdrew ' + amount + ' ' + tokenTicker + ' from the stability pool.',\n failure: 'Withdrawal failed or the transaction was canceled.',\n pending: 'Waiting to withdraw tokens.',\n },\n ];\n dispatch({ type: 'txMessages', content: currentTxMessages });\n dispatch({ type: 'currentTxNumber', content: 0 });\n dispatch({ type: 'currentTxStatus', content: 'inProgress' });\n dispatch({ type: 'isLoadingTxSteps', content: false });\n dispatch({ type: 'isTxModalOpen', content: true });\n const chainConfig = getChainConfigFromId(state.chainView, state.appVersion);\n if (chainConfig !== undefined) {\n const amountInVaultTokens = getInputShareWithdrawAmount(amount, state.userStERNDepositsInERN, state.userStERNDeposits);\n withdrawFromVault(amountInVaultTokens, chainConfig.contracts.stERNVaultAddr, state.walletProvider).then((withdrawResponse) => {\n if (!isErrorMsg(withdrawResponse)) {\n dispatch({ type: 'currentTxStatus', content: 'success' });\n refreshUserStERNVaultDeposits(state, dispatch);\n editTotalStERNVaultDeposits(amount, false, state, dispatch);\n setWithdrawInputVal('');\n } else {\n dispatch({ type: 'currentTxStatus', content: 'failure' });\n }\n });\n }\n };\n\n const maxOutStable = () => {\n if (maxStableAvailable !== '') {\n setDepositInputVal(maxStableAvailable);\n }\n };\n\n const checkInputHasError = (value: string) => {\n return false;\n };\n\n const openPositionExists: boolean = isStERNPositionOpen(state);\n const isLoaded =\n state.userStERNDepositsInERN !== '' &&\n state.userStERNDepositsUSD !== ''\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n return (\n
\n
\n {isLoaded ? (\n
\n
\n
\n \n
\n {openPositionExists ? 'My stERN Vault' : 'Deposit in the stERN Vault'}\n
\n
\n {state.stERNApy !== '' ? (\n formatPositiveNumber(safeMult(state.stERNApy, '100'), 3) + ' % APY'\n ) : (\n <>\n )}\n
\n
\n
\n {'There is currently '}\n {state.totalStERNDeposits !== '' ? (\n formatPositiveNumber(state.totalStERNDeposits, 1)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker} deposited in the stERN vault.\n
\n
\n {openPositionExists ? (\n <>\n
\n
\n
\n
\n
\n
\n Deposited Tokens\n
\n
\n {state.userStERNDepositsInERN !== '' ? (\n formatPositiveNumber(state.userStERNDepositsInERN)\n ) : (\n \n )}\n \n {state.stabilityCoin?.ticker}\n
\n
\n
\n
\n USD Value\n
\n
\n {state.userStERNDepositsUSD !== '' ? (\n `$${formatPositiveNumber(state.userStERNDepositsUSD, 2)}`\n ) : (\n \n )}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {\n setIsEditModalOpen(true);\n setEditModalMode('withdraw');\n }}\n />\n {\n setIsEditModalOpen(true);\n setEditModalMode('deposit');\n }}\n />\n
\n
\n {isEditModalOpen ? (\n {\n setIsEditModalOpen(false);\n }}\n title={editModalMode === 'deposit' ? 'Deposit' : 'Withdraw'}\n >\n {editModalMode === 'deposit' ? (\n
\n
\n Tokens in Wallet\n
\n
\n {maxStableAvailable !== '' ? (\n formatPositiveNumber(maxStableAvailable)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker}\n
\n
\n ) : (\n
\n
\n Deposited Tokens\n
\n
\n {state.userStERNDepositsInERN !== '' ? (\n formatPositiveNumber(state.userStERNDepositsInERN)\n ) : (\n \n )}{' '}\n {state.stabilityCoin?.ticker}\n
\n
\n )}\n {editModalMode === 'deposit' ? (\n {\n setDepositMoreInputVal(maxStableAvailable);\n }}\n value={depositMoreInputVal}\n setValue={setDepositMoreInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n ) : (\n {\n setWithdrawInputVal(state.userStERNDepositsInERN);\n }}\n value={withdrawInputVal}\n setValue={setWithdrawInputVal}\n errorMessage=\"Put error message here.\"\n className=\"padding-bottom\"\n />\n )}\n {editModalMode === 'deposit' ? (\n
\n {\n setDepositMoreInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n deposit(depositMoreInputVal);\n }}\n />\n
\n ) : (\n
\n {\n setWithdrawInputVal('');\n setIsEditModalOpen(false);\n }}\n disabled={false}\n />\n {\n withdraw(withdrawInputVal);\n }}\n />\n
\n )}\n \n ) : (\n <>\n )}\n \n ) : (\n <>\n
\n \n
\n
\n
\n {\n setDepositInputVal('');\n }}\n disabled={depositInputVal === ''}\n />\n {\n deposit(depositInputVal);\n }}\n disabled={depositInputVal === '' || parseFloat(depositInputVal) === 0}\n />\n
\n
\n \n )}\n
\n ) : (\n \n
\n
\n
\n \n
\n
\n
\n stERN Vault\n
\n
\n
\n Invest ERN into the stERN vault and receive up to{' '}\n {state.stERNApy !== ''\n ? formatPositiveNumber(safeMult(state.stERNApy, '100'), 2) + ' % APY.'\n : '5% APY.'}{' '}\n
\n
\n
{buildActionButtonIfDataIsntLoading()}
\n
\n
\n )}\n
\n {/* {openPositionExists &&\n
\n \n
\n \n Boost your stERN yield by creating a Digit Relic via the Digit app. With a relic, the longer you hold your position, the larger the rewards.\n \n
\n
\n } */}\n \n );\n}\n\nexport default VaultPage;\n","var _path, _path2, _path3, _path4;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgAnalytics(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 5C0 2.23858 2.23858 0 5 0H12C14.7614 0 17 2.23858 17 5V12C17 14.7614 14.7614 17 12 17H5C2.23858 17 0 14.7614 0 12V5ZM5 2C3.34315 2 2 3.34315 2 5V12C2 13.6569 3.34315 15 5 15H12C13.6569 15 15 13.6569 15 12V5C15 3.34315 13.6569 2 12 2H5Z\",\n fill: \"#08001C\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5 12C4.72386 12 4.5 11.7761 4.5 11.5V8.5C4.5 8.22386 4.72386 8 5 8H6C6.27614 8 6.5 8.22386 6.5 8.5V11.5C6.5 11.7761 6.27614 12 6 12H5Z\",\n fill: \"#08001C\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 12C7.72386 12 7.5 11.7761 7.5 11.5V5.5C7.5 5.22386 7.72386 5 8 5H9C9.27614 5 9.5 5.22386 9.5 5.5V11.5C9.5 11.7761 9.27614 12 9 12H8Z\",\n fill: \"#08001C\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11 12C10.7239 12 10.5 11.7761 10.5 11.5V7.5C10.5 7.22386 10.7239 7 11 7H12C12.2761 7 12.5 7.22386 12.5 7.5V11.5C12.5 11.7761 12.2761 12 12 12H11Z\",\n fill: \"#08001C\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAnalytics);\nexport default __webpack_public_path__ + \"static/media/analytics.de4aeedc.svg\";\nexport { ForwardRef as ReactComponent };","import { useContext, useEffect, useState, useRef } from 'react';\nimport Modal from './Modal';\nimport { Context } from '../../Store';\nimport { getCoinFromUID } from '../../functions/coinHelpers';\nimport Button from '../Button';\nimport { getChainCollateralFromId } from '../../functions/chainHelpers';\nimport { shortenAddressMore, toFixedDecimals } from '../../functions/formatters';\nimport { safeMult } from '../../functions/safeMath';\nimport { Coin } from '../../storage/Types';\n\ninterface AllTrovesModalProps {\n isOpen:boolean;\n handleClose?: () => void;\n className?: string;\n}\n\nconst AllTrovesModal = (props: AllTrovesModalProps) => {\n const {\n isOpen = false,\n handleClose = () => {},\n } = props;\n\n const tableRef:any = useRef(null);\n\n const [state]: any = useContext(Context);\n const [selectedCollateralId, setSelectedCollateralId] = useState(\"btc\");\n const [selectedCollateral, setSelectedCollateral] = useState(undefined);\n\n useEffect(() => {\n if (selectedCollateralId !== \"\") {\n setSelectedCollateral(getCoinFromUID(selectedCollateralId));\n }\n }, [selectedCollateralId])\n\n const scrollToUserPosition = () => {\n if (tableRef.current) {\n const entryElement = tableRef.current.querySelector(`#entry-${state.walletAddress.toLowerCase()}`);\n if (entryElement) {\n entryElement.scrollIntoView({ behavior: 'smooth' });\n }\n }\n };\n\n const buildTroveChanges = () => {\n return (\n state[selectedCollateralId + 'AllOpenTroves'].map((trove:any, idx:number) => {\n return( \n \n {trove.rank}\n {toFixedDecimals(safeMult(trove.collateralRatio, '100'), state.isMobile ? 0 : 2)}%\n {toFixedDecimals(trove.collateral, state.isMobile ? 8 : undefined)} {selectedCollateral !== undefined ? selectedCollateral.ticker : ''}\n {toFixedDecimals(trove.debt, 2)} {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n \n \n {shortenAddressMore(trove.owner.id)}\n \n \n \n )\n })\n )\n };\n\n const buildCollateralSelectButtons = () => {\n const availableCollateral = getChainCollateralFromId(state.chainView, state.appVersion);\n\n const buildButton = (coinId: string) => {\n const coin = getCoinFromUID(coinId);\n if (coin !== undefined) {\n return (\n \n }\n className={\n 'collateral-select-button border-full' +\n (selectedCollateralId === coinId ? ' selected' : '')\n }\n key={'coll-button-' + coin.label}\n text={!state.isMobile ? coin.label : ''}\n onButtonClick={() => {\n setSelectedCollateralId(coin.uid);\n }}\n />\n );\n } else {\n return
;\n }\n };\n\n if (availableCollateral !== undefined) {\n return (\n
\n
\n {availableCollateral.map((v) => buildButton(v))}\n
\n
\n );\n } else {\n return <>;\n }\n };\n\n return (\n <>\n {isOpen ? (\n \n
\n
\n {state[`${selectedCollateralId}Status`] === \"Active\" &&\n
\n
\n
\n
\n }\n {buildCollateralSelectButtons()}\n
\n {state[selectedCollateralId + 'AllOpenTroves'].length > 0 ?\n \n \n \n \n \n \n \n \n \n \n \n {buildTroveChanges()}\n \n
CR RankCRCollateralDebtOwner
\n :\n No troves found.\n }\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default AllTrovesModal;","import { useContext, useEffect, useState } from 'react';\nimport { Context } from '../Store';\nimport '../styling/StabilityCoinWidget.css';\n\nimport { formatPositiveNumber, isErrorMsg } from '../functions/formatters';\n\nimport { ReactComponent as LinkIcon } from '../assets/icons/link.svg';\nimport { getTotalSupply } from '../functions/blockchainRouter';\nimport LoadingSpinner from './LoadingSpinner';\nimport { defaultChain } from '../storage/Chains';\n\ninterface StabilityCoinWidgetProps {\n className?: string;\n}\n\nfunction StabilityCoinWidget(props: StabilityCoinWidgetProps) {\n const [state]: any = useContext(Context);\n const [stabilityCoinSupply, setStabilityCoinSupply] = useState('');\n\n\n let { className = '' } = props;\n\n const buildExplorerUrl = () => {\n const tokenAddress = state.stabilityCoin.addresses[defaultChain.chainId.hex];\n const explorer = defaultChain.explorerUrl;\n return `${explorer}/address/${tokenAddress}`;\n }\n \n useEffect(() => {\n if (\n state.stabilityCoin !== undefined &&\n state.readProvider !== undefined\n ) {\n const tokenAddress = state.stabilityCoin.addresses[defaultChain.chainId.hex];\n getTotalSupply(tokenAddress, state.readProvider).then((res) => {\n if (!isErrorMsg(res)) {\n setStabilityCoinSupply(res.data)\n } \n })\n\n }\n }, [\n state.readProvider,\n state.stabilityCoin\n ])\n\n return (\n \n
\n
\n
\n
\n {state.stabilityCoin?.ticker}\n
\n
\n {state.stabilityCoin !== undefined ? state.stabilityCoin.ticker : ''}\n
\n
\n Supply:\n {stabilityCoinSupply ?\n formatPositiveNumber(stabilityCoinSupply, 0)\n : \n }\n
\n
\n
\n
\n
\n ${state.stabilityCoinPrice ?\n formatPositiveNumber(state.stabilityCoinPrice,3)\n : \n }\n
\n \n
\n
\n
\n
\n
\n )\n}\n\nexport default StabilityCoinWidget;\n","import { useContext, useEffect, useState } from 'react';\nimport { Context } from '../Store';\nimport '../styling/AnalyticsPage.css';\n\nimport Button from './Button';\n\nimport { formatPositiveNumber, bpToPercent, shortenAddressMore, shortenAddress } from '../functions/formatters';\nimport { safeMult } from '../functions/safeMath';\nimport LoadingSpinner from './LoadingSpinner';\nimport {checkShowNetworkWarningForEthos} from '../functions/stateHelpers';\nimport { getChainCollateralFromId } from '../functions/chainHelpers';\nimport { getCoinFromUID, getCoinTickerFromAddress } from '../functions/coinHelpers';\nimport { ReactComponent as AnalyticsIcon } from '../assets/icons/analytics.svg';\nimport ConnectWalletButton from './ConnectWalletButton';\nimport SwitchNetworkButton from './SwitchNetworkButton';\nimport { TroveSubgraphDataInterface, TroveSubgraphGlobalDataInterface } from '../storage/Types';\nimport { getGlobalTrovesData } from '../functions/api';\nimport AllTrovesModal from './modals/AllTrovesModal';\nimport ToolTip from './Tooltip';\nimport StabilityCoinWidget from './StabilityCoinWidget';\n\ninterface AnalyticsPageProps {\n className?: string;\n}\n\nconst strategyLabels:any = {\n //v1\n '0x0fabf5037879cc56c1f63946c6d0550dc99d3b68': 'Granary',\n '0x1147d12648af6b60c831aa8564ad5bbab17749a9': 'Sonne',\n '0x77fbf86399ed764a084f77b9accb049f3dbc32d2': 'Granary',\n '0xab3009aa9aa054325ef95bbdb250582aff2e33c8': 'Sonne',\n '0x8929c3f0cca2aa8ad28389381a2ba102e8ea0a7f': 'Granary',\n '0x10eac0a3579a482b1b4fb9eedd16a7e0a19dcb07': 'Sonne',\n //v2.1\n '0xa6b0f76dae04b9f763e9937b9bebf3459272036d': 'Granary',\n '0xc5e45875fd5e6faedabce178b90c882aeaccd845': 'Granary',\n '0xc21beb7af346d3fbec75f81e210089f95c1178d2': 'Granary'\n}\n\nfunction AnalyticsPage(props: AnalyticsPageProps) {\n const [state, dispatch]: any = useContext(Context);\n\n const [isAllTrovesModalOpen, setIsAllTrovesModalOpen] = useState(false);\n const [trovesGlobalData, setTrovesGlobalData] = useState(undefined);\n\n let { className = '' } = props;\n\n const checkIfPositionsAreLoaded = () => {\n if (state.appVersion === '2_1') {\n return (\n state.btcVaultData !== '' &&\n state.ethVaultData !== '' &&\n state.wstethVaultData !== '' &&\n trovesGlobalData &&\n state.topBorrowers.length\n )\n } else if (state.appVersion === '2') {\n return (\n state.btcVaultData !== '' &&\n state.ethVaultData !== '' &&\n trovesGlobalData &&\n state.topBorrowers.length\n )\n } else {\n return (\n state.btcVaultData !== '' &&\n state.ethVaultData !== '' &&\n state.opVaultData !== '' &&\n trovesGlobalData &&\n state.topBorrowers.length\n )\n }\n }\n\n const isLoaded = checkIfPositionsAreLoaded();\n \n useEffect(() => {\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.chainView !== '' &&\n state.chainView === state.connectedChain &&\n state.isWalletConnected\n ) {\n getGlobalTrovesData(state.chainView, state.appVersion).then((res) => {\n setTrovesGlobalData(res.data)\n })\n\n }\n }, [\n dispatch,\n state.walletProvider,\n state.walletAddress,\n state.chainView,\n state.connectedChain,\n state.isWalletConnected,\n state.appVersion\n ])\n\n const buildActionButtonIfDataIsntLoading = () => {\n const connectedToWrongChain = checkShowNetworkWarningForEthos(state);\n if (state.walletProvider === undefined && state.walletAddress.length === 0) {\n return ;\n } else if (connectedToWrongChain) {\n return ;\n } else {\n return <>;\n }\n };\n\n const buildUnderlyingVaults = () => {\n const availableCollateral = getChainCollateralFromId(state.chainView, state.appVersion);\n const jsx = availableCollateral.map((uid:string) => {\n const vaultData = state[`${uid}VaultData`];\n if (!vaultData) {return
}\n const coin = getCoinFromUID(uid);\n return (\n
\n
\n \n
\n {vaultData.name}\n
\n
\n {vaultData.yields.apy !== '' ? (\n formatPositiveNumber(safeMult(vaultData.yields.apy, '100'), 3) + ' % APY'\n ) : (\n <>\n )}\n
\n
\n
\n {'TVL: $'}\n {vaultData.tvl.tvl !== '' ? (\n formatPositiveNumber(vaultData.tvl.tvl, 1)\n ) : (\n \n )}{' '}\n
\n
\n Strategies\n
\n
\n {Object.keys(vaultData.aprBreakdown).length > 0 ?\n \n \n \n \n \n \n \n \n \n {Object.keys(vaultData.aprBreakdown).map((strategy:string) => {\n return (\n \n \n \n \n \n )\n })}\n \n
Strategy NameAPRAllocation Percentage
{strategyLabels[strategy.toLowerCase()] ? strategyLabels[strategy.toLowerCase()] : shortenAddress(strategy)}{safeMult(vaultData.aprBreakdown[strategy], '100')}%{bpToPercent(vaultData.allocBPS[strategy])}%
\n :\n No active strategies.\n }\n
\n
\n )\n })\n return jsx;\n }\n\n return (\n
\n {isLoaded ? (\n
\n {state.isMobile &&\n \n }\n
\n
\n \n Underlying Vaults\n \n \n A portion of collateral deposited into Ethos Reserve are managed by these vaults.\n \n
\n {buildUnderlyingVaults()}\n
\n
\n {!state.isMobile &&\n \n }\n
\n
\n Global\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Open Troves:{trovesGlobalData?.numberOfOpenTroves}
Liquidated Troves:{trovesGlobalData?.numberOfLiquidatedTroves}
Redeemed Troves:{trovesGlobalData?.numberOfRedeemedTroves}
Redemptions:{trovesGlobalData?.redemptionCount}
Liquidations:{trovesGlobalData?.liquidationCount}
\n
\n
\n
\n
\n Top ERN Borrowers\n
\n
\n \n \n \n \n \n \n \n \n \n {\n state.topBorrowers.map((trove:TroveSubgraphDataInterface, idx:number) => {\n return (\n \n \n \n \n \n )\n })\n }\n \n
WalletCollateralDebt
{shortenAddressMore(trove.owner.id)}{getCoinTickerFromAddress(trove.collateralAddress, state.chainView)}{formatPositiveNumber(trove.debt, 2)}
\n
\n
\n
\n setIsAllTrovesModalOpen(false)} />\n
\n ) : (\n \n
\n
\n
\n \n
\n
\n
\n Analytics\n
\n
\n
\n View data such as underlying vaults, your transactions, and all other open troves.\n
\n
\n
{buildActionButtonIfDataIsntLoading()}
\n
\n
\n )}\n \n );\n}\n\nexport default AnalyticsPage;\n","import { Route, Routes } from 'react-router-dom';\nimport '../styling/Body.css';\nimport { ReactElement, useContext } from 'react';\nimport { Context } from '../Store';\nimport PositionsPage from './PositionsPage';\nimport StabilityPage from './StabilityPage';\nimport StakingPage from './StakingPage';\nimport NewPositionPage from './NewPositionPage';\nimport DashboardPage from './DashboardPage';\n//import MintTestPage from './MintTestPage';\nimport { getChainCollateralFromId } from '../functions/chainHelpers';\nimport EditPositionPage from './EditPositionPage';\nimport MigrationPage from './MigrationPage';\nimport VaultPage from './VaultPage';\nimport AnalyticsPage from './AnalyticsPage';\n\ninterface BodyProps {\n className?: string;\n}\n\nfunction Body(props: BodyProps) {\n const [state]: any = useContext(Context);\n const { className = '' } = props;\n\n const buildEditCollateralPositionRoutes = () => {\n const routes: ReactElement[] = [];\n const collaterals = getChainCollateralFromId(state.chainView, state.appVersion);\n collaterals?.forEach((uid: string) => {\n routes.push(\n }\n />\n );\n });\n return routes;\n };\n\n const buildNewCollateralPositionRoutes = () => {\n const routes: ReactElement[] = [];\n const collaterals = getChainCollateralFromId(state.chainView, state.appVersion);\n collaterals?.forEach((uid: string) => {\n routes.push(\n }\n />\n );\n });\n return routes;\n };\n\n return (\n
\n \n } />\n } />\n } />\n {buildNewCollateralPositionRoutes()}\n } />\n {buildEditCollateralPositionRoutes()}\n } />\n } />\n } />\n } />\n } />\n\n \n

404

\n
Page not found.
\n \n }\n />\n
\n
\n );\n}\n\nexport default Body;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTwitter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTwitter);\nexport default __webpack_public_path__ + \"static/media/twitter.7b0966c6.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgDiscord(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 640 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDiscord);\nexport default __webpack_public_path__ + \"static/media/discord.7676a02b.svg\";\nexport { ForwardRef as ReactComponent };","import { useContext } from 'react';\nimport { safeDiv } from '../functions/safeMath';\nimport { Context } from '../Store';\n\nimport Button from './Button';\n\nimport '../styling/Disclaimer.css';\n\ninterface DisclaimerProps {\n readMode?: boolean;\n className?: string;\n}\n\nfunction Disclaimer(props: DisclaimerProps) {\n const [state, dispatch]: any = useContext(Context);\n\n return state.showDisclaimer || props.readMode ? (\n \n \n
\n
Terms of Use
\n
\n Ethos Reserve Privacy Policy\n Updated 7/5/2023\n \n OATH Foundation per its commitment to transparency and user autonomy has prepared this\n Privacy Policy for its users' review. This Privacy Policy outlines how your data is\n handled when you use Ethos Reserve (\"the Application\"). By using the Application, you\n agree to the terms set forth in this Privacy Policy.\n \n
    \n
  1. \n Data Collection: While public blockchain data is often used in the development and\n maintenance of the Application, private data including but not limited to IP\n addresses, browser information, device information, session duration, and pages\n visited; and personal identifiable information such as names, address, emails, phone\n numbers, and tax identification numbers are not collected by the Application. The\n provided list is not to be taken as exhaustive; however, OATH Foundation takes into\n custody zero private information of the users of the Application, and as such, there\n is currently no obligation to implement data privacy systems either internal to the\n OATH Foundation regarding the Application or inherent to the Application itself.\n
  2. \n
  3. \n Third-Party Integrations: The Application may integrate with third-party services\n that may in some cases collect user data. While care has been taken to choose\n reputable third parties, it's important to note that they operate outside the\n liability of Oath Foundation and the Application and in the event of a security\n breach under a third-party integration, OATH Foundation may not be held responsible.\n At this time there are no third-party integrations in place.\n
  4. \n
  5. \n Data Security Measures: The blockchain inherently protects user privacy. At this\n time, there is no requirement for KYC (\"Know Your Customer\") policies to use the\n Application. Until there is a need to do so, OATH Foundation and the Application\n will not require personal data collection to use the Application. However, once a\n user has decided to use features on the Application made possible by third-party\n integrations, any data that would be collected by the third-party would be subject\n to their own security policies.\n
  6. \n
  7. \n Updates to Privacy Policy: This Privacy Policy may be updated periodically to\n reflect any changes in our data handling practices or legal requirements. It is your\n responsibility to review this policy regularly. By continuing to use the Application\n after any updates, you agree to the revised terms.\n
  8. \n
\n
\n Ethos Reserve Disclaimer\n
    \n
  1. \n Please read the entirety of this \"Disclaimer\" for Ethos Reserve, “the Protocol.”\n Nothing herein constitutes legal, financial, business or tax advice and you should\n consult your own legal, financial, tax or other professional advisor(s) before\n engaging in any activity in connection herewith. Neither the Byte Masons team, OATH\n Token Limited, or the OATH Foundation, any of the project team members who have\n worked on the OATH protocol or project to develop the OATH protocol in any way\n whatsoever, any distributor/vendor of OATH tokens, including without limitation OATH\n Token Limited and/or the OATH Foundation, nor any service provider shall be liable\n for any kind of direct or indirect damage or loss whatsoever which you may suffer in\n connection with accessing the website at ethos.finance or any other websites or\n materials published by the Byte Masons team, the OATH Foundation, and/or OATH Token\n Limited.\n
  2. \n
  3. \n Purpose: These terms and conditions govern the use of the Protocol, which is an\n experimental platform for decentralized financial transactions. The platform is\n provided on an “as is” and “as available” basis.\n
  4. \n
  5. \n Risks: Use of the Protocol involves numerous risks, including but not limited to the\n loss of digital assets, market volatility, and cybersecurity threats. Users are\n solely responsible for conducting their own research and assessment of these risks.\n
  6. \n
  7. \n No Warranty: The Protocol is provided without any representations or warranties of\n any kind, express or implied. The Byte Masons team, OATH Token Limited, and the OATH\n Foundation makes no representations or warranties in relation to the platform and\n its availability or reliability. Nothing on the website constitutes any offer by the\n Byte Masons team, the OATH Foundation, and/or OATH Token Limited team to sell any\n OATH tokens nor shall it or any part of it nor the fact of its presentation form the\n basis of, or be relied upon in connection with, any contract or investment decision.\n Nothing contained on the website is or may be relied upon as a promise,\n representation or undertaking as to the future performance of the Protocol. The\n agreement between any third party and you, in relation to any sale, purchase, or\n other distribution or transfer of OATH tokens, is to be governed only by the\n separate terms and conditions of such agreement.\n
  8. \n
  9. \n Documentation: The information set out on the website is for community discussion\n only and is not legally binding. No person is bound to enter into any contract or\n binding legal commitment in relation to the acquisition of OATH tokens, and no\n virtual currency or other form of payment is to be accepted on the basis of the\n website.\n
  10. \n
  11. \n Deemed Representations and Warranties:\n
      \n
    • \n In any decision to procure any OATH tokens, you shall not rely on any statement\n set out on the website or the associated social media channels thereof;\n
    • \n
    • \n You will and shall at your own expense ensure compliance with all laws,\n regulatory requirements and restrictions applicable to you (as the case may be);\n
    • \n
    • \n You acknowledge, understand and agree that OATH tokens may have no value, there\n is no guarantee or representation of value or liquidity for OATH tokens, and\n OATH tokens are not an investment product including for any speculative\n investment;\n
    • \n
    • \n None of the Byte Masons team, the OATH Foundation, and/or OATH Token Limited\n team shall be responsible for or liable for the value of OATH tokens, the\n transferability and/or liquidity of OATH tokens and/or the availability of any\n market for OATH tokens through third parties or otherwise;\n
    • \n
    • \n You nor any of your affiliates or direct or indirect beneficial owners, if\n applicable; (i) appears on the Specially Designated Nationals and Blocked\n Persons List of the Office of Foreign Assets Control of the United States\n Department of the Treasury (“OFAC”), the EU consolidated list of persons, groups\n and entities subject to financial sanctions, the UK Consolidated List of\n Financial Sanctions Targets, nor are they otherwise a party with which the OATH\n Foundation and/or OATH Token Limited team is prohibited to deal under the laws\n of the United States, the EU (or any of its Member States), or the UK; or (ii)\n is a person identified as a terrorist organization on any other relevant lists\n maintained by any governmental authority; and\n
    • \n
    • \n You represent and warrant that, if applicable, you: (a) have conducted thorough\n due diligence with respect to all of your beneficial owners; (b) have\n established the identities of all direct and indirect beneficial owners and the\n source of each beneficial owners’ funds; and (c) will retain evidence of those\n identities, any source of funds and any due diligence.\n
    • \n
    \n
  12. \n
  13. \n Limitation of Liability: The Byte Masons team, OATH Token Limited, or OATH\n Foundation teams do not and do not purport to make, and hereby disclaims, all\n representations, warranties or undertaking to any entity or person (including\n without limitation warranties as to the accuracy, completeness, timeliness or\n reliability of the contents of the website, or any other materials published by Byte\n Masons team, OATH Token Limited, or OATH Foundation). To the maximum extent\n permitted by law, the Byte Masons team, OATH Token Limited, or OATH Foundation shall\n not be liable for any indirect, special, incidental, consequential or other losses\n of any kind, in tort, contract or otherwise (including, without limitation, any\n liability arising from default or negligence on the part of any of them, or any loss\n of revenue, income or profits, and loss of use or data) arising from the use of the\n website, or any other materials published, or its contents (including without\n limitation any errors or omissions) or otherwise arising in connection with the\n same. The user assumes full responsibility and liability for any losses resulting\n from any intentional or unintentional misuse of the Protocol including, without\n limitation, the loss of the user’s private keys associated with any wallet used to\n hold OATH tokens, any loss resulting from designating a non-OATH token compliant\n wallet, depositing one type of digital asset to a wallet intended for another type\n of digital wallet, or any third party gaining access to the user’s wallet and\n misappropriating any OATH tokens or other digital assets. The Byte Masons team, OATH\n Token Limited, and/or the OATH Foundation assume no responsibility or liability in\n connection with any such misuse by the user or any third party or any loss of the\n user’s private keys associated with the user’s wallet.\n
  14. \n
  15. \n Regulatory Disclosure: No regulatory authority has examined or approved, whether\n formally or informally, of any of the information set out on the website. No such\n action or assurance has been or will be taken under the laws, regulatory\n requirements or rules of any jurisdiction. The publication, distribution or\n dissemination of the website does not imply that the applicable laws, regulatory\n requirements or rules have been complied with.\n
  16. \n
  17. \n Changes to Terms: The Byte Masons team, the OATH Foundation, and/or OATH Token\n Limited reserves the right to modify these terms and conditions at any time without\n prior notice. Continued use of the Protocol following such changes constitutes\n acceptance of the modified terms. There are no obligations to update the website or\n to provide recipients with access to any information beyond what is provided herein.\n
  18. \n
  19. \n Governing Law: These terms and conditions shall be governed by and construed in\n accordance with the laws of the Cayman Islands.\n
  20. \n
  21. \n Dispute Resolution: Any dispute arising out of or in connection with these terms and\n conditions, the Protocol, or any related transactions shall be subject to the\n exclusive jurisdiction of the Cayman Islands courts.\n
  22. \n
  23. \n Intellectual Property: The Protocol and its content are protected by intellectual\n property laws, and all rights, title, and interest in and to the platform and its\n content shall remain with the OATH Foundation team.\n
  24. \n
  25. \n Forward-Looking Statements: All statements contained herein, statements made in\n press releases or in any place accessible by the public and oral statements that may\n be made by the Byte Masons team, OATH Token Limited, and/or OATH Foundation, may\n constitute forward-looking statements (including statements regarding intent, belief\n or current expectations with respect to market conditions, business strategy and\n plans, financial condition, specific provisions and risk management practices). You\n are cautioned not to place undue reliance on these forward-looking statements given\n that these statements involve known and unknown risks, uncertainties and other\n factors that may cause the actual future results to be materially different from\n that described by such forward-looking statements, and no independent third party\n has reviewed the reasonableness of any such statements or assumptions.\n
  26. \n
  27. \n No Distribution: No part of the website is to be copied, reproduced, distributed or\n disseminated in any way without the prior written consent of the Byte Masons team,\n OATH Token Limited, and/or OATH Foundation.\n
  28. \n
\n
\n
\n {!props.readMode && (\n {\n const nowInSeconds = safeDiv(Date.now().toString(), '1000');\n localStorage.setItem('termsAgreedTimestamp', nowInSeconds);\n dispatch({ type: 'showDisclaimer', content: false });\n }}\n className={'disclaimer-button border-full border-color-light'}\n >\n I Have Read & I Agree\n \n )}\n \n \n ) : (\n <>\n );\n}\n\nexport default Disclaimer;\n","import Button from './Button';\nimport { ReactComponent as TwitterIcon } from '../assets/icons/brands/twitter.svg';\nimport { ReactComponent as DiscordIcon } from '../assets/icons/brands/discord.svg';\n\nimport '../styling/Footer.css';\nimport Modal from './modals/Modal';\nimport Disclaimer from './Disclaimer';\nimport { useState } from 'react';\n\nfunction Footer() {\n const [isTermsModalOpen, setIsTermsModalOpen] = useState(false);\n\n const openLinkNewTab = (link: string) => {\n const openTab = window.open(link, '_blank');\n if (openTab !== null) {\n openTab.focus();\n }\n };\n\n const discordUrl = 'https://discord.com/invite/Fe7Svu5rg3';\n const twitterUrl = 'https://twitter.com/EthosReserve';\n\n return (\n <>\n
\n
\n
\n \n \n \n {\n setIsTermsModalOpen(true);\n }}\n >\n Terms of Use\n \n
\n {\n openLinkNewTab(discordUrl);\n }}\n className=\"icon-button padding-none\"\n >\n \n \n {\n openLinkNewTab(twitterUrl);\n }}\n className=\"icon-button padding-none \"\n >\n \n \n
\n
\n
\n
\n {isTermsModalOpen && (\n {\n setIsTermsModalOpen(false);\n }}\n >\n \n setIsTermsModalOpen(false)}\n >\n Okay\n \n \n )}\n \n );\n}\n\nexport default Footer;\n","import { useContext, useEffect, useState } from 'react';\nimport { supportedChains, chains } from '../storage/Chains';\nimport { connectToNetwork } from '../functions/browser';\n\nimport Modal from './modals/Modal';\n\nimport '../styling/NetworkWarning.css';\nimport '../styling/Modal.css';\nimport { Context } from '../Store';\nimport { showNetworkWarning } from '../functions/stateHelpers';\nimport SwitchNetworkButton from './SwitchNetworkButton';\n\ninterface NetworkWarningProps {\n className?: string;\n}\n\nfunction NetworkWarning(props: NetworkWarningProps) {\n const [state]: any = useContext(Context);\n const [networkModalOpen, setNetworkModalOpen] = useState(false);\n useEffect(() => {\n if (!state.isWalletConnected || state.isOnSupportedChain) {\n setNetworkModalOpen(false);\n }\n }, [state.isWalletConnected, state.isOnSupportedChain]);\n\n if (showNetworkWarning(state)) {\n if (!networkModalOpen) {\n return (\n
\n
\n
Switch chains to use this app.
\n {state.walletType !== 'walletConnect' && }\n
\n
\n );\n }\n\n let supportedChainKeys = Object.keys(chains).filter((chainName) => {\n return supportedChains.includes(chains[chainName].chainId.hex);\n });\n return (\n {\n setNetworkModalOpen(false);\n }}\n className={props.className}\n >\n {supportedChainKeys.map((key) => (\n {\n connectToNetwork(\n chains[key].chainId.hex,\n chains[key].label,\n chains[key].nativeCurrency!,\n chains[key].defaultRpc!,\n chains[key].explorerUrl\n );\n }}\n >\n
{chains[key].label}
\n
\n Connect\n
\n \n ))}\n \n );\n }\n return <>;\n}\nexport default NetworkWarning;\n","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgHouse(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 1405.664,\n height: 1331.602,\n viewBox: \"0 0 1054.248 998.702\",\n preserveAspectRatio: \"xMidYMid\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M406.701 104.1c-64.6 57.2-182.5 161.6-262 232C65.301 406.4.201 465.057.001 465.457c2.518 0 53.7-.416 54.8-.416.4 0 34.06.462 105.664.462C209.365 422.203 295.9 313.8 372.2 246.2c76.4-67.7 142.6-126.3 147.2-130.2l8.2-7.3 235.8 209c129.8 114.9 107.67 146.984 127.133 146.984 22.848 0 96.89.605 126.407.605 32.674 0 32.146.126 37.26.126-.5-.7-118.5-106.715-262.1-234.015C561.601 27.4 530.401.1 527.601 0c-3-.1-14.6 10-120.9 104.1zm-249.9 60.8v196.354l3.3-28.705c3.1-3 128.4 40.925 128.4-78.722 0-17.552.5-126.527.9-148.427l.7-39.7h-133.3z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M484.201 124.5c-23.6 21-107 85.223-185.2 154.423l-142.2 122.455V744.1c0 227.5-.024 250.79.001 254.762 12.191.057 8.52 1.552 14.196.222 2.8 1 28.303-.883 121.303-.883h118l.5-106.5c.5-98.5.538-115.107.482-120.2 4.983-.134 9.548-.294 14.55-.26 31.414-.54 31.368-.54 102.568-.54 93.9 0 105.738.554 115.109.516.14 6.676-.044 10.926.025 17.104.252 5.394.604 39.065.869 107.664l.397 102.716h116.3c126.1 0 120.218 6.561 127.518.961 1.9-1.4 9.364 1.67 9.37-.136l-.004-17.39-.084-237.535.1-337.596-31.4-43.853c-28.9-25.8-334.4-272.765-337.8-275.565-1.3-1-8.3 14.99-44.6 47.09z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHouse);\nexport default __webpack_public_path__ + \"static/media/house.ffc262b1.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport Button from './../Button';\nimport Modal from './Modal';\nimport {\n readEthosV2IsLiveModal,\n retrieveReadEthosV2IsLiveModal,\n} from '../../functions/browser';\n\ninterface EthosVersionModalProps {\n className?: string;\n}\n\nconst EthosVersionModal = (props: EthosVersionModalProps) => {\n const [isOpen, setIsOpen]: any = useState(!retrieveReadEthosV2IsLiveModal());\n const { className = '' } = props;\n\n const handleClose = () => {\n setIsOpen(false);\n readEthosV2IsLiveModal();\n };\n\n return (\n <>\n {isOpen ? (\n {\n handleClose()\n }}\n className={className + ' ethos-version-modal'}\n classNameBody=\"padding-double\"\n >\n
\n Ethos Reserve V2.1 is Live!\n
\n
\n

Borrowing ERN

\n

\n Borrowing ERN is now only available through Ethos V2.1. Wrapped stETH is now available as a collateral along with our new 1-Click Leverage feature!\n

\n
\n
\n

What about your V1 and V2 troves?

\n

\n You can still access previous Ethos versions through the app via the dropdown in the top right corner, or in the side menu on mobile devices. \n While you can no longer borrow more ERN in previous versions, you can still adjust collateral, repay ERN, or close your position on your open troves.\n

\n
\n
\n
\n {\n handleClose();\n }}\n className={\n 'margin-top margin-bottom theme-button border-full border-color-light'\n }\n />\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default EthosVersionModal;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgDashboard(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 20,\n viewBox: \"0 0 21 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0708 3.95438L13.0708 3.95472L13.0808 3.95336C13.4376 3.9051 13.7132 3.60027 13.7132 3.2304C13.7132 2.82701 13.3853 2.50079 12.9818 2.50079H7.34781V2.50077L7.34531 2.50081L7.16374 2.50383L7.16374 2.50381L7.16121 2.50389C5.86337 2.54736 4.7786 3.04532 4.0189 3.87735C3.25989 4.70864 2.83437 5.86333 2.83437 7.20586V13.452H2.83436L2.83439 13.4542L2.83717 13.6407H2.83716L2.83722 13.643C2.87704 14.9709 3.33348 16.0993 4.12174 16.8966C4.91062 17.6945 6.02124 18.15 7.34781 18.15L14.0178 18.15L14.0203 18.15L14.2019 18.147L14.2019 18.147L14.2044 18.1469C15.5026 18.1036 16.5874 17.6072 17.347 16.7767C18.106 15.947 18.5312 14.7939 18.5312 13.452V8.01227H18.5316L18.5309 8.00217L18.5256 7.92352L18.5259 7.9235L18.5246 7.91339C18.476 7.5568 18.1699 7.28266 17.7998 7.28266C17.3963 7.28266 17.0684 7.60888 17.0684 8.01227V13.4506L17.0653 13.6279C17.031 14.576 16.7186 15.3393 16.1978 15.8648C15.6775 16.3899 14.9361 16.6908 14.0178 16.6908H7.34931L7.17956 16.6874C6.27607 16.6512 5.56007 16.3218 5.06888 15.7711C4.57632 15.2187 4.29719 14.4294 4.29719 13.452V7.20719L4.30035 7.02983C4.3347 6.08071 4.64745 5.31559 5.16857 4.78852C5.6892 4.26195 6.43056 3.96 7.34781 3.96H12.9818V3.96034L12.9919 3.95967L13.0708 3.95438ZM14.8982 8.75375L14.8986 8.75398L14.904 8.7443C15.0791 8.43395 15.0044 8.03467 14.714 7.8103C14.3948 7.56377 13.9356 7.62173 13.6881 7.94013L11.8678 10.2815L9.80045 8.66215L9.80071 8.66182L9.7915 8.65565L9.71953 8.60739L9.71976 8.60705L9.71006 8.60154C9.39828 8.42447 8.99495 8.49853 8.76927 8.79094L6.44896 11.7973L6.44864 11.797L6.44256 11.8062L6.39517 11.878L6.39483 11.8777L6.3894 11.8874C6.21544 12.1984 6.29143 12.5974 6.58267 12.8208L6.58242 12.8211L6.59161 12.8271L6.66355 12.8744L6.66333 12.8747L6.67301 12.8801C6.9843 13.0532 7.38396 12.9778 7.60804 12.6875L7.60805 12.6875L9.47761 10.2647L11.5439 11.8826L11.5436 11.8829L11.5528 11.889L11.6246 11.9372L11.6244 11.9375L11.634 11.943C11.9451 12.1198 12.3474 12.0466 12.5735 11.7557L14.8442 8.83423L14.8445 8.83448L14.8506 8.82531L14.8982 8.75375ZM19.1344 4.0651C19.1344 2.8413 18.1393 1.85 16.9129 1.85C15.6864 1.85 14.6914 2.8413 14.6914 4.0651C14.6914 5.28891 15.6864 6.2802 16.9129 6.2802C18.1393 6.2802 19.1344 5.28891 19.1344 4.0651ZM16.1542 4.0651C16.1542 3.64807 16.4934 3.30922 16.9129 3.30922C17.3323 3.30922 17.6716 3.64807 17.6716 4.0651C17.6716 4.48213 17.3323 4.82099 16.9129 4.82099C16.4934 4.82099 16.1542 4.48213 16.1542 4.0651Z\",\n fill: \"#08001C\",\n stroke: \"black\",\n strokeWidth: 0.3\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDashboard);\nexport default __webpack_public_path__ + \"static/media/dashboard.aac528c7.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgEye(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 19,\n viewBox: \"0 0 21 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.19249 9.50099L4.19232 9.50004L4.19249 9.49909C4.19453 9.48674 4.20615 9.41692 4.27112 9.27972C4.34262 9.12867 4.45857 8.93835 4.62449 8.7193C4.95595 8.28174 5.45172 7.77585 6.07832 7.29615C7.33967 6.33049 9.03562 5.54171 10.8587 5.54171C12.6818 5.54171 14.3778 6.33049 15.6391 7.29615C16.2657 7.77585 16.7615 8.28174 17.093 8.7193C17.2589 8.93835 17.3748 9.12867 17.4463 9.27972C17.5113 9.41692 17.5229 9.48674 17.525 9.49909L17.5251 9.50004L17.525 9.50099C17.5229 9.51334 17.5113 9.58317 17.4463 9.72036C17.3748 9.87141 17.2589 10.0617 17.093 10.2808C16.7615 10.7183 16.2657 11.2242 15.6391 11.704C14.3778 12.6696 12.6818 13.4584 10.8587 13.4584C9.03562 13.4584 7.33967 12.6696 6.07832 11.704C5.45172 11.2242 4.95595 10.7183 4.62449 10.2808C4.45857 10.0617 4.34262 9.87141 4.27112 9.72036C4.20615 9.58317 4.19453 9.51334 4.19249 9.50099ZM10.8587 3.95837C8.53968 3.95837 6.48564 4.95084 5.03252 6.06331C4.30188 6.62267 3.69932 7.23002 3.27173 7.79443C3.05812 8.07639 2.87939 8.35925 2.75107 8.63032C2.62829 8.88967 2.52539 9.19279 2.52539 9.50004C2.52539 9.80729 2.62829 10.1104 2.75107 10.3698C2.87939 10.6408 3.05812 10.9237 3.27173 11.2056C3.69932 11.7701 4.30188 12.3774 5.03252 12.9367C6.48564 14.0493 8.53968 15.0417 10.8587 15.0417C13.1777 15.0417 15.2318 14.0493 16.6849 12.9367C17.4156 12.3774 18.0181 11.7701 18.4457 11.2056C18.6593 10.9237 18.8381 10.6408 18.9664 10.3698C19.0891 10.1104 19.1921 9.80729 19.1921 9.50004C19.1921 9.19279 19.0891 8.88967 18.9664 8.63032C18.8381 8.35925 18.6593 8.07639 18.4457 7.79443C18.0181 7.23002 17.4156 6.62267 16.6849 6.06331C15.2318 4.95084 13.1777 3.95837 10.8587 3.95837ZM10.0254 9.50004C10.0254 9.0628 10.3985 8.70837 10.8587 8.70837C11.319 8.70837 11.6921 9.0628 11.6921 9.50004C11.6921 9.93728 11.319 10.2917 10.8587 10.2917C10.3985 10.2917 10.0254 9.93728 10.0254 9.50004ZM10.8587 7.12504C9.47797 7.12504 8.35872 8.18833 8.35872 9.50004C8.35872 10.8118 9.47797 11.875 10.8587 11.875C12.2395 11.875 13.3587 10.8118 13.3587 9.50004C13.3587 8.18833 12.2395 7.12504 10.8587 7.12504Z\",\n fill: \"#FAFAFA\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEye);\nexport default __webpack_public_path__ + \"static/media/eye.2c80fd58.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactElement, useContext } from 'react';\nimport { Context } from '../Store';\n\nimport { ReactComponent as EyeIcon } from '../assets/icons/eye.svg';\nimport LoadingSpinner from './LoadingSpinner';\nimport { getChainCollateralFromId } from '../functions/chainHelpers';\nimport { getCoinFromUID } from '../functions/coinHelpers';\nimport { formatPositiveNumber } from '../functions/formatters';\nimport { isGreaterThan, safeMult } from '../functions/safeMath';\nimport { isNumber } from '../functions/formatters';\n\nimport '../styling/BalanceBox.css';\n\ninterface BalanceBoxProps {\n className?: string;\n}\n\nfunction BalanceBox(props: BalanceBoxProps) {\n const [state]: any = useContext(Context);\n const { className = '' } = props;\n\n let collateralUIDs: string[] = [];\n if (state.chainView !== '') {\n collateralUIDs = getChainCollateralFromId(state.chainView, state.appVersion);\n }\n\n const buildBalances = (collIds: string[]) => {\n let balanceElements: ReactElement[] = [];\n\n collIds.forEach((collId, index) => {\n const collCoin = getCoinFromUID(collId);\n const collPrice = state[collId + 'Price'];\n const collAmount = isNumber(state[collId + 'UserBalance'])\n ? isGreaterThan(state[collId + 'UserBalance'], '0')\n ? state[collId + 'UserBalance']\n : '0'\n : state[collId + 'UserBalance'];\n let userCollValue = '';\n if (collPrice !== '' && collAmount !== '') {\n userCollValue = formatPositiveNumber(safeMult(collAmount, collPrice), 2);\n }\n const underline = index !== collIds.length - 1 ? ' balance-box-divider' : '';\n const elem = (\n
\n
\n
\n
\n {collAmount !== '' ? formatPositiveNumber(collAmount, 5) : }\n
\n
\n {collCoin !== undefined ? collCoin.ticker : ''}\n
\n
\n
\n
\n {'$'}\n {userCollValue !== '' ? (\n userCollValue\n ) : (\n <>\n {' '}\n \n \n )}\n
\n
\n
\n
\n );\n balanceElements.push(elem);\n });\n\n return balanceElements;\n };\n\n return (\n \n
\n
\n \n My Wallet Balance\n
\n
\n
{buildBalances(collateralUIDs)}
\n
\n
\n {/*\n
Total Amount
\n
\n $\n {totalBalance.length !== 0 ? (\n totalBalance\n ) : (\n \n )}\n
\n */}\n
\n
\n \n );\n}\n\nexport default BalanceBox;\n","import { useContext, useState } from 'react';\nimport { Context } from '../Store';\nimport Button from './Button';\n\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { routes } from '../storage/Routes';\n\nimport { ReactComponent as AnalyticsIcon } from '../assets/icons/analytics.svg';\nimport { ReactComponent as HomeIcon } from '../assets/icons/house.svg';\nimport { ReactComponent as DashboardIcon } from '../assets/icons/dashboard.svg';\nimport { ReactComponent as PositionsIcon } from '../assets/icons/arrow-up.svg';\nimport { ReactComponent as StabilityIcon } from '../assets/icons/stability.svg';\nimport { ReactComponent as StakingIcon } from '../assets/icons/stake.svg';\nimport { ReactComponent as StERNIcon } from '../assets/icons/coins/stERN.svg';\n\nimport '../styling/SideMenu.css';\nimport BalanceBox from './BalanceBox';\nimport {\n checkShowNetworkWarning,\n getTvl,\n isOnEthosSupportedChain,\n isWalletConnectedAndOnSupportedChain,\n} from '../functions/stateHelpers';\nimport { formatPositiveNumber } from '../functions/formatters';\nimport LoadingSpinner from './LoadingSpinner';\n\nfunction SideMenu() {\n const { pathname } = useLocation();\n\n const [state]: any = useContext(Context);\n const [isCollapsed] = useState(false);\n\n const isMobile = state.isMobile;\n\n const iconMap = (id: string) => {\n switch (id) {\n case 'home':\n return (\n \n );\n case 'dashboard':\n return (\n \n );\n case 'positions':\n return ;\n case 'stability':\n return ;\n case 'stake':\n return ;\n case 'earn':\n return (\n \n );\n case 'stern':\n return (\n \n );\n case 'liquidate':\n return (\n \n );\n case 'migrate':\n return (\n \n );\n case 'analytics':\n return (\n \n );\n default:\n return <>;\n }\n };\n\n const tvl = getTvl(state);\n\n return !isMobile ? (\n
\n
\n
\n
\n {!isCollapsed &&\n isWalletConnectedAndOnSupportedChain(\n state.chainView,\n state.connectedChain,\n state.walletAddress,\n state.walletProvider\n ) &&\n isOnEthosSupportedChain(state) && }\n {routes\n .filter((route) => route.visible)\n .map((route, index) => {\n return (\n \n \n isActive || (route.path === '/dashboard' && pathname === '/')\n ? 'selected-route'\n : ''\n }\n >\n \n {route.name}\n \n \n \n );\n })}\n
\n
\n {isWalletConnectedAndOnSupportedChain(\n state.chainView,\n state.connectedChain,\n state.walletAddress,\n state.walletProvider\n ) &&\n isOnEthosSupportedChain(state) && (\n
\n
\n Total Value Locked\n
\n
\n {'$ '}\n {tvl.total !== '' ? (\n formatPositiveNumber(tvl.total, 2)\n ) : (\n \n )}\n
\n
\n )}\n {checkShowNetworkWarning(state) &&
}\n
\n
\n
\n
\n ) : (\n <>\n );\n}\n\nexport default SideMenu;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSun(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.75 5.5C11.1977 5.5 10.75 5.05228 10.75 4.5V2C10.75 1.44772 11.1977 1 11.75 1H12.25C12.8023 1 13.25 1.44772 13.25 2V4.5C13.25 5.05228 12.8023 5.5 12.25 5.5H11.75Z\",\n fill: \"#000000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.4194 7.22698C16.0289 6.83646 16.0289 6.20329 16.4194 5.81277L18.1872 4.045C18.5777 3.65447 19.2109 3.65447 19.6014 4.045L19.9549 4.39855C20.3455 4.78908 20.3455 5.42224 19.9549 5.81277L18.1872 7.58053C17.7967 7.97106 17.1635 7.97106 16.773 7.58053L16.4194 7.22698Z\",\n fill: \"#000000\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 11.75C18.5 11.1977 18.9477 10.75 19.5 10.75H22C22.5523 10.75 23 11.1977 23 11.75V12.25C23 12.8023 22.5523 13.25 22 13.25H19.5C18.9477 13.25 18.5 12.8023 18.5 12.25V11.75Z\",\n fill: \"#000000\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.7728 16.4194C17.1633 16.0289 17.7965 16.0289 18.187 16.4194L19.9548 18.1872C20.3453 18.5777 20.3453 19.2109 19.9548 19.6014L19.6012 19.9549C19.2107 20.3455 18.5775 20.3455 18.187 19.9549L16.4192 18.1872C16.0287 17.7967 16.0287 17.1635 16.4192 16.773L16.7728 16.4194Z\",\n fill: \"#000000\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.25 18.5C12.8023 18.5 13.25 18.9477 13.25 19.5V22C13.25 22.5523 12.8023 23 12.25 23H11.75C11.1977 23 10.75 22.5523 10.75 22V19.5C10.75 18.9477 11.1977 18.5 11.75 18.5H12.25Z\",\n fill: \"#000000\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.58059 16.773C7.97111 17.1635 7.97111 17.7967 7.58059 18.1872L5.81282 19.955C5.4223 20.3455 4.78913 20.3455 4.39861 19.955L4.04505 19.6014C3.65453 19.2109 3.65453 18.5778 4.04505 18.1872L5.81282 16.4195C6.20334 16.0289 6.83651 16.0289 7.22703 16.4195L7.58059 16.773Z\",\n fill: \"#000000\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 12.25C5.5 12.8023 5.05228 13.25 4.5 13.25H2C1.44772 13.25 1 12.8023 1 12.25V11.75C1 11.1977 1.44772 10.75 2 10.75H4.5C5.05228 10.75 5.5 11.1977 5.5 11.75V12.25Z\",\n fill: \"#000000\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.22722 7.58059C6.8367 7.97111 6.20353 7.97111 5.81301 7.58059L4.04524 5.81282C3.65472 5.4223 3.65472 4.78913 4.04524 4.39861L4.3988 4.04505C4.78932 3.65453 5.42248 3.65453 5.81301 4.04505L7.58078 5.81282C7.9713 6.20334 7.9713 6.83651 7.58078 7.22703L7.22722 7.58059Z\",\n fill: \"#000000\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 12C7 9.23858 9.23858 7 12 7C14.7614 7 17 9.23858 17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12Z\",\n fill: \"#000000\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSun);\nexport default __webpack_public_path__ + \"static/media/sun.297caacb.svg\";\nexport { ForwardRef as ReactComponent };","var _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgMoon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"#000000\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 24 24\",\n id: \"moon-alt\",\n \"data-name\": \"Flat Color\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"icon flat-color\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n id: \"primary\",\n d: \"M12,2h-.46a1,1,0,0,0-.44,1.86A5.94,5.94,0,0,1,14,9,6,6,0,0,1,3.93,13.4a1,1,0,0,0-1.65,1A10,10,0,1,0,12,2Z\",\n style: {\n fill: \"rgb(0, 0, 0)\"\n }\n }));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMoon);\nexport default __webpack_public_path__ + \"static/media/moon.1c8cca22.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgStatusCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 13,\n viewBox: \"0 0 13 13\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.96875 1.49999C9.73015 1.49999 11.9688 3.73857 11.9688 6.49999C11.9688 9.26139 9.73015 11.5 6.96875 11.5C4.20732 11.5 1.96875 9.26139 1.96875 6.49999C1.96875 3.73857 4.20732 1.49999 6.96875 1.49999ZM6.96875 2.49999C4.75961 2.49999 2.96875 4.29085 2.96875 6.49999C2.96875 8.70914 4.75961 10.5 6.96875 10.5C9.1779 10.5 10.9688 8.70914 10.9688 6.49999C10.9688 4.29085 9.1779 2.49999 6.96875 2.49999ZM8.73645 4.69061C8.9317 4.49535 9.2483 4.49535 9.44355 4.69061C9.62378 4.87085 9.63764 5.15447 9.48514 5.35061L9.44355 5.39772L6.6505 8.19079C6.45104 8.39025 6.13652 8.4045 5.92063 8.23353L5.87266 8.19079L4.4938 6.81194C4.29854 6.61669 4.29854 6.30009 4.4938 6.10484C4.67404 5.92457 4.95766 5.9107 5.1538 6.06324L5.2009 6.10484L6.26155 7.16549L8.73645 4.69061Z\",\n fill: \"#235F5F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStatusCheck);\nexport default __webpack_public_path__ + \"static/media/status-check.37814dc8.svg\";\nexport { ForwardRef as ReactComponent };","import { useContext } from 'react';\nimport { Context } from '../../Store';\nimport Button from './../Button';\nimport Modal from './Modal';\nimport {\n saveTheme,\n saveHamburgerMenuPosition,\n saveAutoBrowserWallet,\n} from '../../functions/browser';\nimport { ReactComponent as SunIcon } from '../../assets/icons/sun.svg';\nimport { ReactComponent as MoonIcon } from '../../assets/icons/moon.svg';\n\ninterface SettingsModalProps {\n className?: string;\n}\n\nconst SettingsModal = (props: SettingsModalProps) => {\n const [state, dispatch]: any = useContext(Context);\n const { className = '' } = props;\n\n const setTheme = (theme: string) => {\n dispatch({ type: 'theme', content: theme });\n saveTheme(theme);\n };\n const setMenuPosition = (position: string) => {\n dispatch({ type: 'hamburgerMenuPosition', content: position });\n saveHamburgerMenuPosition(position);\n };\n const setAutoBrowserWallet = (setting: boolean) => {\n dispatch({ type: 'autoBrowserWallet', content: setting });\n saveAutoBrowserWallet(setting);\n };\n\n return (\n <>\n {state.isSettingsOpen ? (\n {\n dispatch({ type: 'isSettingsOpen', content: false });\n }}\n className={className}\n classNameBody=\"padding-full\"\n >\n
Select Theme
\n
\n {\n setTheme('ethos-light');\n }}\n selected={state.theme === 'ethos-light'}\n iconStart={\n \n }\n className={\n 'margin-right margin-bottom theme-button border-full border-color-light' +\n (state.theme === 'ethos-light' ? ' inverted-palette-box' : '')\n }\n />\n {\n setTheme('ethos-dark');\n }}\n selected={state.theme === 'ethos-dark'}\n iconStart={\n \n }\n className={\n 'margin-right margin-bottom theme-button border-full border-color-light ' +\n (state.theme === 'ethos-dark' ? ' inverted-palette-box' : '')\n }\n />\n {/*\n {\n setTheme('beach');\n }}\n selected={state.theme === 'beach'}\n className=\"margin-right margin-bottom theme-button\"\n />\n {\n setTheme('ink');\n }}\n selected={state.theme === 'ink'}\n className=\"margin-right margin-bottom theme-button\"\n />\n {\n setTheme('mint');\n }}\n selected={state.theme === 'mint'}\n className=\"margin-right margin-bottom theme-button\"\n />\n {\n setTheme('tokyo');\n }}\n selected={state.theme === 'tokyo'}\n className=\"margin-right margin-bottom theme-button\"\n />\n {\n setTheme('bios');\n }}\n selected={state.theme === 'bios'}\n className=\"theme-button margin-bottom\"\n />\n */}\n
\n
Hamburger Menu Position (Mobile Only)
\n
\n {\n setMenuPosition('left');\n }}\n selected={state.hamburgerMenuPosition === 'left'}\n className={\n 'margin-right theme-button border-full border-color-light ' +\n (state.hamburgerMenuPosition === 'left' ? ' inverted-palette-box' : '')\n }\n />\n {\n setMenuPosition('right');\n }}\n selected={state.hamburgerMenuPosition === 'right'}\n className={\n 'margin-right theme-button border-full border-color-light ' +\n (state.hamburgerMenuPosition === 'right' ? ' inverted-palette-box' : '')\n }\n />\n
\n
Automatically Connect Browser Wallet
\n
\n {\n setAutoBrowserWallet(false);\n }}\n selected={!state.autoBrowserWallet}\n className={\n 'margin-right theme-button border-full border-color-light ' +\n (!state.autoBrowserWallet ? ' inverted-palette-box' : '')\n }\n />\n {\n setAutoBrowserWallet(true);\n }}\n selected={state.autoBrowserWallet}\n className={\n 'margin-right theme-button border-full border-color-light ' +\n (state.autoBrowserWallet ? ' inverted-palette-box' : '')\n }\n />\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default SettingsModal;\n","import UniversalProvider from '@walletconnect/universal-provider';\nimport { Web3Modal } from '@web3modal/standalone';\nimport { ethers } from 'ethers';\nimport { BrowserWallet } from '../storage/Types';\n\nexport const initWalletConnect = async (dispatch: any) => {\n const projectId = 'e6dc423692e14e57affed62b52c56915';\n const chainId = '10';\n const chainIdHex = '0xa';\n\n try {\n const web3Modal = new Web3Modal({\n walletConnectVersion: 2,\n projectId,\n standaloneChains: [`eip155:${chainId}`],\n themeMode: 'light',\n themeVariables: {\n '--w3m-z-index': '250',\n },\n explorerRecommendedWalletIds: [\n '1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369', // rainbow\n //'c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96', // metamask\n //'4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0', // trust\n '225affb176778569276e484e1b92637ad061b01e13a048b35a9d280c3b58970f', // safe\n 'fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa', // coinbase\n '19177a98252e07ddfc9af2083ba8e07ef627cb6103467ffebb3f8f4205fd7927', // ledger live\n 'b021913ba555948a1c81eb3d89b372be46f8354e926679de648e4fa2938bed3e', // coin98\n 'fbc8d86ad914ebd733fec4812b4b7af5ca709fdd9e75a930115e5baa02c4ef4c', // rabby\n '163d2cf19babf05eb8962e9748f9ebe613ed52ebf9c8107c9a0f104bfcf161b3', // brave\n '8a0ee50d1f22f6651afcae7eb4253e52a3310b90af5daef78a8c4929a9bb99d4', // binance\n ],\n });\n\n const univProvider = await UniversalProvider.init({ projectId });\n const checkForPersistedSession = async (provider: UniversalProvider) => {\n if (typeof provider === 'undefined') {\n throw new Error('WalletConnect is not initialized');\n }\n if (provider?.session) {\n const session = provider?.session;\n return session;\n }\n };\n const persistedSession = await checkForPersistedSession(univProvider);\n\n univProvider.on('display_uri', async (uri: string) => {\n web3Modal.openModal({ uri }).then(() => {\n dispatch({ type: 'isConnectWalletLocked', content: false });\n });\n dispatch({ type: 'isConnectWalletOpen', content: false });\n });\n /*\n univProvider.on('session_update', async (event: any) => {\n });\n univProvider.on('session_event', async({event, chainId}:{event:any, chainId:string}) => {\n if (chainId !== `eip155:${chainId}`) {\n dispatch({ type: 'connectedChain', content: chainId });\n dispatch({ type: 'isOnSupportedChain', content: false });\n } else {\n dispatch({ type: 'connectedChain', content: chainIdHex });\n dispatch({ type: 'isOnSupportedChain', content: true });\n }\n });\n */\n univProvider.on('session_delete', () => {\n univProvider\n .disconnect()\n .then(() => {\n dispatch({ type: 'resetUserState', content: undefined });\n })\n .catch(() => {});\n });\n\n if (typeof persistedSession === 'undefined') {\n await univProvider.connect({\n namespaces: {\n eip155: {\n methods: ['eth_sign', 'eth_sendTransaction', 'personal_sign', 'eth_signTypedData'],\n chains: [`eip155:${chainId}`],\n events: ['accountsChanged', 'chainChanged'],\n rpcMap: {\n chainId: `https://rpc.walletconnect.com?chainId=eip155:${chainId}&projectId=${projectId}`,\n },\n },\n },\n });\n web3Modal.closeModal();\n }\n\n dispatch({ type: 'isOnSupportedChain', content: true });\n dispatch({ type: 'connectedChain', content: chainIdHex });\n\n const walletProvider = new ethers.providers.Web3Provider(univProvider);\n const accounts = await univProvider.enable();\n\n if (accounts !== undefined && typeof accounts[0] !== 'string') {\n throw Error();\n }\n\n const walletDetails: BrowserWallet = {\n address: accounts[0],\n provider: walletProvider,\n connectedChain: chainIdHex,\n };\n\n return walletDetails;\n } catch (error) {\n const walletDetails: BrowserWallet = {\n address: '',\n provider: undefined,\n connectedChain: undefined,\n };\n\n return walletDetails;\n }\n};\n","import { useContext } from 'react';\nimport { Context } from '../../Store';\nimport Button from './../Button';\nimport Modal from './Modal';\nimport { connectBrowserWallet } from '../../functions/browser';\nimport { BrowserWallet } from '../../storage/Types';\nimport { initWalletConnect } from '../../functions/walletconnect';\n\ninterface ConnectWalletModalProps {\n className?: string;\n}\n\nconst ConnectWalletModal = (props: ConnectWalletModalProps) => {\n const [state, dispatch]: any = useContext(Context);\n\n return (\n <>\n {state.isConnectWalletOpen ? (\n {\n dispatch({ type: 'isConnectWalletOpen', content: false });\n }}\n classNameBody={'padding-double ' + props.className}\n >\n {state.isWalletConnected ? (\n
\n
{state.walletAddress}
\n {\n if (state.walletType === 'walletConnect') {\n state.walletProvider.provider.disconnect();\n }\n dispatch({ type: 'resetUserState', content: undefined });\n }}\n className=\"border-full border-color-light\"\n >\n Disconnect\n \n
\n ) : (\n
\n
Select your wallet provider
\n
\n {\n connectBrowserWallet().then((walletDetails: BrowserWallet) => {\n dispatch({ type: 'isConnectWalletOpen', content: false });\n if (\n walletDetails.provider !== undefined &&\n walletDetails.address !== undefined &&\n walletDetails.connectedChain !== undefined\n ) {\n dispatch({\n type: 'walletProvider',\n content: walletDetails.provider,\n });\n dispatch({\n type: 'walletAddress',\n content: walletDetails.address,\n });\n dispatch({\n type: 'connectedChain',\n content: walletDetails.connectedChain,\n });\n dispatch({\n type: 'walletType',\n content: 'browser',\n });\n dispatch({ type: 'isWalletDetected', content: true });\n dispatch({ type: 'isWalletConnected', content: true });\n }\n });\n }}\n />\n {\n dispatch({ type: 'isConnectWalletLocked', content: true });\n initWalletConnect(dispatch).then((walletDetails: BrowserWallet) => {\n dispatch({ type: 'isConnectWalletOpen', content: false });\n if (\n walletDetails.provider !== undefined &&\n walletDetails.address !== undefined\n ) {\n dispatch({\n type: 'walletProvider',\n content: walletDetails.provider,\n });\n dispatch({\n type: 'walletAddress',\n content: walletDetails.address,\n });\n dispatch({\n type: 'walletType',\n content: 'walletConnect',\n });\n dispatch({ type: 'isWalletDetected', content: true });\n dispatch({ type: 'isWalletConnected', content: true });\n }\n dispatch({ type: 'isConnectWalletLocked', content: false });\n });\n }}\n />\n
\n
\n )}\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default ConnectWalletModal;\n","export default __webpack_public_path__ + \"static/media/pc_bulb.2ad1eaec.png\";","import { ReactElement } from 'react';\nimport { TransactionStatus } from '../../storage/Types';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Modal from './Modal';\nimport { ReactComponent as CheckIcon } from '../../assets/icons/status-check.svg';\nimport { ReactComponent as XIcon } from '../../assets/icons/status-x.svg';\nimport { ReactComponent as DashIcon } from '../../assets/icons/dash.svg';\nimport pcImgSrc from '../../assets/icons/pc_bulb.png';\n\nimport '../../styling/TransactionStatusModal.css';\n\n/*\n- take in an array of messages for each tx with pending+ongoing+success+failure messages,\n a current tx number, and the current tx status\n- display the success message for every tx number in the arrray under the current tx number\n- display the current tx number transaction with the message associated with the current tx status\n- display all remaining transactions with the pending message\n- only update currentTxStatus to success on the final success in the chain of transactions\n*/\n\ninterface TransactionStatusModalProps {\n txMessages: TransactionStatus[];\n currentTxNumber: number;\n currentTxStatus: string;\n isLoadingTxSteps?: boolean;\n modalTitle?: string;\n isOpen?: boolean;\n handleClose?: () => void;\n isContentOnlyMode?: boolean;\n className?: string;\n}\n\nconst TransactionStatusModal = (props: TransactionStatusModalProps) => {\n const {\n txMessages = [],\n currentTxNumber = 0,\n currentTxStatus = 'pending',\n isLoadingTxSteps = false,\n modalTitle = '',\n className = '',\n isContentOnlyMode = false,\n isOpen = false,\n handleClose = () => {},\n } = props;\n\n const buildInternals = () => {\n const buildTxList = () => {\n const showTxStatusIcon = (txStatus: string) => {\n switch (txStatus) {\n case 'inProgress':\n return ;\n case 'success':\n return ;\n case 'failure':\n return ;\n case 'pending':\n return (\n \n );\n default:\n return <>;\n }\n };\n\n const showTxMessage = (txStatus: string, messages: TransactionStatus) => {\n switch (txStatus) {\n case 'inProgress':\n return messages.inProgress;\n case 'success':\n return messages.success;\n case 'failure':\n return messages.failure;\n case 'pending':\n return
{messages.pending}
;\n default:\n return '';\n }\n };\n\n let txList: ReactElement[] = [];\n txMessages.forEach((txMessage, index) => {\n if (currentTxStatus === 'failure' && index > currentTxNumber) {\n return txList;\n }\n\n if (index === currentTxNumber) {\n txList.push(\n
\n
\n {showTxStatusIcon(currentTxStatus)}\n
\n
{showTxMessage(currentTxStatus, txMessage)}
\n
\n );\n } else if (index < currentTxNumber) {\n txList.push(\n
\n
{showTxStatusIcon('success')}
\n
{showTxMessage('success', txMessage)}
\n
\n );\n } else {\n txList.push(\n
\n
{showTxStatusIcon('pending')}
\n
{showTxMessage('pending', txMessage)}
\n
\n );\n }\n });\n return txList;\n };\n return (\n
\n
\n \"\"\n
\n {isLoadingTxSteps ? (\n \n {'Building your transaction... '}\n \n \n ) : (\n buildTxList()\n )}\n
\n );\n };\n\n return isOpen ? (\n !isContentOnlyMode ? (\n \n {buildInternals()}\n \n ) : (\n
{buildInternals()}
\n )\n ) : (\n <>\n );\n};\n\nexport default TransactionStatusModal;\n","import { useContext } from 'react';\nimport { Context } from '../Store';\nimport '../styling/HeaderAlert.css';\nimport { getChainNameFromId } from '../functions/chainHelpers';\n\nimport { ReactComponent as XIcon } from '../assets/icons/x.svg';\nimport { isGreaterThan, safeDiv } from '../functions/safeMath';\n\ninterface HeaderAlertProps {\n className?: string;\n}\n\nfunction HeaderAlert(props: HeaderAlertProps) {\n const [state, dispatch]: any = useContext(Context);\n\n const { className = '' } = props;\n\n const handleClose = () => {\n dispatch({ type: 'showHeaderAlert', content: false });\n const nowInSeconds = safeDiv(Date.now().toString(), '1000');\n localStorage.setItem('headerAlertTimestamp', nowInSeconds);\n }\n\n const getMessage = () => {\n let msg = [];\n if (state.hasV1Position || state.hasV2Position) {\n const versions = (state.hasV1Position && state.hasV2Position) ?\n 'V1, V2' \n : state.hasV1Position ? \n 'V1' : 'V2';\n msg.push(
You have open positions on the following previous Ethos versions: {versions}
);\n }\n if (isGreaterThan(state.oathv1UserBalance, '0')) {\n if (state.connectedChain === '0xa') {\n msg.push(
{`Looking to bridge OATH? Migrate to OATHv2 on ${getChainNameFromId(state.connectedChain)}.`}
);\n } else {\n msg.push(
{`You need to migrate OATH on ${getChainNameFromId(state.connectedChain)}.`}
);\n }\n }\n return msg;\n }\n\n return state.showHeaderAlert ? (\n \n
\n
\n
\n
\n
\n {getMessage()} \n
\n
\n
\n
\n
\n handleClose()} className=\"float-right mouse-pointer margin-right fill-icon-primary\"/>\n
\n ) : (\n <>\n );\n}\n\nexport default HeaderAlert;\n","import { useContext } from 'react';\nimport { Context } from '../../Store';\nimport Button from './../Button';\nimport Modal from './Modal';\nimport { supportedChains } from '../../storage/Chains';\nimport { getChainFromId } from '../../functions/chainHelpers';\nimport { connectToNetwork } from '../../functions/browser';\n\ninterface SelectNetworkModalProps {\n className?: string;\n}\n\nconst SelectNetworkModal = (props: SelectNetworkModalProps) => {\n const [state, dispatch]: any = useContext(Context);\n\n const connectToChainView = (chainId: string) => {\n if (state.chainView !== chainId) {\n const chain = getChainFromId(chainId);\n if (chain !== undefined && chain.nativeCurrency !== undefined) {\n if (state.walletType === 'browser') {\n connectToNetwork(\n chain.chainId.hex,\n chain.label,\n chain.nativeCurrency,\n chain.defaultRpc,\n chain.explorerUrl\n );\n } else if (state.walletType === 'walletConnect') {\n }\n }\n }\n dispatch({ type: 'isSelectNetworkOpen', content: false });\n };\n\n const buildNetworkButtons = (chains: string[]) => {\n return chains.map((chainId: string) => {\n const chain = getChainFromId(chainId);\n if (chain) {\n return (\n {\n dispatch({ type: 'chainView', content: chainId });\n connectToChainView(chainId);\n }}\n >\n
\n {chain.label}\n \n
\n \n );\n } else {\n return <>;\n }\n });\n };\n\n return (\n <>\n {state.isSelectNetworkOpen ? (\n {\n dispatch({ type: 'isSelectNetworkOpen', content: false });\n }}\n className=\"w-50\"\n classNameBody={'padding-double ' + props.className}\n >\n
\n
\n {buildNetworkButtons(supportedChains)}\n
\n
\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default SelectNetworkModal;\n","import { useEffect, useContext } from 'react';\nimport { Context } from '../Store';\nimport { useMediaQuery } from 'react-responsive'; // see if we can remove dependency later\n\nimport Header from './Header';\nimport Body from './Body';\nimport Footer from './Footer';\nimport NetworkWarning from './NetworkWarning';\nimport EthosVersionModal from './modals/EthosVersionModal';\n\nimport { defaultChain, supportedChains } from '../storage/Chains';\n\nimport {\n retrieveHamburgerMenuPosition,\n retrieveTheme,\n checkBrowserWallet,\n retrieveAutoBrowserWallet,\n} from '../functions/browser';\nimport { checksumAddress } from '../functions/formatters';\n\nimport '../styling/App.css';\nimport '../styling/themes.css';\nimport '../styling/Toast.css';\nimport SideMenu from './SideMenu';\nimport SettingsModal from './modals/SettingsModal';\nimport ConnectWalletModal from './modals/ConnectWalletModal';\nimport {\n refreshTotalStabilityPoolDeposits,\n refreshTotalStakingPoolDeposits,\n refreshUserLiquidationRewards,\n refreshUserStabilityPoolDeposits,\n refreshUserStabilityRewards,\n refreshUserStakingPoolDeposits,\n refreshUserStakingRewards,\n refreshUserStakingRedemptionRewards,\n refreshStakingCoin,\n refreshStabilityCoin,\n initializeCollaterals,\n refreshCollateralPrice,\n refreshStakingRewardCoin,\n refreshStabilityRewardCoin,\n refreshAllUserClaimableCollateral,\n refreshBeethovenPrices,\n refreshStabilityApr,\n refreshOathv1UserBalance,\n refreshOathv2UserBalance,\n getStakingApr,\n checkShowHeaderAlert,\n refreshStERNAnalytics,\n refreshUserStERNVaultDeposits,\n refreshUserStERNVaultUSD,\n refreshCollateralTCR,\n showNetworkWarning,\n refreshUserTroveChangess,\n checkForUserOpenPositionOnVersion,\n getUnderlyingVaults,\n refreshAllOpenTroves,\n areCollateralPricesLoaded,\n refreshStabilityCoinPrice,\n} from '../functions/stateHelpers';\nimport { getChainCollateralFromId, getChainHexFromReadableId } from '../functions/chainHelpers';\nimport TransactionStatusModal from './modals/TransactionStatusModal';\nimport Disclaimer from './Disclaimer';\nimport { isGreaterThanOrEqual, safeDiv, safeSub } from '../functions/safeMath';\nimport { buildReadProvider } from '../functions/blockchainRouter';\nimport HeaderAlert from './HeaderAlert';\nimport SelectNetworkModal from './modals/SelectNetworkModal';\nimport { useLocation } from 'react-router-dom';\nimport { getRouteFromPath } from '../functions/routeHelper';\n\ndeclare const window: any;\n\nfunction App() {\n const [state, dispatch]: any = useContext(Context);\n\n const isMobile = useMediaQuery({ maxWidth: 1240 });\n\n const { pathname } = useLocation();\n\n useEffect(() => {\n dispatch({ type: 'resetAnalytics', content: undefined });\n }, [state.appVersion, dispatch])\n\n useEffect(() => {\n if (\n state.stakingCoinPrice !== '' &&\n state.totalStakingDeposits !== '' &&\n state.chainView !== '' &&\n state.walletProvider !== undefined\n ) {\n getStakingApr(\n state.totalStakingDeposits,\n state.stakingCoinPrice,\n 7,\n state.chainView, \n state.appVersion,\n state.walletProvider\n ).then((res) => {\n if (typeof res === 'string') {\n dispatch({ type: 'stakingApr', content: res });\n }\n });\n }\n }, [\n dispatch,\n state.totalStakingDeposits,\n state.stakingCoinPrice,\n state.chainView,\n state.walletProvider,\n state.appVersion\n ]);\n\n useEffect(() => {\n const lastAgreed = localStorage.getItem('termsAgreedTimestamp');\n if (lastAgreed === null) {\n dispatch({ type: 'showDisclaimer', content: true });\n } else {\n const oneDayInSeconds = '86400';\n const nowInSeconds = safeDiv(Date.now().toString(), '1000');\n const timeDiff = safeSub(nowInSeconds, lastAgreed);\n const show = isGreaterThanOrEqual(timeDiff, oneDayInSeconds);\n dispatch({ type: 'showDisclaimer', content: show });\n }\n dispatch({ type: 'isAppInitialized', content: true });\n }, [dispatch]);\n\n useEffect(() => {\n const theme = retrieveTheme();\n const hamburgerMenuPosition = retrieveHamburgerMenuPosition();\n const autoBrowserWallet = retrieveAutoBrowserWallet();\n\n if (theme !== null) {\n dispatch({ type: 'theme', content: theme });\n }\n if (hamburgerMenuPosition !== null) {\n dispatch({ type: 'hamburgerMenuPosition', content: hamburgerMenuPosition });\n }\n if (autoBrowserWallet !== null) {\n let scrubbedAutoBrowserWallet = true;\n if (autoBrowserWallet === 'false') {\n scrubbedAutoBrowserWallet = false;\n }\n dispatch({ type: 'autoBrowserWallet', content: scrubbedAutoBrowserWallet });\n }\n }, [dispatch]);\n\n useEffect(() => {\n const checkAndSetWallet = async () => {\n const { address, provider } = await checkBrowserWallet();\n if (address !== undefined && provider !== undefined) {\n dispatch({ type: 'walletAddress', content: address });\n dispatch({ type: 'walletProvider', content: provider });\n dispatch({ type: 'isWalletConnected', content: true });\n }\n };\n const setChainSupported = (chainId: string, supportedChains: string[]) => {\n const isOnSupportedChain = supportedChains.includes(chainId);\n dispatch({ type: 'isOnSupportedChain', content: isOnSupportedChain });\n if (isOnSupportedChain) {\n dispatch({ type: 'chainView', content: chainId });\n }\n return isOnSupportedChain;\n };\n\n if (window.ethereum !== undefined) {\n dispatch({ type: 'isWalletDetected', content: true });\n window.ethereum\n .request({ method: 'eth_chainId' })\n .then((chainId: string | null | undefined) => {\n if (typeof chainId === 'string') {\n dispatch({ type: 'connectedChain', content: chainId });\n setChainSupported(chainId, supportedChains);\n }\n });\n const autoBrowserWallet = retrieveAutoBrowserWallet();\n if (autoBrowserWallet === 'true' || autoBrowserWallet === null) {\n dispatch({ type: 'walletType', content: 'browser' });\n checkAndSetWallet();\n }\n window.ethereum.on('accountsChanged', (newAddress: string[]) => {\n if (newAddress === undefined || newAddress[0] === undefined) {\n dispatch({ type: 'resetUserState', content: undefined });\n } else {\n dispatch({ type: 'walletAddress', content: checksumAddress(newAddress[0]) });\n dispatch({ type: 'isWalletConnected', content: true });\n }\n });\n window.ethereum.on('chainChanged', (chainId: string) => {\n let scrubbedChainId = chainId;\n if (typeof chainId === 'number') {\n const hex = getChainHexFromReadableId(chainId);\n scrubbedChainId = hex ? hex : chainId;\n }\n dispatch({ type: 'connectedChain', content: scrubbedChainId });\n const onSupportedChain = setChainSupported(scrubbedChainId, supportedChains);\n if (onSupportedChain) {\n checkAndSetWallet();\n }\n });\n }\n }, [dispatch]);\n\n useEffect(() => {\n if (state.chainView !== '') {\n refreshStakingCoin(state.chainView, state.appVersion, dispatch);\n refreshStabilityCoin(state.chainView, state.appVersion, dispatch);\n refreshStakingRewardCoin(state.chainView, state.appVersion, dispatch);\n refreshStabilityRewardCoin(state.chainView, state.appVersion, dispatch);\n\n const readProvider = buildReadProvider(state.chainView);\n dispatch({ type: 'readProvider', content: readProvider });\n }\n }, [dispatch, state.chainView, state.appVersion]);\n\n useEffect(() => {\n if (state.chainView !== '') {\n refreshStERNAnalytics(state.chainView, state.appVersion, dispatch);\n }\n }, [dispatch, state.chainView, state.connectedChain, state.appVersion]);\n\n useEffect(() => {\n if (state.stabilityCoin !== undefined && state.chainView !== '') {\n refreshStabilityCoinPrice(state.stabilityCoin, defaultChain.chainId.hex, dispatch);\n }\n }, [dispatch, state.stabilityCoin, state.chainView]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.readProvider !== undefined &&\n state.stakingCoin !== undefined\n ) {\n const provider =\n state.walletProvider !== undefined ? state.walletProvider : state.readProvider;\n // non-user specific stuff\n refreshTotalStabilityPoolDeposits(state.chainView, provider, state.appVersion, dispatch);\n refreshTotalStakingPoolDeposits(state.chainView, provider, state.appVersion, dispatch);\n refreshBeethovenPrices(state.stakingCoin, state.chainView, state.appVersion, dispatch);\n }\n }, [dispatch, state.stakingCoin, state.chainView, state.readProvider, state.walletProvider, state.appVersion]);\n\n useEffect(() => {\n if (\n state.stabilityCoinPrice !== '' &&\n state.userStERNDepositsInERN !== ''\n ) {\n refreshUserStERNVaultUSD(state.stabilityCoinPrice, state.userStERNDepositsInERN, dispatch);\n }\n }, [dispatch, state.stabilityCoinPrice, state.userStERNDepositsInERN]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.stabilityRewardCoinPrice !== '' &&\n state.totalStabilityDeposits !== '' &&\n state.readProvider !== undefined\n ) {\n const provider =\n state.walletProvider !== undefined ? state.walletProvider : state.readProvider;\n refreshStabilityApr(\n state.stabilityRewardCoinPrice,\n state.totalStabilityDeposits,\n state.chainView,\n provider,\n state.appVersion,\n dispatch\n );\n }\n }, [\n dispatch,\n state.chainView,\n state.readProvider,\n state.walletProvider,\n state.stabilityRewardCoinPrice,\n state.totalStabilityDeposits,\n state.appVersion\n ]);\n\n useEffect(() => {\n if (state.walletAddress !== '' && state.walletProvider !== undefined) {\n dispatch({ type: 'isWalletDetected', content: true });\n dispatch({ type: 'isWalletConnected', content: true });\n } else {\n dispatch({ type: 'isWalletDetected', content: false });\n dispatch({ type: 'isWalletConnected', content: false });\n }\n }, [dispatch, state.walletAddress, state.walletProvider]);\n\n useEffect(() => {\n dispatch({ type: 'isMobile', content: isMobile });\n }, [dispatch, isMobile]);\n\n useEffect(() => {\n const conditional = !state.isOnSupportedChain || !state.isChainViewAligned;\n const showNetworkWarning = state.isWalletConnected && conditional;\n dispatch({ type: 'isNetworkWarningShown', content: showNetworkWarning });\n }, [dispatch, state.isWalletConnected, state.isOnSupportedChain, state.isChainViewAligned]);\n\n useEffect(() => {\n // user specific stuff\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.chainView !== '' &&\n state.chainView === state.connectedChain &&\n state.isWalletConnected\n ) {\n initializeCollaterals(state, dispatch);\n refreshUserStakingRewards(state, dispatch);\n refreshUserStakingRedemptionRewards(state, dispatch);\n refreshUserStabilityRewards(state, dispatch);\n refreshUserLiquidationRewards(state, dispatch);\n refreshUserStabilityPoolDeposits(state, dispatch);\n refreshUserStakingPoolDeposits(state, dispatch);\n refreshAllUserClaimableCollateral(state, dispatch);\n refreshUserStERNVaultDeposits(state, dispatch);\n checkForUserOpenPositionOnVersion(state, dispatch, '1');\n checkForUserOpenPositionOnVersion(state, dispatch, '2');\n\n refreshUserTroveChangess(state.walletAddress, state.chainView, state.appVersion, dispatch);\n getUnderlyingVaults(state.appVersion, state.chainView, dispatch);\n\n refreshOathv1UserBalance(state, dispatch);\n refreshOathv2UserBalance(state, dispatch);\n } else if (state.chainView !== state.connectedChain && state.isWalletConnected) {\n dispatch({ type: 'resetAnalytics', content: undefined });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n state.walletProvider,\n state.walletProvider?.network?.chainId,\n state.walletAddress,\n state.connectedChain,\n state.chainView,\n state.isOnSupportedChain,\n state.isWalletConnected,\n state.appVersion\n ]);\n\n useEffect(() => {\n setTimeout(() => {\n if (\n state.walletProvider !== undefined &&\n state.walletAddress !== '' &&\n state.chainView === state.connectedChain &&\n state.isOnSupportedChain &&\n state.isWalletConnected\n ) {\n refreshUserStakingRewards(state, dispatch);\n refreshUserStakingRedemptionRewards(state, dispatch);\n refreshUserStabilityRewards(state, dispatch);\n refreshUserLiquidationRewards(state, dispatch);\n }\n }, 300000); //every 5 minutes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n state.walletProvider,\n state.walletAddress,\n state.chainView,\n state.connectedChain,\n state.isOnSupportedChain,\n state.isWalletConnected,\n ]);\n\n useEffect(() => {\n if (\n state.walletProvider !== undefined &&\n state.chainView !== '' &&\n state.chainView === state.connectedChain &&\n state.isOnSupportedChain\n ) {\n const collaterals = getChainCollateralFromId(state.chainView, state.appVersion);\n collaterals?.forEach((uid) => {\n refreshCollateralPrice(\n uid,\n state.chainView,\n state.walletAddress,\n state.walletProvider,\n state.appVersion,\n dispatch\n );\n refreshCollateralTCR(\n uid,\n state.chainView,\n state.walletProvider,\n state.appVersion,\n dispatch\n )\n });\n }\n setTimeout(() => {\n if (\n state.walletProvider !== undefined &&\n state.chainView !== '' &&\n state.chainView === state.connectedChain &&\n state.isOnSupportedChain\n ) {\n const collaterals = getChainCollateralFromId(state.chainView, state.appVersion);\n collaterals?.forEach((uid) => {\n refreshCollateralPrice(\n uid,\n state.chainView,\n state.walletAddress,\n state.walletProvider, \n state.appVersion,\n dispatch\n );\n refreshCollateralTCR(\n uid,\n state.chainView,\n state.walletProvider, \n state.appVersion,\n dispatch\n )\n });\n }\n }, 120000); //every 2 minutes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n state.walletProvider,\n state.chainView,\n state.connectedChain,\n state.isOnSupportedChain,\n state.appVersion\n ]);\n\n useEffect(() => {\n if (\n state.chainView !== '' &&\n state.walletAddress !== '' &&\n areCollateralPricesLoaded(state)\n ) {\n refreshAllOpenTroves(state, dispatch);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n state.chainView,\n state.btcPrice,\n state.ethPrice,\n state.opPrice,\n state.wstethPrice,\n state.walletAddress,\n state.appVersion\n ])\n\n useEffect(() => {\n const route = getRouteFromPath(pathname);\n dispatch({ type: 'currentPage', content: route?.id });\n }, [dispatch, pathname])\n\n useEffect(() => {\n checkShowHeaderAlert(state.oathv1UserBalance, state.hasV1Position, state.appVersion, dispatch);\n }, [dispatch, state.oathv1UserBalance, state.hasV1Position, state.appVersion])\n\n if (!state.isAppInitialized) {\n return
;\n }\n\n return (\n
\n \n {!state.showDisclaimer ? (\n
\n \n \n
\n \n \n
\n \n
\n
\n
\n \n \n \n {\n dispatch({ type: 'isTxModalOpen', content: false });\n }}\n />\n \n
\n ) : (\n <>\n )}\n \n );\n}\n\nexport default App;\n","import { routes } from \"../storage/Routes\"\n\nexport const getRouteFromPath = (path:string) => {\n\tfor (let i = 0; i < routes.length; i++) {\n\t\tif (routes[i].path === path) {\n\t\t\treturn routes[i];\n\t\t}\n\t}\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Store from './Store';\nimport './styling/App.css';\nimport App from './components/App';\nimport { BrowserRouter } from 'react-router-dom';\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}