{"version":3,"sources":["config/index.ts","hooks/LiquidLoansContext.tsx","connectors/injectedConnector.ts","components/Icon.tsx","components/Dialog.tsx","components/RetryDialog.tsx","components/WaitingDialog.tsx","components/ConnectionConfirmationDialog.tsx","components/MetaMaskIcon.tsx","components/Modal.tsx","assets/images/barista-logo.png","assets/images/barista-1.png","assets/images/barista-2.png","assets/images/barista-3.png","pages/StaticHomePage.tsx","components/WalletConnector.tsx","hooks/useAuthorizedConnection.ts","components/Tooltip.tsx","components/Transaction.tsx","theme.ts","testUtils/DisposableWalletProvider.ts","components/Link.tsx","components/MenuNavLinks.tsx","components/SideNav.tsx","components/InfoIcon.tsx","components/Tcr.tsx","strings.ts","assets/images/loan-icon.svg","assets/images/usdl-icon.svg","assets/images/pls-icon.svg","assets/images/bean-token.png","graphFunctions/graphFetcher.ts","components/UserTokenBalances.tsx","utils/shortenAddress.ts","assets/images/wallet-icon.svg","components/UserAccount.tsx","components/MenuButton.tsx","components/Header.tsx","components/Statistic.tsx","components/SystemStats.tsx","components/InfoMessage.tsx","components/Farm/context/FarmViewContext.tsx","components/Farm/views/RemainingLOAN.tsx","components/Farm/views/Inactive/Inactive.tsx","components/Vault/Editor.tsx","components/LoadingOverlay.tsx","components/Farm/context/useValidationState.ts","components/Farm/views/Confirm.tsx","components/ActionDescription.tsx","components/Farm/views/Description.tsx","components/Farm/views/Approve.tsx","components/ErrorDescription.tsx","components/Farm/views/Validation.tsx","components/Farm/views/Staking/Staking.tsx","components/Farm/views/Adjusting/Adjusting.tsx","components/Farm/views/Active/ClaimReward.tsx","components/Farm/views/UnstakeAndClaim.tsx","components/Farm/views/Active/Active.tsx","components/Farm/views/Disabled/Disabled.tsx","components/Farm/Farm.tsx","pages/Farm.tsx","components/Abbreviation.tsx","components/LiquidationManager.tsx","components/RiskyVaults.tsx","pages/RiskyVaultsPage.tsx","components/Redemption/DisabledRedemption.tsx","components/Redemption/RedemptionAction.tsx","components/PercentageSelector.tsx","components/Redemption/RedemptionManager.tsx","components/Redemption/Redemption.tsx","pages/RedemptionPage.tsx","components/Vault/context/VaultViewContext.tsx","components/Vault/context/VaultViewProvider.tsx","components/Stability/context/StabilityViewContext.tsx","components/Stability/context/StabilityViewProvider.tsx","components/Staking/context/StakingViewContext.tsx","components/Staking/context/StakingViewProvider.tsx","components/Farm/context/transitions.ts","components/Farm/context/FarmViewProvider.tsx","components/SideBar.tsx","hooks/useStableVaultChange.ts","components/Vault/VaultAction.tsx","components/Vault/CollateralRatio.tsx","components/Warning.tsx","components/Vault/ExpensiveVaultChangeWarning.tsx","components/Vault/validation/validateVaultChange.tsx","components/Tabs.tsx","components/Vault/Opening.tsx","components/CollateralSurplusAction.tsx","components/Vault/VaultEditor.tsx","components/Vault/VaultManager.tsx","components/Vault/Adjusting.tsx","components/Vault/RedeemedVault.tsx","components/Vault/LiquidatedVault.tsx","components/Vault/Vault.tsx","pages/BorrowUSDL.tsx","components/Stability/StabilityActionDescription.tsx","components/Stability/NoDeposit.tsx","components/Stability/validation/validateStabilityDepositChange.tsx","components/Stability/actions/ClaimRewards.tsx","components/Stability/StabilityDepositEditor.tsx","components/Stability/StabilityDepositAction.tsx","components/Stability/StabilityDepositManager.tsx","components/Stability/Stability.tsx","pages/StabilityPool.tsx","components/Staking/StakingEditor.tsx","components/Staking/StakingManagerAction.tsx","components/Staking/NoStake.tsx","components/Staking/StakingManager.tsx","components/Staking/Staking.tsx","pages/StakingPool.tsx","LiquidLoansFrontend.tsx","App.tsx","index.tsx"],"names":["defaultConfig","frontendTag","AddressZero","hasKey","o","k","parseConfig","json","config","_objectSpread","isAddress","getAddress","console","error","log","infuraApiKey","testnetOnly","configPromise","undefined","fetchConfig","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","response","wrap","_context","prev","next","fetch","sent","ok","Error","concat","status","t0","t1","abrupt","t2","stop","apply","arguments","getConfig","LiquidLoansContext","createContext","webSocketSupportedNetworks","LiquidLoansProvider","children","loader","unsupportedNetworkFallback","unsupportedMainnetFallback","_useWeb3React","useWeb3React","provider","library","account","chainId","_useState","useState","_useState2","_slicedToArray","setConfig","connection","useMemo","_connectByChainId","getSigner","userAddress","useStore","channel","process","useEffect","then","isBatchedProvider","isWebSocketAugmentedProvider","network","getNetwork","name","includes","openWebSocket","_toConsumableArray","wsParams","_isDev","window","location","hostname","closeWebSocket","warn","_jsx","_Fragment","liquidLoans","EthersLiquidLoans","_from","store","logging","Provider","value","useLiquidLoans","liquidLoansContext","useContext","injectedConnector","InjectedConnector","add","faCircleNotch","faCheck","faCheckCircle","faExclamationTriangle","faInfoCircle","faTimes","faTrash","faChartLine","faRedo","faHistory","faChevronLeft","faChevronRight","faClipboard","faClipboardCheck","faUserCircle","faWallet","faExternalLinkAlt","faCog","faPlug","faExclamationCircle","faAngleUp","faAngleDoubleUp","faAngleDown","faAngleDoubleDown","faPen","faHandPaper","faHeartbeat","faBars","faQuestionCircle","getIcon","Icon","style","rest","_objectWithoutProperties","_excluded","FontAwesomeIcon","icon","iconFromIntent","intent","color","Dialog","title","cancelLabel","onCancel","_jsxs","Card","sx","p","borderRadius","Box","height","bg","Flex","justifyContent","alignItems","borderBottom","borderColor","pb","Heading","as","textAlign","fontSize","px","Button","variant","onClick","size","RetryDialog","retryLabel","onRetry","borderTop","flexDirection","mr","mb","width","WaitingDialog","waitReason","Spinner","ConnectionConfirmationDialog","Text","fontWeight","MetaMaskIcon","viewBox","fill","xmlns","d","x","y","Modal","Container","StaticHomePage","backgroundImage","backgroundRepeat","backgroundSize","minHeight","minWidth","position","zIndex","background","Image","src","BaristaLogo","mx","transition","mt","gap","transitionDuration","transform","translate","barista3","barista1","barista2","connectionReducer","state","action","type","connector","message","match","WalletConnector","activate","deactivate","active","triedAuthorizedConnection","tried","setTried","tryToActivateIfAuthorized","isAuthorized","useAuthorizedConnection","_useReducer","useReducer","_useReducer2","connectionState","dispatch","isMetaMask","_ethereum$isMetaMask","_ethereum","ethereum","detectMetaMask","ml","Link","lineHeight","href","target","Tooltip","_ref$placement","placement","event","useRef","show","setShow","_useState3","_useState4","referenceElement","setReferenceElement","_useState5","_useState6","popperElement","setPopperElement","_usePopper","usePopper","styles","attributes","React","cloneElement","Children","only","onMouseOver","current","onMouseOut","setTimeout","ref","popper","circularProgressbarStyle","strokeLinecap","pathColor","trailColor","slowProgress","strokeWidth","buildStyles","pathTransitionDuration","fastProgress","TransactionContext","TransactionProvider","transactionState","useTransactionState","useMyTransactionState","myId","_useTransactionState","id","useTransactionFunction","send","_useTransactionState3","_useTransactionState4","setTransactionState","useCallback","tx","Transaction","_ref3","_showFailure","tooltip","tooltipPlacement","showFailure","requires","_useTransactionFuncti","_useTransactionFuncti2","sendTransaction","trigger","failureReasons","filter","_ref4","map","_ref6","push","clonedTrigger","length","disabled","tryToGetRevertReason","_ref8","_callee2","result","_context2","call","blockNumber","hexDataLength","hexDataSlice","defaultAbiCoder","decode","_x","_x2","Donut","memo","CircularProgressbarWithChildren","_ref9","_ref10","TransactionProgressDonut","_ref11","setValue","maxValue","spin","TransactionMonitor","_useTransactionState5","_useTransactionState6","cancelled","finished","txHash","rawSentTransaction","hash","waitForConfirmation","_ref12","_callee3","receipt","confirmations","reason","_context3","waitForReceipt","rawReceipt","EthersTransactionCancelledError","pl","bottom","overflow","baseColors","colors","primary","secondary","accent","pupleButton","success","warning","danger","dangerHover","info","invalid","main_bg","text","muted","barista_red","barista_blue","barista_yellow","barista_green","buttonBase","display","cursor","button","py","border","opacity","buttonOutline","hoverColor","iconButton","padding","cardGapY","card","boxShadow","infoCard","h2","formBase","flexShrink","formCell","modalOverlay","left","top","headerGradient","theme","breakpoints","space","fonts","body","join","heading","monospace","fontSizes","fontWeights","light","medium","bold","lineHeights","borders","shadows","address","fontFamily","buttons","connect_wallet","liquidate","outline","cancel","menu_icon","dangerIcon","titleIcon","grids","protocol_performance","cards","main_card","second_card","liquidation_card","my","liquidation_second_card","infoPopup","right","overflowY","wordWrap","forms","label","unit","input","flex","editor","layout","header","footer","main","columns","flexWrap","justifyItems","pt","pr","center","maxWidth","auto","actions","liquidation","disabledOverlay","modal","infoOverlay","infoMessage","m","sidenav","sidebar","badge","backgroundColor","root","a","textDecoration","links","nav","textTransform","letterSpacing","DisposableWalletProvider","url","funderPrivateKey","ethAmount","_classCallCheck","wallet","funderWallet","haveFunded","this","Wallet","createRandom","Decimal","from","_createClass","key","find","toLowerCase","_fund","to","hex","gas","hexlify","_send","method","params","_json$error","_this","fund","Promise","all","_ref2","nonce","findWallet","signTransaction","gasLimit","_x3","headers","JSON","stringify","jsonrpc","_excluded2","Object","assign","ExactLink","props","RouterLink","exact","ThemeUINavLink","link_style","stroke","MenuNavLinks","_objectDestructuringEmpty","navLinks","link","BorrowUSDL","StabilityPool","StakingPool","Redemption","Liqiuidation","Tutorials","item","i","margin","gradientTransform","gradientUnits","offset","stopColor","className","SideNav","isVisible","setIsVisible","overlay","e","pointerEvents","InfoIcon","_ref$size","Tippy","interactive","content","select","numberOfVaults","price","total","usdlInStabilityPool","borrowingRate","redemptionRate","totalStakedLOAN","frontend","kickbackRate","Battery","_theme$theme$colors","_theme$theme$colors2","_theme$theme$colors3","_theme$theme$colors4","_theme$theme$colors5","_tcr","useThemeUI","PiBatteryVerticalFullBold","PiBatteryVerticalHighBold","PiBatteryVerticalMediumBold","PiBatteryVerticalLowBold","PiBatteryVerticalEmptyBold","Tcr","_useLiquidLoansSelect","useLiquidLoansSelector","totalCollateralRatioPct","Percent","collateralRatio","Number","collateralRatioIsBelowCritical","prettify","wordBreak","whiteSpace","COIN","GT","LP","endpoint","makeGraphQlRequest","_makeGraphQlRequest","operationName","query","variables","axios","post","data","getPriceOfPLS","_getPriceOfPLS","globals","currentSystemState","getPriceOfPLS24hrsAgo","_x4","_getPriceOfPLS24hrsAgo","timestamp24hAgo","_response$priceChange","priceChanges","systemStateAfter","getPrices","_getPrices","_callee4","_response$tokenDataLO","_response$tokenDataUS","_context4","LOAN2PLS","tokenDataLOANs","USDL2PLS","tokenDataUSDLs","getPrices24hrsAgo","_x5","_getPrices24hrsAgo","_callee5","_response$tokenDataLO2","_response$tokenDataUS2","_context5","getStakingAPR","_x6","_getStakingAPR","_callee6","_context6","first","loanstakingPRDataByDays","getStabilityAPR","_x7","_getStabilityAPR","_callee7","day_num","_context7","usdlstabilityAPRDataByDays","fetchAllPriceData","_fetchAllPriceData","_callee8","currentTime","twentyFourHoursAgo","twentyFourHoursAgoTimeStamp","_yield$Promise$all","_yield$Promise$all2","currentPricePLS","pricePLS24hrsAgo","prices","prices24hrsAgo","_context8","Date","getTime","Math","floor","plsPrice","plsChange","loanPrice","usdlPrice","loanChange","usdlChange","fetchStakingAPR","_fetchStakingAPR","_callee9","currentDate","epochDate","dayNumberEpoch","totalFees","aprLength","totalLoaninPoolLast","index","element","loanPriceUSD","usdlPriceUSD","totalRedemptionFeesPaid","totalBorrowingFeesPaid","totalLOANTokensStaked","_context9","stakingAPR","fetchStabilityAPR","_fetchStabilityAPR","_callee10","totalUSDLinPoolLast","totalLiquidationFeesPaid","totalIssuanceFees","totalUSDLinPool","_context10","totalPLSFromLiquidations","totalLOANTokensIssued","totalUSDLTokensStaked","stabilityAPR","barista_colors","getLogo","token","LOANIcon","PLSIcon","USDLIcon","BEANIcon","accountBalance","usdlBalance","loanBalance","contractAddress","UserTokenBalances","priceData","setPriceData","fetchBalances","beanBalance","setBeanBalance","contractABI","constant","inputs","outputs","_fetchTokenBalance2","signer","contract","ethers","providers","Web3Provider","Contract","balanceOf","toString","fetchTokenBalance","_useState7","_useState8","setRenderCount","intervalId","setInterval","prevCount","clearInterval","overflowX","currency","change","imageUrl","Fragment","addTokenToWallet","alt","abs","toFixed","LuArrowDownLeft","LuArrowUpRight","_ref5","tokenSymbol","tokenAddress","tokenImage","request","options","symbol","decimals","image","shortenAddress","substr","UserAccount","modalOpen","setModalOpen","modalRef","handleClickOutside","contains","handleModalToggle","document","addEventListener","removeEventListener","walletImage","AiOutlineClose","navigator","clipboard","writeText","BiCopy","MenuButton","Hamburger","toggled","direction","Header","isFrontendRegistered","Statistic","selectBalances","Balances","stabilityDeposit","SystemStats","_ref4$variant","showBalances","_useLiquidLoans$liqui","version","deploymentDate","_useLiquidLoansSelect2","usdlInStabilityPoolPct","debt","nonZero","div","usdlInBammPct","totalLusdInBamm","borrowingFeePct","mul","collateral","shorten","InfoMessage","FarmViewContext","useFarmView","context","selector","remainingLiquidityMiningLOANReward","RemainingLOAN","Inactive","usdlAddress","dispatchEvent","addresses","handleStakePressed","Paragraph","REACT_APP_PULSEX_LINK","Row","labelId","labelFor","infoIcon","_ref$fontSize","Label","htmlFor","PendingAmount","startsWith","StaticAmounts","inputId","labelledBy","amount","pendingAmount","pendingColor","staticStyle","flexGrow","editableStyle","StaticRow","DisabledEditableRow","EditableRow","editingState","editedAmount","setEditedAmount","_editingState","maxAmount","maxedOut","editing","setEditing","setInvalid","Input","autoFocus","placeholder","defaultValue","onChange","_unused","onBlur","LoadingOverlay","PLSXtokenBalance","PLSXtokenAllowance","liquidityMiningStake","useValidationState","isWithdrawing","gt","amountChanged","sub","maximumStake","hasSetMaximumStake","eq","isValid","hasApproved","hasEnoughPLSXtoken","isZero","gte","transactionId","Confirm","_useValidationState","transactionAction","unstakePLSXtokens","bind","stakePLSXtokens","shouldDisable","ActionDescription","Amount","Description","Approve","approvePLSXtokens","ErrorDescription","Validation","totalStakedPLSXtokens","Staking","setAmount","isDirty","isTransactionPending","handleCancelPressed","nextTotalStakedPLSXtokens","poolShare","mulDiv","infinite","liquidityMiningLOANReward","Adjusting","maximumAmount","hasSetMaximumAmount","originalPoolShare","poolShareChange","Difference","between","positive","ClaimReward","withdrawLOANRewardFromLiquidityMining","UnstakeAndClaim","liquidloans","exitLiquidityMining","Active","handleAdjustPressed","hasStakeAndRewards","Disabled","hasStake","Farm","view","FarmPanel","Abbreviation","short","boxProps","LiquidationManager","numberOfVaultsToLiquidate","overrides","liquidateUpTo","parseInt","rowHeight","liquidatableInNormalMode","vault","collateralRatioIsBelowMinimum","liquidatableInRecoveryMode","totalCollateralRatio","MINIMUM_COLLATERAL_RATIO","lt","lte","blockTag","recoveryMode","RiskyVaults","pageSize","setPageSize","loading","setLoading","vaults","setVaults","setTransactionId","_useState9","_useState10","reload","setReload","forceReload","_useState11","_useState12","page","setPage","numberOfPages","ceil","clampedPage","min","mounted","getVaults","sortedBy","startingAt","_useState13","_useState14","copied","setCopied","Select","isEmpty","paddingLeft","ownerAddress","CRITICAL_COLLATERAL_RATIO","paddingRight","onMouseEnter","RiskyVaultsPage","DisabledRedemption","disabledDays","unlockDate","toLocaleString","RedemptionAction","usdlAmount","maxRedemptionRate","redeemUSDL","PercentageSelector","setFinalValue","selectedPer","setSelectedPer","percentage","calculatedValue","handleButtonClick","mcrPercent","fees","RedemptionManager","ZERO","setUSDLAmount","changePending","setChangePending","dirty","feePct","ethFee","myTransactionState","canRedeem","description","marginTop","selectBlockTimestamp","blockTimestamp","bootstrapPeriod","bootstrapPeriodDays","round","bootstrapEndTime","bootstrapEndDate","RedemptionPage","VaultViewContext","useVaultView","transitions","NONE","OPEN_VAULT_PRESSED","VAULT_OPENED","LIQUIDATED","VAULT_SURPLUS_COLLATERAL_CLAIMED","REDEEMED","OPENING","CANCEL_ADJUST_VAULT_PRESSED","ADJUSTING","VAULT_ADJUSTED","VAULT_CLOSED","VAULT_LIQUIDATED","VAULT_REDEEMED","CLOSING","ACTIVE","ADJUST_VAULT_PRESSED","CLOSE_VAULT_PRESSED","vaultStatusEvents","open","closedByOwner","closedByLiquidation","closedByRedemption","VaultViewProvider","vaultStatus","getInitialView","setView","viewRef","nextView","_transitions$view$eve","_vaultStatusEvents$va","StabilityViewContext","useStabilityView","DEPOSIT_PRESSED","DEPOSITING","CANCEL_PRESSED","DEPOSIT_CONFIRMED","REWARDS_CLAIMED","ADJUST_DEPOSIT_PRESSED","DEPOSIT_EMPTIED","StabilityViewProvider","StakingViewContext","useStakingView","init","loanStake","adjusting","reduce","oldStake","oldState","updatedStake","stateChange","changeCommitted","stakedLOAN","collateralGain","usdlGain","StakingViewProvider","stakingTransactionState","_useLiquidLoansReduce","useLiquidLoansReducer","_useLiquidLoansReduce2","_useLiquidLoansReduce3","INACTIVE","STAKE_PRESSED","STAKING","STAKE_CONFIRMED","STAKE_APPROVED","ADJUST_PRESSED","CLAIM_REWARD_CONFIRMED","UNSTAKE_AND_CLAIM_CONFIRMED","UNSTAKE_CONFIRMED","DISABLED","FarmViewProvider","SideBar","paramsEq","b","useStableVaultChange","vaultChange","stableVaultChange","setStableVaultChange","borrowUSDL","repayUSDL","depositCollateral","withdrawCollateral","VaultAction","maxBorrowingRate","borrowingFeeDecayToleranceMinutes","openVault","closeVault","adjustVault","CollateralRatio","_change$positive","_change$positive$abso","_change$negative","_change$negative$abso","_changePct$nonZeroish","collateralRatioPct","changePct","absoluteValue","negative","nonZeroish","Warning","ExpensiveVaultChangeWarning","gasEstimationState","setGasEstimationState","timeoutId","populatedTx","populate","rawPopulatedTransaction","clearTimeout","gasHeadroom","ccrPercent","VaultChangeDescription","selectForVaultChangeValidation","validateVaultChange","originalVault","adjustedVault","selectedState","whatChanged","resultingVault","wouldTriggerRecoveryMode","subtract","USDL_MINIMUM_DEBT","errorDescription","validateVaultCreation","validateVaultClosure","validateVaultAdjustment","USDL_MINIMUM_NET_DEBT","isOpenableInRecoveryMode","_ref7","tabStyle","Tabs","tabs","currentTab","setCurrentTab","disabledTab","tab","borderBottomColor","handleClick","validationContext","EMPTY_VAULT","Vault","TRANSACTION_ID","GAS_ROOM_PLS","Opening","setCollateral","borrowAmount","setBorrowAmount","fee","liquidationReserve","USDL_LIQUIDATION_RESERVE","totalDebt","maxCollateral","collateralMaxedOut","_validateVaultChange","_validateVaultChange2","reset","temp","temp2","temp3","balance","collateralSurplusBalance","CollateralSurplusAction","myTransactionId","claimCollateralSurplus","VaultEditor","original","edited","originalCollateralRatio","debtDirty","addedMinimumDebt","reduceWith","addMinimumDebt","removeMinimumDebt","finishChange","revert","newCollateral","newValue","newState","setDebt","vaultBeforeRedistribution","feeFrom","transactionIdPrefix","transactionIdMatcher","RegExp","VaultManager","validChange","openingNewVault","hasSurplusCollateral","collateralEntered","setCollateralEntered","netDebt","setNetDebt","netDebtEntered","setNetDebtEntered","isDebtIncrease","debtIncreaseAmount","updatedVault","availableEth","RedeemedVault","handleOpenVault","LiquidatedVault","StabilityActionDescription","_originalDeposit$coll","_originalDeposit$loan","originalDeposit","loanReward","depositUSDL","withdrawUSDL","UnlockButton","bammUnlock","selectForStabilityDepositChangeValidation","ownFrontend","haveUndercollateralizedVaults","bammAllowance","haveOwnFrontend","validateStabilityDepositChange","editedUSDL","lusdDiff","ethDiff","_change$depositUSDL","_change$depositUSDL2","fromBigNumberString","ClaimRewards","withdrawGainsFromStabilityPool","selectPrice","StabilityDepositEditor","newTotalLusd","newTotalEth","editedUSD","enteredUSD","setEnteredUSD","currentUSDL","bammPoolShare","userTotalUsdInBamm","totalUsdInBamm","editedUserUsd","editedTotalUsdInBamm","editedBammPoolShare","currentUSD","usdDiff","bammPoolShareChange","totalEthInBamm","allowanceTxState","waitingForTransaction","newEthBalance","newLusdBalance","_validateStabilityDep","makingNewDeposit","hasReward","hasGain","usdlInStabilityPoolAfterChange","newPoolShare","showOverlay","showResetButton","apr","setAPR","selectFrontendRegistered","StabilityDepositAction","_useLiquidLoans","depositUSDLInStabilityPool","withdrawUSDLFromStabilityPool","updatedDeposit","initialUSDL","StabilityDepositManager","_validateStabilityDep2","Stability","StakingEditor","editedLOAN","originalStake","useHistory","beanGain","enteredLoan","setEnteredLoan","makingNewStake","totalStakedLOANAfterChange","withdrawGainsFromStaking","StakingManagerAction","stakeLOAN","unstakeLOAN","BeansUnlockButton","beansUnlock","beansAllowance","selectLOANBalance","StakingManagerActionDescription","_change$stakeLOAN","_change$unstakeLOAN","_loanStake$collateral","_loanStake$beanGain$n","_loanStake$usdlGain$n","StakingManager","_change$stakeLOAN2","_change$stakeLOAN3","beansAllowance1","LiquidLoansFrontend","LiquidLoansStoreProvider","Router","Switch","Route","path","autoRefreshOnNetworkChange","REACT_APP_DEMO_MODE","PulsesWeb3ReactProvider","Web3ReactProvider","getLibrary","BatchedWebSocketAugmentedWeb3Provider","UnsupportedMainnetFallback","ChangeNetwork","REACT_APP_CHAIN_ID","chainName","REACT_APP_NETWORK_NAME","nativeCurrency","REACT_APP_CURRENCY_SYMBOL","rpcUrls","REACT_APP_RPC","blockExplorerUrls","REACT_APP_BLOCK_EXPLORER","App","ThemeProvider","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.777fae36.chunk.js","sourcesContent":["import { AddressZero } from \"@ethersproject/constants\";\nimport { isAddress, getAddress } from \"@ethersproject/address\";\n\nexport type LiquidLoansFrontendConfig = {\n frontendTag: string;\n infuraApiKey?: string;\n testnetOnly?: boolean;\n};\n\nconst defaultConfig: LiquidLoansFrontendConfig = {\n frontendTag: AddressZero\n};\n\nfunction hasKey(o: object, k: K): o is Record {\n return k in o;\n}\n\nconst parseConfig = (json: unknown): LiquidLoansFrontendConfig => {\n const config = { ...defaultConfig };\n\n if (typeof json === \"object\" && json !== null) {\n if (hasKey(json, \"frontendTag\") && json.frontendTag !== \"\") {\n const { frontendTag } = json;\n\n if (typeof frontendTag === \"string\" && isAddress(frontendTag)) {\n config.frontendTag = getAddress(frontendTag);\n } else {\n console.error(\"Malformed frontendTag:\");\n console.log(frontendTag);\n }\n }\n\n if (hasKey(json, \"infuraApiKey\") && json.infuraApiKey !== \"\") {\n const { infuraApiKey } = json;\n\n if (typeof infuraApiKey === \"string\") {\n config.infuraApiKey = infuraApiKey;\n } else {\n console.error(\"Malformed infuraApiKey:\");\n console.log(infuraApiKey);\n }\n }\n\n if (hasKey(json, \"testnetOnly\")) {\n const { testnetOnly } = json;\n\n if (typeof testnetOnly === \"boolean\") {\n config.testnetOnly = testnetOnly;\n } else {\n console.error(\"Malformed testnetOnly:\");\n console.log(testnetOnly);\n }\n }\n } else {\n console.error(\"Malformed config:\");\n console.log(json);\n }\n\n return config;\n};\n\nlet configPromise: Promise | undefined = undefined;\n\nconst fetchConfig = async () => {\n try {\n const response = await fetch(\"config.json\");\n\n if (!response.ok) {\n throw new Error(`Failed to fetch config.json (status ${response.status})`);\n }\n\n return parseConfig(await response.json());\n } catch (err) {\n console.error(err);\n return { ...defaultConfig };\n }\n};\n\nexport const getConfig = (): Promise => {\n if (!configPromise) {\n configPromise = fetchConfig();\n }\n\n return configPromise;\n};\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Web3Provider } from \"@ethersproject/providers\";\nimport { useWeb3React } from \"@web3-react/core\";\n\nimport {\n isBatchedProvider,\n isWebSocketAugmentedProvider,\n} from \"@liquidloans/providers\";\nimport {\n BlockPolledLiquidLoansStore,\n EthersLiquidLoans,\n EthersLiquidLoansWithStore,\n _connectByChainId,\n} from \"@liquidloans/lib-ethers\";\n\nimport { LiquidLoansFrontendConfig, getConfig } from \"../config\";\n\ntype LiquidLoansContextValue = {\n config: LiquidLoansFrontendConfig;\n account: string;\n provider: Provider;\n liquidLoans: EthersLiquidLoansWithStore;\n};\n\nconst LiquidLoansContext = createContext(\n undefined\n);\n\ntype LiquidLoansProviderProps = {\n loader?: React.ReactNode;\n unsupportedNetworkFallback?: (\n chainId: number,\n channel?: string\n ) => React.ReactNode;\n unsupportedMainnetFallback?: React.ReactNode;\n};\n\nconst wsParams = (network: string, infuraApiKey: string): [string, string] => {\n \n return [\n `wss://${\n network === \"homestead\" ? \"mainnet\" : network\n }.infura.io/ws/v3/${infuraApiKey}`,\n network,\n ]\n};\n\nconst webSocketSupportedNetworks = [\n \"homestead\",\n \"kovan\",\n \"rinkeby\",\n \"ropsten\",\n \"goerli\",\n \"mumbai\",\n \"pulsechain\"\n];\n\nexport const LiquidLoansProvider: React.FC = ({\n children,\n loader,\n unsupportedNetworkFallback,\n unsupportedMainnetFallback,\n}) => {\n const { library: provider, account, chainId } = useWeb3React();\n const [config, setConfig] = useState();\n\n const connection = useMemo(() => {\n if (config && provider && account && chainId) {\n try {\n return _connectByChainId(\n provider,\n provider.getSigner(account),\n chainId,\n {\n userAddress: account,\n frontendTag: config.frontendTag,\n useStore: \"blockPolled\",\n channel: process.env.REACT_APP_ENVIRONMENT || \"prod\",\n }\n );\n } catch (error) {\n console.error(\"Error creating connection:\", error);\n // throw error;\n }\n }\n }, [config, provider, account, chainId]);\n\n useEffect(() => {\n getConfig().then(setConfig);\n }, []);\n\n useEffect(() => {\n if (config && connection) {\n const { provider, chainId } = connection;\n\n if (isBatchedProvider(provider) && provider.chainId !== chainId) {\n provider.chainId = chainId;\n }\n\n if (isWebSocketAugmentedProvider(provider)) {\n const network = getNetwork(chainId);\n\n if (\n network.name &&\n webSocketSupportedNetworks.includes(network.name) &&\n config.infuraApiKey\n ) {\n provider.openWebSocket(\n ...wsParams(network.name, config.infuraApiKey)\n );\n } else if (connection._isDev) {\n provider.openWebSocket(\n `ws://${window.location.hostname}:8546`,\n chainId\n );\n }\n\n return () => {\n provider.closeWebSocket();\n };\n }\n }\n }, [config, connection]);\n\n if (!config || !provider || !account || !chainId) {\n console.warn(\"Config, provider, account, or chainId is missing.\");\n return <>{loader};\n }\n\n if (config.testnetOnly && chainId === 369) {\n console.warn(\"Unsupported mainnet. Displaying mainnet fallback.\");\n return <>{unsupportedMainnetFallback};\n }\n\n if (!connection || (connection?.channel === \"local\" && connection?.chainId !== 369)) {\n if (unsupportedNetworkFallback) {\n console.warn(\n \"Unsupported network. Displaying unsupported network fallback.\",\n chainId,\n connection?.channel\n );\n return <>{unsupportedNetworkFallback(chainId, connection?.channel)};\n }\n return null;\n }\n\n const liquidLoans = EthersLiquidLoans._from(connection);\n liquidLoans.store.logging = true;\n\n return (\n \n {children}\n \n );\n};\n\n\nexport const useLiquidLoans = () => {\n const liquidLoansContext = useContext(LiquidLoansContext);\n\n if (!liquidLoansContext) {\n throw new Error(\n \"You must provide a LiquidLoansContext via LiquidLoansProvider\"\n );\n }\n\n return liquidLoansContext;\n};\n","import { InjectedConnector } from \"@web3-react/injected-connector\";\n\nexport const injectedConnector = new InjectedConnector({});\n","import React from \"react\";\nimport { library, IconName, IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n faCircleNotch,\n faCheckCircle,\n faExclamationTriangle,\n faInfoCircle,\n faTimes,\n faTrash,\n faChartLine,\n faRedo,\n faHistory,\n faChevronLeft,\n faChevronRight,\n faUserCircle,\n faWallet,\n faExternalLinkAlt,\n faClipboardCheck,\n faCog,\n faCheck,\n faPlug,\n faExclamationCircle,\n faAngleUp,\n faAngleDoubleUp,\n faAngleDown,\n faAngleDoubleDown,\n faPen,\n faHandPaper,\n faHeartbeat,\n faBars\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { faClipboard, faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon, FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\n\nlibrary.add(\n faCircleNotch,\n faCheck,\n faCheckCircle,\n faExclamationTriangle,\n faInfoCircle,\n faTimes,\n faTrash,\n faChartLine,\n faRedo,\n faHistory,\n faChevronLeft,\n faChevronRight,\n faClipboard,\n faClipboardCheck,\n faUserCircle,\n faWallet,\n faExternalLinkAlt,\n faCog,\n faPlug,\n faExclamationCircle,\n faAngleUp,\n faAngleDoubleUp,\n faAngleDown,\n faAngleDoubleDown,\n faPen,\n faHandPaper,\n faHeartbeat,\n faBars,\n faQuestionCircle\n);\n\nconst getIcon = (name: IconName): IconProp => {\n switch (name) {\n case \"clipboard\":\n return [\"far\", \"clipboard\"];\n case \"question-circle\":\n return [\"far\", \"question-circle\"];\n default:\n return name;\n }\n};\n\nexport type IconProps = Pick & {\n name: IconName;\n};\n\nexport const Icon: React.FC = ({ name, style, ...rest }) => (\n \n);\n","import React from \"react\";\nimport { Heading, Flex, Card, Button, Box } from \"theme-ui\";\n\nimport { Icon } from \"./Icon\";\n\ntype DialogIntent = \"success\" | \"warning\" | \"danger\" | \"info\";\n\ntype DialogProps = {\n intent?: DialogIntent;\n title: string;\n icon?: React.ReactNode;\n cancelLabel?: string;\n onCancel: () => void;\n};\n\nconst iconFromIntent = (intent: DialogIntent | undefined) => {\n switch (intent) {\n case \"success\":\n return ;\n case \"warning\":\n return ;\n case \"danger\":\n return ;\n case \"info\":\n return ;\n }\n return null;\n};\n\nexport const Dialog: React.FC = ({\n intent,\n title,\n icon,\n cancelLabel,\n onCancel,\n children\n}) => (\n \n {intent ? : null}\n \n {icon || iconFromIntent(intent)}\n \n {title}\n \n \n \n {children}\n \n);\n","import React from \"react\";\nimport { Box, Button, Flex } from \"theme-ui\";\n\nimport { Dialog } from \"./Dialog\";\n\ntype RetryDialogProps = {\n title: string;\n cancelLabel?: string;\n retryLabel?: string;\n onCancel: () => void;\n onRetry: () => void;\n};\n\nexport const RetryDialog: React.FC = ({\n title,\n cancelLabel,\n onCancel,\n retryLabel,\n onRetry,\n children,\n}) => (\n \n {children}\n \n \n {cancelLabel || \"Cancel\"}\n \n \n \n \n);\n","import React from \"react\";\nimport { Box, Flex, Spinner } from \"theme-ui\";\n\nimport { Dialog } from \"./Dialog\";\n\ntype WaitingDialogProps = {\n title: string;\n icon?: React.ReactNode;\n waitReason: React.ReactNode;\n cancelLabel?: string;\n onCancel: () => void;\n};\n\nexport const WaitingDialog: React.FC = ({\n title,\n icon,\n waitReason,\n cancelLabel,\n onCancel,\n children,\n}) => (\n \n {children}\n \n \n \n \n {waitReason}\n \n \n \n \n);\n","import React from \"react\";\nimport { Text, Box } from \"theme-ui\";\n\nimport { WaitingDialog } from \"./WaitingDialog\";\n\ntype ConnectionConfirmationDialogProps = {\n title: string;\n icon?: React.ReactNode;\n onCancel: () => void;\n};\n\nexport const ConnectionConfirmationDialog: React.FC = ({\n title,\n icon,\n onCancel,\n children\n}) => (\n \n Waiting for connection confirmation...\n This won’t cost you any Pulse\n \n }\n cancelLabel=\"Cancel connection\"\n onCancel={onCancel}\n >\n {children}\n \n);\n","import React from \"react\";\n\nexport const MetaMaskIcon: React.FC = () => (\n \n MetaMask extension icon\n \n \n \n \n \n);\n","import React from \"react\";\nimport { Container } from \"theme-ui\";\n\nexport const Modal: React.FC = ({ children }) => (\n \n {children}\n \n);\n","export default __webpack_public_path__ + \"static/media/barista-logo.7bdbc0b0.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { ReactNode } from \"react\";\nimport { Box, Flex, Image, Text } from \"theme-ui\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\nimport SafeLocker from \"../assets/images/safe-locker.png\";\nimport barista1 from \"../assets/images/barista-1.png\";\nimport barista2 from \"../assets/images/barista-2.png\";\nimport barista3 from \"../assets/images/barista-3.png\";\nimport YieldLogo from \"../assets/images/yield-farming.png\";\nimport WeighingBalance from \"../assets/images/weighing-balance.png\";\n\ntype Props = {\n children: ReactNode;\n};\n\nfunction StaticHomePage({ children }: Props) {\n return (\n \n \n \n\n \n Automated Rebalancing
for Liquid Loans\n
\n {children}\n \n \n \n \n Stabilize Liquid Loans Protocol\n \n \n Barista and its novel Backstop AMM B.AMM automates the rebalancing\n of Liquid Loans Stability Pool to maintain its strength.\n             \n \n \n \n \n \n Earn Passive Yield on Your USOL\n \n \n By using Barista to deposit your USDL into the Liquid Loans\n Stability Pool, you can save the manual operation of selling your\n accumulated PLS back to USDL every time a liquidation is taking\n place.\n \n \n \n \n Using Barista Protocol\n \n The integration of Liquid Loans is a step forward towards a more\n stablized DeFi ecosystem. Barista helps the Liquid Loans Stability Pool \n to maintain it's strength.\n \n \n \n \n \n );\n}\n\nexport default StaticHomePage;\n","import React, { useEffect, useReducer } from \"react\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { AbstractConnector } from \"@web3-react/abstract-connector\";\nimport { Button, Text, Flex, Link, Box, Image } from \"theme-ui\";\n\nimport { injectedConnector } from \"../connectors/injectedConnector\";\nimport { useAuthorizedConnection } from \"../hooks/useAuthorizedConnection\";\n\nimport { RetryDialog } from \"./RetryDialog\";\nimport { ConnectionConfirmationDialog } from \"./ConnectionConfirmationDialog\";\nimport { MetaMaskIcon } from \"./MetaMaskIcon\";\nimport { Icon } from \"./Icon\";\nimport { Modal } from \"./Modal\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\nimport SafeLocker from \"../assets/images/safe-locker.png\";\nimport YieldLogo from \"../assets/images/yield-farming.png\";\nimport WeighingBalance from \"../assets/images/weighing-balance.png\";\nimport StaticHomePage from \"../pages/StaticHomePage\";\n\ninterface MaybeHasMetaMask {\n ethereum?: {\n isMetaMask?: boolean;\n };\n}\n\ntype ConnectionState =\n | { type: \"inactive\" }\n | {\n type:\n | \"activating\"\n | \"active\"\n | \"rejectedByUser\"\n | \"alreadyPending\"\n | \"failed\";\n connector: AbstractConnector;\n };\n\ntype ConnectionAction =\n | { type: \"startActivating\"; connector: AbstractConnector }\n | { type: \"fail\"; error: Error }\n | { type: \"finishActivating\" | \"retry\" | \"cancel\" | \"deactivate\" };\n\nconst connectionReducer: React.Reducer = (\n state,\n action\n) => {\n switch (action.type) {\n case \"startActivating\":\n return {\n type: \"activating\",\n connector: action.connector,\n };\n case \"finishActivating\":\n return {\n type: \"active\",\n connector:\n state.type === \"inactive\" ? injectedConnector : state.connector,\n };\n case \"fail\":\n if (state.type !== \"inactive\") {\n return {\n type: action.error.message.match(/user rejected/i)\n ? \"rejectedByUser\"\n : action.error.message.match(/already pending/i)\n ? \"alreadyPending\"\n : \"failed\",\n connector: state.connector,\n };\n }\n break;\n case \"retry\":\n if (state.type !== \"inactive\") {\n return {\n type: \"activating\",\n connector: state.connector,\n };\n }\n break;\n case \"cancel\":\n return {\n type: \"inactive\",\n };\n case \"deactivate\":\n return {\n type: \"inactive\",\n };\n }\n\n console.warn(\"Ignoring connectionReducer action:\");\n console.log(action);\n console.log(\" in state:\");\n console.log(state);\n\n return state;\n};\n\nconst detectMetaMask = () =>\n (window as MaybeHasMetaMask).ethereum?.isMetaMask ?? false;\n\ntype WalletConnectorProps = {\n loader?: React.ReactNode;\n};\n\nexport const WalletConnector: React.FC = ({\n children,\n loader,\n}) => {\n const { activate, deactivate, active, error } = useWeb3React();\n const triedAuthorizedConnection = useAuthorizedConnection();\n const [connectionState, dispatch] = useReducer(connectionReducer, {\n type: \"inactive\",\n });\n const isMetaMask = detectMetaMask();\n\n useEffect(() => {\n if (error) {\n dispatch({ type: \"fail\", error });\n deactivate();\n }\n }, [error, deactivate]);\n\n useEffect(() => {\n if (active) {\n dispatch({ type: \"finishActivating\" });\n } else {\n dispatch({ type: \"deactivate\" });\n }\n }, [active]);\n\n if (!triedAuthorizedConnection) {\n return <>{loader};\n }\n\n if (connectionState.type === \"active\") {\n return <>{children};\n }\n\n return (\n <>\n \n {\n dispatch({\n type: \"startActivating\",\n connector: injectedConnector,\n });\n activate(injectedConnector);\n }}\n >\n {isMetaMask ? (\n <>\n \n Connect\n \n ) : (\n <>\n \n Connect wallet\n \n )}\n \n \n\n {connectionState.type === \"failed\" && (\n \n dispatch({ type: \"cancel\" })}\n onRetry={() => {\n dispatch({ type: \"retry\" });\n activate(connectionState.connector);\n }}\n >\n \n You might need to install MetaMask or use a different browser.\n \n \n Learn more \n \n \n \n )}\n\n {connectionState.type === \"activating\" && (\n \n : \n }\n onCancel={() => dispatch({ type: \"cancel\" })}\n >\n \n Confirm the request that's just appeared.\n {isMetaMask ? (\n <>\n {\" \"}\n If you can't see a request, open your MetaMask extension\n via your browser.\n \n ) : (\n <>\n {\" \"}\n If you can't see a request, you might have to open your\n wallet.\n \n )}\n \n \n \n )}\n\n {connectionState.type === \"rejectedByUser\" && (\n \n dispatch({ type: \"cancel\" })}\n onRetry={() => {\n dispatch({ type: \"retry\" });\n activate(connectionState.connector);\n }}\n >\n \n To use Liquid Loans, you need to connect your Pulseeum account.\n \n \n \n )}\n\n {connectionState.type === \"alreadyPending\" && (\n \n dispatch({ type: \"cancel\" })}\n onRetry={() => {\n dispatch({ type: \"retry\" });\n activate(connectionState.connector);\n }}\n >\n \n Please check your wallet and accept the connection request before\n retrying.\n \n \n \n )}\n \n );\n};\n","import { useState, useEffect } from \"react\";\nimport { useWeb3React } from \"@web3-react/core\";\n\nimport { injectedConnector } from \"../connectors/injectedConnector\";\n\n/**\n * React hook that tries to activate the InjectedConnector if the app's already authorized in the\n * browser's wallet (in the case of dApp-enabled browsers) or its wallet extension (e.g. MetaMask).\n *\n * Example: user has a browser with the MetaMask extension. MetaMask injects an Pulseeum provider\n * into the window object. We check via InjectedConnector if our app is already authorized to use\n * the wallet through this provider, and in that case we try to activate the connector.\n *\n * @returns true when finished trying to activate the InjectedConnector, false otherwise\n */\n\nexport function useAuthorizedConnection(): boolean {\n const { activate, active } = useWeb3React();\n const [tried, setTried] = useState(false);\n\n useEffect(() => {\n const tryToActivateIfAuthorized = async () => {\n try {\n if (await injectedConnector.isAuthorized()) {\n await activate(injectedConnector, undefined, true);\n } else {\n throw new Error(\"Unauthorized\");\n }\n } catch {\n setTried(true);\n }\n };\n tryToActivateIfAuthorized();\n }, [activate]);\n\n useEffect(() => {\n if (active) {\n setTried(true);\n }\n }, [active]);\n\n return tried;\n}\n","import React, { useState, useRef } from \"react\";\nimport { VirtualElement } from \"@popperjs/core\";\nimport { usePopper } from \"react-popper\";\nimport { Card } from \"theme-ui\";\n\nexport type Hoverable = {\n onMouseOver: () => void;\n onMouseOut: () => void;\n ref: (instance: Element | VirtualElement | null) => void;\n};\n\nexport type TooltipProps = {\n children: C;\n message: string;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n\nexport function Tooltip>({\n children,\n message,\n placement = \"top\"\n}: TooltipProps) {\n const event = useRef<\"over\" | \"out\">();\n const [show, setShow] = useState(false);\n const [referenceElement, setReferenceElement] = useState();\n const [popperElement, setPopperElement] = useState();\n\n const { styles, attributes } = usePopper(referenceElement, popperElement, { placement });\n\n return (\n <>\n {React.cloneElement(React.Children.only(children), {\n // Use a debounced onMouseOver/onMouseOut instead of onMouseEnter/onMouseLeave to\n // work around https://github.com/facebook/react/issues/10109\n\n onMouseOver: () => {\n event.current = \"over\";\n\n if (!show) {\n setShow(true);\n }\n },\n\n onMouseOut: () => {\n event.current = \"out\";\n\n setTimeout(() => {\n if (event.current === \"out\") {\n setShow(false);\n }\n }, 0);\n },\n\n ref: setReferenceElement\n })}\n\n {show && (\n \n {message}\n \n )}\n \n );\n}\n","import React, { useState, useContext, useEffect, useCallback } from \"react\";\nimport { Flex, Text, Box } from \"theme-ui\";\nimport {\n Provider,\n TransactionResponse,\n TransactionReceipt,\n} from \"@ethersproject/abstract-provider\";\nimport { hexDataSlice, hexDataLength } from \"@ethersproject/bytes\";\nimport { defaultAbiCoder } from \"@ethersproject/abi\";\n\nimport {\n buildStyles,\n CircularProgressbarWithChildren,\n} from \"react-circular-progressbar\";\nimport \"react-circular-progressbar/dist/styles.css\";\n\nimport {\n EthersTransactionOverrides,\n EthersTransactionCancelledError,\n} from \"@liquidloans/lib-ethers\";\nimport {\n SentLiquidLoansTransaction,\n LiquidLoansReceipt,\n} from \"@liquidloans/lib-base\";\n\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\n\nimport { Icon } from \"./Icon\";\nimport { Tooltip, TooltipProps, Hoverable } from \"./Tooltip\";\n\nconst strokeWidth = 10;\n\nconst circularProgressbarStyle = {\n strokeLinecap: \"butt\",\n pathColor: \"white\",\n trailColor: \"rgba(255, 255, 255, 0.33)\",\n};\n\nconst slowProgress = {\n strokeWidth,\n styles: buildStyles({\n ...circularProgressbarStyle,\n pathTransitionDuration: 30,\n }),\n};\n\nconst fastProgress = {\n strokeWidth,\n styles: buildStyles({\n ...circularProgressbarStyle,\n pathTransitionDuration: 0.75,\n }),\n};\n\ntype TransactionIdle = {\n type: \"idle\";\n};\n\ntype TransactionFailed = {\n type: \"failed\";\n id: string;\n error: Error;\n};\n\ntype TransactionWaitingForApproval = {\n type: \"waitingForApproval\";\n id: string;\n};\n\ntype TransactionCancelled = {\n type: \"cancelled\";\n id: string;\n};\n\ntype TransactionWaitingForConfirmations = {\n type: \"waitingForConfirmation\";\n id: string;\n tx: SentTransaction;\n};\n\ntype TransactionConfirmed = {\n type: \"confirmed\";\n id: string;\n};\n\ntype TransactionConfirmedOneShot = {\n type: \"confirmedOneShot\";\n id: string;\n};\n\ntype TransactionState =\n | TransactionIdle\n | TransactionFailed\n | TransactionWaitingForApproval\n | TransactionCancelled\n | TransactionWaitingForConfirmations\n | TransactionConfirmed\n | TransactionConfirmedOneShot;\n\nconst TransactionContext = React.createContext<\n [TransactionState, (state: TransactionState) => void] | undefined\n>(undefined);\n\nexport const TransactionProvider: React.FC = ({ children }) => {\n const transactionState = useState({ type: \"idle\" });\n return (\n \n {children}\n \n );\n};\n\nconst useTransactionState = () => {\n const transactionState = useContext(TransactionContext);\n\n if (!transactionState) {\n throw new Error(\n \"You must provide a TransactionContext via TransactionProvider\"\n );\n }\n\n return transactionState;\n};\n\nexport const useMyTransactionState = (\n myId: string | RegExp\n): TransactionState => {\n const [transactionState] = useTransactionState();\n\n return transactionState.type !== \"idle\" &&\n (typeof myId === \"string\"\n ? transactionState.id === myId\n : transactionState.id.match(myId))\n ? transactionState\n : { type: \"idle\" };\n};\n\nconst hasMessage = (error: unknown): error is { message: string } =>\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof (error as { message: unknown }).message === \"string\";\n\ntype ButtonlikeProps = {\n disabled?: boolean;\n variant?: string;\n onClick?: () => void;\n};\n\ntype SentTransaction = SentLiquidLoansTransaction<\n TransactionResponse,\n LiquidLoansReceipt\n>;\n\nexport type TransactionFunction = (\n overrides?: EthersTransactionOverrides\n) => Promise;\n\ntype TransactionProps = {\n id: string;\n tooltip?: string;\n tooltipPlacement?: TooltipProps[\"placement\"];\n showFailure?: \"asTooltip\" | \"asChildText\";\n requires?: readonly (readonly [boolean, string])[];\n send: TransactionFunction;\n children: C;\n};\n\nexport const useTransactionFunction = (\n id: string,\n send: TransactionFunction\n): [\n sendTransaction: () => Promise,\n transactionState: TransactionState\n] => {\n const [transactionState, setTransactionState] = useTransactionState();\n\n const sendTransaction = useCallback(async () => {\n setTransactionState({ type: \"waitingForApproval\", id });\n\n try {\n const tx = await send();\n\n setTransactionState({\n type: \"waitingForConfirmation\",\n id,\n tx,\n });\n } catch (error) {\n if (\n hasMessage(error) &&\n error.message.includes(\"User denied transaction signature\")\n ) {\n setTransactionState({ type: \"cancelled\", id });\n } else {\n console.error(error);\n\n setTransactionState({\n type: \"failed\",\n id,\n error: new Error(\"Failed to send transaction (try again)\"),\n });\n }\n }\n }, [send, id, setTransactionState]);\n\n return [sendTransaction, transactionState];\n};\n\nexport function Transaction<\n C extends React.ReactElement\n>({\n id,\n tooltip,\n tooltipPlacement,\n showFailure,\n requires,\n send,\n children,\n}: TransactionProps) {\n const [sendTransaction, transactionState] = useTransactionFunction(id, send);\n const trigger = React.Children.only(children);\n\n const failureReasons = (requires || [])\n .filter(([requirement]) => !requirement)\n .map(([, reason]) => reason);\n\n if (\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\"\n ) {\n failureReasons.push(\"You must wait for confirmation\");\n }\n\n showFailure =\n failureReasons.length > 0\n ? showFailure ?? (tooltip ? \"asTooltip\" : \"asChildText\")\n : undefined;\n\n const clonedTrigger =\n showFailure === \"asChildText\"\n ? React.cloneElement(\n trigger,\n {\n disabled: true,\n variant: \"danger\",\n },\n failureReasons[0]\n )\n : showFailure === \"asTooltip\"\n ? React.cloneElement(trigger, { disabled: true })\n : React.cloneElement(trigger, { onClick: sendTransaction });\n\n if (showFailure === \"asTooltip\") {\n tooltip = failureReasons[0];\n }\n\n return tooltip ? (\n <>\n \n {clonedTrigger}\n \n \n ) : (\n clonedTrigger\n );\n}\n\n// Doesn't work on Kovan:\n// https://github.com/MetaMask/metamask-extension/issues/5579\nconst tryToGetRevertReason = async (\n provider: Provider,\n tx: TransactionReceipt\n) => {\n try {\n const result = await provider.call(tx, tx.blockNumber);\n\n if (\n hexDataLength(result) % 32 === 4 &&\n hexDataSlice(result, 0, 4) === \"0x08c379a0\"\n ) {\n return (\n defaultAbiCoder.decode([\"string\"], hexDataSlice(result, 4)) as [string]\n )[0];\n }\n } catch {\n return undefined;\n }\n};\n\nconst Donut = React.memo(\n CircularProgressbarWithChildren,\n ({ value: prev }, { value: next }) => prev === next\n);\n\ntype TransactionProgressDonutProps = {\n state: TransactionState[\"type\"];\n};\n\nconst TransactionProgressDonut: React.FC = ({\n state,\n}) => {\n const [value, setValue] = useState(0);\n const maxValue = 1;\n\n useEffect(() => {\n if (state === \"confirmed\") {\n setTimeout(() => setValue(maxValue), 40);\n } else {\n setTimeout(() => setValue(maxValue * 0.67), 20);\n }\n }, [state]);\n\n return state === \"confirmed\" ? (\n \n \n \n ) : state === \"failed\" || state === \"cancelled\" ? (\n \n \n \n ) : (\n \n \n \n );\n};\n\nexport const TransactionMonitor: React.FC = () => {\n const { provider } = useLiquidLoans();\n const [transactionState, setTransactionState] = useTransactionState();\n\n const id = transactionState.type !== \"idle\" ? transactionState.id : undefined;\n const tx =\n transactionState.type === \"waitingForConfirmation\"\n ? transactionState.tx\n : undefined;\n\n useEffect(() => {\n if (id && tx) {\n let cancelled = false;\n let finished = false;\n\n const txHash = tx.rawSentTransaction.hash;\n\n const waitForConfirmation = async () => {\n try {\n const receipt = await tx.waitForReceipt();\n\n if (cancelled) {\n return;\n }\n\n const { confirmations } = receipt.rawReceipt;\n const blockNumber =\n receipt.rawReceipt.blockNumber + confirmations - 1;\n console.log(\n `Block #${blockNumber} ${confirmations}-confirms tx ${txHash}`\n );\n console.log(`Finish monitoring tx ${txHash}`);\n finished = true;\n\n if (receipt.status === \"succeeded\") {\n console.log(`${receipt}`);\n\n setTransactionState({\n type: \"confirmedOneShot\",\n id,\n });\n } else {\n const reason = await tryToGetRevertReason(\n provider,\n receipt.rawReceipt\n );\n\n if (cancelled) {\n return;\n }\n\n console.error(`Tx ${txHash} failed`);\n if (reason) {\n console.error(`Revert reason: ${reason}`);\n }\n\n setTransactionState({\n type: \"failed\",\n id,\n error: new Error(reason ? `Reverted: ${reason}` : \"Failed\"),\n });\n }\n } catch (rawError) {\n if (cancelled) {\n return;\n }\n\n finished = true;\n\n if (rawError instanceof EthersTransactionCancelledError) {\n console.log(`Cancelled tx ${txHash}`);\n setTransactionState({ type: \"cancelled\", id });\n } else {\n console.error(`Failed to get receipt for tx ${txHash}`);\n console.error(rawError);\n\n setTransactionState({\n type: \"failed\",\n id,\n error: new Error(\"Failed\"),\n });\n }\n }\n };\n\n console.log(`Start monitoring tx ${txHash}`);\n waitForConfirmation();\n\n return () => {\n if (!finished) {\n setTransactionState({ type: \"idle\" });\n console.log(`Cancel monitoring tx ${txHash}`);\n cancelled = true;\n }\n };\n }\n }, [provider, id, tx, setTransactionState]);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\" && id) {\n // hack: the txn confirmed state lasts 5 seconds which blocks other states, review with Dani\n setTransactionState({ type: \"confirmed\", id });\n } else if (\n transactionState.type === \"confirmed\" ||\n transactionState.type === \"failed\" ||\n transactionState.type === \"cancelled\"\n ) {\n let cancelled = false;\n\n setTimeout(() => {\n if (!cancelled) {\n setTransactionState({ type: \"idle\" });\n }\n }, 5000);\n\n return () => {\n cancelled = true;\n };\n }\n }, [transactionState.type, setTransactionState, id]);\n\n if (\n transactionState.type === \"idle\" ||\n transactionState.type === \"waitingForApproval\"\n ) {\n return null;\n }\n\n return (\n \n \n \n \n\n \n {transactionState.type === \"waitingForConfirmation\"\n ? \"Waiting for confirmation\"\n : transactionState.type === \"cancelled\"\n ? \"Cancelled\"\n : transactionState.type === \"failed\"\n ? transactionState.error.message\n : \"Confirmed\"}\n \n \n );\n};\n","import { Theme, ThemeUIStyleObject } from \"theme-ui\";\n// import cardBgImage from '/bg/card-bg.png'\nimport { auto } from \"@popperjs/core\";\n\nconst baseColors = {\n blue: \"#1542cd\",\n purple: \"#745ddf\",\n cyan: \"#2eb6ea\",\n green: \"#28c081\",\n yellow: \"#fd9d28\",\n red: \"#dc2c10\",\n lightRed: \"#ff755f\"\n};\n\nconst colors = {\n primary: baseColors.blue,\n secondary: baseColors.purple,\n accent: baseColors.cyan,\n pupleButton:'radial-gradient(50% 50% at 50% 50%, #651A91 0%, #5A1B7E 100%)',\n success: baseColors.green,\n warning: baseColors.yellow,\n danger: baseColors.red,\n dangerHover: baseColors.lightRed,\n info: baseColors.blue,\n invalid: \"pink\",\n main_bg:'#010001',\n text: \"#FFFFFF\",\n background: \"black\",\n muted: \"#eaebed\",\n barista_red: \"#e80368\",\n barista_blue: '#5578ff',\n barista_yellow: '#ffbb2c',\n barista_green:'#29cc61'\n};\n\nconst buttonBase: ThemeUIStyleObject = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \":enabled\": { cursor: \"pointer\" }\n};\n\nconst button: ThemeUIStyleObject = {\n ...buttonBase,\n\n px: \"32px\",\n py: \"12px\",\n\n color: \"white\",\n border: 1,\n\n fontWeight: \"bold\",\n\n \":disabled\": {\n opacity: 0.5\n }\n};\n\nconst buttonOutline = (color: string, hoverColor: string): ThemeUIStyleObject => ({\n color,\n borderColor: color,\n background: \"none\",\n\n \":enabled:hover\": {\n color: \"background\",\n bg: hoverColor,\n borderColor: hoverColor\n }\n});\n\nconst iconButton: ThemeUIStyleObject = {\n ...buttonBase,\n\n padding: 0,\n width: \"40px\",\n height: \"40px\",\n\n background: \"none\",\n\n \":disabled\": {\n color: \"text\",\n opacity: 0.25\n }\n};\n\nconst cardHeadingFontSize = 18.7167;\n\nconst cardGapX = [0, 3, 4];\nconst cardGapY = [3, 3, 4];\n\nconst card: ThemeUIStyleObject = {\n position: \"relative\",\n mt: cardGapY,\n border: 1,\n boxShadow: [1, null, 2]\n};\n\nconst infoCard: ThemeUIStyleObject = {\n ...card,\n\n padding: 3,\n\n borderColor: \"rgba(122,199,240,0.4)\",\n background: \"linear-gradient(200deg, #d4d9fc, #cae9f9)\",\n\n h2: {\n mb: 2,\n fontSize: cardHeadingFontSize\n }\n};\n\nconst formBase: ThemeUIStyleObject = {\n display: \"block\",\n width: \"auto\",\n flexShrink: 0,\n padding: 2,\n fontSize: 3\n};\n\nconst formCell: ThemeUIStyleObject = {\n ...formBase,\n\n bg: \"background\",\n border: 1,\n borderColor: \"muted\",\n borderRadius: 0,\n boxShadow: [1, 2]\n};\n\nconst overlay: ThemeUIStyleObject = {\n position: \"absolute\",\n\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\"\n};\n\nconst modalOverlay: ThemeUIStyleObject = {\n position: \"fixed\",\n\n left: 0,\n top: 0,\n width: \"100vw\",\n height: \"100vh\"\n};\n\nconst headerGradient: ThemeUIStyleObject = {\n background: colors.main_bg\n};\n\nconst theme: Theme = {\n breakpoints: [\"48em\", \"52em\", \"74em\"],\n\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n\n fonts: {\n body: [\n \"Iceland\",\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n '\"Segoe UI\"',\n \"Roboto\",\n '\"Helvetica Neue\"',\n \"sans-serif\"\n ].join(\", \"),\n heading: \"inherit\",\n monospace: \"Menlo, monospace\"\n },\n\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 96],\n\n fontWeights: {\n body: 400,\n heading: 600,\n\n light: 200,\n medium: 500,\n bold: 600\n },\n\n lineHeights: {\n body: 1.5,\n heading: 1.25\n },\n\n colors,\n\n borders: [0, \"1px solid\", \"2px solid\"],\n\n shadows: [\"0\", \"0px 4px 8px rgba(41, 49, 71, 0.1)\", \"0px 8px 16px rgba(41, 49, 71, 0.1)\"],\n\n text: {\n address: {\n fontFamily: 'Iceland',\n fontSize: 1\n }\n },\n\n buttons: {\n primary: {\n ...button,\n // border:'none',\n border: \"2px solid transparent\",\n background: colors.pupleButton,\n // borderColor: \"primary\",\n borderRadius:'10px',\n \":enabled:hover\": {\n // bg: \"secondary\",\n // borderColor: \"secondary\"\n background: [\n \n \"linear-gradient(#2B093F, #2B093F) padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box\",\n ],\n borderRadius: \"10px\",\n border: \"2px solid transparent\",\n },\n width:'100%'\n },\n connect_wallet: {\n ...button,\n // border:'none',\n \n border: \"2px solid transparent\",\n background: colors.pupleButton,\n // borderColor: \"primary\",\n borderRadius:'10px',\n \":enabled:hover\": {\n // bg: \"secondary\",\n // borderColor: \"secondary\"\n background: [\n \n \"linear-gradient(#2B093F, #2B093F) padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box\",\n ],\n borderRadius: \"10px\",\n border: \"2px solid transparent\",\n },\n },\n liquidate: {\n ...button,\n border:'none',\n background: 'gray',\n // borderColor: \"primary\",\n borderRadius:'18px',\n \":enabled:hover\": {\n bg: \"red\",\n borderColor: \"red\"\n }\n },\n\n outline: {\n ...button,\n ...buttonOutline(\"primary\", \"secondary\")\n },\n\n cancel: {\n ...button,\n ...buttonOutline(\"text\", \"text\"),\n\n opacity: 0.8\n },\n\n danger: {\n ...button,\n\n bg: \"danger\",\n borderColor: \"danger\",\n\n \":enabled:hover\": {\n bg: \"dangerHover\",\n borderColor: \"dangerHover\"\n }\n },\n\n icon: {\n ...iconButton,\n color: \"primary\",\n \":enabled:hover\": { color: \"accent\" }\n },\n\n menu_icon: {\n ...iconButton,\n color: \"grey\",\n \":enabled:hover\": { color: \"grey\" }\n },\n\n dangerIcon: {\n ...iconButton,\n color: \"danger\",\n \":enabled:hover\": { color: \"dangerHover\" }\n },\n\n titleIcon: {\n ...iconButton,\n mr: 0,\n ml:'auto',\n color: \"text\",\n \":enabled:hover\": { color: \"success\" }\n }\n },\n\n \n\n grids: {\n protocol_performance: {\n background:\n `url(\"/bg/card-bg.png\") `,\n borderRadius: \"10px\",\n \n py: '10px',\n px:'20px'\n \n },\n },\n\n cards: {\n primary: {\n \n },\n\n main_card: {\n \n position:'relative',\n background:\n `url(\"/bg/card-bg.png\") padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box`,\n borderRadius: \"10px\",\n border: \"1px solid transparent\",\n },\n\n second_card: {\n pb: [2, 3],\n background:`url(\"/bg/card-bg.png\") padding-box`,\n borderRadius: \"10px\",\n \n },\n\n liquidation_card: {\n my:'10px',\n background:\n [\"black\",`linear-gradient(black,black) padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box`],\n borderRadius: [\"0px\",\"10px\"],\n border: [\"inherit\", \"1px solid transparent\"],\n borderTop:[\"none\",'1px solid transparent'],\n boxShadow:\"0px -10px 10px -10px rgba(128, 0, 128, 0.5)\"\n // border: \"1px solid transparent\",\n },\n liquidation_second_card: {\n background:`url(\"/bg/card-bg.png\") padding-box`,\n },\n\n \n\n\n \n\n info: {\n ...infoCard,\n\n display: [\"none\", \"block\"]\n },\n\n infoPopup: {\n ...infoCard,\n\n position: \"fixed\",\n top: 0,\n right: 3,\n left: 3,\n mt: \"72px\",\n height: \"80%\",\n overflowY: \"scroll\"\n },\n\n tooltip: {\n padding: '12px',\n wordWrap: 'break-word',\n // border: 1,\n // borderColor: \"muted\",\n borderRadius: \"8px\",\n background: '#200320',\n \nboxShadow: '0px 2px 2px -2px rgba(16, 24, 40, 0.03), 0px 4px 4px -4px rgba(16, 24, 40, 0.08)',\n \nborder:'1px solid #4F0E75',\n fontSize: '12px',\n color: \"white\",\n fontWeight: \"body\",\n zIndex: 1\n }\n },\n\n forms: {\n label: {\n ...formBase\n },\n\n unit: {\n ...formCell,\n\n textAlign: \"center\",\n bg: \"muted\"\n },\n\n input: {\n ...formCell,\n\n flex: 1\n },\n\n editor: {\n // background:'red'\n }\n },\n\n layout: {\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"stretch\",\n\n position: [\"relative\", \"relative\"],\n width: \"100%\",\n top: 0,\n zIndex: 1,\n\n px: ['10px', null,null,'10px'],\n py: [2, \"12px\", \"12px\"],\n\n ...headerGradient,\n boxShadow: [1, \"none\"]\n },\n\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n mt: cardGapY,\n px: 3,\n minHeight: \"72px\",\n\n bg: \"muted\"\n },\n\n main: {\n width: \"100%\",\n // maxWidth: \"912px\",\n mx: \"auto\",\n mt: [0, 0],\n // mb: [\"40px\", \"40px\"],\n \n // px: cardGapX,\n background: colors.main_bg,\n \n },\n\n columns: {\n \n display: \"flex\",\n flexWrap: \"wrap\",\n justifyItems: \"center\",\n height:'100%',\n pb:'20px'\n },\n\n left: {\n // pr: cardGapX,\n pt: [0, 3, '60px'],\n pr: [0, 3, '20px'],\n pl: [0, 3, '60px'],\n pb:[0, 3, '60px'],\n width: [\"100%\", \"50%\"]\n },\n\n right: {\n // px:[0, 3, '20px'],\n pt: [0, 3, '60px'],\n pr: [0, 3, '60px'],\n pl: [0, 3, '20px'],\n pb:[0, 3, '60px'],\n width: [\"100%\", \"50%\"]\n },\n center: {\n maxWidth: '1800px',\n mx:auto,\n \n pt: ['10px', '10px', '20px'],\n px: [0, 3, '60px'],\n \n width: [\"100%\", \"100%\"]\n },\n\n bottom: {\n maxWidth: '1800px',\n mx:auto,\n \n pt: ['20px', '10px'],\n px: ['20px', '10px', '60px'],\n pb:[0, 3, 0],\n width: [\"100%\", \"100%\"]\n },\n\n actions: {\n justifyContent: \"center\",\n \n mt: 2,\n\n button: {\n mx: 2\n }\n },\n liquidation: {\n justifyContent: \"flex-end\",\n mt: 2,\n ml: 'auto',\n mr:0,\n\n button: {\n ml: 'auto',\n mr:0\n }\n },\n\n disabledOverlay: {\n // ...overlay,\n position: \"absolute\",\n\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n zIndex:10,\n bg: \"rgba(0, 0, 0, 0.8)\"\n },\n\n modalOverlay: {\n ...modalOverlay,\n\n bg: \"rgba(0, 0, 0, 0.7)\",\n\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n\n modal: {\n // background: 'rgba(51, 46, 46,1)',\n background:\n `url(\"/bg/card-bg.png\") padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box`,\n borderRadius: \"10px\",\n border: \"1px solid transparent\",\n padding: 3,\n width: [\"100%\", \"40em\"]\n },\n\n infoOverlay: {\n ...modalOverlay,\n\n display: [\"block\", null,null,\"none\"],\n\n bg: \"rgba(0, 0, 0, 0.7)\"\n },\n\n infoMessage: {\n display: \"flex\",\n justifyContent: \"center\",\n m: 3,\n alignItems: \"center\",\n minWidth: \"128px\"\n },\n\n sidenav: {\n display: [\"flex\", null,null,\"none\"],\n flexDirection: \"column\",\n // px: ['20px',0],\n m: 0,\n borderColor: \"muted\",\n // mr: \"40vw\",\n height: \"100%\",\n ...headerGradient\n },\n sidebar: {\n background: colors.main_bg,\n position: ['static',null,null,'fixed'],\n top: 0,\n left: 0,\n bottom:0,\n overflowY:'scroll'\n \n },\n\n badge: {\n border: 0,\n borderRadius: 3,\n p: 1,\n px: 2,\n backgroundColor: \"muted\",\n color: \"slate\",\n fontSize: 1,\n fontWeight: \"body\"\n }\n },\n\n styles: {\n root: {\n fontFamily: \"body\",\n lineHeight: \"body\",\n fontWeight: \"body\",\n\n height: \"100%\",\n\n \"#root\": {\n height: \"100%\"\n }\n },\n \n\n a: {\n color: \"primary\",\n \":hover\": { color: \"accent\" },\n textDecoration: \"none\",\n fontWeight: \"bold\"\n }\n },\n\n links: {\n nav: {\n px: 2,\n py: 2,\n fontWeight: \"medium\",\n fontSize: 2,\n textTransform: \"none\",\n letterSpacing: \"2px\",\n width: [\"100%\", \"auto\"],\n mt: [3, \"auto\"],\n \n \n }\n }\n};\n\nexport default theme;\n","import { hexlify } from \"@ethersproject/bytes\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport { Decimal, Decimalish } from \"@liquidloans/lib-base\";\n\nexport class DisposableWalletProvider {\n private readonly url: string;\n private id: number = 0;\n\n private readonly wallet: Wallet;\n private readonly funderWallet: Wallet;\n\n private readonly ethAmount: Decimal;\n private haveFunded = false;\n\n constructor(url: string, funderPrivateKey: string, ethAmount: Decimalish = 100) {\n this.url = url;\n this.wallet = Wallet.createRandom();\n this.funderWallet = new Wallet(funderPrivateKey);\n this.ethAmount = Decimal.from(ethAmount);\n }\n\n private findWallet(address: string) {\n const wallet = [this.wallet, this.funderWallet].find(\n wallet => wallet.address.toLowerCase() === address.toLowerCase()\n );\n\n if (!wallet) {\n throw new Error(`Unknow account ${address}`);\n }\n\n return wallet;\n }\n\n private async fund() {\n return this.send(\"eth_sendTransaction\", [\n {\n from: this.funderWallet.address,\n to: this.wallet.address,\n value: this.ethAmount.hex,\n gas: hexlify(21000)\n }\n ]);\n\n // TODO maybe wait for tx to be mined (not a problem on devchains though)\n }\n\n async send(method: string, params: any[]): Promise {\n if (!this.haveFunded) {\n this.haveFunded = true;\n await this.fund();\n }\n\n switch (method) {\n case \"eth_accounts\":\n case \"eth_requestAccounts\":\n return [this.wallet.address];\n\n case \"eth_sendTransaction\":\n return this.send(\n \"eth_sendRawTransaction\",\n await Promise.all(\n params.map(async ({ from, nonce, gas, ...rest }) => {\n if (nonce === undefined) {\n nonce = await this.send(\"eth_getTransactionCount\", [from]);\n }\n\n return this.findWallet(from).signTransaction({\n from,\n nonce,\n ...(gas !== undefined ? { gasLimit: gas } : {}),\n ...rest\n });\n })\n )\n );\n }\n\n //console.log({ method, params });\n\n const response = await fetch(this.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n method: method,\n params: params,\n id: this.id++,\n jsonrpc: \"2.0\"\n })\n });\n\n const json = await response.json();\n\n //console.log(json);\n\n if (json.error) {\n const { message, ...rest } = json.error;\n const error = new Error(`${message} ${JSON.stringify(rest)}`);\n throw Object.assign(error, rest);\n }\n\n return json.result;\n }\n\n request({ method, params }: { method: string; params: any[] }) {\n return this.send(method, params);\n }\n}\n","import { NavLink as RouterLink, NavLinkProps as RouterLinkProps } from \"react-router-dom\";\nimport { NavLink as ThemeUINavLink, NavLinkProps as ThemeUILinkProps } from \"theme-ui\";\n\ntype CombinedProps = ThemeUILinkProps & RouterLinkProps<{}>;\n\nconst ExactLink: React.FC = props => {\n return ;\n};\n\nexport const Link: React.FC = props => {\n return ;\n};\n","import React from \"react\";\nimport { Box, Flex, Image } from \"theme-ui\";\nimport { Link } from \"./Link\";\nimport { Icon } from \"./Icon\";\nimport { ReactComponent as CustomIcon } from \"../assets/images/nav-icons/start-here.svg\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\n\ntype Props = {};\n\nconst link_style = {\n borderRadius: \"10px\",\n border: \"2px solid transparent\",\n color: \"grey\",\n\n \"&.active , :hover\": {\n color: \"white\",\n background: [\n \"#4F0E7585\",\n null,\n null,\n \"linear-gradient(black, black) padding-box,linear-gradient(90.21deg, #3E59A1 2.18%, #5E227D 20.74%, #C20C6E 38.5%, #EDC730 58.68%, #95C156 79.67%) border-box\",\n ],\n borderRadius: \"10px\",\n border: \"2px solid transparent\",\n \".rainbow-svg\": {\n fill: \"transparent\",\n stroke: \"url(#gradient)\",\n },\n },\n};\n\nfunction MenuNavLinks({}: Props) {\n const navLinks = [\n // { title: \"Start Here\", link: \"/\", icon: },\n { title: \"Borrow USDL\", link: \"/\", icon: },\n {\n title: \"Stability Pool\",\n link: \"/stability-pool\",\n icon: ,\n },\n { title: \"Staking Pool\", link: \"/staking-pool\", icon: },\n { title: \"Redemptions\", link: \"/redemptions\", icon: },\n { title: \"Liquidation\", link: \"/liquidation\", icon: },\n { title: \"Knowledge Base\", link: \"/knowledge\", icon: },\n ];\n return (\n \n {navLinks.map((item, i) => (\n \n \n {item.icon}\n

{item.title}

\n \n \n ))}\n \n );\n}\n\nexport default MenuNavLinks;\n\nconst StartHere = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst BorrowUSDL = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Liqiuidation = () => {\n return (\n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst StabilityPool = () => {\n return (\n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst StakingPool = () => {\n return (\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\nconst Tutorials = () => {\n return (\n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Redemption = () => {\n return (\n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { useState, useRef } from \"react\";\nimport { Box, Button, Container, Flex, Image } from \"theme-ui\";\nimport { Icon } from \"./Icon\";\nimport { LiquidLoansLogo } from \"./LiquidLoansLogo\";\nimport { Link } from \"./Link\";\nimport MenuNavLinks from \"./MenuNavLinks\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\n\nconst logoHeight = \"32px\";\n\nexport const SideNav: React.FC<{\n isVisible: boolean;\n setIsVisible: React.Dispatch>;\n}> = ({ isVisible, setIsVisible }) => {\n // const [isVisible, setIsVisible] = useState(false);\n const overlay = useRef(null);\n\n // if (!isVisible) {\n // return (\n // \n // );\n // }\n return (\n {\n if (e.target === overlay.current) {\n setIsVisible(true);\n }\n }}\n sx={{\n // display: isVisible ? 'block' : 'none',\n opacity: isVisible ? \"0\" : \"100%\",\n // width: isVisible ? \"0\" : \"100%\",\n transition: \"all 0.55s\",\n pointerEvents: isVisible ? \"none\" : \"auto\",\n }}\n >\n \n \n \n {/* \n setIsVisible(false)}>\n Dashboard\n Farm\n Risky Vaults\n Redemption\n */}\n \n \n );\n};\n","import React from \"react\";\nimport Tippy, { TippyProps } from \"@tippyjs/react\";\nimport { Icon } from \"./Icon\";\nimport { FontAwesomeIconProps } from \"@fortawesome/react-fontawesome\";\n\nexport type InfoIconProps = Pick &\n Pick & {\n tooltip: React.ReactNode;\n };\n\nexport const InfoIcon: React.FC = ({ placement = \"right\", tooltip, size = \"1x\" }) => {\n return (\n \n \n  \n \n \n \n );\n};\n","import React from \"react\";\nimport { Card, Flex, Text, useThemeUI } from \"theme-ui\";\n\nimport {\n PiBatteryVerticalEmptyBold,\n PiBatteryVerticalLowBold,\n PiBatteryVerticalMediumBold,\n PiBatteryVerticalHighBold,\n PiBatteryVerticalFullBold,\n} from \"react-icons/pi\";\nimport { LiquidLoansStoreState, Percent } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { InfoIcon } from \"./InfoIcon\";\n\ntype Props = {};\n\nvar TCR = 190;\n\nconst batterySize = 30;\n\nconst select = ({\n numberOfVaults,\n price,\n total,\n usdlInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLOAN,\n frontend,\n}: LiquidLoansStoreState) => ({\n numberOfVaults,\n price,\n total,\n usdlInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLOAN,\n kickbackRate: frontend.status === \"registered\" ? frontend.kickbackRate : null,\n});\n\ntype BatteryProps = {\n _tcr: number;\n};\nconst Battery: React.FC = ({ _tcr }) => {\n const theme = useThemeUI();\n\n if (_tcr > 200) {\n return (\n \n );\n } else if (_tcr > 150) {\n return (\n \n );\n } else if (_tcr > 120) {\n return (\n \n );\n } else if (_tcr > 50) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n};\n\nfunction Tcr({}: Props) {\n const {\n numberOfVaults,\n price,\n usdlInStabilityPool,\n total,\n borrowingRate,\n totalStakedLOAN,\n kickbackRate,\n } = useLiquidLoansSelector(select);\n\n const totalCollateralRatioPct = new Percent(total.collateralRatio(price));\n return (\n \n \n \n \n TCR{\" \"}\n \n {total.collateralRatioIsBelowCritical(price)\n ? \"(Recovery Mode)\"\n : \"(Normal Mode)\"}\n \n \n \n \n {totalCollateralRatioPct.prettify()}\n \n \n TCR = Total Collateral Ratio and is shown as:
\n
\n 1 red bar — less than 110% — recovery mode
2 orange —\n between 150% and 110% — recovery
3 yellow — between 200%\n and 150% — normal\n
4-6 green — above 200% — normal mode\n
\n
\n You can be liquidated below 150%. In order to help avoid\n liquidation in Normal Mode and Recovery Mode, it is strongly\n recommended that users keep their individual collateral ratio\n significantly above 150%.\n \n }\n />\n
\n
\n \n );\n}\n\nexport default Tcr;\n","export const COIN = \"USDL\";\nexport const GT = \"LOAN\";\nexport const LP = \"PLS/USDL LP\";\n","export default __webpack_public_path__ + \"static/media/loan-icon.130ccc10.svg\";","export default __webpack_public_path__ + \"static/media/usdl-icon.0ea0d98e.svg\";","export default __webpack_public_path__ + \"static/media/pls-icon.304d491e.svg\";","export default __webpack_public_path__ + \"static/media/bean-token.2b04414d.png\";","import axios, { AxiosError, AxiosResponse } from \"axios\";\n\ninterface SystemState {\n price: number;\n}\n\ninterface PricePLSResponse {\n globals: [\n {\n currentSystemState: SystemState;\n }\n ];\n}\n\ninterface Price24hAgoResponse {\n priceChanges: {\n systemStateAfter: SystemState;\n __typename: string;\n }[];\n}\n\ninterface TokenData {\n LOAN2PLS: number;\n USDL2PLS: number;\n __typename: string;\n}\n\ninterface GetPricesResponse {\n tokenDataLOANs: TokenData[];\n tokenDataUSDLs: TokenData[];\n}\n\ninterface GetPrices24hAgoResponse {\n tokenDataLOANs: {\n timestamp: number;\n LOAN2PLS: number;\n __typename: string;\n }[];\n tokenDataUSDLs: {\n timestamp: number;\n USDL2PLS: number;\n __typename: string;\n }[];\n}\n\ninterface StakingAPRResponse {\n loanstakingPRDataByDays: StakingAPRDataArray;\n}\n\ninterface StabilityAPRResponse {\n usdlstabilityAPRDataByDays: StabilityAPRDataArray;\n}\n\ntype StakingAPRData = {\n day: number;\n date: number;\n price: string;\n loanPrice: string;\n usdlPrice: string;\n totalBorrowingFeesPaid: string;\n totalRedemptionFeesPaid: string;\n totalLOANTokensStaked: string;\n __typename: string;\n};\n\ntype StabilityAPRData = {\n day: number;\n date: number;\n price: string;\n loanPrice: string;\n usdlPrice: string;\n totalPLSFromLiquidations: string;\n totalUSDLTokensStaked: string;\n totalLOANTokensIssued: string;\n __typename: string;\n};\n\ntype StakingAPRDataArray = StakingAPRData[];\n\ntype StabilityAPRDataArray = StabilityAPRData[];\n\nconst endpoint =\n \"https://subgraph-prod.liquidloans.io/subgraphs/name/liquidloans/liquidloans\";\n\n// Function to make GraphQL API requests\nasync function makeGraphQlRequest(\n operationName: string,\n query: string,\n variables?: any\n): Promise {\n try {\n const response: AxiosResponse<{ data: T }> = await axios.post(endpoint, {\n operationName,\n query,\n variables,\n });\n return response.data.data;\n } catch (error: any) {\n console.error(\"GraphQL API request error:\", error.message);\n throw error;\n }\n}\n\n// Function to get the current price of PLS\nasync function getPriceOfPLS(): Promise {\n const operationName = \"PricePLS\";\n const query = `query PricePLS {\n globals {\n currentSystemState {\n price\n }\n }\n }`;\n\n const response: PricePLSResponse = await makeGraphQlRequest(\n operationName,\n query\n );\n\n return response.globals[0].currentSystemState.price;\n}\n\n// Function to get the price of PLS 24hrs ago\nasync function getPriceOfPLS24hrsAgo(timestamp24hAgo: number): Promise {\n const operationName = \"Price24hAgo\";\n const query =\n \"query Price24hAgo($timestamp24hAgo: Int!) {\\n priceChanges(\\n where: {transaction_: {timestamp_lte: $timestamp24hAgo}}\\n orderBy: sequenceNumber\\n orderDirection: desc\\n first: 1\\n ) {\\n systemStateAfter {\\n price\\n __typename\\n }\\n __typename\\n }\\n}\";\n\n const variables = {\n timestamp24hAgo: timestamp24hAgo,\n };\n\n const response: Price24hAgoResponse =\n await makeGraphQlRequest(\n operationName,\n query,\n variables\n );\n // console.log(response)\n return response.priceChanges[0]?.systemStateAfter.price || 0;\n}\n\n// Function to get the price of LOAN2PLS & USDL2PLS\nasync function getPrices(): Promise<{ LOAN2PLS: number; USDL2PLS: number }> {\n const operationName = \"getPrices\";\n const query =\n \"query getPrices {\\n tokenDataLOANs(orderBy: timestamp, orderDirection: desc, first: 1) {\\n LOAN2PLS\\n __typename\\n }\\n tokenDataUSDLs(orderBy: timestamp, orderDirection: desc, first: 1) {\\n USDL2PLS\\n __typename\\n }\\n}\";\n\n const response: GetPricesResponse =\n await makeGraphQlRequest(operationName, query);\n\n return {\n LOAN2PLS: response.tokenDataLOANs[0]?.LOAN2PLS || 0,\n USDL2PLS: response.tokenDataUSDLs[0]?.USDL2PLS || 0,\n };\n}\n\n// Function to get the price of LOAN & USDL 24hrs ago\nasync function getPrices24hrsAgo(\n timestamp24hAgo: number\n): Promise<{ LOAN2PLS: number; USDL2PLS: number }> {\n const operationName = \"Price24hAgo\";\n const query =\n \"query getPrices24hAgo($timestamp24hAgo: Int!) {\\n tokenDataLOANs(\\n where: {timestamp_lte: $timestamp24hAgo}\\n orderBy: timestamp\\n orderDirection: desc\\n first: 1\\n ) {\\n timestamp\\n LOAN2PLS\\n __typename\\n }\\n tokenDataUSDLs(\\n where: {timestamp_lte: $timestamp24hAgo}\\n orderBy: timestamp\\n orderDirection: desc\\n first: 1\\n ) {\\n timestamp\\n USDL2PLS\\n __typename\\n }\\n}\";\n\n const variables = {\n timestamp24hAgo: timestamp24hAgo,\n };\n\n const response: GetPrices24hAgoResponse =\n await makeGraphQlRequest(\n operationName,\n query,\n variables\n );\n\n return {\n LOAN2PLS: response.tokenDataLOANs[0]?.LOAN2PLS || 0,\n USDL2PLS: response.tokenDataUSDLs[0]?.USDL2PLS || 0,\n };\n}\n\nasync function getStakingAPR(\n timestamp24hAgo: number\n): Promise<{ loanstakingPRDataByDays: StakingAPRDataArray }> {\n const operationName = \"QueryStakingAPR\";\n const query =\n \"query QueryStakingAPR($first: Int!) {\\n loanstakingPRDataByDays(\\n orderBy: day\\n orderDirection: desc\\n first: $first\\n ) {\\n day\\n date\\n price\\n loanPrice\\n usdlPrice\\n totalBorrowingFeesPaid\\n totalRedemptionFeesPaid\\n totalLOANTokensStaked\\n __typename\\n }\\n}\";\n\n const variables = {\n first: 365,\n };\n\n const response: StakingAPRResponse =\n await makeGraphQlRequest(\n operationName,\n query,\n variables\n );\n\n return {\n loanstakingPRDataByDays: response.loanstakingPRDataByDays,\n };\n}\n\nasync function getStabilityAPR(\n day_num: number\n): Promise<{ usdlstabilityAPRDataByDays: StabilityAPRDataArray }> {\n const operationName = \"QueryStabilityAPR\";\n const query =\n \"query ($first: Int!) {\\n usdlstabilityAPRDataByDays(orderBy: day, orderDirection: desc, first: $first) {\\n day\\n date\\n price\\n loanPrice\\n usdlPrice\\n totalPLSFromLiquidations\\n totalUSDLTokensStaked\\n totalLOANTokensIssued\\n __typename\\n }\\n}\";\n\n const variables = {\n first: 365,\n };\n\n const response: StabilityAPRResponse =\n await makeGraphQlRequest(\n operationName,\n query,\n variables\n );\n\n return {\n usdlstabilityAPRDataByDays: response.usdlstabilityAPRDataByDays,\n };\n}\n\nexport async function fetchAllPriceData(): Promise<{\n plsPrice: number;\n plsChange: number;\n loanPrice: number;\n usdlPrice: number;\n loanChange: number;\n usdlChange: number;\n}> {\n const currentTime = new Date();\n const twentyFourHoursAgo = new Date(\n currentTime.getTime() - 24 * 60 * 60 * 1000\n );\n const twentyFourHoursAgoTimeStamp = Math.floor(\n twentyFourHoursAgo.getTime() / 1000\n );\n const [currentPricePLS, pricePLS24hrsAgo, prices, prices24hrsAgo] =\n await Promise.all([\n getPriceOfPLS(),\n getPriceOfPLS24hrsAgo(twentyFourHoursAgoTimeStamp),\n getPrices(),\n getPrices24hrsAgo(twentyFourHoursAgoTimeStamp),\n ]);\n // console.log(await getPriceOfPLS())\n // console.log(await getPriceOfPLS24hrsAgo(1690958000))\n // console.log(await getPrices24hrsAgo(1690958000))\n\n return {\n plsPrice: Number(currentPricePLS),\n plsChange: (currentPricePLS - pricePLS24hrsAgo) / pricePLS24hrsAgo,\n loanPrice: prices.LOAN2PLS * currentPricePLS,\n usdlPrice: prices.USDL2PLS * currentPricePLS,\n loanChange:\n (prices.LOAN2PLS - prices24hrsAgo.LOAN2PLS) / prices24hrsAgo.LOAN2PLS,\n usdlChange:\n (prices.USDL2PLS - prices24hrsAgo.USDL2PLS) / prices24hrsAgo.USDL2PLS,\n };\n}\n\nexport async function fetchStakingAPR(): Promise<{\n stakingAPR: number;\n}> {\n var currentDate = new Date();\n var epochDate = new Date(0);\n\n var dayNumberEpoch = Math.floor(\n (currentDate.getTime() - epochDate.getTime()) / (24 * 60 * 60 * 1000)\n );\n\n const response = await getStakingAPR(dayNumberEpoch);\n let totalFees = 0;\n let aprLength = 0;\n let totalLoaninPoolLast = 0;\n\n for (\n let index = 0;\n index < response.loanstakingPRDataByDays.length;\n index++\n ) {\n const element = response.loanstakingPRDataByDays[index];\n if (Number(element.loanPrice) && Number(element.usdlPrice)) {\n aprLength++;\n let loanPriceUSD = Number(element.loanPrice) * Number(element.price);\n let usdlPriceUSD = Number(element.usdlPrice) * Number(element.price);\n let totalRedemptionFeesPaid = Number(element.totalRedemptionFeesPaid) * Number(element.price);\n let totalBorrowingFeesPaid = Number(element.totalBorrowingFeesPaid) * usdlPriceUSD;\n let totalLOANTokensStaked = Number(element.totalLOANTokensStaked) * loanPriceUSD;\n\n totalLoaninPoolLast = totalLOANTokensStaked;\n totalFees = totalFees + totalRedemptionFeesPaid + totalBorrowingFeesPaid;\n }\n }\n\n return {\n stakingAPR:\n totalLoaninPoolLast !== 0\n ? (((totalFees / totalLoaninPoolLast)/ aprLength) * 365 * 100) \n : 0,\n };\n}\n\nexport async function fetchStabilityAPR(): Promise<{\n stabilityAPR: number;\n}> {\n var currentDate = new Date();\n var epochDate = new Date(0);\n\n var dayNumberEpoch = Math.floor(\n (currentDate.getTime() - epochDate.getTime()) / (24 * 60 * 60 * 1000)\n );\n\n const response = await getStabilityAPR(dayNumberEpoch);\n let totalFees = 0;\n let aprLength = 0;\n let totalUSDLinPoolLast = 0;\n\n for (\n let index = 0;\n index < response.usdlstabilityAPRDataByDays.length;\n index++\n ) {\n const element = response.usdlstabilityAPRDataByDays[index];\n if (Number(element.loanPrice) && Number(element.usdlPrice)) {\n aprLength++;\n let loanPriceUSD = Number(element.loanPrice) * Number(element.price);\n let usdlPriceUSD = Number(element.usdlPrice) * Number(element.price);\n let totalLiquidationFeesPaid = Number(element.totalPLSFromLiquidations) * Number(element.price);\n let totalIssuanceFees = Number(element.totalLOANTokensIssued) * loanPriceUSD;\n let totalUSDLinPool = Number(element.totalUSDLTokensStaked) * usdlPriceUSD;\n\n totalUSDLinPoolLast = totalUSDLinPool + totalUSDLinPoolLast;\n totalFees = totalFees + totalLiquidationFeesPaid + totalIssuanceFees;\n }\n }\n\n return {\n stabilityAPR:\n totalUSDLinPoolLast !== 0\n ? ((totalFees / totalUSDLinPoolLast / aprLength) * 365 * 100)\n : 0,\n };\n}\n","import React, { Fragment, useEffect, useState } from \"react\";\nimport { Text, Flex, Box, Heading, Image, useThemeUI } from \"theme-ui\";\nimport { ethers } from \"ethers\";\n\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN, GT } from \"../strings\";\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport { shortenAddress } from \"../utils/shortenAddress\";\nimport LOANIcon from \"../assets/images/loan-icon.svg\";\nimport USDLIcon from \"../assets/images/usdl-icon.svg\";\nimport PLSIcon from \"../assets/images/pls-icon.svg\";\nimport BEANIcon from \"../assets/images/bean-token.png\";\nimport { LuArrowUpRight, LuArrowDownLeft } from \"react-icons/lu\";\n\nimport { Icon } from \"./Icon\";\nimport { fetchAllPriceData } from \"../graphFunctions/graphFetcher\";\n\nconst barista_colors = {\n barista_red: \"#e80368\",\n barista_blue: \"#5578ff\",\n barista_yellow: \"#ffbb2c\",\n barista_green: \"#29cc61\",\n};\n\nconst getLogo = (token: string) => {\n switch (token) {\n case \"LOAN\":\n return LOANIcon;\n\n case \"PLS\":\n return PLSIcon;\n\n case \"USDL\":\n return USDLIcon;\n\n case \"BEAN\":\n return BEANIcon;\n\n default:\n return USDLIcon;\n }\n};\n\nconst select = ({\n accountBalance,\n usdlBalance,\n loanBalance,\n}: LiquidLoansStoreState) => ({\n accountBalance,\n usdlBalance,\n loanBalance,\n});\nconst contractAddress = \"0xd7407BD3E6aD1BAAE0ba9eaFD1Ec41bFE63907B2\";\n\nexport const TokenBalance = () => {\n const [balance, setBalance] = useState(null);\n\n useEffect(() => {\n // Replace with your contract address and ABI\n // const contractAddress = \"0xd7407BD3E6aD1BAAE0ba9eaFD1Ec41bFE63907B2\";\n const contractABI = [\n // ABI for ERC20 token balanceOf function\n {\n constant: true,\n inputs: [{ name: \"owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n type: \"function\",\n },\n ];\n\n // Initialize ethers.js with the user's Ethereum provider (e.g., MetaMask)\n async function fetchTokenBalance() {\n try {\n // Check if Ethereum provider is available\n if (window.ethereum) {\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const signer = provider.getSigner();\n const userAddress = await signer.getAddress();\n\n // Create a contract instance\n const contract = new ethers.Contract(\n contractAddress,\n contractABI,\n signer\n );\n\n // Call the balanceOf function to get the token balance\n const result = await contract.balanceOf(userAddress);\n setBalance(result.toString());\n } else {\n console.log(\n \"Please install MetaMask or another Ethereum wallet extension.\"\n );\n }\n } catch (error) {\n console.error(\"Error fetching token balance:\", error);\n }\n }\n\n fetchTokenBalance();\n }, []);\n};\n\nexport const UserTokenBalances: React.FC = () => {\n const { account } = useLiquidLoans();\n const { accountBalance, usdlBalance, loanBalance } =\n useLiquidLoansSelector(select);\n const theme = useThemeUI();\n const [priceData, setPriceData] = useState({\n plsPrice: 0,\n plsChange: 0,\n loanPrice: 0,\n usdlPrice: 0,\n loanChange: 0,\n usdlChange: 0,\n });\n\n useEffect(() => {\n fetchBalances();\n }, []);\n\n const fetchBalances = async () => {\n let response = await fetchAllPriceData();\n if (response) {\n setPriceData({ ...response });\n }\n };\n\n const [beanBalance, setBeanBalance] = useState(0);\n\n useEffect(() => {\n const contractABI = [\n {\n constant: true,\n inputs: [{ name: \"owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n type: \"function\",\n },\n ];\n\n // Initialize ethers.js with the user's Ethereum provider (e.g., MetaMask)\n async function fetchTokenBalance() {\n try {\n // Check if Ethereum provider is available\n if (window.ethereum) {\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const signer = provider.getSigner();\n const userAddress = await signer.getAddress();\n\n // Create a contract instance\n const contract = new ethers.Contract(\n contractAddress,\n contractABI,\n signer\n );\n\n // Call the balanceOf function to get the token balance\n const result = await contract.balanceOf(userAddress);\n setBeanBalance(result.toString());\n } else {\n console.log(\n \"Please install MetaMask or another Ethereum wallet extension.\"\n );\n }\n } catch (error) {\n console.error(\"Error fetching token balance:\", error);\n }\n }\n\n fetchTokenBalance();\n });\n\n const [renderCount, setRenderCount] = useState(0);\n \n useEffect(() => {\n const intervalId = setInterval(() => {\n setRenderCount(prevCount => prevCount + 1);\n }, 10000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n return (\n \n \n {/* */}\n\n {(\n [\n [\n GT,\n loanBalance,\n priceData.loanPrice,\n priceData.loanChange,\n \"0x9159f1D2a9f51998Fc9Ab03fbd8f265ab14A1b3B\",\n \"tokens/loan-icon.svg\",\n ],\n [\n COIN,\n usdlBalance,\n priceData.usdlPrice,\n priceData.usdlChange,\n \"0x0dEEd1486bc52aA0d3E6f8849cEC5adD6598A162\",\n \"tokens/usdl-icon.svg\",\n ],\n [\n \"PLS\",\n accountBalance,\n priceData.plsPrice,\n priceData.plsChange,\n \"0xA1077a294dDE1B09bB078844df40758a5D0f9a27\",\n \"tokens/pls-icon.svg\",\n ],\n [\n \"BEAN\",\n Number(beanBalance) / 1e18,\n Number(beanBalance) / 1e18,\n 0,\n contractAddress,\n \"tokens/bean-token.png\",\n ],\n ] as const\n ).map(([currency, balance, price, change, address, imageUrl], i) => (\n \n {\n if (currency !== \"PLS\") {\n addTokenToWallet(currency, address, imageUrl);\n }\n }}\n >\n \n \n \n {currency}\n {currency !== \"BEAN\" && (\n \n 0\n ? barista_colors.barista_green\n : \"grey\",\n }}\n >\n {` ${Math.abs(change * 100).toFixed(2)}%`}\n \n {change < 0 ? (\n \n ) : change > 0 ? (\n \n ) : null}\n {/* */}\n \n )}\n \n \n {currency != \"BEAN\" && `$`}\n {currency != \"BEAN\" ? price.toFixed(6) : price.toFixed(0)}\n \n \n \n {i < 3 && (\n \n )}\n \n ))}\n \n \n );\n};\n\n// add token to wallet\nconst addTokenToWallet = async (\n tokenSymbol: string,\n tokenAddress: string,\n tokenImage: string\n) => {\n if (window.ethereum) {\n try {\n const { ethereum } = window as any;\n let url = \"\";\n\n if (!process.env.NODE_ENV || process.env.NODE_ENV === \"development\") {\n url = \"http://localhost:3000/\";\n } else {\n url = \"https://baristabackend/\";\n }\n\n if (tokenSymbol === 'BEAN') {\n tokenSymbol = \"BEAN by Barista\"\n }\n\n await ethereum.request({\n method: \"wallet_watchAsset\",\n params: {\n type: \"ERC20\",\n options: {\n address: tokenAddress,\n symbol: tokenSymbol,\n decimals: 18,\n image: url + tokenImage,\n },\n },\n });\n } catch (error) {\n console.log(error);\n }\n }\n};\n","export const shortenAddress = (address: string) => address.substr(0, 6) + \"...\" + address.substr(-4);\n","export default __webpack_public_path__ + \"static/media/wallet-icon.6aa1881e.svg\";","import React, { useEffect, useRef, useState } from \"react\";\nimport { Text, Flex, Box, Heading, Button, Image, Container } from \"theme-ui\";\n\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN, GT } from \"../strings\";\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport { shortenAddress } from \"../utils/shortenAddress\";\nimport walletImage from \"../assets/images/wallet-icon.svg\";\n\nimport { Icon } from \"./Icon\";\nimport { Modal } from \"./Modal\";\nimport { AiOutlineClose } from \"react-icons/ai\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { useWeb3React } from \"@web3-react/core\";\n\nconst select = ({\n accountBalance,\n usdlBalance,\n loanBalance,\n}: LiquidLoansStoreState) => ({\n accountBalance,\n usdlBalance,\n loanBalance,\n});\n\nexport const UserAccount: React.FC = () => {\n const [modalOpen, setModalOpen] = useState(false);\n const { account } = useLiquidLoans();\n const { accountBalance, usdlBalance, loanBalance } =\n useLiquidLoansSelector(select);\n const modalRef = useRef(null);\n\n const { deactivate } = useWeb3React();\n\n // Handle click outside the modal\n const handleClickOutside = (event: MouseEvent) => {\n if (modalRef.current && !modalRef.current.contains(event.target as Node)) {\n handleModalToggle();\n }\n };\n\n const handleModalToggle = () => {\n setModalOpen((prev) => !prev);\n };\n\n useEffect(() => {\n // Add event listener when the modal is opened\n if (modalOpen) {\n document.addEventListener(\"click\", handleClickOutside);\n }\n\n // Remove event listener when the modal is closed\n return () => {\n document.removeEventListener(\"click\", handleClickOutside);\n };\n }, [modalOpen]);\n\n return (\n <>\n {\n setModalOpen(true);\n }}\n >\n \n \n {shortenAddress(account)}\n \n \n {modalOpen && (\n {\n // setModalOpen(false);\n // }}\n >\n \n \n {\n handleModalToggle();\n }}\n >\n \n \n \n Your Account\n \n {\n navigator.clipboard.writeText(account);\n }}\n sx={{\n margin: \"auto\",\n cursor: \"pointer\",\n \":hover\": { color: \"violet\" },\n }}\n >\n {account}\n \n \n\n {\n deactivate();\n }}\n >\n Disconnect\n \n \n \n \n )}\n \n );\n};\n","import React from \"react\";\nimport { Button } from \"theme-ui\";\nimport { Icon } from \"./Icon\";\nimport { Twirl as Hamburger } from \"hamburger-react\";\n\ntype Props = {\n isVisible: boolean;\n setIsVisible: React.Dispatch>;\n};\n\nfunction MenuButton({ isVisible, setIsVisible }: Props) {\n return (\n setIsVisible(!isVisible)}\n >\n \n \n );\n}\n\nexport default MenuButton;\n","import React from \"react\";\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { Container, Flex, Box, Image } from \"theme-ui\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\n\nimport { LiquidLoansLogo } from \"./LiquidLoansLogo\";\nimport { Nav } from \"./Nav\";\nimport { SideNav } from \"./SideNav\";\nimport Tcr from \"./Tcr\";\nimport { UserTokenBalances } from \"./UserTokenBalances\";\nimport { UserAccount } from \"./UserAccount\";\nimport MenuButton from \"./MenuButton\";\n\nconst logoHeight = \"32px\";\n\nconst select = ({ frontend }: LiquidLoansStoreState) => ({\n frontend,\n});\n\nexport const Header: React.FC<{\n isVisible: boolean;\n setIsVisible: React.Dispatch>;\n}> = ({ isVisible, setIsVisible, children }) => {\n const {\n config: { frontendTag },\n } = useLiquidLoans();\n const { frontend } = useLiquidLoansSelector(select);\n const isFrontendRegistered =\n frontendTag === AddressZero || frontend.status === \"registered\";\n\n return (\n \n \n \n \n \n \n \n\n {/* */}\n {isFrontendRegistered && (\n <>\n \n \n )}\n {/* {children} */}\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport { Flex, Card } from \"theme-ui\";\nimport { InfoIcon } from \"./InfoIcon\";\n\ntype StatisticProps = {\n name: React.ReactNode;\n tooltip?: React.ReactNode;\n};\n\nexport const Statistic: React.FC = ({\n name,\n tooltip,\n children,\n}) => {\n return (\n \n \n {name}\n {tooltip ? (\n \n {tooltip}\n \n }\n />\n ) : null}\n \n \n {children}\n \n \n );\n};\n","import React from \"react\";\nimport { Card, Heading, Link, Box, Text, Grid, Flex } from \"theme-ui\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { Decimal, Percent, LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport { COIN, GT } from \"../strings\";\nimport { Statistic } from \"./Statistic\";\n// import cardBgImage from \"../assets/images/bg/card-bg.png\";\n\nconst selectBalances = ({\n accountBalance,\n usdlBalance,\n loanBalance,\n}: LiquidLoansStoreState) => ({\n accountBalance,\n usdlBalance,\n loanBalance,\n});\n\nconst Balances: React.FC = () => {\n const { accountBalance, usdlBalance, loanBalance } =\n useLiquidLoansSelector(selectBalances);\n\n return (\n \n My Account Balances\n {accountBalance.prettify(2)}\n {usdlBalance.prettify()}\n {loanBalance.prettify()}\n \n );\n};\n\nconst GitHubCommit: React.FC<{ children?: string }> = ({ children }) =>\n children?.match(/[0-9a-f]{40}/) ? (\n \n {children.substr(0, 7)}\n \n ) : (\n <>unknown\n );\n\ntype SystemStatsProps = {\n variant?: string;\n showBalances?: boolean;\n};\n\nconst select = ({\n numberOfVaults,\n price,\n total,\n usdlInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLOAN,\n frontend,\n stabilityDeposit\n}: LiquidLoansStoreState) => ({\n numberOfVaults,\n price,\n total,\n usdlInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLOAN,\n kickbackRate: frontend.status === \"registered\" ? frontend.kickbackRate : null,\n stabilityDeposit\n});\n\nexport const SystemStats: React.FC = ({\n variant = \"prot_performance\",\n showBalances,\n}) => {\n const {\n liquidLoans: {\n connection: { version: contractsVersion, deploymentDate, frontendTag },\n },\n } = useLiquidLoans();\n\n const {\n numberOfVaults,\n price,\n usdlInStabilityPool,\n total,\n borrowingRate,\n totalStakedLOAN,\n kickbackRate,\n stabilityDeposit\n } = useLiquidLoansSelector(select);\n\n const usdlInStabilityPoolPct =\n total.debt.nonZero && new Percent(usdlInStabilityPool.div(total.debt));\n const usdlInBammPct = new Percent(stabilityDeposit.totalLusdInBamm.div(usdlInStabilityPool))\n\n const totalCollateralRatioPct = new Percent(total.collateralRatio(price));\n const borrowingFeePct = new Percent(borrowingRate);\n const kickbackRatePct =\n frontendTag === AddressZero ? \"100\" : kickbackRate?.mul(100).prettify();\n\n return (\n \n {showBalances && }\n\n \n Protocol Performance\n \n \n\n \n \n \n {total.collateral.shorten()}{\" \"}\n  PLS\n \n \n  (${Decimal.from(total.collateral.mul(price)).shorten()})\n \n \n \n \n {borrowingFeePct.toString(2)}\n \n \n \n {Decimal.from(numberOfVaults).prettify(0)}\n \n \n \n {total.debt.shorten()}\n \n \n {usdlInStabilityPoolPct && (\n \n {usdlInStabilityPool.shorten()}\n \n ({usdlInStabilityPoolPct.toString(1)})\n \n \n )}\n\n \n {stabilityDeposit.totalLusdInBamm && (\n \n {stabilityDeposit.totalLusdInBamm.shorten()}\n  ({usdlInBammPct.toString(1)})\n \n )}\n \n \n {totalStakedLOAN.shorten()}\n \n \n {/* \n {totalCollateralRatioPct.prettify()}\n */}\n \n {total.collateralRatioIsBelowCritical(price) ? (\n Yes\n ) : (\n \"No\"\n )}\n \n {}\n\n {/* \n Frontend\n \n {kickbackRatePct && (\n \n {kickbackRatePct}%\n \n )} */}\n \n \n \n \n \n {total.collateral.shorten()}{\" \"}\n  PLS\n \n \n  (${Decimal.from(total.collateral.mul(price)).shorten()})\n \n \n \n \n {borrowingFeePct.toString(2)}\n \n \n \n \n {Decimal.from(numberOfVaults).prettify(0)}\n \n \n {stabilityDeposit.totalLusdInBamm && (\n \n {stabilityDeposit.totalLusdInBamm.shorten()}\n  ({usdlInBammPct.toString(1)})\n \n )}{\" \"}\n \n \n {usdlInStabilityPoolPct && (\n \n {usdlInStabilityPool.shorten()}\n \n ({usdlInStabilityPoolPct.toString(1)})\n \n \n )}{\" \"}\n\n \n \n {totalStakedLOAN.shorten()}\n \n {/* \n {totalCollateralRatioPct.prettify()}\n */}\n \n\n \n \n {total.debt.shorten()}\n \n\n \n \n {total.collateralRatioIsBelowCritical(price) ? (\n Yes\n ) : (\n \"No\"\n )}\n \n\n \n\n {}\n\n {/* \n Frontend\n \n {kickbackRatePct && (\n \n {kickbackRatePct}%\n \n )} */}\n \n \n );\n};\n","import { Box, Flex, Heading, Text } from \"theme-ui\";\n\nimport { Icon } from \"./Icon\";\n\ntype InfoMessageProps = {\n title: string;\n icon?: React.ReactNode;\n};\n\nexport const InfoMessage: React.FC = ({\n title,\n children,\n icon,\n}) => (\n \n \n \n {icon || }\n \n\n {title}\n \n\n \n {children}\n \n \n);\n","import { createContext, useContext } from \"react\";\nimport type { FarmView, FarmEvent } from \"./transitions\";\n\ntype FarmViewContextType = {\n view: FarmView;\n dispatchEvent: (event: FarmEvent) => void;\n};\n\nexport const FarmViewContext = createContext(null);\n\nexport const useFarmView = (): FarmViewContextType => {\n const context: FarmViewContextType | null = useContext(FarmViewContext);\n\n if (context === null) {\n throw new Error(\"You must add a into the React tree\");\n }\n\n return context;\n};\n","import React from \"react\";\nimport { Flex } from \"theme-ui\";\n\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nconst selector = ({ remainingLiquidityMiningLOANReward }: LiquidLoansStoreState) => ({\n remainingLiquidityMiningLOANReward\n});\n\nexport const RemainingLOAN: React.FC = () => {\n const { remainingLiquidityMiningLOANReward } = useLiquidLoansSelector(selector);\n\n return (\n \n {remainingLiquidityMiningLOANReward.prettify(0)} LOAN remaining\n \n );\n};\n","import React, { useCallback } from \"react\";\nimport { Card, Heading, Box, Flex, Button, Link, Paragraph } from \"theme-ui\";\nimport { useLiquidLoans } from \"../../../../hooks/LiquidLoansContext\";\nimport { Icon } from \"../../../Icon\";\nimport { InfoMessage } from \"../../../InfoMessage\";\nimport { useFarmView } from \"../../context/FarmViewContext\";\nimport { RemainingLOAN } from \"../RemainingLOAN\";\n\nconst PLSXlink = (usdlAddress: string) =>\n `${process.env.REACT_APP_PULSEX_LINK}/add/PLS/${usdlAddress}`;\n\nexport const Inactive: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n\n const {\n liquidLoans: {\n connection: { addresses },\n },\n } = useLiquidLoans();\n\n const handleStakePressed = useCallback(() => {\n dispatchEvent(\"STAKE_PRESSED\");\n }, [dispatchEvent]);\n\n return (\n \n \n PLSX Liquidity Farm\n \n \n \n \n \n \n \n You can farm LOAN by staking your PLSX PLS/USDL LP tokens.\n \n\n \n You can obtain LP tokens by adding liquidity to the{\" \"}\n \n PLS/USDL pool on PLSX. \n \n \n \n\n \n \n \n \n \n );\n};\n","import React, { useState } from \"react\";\nimport {\n Text,\n Flex,\n Label,\n Input,\n SxProp,\n Button,\n ThemeUICSSProperties,\n} from \"theme-ui\";\n\nimport { Icon } from \"../Icon\";\n\ntype RowProps = SxProp & {\n label: string;\n labelId?: string;\n labelFor?: string;\n infoIcon?: React.ReactNode;\n fontSize?: string;\n};\n\nexport const Row: React.FC = ({\n sx,\n label,\n labelId,\n labelFor,\n children,\n infoIcon,\n fontSize = \"18px\",\n}) => {\n return (\n \n \n \n {label}\n {infoIcon && infoIcon}\n \n \n\n {children}\n \n );\n};\n\ntype PendingAmountProps = {\n value: string;\n};\n\nconst PendingAmount: React.FC = ({\n sx,\n value,\n}) => (\n \n (\n {value === \"++\" ? (\n \n ) : value === \"--\" ? (\n \n ) : value?.startsWith(\"+\") ? (\n <>\n {value.substr(1)}\n \n ) : value?.startsWith(\"-\") ? (\n <>\n {value.substr(1)}\n \n ) : (\n value\n )}\n )\n \n);\n\ntype StaticAmountsProps = {\n inputId: string;\n labelledBy?: string;\n amount: string;\n unit?: string;\n color?: string;\n pendingAmount?: string;\n pendingColor?: string;\n onClick?: () => void;\n};\n\nexport const StaticAmounts: React.FC = ({\n sx,\n inputId,\n labelledBy,\n amount,\n unit,\n color,\n pendingAmount,\n pendingColor,\n onClick,\n children,\n}) => {\n return (\n \n \n \n {amount}\n \n\n {unit && (\n <>\n  \n {unit}\n \n )}\n\n {pendingAmount && (\n <>\n  \n \n \n )}\n \n\n {children}\n \n );\n};\n\nconst staticStyle: ThemeUICSSProperties = {\n flexGrow: 1,\n fontFamily: \"Titillium Web, sans-serif\",\n mb: 0,\n // pl: 3,\n pr: \"11px\",\n pt: \"5px\",\n pb: \"5px\",\n // pt: \"28px\",\n color: \"#ABABAB\",\n fontSize: \"16px\",\n\n border: 1,\n borderColor: \"transparent\",\n};\n\nconst editableStyle: ThemeUICSSProperties = {\n // flexGrow: 1,\n\n // mb: [2, 3],\n mb: 0,\n pl: 3,\n\n // pl: 3,\n pr: \"11px\",\n pt: \"5px\",\n pb: \"5px\",\n color: \"#ABABAB\",\n fontFamily: \"Titillium Web, sans-serif\",\n fontSize: \"18px\",\n textAlign: \"right\",\n boxShadow: [1, 2],\n border: 1,\n borderRadius: \"9px\",\n borderColor: \"#4F0E75\",\n};\n\ntype StaticRowProps = RowProps & StaticAmountsProps;\n\nexport const StaticRow: React.FC = ({\n label,\n labelId,\n labelFor,\n infoIcon,\n ...props\n}) => (\n \n \n \n);\n\ntype DisabledEditableRowProps = Omit<\n StaticAmountsProps,\n \"labelledBy\" | \"onClick\"\n> & {\n label: string;\n};\n\nexport const DisabledEditableRow: React.FC = ({\n inputId,\n label,\n unit,\n amount,\n color,\n pendingAmount,\n pendingColor,\n}) => (\n \n \n \n);\n\ntype EditableRowProps = DisabledEditableRowProps & {\n editingState: [string | undefined, (editing: string | undefined) => void];\n editedAmount: string;\n setEditedAmount: (editedAmount: string) => void;\n maxAmount?: string;\n maxedOut?: boolean;\n};\n\nexport const EditableRow: React.FC = ({\n label,\n inputId,\n unit,\n amount,\n color,\n pendingAmount,\n pendingColor,\n editingState,\n editedAmount,\n setEditedAmount,\n maxAmount,\n maxedOut,\n}) => {\n const [editing, setEditing] = editingState;\n const [invalid, setInvalid] = useState(false);\n\n return editing === inputId ? (\n \n {\n try {\n // console.log(e.target.value === \"\");\n setEditedAmount(e.target.value === \"\" ? \"0\" : e.target.value);\n setInvalid(false);\n } catch {\n setInvalid(true);\n }\n }}\n onBlur={() => {\n setEditing(undefined);\n setInvalid(false);\n }}\n variant=\"editor\"\n sx={{\n ...editableStyle,\n fontWeight: \"medium\",\n // bg: invalid ? \"invalid\" : \"background\",\n bg: \"#010001\",\n outline: \"solid 1px #4F0E75\",\n \"&:focus\": {\n // boxShadow: \"0 0 0 2px #4F0E75\",\n boxShadow: \"0px 0px 2px 2px #4F0E75 \",\n },\n }}\n />\n \n ) : (\n \n setEditing(inputId)}\n {...{\n inputId,\n amount,\n unit,\n color,\n pendingAmount,\n pendingColor,\n invalid,\n }}\n >\n {/* {maxAmount && (\n {\n setEditedAmount(maxAmount);\n event.stopPropagation();\n }}\n disabled={maxedOut}\n >\n max\n \n )} */}\n \n \n );\n};\n","import React from \"react\";\nimport { Container, Spinner } from \"theme-ui\";\n\nexport const LoadingOverlay: React.FC = () => (\n \n \n \n);\n","import { Decimal, LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nconst selector = ({\n PLSXtokenBalance,\n PLSXtokenAllowance,\n liquidityMiningStake\n}: LiquidLoansStoreState) => ({\n PLSXtokenBalance,\n PLSXtokenAllowance,\n liquidityMiningStake\n});\n\ntype FarmStakeValidation = {\n isValid: boolean;\n hasApproved: boolean;\n hasEnoughPLSXtoken: boolean;\n isWithdrawing: boolean;\n amountChanged: Decimal;\n maximumStake: Decimal;\n hasSetMaximumStake: boolean;\n};\n\nexport const useValidationState = (amount: Decimal): FarmStakeValidation => {\n const { PLSXtokenBalance, PLSXtokenAllowance, liquidityMiningStake } = useLiquidLoansSelector(selector);\n const isWithdrawing = liquidityMiningStake.gt(amount);\n const amountChanged = isWithdrawing\n ? liquidityMiningStake.sub(amount)\n : Decimal.from(amount).sub(liquidityMiningStake);\n const maximumStake = liquidityMiningStake.add(PLSXtokenBalance);\n const hasSetMaximumStake = amount.eq(maximumStake);\n\n if (isWithdrawing) {\n return {\n isValid: true,\n hasApproved: true,\n hasEnoughPLSXtoken: true,\n isWithdrawing,\n amountChanged,\n maximumStake,\n hasSetMaximumStake\n };\n }\n\n const hasApproved = !PLSXtokenAllowance.isZero && PLSXtokenAllowance.gte(amountChanged);\n const hasEnoughPLSXtoken = !PLSXtokenBalance.isZero && PLSXtokenBalance.gte(amountChanged);\n\n return {\n isValid: hasApproved && hasEnoughPLSXtoken,\n hasApproved,\n hasEnoughPLSXtoken,\n isWithdrawing,\n amountChanged,\n maximumStake,\n hasSetMaximumStake\n };\n};\n","import React, { useEffect } from \"react\";\nimport { Button } from \"theme-ui\";\nimport { Decimal } from \"@liquidloans/lib-base\";\nimport { useLiquidLoans } from \"../../../hooks/LiquidLoansContext\";\nimport { Transaction, useMyTransactionState } from \"../../Transaction\";\nimport { useValidationState } from \"../context/useValidationState\";\nimport { useFarmView } from \"../context/FarmViewContext\";\n\ntype ConfirmProps = {\n amount: Decimal;\n};\n\nconst transactionId = \"farm-confirm\";\n\nexport const Confirm: React.FC = ({ amount }) => {\n const { dispatchEvent } = useFarmView();\n const {\n liquidLoans: { send: liquidLoans }\n } = useLiquidLoans();\n\n const transactionState = useMyTransactionState(transactionId);\n const { isValid, isWithdrawing, amountChanged } = useValidationState(amount);\n\n const transactionAction = isWithdrawing\n ? liquidLoans.unstakePLSXtokens.bind(liquidLoans, amountChanged)\n : liquidLoans.stakePLSXtokens.bind(liquidLoans, amountChanged);\n\n const shouldDisable = amountChanged.isZero || !isValid;\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"STAKE_CONFIRMED\");\n }\n }, [transactionState.type, dispatchEvent]);\n\n return (\n \n \n \n );\n};\n","import { Box, Flex, Text, useThemeUI } from \"theme-ui\";\n\nimport { Icon } from \"./Icon\";\n\nexport const ActionDescription: React.FC = ({ children }) => {\n const theme = useThemeUI();\n return (\n \n \n \n {children}\n \n \n );\n};\n\nexport const Amount: React.FC = ({ children }) => (\n {children}\n);\n","import React from \"react\";\nimport { Text } from \"theme-ui\";\nimport { useLiquidLoans } from \"../../../hooks/LiquidLoansContext\";\nimport { LP } from \"../../../strings\";\nimport { Transaction } from \"../../Transaction\";\nimport { Decimal } from \"@liquidloans/lib-base\";\nimport { ActionDescription } from \"../../ActionDescription\";\nimport { useValidationState } from \"../context/useValidationState\";\n\ntype DescriptionProps = {\n amount: Decimal;\n};\n\nconst transactionId = \"farm-stake\";\n\nexport const Description: React.FC = ({ amount }) => {\n const {\n liquidLoans: { send: liquidLoans },\n } = useLiquidLoans();\n const { isValid, hasApproved, isWithdrawing, amountChanged } =\n useValidationState(amount);\n\n if (!hasApproved) {\n return (\n \n \n To stake your {LP} tokens you need to allow Liquid Loans to stake them\n for you\n \n \n );\n }\n\n if (!isValid || amountChanged.isZero) {\n return null;\n }\n\n return (\n \n {isWithdrawing && (\n \n \n You are unstaking {amountChanged.prettify(2)} {LP}\n \n \n )}\n {!isWithdrawing && (\n \n \n You are staking {amountChanged.prettify(2)} {LP}\n \n \n )}\n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Button } from \"theme-ui\";\nimport { Decimal } from \"@liquidloans/lib-base\";\nimport { useLiquidLoans } from \"../../../hooks/LiquidLoansContext\";\nimport { Transaction, useMyTransactionState } from \"../../Transaction\";\nimport { useFarmView } from \"../context/FarmViewContext\";\nimport { useValidationState } from \"../context/useValidationState\";\n\ntype ApproveProps = {\n amount: Decimal;\n};\n\nconst transactionId = \"farm-approve\";\n\nexport const Approve: React.FC = ({ amount }) => {\n const { dispatchEvent } = useFarmView();\n const {\n liquidLoans: { send: liquidLoans }\n } = useLiquidLoans();\n\n const { hasApproved } = useValidationState(amount);\n const transactionState = useMyTransactionState(transactionId);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"STAKE_APPROVED\");\n }\n }, [transactionState.type, dispatchEvent]);\n\n if (hasApproved) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { Box, Flex, Text, useThemeUI } from \"theme-ui\";\n\nimport { Icon } from \"./Icon\";\n\nexport const ErrorDescription: React.FC = ({ children }) => {\n const theme = useThemeUI();\n return (\n \n \n \n {children}\n \n \n );\n};\n","import React from \"react\";\nimport { Decimal } from \"@liquidloans/lib-base\";\nimport { LP } from \"../../../strings\";\nimport { ErrorDescription } from \"../../ErrorDescription\";\nimport { useValidationState } from \"../context/useValidationState\";\n\ntype ValidationProps = {\n amount: Decimal;\n};\n\nexport const Validation: React.FC = ({ amount }) => {\n const { isValid, hasApproved, hasEnoughPLSXtoken } = useValidationState(amount);\n\n if (isValid) {\n return null;\n }\n\n if (!hasApproved) {\n return You haven't approved enough {LP};\n }\n\n if (!hasEnoughPLSXtoken) {\n return You don't have enough {LP};\n }\n\n return null;\n};\n","import React, { useCallback, useState } from \"react\";\nimport { Heading, Box, Flex, Card, Button } from \"theme-ui\";\nimport { Decimal, LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { LP } from \"../../../../strings\";\nimport { Icon } from \"../../../Icon\";\nimport { EditableRow, StaticRow } from \"../../../Vault/Editor\";\nimport { LoadingOverlay } from \"../../../LoadingOverlay\";\nimport { useFarmView } from \"../../context/FarmViewContext\";\nimport { useMyTransactionState } from \"../../../Transaction\";\nimport { Confirm } from \"../Confirm\";\nimport { Description } from \"../Description\";\nimport { Approve } from \"../Approve\";\nimport { Validation } from \"../Validation\";\nimport { useValidationState } from \"../../context/useValidationState\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nconst transactionId = /farm-/;\nconst selector = ({ totalStakedPLSXtokens }: LiquidLoansStoreState) => ({\n totalStakedPLSXtokens,\n});\n\nexport const Staking: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n const { totalStakedPLSXtokens } = useLiquidLoansSelector(selector);\n\n const [amount, setAmount] = useState(Decimal.from(0));\n const editingState = useState();\n const isDirty = !amount.isZero;\n\n const { maximumStake, hasSetMaximumStake } = useValidationState(amount);\n\n const transactionState = useMyTransactionState(transactionId);\n const isTransactionPending =\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\";\n\n const handleCancelPressed = useCallback(() => {\n dispatchEvent(\"CANCEL_PRESSED\");\n }, [dispatchEvent]);\n\n const nextTotalStakedPLSXtokens = totalStakedPLSXtokens.add(amount);\n\n const poolShare = amount.mulDiv(100, nextTotalStakedPLSXtokens);\n\n return (\n \n \n PLSX Liquidity Farm\n {isDirty && !isTransactionPending && (\n setAmount(Decimal.from(0))}\n >\n \n \n )}\n \n\n \n setAmount(Decimal.from(amount))}\n maxAmount={maximumStake.toString()}\n maxedOut={hasSetMaximumStake}\n >\n\n {poolShare.infinite ? (\n \n ) : (\n \n )}\n\n {isDirty && }\n \n\n \n \n \n \n \n \n {isTransactionPending && }\n \n );\n};\n","import React, { useCallback, useState } from \"react\";\nimport { Heading, Box, Flex, Card, Button } from \"theme-ui\";\nimport {\n Decimal,\n Difference,\n LiquidLoansStoreState,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { LP, GT } from \"../../../../strings\";\nimport { Icon } from \"../../../Icon\";\nimport { EditableRow, StaticRow } from \"../../../Vault/Editor\";\nimport { LoadingOverlay } from \"../../../LoadingOverlay\";\nimport { useFarmView } from \"../../context/FarmViewContext\";\nimport { useMyTransactionState } from \"../../../Transaction\";\nimport { Confirm } from \"../Confirm\";\nimport { Description } from \"../Description\";\nimport { Approve } from \"../Approve\";\nimport { Validation } from \"../Validation\";\n\nconst selector = ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n PLSXtokenBalance,\n totalStakedPLSXtokens,\n}: LiquidLoansStoreState) => ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n PLSXtokenBalance,\n totalStakedPLSXtokens,\n});\n\nconst transactionId = /farm-/;\n\nexport const Adjusting: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n const {\n liquidityMiningStake,\n liquidityMiningLOANReward,\n PLSXtokenBalance,\n totalStakedPLSXtokens,\n } = useLiquidLoansSelector(selector);\n const [amount, setAmount] = useState(liquidityMiningStake);\n const editingState = useState();\n\n const transactionState = useMyTransactionState(transactionId);\n const isTransactionPending =\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\";\n const isDirty = !amount.eq(liquidityMiningStake);\n const maximumAmount = liquidityMiningStake.add(PLSXtokenBalance);\n const hasSetMaximumAmount = amount.eq(maximumAmount);\n\n const handleCancelPressed = useCallback(() => {\n dispatchEvent(\"CANCEL_PRESSED\");\n }, [dispatchEvent]);\n\n const nextTotalStakedPLSXtokens = isDirty\n ? totalStakedPLSXtokens.sub(liquidityMiningStake).add(amount)\n : totalStakedPLSXtokens;\n\n const originalPoolShare = liquidityMiningStake.mulDiv(\n 100,\n totalStakedPLSXtokens\n );\n const poolShare = amount.mulDiv(100, nextTotalStakedPLSXtokens);\n\n const poolShareChange =\n liquidityMiningStake.nonZero &&\n Difference.between(poolShare, originalPoolShare).nonZero;\n\n return (\n \n \n PLSX Liquidity Farm\n {isDirty && !isTransactionPending && (\n setAmount(liquidityMiningStake)}\n >\n \n \n )}\n \n\n \n setAmount(Decimal.from(amount))}\n maxAmount={maximumAmount.toString()}\n maxedOut={hasSetMaximumAmount}\n >\n\n {poolShare.infinite ? (\n \n ) : (\n \n )}\n\n \n\n {isDirty && }\n {isDirty && }\n\n \n \n \n \n \n \n {isTransactionPending && }\n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Button } from \"theme-ui\";\nimport { useLiquidLoans } from \"../../../../hooks/LiquidLoansContext\";\nimport { Transaction, useMyTransactionState } from \"../../../Transaction\";\nimport { useFarmView } from \"../../context/FarmViewContext\";\n\nconst transactionId = \"farm-claim-reward\";\n\nexport const ClaimReward: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n\n const {\n liquidLoans: { send: liquidLoans }\n } = useLiquidLoans();\n\n const transactionState = useMyTransactionState(transactionId);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"CLAIM_REWARD_CONFIRMED\");\n }\n }, [transactionState.type, dispatchEvent]);\n\n return (\n \n \n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Button } from \"theme-ui\";\nimport { useLiquidLoans } from \"../../../hooks/LiquidLoansContext\";\nimport { Transaction, useMyTransactionState } from \"../../Transaction\";\nimport { useFarmView } from \"../context/FarmViewContext\";\n\nconst transactionId = \"farm-unstake-and-claim\";\n\nexport const UnstakeAndClaim: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n\n const {\n liquidLoans: { send: liquidloans }\n } = useLiquidLoans();\n\n const transactionState = useMyTransactionState(transactionId);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"UNSTAKE_AND_CLAIM_CONFIRMED\");\n }\n }, [transactionState.type, dispatchEvent]);\n\n return (\n \n \n \n );\n};\n","import React, { useCallback } from \"react\";\nimport { Card, Heading, Box, Flex, Button } from \"theme-ui\";\nimport { LP, GT } from \"../../../../strings\";\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { Icon } from \"../../../Icon\";\nimport { LoadingOverlay } from \"../../../LoadingOverlay\";\nimport { useMyTransactionState } from \"../../../Transaction\";\nimport { DisabledEditableRow, StaticRow } from \"../../../Vault/Editor\";\nimport { useFarmView } from \"../../context/FarmViewContext\";\nimport { RemainingLOAN } from \"../RemainingLOAN\";\nimport { ClaimReward } from \"./ClaimReward\";\nimport { UnstakeAndClaim } from \"../UnstakeAndClaim\";\n\nconst selector = ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n totalStakedPLSXtokens,\n}: LiquidLoansStoreState) => ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n totalStakedPLSXtokens,\n});\nconst transactionId = /farm-/i;\n\nexport const Active: React.FC = () => {\n const { dispatchEvent } = useFarmView();\n const {\n liquidityMiningStake,\n liquidityMiningLOANReward,\n totalStakedPLSXtokens,\n } = useLiquidLoansSelector(selector);\n\n const handleAdjustPressed = useCallback(() => {\n dispatchEvent(\"ADJUST_PRESSED\");\n }, [dispatchEvent]);\n\n const transactionState = useMyTransactionState(transactionId);\n const isTransactionPending =\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\";\n\n const poolShare = liquidityMiningStake.mulDiv(100, totalStakedPLSXtokens);\n const hasStakeAndRewards =\n !liquidityMiningStake.isZero && !liquidityMiningLOANReward.isZero;\n\n return (\n \n \n PLSX Liquidity Farm\n {!isTransactionPending && (\n \n \n \n )}\n \n \n \n \n {poolShare.infinite ? (\n \n ) : (\n \n )}\n \n \n \n \n\n \n \n \n  Adjust\n \n {!liquidityMiningLOANReward.isZero && }\n \n {hasStakeAndRewards && }\n \n {isTransactionPending && }\n \n );\n};\n","import React from \"react\";\nimport { Card, Heading, Box, Flex } from \"theme-ui\";\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { InfoMessage } from \"../../../InfoMessage\";\nimport { UnstakeAndClaim } from \"../UnstakeAndClaim\";\nimport { RemainingLOAN } from \"../RemainingLOAN\";\nimport { StaticRow } from \"../../../Vault/Editor\";\nimport { GT, LP } from \"../../../../strings\";\n\nconst selector = ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n}: LiquidLoansStoreState) => ({\n liquidityMiningStake,\n liquidityMiningLOANReward,\n});\n\nexport const Disabled: React.FC = () => {\n const { liquidityMiningStake, liquidityMiningLOANReward } =\n useLiquidLoansSelector(selector);\n const hasStake = !liquidityMiningStake.isZero;\n\n return (\n \n \n PLSX Liquidity Farm\n \n \n \n \n \n \n There are no more LOAN rewards left to farm\n \n {hasStake && (\n <>\n \n \n \n \n \n \n )}\n \n \n );\n};\n","import React from \"react\";\nimport { Inactive } from \"./views/Inactive/Inactive\";\nimport { Staking } from \"./views/Staking/Staking\";\nimport { Adjusting } from \"./views/Adjusting/Adjusting\";\nimport { Active } from \"./views/Active/Active\";\nimport { Disabled } from \"./views/Disabled/Disabled\";\nimport { useFarmView } from \"./context/FarmViewContext\";\n\nexport const Farm: React.FC = props => {\n const { view } = useFarmView();\n\n switch (view) {\n case \"INACTIVE\": {\n return ;\n }\n case \"STAKING\": {\n return ;\n }\n case \"ADJUSTING\": {\n return ;\n }\n case \"ACTIVE\": {\n return ;\n }\n case \"DISABLED\": {\n return ;\n }\n }\n};\n","import { Container } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\nimport { Farm as FarmPanel } from \"../components/Farm/Farm\";\n\nexport const Farm: React.FC = () => (\n \n \n \n \n\n \n \n \n \n);\n","import React from \"react\";\nimport { Box, BoxProps } from \"theme-ui\";\n\ntype AbbreviationProps = BoxProps & {\n short: React.ReactNode;\n};\n\nexport const Abbreviation: React.FC = ({ children, short, ...boxProps }) => (\n \n \n {children}\n \n\n \n {short}\n \n \n);\n","import React, { useState } from \"react\";\nimport { Card, Box, Heading, Flex, Button, Label, Input } from \"theme-ui\";\n\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\n\nimport { Icon } from \"./Icon\";\nimport { Transaction } from \"./Transaction\";\n\nexport const LiquidationManager: React.FC = () => {\n const {\n liquidLoans: { send: liquidLoans },\n } = useLiquidLoans();\n const [numberOfVaultsToLiquidate, setNumberOfVaultsToLiquidate] =\n useState(\"90\");\n\n return (\n \n {\n if (!numberOfVaultsToLiquidate) {\n throw new Error(\"Invalid number\");\n }\n return liquidLoans.liquidateUpTo(\n parseInt(numberOfVaultsToLiquidate, 10),\n overrides\n );\n }}\n >\n \n \n \n );\n};\n","import React, { useState, useEffect, useCallback, Fragment } from \"react\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport {\n Card,\n Button,\n Text,\n Box,\n Heading,\n Flex,\n Divider,\n Select,\n} from \"theme-ui\";\n// import cardBg from \"../assets/images/bg/card-bg.png\";\n\nimport {\n Percent,\n MINIMUM_COLLATERAL_RATIO,\n CRITICAL_COLLATERAL_RATIO,\n UserVault,\n Decimal,\n} from \"@liquidloans/lib-base\";\nimport { BlockPolledLiquidLoansStoreState } from \"@liquidloans/lib-ethers\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { shortenAddress } from \"../utils/shortenAddress\";\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport { COIN } from \"../strings\";\n\nimport { Icon } from \"./Icon\";\nimport { LoadingOverlay } from \"./LoadingOverlay\";\nimport { Transaction, useMyTransactionState } from \"./Transaction\";\nimport { Tooltip } from \"./Tooltip\";\nimport { Abbreviation } from \"./Abbreviation\";\nimport { LiquidationManager } from \"./LiquidationManager\";\n\nconst rowHeight = \"40px\";\n\nconst liquidatableInNormalMode = (vault: UserVault, price: Decimal) =>\n [\n vault.collateralRatioIsBelowMinimum(price),\n \"Collateral ratio not low enough\",\n ] as const;\n\nconst liquidatableInRecoveryMode = (\n vault: UserVault,\n price: Decimal,\n totalCollateralRatio: Decimal,\n usdlInStabilityPool: Decimal\n) => {\n const collateralRatio = vault.collateralRatio(price);\n\n if (\n collateralRatio.gte(MINIMUM_COLLATERAL_RATIO) &&\n collateralRatio.lt(totalCollateralRatio)\n ) {\n return [\n vault.debt.lte(usdlInStabilityPool),\n \"There's not enough USDL in the Stability pool to cover the debt\",\n ] as const;\n } else {\n return liquidatableInNormalMode(vault, price);\n }\n};\n\ntype RiskyVaultsProps = {\n // pageSize: number;\n};\n\nconst select = ({\n numberOfVaults,\n price,\n total,\n usdlInStabilityPool,\n blockTag,\n}: BlockPolledLiquidLoansStoreState) => ({\n numberOfVaults,\n price,\n recoveryMode: total.collateralRatioIsBelowCritical(price),\n totalCollateralRatio: total.collateralRatio(price),\n usdlInStabilityPool,\n blockTag,\n});\n\nexport const RiskyVaults: React.FC = () =>\n // { pageSize }\n {\n const {\n blockTag,\n numberOfVaults,\n recoveryMode,\n totalCollateralRatio,\n usdlInStabilityPool,\n price,\n } = useLiquidLoansSelector(select);\n const { liquidLoans } = useLiquidLoans();\n const [pageSize, setPageSize] = useState(10);\n const [loading, setLoading] = useState(true);\n const [vaults, setVaults] = useState();\n const [transactionId, setTransactionId] = useState(\"\");\n let transactionState = useMyTransactionState(transactionId);\n\n const [reload, setReload] = useState({});\n const forceReload = useCallback(() => setReload({}), []);\n\n const [page, setPage] = useState(0);\n const numberOfPages = Math.ceil(numberOfVaults / pageSize) || 1;\n const clampedPage = Math.min(page, numberOfPages - 1);\n\n const nextPage = () => {\n if (clampedPage < numberOfPages - 1) {\n setPage(clampedPage + 1);\n }\n };\n\n const previousPage = () => {\n if (clampedPage > 0) {\n setPage(clampedPage - 1);\n }\n };\n\n useEffect(() => {\n if (page !== clampedPage) {\n setPage(clampedPage);\n }\n }, [page, clampedPage]);\n\n useEffect(() => {\n let mounted = true;\n\n setLoading(true);\n\n liquidLoans\n .getVaults(\n {\n first: pageSize,\n sortedBy: \"ascendingCollateralRatio\",\n startingAt: clampedPage * pageSize,\n },\n { blockTag }\n )\n .then((vaults: React.SetStateAction) => {\n if (mounted) {\n setVaults(vaults);\n setLoading(false);\n }\n });\n\n return () => {\n mounted = false;\n };\n // Omit blockTag from deps on purpose\n // eslint-disable-next-line\n }, [liquidLoans, clampedPage, pageSize, reload]);\n\n useEffect(() => {\n forceReload();\n }, [forceReload, numberOfVaults]);\n\n const [copied, setCopied] = useState();\n\n useEffect(() => {\n if (copied !== undefined) {\n let cancelled = false;\n\n setTimeout(() => {\n if (!cancelled) {\n setCopied(undefined);\n }\n }, 2000);\n\n return () => {\n cancelled = true;\n };\n }\n }, [copied]);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n forceReload();\n }\n }, [transactionState?.type]);\n\n return (\n \n \n \n Risky Vaults\n \n \n \n {\n setPageSize(Number(e.target.value));\n }}\n >\n \n \n \n \n \n \n \n\n {!vaults || vaults.length === 0 ? (\n \n \n {!vaults ? \"Loading...\" : \"There are no Vaults yet\"}\n \n \n ) : (\n \n \n \n \n \n \n \n \n \n\n \n \n Owner\n \n Collateral\n \n PLS\n \n \n \n Debt\n \n {COIN}\n \n \n \n Coll.\n
\n Ratio\n \n \n \n \n\n \n {vaults.map(\n (vault) =>\n !vault.isEmpty && ( // making sure the Vault hasn't been liquidated\n // (TODO: remove check after we can fetch multiple Vaults in one call)\n \n \n \n \n {shortenAddress(vault.ownerAddress)}\n \n \n \n\n {/* setCopied(vault.ownerAddress)}\n >\n \n \n \n */}\n \n \n \n {vault.collateral.prettify(2)}\n \n \n \n \n {vault.debt.prettify()}\n \n \n \n {((collateralRatio) => (\n \n {new Percent(collateralRatio).prettify()}\n \n ))(vault.collateralRatio(price))}\n \n \n {\n setTransactionId(\n `liquidate-${vault.ownerAddress}`\n );\n }}\n >\n \n \n Liquidate\n \n \n \n \n \n )\n )}\n \n \n \n {vaults.map(\n (vault, i) =>\n !vault.isEmpty && (\n \n \n \n Owner\n \n {\" \"}\n \n \n {shortenAddress(vault.ownerAddress)}\n \n \n \n {/* setCopied(vault.ownerAddress)}\n >\n \n \n \n */}\n \n \n \n Collateral PLS\n\n \n {vault.collateral.prettify(2)}\n \n \n \n Debt USDL\n\n \n {vault.debt.prettify()}\n \n \n \n Collateral Ratio\n\n {((collateralRatio) => (\n \n {new Percent(collateralRatio).prettify()}\n \n ))(vault.collateralRatio(price))}\n \n \n {\n setTransactionId(\n `liquidate-${vault.ownerAddress}`\n );\n }}\n >\n \n \n \n \n \n \n \n \n )\n )}\n \n \n {numberOfVaults !== 0 && (\n <>\n \n {clampedPage * pageSize + 1}-\n {Math.min((clampedPage + 1) * pageSize, numberOfVaults)} of{\" \"}\n {numberOfVaults}\n \n\n \n \n \n\n = numberOfPages - 1}\n >\n \n \n \n )}\n\n \n \n \n \n \n
\n )}\n\n {loading && }\n \n );\n };\n","import React from \"react\";\nimport { Container, Card, Box, Paragraph, Heading } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\nimport { LiquidationManager } from \"../components/LiquidationManager\";\nimport { RiskyVaults } from \"../components/RiskyVaults\";\nimport { InfoMessage } from \"../components/InfoMessage\";\nimport bgImage from \"../assets/images/bg/liquidation.png\";\n\nexport const RiskyVaultsPage: React.FC = () => (\n \n \n \n Liquidations\n \n \n {/* \n \n \n \n Liquidation is expected to be carried out by bots.\n \n \n Early on you may be able to manually liquidate Vaults, but as the\n system matures this will become less likely.\n \n \n \n */}\n {/* */}\n \n \n\n \n \n \n \n);\n","import { Box, Card, Heading, Paragraph, Text } from \"theme-ui\";\n\nimport { InfoMessage } from \"../InfoMessage\";\nimport { Icon } from \"../Icon\";\n\ntype DisabledRedemptionProps = {\n disabledDays: number;\n unlockDate: Date;\n};\n\nexport const DisabledRedemption: React.FC = ({\n disabledDays,\n unlockDate,\n}) => (\n \n Redeem\n\n \n \n \n \n }\n >\n \n USDL redemption is disabled for the first {disabledDays} days after\n launch.\n \n\n \n It will be unlocked at{\" \"}\n \n {unlockDate.toLocaleString()}\n \n .\n \n \n \n \n);\n","import { Button } from \"theme-ui\";\n\nimport { Decimal } from \"@liquidloans/lib-base\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\ntype RedemptionActionProps = {\n transactionId: string;\n disabled?: boolean;\n usdlAmount: Decimal;\n maxRedemptionRate: Decimal;\n};\n\nexport const RedemptionAction: React.FC = ({\n transactionId,\n disabled,\n usdlAmount,\n maxRedemptionRate\n}) => {\n const {\n liquidLoans: { send: liquidLoans }\n } = useLiquidLoans();\n\n const [sendTransaction] = useTransactionFunction(\n transactionId,\n liquidLoans.redeemUSDL.bind(liquidLoans, usdlAmount, maxRedemptionRate)\n );\n\n return (\n \n );\n};\n","import { Decimal } from \"@liquidloans/lib-base\";\nimport React, { useState } from \"react\";\nimport { Box, Button, Flex, useThemeUI } from \"theme-ui\";\n\ntype TabProps = {\n value: Decimal;\n setFinalValue: (value: Decimal) => void;\n};\n\nconst PercentageSelector: React.FC = ({ value, setFinalValue }) => {\n const handleButtonClick = (percentage: number) => {\n try {\n \n const calculatedValue: Decimal = value\n .mul(Decimal.from(percentage))\n .div(Decimal.from(100));\n \n setFinalValue(calculatedValue);\n setSelectedPer(percentage);\n } catch (error) {\n }\n };\n const [selectedPer, setSelectedPer] = useState(0);\n\n return (\n \n {[25, 50, 75, 100].map((percentage) => (\n handleButtonClick(percentage)}\n >\n {percentage}%\n \n ))}\n \n );\n};\n\nexport default PercentageSelector;\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Box, Flex, Card, Heading, Text } from \"theme-ui\";\n\nimport {\n Decimal,\n Percent,\n LiquidLoansStoreState,\n MINIMUM_COLLATERAL_RATIO,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN } from \"../../strings\";\n\nimport { Icon } from \"../Icon\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\nimport { EditableRow, StaticRow } from \"../Vault/Editor\";\nimport { ActionDescription, Amount } from \"../ActionDescription\";\nimport { ErrorDescription } from \"../ErrorDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\n\nimport { RedemptionAction } from \"./RedemptionAction\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport PercentageSelector from \"../PercentageSelector\";\n\nconst mcrPercent = new Percent(MINIMUM_COLLATERAL_RATIO).toString(0);\n\nconst select = ({\n price,\n fees,\n total,\n usdlBalance,\n}: LiquidLoansStoreState) => ({\n price,\n fees,\n total,\n usdlBalance,\n});\n\nconst transactionId = \"redemption\";\n\nexport const RedemptionManager: React.FC = () => {\n const { price, fees, total, usdlBalance } = useLiquidLoansSelector(select);\n const [usdlAmount, setUSDLAmount] = useState(Decimal.ZERO);\n const [changePending, setChangePending] = useState(false);\n const editingState = useState();\n\n const dirty = !usdlAmount.isZero;\n const ethAmount = usdlAmount.div(price);\n const redemptionRate = fees.redemptionRate(usdlAmount.div(total.debt));\n const feePct = new Percent(redemptionRate);\n const ethFee = ethAmount.mul(redemptionRate);\n const maxRedemptionRate = redemptionRate.add(0.001); // TODO slippage tolerance\n\n const myTransactionState = useMyTransactionState(transactionId);\n\n useEffect(() => {\n if (\n myTransactionState.type === \"waitingForApproval\" ||\n myTransactionState.type === \"waitingForConfirmation\"\n ) {\n setChangePending(true);\n } else if (\n myTransactionState.type === \"failed\" ||\n myTransactionState.type === \"cancelled\"\n ) {\n setChangePending(false);\n } else if (myTransactionState.type === \"confirmed\") {\n setUSDLAmount(Decimal.ZERO);\n setChangePending(false);\n }\n }, [myTransactionState.type, setChangePending, setUSDLAmount]);\n\n const [canRedeem, description] = total.collateralRatioIsBelowMinimum(price)\n ? [\n false,\n \n You can't redeem USDL when the total collateral ratio is less than{\" \"}\n {mcrPercent}. Please try again later.\n ,\n ]\n : usdlAmount.gt(usdlBalance)\n ? [\n false,\n \n The amount you're trying to redeem exceeds your balance by{\" \"}\n \n {usdlAmount.sub(usdlBalance).prettify()} {COIN}\n \n .\n ,\n ]\n : [\n true,\n \n You will receive{\" \"}\n {ethAmount.sub(ethFee).prettify(2)} PLS in exchange\n for{\" \"}\n \n {usdlAmount.prettify()} {COIN}\n \n .\n ,\n ];\n\n return (\n \n \n Redeem PLS\n\n \n setUSDLAmount(Decimal.from(amount))}\n />\n\n {(\n [\n // [\"PLS\", accountBalance],\n [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n {usdlBalance.prettify()} {currency}\n \n \n ))}\n\n {\n setUSDLAmount(Decimal.from(amount));\n }}\n />\n \n \n The Redemption Fee is charged as a percentage of the\n redeemed Pulse. The Redemption Fee depends on USDL\n redemption volumes and is 0.5% at minimum.\n \n }\n />\n }\n />\n \n {((dirty || !canRedeem) && description) || (\n \n Enter the amount of {COIN} you'd like to redeem.\n \n )}\n {dirty && !changePending && (\n setUSDLAmount(Decimal.ZERO)}\n >\n \n \n )}\n \n \n \n \n {changePending && }\n \n \n \n \n About Redemptions\n\n \n Redemptions are one of Liquid Loans most unique and important\n protocol features. The redemption mechanism gives USDL holders the\n ability to redeem the underlying PLS collateral at face value at any\n time.\n
\n
Redemptions pay off the debt of the riskiest Vaults, in\n return for their collateral.\n
\n \n \n \n \n \n {/*
a
*/}\n {/* } /> */}\n \n \n \n
\n\n \n IMPORTANT : Redemptions are not the same as paying back your\n Vault’s debt. To repay your loan, adjust your Vault on the Repay\n tab of the Borrow USDL page.\n \n \n
\n \n \n \n );\n};\n","import { BlockPolledLiquidLoansStoreState } from \"@liquidloans/lib-ethers\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { DisabledRedemption } from \"./DisabledRedemption\";\nimport { RedemptionManager } from \"./RedemptionManager\";\n\nconst SECONDS_IN_ONE_DAY = 24 * 60 * 60;\n\nconst selectBlockTimestamp = ({ blockTimestamp }: BlockPolledLiquidLoansStoreState) => blockTimestamp;\n\nexport const Redemption: React.FC = () => {\n const {\n liquidLoans: {\n connection: { deploymentDate, bootstrapPeriod }\n }\n } = useLiquidLoans();\n\n const blockTimestamp = useLiquidLoansSelector(selectBlockTimestamp);\n\n const bootstrapPeriodDays = Math.round(bootstrapPeriod / SECONDS_IN_ONE_DAY);\n const deploymentTime = deploymentDate.getTime() / 1000;\n const bootstrapEndTime = deploymentTime + bootstrapPeriod;\n const bootstrapEndDate = new Date(bootstrapEndTime * 1000);\n const redemptionDisabled = blockTimestamp < bootstrapEndTime;\n\n if (redemptionDisabled) {\n return ;\n }\n\n return ;\n};\n","import React from \"react\";\nimport { Box, Card, Container, Heading, Link, Paragraph } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\nimport { Redemption } from \"../components/Redemption/Redemption\";\nimport { InfoMessage } from \"../components/InfoMessage\";\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\nimport { Icon } from \"../components/Icon\";\nimport bgImage from \"../assets/images/bg/redemption.png\";\n\nconst uniLink = (usdlAddress: string) =>\n `https://app.uniswap.org/#/swap?inputCurrency=${usdlAddress}&outputCurrency=PLS`;\n\nexport const RedemptionPage: React.FC = () => {\n const {\n liquidLoans: {\n connection: { addresses },\n },\n } = useLiquidLoans();\n\n return (\n \n \n \n Exchange 1 USDL Stablecoin For 1 USD Worth Of PLS\n \n \n {/* \n \n \n \n Redemptions are expected to be carried out by bots when\n arbitrage opportunities emerge.\n \n \n Most of the time you will get a better rate for converting USDL\n to PLS on{\" \"}\n \n PLSX \n {\" \"}\n or other exchanges.\n \n \n Note: Redemption is not for repaying your loan.\n To repay your loan, adjust your Vault on the{\" \"}\n Dashboard.\n \n \n \n */}\n \n \n\n \n \n \n \n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { VaultView, VaultEvent } from \"./types\";\n\ntype VaultViewContextType = {\n view: VaultView;\n dispatchEvent: (event: VaultEvent) => void;\n};\n\nexport const VaultViewContext = createContext(\n null\n);\n\nexport const useVaultView = (): VaultViewContextType => {\n const context: VaultViewContextType | null = useContext(VaultViewContext);\n\n if (context === null) {\n throw new Error(\"You must add a into the React tree\");\n }\n\n return context;\n};\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { LiquidLoansStoreState, UserVaultStatus } from \"@liquidloans/lib-base\";\nimport { VaultViewContext } from \"./VaultViewContext\";\nimport type { VaultView, VaultEvent } from \"./types\";\n\ntype VaultEventTransitions = Record<\n VaultView,\n Partial>\n>;\n\nconst transitions: VaultEventTransitions = {\n NONE: {\n OPEN_VAULT_PRESSED: \"OPENING\",\n VAULT_OPENED: \"ACTIVE\",\n },\n LIQUIDATED: {\n OPEN_VAULT_PRESSED: \"OPENING\",\n VAULT_SURPLUS_COLLATERAL_CLAIMED: \"NONE\",\n VAULT_OPENED: \"ACTIVE\",\n },\n REDEEMED: {\n OPEN_VAULT_PRESSED: \"OPENING\",\n VAULT_SURPLUS_COLLATERAL_CLAIMED: \"NONE\",\n VAULT_OPENED: \"ACTIVE\",\n },\n OPENING: {\n CANCEL_ADJUST_VAULT_PRESSED: \"NONE\",\n VAULT_OPENED: \"ACTIVE\",\n },\n ADJUSTING: {\n CANCEL_ADJUST_VAULT_PRESSED: \"ACTIVE\",\n VAULT_ADJUSTED: \"ACTIVE\",\n VAULT_CLOSED: \"NONE\",\n VAULT_LIQUIDATED: \"LIQUIDATED\",\n VAULT_REDEEMED: \"REDEEMED\",\n },\n CLOSING: {\n CANCEL_ADJUST_VAULT_PRESSED: \"ACTIVE\",\n VAULT_CLOSED: \"NONE\",\n VAULT_ADJUSTED: \"ACTIVE\",\n VAULT_LIQUIDATED: \"LIQUIDATED\",\n VAULT_REDEEMED: \"REDEEMED\",\n },\n ACTIVE: {\n ADJUST_VAULT_PRESSED: \"ADJUSTING\",\n CLOSE_VAULT_PRESSED: \"CLOSING\",\n VAULT_CLOSED: \"NONE\",\n VAULT_LIQUIDATED: \"LIQUIDATED\",\n VAULT_REDEEMED: \"REDEEMED\",\n },\n};\n\ntype VaultStateEvents = Partial>;\n\nconst vaultStatusEvents: VaultStateEvents = {\n open: \"VAULT_OPENED\",\n closedByOwner: \"VAULT_CLOSED\",\n closedByLiquidation: \"VAULT_LIQUIDATED\",\n closedByRedemption: \"VAULT_REDEEMED\",\n};\n\nconst transition = (view: VaultView, event: VaultEvent): VaultView => {\n const nextView = transitions[view][event] ?? view;\n return nextView;\n};\n\nconst getInitialView = (vaultStatus: UserVaultStatus): VaultView => {\n if (vaultStatus === \"closedByLiquidation\") {\n return \"LIQUIDATED\";\n }\n if (vaultStatus === \"closedByRedemption\") {\n return \"REDEEMED\";\n }\n if (vaultStatus === \"open\") {\n return \"ACTIVE\";\n }\n return \"NONE\";\n};\n\nconst select = ({ vault: { status } }: LiquidLoansStoreState) => status;\n\nexport const VaultViewProvider: React.FC = (props) => {\n const { children } = props;\n const vaultStatus = useLiquidLoansSelector(select);\n\n const [view, setView] = useState(getInitialView(vaultStatus));\n const viewRef = useRef(view);\n\n const dispatchEvent = useCallback((event: VaultEvent) => {\n const nextView = transition(viewRef.current, event);\n\n console.log(\n \"dispatchEvent() [current-view, event, next-view]\",\n viewRef.current,\n event,\n nextView\n );\n setView(nextView);\n }, []);\n\n useEffect(() => {\n viewRef.current = view;\n }, [view]);\n\n useEffect(() => {\n const event = vaultStatusEvents[vaultStatus] ?? null;\n if (event !== null) {\n dispatchEvent(event);\n }\n }, [vaultStatus, dispatchEvent]);\n\n const provider = {\n view,\n dispatchEvent,\n };\n return (\n \n {children}\n \n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { StabilityView, StabilityEvent } from \"./types\";\n\ntype StabilityViewContextType = {\n view: StabilityView;\n dispatchEvent: (event: StabilityEvent) => void;\n};\n\nexport const StabilityViewContext = createContext(null);\n\nexport const useStabilityView = (): StabilityViewContextType => {\n const context: StabilityViewContextType | null = useContext(StabilityViewContext);\n\n if (context === null) {\n throw new Error(\"You must add a into the React tree\");\n }\n\n return context;\n};\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { LiquidLoansStoreState, StabilityDeposit } from \"@liquidloans/lib-base\";\nimport { StabilityViewContext } from \"./StabilityViewContext\";\nimport type { StabilityView, StabilityEvent } from \"./types\";\n\ntype StabilityEventTransitions = Record<\n StabilityView,\n Partial>\n>;\n\nconst transitions: StabilityEventTransitions = {\n NONE: {\n DEPOSIT_PRESSED: \"DEPOSITING\"\n },\n DEPOSITING: {\n CANCEL_PRESSED: \"NONE\",\n DEPOSIT_CONFIRMED: \"ACTIVE\"\n },\n ACTIVE: {\n REWARDS_CLAIMED: \"ACTIVE\",\n ADJUST_DEPOSIT_PRESSED: \"ADJUSTING\",\n DEPOSIT_EMPTIED: \"NONE\"\n },\n ADJUSTING: {\n CANCEL_PRESSED: \"ACTIVE\",\n DEPOSIT_CONFIRMED: \"ACTIVE\",\n DEPOSIT_EMPTIED: \"NONE\"\n }\n};\n\nconst transition = (view: StabilityView, event: StabilityEvent): StabilityView => {\n const nextView = transitions[view][event] ?? view;\n return nextView;\n};\n\nconst getInitialView = (stabilityDeposit: StabilityDeposit): StabilityView => {\n return stabilityDeposit.isEmpty ? \"NONE\" : \"ACTIVE\";\n};\n\nconst select = ({ stabilityDeposit }: LiquidLoansStoreState): StabilityDeposit => stabilityDeposit;\n\nexport const StabilityViewProvider: React.FC = props => {\n const { children } = props;\n const stabilityDeposit = useLiquidLoansSelector(select);\n\n const [view, setView] = useState(getInitialView(stabilityDeposit));\n const viewRef = useRef(view);\n\n const dispatchEvent = useCallback((event: StabilityEvent) => {\n const nextView = transition(viewRef.current, event);\n\n console.log(\n \"dispatchEvent() [current-view, event, next-view]\",\n viewRef.current,\n event,\n nextView\n );\n setView(nextView);\n }, []);\n\n useEffect(() => {\n viewRef.current = view;\n }, [view]);\n\n useEffect(() => {\n if (stabilityDeposit.isEmpty) {\n dispatchEvent(\"DEPOSIT_EMPTIED\");\n }\n }, [stabilityDeposit.isEmpty, dispatchEvent]);\n\n const provider = {\n view,\n dispatchEvent\n };\n\n return {children};\n};\n","import { createContext, useContext } from \"react\";\n\nexport type StakingView = \"ACTIVE\" | \"ADJUSTING\" | \"NONE\";\n\nexport type StakingViewAction = { type: \"startAdjusting\" | \"cancelAdjusting\" };\n\nexport type StakingViewContextType = {\n view: StakingView;\n\n // Indicates that a staking TX is pending.\n // The panel should be covered with a spinner overlay when this is true.\n changePending: boolean;\n\n // Dispatch an action that changes the Staking panel's view.\n dispatch: (action: StakingViewAction) => void;\n};\n\nexport const StakingViewContext = createContext(null);\n\nexport const useStakingView = (): StakingViewContextType => {\n const context = useContext(StakingViewContext);\n\n if (context === null) {\n throw new Error(\"You must add a into the React tree\");\n }\n\n return context;\n};\n","import { useEffect } from \"react\";\n\nimport { LiquidLoansStoreState, LOANStake } from \"@liquidloans/lib-base\";\nimport {\n LiquidLoansStoreUpdate,\n useLiquidLoansReducer,\n} from \"@liquidloans/lib-react\";\n\nimport { useMyTransactionState } from \"../../Transaction\";\n\nimport { StakingViewAction, StakingViewContext } from \"./StakingViewContext\";\n\ntype StakingViewProviderAction =\n | LiquidLoansStoreUpdate\n | StakingViewAction\n | { type: \"startChange\" | \"abortChange\" };\n\ntype StakingViewProviderState = {\n loanStake: LOANStake;\n changePending: boolean;\n adjusting: boolean;\n};\n\nconst init = ({\n loanStake,\n}: LiquidLoansStoreState): StakingViewProviderState => ({\n loanStake,\n changePending: false,\n adjusting: false,\n});\n\nconst reduce = (\n state: StakingViewProviderState,\n action: StakingViewProviderAction\n): StakingViewProviderState => {\n // console.log(state);\n // console.log(action);\n\n switch (action.type) {\n case \"startAdjusting\":\n return { ...state, adjusting: true };\n\n case \"cancelAdjusting\":\n return { ...state, adjusting: false };\n\n case \"startChange\":\n return { ...state, changePending: true };\n\n case \"abortChange\":\n return { ...state, changePending: false };\n\n case \"updateStore\": {\n const {\n oldState: { loanStake: oldStake },\n stateChange: { loanStake: updatedStake },\n } = action;\n\n if (updatedStake) {\n const changeCommitted =\n !updatedStake.stakedLOAN.eq(oldStake.stakedLOAN) ||\n updatedStake.collateralGain.lt(oldStake.collateralGain) ||\n updatedStake.usdlGain.lt(oldStake.usdlGain);\n console.log(\"*****************************************************\");\n console.log(updatedStake.stakedLOAN.toString());\n console.log(oldStake.stakedLOAN.toString());\n console.log(changeCommitted);\n return {\n ...state,\n loanStake: updatedStake,\n adjusting: false,\n changePending: changeCommitted ? false : state.changePending,\n };\n }\n }\n }\n\n return state;\n};\n\nexport const StakingViewProvider: React.FC = ({ children }) => {\n const stakingTransactionState = useMyTransactionState(\"stake\");\n const [{ adjusting, changePending, loanStake }, dispatch] =\n useLiquidLoansReducer(reduce, init);\n\n useEffect(() => {\n if (\n stakingTransactionState.type === \"waitingForApproval\" ||\n stakingTransactionState.type === \"waitingForConfirmation\"\n ) {\n dispatch({ type: \"startChange\" });\n } else if (\n stakingTransactionState.type === \"failed\" ||\n stakingTransactionState.type === \"cancelled\"\n ) { \n dispatch({ type: \"abortChange\" });\n } else if (\n stakingTransactionState.type === \"confirmed\"\n ) {\n dispatch({ type: \"abortChange\" });\n dispatch({ type: \"cancelAdjusting\" });\n }\n }, [stakingTransactionState.type, dispatch]);\n\n return (\n \n {children}\n \n );\n};\n","type InactiveView = \"INACTIVE\";\ntype StakingView = \"STAKING\";\ntype ActiveView = \"ACTIVE\";\ntype AdjustingView = \"ADJUSTING\";\ntype DisabledView = \"DISABLED\";\n\nexport type FarmView = InactiveView | StakingView | ActiveView | AdjustingView | DisabledView;\n\ntype StakePressedEvent = \"STAKE_PRESSED\";\ntype AdjustPressedEvent = \"ADJUST_PRESSED\";\ntype CancelPressedEvent = \"CANCEL_PRESSED\";\ntype StakeApprovedEvent = \"STAKE_APPROVED\";\ntype StakeConfirmedEvent = \"STAKE_CONFIRMED\";\ntype ClaimRewardConfirmedEvent = \"CLAIM_REWARD_CONFIRMED\";\ntype UnstakeConfirmedEvent = \"UNSTAKE_CONFIRMED\";\ntype UnstakeAndClaimConfirmedEvent = \"UNSTAKE_AND_CLAIM_CONFIRMED\";\n\nexport type FarmEvent =\n | StakePressedEvent\n | AdjustPressedEvent\n | CancelPressedEvent\n | StakeApprovedEvent\n | StakeConfirmedEvent\n | ClaimRewardConfirmedEvent\n | UnstakeConfirmedEvent\n | UnstakeAndClaimConfirmedEvent;\n\ntype FarmEventTransitions = Record>>;\n\nexport const transitions: FarmEventTransitions = {\n INACTIVE: {\n STAKE_PRESSED: \"STAKING\"\n },\n STAKING: {\n CANCEL_PRESSED: \"INACTIVE\",\n STAKE_CONFIRMED: \"ACTIVE\",\n STAKE_APPROVED: \"STAKING\"\n },\n ACTIVE: {\n ADJUST_PRESSED: \"ADJUSTING\",\n CLAIM_REWARD_CONFIRMED: \"ACTIVE\",\n UNSTAKE_AND_CLAIM_CONFIRMED: \"INACTIVE\"\n },\n ADJUSTING: {\n CANCEL_PRESSED: \"ACTIVE\",\n STAKE_CONFIRMED: \"ACTIVE\",\n STAKE_APPROVED: \"ADJUSTING\",\n UNSTAKE_CONFIRMED: \"ACTIVE\"\n },\n DISABLED: {\n CLAIM_REWARD_CONFIRMED: \"DISABLED\",\n UNSTAKE_AND_CLAIM_CONFIRMED: \"DISABLED\"\n }\n};\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport { LiquidLoansStoreState, Decimal } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { FarmViewContext } from \"./FarmViewContext\";\nimport { transitions } from \"./transitions\";\nimport type { FarmView, FarmEvent } from \"./transitions\";\n\nconst transition = (view: FarmView, event: FarmEvent): FarmView => {\n const nextView = transitions[view][event] ?? view;\n return nextView;\n};\n\nconst getInitialView = (\n liquidityMiningStake: Decimal,\n remainingLiquidityMiningLOANReward: Decimal,\n liquidityMiningLOANReward: Decimal\n): FarmView => {\n if (remainingLiquidityMiningLOANReward.isZero) return \"DISABLED\";\n if (liquidityMiningStake.isZero && liquidityMiningLOANReward.isZero) return \"INACTIVE\";\n return \"ACTIVE\";\n};\n\nconst selector = ({\n liquidityMiningStake,\n remainingLiquidityMiningLOANReward,\n liquidityMiningLOANReward\n}: LiquidLoansStoreState) => ({\n liquidityMiningStake,\n remainingLiquidityMiningLOANReward,\n liquidityMiningLOANReward\n});\n\nexport const FarmViewProvider: React.FC = props => {\n const { children } = props;\n const {\n liquidityMiningStake,\n remainingLiquidityMiningLOANReward,\n liquidityMiningLOANReward\n } = useLiquidLoansSelector(selector);\n\n const [view, setView] = useState(\n getInitialView(\n liquidityMiningStake,\n remainingLiquidityMiningLOANReward,\n liquidityMiningLOANReward\n )\n );\n const viewRef = useRef(view);\n\n const dispatchEvent = useCallback((event: FarmEvent) => {\n const nextView = transition(viewRef.current, event);\n\n console.log(\n \"dispatchEvent() [current-view, event, next-view]\",\n viewRef.current,\n event,\n nextView\n );\n setView(nextView);\n }, []);\n\n useEffect(() => {\n viewRef.current = view;\n }, [view]);\n\n useEffect(() => {\n if (liquidityMiningStake.isZero && liquidityMiningLOANReward.isZero) {\n dispatchEvent(\"UNSTAKE_AND_CLAIM_CONFIRMED\");\n } else if (liquidityMiningStake.isZero && !liquidityMiningLOANReward.isZero) {\n dispatchEvent(\"UNSTAKE_CONFIRMED\");\n }\n }, [liquidityMiningStake.isZero, liquidityMiningLOANReward.isZero, dispatchEvent]);\n\n const provider = {\n view,\n dispatchEvent\n };\n\n return {children};\n};\n","import React from \"react\";\nimport { Flex, Image } from \"theme-ui\";\nimport BaristaLogo from \"../assets/images/barista-logo.png\";\nimport MenuNavLinks from \"./MenuNavLinks\";\nimport { Link } from \"react-router-dom\";\n\ntype Props = {};\n\nfunction SideBar({}: Props) {\n const spanStyle = {\n padding: '10px', // You can adjust the padding value as needed\n };\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nexport default SideBar;\n","import { useEffect, useState } from \"react\";\nimport { Decimal, VaultChange } from \"@liquidloans/lib-base\";\n\ntype ValidVaultChange = Exclude, { type: \"invalidCreation\" }>;\n\nconst paramsEq = (a?: Decimal, b?: Decimal) => (a && b ? a.eq(b) : !a && !b);\n\nconst equals = (a: ValidVaultChange, b: ValidVaultChange): boolean => {\n return (\n a.type === b.type &&\n paramsEq(a.params.borrowUSDL, b.params.borrowUSDL) &&\n paramsEq(a.params.repayUSDL, b.params.repayUSDL) &&\n paramsEq(a.params.depositCollateral, b.params.depositCollateral) &&\n paramsEq(a.params.withdrawCollateral, b.params.withdrawCollateral)\n );\n};\n\nexport const useStableVaultChange = (\n vaultChange: ValidVaultChange | undefined\n): ValidVaultChange | undefined => {\n const [stableVaultChange, setStableVaultChange] = useState(vaultChange);\n\n useEffect(() => {\n if (!!stableVaultChange !== !!vaultChange) {\n setStableVaultChange(vaultChange);\n } else if (stableVaultChange && vaultChange && !equals(stableVaultChange, vaultChange)) {\n setStableVaultChange(vaultChange);\n }\n }, [stableVaultChange, vaultChange]);\n\n return stableVaultChange;\n};\n","import { Button } from \"theme-ui\";\n\nimport { Decimal, VaultChange } from \"@liquidloans/lib-base\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\ntype VaultActionProps = {\n transactionId: string;\n change: Exclude, { type: \"invalidCreation\" }>;\n maxBorrowingRate: Decimal;\n borrowingFeeDecayToleranceMinutes: number;\n};\n\nexport const VaultAction: React.FC = ({\n children,\n transactionId,\n change,\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes\n}) => {\n const { liquidLoans } = useLiquidLoans();\n\n const [sendTransaction] = useTransactionFunction(\n transactionId,\n change.type === \"creation\"\n ? liquidLoans.send.openVault.bind(liquidLoans.send, change.params, {\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes\n })\n : change.type === \"closure\"\n ? liquidLoans.send.closeVault.bind(liquidLoans.send)\n : liquidLoans.send.adjustVault.bind(liquidLoans.send, change.params, {\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes\n })\n );\n\n return ;\n};\n","import React from \"react\";\nimport { Flex, Box, Card } from \"theme-ui\";\n\nimport {\n CRITICAL_COLLATERAL_RATIO,\n Decimal,\n Difference,\n Percent,\n Vault\n} from \"@liquidloans/lib-base\";\n\nimport { Icon } from \"../Icon\";\n\nimport { StaticRow } from \"./Editor\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport { ActionDescription } from \"../ActionDescription\";\n\ntype CollateralRatioProps = {\n value?: Decimal;\n change?: Difference;\n};\n\nexport const CollateralRatio: React.FC = ({\n value,\n change,\n}) => {\n const collateralRatioPct = new Percent(value ?? { toString: () => \"0.00\" });\n const changePct = change && new Percent(change);\n\n return (\n // <>\n // \n // \n // \n // \n\n \n The ratio between the dollar value of the collateral and the debt\n (in USDL) you are depositing. While the Minimum Collateral Ratio\n is 110% during normal operation, it is recommended to keep the\n Collateral Ratio always above 150% to avoid liquidation under\n Recovery Mode. A Collateral Ratio above 200% or 250% is\n recommended for additional safety.\n \n }\n />\n }\n />\n // \n // {value?.lt(1.5) && (\n // \n // Keeping your CR above 150% can help avoid liquidation under Recovery\n // Mode.\n // \n // )}\n // \n );\n};\n","import { Box, Flex, Text, useThemeUI } from \"theme-ui\";\n\nimport { Icon } from \"./Icon\";\n\nexport const Warning: React.FC = ({ children }) => {\n const theme = useThemeUI();\n return (\n \n \n \n {children}\n \n \n );\n};\n","import React, { useEffect } from \"react\";\n\nimport { Decimal, VaultChange } from \"@liquidloans/lib-base\";\nimport { PopulatedEthersLiquidLoansTransaction } from \"@liquidloans/lib-ethers\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { Warning } from \"../Warning\";\n\nexport type GasEstimationState =\n | { type: \"idle\" | \"inProgress\" }\n | { type: \"complete\"; populatedTx: PopulatedEthersLiquidLoansTransaction };\n\ntype ExpensiveVaultChangeWarningParams = {\n vaultChange?: Exclude, { type: \"invalidCreation\" }>;\n maxBorrowingRate: Decimal;\n borrowingFeeDecayToleranceMinutes: number;\n gasEstimationState: GasEstimationState;\n setGasEstimationState: (newState: GasEstimationState) => void;\n};\n\nexport const ExpensiveVaultChangeWarning: React.FC<\n ExpensiveVaultChangeWarningParams\n> = ({\n vaultChange,\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes,\n gasEstimationState,\n setGasEstimationState,\n}) => {\n const { liquidLoans } = useLiquidLoans();\n\n useEffect(() => {\n if (vaultChange && vaultChange.type !== \"closure\") {\n setGasEstimationState({ type: \"inProgress\" });\n\n let cancelled = false;\n\n const timeoutId = setTimeout(async () => {\n const populatedTx = await (vaultChange.type === \"creation\"\n ? liquidLoans.populate.openVault(vaultChange.params, {\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes,\n })\n : liquidLoans.populate.adjustVault(vaultChange.params, {\n maxBorrowingRate,\n borrowingFeeDecayToleranceMinutes,\n }));\n\n if (!cancelled) {\n setGasEstimationState({ type: \"complete\", populatedTx });\n console.log(\n \"Estimated TX cost: \" +\n Decimal.from(\n `${populatedTx.rawPopulatedTransaction.gasLimit}`\n ).prettify(0)\n );\n }\n }, 333);\n\n return () => {\n clearTimeout(timeoutId);\n cancelled = true;\n };\n } else {\n setGasEstimationState({ type: \"idle\" });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vaultChange]);\n\n if (\n vaultChange &&\n gasEstimationState.type === \"complete\" &&\n gasEstimationState.populatedTx.gasHeadroom !== undefined &&\n gasEstimationState.populatedTx.gasHeadroom >= 200000\n ) {\n return vaultChange.type === \"creation\" ? (\n \n The cost of opening a Vault in this collateral ratio range is rather\n high. To lower it, choose a slightly different collateral ratio.\n \n ) : (\n \n The cost of adjusting a Vault into this collateral ratio range is rather\n high. To lower it, choose a slightly different collateral ratio.\n \n );\n }\n\n return null;\n};\n","import {\n Decimal,\n USDL_MINIMUM_DEBT,\n USDL_MINIMUM_NET_DEBT,\n Vault,\n VaultAdjustmentParams,\n VaultChange,\n Percent,\n MINIMUM_COLLATERAL_RATIO,\n CRITICAL_COLLATERAL_RATIO,\n LiquidLoansStoreState,\n VaultClosureParams,\n VaultCreationParams,\n} from \"@liquidloans/lib-base\";\n\nimport { COIN } from \"../../../strings\";\n\nimport { ActionDescription, Amount } from \"../../ActionDescription\";\nimport { ErrorDescription } from \"../../ErrorDescription\";\n\nconst mcrPercent = new Percent(MINIMUM_COLLATERAL_RATIO).toString(0);\nconst ccrPercent = new Percent(CRITICAL_COLLATERAL_RATIO).toString(0);\n\ntype VaultAdjustmentDescriptionParams = {\n params: VaultAdjustmentParams;\n};\n\nconst VaultChangeDescription: React.FC = ({\n params,\n}) => (\n \n {params.depositCollateral && params.borrowUSDL ? (\n <>\n You will deposit{\" \"}\n {params.depositCollateral.prettify()} PLS and receive{\" \"}\n \n {params.borrowUSDL.prettify()} {COIN}\n \n \n ) : params.repayUSDL && params.withdrawCollateral ? (\n <>\n You will pay{\" \"}\n \n {params.repayUSDL.prettify()} {COIN}\n {\" \"}\n and receive {params.withdrawCollateral.prettify()} PLS\n \n ) : params.depositCollateral && params.repayUSDL ? (\n <>\n You will deposit{\" \"}\n {params.depositCollateral.prettify()} PLS and pay{\" \"}\n \n {params.repayUSDL.prettify()} {COIN}\n \n \n ) : params.borrowUSDL && params.withdrawCollateral ? (\n <>\n You will receive{\" \"}\n {params.withdrawCollateral.prettify()} PLS and{\" \"}\n \n {params.borrowUSDL.prettify()} {COIN}\n \n \n ) : params.depositCollateral ? (\n <>\n You will deposit{\" \"}\n {params.depositCollateral.prettify()} PLS\n \n ) : params.withdrawCollateral ? (\n <>\n You will receive{\" \"}\n {params.withdrawCollateral.prettify()} PLS\n \n ) : params.borrowUSDL ? (\n <>\n You will receive{\" \"}\n \n {params.borrowUSDL.prettify()} {COIN}\n \n \n ) : (\n <>\n You will pay{\" \"}\n \n {params.repayUSDL.prettify()} {COIN}\n \n \n )}\n .\n \n);\n\nexport const selectForVaultChangeValidation = ({\n price,\n total,\n accountBalance,\n usdlBalance,\n numberOfVaults,\n}: LiquidLoansStoreState) => ({\n price,\n total,\n accountBalance,\n usdlBalance,\n numberOfVaults,\n});\n\ntype VaultChangeValidationSelectedState = ReturnType<\n typeof selectForVaultChangeValidation\n>;\n\ninterface VaultChangeValidationContext\n extends VaultChangeValidationSelectedState {\n originalVault: Vault;\n resultingVault: Vault;\n recoveryMode: boolean;\n wouldTriggerRecoveryMode: boolean;\n}\n\nexport const validateVaultChange = (\n originalVault: Vault,\n adjustedVault: Vault,\n borrowingRate: Decimal,\n selectedState: VaultChangeValidationSelectedState\n): [\n validChange:\n | Exclude, { type: \"invalidCreation\" }>\n | undefined,\n description: JSX.Element | undefined\n] => {\n const { total, price } = selectedState;\n const change = originalVault.whatChanged(adjustedVault, borrowingRate);\n\n if (!change) {\n return [undefined, undefined];\n }\n\n // Reapply change to get the exact state the Vault will end up in (which could be slightly\n // different from `edited` due to imprecision).\n const resultingVault = originalVault.apply(change, borrowingRate);\n const recoveryMode = total.collateralRatioIsBelowCritical(price);\n const wouldTriggerRecoveryMode = total\n .subtract(originalVault)\n .add(resultingVault)\n .collateralRatioIsBelowCritical(price);\n\n const context: VaultChangeValidationContext = {\n ...selectedState,\n originalVault,\n resultingVault,\n recoveryMode,\n wouldTriggerRecoveryMode,\n };\n\n if (change.type === \"invalidCreation\") {\n // Trying to create a Vault with negative net debt\n return [\n undefined,\n \n Total debt must be at least{\" \"}\n \n {USDL_MINIMUM_DEBT.toString()} {COIN}\n \n .\n ,\n ];\n }\n\n const errorDescription =\n change.type === \"creation\"\n ? validateVaultCreation(change.params, context)\n : change.type === \"closure\"\n ? validateVaultClosure(change.params, context)\n : validateVaultAdjustment(change.params, context);\n\n if (errorDescription) {\n return [undefined, errorDescription];\n }\n\n return [change, ];\n};\n\nconst validateVaultCreation = (\n { depositCollateral, borrowUSDL }: VaultCreationParams,\n {\n resultingVault,\n recoveryMode,\n wouldTriggerRecoveryMode,\n accountBalance,\n price,\n }: VaultChangeValidationContext\n): JSX.Element | null => {\n if (borrowUSDL.lt(USDL_MINIMUM_NET_DEBT)) {\n return (\n \n You must borrow at least{\" \"}\n \n {USDL_MINIMUM_NET_DEBT.toString()} {COIN}\n \n .\n \n );\n }\n\n if (recoveryMode) {\n if (!resultingVault.isOpenableInRecoveryMode(price)) {\n return (\n \n You're not allowed to open a Vault with less than{\" \"}\n {ccrPercent} Collateral Ratio during recovery mode.\n Please increase your Vault's Collateral Ratio.\n \n );\n }\n } else {\n if (resultingVault.collateralRatioIsBelowMinimum(price)) {\n return (\n \n Collateral ratio must be at least {mcrPercent}.\n \n );\n }\n\n if (wouldTriggerRecoveryMode) {\n return (\n \n You're not allowed to open a Vault that would cause the Total\n Collateral Ratio to fall below {ccrPercent}. Please\n increase your Vault's Collateral Ratio.\n \n );\n }\n }\n\n if (depositCollateral.gt(accountBalance)) {\n return (\n \n The amount you're trying to deposit exceeds your balance by{\" \"}\n {depositCollateral.sub(accountBalance).prettify()} PLS.\n \n );\n }\n\n return null;\n};\n\nconst validateVaultAdjustment = (\n {\n depositCollateral,\n withdrawCollateral,\n borrowUSDL,\n repayUSDL,\n }: VaultAdjustmentParams,\n {\n originalVault,\n resultingVault,\n recoveryMode,\n wouldTriggerRecoveryMode,\n price,\n accountBalance,\n usdlBalance,\n }: VaultChangeValidationContext\n): JSX.Element | null => {\n if (recoveryMode) {\n if (withdrawCollateral) {\n return (\n \n You're not allowed to withdraw collateral during recovery mode.\n \n );\n }\n\n if (borrowUSDL) {\n if (resultingVault.collateralRatioIsBelowCritical(price)) {\n return (\n \n Your collateral ratio must be at least {ccrPercent}{\" \"}\n to borrow during recovery mode. Please improve your collateral\n ratio.\n \n );\n }\n\n if (\n resultingVault\n .collateralRatio(price)\n .lt(originalVault.collateralRatio(price))\n ) {\n return (\n \n You're not allowed to decrease your collateral ratio during recovery\n mode.\n \n );\n }\n }\n } else {\n if (resultingVault.collateralRatioIsBelowMinimum(price)) {\n return (\n \n Collateral ratio must be at least {mcrPercent}.\n \n );\n }\n\n if (wouldTriggerRecoveryMode) {\n return (\n \n The adjustment you're trying to make would cause the Total Collateral\n Ratio to fall below {ccrPercent}. Please increase\n your Vault's Collateral Ratio.\n \n );\n }\n }\n\n if (repayUSDL) {\n if (resultingVault.debt.lt(USDL_MINIMUM_DEBT)) {\n return (\n \n Total debt must be at least{\" \"}\n \n {USDL_MINIMUM_DEBT.toString()} {COIN}\n \n .\n \n );\n }\n\n if (repayUSDL.gt(usdlBalance)) {\n return (\n \n The amount you're trying to repay exceeds your balance by{\" \"}\n \n {repayUSDL.sub(usdlBalance).prettify()} {COIN}\n \n .\n \n );\n }\n }\n\n if (depositCollateral?.gt(accountBalance)) {\n return (\n \n The amount you're trying to deposit exceeds your balance by{\" \"}\n {depositCollateral.sub(accountBalance).prettify()} PLS.\n \n );\n }\n\n return null;\n};\n\nconst validateVaultClosure = (\n { repayUSDL }: VaultClosureParams,\n {\n recoveryMode,\n wouldTriggerRecoveryMode,\n numberOfVaults,\n usdlBalance,\n }: VaultChangeValidationContext\n): JSX.Element | null => {\n if (numberOfVaults === 1) {\n return (\n \n You're not allowed to close your Vault when there are no other Vaults in\n the system.\n \n );\n }\n\n if (recoveryMode) {\n return (\n \n You're not allowed to close your Vault during recovery mode.\n \n );\n }\n\n if (repayUSDL?.gt(usdlBalance)) {\n return (\n \n You need{\" \"}\n \n {repayUSDL.sub(usdlBalance).prettify()} {COIN}\n {\" \"}\n more to close your Vault.\n \n );\n }\n\n if (wouldTriggerRecoveryMode) {\n return (\n \n You're not allowed to close a Vault if it would cause the Total\n Collateralization Ratio to fall below {ccrPercent}.\n Please wait until the Total Collateral Ratio increases.\n \n );\n }\n\n return null;\n};\n","import React, { useState } from \"react\";\nimport { Flex, Box, Text, ThemeUIStyleObject } from \"theme-ui\";\n\ntype TabsProps = {\n tabs: string[];\n currentTab: string;\n disabledTab?: string;\n setCurrentTab: (value: string) => void;\n};\n\nconst tabStyle: ThemeUIStyleObject = {\n width: \"100%\",\n cursor: \"pointer\",\n p: 2,\n transition: \"border-color 0.3s\",\n fontSize: [\"14px\", null, null, \"20px\"],\n mb: \"20px\",\n};\n\nconst Tabs: React.FC = ({\n tabs,\n currentTab,\n setCurrentTab,\n disabledTab,\n}) => {\n const handleClick = (tab: string) => {\n setCurrentTab(tab);\n };\n\n return (\n \n {tabs.map((tab, index) => (\n {\n if (disabledTab !== tab) {\n handleClick(tab);\n }\n }}\n >\n {tab}\n \n ))}\n \n );\n};\n\nexport default Tabs;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Flex, Button, Box, Card, Heading, Spinner, Text } from \"theme-ui\";\nimport {\n LiquidLoansStoreState,\n Decimal,\n Vault,\n USDL_LIQUIDATION_RESERVE,\n USDL_MINIMUM_NET_DEBT,\n Percent,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useStableVaultChange } from \"../../hooks/useStableVaultChange\";\nimport { ActionDescription } from \"../ActionDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\nimport { VaultAction } from \"./VaultAction\";\nimport { useVaultView } from \"./context/VaultViewContext\";\nimport { COIN } from \"../../strings\";\nimport { Icon } from \"../Icon\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\nimport { CollateralRatio } from \"./CollateralRatio\";\nimport { EditableRow, StaticRow } from \"./Editor\";\nimport {\n ExpensiveVaultChangeWarning,\n GasEstimationState,\n} from \"./ExpensiveVaultChangeWarning\";\nimport {\n selectForVaultChangeValidation,\n validateVaultChange,\n} from \"./validation/validateVaultChange\";\nimport Tabs from \"../Tabs\";\nimport PercentageSelector from \"../PercentageSelector\";\n\nconst selector = (state: LiquidLoansStoreState) => {\n const { fees, price, accountBalance, usdlBalance } = state;\n return {\n fees,\n price,\n accountBalance,\n usdlBalance,\n validationContext: selectForVaultChangeValidation(state),\n };\n};\n\nconst EMPTY_VAULT = new Vault(Decimal.ZERO, Decimal.ZERO);\nconst TRANSACTION_ID = \"vault-creation\";\nconst GAS_ROOM_PLS = Decimal.from(0.1);\n\ntype OpeningProps = {\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n};\n\nexport const Opening: React.FC = ({\n tabs,\n currentTab,\n setCurrentTab,\n}) => {\n const { dispatchEvent } = useVaultView();\n const { fees, price, accountBalance, usdlBalance, validationContext } =\n useLiquidLoansSelector(selector);\n const borrowingRate = fees.borrowingRate();\n const editingState = useState();\n\n const [collateral, setCollateral] = useState(Decimal.ZERO);\n const [borrowAmount, setBorrowAmount] = useState(Decimal.ZERO);\n const dummyvalue = 10000;\n const [dummyPerc, setDummyPerc] = useState(25);\n const maxBorrowingRate = borrowingRate.add(0.005);\n const fee = borrowAmount.mul(borrowingRate);\n const feePct = new Percent(borrowingRate);\n const liquidationReserve = borrowAmount.gt(0) ? USDL_LIQUIDATION_RESERVE : 0\n\n const percentDeci = borrowingRate.div(1e18);\n\n const totalDebt = borrowAmount.add(liquidationReserve).add(fee);\n const isDirty = !collateral.isZero || !borrowAmount.isZero;\n const vault = isDirty ? new Vault(collateral, totalDebt) : EMPTY_VAULT;\n const maxCollateral = accountBalance.gt(GAS_ROOM_PLS)\n ? accountBalance.sub(GAS_ROOM_PLS)\n : Decimal.ZERO;\n const collateralMaxedOut = collateral.eq(maxCollateral);\n const collateralRatio =\n !collateral.isZero && !borrowAmount.isZero\n ? vault.collateralRatio(price)\n : undefined;\n\n const [vaultChange, description] = validateVaultChange(\n EMPTY_VAULT,\n vault,\n borrowingRate,\n validationContext\n );\n\n const stableVaultChange = useStableVaultChange(vaultChange);\n const [gasEstimationState, setGasEstimationState] =\n useState({ type: \"idle\" });\n\n const transactionState = useMyTransactionState(TRANSACTION_ID);\n const isTransactionPending =\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\";\n\n const handleCancelPressed = useCallback(() => {\n dispatchEvent(\"CANCEL_ADJUST_VAULT_PRESSED\");\n }, [dispatchEvent]);\n\n const reset = useCallback(() => {\n setCollateral(Decimal.ZERO);\n setBorrowAmount(Decimal.ZERO);\n }, []);\n\n // useEffect(() => {\n // if (!collateral.isZero) {\n // // borrowUSDL = (depositPLS * price)/1.5 - (reserves - Borrowing_Fee)\n // let temp = collateral.mul(price).div(Decimal.from(1.5));\n // let temp2 = USDL_LIQUIDATION_RESERVE.gt(fee)\n // ? USDL_LIQUIDATION_RESERVE.sub(fee)\n // : Decimal.from(0);\n // let temp3 = temp.gt(temp2) ? temp.sub(temp2) : Decimal.from(0);\n // setBorrowAmount(temp3);\n // }\n // }, [collateral]);\n\n return (\n \n \n Your Vault\n\n \n \n {\n setCollateral(Decimal.from(amount));\n if (!Decimal.from(amount).isZero) {\n // borrowUSDL = (depositPLS * price)/1.5 - (reserves - Borrowing_Fee)\n let temp = Decimal.from(amount)\n .mul(price)\n .div(Decimal.from(1.5));\n let temp2 = USDL_LIQUIDATION_RESERVE.gt(fee)\n ? USDL_LIQUIDATION_RESERVE.sub(fee)\n : Decimal.from(0);\n let temp3 = temp.gt(temp2) ? temp.sub(temp2) : Decimal.from(0);\n const borrowAmount = Number(temp3.sub(temp3.mul(borrowingRate)))\n setBorrowAmount( Decimal.from(borrowAmount) );\n }\n }}\n />\n {(\n [\n [\"PLS\", accountBalance],\n // [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))}\n {\n setCollateral(amount);\n if (!amount.isZero) {\n // borrowUSDL = (depositPLS * price)/1.5 - (reserves - Borrowing_Fee)\n let temp = amount.mul(price).div(Decimal.from(1.5));\n let temp2 = USDL_LIQUIDATION_RESERVE.gt(fee)\n ? USDL_LIQUIDATION_RESERVE.sub(fee)\n : Decimal.from(0);\n let temp3 = temp.gt(temp2) ? temp.sub(temp2) : Decimal.from(0);\n const borrowAmount = Number(temp3.sub(temp3.mul(borrowingRate)))\n setBorrowAmount( Decimal.from(borrowAmount) );\n }\n }}\n />\n \n setBorrowAmount(Decimal.from(amount))\n }\n />\n {(\n [\n // [\"PLS\", accountBalance],\n [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))}\n\n {description ?? (\n \n Start by entering the amount of PLS you'd like to deposit as\n collateral.\n \n )}\n\n \n {collateralRatio?.lt(1.5) && (\n \n Keeping your CR above 150% can help avoid liquidation under\n Recovery Mode.\n \n )}\n {isDirty && !isTransactionPending && (\n \n \n \n )}\n \n\n \n\n \n {/* */}\n\n {gasEstimationState.type === \"inProgress\" ? (\n \n ) : stableVaultChange ? (\n \n Confirm\n \n ) : (\n \n )}\n \n {isTransactionPending && }\n \n \n \n \n \n Your Transaction Stats\n \n\n \n \n \n This amount is deducted from the borrowed amount as a\n one-time fee. There are no recurring fees for borrowing,\n which is thus interest-free.\n \n }\n />\n }\n />\n\n \n An amount set aside to cover the liquidator’s gas costs if\n your Vault needs to be liquidated. The amount increases\n your debt and is refunded if you close your Vault by fully\n paying off its net debt.\n \n }\n />\n }\n />\n\n \n\n \n The total amount of USDL your Vault will hold.{\" \"}\n {isDirty && (\n <>\n You will need to repay{\" \"}\n {totalDebt.sub(liquidationReserve).prettify(2)}{\" \"}\n USDL to reclaim your collateral (\n {liquidationReserve.toString()} USDL Liquidation\n Reserve excluded).\n \n )}\n \n }\n />\n }\n />\n \n \n \n Your Vault Stats\n\n \n \n \n Total USDL Borrowed\n \n }\n />\n }\n />\n\n \n\n \n\n \n \n \n \n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Button, Flex, Spinner } from \"theme-ui\";\n\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useLiquidLoans } from \"../hooks/LiquidLoansContext\";\n\nimport { Transaction, useMyTransactionState } from \"./Transaction\";\nimport { useVaultView } from \"./Vault/context/VaultViewContext\";\n\nconst select = ({ collateralSurplusBalance }: LiquidLoansStoreState) => ({\n collateralSurplusBalance\n});\n\nexport const CollateralSurplusAction: React.FC = () => {\n const { collateralSurplusBalance } = useLiquidLoansSelector(select);\n const {\n liquidLoans: { send: liquidLoans }\n } = useLiquidLoans();\n\n const myTransactionId = \"claim-coll-surplus\";\n const myTransactionState = useMyTransactionState(myTransactionId);\n\n const { dispatchEvent } = useVaultView();\n\n useEffect(() => {\n if (myTransactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"VAULT_SURPLUS_COLLATERAL_CLAIMED\");\n }\n }, [myTransactionState.type, dispatchEvent]);\n\n return myTransactionState.type === \"waitingForApproval\" ? (\n \n \n \n ) : myTransactionState.type !== \"waitingForConfirmation\" &&\n myTransactionState.type !== \"confirmed\" ? (\n \n \n \n \n \n ) : null;\n};\n","import React from \"react\";\nimport { Heading, Box, Card } from \"theme-ui\";\n\nimport {\n Percent,\n Difference,\n Decimalish,\n Decimal,\n Vault,\n LiquidLoansStoreState,\n USDL_LIQUIDATION_RESERVE,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN } from \"../../strings\";\n\nimport { StaticRow } from \"./Editor\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\nimport { CollateralRatio } from \"./CollateralRatio\";\nimport { InfoIcon } from \"../InfoIcon\";\n\ntype VaultEditorProps = {\n original: Vault;\n edited: Vault;\n fee: Decimal;\n borrowingRate: Decimal;\n changePending: boolean;\n dispatch: (\n action:\n | { type: \"setCollateral\" | \"setDebt\"; newValue: Decimalish }\n | { type: \"revert\" }\n ) => void;\n};\n\nconst select = ({ price }: LiquidLoansStoreState) => ({ price });\n\nexport const VaultEditor: React.FC = ({\n children,\n original,\n edited,\n fee,\n borrowingRate,\n changePending,\n}) => {\n\n const { price } = useLiquidLoansSelector(select);\n const feePct = new Percent(borrowingRate);\n\n const originalCollateralRatio = !original.isEmpty\n ? original.collateralRatio(price)\n : undefined;\n const collateralRatio = !edited.isEmpty\n ? edited.collateralRatio(price)\n : undefined;\n const collateralRatioChange = Difference.between(\n collateralRatio,\n originalCollateralRatio\n );\n\n return (\n \n {/* Vault\n\n \n \n\n \n\n {original.isEmpty && (\n \n An amount set aside to cover the liquidator’s gas costs if\n your Vault needs to be liquidated. The amount increases your\n debt and is refunded if you close your Vault by fully paying\n off its net debt.\n \n }\n />\n }\n />\n )}\n\n \n This amount is deducted from the borrowed amount as a one-time\n fee. There are no recurring fees for borrowing, which is thus\n interest-free.\n \n }\n />\n }\n />\n\n \n\n {children}\n \n\n {changePending && } */}\n {children}\n \n );\n};\n","import { useCallback, useEffect } from \"react\";\nimport { Flex, Button } from \"theme-ui\";\n\nimport {\n LiquidLoansStoreState,\n Decimal,\n Vault,\n Decimalish,\n USDL_MINIMUM_DEBT,\n} from \"@liquidloans/lib-base\";\n\nimport {\n LiquidLoansStoreUpdate,\n useLiquidLoansReducer,\n useLiquidLoansSelector,\n} from \"@liquidloans/lib-react\";\n\nimport { ActionDescription } from \"../ActionDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\n\nimport { VaultEditor } from \"./VaultEditor\";\nimport { VaultAction } from \"./VaultAction\";\nimport { useVaultView } from \"./context/VaultViewContext\";\n\nimport {\n selectForVaultChangeValidation,\n validateVaultChange,\n} from \"./validation/validateVaultChange\";\n\nconst init = ({ vault }: LiquidLoansStoreState) => ({\n original: vault,\n edited: new Vault(vault.collateral, vault.debt),\n changePending: false,\n debtDirty: false,\n addedMinimumDebt: false,\n});\n\ntype VaultManagerState = ReturnType;\ntype VaultManagerAction =\n | LiquidLoansStoreUpdate\n | {\n type:\n | \"startChange\"\n | \"finishChange\"\n | \"revert\"\n | \"addMinimumDebt\"\n | \"removeMinimumDebt\";\n }\n | { type: \"setCollateral\" | \"setDebt\"; newValue: Decimalish };\n\nconst reduceWith =\n (action: VaultManagerAction) =>\n (state: VaultManagerState): VaultManagerState =>\n reduce(state, action);\n\nconst addMinimumDebt = reduceWith({ type: \"addMinimumDebt\" });\nconst removeMinimumDebt = reduceWith({ type: \"removeMinimumDebt\" });\nconst finishChange = reduceWith({ type: \"finishChange\" });\nconst revert = reduceWith({ type: \"revert\" });\n\nconst reduce = (\n state: VaultManagerState,\n action: VaultManagerAction\n): VaultManagerState => {\n // console.log(state);\n // console.log(action);\n\n const { original, edited, changePending, debtDirty, addedMinimumDebt } =\n state;\n\n switch (action.type) {\n case \"startChange\": {\n console.log(\"starting change\");\n return { ...state, changePending: true };\n }\n\n case \"finishChange\":\n return { ...state, changePending: false };\n\n case \"setCollateral\": {\n const newCollateral = Decimal.from(action.newValue);\n\n const newState = {\n ...state,\n edited: edited.setCollateral(newCollateral),\n };\n\n if (!debtDirty) {\n if (edited.isEmpty && newCollateral.nonZero) {\n return addMinimumDebt(newState);\n }\n if (addedMinimumDebt && newCollateral.isZero) {\n return removeMinimumDebt(newState);\n }\n }\n\n return newState;\n }\n\n case \"setDebt\":\n return {\n ...state,\n edited: edited.setDebt(action.newValue),\n debtDirty: true,\n };\n\n case \"addMinimumDebt\":\n return {\n ...state,\n edited: edited.setDebt(USDL_MINIMUM_DEBT),\n addedMinimumDebt: true,\n };\n\n case \"removeMinimumDebt\":\n return {\n ...state,\n edited: edited.setDebt(0),\n addedMinimumDebt: false,\n };\n\n case \"revert\":\n return {\n ...state,\n edited: new Vault(original.collateral, original.debt),\n debtDirty: false,\n addedMinimumDebt: false,\n };\n\n case \"updateStore\": {\n const {\n newState: { vault },\n stateChange: { vaultBeforeRedistribution: changeCommitted },\n } = action;\n\n const newState = {\n ...state,\n original: vault,\n };\n\n if (changePending && changeCommitted) {\n return finishChange(revert(newState));\n }\n\n const change = original.whatChanged(edited, 0);\n\n if (\n (change?.type === \"creation\" && !vault.isEmpty) ||\n (change?.type === \"closure\" && vault.isEmpty)\n ) {\n return revert(newState);\n }\n\n return { ...newState, edited: vault.apply(change, 0) };\n }\n }\n};\n\nconst feeFrom = (\n original: Vault,\n edited: Vault,\n borrowingRate: Decimal\n): Decimal => {\n const change = original.whatChanged(edited, borrowingRate);\n\n if (change && change.type !== \"invalidCreation\" && change.params.borrowUSDL) {\n return change.params.borrowUSDL.mul(borrowingRate);\n } else {\n return Decimal.ZERO;\n }\n};\n\nconst select = (state: LiquidLoansStoreState) => ({\n fees: state.fees,\n validationContext: selectForVaultChangeValidation(state),\n});\n\nconst transactionIdPrefix = \"vault-\";\nconst transactionIdMatcher = new RegExp(`^${transactionIdPrefix}`);\n\ntype VaultManagerProps = {\n collateral?: Decimalish;\n debt?: Decimalish;\n};\n\nexport const VaultManager: React.FC = ({\n collateral,\n debt,\n}) => {\n const [{ original, edited, changePending }, dispatch] = useLiquidLoansReducer(\n reduce,\n init\n );\n const { fees, validationContext } = useLiquidLoansSelector(select);\n\n useEffect(() => {\n if (collateral !== undefined) {\n dispatch({ type: \"setCollateral\", newValue: collateral });\n }\n if (debt !== undefined) {\n dispatch({ type: \"setDebt\", newValue: debt });\n }\n }, [collateral, debt, dispatch]);\n\n const borrowingRate = fees.borrowingRate();\n const maxBorrowingRate = borrowingRate.add(0.005); // TODO slippage tolerance\n\n const [validChange, description] = validateVaultChange(\n original,\n edited,\n borrowingRate,\n validationContext\n );\n\n const { dispatchEvent } = useVaultView();\n\n const handleCancel = useCallback(() => {\n dispatchEvent(\"CANCEL_ADJUST_VAULT_PRESSED\");\n }, [dispatchEvent]);\n\n const openingNewVault = original.isEmpty;\n\n const myTransactionState = useMyTransactionState(transactionIdMatcher);\n\n useEffect(() => {\n if (\n myTransactionState.type === \"waitingForApproval\" ||\n myTransactionState.type === \"waitingForConfirmation\"\n ) {\n dispatch({ type: \"startChange\" });\n } else if (\n myTransactionState.type === \"failed\" ||\n myTransactionState.type === \"cancelled\"\n ) {\n dispatch({ type: \"finishChange\" });\n } else if (myTransactionState.type === \"confirmedOneShot\") {\n if (myTransactionState.id === `${transactionIdPrefix}closure`) {\n dispatchEvent(\"VAULT_CLOSED\");\n } else {\n dispatchEvent(\"VAULT_ADJUSTED\");\n }\n }\n }, [myTransactionState, dispatch, dispatchEvent]);\n\n return (\n \n {description ??\n (openingNewVault ? (\n \n Start by entering the amount of PLS you'd like to deposit as\n collateral.\n \n ) : (\n \n Adjust your Vault by modifying its collateral, debt, or both.\n \n ))}\n\n \n {/* */}\n\n {validChange ? (\n \n Close\n \n ) : (\n \n )}\n \n \n );\n};\n","import React, {\n useCallback,\n useEffect,\n useState,\n useRef,\n useReducer,\n} from \"react\";\nimport { Flex, Button, Box, Card, Heading, Text } from \"theme-ui\";\nimport {\n LiquidLoansStoreState,\n Decimal,\n Vault,\n USDL_LIQUIDATION_RESERVE,\n Percent,\n Difference,\n USDL_MINIMUM_NET_DEBT,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useStableVaultChange } from \"../../hooks/useStableVaultChange\";\nimport { ActionDescription } from \"../ActionDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\nimport { VaultAction } from \"./VaultAction\";\nimport { useVaultView } from \"./context/VaultViewContext\";\nimport { COIN } from \"../../strings\";\nimport { Icon } from \"../Icon\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\nimport { CollateralRatio } from \"./CollateralRatio\";\nimport { EditableRow, StaticRow } from \"./Editor\";\nimport {\n ExpensiveVaultChangeWarning,\n GasEstimationState,\n} from \"./ExpensiveVaultChangeWarning\";\nimport {\n selectForVaultChangeValidation,\n validateVaultChange,\n} from \"./validation/validateVaultChange\";\nimport Tabs from \"../Tabs\";\nimport PercentageSelector from \"../PercentageSelector\";\nimport { InfoMessage } from \"../InfoMessage\";\nimport { CollateralSurplusAction } from \"../CollateralSurplusAction\";\nimport { VaultManager } from \"./VaultManager\";\n\nconst selector = (state: LiquidLoansStoreState) => {\n const {\n vault,\n fees,\n price,\n accountBalance,\n usdlBalance,\n collateralSurplusBalance,\n } = state;\n return {\n vault,\n fees,\n price,\n accountBalance,\n usdlBalance,\n hasSurplusCollateral: !collateralSurplusBalance.isZero,\n validationContext: selectForVaultChangeValidation(state),\n };\n};\n\nconst TRANSACTION_ID = \"vault-adjustment\";\nconst GAS_ROOM_PLS = Decimal.from(0.1);\n\nconst feeFrom = (\n original: Vault,\n edited: Vault,\n borrowingRate: Decimal\n): Decimal => {\n const change = original.whatChanged(edited, borrowingRate);\n\n if (change && change.type !== \"invalidCreation\" && change.params.borrowUSDL) {\n return change.params.borrowUSDL.mul(borrowingRate);\n } else {\n return Decimal.ZERO;\n }\n};\n\nconst applyUnsavedCollateralChanges = (\n unsavedChanges: Difference,\n vault: Vault\n) => {\n if (unsavedChanges.absoluteValue) {\n if (unsavedChanges.positive) {\n return vault.collateral.add(unsavedChanges.absoluteValue);\n }\n if (unsavedChanges.negative) {\n if (unsavedChanges.absoluteValue.lt(vault.collateral)) {\n return vault.collateral.sub(unsavedChanges.absoluteValue);\n }\n }\n return vault.collateral;\n }\n return vault.collateral;\n};\n\nconst applyUnsavedNetDebtChanges = (\n unsavedChanges: Difference,\n vault: Vault\n) => {\n if (unsavedChanges.absoluteValue) {\n if (unsavedChanges.positive) {\n return vault.netDebt.add(unsavedChanges.absoluteValue);\n }\n if (unsavedChanges.negative) {\n if (unsavedChanges.absoluteValue.lt(vault.netDebt)) {\n return vault.netDebt.sub(unsavedChanges.absoluteValue);\n }\n }\n return vault.netDebt;\n }\n return vault.netDebt;\n};\ntype AdjustingProps = {\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n view: string;\n};\n\nexport const Adjusting: React.FC = ({\n tabs,\n currentTab,\n setCurrentTab,\n view,\n}) => {\n const { dispatchEvent } = useVaultView();\n const {\n vault,\n fees,\n price,\n accountBalance,\n usdlBalance,\n validationContext,\n hasSurplusCollateral,\n } = useLiquidLoansSelector(selector);\n const editingState = useState();\n const previousVault = useRef(vault);\n const [collateral, setCollateral] = useState(vault.collateral);\n const [collateralEntered, setCollateralEntered] = useState(\n Decimal.from(0)\n );\n const [netDebt, setNetDebt] = useState(vault.netDebt);\n const [netDebtEntered, setNetDebtEntered] = useState(\n Decimal.from(0)\n );\n const transactionState = useMyTransactionState(TRANSACTION_ID);\n const borrowingRate = fees.borrowingRate();\n\n useEffect(() => {\n // console.log(transactionState.type);\n // alert(collateral.toString());\n if (transactionState.type === \"confirmedOneShot\") {\n dispatchEvent(\"VAULT_ADJUSTED\");\n // const [, rerender] = useReducer(() => ({}), {});\n // rerender();\n\n // reset();\n }\n if (transactionState.type === \"idle\") {\n // dispatchEvent(\"VAULT_ADJUSTED\");\n // const [, rerender] = useReducer(() => ({}), {});\n // rerender();\n\n reset();\n }\n }, [transactionState.type, dispatchEvent]);\n\n useEffect(() => {\n reset();\n }, [currentTab]);\n\n // useEffect(() => {\n // if (!previousVault.current.collateral.eq(vault.collateral)) {\n // const unsavedChanges = Difference.between(\n // collateral,\n // previousVault.current.collateral\n // );\n // const nextCollateral = applyUnsavedCollateralChanges(\n // unsavedChanges,\n // vault\n // );\n // setCollateral(nextCollateral);\n // setCollateralEntered(nextCollateral.add(collateralEntered));\n // }\n // if (!previousVault.current.netDebt.eq(vault.netDebt)) {\n // const unsavedChanges = Difference.between(\n // netDebt,\n // previousVault.current.netDebt\n // );\n // const nextNetDebt = applyUnsavedNetDebtChanges(unsavedChanges, vault);\n // setNetDebt(nextNetDebt);\n // setNetDebtEntered(nextNetDebt.add(netDebtEntered));\n // }\n // }, [vault, collateral, netDebt]);\n\n const handleCancelPressed = useCallback(() => {\n dispatchEvent(\"CANCEL_ADJUST_VAULT_PRESSED\");\n }, [dispatchEvent]);\n\n const reset = useCallback(() => {\n setCollateral(vault.collateral);\n setCollateralEntered(Decimal.from(0));\n setNetDebt(vault.netDebt);\n setNetDebtEntered(Decimal.from(0));\n }, [vault.collateral, vault.netDebt]);\n\n const isDirty =\n !collateral.eq(vault.collateral) || !netDebt.eq(vault.netDebt);\n const isDebtIncrease = netDebt.gt(vault.netDebt);\n const debtIncreaseAmount = isDebtIncrease\n ? netDebt.sub(vault.netDebt)\n : Decimal.ZERO;\n\n const fee = isDebtIncrease\n ? feeFrom(\n vault,\n new Vault(vault.collateral, vault.debt.add(debtIncreaseAmount)),\n borrowingRate\n )\n : Decimal.ZERO;\n const totalDebt = netDebt.add(USDL_LIQUIDATION_RESERVE).add(fee);\n const totalDebtAcutal = vault.netDebt.add(USDL_LIQUIDATION_RESERVE).add(fee);\n\n const maxBorrowingRate = borrowingRate.add(0.005);\n const updatedVault = isDirty ? new Vault(collateral, totalDebt) : vault;\n const feePct = new Percent(borrowingRate);\n const availableEth = accountBalance.gt(GAS_ROOM_PLS)\n ? accountBalance.sub(GAS_ROOM_PLS)\n : Decimal.ZERO;\n const maxCollateral = vault.collateral.add(availableEth);\n\n const collateralMaxedOut = collateral.eq(maxCollateral);\n const collateralRatio =\n !collateral.isZero && !netDebt.isZero\n ? updatedVault.collateralRatio(price)\n : undefined;\n const collateralRatioChange = Difference.between(\n collateralRatio,\n vault.collateralRatio(price)\n );\n\n const [vaultChange, description] = validateVaultChange(\n vault,\n updatedVault,\n borrowingRate,\n validationContext\n );\n\n const stableVaultChange = useStableVaultChange(vaultChange);\n const [gasEstimationState, setGasEstimationState] =\n useState({ type: \"idle\" });\n\n const isTransactionPending =\n transactionState.type === \"waitingForApproval\" ||\n transactionState.type === \"waitingForConfirmation\";\n\n if (vault.status !== \"open\") {\n return null;\n }\n\n return (\n \n \n Your Vault\n\n \n \n {currentTab === \"Borrow\" ? (\n {\n setCollateral(vault.collateral.add(Decimal.from(amount)));\n setCollateralEntered(Decimal.from(amount));\n setNetDebtEntered(\n Decimal.from(amount)\n .mul(price)\n .div(\n !collateral.isZero && !netDebt.isZero\n ? vault.collateralRatio(price)\n : Decimal.from(1.1546)\n )\n );\n setNetDebt(\n vault.netDebt.add(\n Decimal.from(amount)\n .mul(price)\n .div(\n !collateral.isZero && !netDebt.isZero\n ? vault.collateralRatio(price)\n : Decimal.from(1.1546)\n )\n )\n );\n\n console.log(\"entered\", collateralEntered);\n console.log(\n \"vault.collateralRatio(price)\",\n vault.collateralRatio(price)\n );\n }}\n />\n ) : (\n {\n setNetDebt(vault.netDebt.sub(Decimal.from(amount)));\n setNetDebtEntered(Decimal.from(amount).gt(vault.netDebt) ? Decimal.from(vault.netDebt): Decimal.from(amount));\n setCollateralEntered(vault.netDebt.toString(2) == amount ? Decimal.from(vault.collateral) : Decimal.from(0));\n }}\n />\n )}\n\n {currentTab === \"Borrow\"\n ? (\n [\n [\"PLS\", accountBalance],\n // [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))\n : (\n [\n // [\"PLS\", accountBalance],\n [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))}\n {\n if (currentTab === \"Borrow\") {\n setCollateral(vault.collateral.add(amount));\n setCollateralEntered(Decimal.from(amount));\n setNetDebtEntered(\n amount\n .mul(price)\n .div(\n !collateral.isZero && !netDebt.isZero\n ? vault.collateralRatio(price)\n : Decimal.from(1.1546)\n )\n );\n setNetDebt(\n vault.netDebt.add(\n amount\n .mul(price)\n .div(\n !collateral.isZero && !netDebt.isZero\n ? vault.collateralRatio(price)\n : Decimal.from(1.1546)\n )\n )\n );\n } else {\n setNetDebt(vault.netDebt.sub(amount));\n setNetDebtEntered(amount);\n setCollateralEntered(vault.netDebt.eq(amount) ? Decimal.from(vault.collateral) : Decimal.from(0)); \n }\n }}\n />\n\n {/* \n setNetDebt(Decimal.from(amount))\n }\n /> */}\n {currentTab === \"Borrow\" ? (\n {\n setNetDebt(vault.netDebt.add(Decimal.from(amount)));\n setNetDebtEntered(Decimal.from(amount));\n }}\n />\n ) : (\n {\n setCollateral(vault.collateral.sub(Decimal.from(amount)));\n setCollateralEntered(Decimal.from(amount));\n console.log(\"entered\", collateralEntered);\n }}\n />\n )}\n\n {currentTab === \"Borrow\"\n ? (\n [\n // [\"PLS\", accountBalance],\n [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))\n : (\n [\n [\"PLS\", accountBalance],\n // [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n Wallet : {balance.prettify()} {currency}\n \n \n ))}\n {view === \"LIQUIDATED\" || view == \"REDEEMED\" ? (\n view === \"LIQUIDATED\" ? (\n \n {hasSurplusCollateral\n ? \"Please reclaim your remaining collateral before opening a new Vault.\"\n : \"You can borrow USDL by opening a Vault.\"}\n \n ) : (\n \n {hasSurplusCollateral\n ? \"Please reclaim your remaining collateral before opening a new Vault.\"\n : \"You can borrow USDL by opening a Vault.\"}\n \n )\n ) : // Below is the Case Checking where The entered Repay Amount is equal to Total Debt. The Case for Closing Vault\n\n currentTab === \"Repay\" &&\n ((vault.netDebt.lt(netDebtEntered.add(Decimal.from(4))) &&\n netDebtEntered.gt(Decimal.from(4)) &&\n vault.netDebt.gt(netDebtEntered.sub(Decimal.from(4)))) ||\n (netDebt.isZero && !netDebtEntered.isZero)) ? (\n \n ) : (\n <>\n {description ?? (\n \n Adjust your Vault by modifying its collateral, debt, or both.\n \n )}\n\n \n {collateralRatio?.lt(1.5) && (\n \n Keeping your CR above 150% can help avoid liquidation under\n Recovery Mode.\n \n )}\n {isDirty && !isTransactionPending && (\n \n \n \n )}\n \n\n \n\n \n {/* */}\n\n {stableVaultChange ? (\n \n Confirm\n \n ) : (\n \n )}\n \n \n )}\n {isTransactionPending && }\n \n \n \n \n \n Your Transaction Stats\n \n\n \n \n \n This amount is deducted from the borrowed amount as a\n one-time fee. There are no recurring fees for borrowing,\n which is thus interest-free.\n \n }\n />\n }\n />\n\n \n An amount set aside to cover the liquidator’s gas costs if\n your Vault needs to be liquidated. The amount increases\n your debt and is refunded if you close your Vault by fully\n paying off its net debt.\n \n }\n />\n }\n />\n\n \n\n \n The total amount of USDL your Vault will hold.{\" \"}\n {isDirty && (\n <>\n You will need to repay{\" \"}\n {totalDebt.sub(USDL_LIQUIDATION_RESERVE).prettify(2)}{\" \"}\n USDL to reclaim your collateral (\n {USDL_LIQUIDATION_RESERVE.toString()} USDL Liquidation\n Reserve excluded).\n \n )}\n \n }\n />\n }\n />\n \n \n \n Your Vault Stats\n\n \n \n \n // Total USDL Borrowed\n // \n // }\n // />\n // }\n />\n\n \n\n \n\n \n {(view === \"LIQUIDATED\" || view == \"REDEEMED\") &&\n hasSurplusCollateral && }\n \n \n \n \n );\n};\n","import React, { useCallback } from \"react\";\nimport { Card, Heading, Box, Button, Flex } from \"theme-ui\";\nimport { CollateralSurplusAction } from \"../CollateralSurplusAction\";\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { useVaultView } from \"./context/VaultViewContext\";\nimport { InfoMessage } from \"../InfoMessage\";\n\nconst select = ({ collateralSurplusBalance }: LiquidLoansStoreState) => ({\n hasSurplusCollateral: !collateralSurplusBalance.isZero,\n});\n\nexport const RedeemedVault: React.FC = () => {\n const { hasSurplusCollateral } = useLiquidLoansSelector(select);\n const { dispatchEvent } = useVaultView();\n\n const handleOpenVault = useCallback(() => {\n dispatchEvent(\"OPEN_VAULT_PRESSED\");\n }, [dispatchEvent]);\n\n return (\n \n \n Your Vault\n \n \n {hasSurplusCollateral\n ? \"Please reclaim your remaining collateral before opening a new Vault.\"\n : \"You can borrow USDL by opening a Vault.\"}\n \n\n \n {hasSurplusCollateral && }\n {!hasSurplusCollateral && (\n \n )}\n \n \n \n \n \n About Redemptions\n\n \n Think of redemptions as if somebody else just repaid your debt and\n retrieved an equivalent amount of your collateral.\n
\n At the time of redemption, you had the Vault with the lowest ratio,\n so you gave up some of your collateral, but your debt was reduced\n accordingly.\n
\n Redemptions improve the collateral ratio of the affected Vaults,\n making them less risky.\n
\n \n
\n \n );\n};\n","import React, { useCallback } from \"react\";\nimport { Card, Heading, Box, Button, Flex } from \"theme-ui\";\nimport { CollateralSurplusAction } from \"../CollateralSurplusAction\";\nimport { LiquidLoansStoreState } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\nimport { useVaultView } from \"./context/VaultViewContext\";\nimport { InfoMessage } from \"../InfoMessage\";\n\nconst select = ({ collateralSurplusBalance }: LiquidLoansStoreState) => ({\n hasSurplusCollateral: !collateralSurplusBalance.isZero,\n});\n\nexport const LiquidatedVault: React.FC = () => {\n const { hasSurplusCollateral } = useLiquidLoansSelector(select);\n const { dispatchEvent } = useVaultView();\n\n const handleOpenVault = useCallback(() => {\n dispatchEvent(\"OPEN_VAULT_PRESSED\");\n }, [dispatchEvent]);\n\n return (\n \n \n Your Vault\n \n \n {hasSurplusCollateral\n ? \"Please reclaim your remaining collateral before opening a new Vault.\"\n : \"You can borrow USDL by opening a Vault.\"}\n \n\n \n {hasSurplusCollateral && }\n {!hasSurplusCollateral && (\n \n )}\n \n \n \n \n \n About Liquidation\n\n \n Think of redemptions as if somebody else just repaid your debt and\n retrieved an equivalent amount of your collateral.\n
\n At the time of redemption, you had the Vault with the lowest ratio,\n so you gave up some of your collateral, but your debt was reduced\n accordingly.\n
\n Redemptions improve the collateral ratio of the affected Vaults,\n making them less risky.\n
\n \n
\n \n );\n};\n","import React, { useState } from \"react\";\nimport { VaultManager } from \"./VaultManager\";\nimport { ReadOnlyVault } from \"./ReadOnlyVault\";\nimport { NoVault } from \"./NoVault\";\nimport { Opening } from \"./Opening\";\nimport { Adjusting } from \"./Adjusting\";\nimport { RedeemedVault } from \"./RedeemedVault\";\nimport { useVaultView } from \"./context/VaultViewContext\";\nimport { LiquidatedVault } from \"./LiquidatedVault\";\nimport { Decimal } from \"@liquidloans/lib-base\";\n\nexport const Vault: React.FC = (props) => {\n const { view } = useVaultView();\n console.log(view);\n const [currentTab, setCurrentTab] = useState(\"Borrow\");\n const tabs = [\"Borrow\", \"Repay\"];\n switch (view) {\n // loading state not needed, as main app has a loading spinner that blocks render until the liquidLoans backend data is available\n // Here for NONE & OPENING view states, OPENING Component will be rendered and for Remaining, Adjusting Component will be rendered except for liquidated & redeemed.\n case \"ACTIVE\": {\n return (\n \n );\n }\n case \"ADJUSTING\": {\n return (\n \n );\n }\n case \"CLOSING\": {\n return (\n \n );\n }\n case \"OPENING\": {\n return (\n \n );\n }\n case \"LIQUIDATED\": {\n return ;\n }\n case \"REDEEMED\": {\n return ;\n }\n case \"NONE\": {\n return (\n \n );\n }\n }\n};\n","import { Box, Container, Heading } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\n// import bgImage from \"../assets/images/bg/borrow-usdl.png\";\nimport { Vault } from \"../components/Vault/Vault\";\n\nexport const BorrowUSDL: React.FC = () => (\n \n \n \n 0% Interest-Free DeFi Liquidity On PulseChain\n \n \n \n \n\n \n \n \n \n);\n","import React from \"react\";\n\nimport {\n Decimal,\n StabilityDeposit,\n StabilityDepositChange,\n} from \"@liquidloans/lib-base\";\n\nimport { COIN, GT } from \"../../strings\";\nimport { ActionDescription, Amount } from \"../ActionDescription\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport { Card } from \"theme-ui\";\n\ntype StabilityActionDescriptionProps = {\n originalDeposit: StabilityDeposit;\n change: StabilityDepositChange;\n};\n\nexport const StabilityActionDescription: React.FC<\n StabilityActionDescriptionProps\n> = ({ originalDeposit, change }) => {\n const collateralGain = originalDeposit.collateralGain.nonZero\n ?.prettify(2)\n .concat(\" PLS\");\n const loanReward = originalDeposit.loanReward.nonZero\n ?.prettify()\n .concat(\" \", GT);\n\n return (\n \n {change.depositUSDL ? (\n <>\n {\" \"} You are depositing{\" \"}\n \n {change.depositUSDL.prettify()} {COIN}\n {\" \"}\n in the Stability Pool\n \n ) : (\n <>\n You are withdrawing{\" \"}\n \n {change.withdrawUSDL.prettify()} {COIN}\n {\" \"}\n to your wallet\n \n )}\n {(collateralGain || loanReward) && (\n <>\n {\" \"}\n and claiming {\" \"}\n {collateralGain && loanReward ? (\n <>\n {\"a proportional amount of PLS \"} and at least{\" \"}\n {loanReward}\n \n ) : (\n {collateralGain ?? loanReward}\n )}\n \n )}\n {change.depositUSDL ? (\n \n There are existing PLS and Loan gains in our system. Whenever a new deposit happens in the protocol we calculate the relative share and assign the corresponding amount of PLS and Loan gains. So when someone deposits the USDL they should use the below calculation to check their claims.

\n\n (Pls * priceOfPlsGain) + (USDL * $1) + (price of Loan * LoanGains) = initalUSDLDeposit * 1$\n

\n For an example, if your deposit is 100 USDL your deposit becomes 82.95 and 10.91 PLS = 82.95 + (10.91 * 1.561334) + (0.025615 * 0.1891791) = $100 equivalent to your deposit.\n \n }\n /> ): <>}\n
\n );\n};\n","import React, { useCallback } from \"react\";\nimport { Card, Heading, Box, Flex, Button, Text } from \"theme-ui\";\nimport { InfoMessage } from \"../InfoMessage\";\nimport { useStabilityView } from \"./context/StabilityViewContext\";\nimport { RemainingLOAN } from \"./RemainingLOAN\";\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\nexport const UnlockButton: React.FC = (props) => {\n const { liquidLoans } = useLiquidLoans();\n const [sendTransaction, transactionState] = useTransactionFunction(\n \"bamm-unlock\",\n liquidLoans.send.bammUnlock.bind(liquidLoans.send)\n );\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const NoDeposit: React.FC = (props) => {\n const { dispatchEvent } = useStabilityView();\n\n const handleOpenVault = useCallback(() => {\n dispatchEvent(\"DEPOSIT_PRESSED\");\n }, [dispatchEvent]);\n\n return (\n \n \n Stability Pool\n \n \n \n \n \n \n You can earn PLS and LOAN rewards by depositing USDL.\n \n\n \n \n \n \n \n );\n};\n","import {\n Decimal,\n Difference,\n LiquidLoansStoreState,\n StabilityDeposit,\n StabilityDepositChange\n} from \"@liquidloans/lib-base\";\n\nimport { COIN } from \"../../../strings\";\nimport { Amount } from \"../../ActionDescription\";\nimport { ErrorDescription } from \"../../ErrorDescription\";\nimport { StabilityActionDescription } from \"../StabilityActionDescription\";\nimport { UnlockButton } from \"../NoDeposit\";\n\nexport const selectForStabilityDepositChangeValidation = ({\n vault,\n usdlBalance,\n ownFrontend,\n haveUndercollateralizedVaults,\n bammAllowance\n}: any) => ({\n vault,\n usdlBalance,\n haveOwnFrontend: ownFrontend.status === \"registered\",\n haveUndercollateralizedVaults,\n bammAllowance\n});\n\ntype StabilityDepositChangeValidationContext = ReturnType<\n typeof selectForStabilityDepositChangeValidation\n>;\n\nexport const validateStabilityDepositChange = (\n originalDeposit: StabilityDeposit,\n editedUSDL: Decimal,\n {\n usdlBalance,\n haveOwnFrontend,\n haveUndercollateralizedVaults,\n bammAllowance\n }: StabilityDepositChangeValidationContext,\n lusdDiff: Difference| undefined,\n ethDiff: Difference| undefined,\n): [\n validChange: StabilityDepositChange | undefined,\n description: JSX.Element | undefined\n] => {\n const change = originalDeposit.whatChanged(editedUSDL);\n\n if (haveOwnFrontend) {\n return [\n undefined,\n \n You can’t deposit using a wallet address that is registered as a frontend.\n \n ];\n }\n\n if (!change) {\n return [undefined, undefined];\n }\n\n if (change.depositUSDL?.gt(usdlBalance)) {\n return [\n undefined,\n \n The amount you're trying to deposit exceeds your balance by{\" \"}\n \n {change.depositUSDL.sub(usdlBalance).prettify()} {COIN}\n \n .\n \n ];\n }\n\n if(change && change.depositUSDL?.gt(Decimal.fromBigNumberString(bammAllowance.toString()))) {\n return [\n undefined,\n \n You have no allowance. {\" \"}\n \n click here to unlock.\n \n \n ];\n }\n\n if (change.withdrawUSDL && haveUndercollateralizedVaults) {\n return [\n undefined,\n \n You're not allowed to withdraw USDL from your Stability Deposit when there are\n undercollateralized Vaults. Please liquidate those Vaults or try again later.\n \n ];\n }\n\n return [change, ];\n};\n","import React from \"react\";\nimport { Button } from \"theme-ui\";\n\nimport { useLiquidLoans } from \"../../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../../Transaction\";\n\ntype ClaimRewardsProps = {\n disabled?: boolean;\n};\n\nexport const ClaimRewards: React.FC = ({ disabled, children }) => {\n const { liquidLoans } = useLiquidLoans();\n\n const [sendTransaction] = useTransactionFunction(\n \"stability-deposit\",\n liquidLoans.send.withdrawGainsFromStabilityPool.bind(liquidLoans.send)\n );\n\n return (\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Heading, Box, Card, Button, Flex, Text } from \"theme-ui\";\nimport { ActionDescription } from \"../ActionDescription\";\n\nimport {\n selectForStabilityDepositChangeValidation,\n validateStabilityDepositChange,\n} from \"./validation/validateStabilityDepositChange\";\n\nimport { useMyTransactionState } from \"../Transaction\";\nimport {\n Decimal,\n Decimalish,\n StabilityDeposit,\n LiquidLoansStoreState,\n Difference,\n} from \"@liquidloans/lib-base\";\n\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN, GT } from \"../../strings\";\n\nimport { Icon } from \"../Icon\";\nimport { EditableRow, StaticRow } from \"../Vault/Editor\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\nimport { InfoIcon } from \"../InfoIcon\";\nimport Tabs from \"../Tabs\";\nimport PercentageSelector from \"../PercentageSelector\";\nimport { ClaimRewards } from \"./actions/ClaimRewards\";\nimport { fetchStabilityAPR } from \"../../graphFunctions/graphFetcher\";\n\nconst select = ({\n usdlBalance,\n usdlInStabilityPool,\n stabilityDeposit,\n vault,\n}: LiquidLoansStoreState) => ({\n usdlBalance,\n usdlInStabilityPool,\n stabilityDeposit,\n vault,\n});\n\ntype StabilityDepositEditorProps = {\n originalDeposit: StabilityDeposit;\n editedUSD: Decimal;\n changePending: boolean;\n dispatch: (\n action: { type: \"setDeposit\"; newValue: Decimalish } | { type: \"revert\" }\n ) => void;\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n};\n\nconst selectPrice = ({ price }: LiquidLoansStoreState) => price;\n\nexport const StabilityDepositEditor: React.FC = ({\n originalDeposit,\n editedUSD,\n changePending,\n dispatch,\n children,\n tabs,\n currentTab,\n setCurrentTab,\n}) => {\n const { usdlBalance, usdlInStabilityPool, stabilityDeposit, vault } =\n useLiquidLoansSelector(select);\n const editingState = useState();\n const price = useLiquidLoansSelector(selectPrice);\n const validationContext = useLiquidLoansSelector(\n selectForStabilityDepositChangeValidation\n );\n const [enteredUSD, setEnteredUSD] = useState(Decimal.from(0));\n const edited = !editedUSD.eq(stabilityDeposit.currentUSDL);\n\n const maxAmount = stabilityDeposit.currentUSDL.add(usdlBalance);\n const maxedOut = editedUSD.eq(maxAmount);\n\n // const ethInUsd = originalDeposit.currentUSDL.sub(\n // stabilityDeposit.currentUSDL\n // );\n\n const originalPoolShare = stabilityDeposit.currentUSDL.mulDiv(\n 100,\n usdlInStabilityPool\n );\n\n const { bammPoolShare, collateralGain } = stabilityDeposit;\n\n const userTotalUsdInBamm = stabilityDeposit.currentUSDL;\n const totalUsdInBamm = userTotalUsdInBamm.mulDiv(100, bammPoolShare);\n const editedUserUsd = userTotalUsdInBamm\n .sub(stabilityDeposit.currentUSDL)\n .add(editedUSD);\n const editedTotalUsdInBamm = totalUsdInBamm\n .sub(stabilityDeposit.currentUSDL)\n .add(editedUSD);\n const editedBammPoolShare = !stabilityDeposit.currentUSD.isZero\n ? editedUserUsd.mulDiv(100, editedTotalUsdInBamm)\n : enteredUSD.mulDiv(100, usdlInStabilityPool);\n\n /* USD balance\n ====================================================================*/\n const usdDiff = Difference.between(editedUSD, stabilityDeposit.currentUSDL);\n\n const bammPoolShareChange =\n stabilityDeposit.currentUSDL.nonZero &&\n Difference.between(editedBammPoolShare, bammPoolShare).nonZero;\n\n let newTotalLusd, newTotalEth;\n if (\n (bammPoolShareChange && !bammPoolShareChange?.nonZero) ||\n bammPoolShareChange?.positive\n ) {\n newTotalLusd = stabilityDeposit.totalLusdInBamm.add(\n Decimal.from(usdDiff.absoluteValue || 0)\n );\n newTotalEth = stabilityDeposit.totalEthInBamm;\n } else {\n newTotalLusd = stabilityDeposit.totalLusdInBamm.mul(\n editedTotalUsdInBamm.div(totalUsdInBamm)\n );\n newTotalEth = stabilityDeposit.totalEthInBamm.mul(\n editedTotalUsdInBamm.div(totalUsdInBamm)\n );\n }\n\n const allowanceTxState = useMyTransactionState(\"bamm-unlock\");\n const waitingForTransaction =\n allowanceTxState.type === \"waitingForApproval\" ||\n allowanceTxState.type === \"waitingForConfirmation\";\n\n /* ETH balance\n ====================================================================*/\n const newEthBalance = editedBammPoolShare.mul(newTotalEth).div(100);\n const ethDiff = Difference.between(\n newEthBalance,\n stabilityDeposit.collateralGain\n ).nonZero;\n\n /* LUSD balance\n ====================================================================*/\n const newLusdBalance = editedBammPoolShare.mul(newTotalLusd).div(100);\n const usdlDiff = Difference.between(\n newLusdBalance,\n stabilityDeposit.currentUSDL\n ).nonZero;\n\n const [, description] = validateStabilityDepositChange(\n stabilityDeposit,\n editedUSD,\n validationContext,\n usdlDiff,\n ethDiff\n );\n const makingNewDeposit = stabilityDeposit.isEmpty;\n\n const hasReward = !stabilityDeposit.loanReward.isZero;\n const hasGain = !stabilityDeposit.collateralGain.isZero;\n const hasVault = !vault.isEmpty;\n\n // console.log(\"Original Deposit\", originalDeposit);\n\n /* pool share\n ====================================================================*/\n const usdlInStabilityPoolAfterChange = usdlInStabilityPool\n .add(newTotalLusd)\n .sub(stabilityDeposit.totalLusdInBamm);\n\n const newPoolShare = newTotalLusd\n .mulDiv(editedBammPoolShare, 100)\n .mulDiv(100, usdlInStabilityPoolAfterChange);\n const poolShareChange =\n stabilityDeposit.currentUSDL.nonZero &&\n Difference.between(newPoolShare, originalPoolShare).nonZero;\n\n // const ethDiffInUsd = stabilityDeposit.currentUSDL.sub(\n // stabilityDeposit.currentUSDL\n // );\n // const ethIsImportant = ethDiffInUsd\n // .div(stabilityDeposit.currentUSDL)\n // .gt(1 / 1000);\n\n const showOverlay = changePending || waitingForTransaction;\n const showResetButton = edited && !showOverlay;\n\n const transactionState = useMyTransactionState(\"stability-deposit\");\n\n const [apr, setAPR] = useState(0);\n\n useEffect(() => {\n getStabilityAPR();\n }, []);\n\n const getStabilityAPR = async () => {\n let apr = await fetchStabilityAPR();\n setAPR(apr.stabilityAPR);\n };\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n // dispatch({ type: \"revert\" });\n dispatch({ type: \"setDeposit\", newValue: stabilityDeposit.currentUSDL });\n setEnteredUSD(Decimal.from(0));\n }\n }, [transactionState.type, dispatch]);\n\n useEffect(() => {\n dispatch({ type: \"setDeposit\", newValue: stabilityDeposit.currentUSDL });\n }, [stabilityDeposit.currentUSDL]);\n\n useEffect(() => {\n // dispatch({ type: \"revert\" });\n dispatch({ type: \"setDeposit\", newValue: stabilityDeposit.currentUSDL });\n\n setEnteredUSD(Decimal.from(0));\n }, [currentTab]);\n\n const [renderCount, setRenderCount] = useState(0);\n useEffect(() => {\n const intervalId = setInterval(() => {\n setRenderCount(prevCount => prevCount + 1);\n }, 10000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n return (\n \n \n Stake USDL\n\n \n {showOverlay && }\n \n \n \n \n Current APR\n \n {apr.toFixed(2)}%\n \n \n\n {\n setEnteredUSD(Decimal.from(newValue));\n dispatch({\n type: \"setDeposit\",\n newValue: makingNewDeposit\n ? Decimal.from(newValue)\n : currentTab === \"Stake\"\n ? Decimal.from(newValue).add(stabilityDeposit.currentUSDL)\n : Decimal.from(newValue).gte(stabilityDeposit.currentUSDL)\n ? Decimal.from(0)\n : stabilityDeposit.currentUSDL.sub(Decimal.from(newValue)),\n });\n }}\n />\n {(\n [\n // [\"PLS\", accountBalance],\n [COIN, usdlBalance],\n // [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n {currentTab === \"Stake\" ? \"Wallet\" : \"Staked\"} :{\" \"}\n {currentTab === \"Stake\"\n ? balance.prettify()\n : stabilityDeposit.currentUSDL.prettify()}{\" \"}\n {currency}\n \n \n ))}\n\n {\n setEnteredUSD(Decimal.from(amount));\n dispatch({\n type: \"setDeposit\",\n newValue:\n currentTab === \"Stake\"\n ? Decimal.from(amount).add(stabilityDeposit.currentUSDL)\n : Decimal.from(amount).gte(stabilityDeposit.currentUSDL)\n ? Decimal.from(0)\n : stabilityDeposit.currentUSDL.sub(Decimal.from(amount)),\n });\n }}\n />\n \n {description ??\n (makingNewDeposit ? (\n \n Enter the amount of {COIN} you'd like to deposit.\n \n ) : (\n \n Adjust the {COIN} amount to deposit or withdraw.\n \n ))}\n {showResetButton && (\n {\n // dispatch({ type: \"revert\" });\n dispatch({\n type: \"setDeposit\",\n newValue: stabilityDeposit.currentUSDL,\n });\n\n setEnteredUSD(Decimal.from(0));\n }}\n >\n \n \n )}\n \n {children}\n \n \n \n {\" \"}\n \n \n Auto Rebalancing Stability Pool\n \n\n \n \n\n \n\n \n\n {/* */}\n\n {/* {ethIsImportant && (\n \n Temporary ETH balance until rebalance takes place\n \n }\n />\n }\n />\n )} */}\n\n {/* {newPoolShare.infinite ? (\n \n ) : (\n \n )} */}\n\n {\n
\n {bammPoolShare.infinite ? (\n \n ) : (\n \n )}\n
\n }\n
\n \n \n Your Rewards\n\n \n \n There are existing PLS and Loan gains in our system.\n Whenever a new deposit happens in the protocol we\n calculate the relative share and assign the corresponding\n amount of PLS and Loan gains. So when someone deposits the\n USDL they should use the below calculation to check their\n claims.
\n
\n (Pls * priceOfPlsGain) + (USDL * $1) + (price of Loan *\n LoanGains) = initalUSDLDeposit * 1$\n
\n
\n For an example, if your deposit is 100 USDL your deposit\n becomes 82.95 and 10.91 PLS = 82.95 + (10.91 * 1.561334) +\n (0.025615 * 0.1891791) = $100 equivalent to your deposit.\n
\n }\n />\n }\n />\n \n Although the LOAN rewards accrue every minute, the value\n on the UI only updates when a user transacts with the\n Stability Pool. Therefore you may receive more rewards\n than is displayed when you claim or adjust your deposit.\n
\n }\n />\n }\n />\n \n \n Claim LOAN\n \n \n \n \n \n \n );\n};\n","import { Button } from \"theme-ui\";\nimport { Decimal, LiquidLoansStoreState, StabilityDepositChange } from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\ntype StabilityDepositActionProps = {\n transactionId: string;\n change: StabilityDepositChange;\n};\n\nconst selectFrontendRegistered = ({ frontend }: LiquidLoansStoreState) =>\n frontend.status === \"registered\";\n\nexport const StabilityDepositAction: React.FC = ({\n children,\n transactionId,\n change\n}) => {\n const { config, liquidLoans } = useLiquidLoans();\n const frontendRegistered = useLiquidLoansSelector(selectFrontendRegistered);\n\n const frontendTag = frontendRegistered ? config.frontendTag : undefined;\n\n const [sendTransaction] = useTransactionFunction(\n transactionId,\n change.depositUSDL\n ? liquidLoans.send.depositUSDLInStabilityPool.bind(liquidLoans.send, change.depositUSDL, frontendTag)\n : liquidLoans.send.withdrawUSDLFromStabilityPool.bind(liquidLoans.send, change.withdrawUSDL)\n );\n\n return ;\n};\n","import React, { useCallback, useEffect } from \"react\";\nimport { Button, Flex } from \"theme-ui\";\n\nimport {\n Decimal,\n Decimalish,\n LiquidLoansStoreState,\n} from \"@liquidloans/lib-base\";\nimport {\n LiquidLoansStoreUpdate,\n useLiquidLoansReducer,\n useLiquidLoansSelector,\n} from \"@liquidloans/lib-react\";\n\nimport { COIN } from \"../../strings\";\n\nimport { ActionDescription } from \"../ActionDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\n\nimport { StabilityDepositEditor } from \"./StabilityDepositEditor\";\nimport { StabilityDepositAction } from \"./StabilityDepositAction\";\nimport { useStabilityView } from \"./context/StabilityViewContext\";\nimport {\n selectForStabilityDepositChangeValidation,\n validateStabilityDepositChange,\n} from \"./validation/validateStabilityDepositChange\";\n\nconst select = ({ stabilityDeposit }: LiquidLoansStoreState) => ({\n stabilityDeposit,\n});\n\nconst init = ({ stabilityDeposit }: LiquidLoansStoreState) => ({\n originalDeposit: stabilityDeposit,\n editedUSDL: stabilityDeposit.currentUSDL,\n changePending: false,\n});\n\ntype StabilityDepositManagerState = ReturnType;\ntype StabilityDepositManagerAction =\n | LiquidLoansStoreUpdate\n | { type: \"startChange\" | \"finishChange\" | \"revert\" }\n | { type: \"setDeposit\"; newValue: Decimalish };\n\nconst reduceWith =\n (action: StabilityDepositManagerAction) =>\n (state: StabilityDepositManagerState): StabilityDepositManagerState =>\n reduce(state, action);\n\nconst finishChange = reduceWith({ type: \"finishChange\" });\nconst revert = reduceWith({ type: \"revert\" });\n\nconst reduce = (\n state: StabilityDepositManagerState,\n action: StabilityDepositManagerAction\n): StabilityDepositManagerState => {\n // console.log(state);\n // console.log(action);\n\n const { originalDeposit, editedUSDL, changePending } = state;\n\n switch (action.type) {\n case \"startChange\": {\n console.log(\"changeStarted\");\n return { ...state, changePending: true };\n }\n\n case \"finishChange\":\n return { ...state, changePending: false };\n\n case \"setDeposit\":\n return { ...state, editedUSDL: Decimal.from(action.newValue) };\n\n case \"revert\":\n return { ...state, editedUSDL: originalDeposit.currentUSDL };\n\n case \"updateStore\": {\n const {\n stateChange: { stabilityDeposit: updatedDeposit },\n } = action;\n\n if (!updatedDeposit) {\n return state;\n }\n\n const newState = { ...state, originalDeposit: updatedDeposit };\n\n const changeCommitted =\n !updatedDeposit.bammPoolShare.eq(originalDeposit.bammPoolShare) ||\n updatedDeposit.poolShare.gt(originalDeposit.poolShare) ||\n !updatedDeposit.initialUSDL.eq(originalDeposit.initialUSDL) ||\n updatedDeposit.currentUSDL.gt(originalDeposit.currentUSDL) ||\n updatedDeposit.collateralGain.lt(originalDeposit.collateralGain) ||\n updatedDeposit.loanReward.lt(originalDeposit.loanReward) ||\n updatedDeposit.totalEthInBamm.lt(originalDeposit.totalEthInBamm) ||\n updatedDeposit.totalLusdInBamm.lt(originalDeposit.totalLusdInBamm);\n\n if (changePending && changeCommitted) {\n return finishChange(revert(newState));\n }\n\n return {\n ...newState,\n editedUSDL: updatedDeposit.apply(\n originalDeposit.whatChanged(editedUSDL)\n ),\n };\n }\n }\n};\n\nconst transactionId = \"stability-deposit\";\n\ntype StabilityManagerProps = {\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n};\n\nexport const StabilityDepositManager: React.FC = ({\n tabs,\n currentTab,\n setCurrentTab,\n}) => {\n const { stabilityDeposit } = useLiquidLoansSelector(select);\n const [{ originalDeposit, editedUSDL, changePending }, dispatch] =\n useLiquidLoansReducer(reduce, init);\n const validationContext = useLiquidLoansSelector(\n selectForStabilityDepositChangeValidation\n );\n const { dispatchEvent } = useStabilityView();\n\n const handleCancel = useCallback(() => {\n dispatchEvent(\"CANCEL_PRESSED\");\n }, [dispatchEvent]);\n\n const [validChange, description] = validateStabilityDepositChange(\n stabilityDeposit,\n editedUSDL,\n validationContext,\n undefined,\n undefined\n );\n\n const makingNewDeposit = stabilityDeposit.isEmpty;\n\n const myTransactionState = useMyTransactionState(transactionId);\n\n useEffect(() => {\n if (\n myTransactionState.type === \"waitingForApproval\" ||\n myTransactionState.type === \"waitingForConfirmation\"\n ) {\n dispatch({ type: \"startChange\" });\n } else if (\n myTransactionState.type === \"failed\" ||\n myTransactionState.type === \"cancelled\"\n ) {\n dispatch({ type: \"finishChange\" });\n } else if (myTransactionState.type === \"confirmedOneShot\") {\n dispatch({ type: \"finishChange\" });\n dispatchEvent(\"DEPOSIT_CONFIRMED\");\n }\n }, [myTransactionState.type, dispatch, dispatchEvent]);\n\n return (\n \n {/* {description ??\n (makingNewDeposit ? (\n \n Enter the amount of {COIN} you'd like to deposit.\n \n ) : (\n \n Adjust the {COIN} amount to deposit or withdraw.\n \n ))} */}\n\n \n {/* */}\n\n {validChange ? (\n \n Confirm\n \n ) : (\n \n )}\n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { StabilityDepositManager } from \"./StabilityDepositManager\";\nimport { ActiveDeposit } from \"./ActiveDeposit\";\nimport { NoDeposit } from \"./NoDeposit\";\nimport { useStabilityView } from \"./context/StabilityViewContext\";\n\nexport const Stability: React.FC = (props) => {\n const { view } = useStabilityView();\n const [currentTab, setCurrentTab] = useState(\"Stake\");\n const tabs = [\"Stake\", \"Unstake\"];\n switch (view) {\n case \"NONE\": {\n return (\n \n );\n }\n case \"DEPOSITING\": {\n return (\n \n );\n }\n case \"ADJUSTING\": {\n return (\n \n );\n }\n case \"ACTIVE\": {\n return (\n \n );\n }\n }\n};\n","import { Box, Container, Heading } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\nimport bgImage from \"../assets/images/bg/stability-pool.png\";\nimport { Vault } from \"../components/Vault/Vault\";\nimport { Stability } from \"../components/Stability/Stability\";\n\nexport const StabilityPool: React.FC = () => (\n \n \n \n Become A Stability Pool Provider To Earn LOAN And PLS\n \n \n \n \n\n \n \n \n \n);\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Heading, Box, Card, Button, Flex, Text } from \"theme-ui\";\n\nimport {\n Decimal,\n Decimalish,\n Difference,\n LiquidLoansStoreState,\n LOANStake,\n} from \"@liquidloans/lib-base\";\nimport { useLiquidLoansSelector } from \"@liquidloans/lib-react\";\n\nimport { COIN, GT } from \"../../strings\";\n\nimport { Icon } from \"../Icon\";\nimport { EditableRow, StaticRow } from \"../Vault/Editor\";\nimport { LoadingOverlay } from \"../LoadingOverlay\";\n\nimport {\n StakingViewContext,\n useStakingView,\n} from \"./context/StakingViewContext\";\nimport Tabs from \"../Tabs\";\nimport { ActionDescription } from \"../ActionDescription\";\nimport PercentageSelector from \"../PercentageSelector\";\nimport { useMyTransactionState, useTransactionFunction } from \"../Transaction\";\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useHistory } from \"react-router-dom\";\nimport { fetchStakingAPR } from \"../../graphFunctions/graphFetcher\";\nimport { InfoIcon } from \"../InfoIcon\";\n\nconst select = ({\n loanBalance,\n totalStakedLOAN,\n loanStake,\n}: LiquidLoansStoreState) => ({\n loanBalance,\n totalStakedLOAN,\n loanStake,\n});\n\ntype StakingEditorProps = {\n title: string;\n originalStake: LOANStake;\n editedLOAN: Decimal;\n\n dispatch: (\n action: { type: \"setStake\"; newValue: Decimalish } | { type: \"revert\" }\n ) => void;\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n description: JSX.Element | undefined;\n};\n\nexport const StakingEditor: React.FC = ({\n children,\n title,\n originalStake,\n editedLOAN,\n dispatch,\n tabs,\n currentTab,\n setCurrentTab,\n description,\n}) => {\n const history = useHistory();\n const { loanBalance, totalStakedLOAN, loanStake } =\n useLiquidLoansSelector(select);\n const { collateralGain, usdlGain, beanGain } = loanStake;\n let { changePending } = useStakingView();\n\n const { liquidLoans } = useLiquidLoans();\n // const { collateralGain, usdlGain } = useLiquidLoansSelector(selectLOANStake);\n const editingState = useState();\n const [enteredLoan, setEnteredLoan] = useState(Decimal.from(0));\n const edited = !editedLOAN.eq(loanStake.stakedLOAN);\n const makingNewStake = loanStake.isEmpty;\n\n const maxAmount = loanStake.stakedLOAN.add(loanBalance);\n const maxedOut = editedLOAN.eq(maxAmount);\n\n const totalStakedLOANAfterChange = totalStakedLOAN\n .sub(loanStake.stakedLOAN)\n .add(editedLOAN);\n\n const originalPoolShare = loanStake.stakedLOAN.mulDiv(100, totalStakedLOAN);\n const newPoolShare = editedLOAN.mulDiv(100, totalStakedLOANAfterChange);\n const poolShareChange =\n loanStake.stakedLOAN.nonZero &&\n Difference.between(newPoolShare, originalPoolShare).nonZero;\n\n const [sendTransaction] = useTransactionFunction(\n \"stake\",\n liquidLoans.send.withdrawGainsFromStaking.bind(liquidLoans.send)\n );\n\n const transactionState = useMyTransactionState(\"stake\");\n const [ apr, setAPR] = useState(0);\n\n useEffect(() => {\n getStakingAPR();\n }, []);\n\n const getStakingAPR = async () => {\n let apr = await fetchStakingAPR();\n setAPR(apr.stakingAPR);\n };\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\") {\n setEnteredLoan(Decimal.from(0));\n // dispatch({ type: \"revert\" });\n dispatch({ type: \"setStake\", newValue: loanStake.stakedLOAN });\n }\n }, [transactionState.type, dispatch]);\n\n useEffect(() => {\n dispatch({ type: \"setStake\", newValue: loanStake.stakedLOAN });\n }, [loanStake.stakedLOAN]);\n\n useEffect(() => {\n setEnteredLoan(Decimal.from(0));\n // dispatch({ type: \"revert\" });\n dispatch({ type: \"setStake\", newValue: loanStake.stakedLOAN });\n }, [currentTab]);\n\n const [renderCount, setRenderCount] = useState(0);\n useEffect(() => {\n const intervalId = setInterval(() => {\n setRenderCount(prevCount => prevCount + 1);\n }, 10000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n return (\n \n \n {title}\n\n \n \n \n \n \n Current APR\n \n { apr.toFixed(2) }%\n \n \n {\n setEnteredLoan(Decimal.from(newValue));\n dispatch({\n type: \"setStake\",\n newValue: makingNewStake\n ? Decimal.from(newValue)\n : currentTab === \"Stake\"\n ? Decimal.from(newValue).add(loanStake.stakedLOAN)\n : Decimal.from(newValue).gte(loanStake.stakedLOAN)\n ? Decimal.from(0)\n : loanStake.stakedLOAN.sub(Decimal.from(newValue)),\n });\n }\n // dispatch({ type: \"setStake\", newValue })\n }\n />\n {(\n [\n // [\"PLS\", accountBalance],\n // [COIN, usdlBalance],\n [GT, loanBalance],\n ] as const\n ).map(([currency, balance], i) => (\n \n \n {currentTab === \"Stake\" ? \"Wallet\" : \"Staked\"} :{\" \"}\n {currentTab === \"Stake\"\n ? balance.prettify()\n : loanStake.stakedLOAN.prettify()}{\" \"}\n {currency}\n \n \n ))}\n {\n setEnteredLoan(Decimal.from(amount));\n\n dispatch({\n type: \"setStake\",\n newValue:\n //makingNewStake\n // ? Decimal.from(amount)\n // :\n currentTab === \"Stake\"\n ? Decimal.from(amount).add(loanStake.stakedLOAN)\n : Decimal.from(amount).gte(loanStake.stakedLOAN)\n ? Decimal.from(0)\n : loanStake.stakedLOAN.sub(Decimal.from(amount)),\n });\n // alert(amount);\n }}\n />\n \n {description ??\n (makingNewStake ? (\n \n Enter the amount of {GT} you'd like to stake.\n \n ) : (\n \n Adjust the {GT} amount to stake or withdraw.\n \n ))}\n {edited && !changePending && (\n {\n setEnteredLoan(Decimal.from(0));\n dispatch({\n type: \"setStake\",\n newValue: loanStake.stakedLOAN,\n });\n\n // dispatch({ type: \"revert\" });\n }}\n >\n \n \n )}\n \n
\n {children}\n {changePending && }\n \n \n \n \n Staking Pool\n\n \n \n\n \n\n \n {newPoolShare.infinite ? (\n \n ) : (\n \n )}\n \n \n \n Your Rewards\n\n \n {/* {!loanStake.isEmpty && (\n <> */}\n \n {/* \n )} */}\n \n \n Although the BEAN rewards accrue every minute, the value on the UI only updates when a user transacts with the Staking Pool. Therefore you may receive more rewards than is displayed when you claim or adjust your deposit.\n \n }\n />\n }\n />\n \n \n Claim\n \n \n \n \n \n \n );\n};\n","import { Button } from \"theme-ui\";\n\nimport { Decimal, LOANStakeChange } from \"@liquidloans/lib-base\";\n\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\ntype StakingActionProps = {\n change: LOANStakeChange;\n};\n\nexport const StakingManagerAction: React.FC = ({ change, children }) => {\n const { liquidLoans } = useLiquidLoans();\n\n const [sendTransaction] = useTransactionFunction(\n \"stake\",\n change.stakeLOAN\n ? liquidLoans.send.stakeLOAN.bind(liquidLoans.send, change.stakeLOAN)\n : liquidLoans.send.unstakeLOAN.bind(liquidLoans.send, change.unstakeLOAN)\n );\n\n return ;\n};\n","import { Card, Heading, Box, Flex, Button, Text } from \"theme-ui\";\n\nimport { GT } from \"../../strings\";\n\nimport { InfoMessage } from \"../InfoMessage\";\nimport { useStakingView } from \"./context/StakingViewContext\";\nimport { useLiquidLoans } from \"../../hooks/LiquidLoansContext\";\nimport { useTransactionFunction } from \"../Transaction\";\n\nexport const BeansUnlockButton: React.FC = (props) => {\n const { liquidLoans } = useLiquidLoans();\n const [sendTransaction, transactionState] = useTransactionFunction(\n \"beans-unlock\",\n liquidLoans.send.beansUnlock.bind(liquidLoans.send)\n );\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const NoStake: React.FC = () => {\n const { dispatch } = useStakingView();\n\n return (\n \n Staking\n \n \n Stake {GT} to earn a share of borrowing and redemption fees.\n \n\n \n \n \n \n \n );\n};\n","import React, { useEffect } from \"react\";\nimport { Button, Flex } from \"theme-ui\";\n\nimport {\n Decimal,\n Decimalish,\n LiquidLoansStoreState,\n LOANStake,\n LOANStakeChange,\n} from \"@liquidloans/lib-base\";\n\nimport {\n LiquidLoansStoreUpdate,\n useLiquidLoansReducer,\n useLiquidLoansSelector,\n} from \"@liquidloans/lib-react\";\n\nimport { GT, COIN } from \"../../strings\";\n\nimport { useStakingView } from \"./context/StakingViewContext\";\nimport { StakingEditor } from \"./StakingEditor\";\nimport { StakingManagerAction } from \"./StakingManagerAction\";\nimport { ActionDescription, Amount } from \"../ActionDescription\";\nimport { ErrorDescription } from \"../ErrorDescription\";\nimport { useMyTransactionState } from \"../Transaction\";\nimport { BeansUnlockButton } from \"./NoStake\";\n\nconst selector = ({ beansAllowance }: any) => ({\n beansAllowance,\n});\n\nconst init = ({ loanStake }: LiquidLoansStoreState) => ({\n originalStake: loanStake,\n editedLOAN: loanStake.stakedLOAN,\n});\n\ntype StakeManagerState = ReturnType;\ntype StakeManagerAction =\n | LiquidLoansStoreUpdate\n | { type: \"revert\" }\n | { type: \"setStake\"; newValue: Decimalish };\n\nconst reduce = (\n state: StakeManagerState,\n action: StakeManagerAction\n): StakeManagerState => {\n // console.log(state);\n // console.log(action);\n\n const { originalStake, editedLOAN } = state;\n\n switch (action.type) {\n case \"setStake\":\n return { ...state, editedLOAN: Decimal.from(action.newValue) };\n\n case \"revert\":\n return { ...state, editedLOAN: originalStake.stakedLOAN };\n\n case \"updateStore\": {\n const {\n stateChange: { loanStake: updatedStake },\n } = action;\n\n if (updatedStake) {\n return {\n originalStake: updatedStake,\n editedLOAN: updatedStake.apply(originalStake.whatChanged(editedLOAN)),\n };\n }\n }\n }\n\n return state;\n};\n\nconst selectLOANBalance = ({\n loanBalance,\n loanStake,\n}: LiquidLoansStoreState) => ({ loanBalance, loanStake });\n\ntype StakingManagerActionDescriptionProps = {\n originalStake: LOANStake;\n change: LOANStakeChange;\n};\n\nconst StakingManagerActionDescription: React.FC<\n StakingManagerActionDescriptionProps\n> = ({ originalStake, change }) => {\n const { loanBalance, loanStake } = useLiquidLoansSelector(selectLOANBalance);\n const stakeLOAN = change.stakeLOAN?.prettify().concat(\" \", GT);\n const unstakeLOAN = change.unstakeLOAN?.prettify().concat(\" \", GT);\n const collateralGain = loanStake.collateralGain.nonZero\n ?.prettify(2)\n .concat(\" PLS\");\n const beanGain = loanStake.beanGain.nonZero\n ?.prettify(2)\n .concat(\" BEAN\");\n const usdlGain = loanStake.usdlGain.nonZero?.prettify().concat(\" \", COIN);\n\n if (loanStake.isEmpty && stakeLOAN) {\n return (\n \n You are staking {stakeLOAN}.\n \n );\n }\n\n return (\n \n {stakeLOAN && (\n <>\n You are adding {stakeLOAN} to your stake\n \n )}\n\n {unstakeLOAN && (\n <>\n You are withdrawing {unstakeLOAN} to your wallet\n \n )}\n {(collateralGain || usdlGain) && (\n <>\n {\" \"}\n and claiming{\" \"}\n {collateralGain && usdlGain ? (\n <>\n {collateralGain}, {usdlGain} and {beanGain}\n \n ) : (\n <>\n {collateralGain ?? usdlGain}\n \n )}\n \n )}\n .\n \n );\n};\n\ntype StakingManagerProps = {\n tabs: string[];\n currentTab: string;\n setCurrentTab: (value: string) => void;\n};\n\nexport const StakingManager: React.FC = ({\n tabs,\n currentTab,\n setCurrentTab,\n}) => {\n const { dispatch: dispatchStakingViewAction } = useStakingView();\n const [{ originalStake, editedLOAN }, dispatch] = useLiquidLoansReducer(\n reduce,\n init\n );\n const { loanBalance, loanStake } = useLiquidLoansSelector(selectLOANBalance);\n const { beansAllowance } = useLiquidLoansSelector(selector);\n const beansAllowance1 = Number(beansAllowance) / 1e18;\n\n const change = loanStake.whatChanged(editedLOAN);\n const [validChange, description] = !change\n ? [undefined, undefined]\n : change.stakeLOAN?.gt(loanBalance)\n ? [\n undefined,\n \n The amount you're trying to stake exceeds your balance by{\" \"}\n \n {change.stakeLOAN.sub(loanBalance).prettify()} {GT}\n \n .\n ,\n ]\n : change.stakeLOAN?.gt(beansAllowance1) // Add this condition\n ? [\n undefined,\n \n The amount you're trying to stake exceeds your allowance by{\" \"}\n \n {change.stakeLOAN.sub(beansAllowance1).prettify()} {GT} \n \n \n {\" Approve LOAN Token.\"}\n \n .\n ,\n ]\n : [\n change,\n ,\n ];\n\n const makingNewStake = loanStake.isEmpty;\n\n return (\n \n {/* {description ??\n (makingNewStake ? (\n \n Enter the amount of {GT} you'd like to stake.\n \n ) : (\n \n Adjust the {GT} amount to stake or withdraw.\n \n ))} */}\n\n \n {/* dispatchStakingViewAction({ type: \"cancelAdjusting\" })}\n >\n Cancel\n */}\n\n {validChange ? (\n \n Confirm\n \n ) : (\n \n )}\n \n \n );\n};\n","import { useStakingView } from \"./context/StakingViewContext\";\nimport { ReadOnlyStake } from \"./ReadOnlyStake\";\nimport { StakingManager } from \"./StakingManager\";\nimport { NoStake } from \"./NoStake\";\nimport { useState } from \"react\";\n\nexport const Staking: React.FC = () => {\n const { view } = useStakingView();\n const [currentTab, setCurrentTab] = useState(\"Stake\");\n const tabs = [\"Stake\", \"Unstake\"];\n switch (view) {\n case \"ACTIVE\":\n // return ;\n return (\n \n );\n\n case \"ADJUSTING\":\n return (\n \n );\n\n case \"NONE\":\n // return ;\n return (\n \n );\n }\n};\n","import { Box, Container, Heading } from \"theme-ui\";\nimport { SystemStats } from \"../components/SystemStats\";\nimport bgImage from \"../assets/images/bg/staking-pool.png\";\n\nimport { Staking } from \"../components/Staking/Staking\";\n\nexport const StakingPool: React.FC = () => (\n \n \n \n Stake your LOAN, And Earn USDL, PLS And BEAN\n \n \n \n \n\n \n \n \n \n);\n","import React, { useState } from \"react\";\nimport { Flex, Container, Box, Button } from \"theme-ui\";\nimport { HashRouter as Router, Switch, Route } from \"react-router-dom\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport { Decimal, Difference, Vault } from \"@liquidloans/lib-base\";\nimport { LiquidLoansStoreProvider } from \"@liquidloans/lib-react\";\n\nimport { useLiquidLoans } from \"./hooks/LiquidLoansContext\";\nimport { TransactionMonitor } from \"./components/Transaction\";\nimport { UserAccount } from \"./components/UserAccount\";\nimport { SystemStatsPopup } from \"./components/SystemStatsPopup\";\nimport { Header } from \"./components/Header\";\n\nimport { PageSwitcher } from \"./pages/PageSwitcher\";\nimport { Farm } from \"./pages/Farm\";\nimport { RiskyVaultsPage } from \"./pages/RiskyVaultsPage\";\nimport { RedemptionPage } from \"./pages/RedemptionPage\";\n\nimport { VaultViewProvider } from \"./components/Vault/context/VaultViewProvider\";\nimport { StabilityViewProvider } from \"./components/Stability/context/StabilityViewProvider\";\nimport { StakingViewProvider } from \"./components/Staking/context/StakingViewProvider\";\nimport { FarmViewProvider } from \"./components/Farm/context/FarmViewProvider\";\nimport { Icon } from \"./components/Icon\";\nimport SideBar from \"./components/SideBar\";\nimport MenuButton from \"./components/MenuButton\";\nimport { UserTokenBalances } from \"./components/UserTokenBalances\";\nimport { BorrowUSDL } from \"./pages/BorrowUSDL\";\nimport { StabilityPool } from \"./pages/StabilityPool\";\nimport { StakingPool } from \"./pages/StakingPool\";\n\ntype LiquidLoansFrontendProps = {\n loader?: React.ReactNode;\n};\nexport const LiquidLoansFrontend: React.FC = ({\n loader,\n}) => {\n const { account, provider, liquidLoans } = useLiquidLoans();\n const [isVisible, setIsVisible] = useState(true);\n // For console tinkering ;-)\n Object.assign(window, {\n account,\n provider,\n liquidLoans,\n Vault,\n Decimal,\n Difference,\n Wallet,\n });\n\n const openNewWindow = () => {\n window.open('https://docs.mcr369.io/barista');\n // window.location.href = 'https://docs.mcr369.io/barista';\n\n };\n\n return (\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 \n \n \n \n \n \n \n \n \n \n \n {() => {\n openNewWindow(); // Call the function to open the new window\n return null; // Return null to satisfy the ReactNode requirement\n }}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport { Web3ReactProvider } from \"@web3-react/core\";\nimport {\n Flex,\n Spinner,\n Heading,\n ThemeProvider,\n Paragraph,\n Link,\n Button,\n Image,\n Text,\n Box,\n} from \"theme-ui\";\n\nimport { BatchedWebSocketAugmentedWeb3Provider } from \"@liquidloans/providers\";\nimport { LiquidLoansProvider } from \"./hooks/LiquidLoansContext\";\nimport { WalletConnector } from \"./components/WalletConnector\";\nimport { TransactionProvider } from \"./components/Transaction\";\nimport { Icon } from \"./components/Icon\";\nimport { getConfig } from \"./config\";\nimport theme from \"./theme\";\n\nimport { DisposableWalletProvider } from \"./testUtils/DisposableWalletProvider\";\nimport { LiquidLoansFrontend } from \"./LiquidLoansFrontend\";\nimport BaristaLogo from \"./assets/images/barista-logo.png\";\nimport SafeLocker from \"./assets/images/safe-locker.png\";\nimport YieldLogo from \"./assets/images/yield-farming.png\";\nimport WeighingBalance from \"./assets/images/weighing-balance.png\";\nimport StaticHomePage from \"./pages/StaticHomePage\";\n\nif (window.ethereum) {\n // Silence MetaMask warning in console\n Object.assign(window.ethereum, { autoRefreshOnNetworkChange: false });\n}\n\nif (process.env.REACT_APP_DEMO_MODE === \"true\") {\n const ethereum = new DisposableWalletProvider(\n `http://${window.location.hostname}:8545`,\n \"0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7\"\n );\n\n Object.assign(window, { ethereum });\n}\n\n// Start pre-fetching the config\ngetConfig().then((config) => {\n // console.log(\"Frontend config:\");\n // console.log(config);\n Object.assign(window, { config });\n});\n\nconst PulsesWeb3ReactProvider: React.FC = ({ children }) => {\n return (\n \n new BatchedWebSocketAugmentedWeb3Provider(provider)\n }\n >\n {children}\n \n );\n};\n\nconst UnsupportedMainnetFallback: React.FC = () => (\n \n \n This app is for testing purposes\n only.\n \n\n \n Please change your network to Ropsten, Rinkeby, Kovan, Görli or Kiln.\n \n\n \n If you'd like to use the Liquid Loans Protocol on mainnet, please pick a\n frontend{\" \"}\n \n here \n \n .\n \n \n);\n\nconst ChangeNetwork = async () => {\n try {\n if (!window.ethereum) throw new Error(\"No crypto wallet found\");\n await (window as any).ethereum.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: `0x${Number(process.env.REACT_APP_CHAIN_ID || 369).toString(\n 16\n )}`,\n chainName:\n process.env.REACT_APP_NETWORK_NAME || \"PulseChain\",\n nativeCurrency: {\n name: \"Pulse\",\n symbol: process.env.REACT_APP_CURRENCY_SYMBOL || \"PLS\",\n decimals: 18,\n image: \"https://pulsechain.com/img/wordmarkShort.png\",\n },\n rpcUrls: [\n process.env.REACT_APP_RPC ||\n \"https://rpc.pulsechain.com\",\n ],\n blockExplorerUrls: [\n process.env.REACT_APP_BLOCK_EXPLORER ||\n \"https://scan.pulsechain.com\",\n ],\n },\n ],\n });\n } catch (err) {\n return console.log(err);\n }\n};\n\nconst App = () => {\n const loader = (\n \n \n Loading...\n \n );\n\n const unsupportedNetworkFallback = (\n chainId: number,\n channel?: string | undefined\n ) => (\n \n \n \n {\" \"}\n {channel === \"local\"\n ? 'dApp is set to run on \"PulseChain LocalHost\"'\n : \"dApp is not yet deployed to\"}{\" \"}\n {channel === \"local\"\n ? \"network\"\n : chainId === 369\n ? \"mainnet\"\n : \"this network\"}\n .\n \n Please switch to\n \n PulseChain{channel === \"local\" && \" LocalHost\"}\n \n \n \n );\n\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport \"./index.css\";\nimport App from \"./App\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}