{"version":3,"sources":["../../index.ts","../../../src/EthersLiquityConnection.ts","../../../src/Decimal.ts","../../../src/constants.ts","../../../../src/hooks/useLiquityStore.ts","../../../src/WebSocketAugmentedProvider.ts","../../../src/WebSocketProvider.ts","../../../src/contracts.ts","../../../src/ReadableEthersLiquity.ts","../../../src/BlockPolledLiquityStore.ts","../../../src/PopulatableEthersLiquity.ts","../../../src/SendableEthersLiquity.ts","../../../../src/components/LiquityStoreProvider.tsx","../../../../src/utils/equals.ts","../../../src/BatchedProvider.ts","../../../src/Trove.ts","../../../src/StabilityDeposit.ts","../../../src/LQTYStake.ts","../../../src/Fees.ts","../../../src/TransactableLiquity.ts","../../../src/SendableLiquity.ts","../../../src/LiquityStore.ts","../../../src/_CachedReadableLiquity.ts","../../../src/_Multicall.ts","../../../src/ObservableEthersLiquity.ts","../../../src/parseLogs.ts","../../../src/EthersLiquity.ts","../../../../src/hooks/useLiquityReducer.ts","../../../../src/hooks/useLiquitySelector.ts","config/index.ts","hooks/LiquityContext.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","components/WalletConnector.tsx","hooks/useAuthorizedConnection.ts","components/Tooltip.tsx","components/Transaction.tsx","theme.ts","testUtils/DisposableWalletProvider.ts","strings.ts","utils/shortenAddress.ts","components/UserAccount.tsx","components/InfoIcon.tsx","components/Statistic.tsx","components/SystemStats.tsx","components/SystemStatsPopup.tsx","components/LiquityLogo.tsx","components/Link.tsx","components/Nav.tsx","components/SideNav.tsx","components/Header.tsx","components/ActionDescription.tsx","components/Trove/Editor.tsx","components/LoadingOverlay.tsx","components/Trove/CollateralRatio.tsx","components/Trove/TroveEditor.tsx","components/Trove/TroveAction.tsx","components/Trove/context/TroveViewContext.tsx","components/ErrorDescription.tsx","components/Trove/validation/validateTroveChange.tsx","components/Trove/TroveManager.tsx","components/Trove/ReadOnlyTrove.tsx","components/InfoMessage.tsx","components/Trove/NoTrove.tsx","components/Trove/Opening.tsx","components/Trove/Adjusting.tsx","components/CollateralSurplusAction.tsx","components/Trove/RedeemedTrove.tsx","components/Trove/LiquidatedTrove.tsx","components/Trove/Trove.tsx","components/Stability/StabilityDepositEditor.tsx","components/Stability/StabilityDepositAction.tsx","components/Stability/context/StabilityViewContext.tsx","components/Stability/StabilityActionDescription.tsx","components/Stability/validation/validateStabilityDepositChange.tsx","components/Stability/StabilityDepositManager.tsx","components/Stability/actions/ClaimAndMove.tsx","components/Stability/actions/ClaimRewards.tsx","components/Stability/RemainingLQTY.tsx","components/Badge.tsx","components/Stability/context/fetchLqtyPrice.ts","components/Stability/Yield.tsx","components/Stability/ActiveDeposit.tsx","components/Stability/NoDeposit.tsx","components/Stability/Stability.tsx","components/PriceManager.tsx","components/Staking/context/StakingViewContext.tsx","components/Staking/StakingGainsAction.tsx","components/Staking/ReadOnlyStake.tsx","components/Staking/StakingEditor.tsx","components/Staking/StakingManagerAction.tsx","components/Staking/StakingManager.tsx","components/Staking/NoStake.tsx","components/Staking/Staking.tsx","pages/Dashboard.tsx","pages/UnregisteredFrontend.tsx","pages/FrontendRegistration.tsx","pages/FrontendRegistrationSuccess.tsx","pages/PageSwitcher.tsx","components/Farm/context/FarmViewContext.tsx","components/Farm/views/RemainingLQTY.tsx","components/Farm/context/fetchPrices.ts","components/Farm/views/Yield.tsx","components/Farm/views/Inactive/Inactive.tsx","components/Farm/context/useValidationState.ts","components/Farm/views/Confirm.tsx","components/Farm/views/Description.tsx","components/Farm/views/Approve.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/LiquidationManager.tsx","components/Abbreviation.tsx","components/RiskyTroves.tsx","pages/RiskyTrovesPage.tsx","components/Redemption/DisabledRedemption.tsx","components/Redemption/RedemptionAction.tsx","components/Redemption/RedemptionManager.tsx","components/Redemption/Redemption.tsx","pages/RedemptionPage.tsx","components/Trove/context/TroveViewProvider.tsx","components/Stability/context/StabilityViewProvider.tsx","components/Staking/context/StakingViewProvider.tsx","components/Farm/context/transitions.ts","components/Farm/context/FarmViewProvider.tsx","LiquityFrontend.tsx","App.tsx","index.tsx"],"names":["exports","WebSocketProvider","a","defaultConfig","frontendTag","AddressZero","hasKey","o","k","parseConfig","json","config","isAddress","getAddress","console","error","log","infuraApiKey","testnetOnly","configPromise","undefined","fetchConfig","fetch","response","ok","Error","status","getConfig","LiquityContext","createContext","supportedNetworks","LiquityProvider","children","loader","unsupportedNetworkFallback","unsupportedMainnetFallback","useWeb3React","provider","library","account","chainId","useState","setConfig","connection","useMemo","_connectByChainId","getSigner","userAddress","useStore","useEffect","then","isBatchedProvider","isWebSocketAugmentedProvider","network","getNetwork","name","includes","openWebSocket","wsParams","_isDev","window","location","hostname","closeWebSocket","liquity","EthersLiquity","_from","store","logging","Provider","value","useLiquity","liquityContext","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","icon","iconFromIntent","intent","color","aria-label","Dialog","title","cancelLabel","onCancel","sx","p","borderRadius","height","bg","justifyContent","alignItems","borderBottom","borderColor","pb","as","textAlign","fontSize","px","variant","onClick","size","RetryDialog","retryLabel","onRetry","borderTop","flexDirection","mr","mb","width","WaitingDialog","waitReason","ConnectionConfirmationDialog","fontWeight","MetaMaskIcon","viewBox","fill","xmlns","d","x","y","Modal","connectionReducer","state","action","type","connector","message","match","warn","WalletConnector","activate","deactivate","active","triedAuthorizedConnection","tried","setTried","isAuthorized","tryToActivateIfAuthorized","useAuthorizedConnection","useReducer","connectionState","dispatch","isMetaMask","ethereum","detectMetaMask","ml","lineHeight","href","target","Tooltip","placement","event","useRef","show","setShow","referenceElement","setReferenceElement","popperElement","setPopperElement","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","id","useTransactionFunction","send","setTransactionState","useCallback","tx","Transaction","tooltip","tooltipPlacement","showFailure","requires","sendTransaction","trigger","failureReasons","filter","map","push","clonedTrigger","length","disabled","tryToGetRevertReason","hash","getTransaction","call","blockNumber","result","hexDataLength","hexDataSlice","defaultAbiCoder","decode","Donut","memo","CircularProgressbarWithChildren","TransactionProgressDonut","setValue","maxValue","spin","TransactionMonitor","cancelled","finished","txHash","rawSentTransaction","waitForConfirmation","waitForReceipt","receipt","confirmations","rawReceipt","reason","pl","position","bottom","overflow","baseColors","colors","primary","secondary","accent","success","warning","danger","dangerHover","info","invalid","text","background","muted","buttonBase","display","cursor","button","py","border","opacity","buttonOutline","hoverColor","iconButton","padding","cardHeadingFontSize","cardGapX","cardGapY","card","mt","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","outline","cancel","dangerIcon","titleIcon","cards","pr","infoPopup","right","overflowY","zIndex","forms","label","unit","input","flex","editor","layout","header","footer","minHeight","main","maxWidth","mx","columns","flexWrap","justifyItems","actions","disabledOverlay","modal","infoOverlay","infoMessage","m","minWidth","sidenav","badge","backgroundColor","root","textDecoration","links","nav","textTransform","letterSpacing","DisposableWalletProvider","url","funderPrivateKey","ethAmount","wallet","funderWallet","haveFunded","this","Wallet","createRandom","Decimal","from","find","toLowerCase","to","hex","gas","hexlify","method","params","fund","Promise","all","nonce","findWallet","signTransaction","gasLimit","headers","JSON","stringify","jsonrpc","Object","assign","COIN","GT","LP","shortenAddress","substr","select","accountBalance","lusdBalance","lqtyBalance","UserAccount","useLiquitySelector","i","currency","balance","prettify","InfoIcon","interactive","content","Statistic","selectBalances","Balances","GitHubCommit","numberOfTroves","price","total","lusdInStabilityPool","borrowingRate","redemptionRate","totalStakedLQTY","frontend","kickbackRate","SystemStats","showBalances","contractsVersion","version","deploymentDate","lusdInStabilityPoolPct","debt","nonZero","Percent","div","totalCollateralRatioPct","collateralRatio","borrowingFeePct","kickbackRatePct","mul","toString","collateral","shorten","collateralRatioIsBelowCritical","toLocaleString","process","SystemStatsPopup","systemStatsOpen","setSystemStatsOpen","systemStatsOverlayRef","pt","e","LiquityLogo","boxProps","src","ExactLink","props","exact","Link","Nav","SideNav","isVisible","setIsVisible","overlay","Header","isFrontendRegistered","borderLeft","ActionDescription","Amount","whiteSpace","Row","labelId","labelFor","infoIcon","htmlFor","PendingAmount","startsWith","StaticAmounts","inputId","labelledBy","amount","pendingAmount","pendingColor","aria-labelledby","staticStyle","flexGrow","editableStyle","StaticRow","DisabledEditableRow","EditableRow","editingState","editedAmount","setEditedAmount","maxAmount","maxedOut","editing","setEditing","setInvalid","autoFocus","step","defaultValue","onChange","onBlur","stopPropagation","LoadingOverlay","CollateralRatio","change","collateralRatioPct","changePct","gt","CRITICAL_COLLATERAL_RATIO","lte","positive","absoluteValue","negative","nonZeroish","lt","TroveEditor","original","edited","fee","changePending","feePct","originalCollateralRatio","isEmpty","collateralRatioChange","Difference","between","LUSD_LIQUIDATION_RESERVE","TroveAction","transactionId","maxBorrowingRate","openTrove","bind","closeTrove","adjustTrove","TroveViewContext","useTroveView","context","ErrorDescription","mcrPercent","MINIMUM_COLLATERAL_RATIO","ccrPercent","TroveChangeDescription","depositCollateral","borrowLUSD","repayLUSD","withdrawCollateral","selectForTroveChangeValidation","validateTroveChange","originalTrove","adjustedTrove","selectedState","whatChanged","resultingTrove","apply","recoveryMode","wouldTriggerRecoveryMode","subtract","LUSD_MINIMUM_DEBT","errorDescription","validateTroveCreation","validateTroveClosure","validateTroveAdjustment","isOpenableInRecoveryMode","collateralRatioIsBelowMinimum","sub","init","trove","Trove","debtDirty","addedMinimumDebt","reduceWith","reduce","addMinimumDebt","removeMinimumDebt","finishChange","revert","newCollateral","newValue","newState","setCollateral","isZero","setDebt","changeCommitted","stateChange","troveBeforeRedistribution","feeFrom","ZERO","fees","validationContext","transactionIdPrefix","transactionIdMatcher","RegExp","TroveManager","useLiquityReducer","validChange","description","dispatchEvent","handleCancel","openingNewTrove","myTransactionState","ReadOnlyTrove","handleAdjustTrove","handleCloseTrove","InfoMessage","NoTrove","handleOpenTrove","selector","EMPTY_TROVE","TRANSACTION_ID","GAS_ROOM_ETH","Opening","borrowAmount","setBorrowAmount","totalDebt","isDirty","maxEth","maxCollateral","collateralMaxedOut","eq","troveChange","isTransactionPending","handleCancelPressed","reset","LUSD_MINIMUM_NET_DEBT","Adjusting","previousTrove","netDebt","setNetDebt","nextCollateral","unsavedChanges","applyUnsavedCollateralChanges","nextNetDebt","applyUnsavedNetDebtChanges","isDebtIncrease","debtIncreaseAmount","updatedTrove","collateralSurplusBalance","CollateralSurplusAction","myTransactionId","claimCollateralSurplus","hasSurplusCollateral","RedeemedTrove","LiquidatedTrove","view","StabilityDepositEditor","originalDeposit","editedLUSD","currentLUSD","lusdInStabilityPoolAfterChange","originalPoolShare","mulDiv","newPoolShare","poolShareChange","infinite","concat","collateralGain","lqtyReward","selectFrontendRegistered","StabilityDepositAction","depositLUSD","depositLUSDInStabilityPool","withdrawLUSDFromStabilityPool","withdrawLUSD","StabilityViewContext","useStabilityView","StabilityActionDescription","selectForStabilityDepositChangeValidation","ownFrontend","haveUndercollateralizedTroves","haveOwnFrontend","stabilityDeposit","updatedDeposit","initialLUSD","StabilityDepositManager","validateStabilityDepositChange","makingNewDeposit","ClaimAndMove","transferCollateralGainToTrove","ClaimRewards","withdrawGainsFromStabilityPool","remainingStabilityPoolLQTYReward","RemainingLQTY","Badge","uniswapQuery","lqtyTokenAddress","fetchLqtyPrice","query","variables","reject","data","errors","token","derivedETH","bundle","ethPrice","ethPriceUSD","lqtyPriceUSD","Yield","addresses","lqtyPrice","setLqtyPrice","hasZeroValue","remainingLqtyInUSD","aprPercentage","ActiveDeposit","poolShare","handleAdjustDeposit","hasReward","hasGain","hasTrove","isWaitingForTransaction","NoDeposit","Stability","selectPrice","PriceManager","canSetPrice","_priceFeedIsTestnet","editedPrice","setEditedPrice","overrides","setPrice","StakingViewContext","useStakingView","selectLQTYStake","lqtyStake","StakingGainsAction","lusdGain","withdrawGainsFromStaking","ReadOnlyStake","stakedLQTY","StakingEditor","originalStake","editedLQTY","totalStakedLQTYAfterChange","StakingManagerAction","stakeLQTY","unstakeLQTY","updatedStake","selectLQTYBalance","StakingManagerActionDescription","StakingManager","dispatchStakingViewAction","makingNewStake","NoStake","Staking","Dashboard","UnregisteredFrontend","FrontendRegistrationAction","registerFrontend","FrontendRegistration","setKickbackRate","cut","setCut","kickbackRateString","setKickbackRateString","newKickbackRate","newCut","ONE","FrontendRegistrationSuccess","onDismiss","selectFrontend","PageSwitcher","unregistered","registering","setRegistering","FarmViewContext","useFarmView","remainingLiquidityMiningLQTYReward","uniTokenAddress","fetchPrices","pair","reserveUSD","totalSupply","uniLpPriceUSD","totalStakedUniTokens","liquidityMiningLQTYRewardRate","uniLpPrice","setUniLpPrice","daysRemaining","totalStakedUniLpInUSD","yieldPercentage","Inactive","lusdAddress","handleStakePressed","uniTokenBalance","uniTokenAllowance","liquidityMiningStake","useValidationState","isWithdrawing","amountChanged","maximumStake","hasSetMaximumStake","isValid","hasApproved","hasEnoughUniToken","gte","Confirm","transactionAction","unstakeUniTokens","stakeUniTokens","shouldDisable","Description","Approve","approveUniTokens","Validation","setAmount","nextTotalStakedUniTokens","liquidityMiningLQTYReward","maximumAmount","hasSetMaximumAmount","ClaimReward","withdrawLQTYRewardFromLiquidityMining","UnstakeAndClaim","exitLiquidityMining","Active","handleAdjustPressed","hasStakeAndRewards","Disabled","hasStake","Farm","LiquidationManager","numberOfTrovesToLiquidate","setNumberOfTrovesToLiquidate","min","liquidateUpTo","parseInt","Abbreviation","short","rowHeight","liquidatableInNormalMode","liquidatableInRecoveryMode","totalCollateralRatio","blockTag","RiskyTroves","pageSize","loading","setLoading","troves","setTroves","reload","setReload","forceReload","page","setPage","numberOfPages","Math","ceil","clampedPage","mounted","getTroves","first","sortedBy","startingAt","copied","setCopied","ownerAddress","onCopy","liquidate","RiskyTrovesPage","DisabledRedemption","disabledDays","unlockDate","RedemptionAction","lusdAmount","maxRedemptionRate","redeemLUSD","RedemptionManager","setLUSDAmount","setChangePending","dirty","ethFee","canRedeem","selectBlockTimestamp","blockTimestamp","Redemption","bootstrapPeriod","bootstrapPeriodDays","round","bootstrapEndTime","getTime","bootstrapEndDate","Date","RedemptionPage","transitions","NONE","OPEN_TROVE_PRESSED","TROVE_OPENED","LIQUIDATED","TROVE_SURPLUS_COLLATERAL_CLAIMED","REDEEMED","OPENING","CANCEL_ADJUST_TROVE_PRESSED","ADJUSTING","TROVE_ADJUSTED","TROVE_CLOSED","TROVE_LIQUIDATED","TROVE_REDEEMED","CLOSING","ACTIVE","ADJUST_TROVE_PRESSED","CLOSE_TROVE_PRESSED","troveStatusEvents","open","closedByOwner","closedByLiquidation","closedByRedemption","TroveViewProvider","troveStatus","getInitialView","setView","viewRef","nextView","transition","DEPOSIT_PRESSED","DEPOSITING","CANCEL_PRESSED","DEPOSIT_CONFIRMED","REWARDS_CLAIMED","ADJUST_DEPOSIT_PRESSED","DEPOSIT_EMPTIED","StabilityViewProvider","adjusting","oldStake","oldState","StakingViewProvider","stakingTransactionState","INACTIVE","STAKE_PRESSED","STAKING","STAKE_CONFIRMED","STAKE_APPROVED","ADJUST_PRESSED","CLAIM_REWARD_CONFIRMED","UNSTAKE_AND_CLAIM_CONFIRMED","UNSTAKE_CONFIRMED","DISABLED","FarmViewProvider","LiquityFrontend","path","autoRefreshOnNetworkChange","REACT_APP_DEMO_MODE","EthersWeb3ReactProvider","getLibrary","BatchedWebSocketAugmentedWeb3Provider","UnsupportedMainnetFallback","App","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.fa34b494.chunk.js","sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsupportedNetworkError = exports._connectByChainId = void 0;\nvar EthersLiquityConnection_1 = require(\"./src/EthersLiquityConnection\");\nObject.defineProperty(exports, \"_connectByChainId\", { enumerable: true, get: function () { return EthersLiquityConnection_1._connectByChainId; } });\nObject.defineProperty(exports, \"UnsupportedNetworkError\", { enumerable: true, get: function () { return EthersLiquityConnection_1.UnsupportedNetworkError; } });\n__exportStar(require(\"./src/types\"), exports);\n__exportStar(require(\"./src/ReadableEthersLiquity\"), exports);\n__exportStar(require(\"./src/ObservableEthersLiquity\"), exports);\n__exportStar(require(\"./src/BlockPolledLiquityStore\"), exports);\n__exportStar(require(\"./src/PopulatableEthersLiquity\"), exports);\n__exportStar(require(\"./src/SendableEthersLiquity\"), exports);\n__exportStar(require(\"./src/EthersLiquity\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._connect = exports._connectByChainId = exports._connectToDeployment = exports.UnsupportedNetworkError = exports._usingStore = exports._requireFrontendAddress = exports._requireAddress = exports._getProvider = exports._requireSigner = exports._getBlockTimestamp = exports._getContracts = void 0;\nconst abstract_signer_1 = require(\"@ethersproject/abstract-signer\");\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst dev_json_1 = __importDefault(require(\"../deployments/dev.json\"));\nconst goerli_json_1 = __importDefault(require(\"../deployments/goerli.json\"));\nconst kovan_json_1 = __importDefault(require(\"../deployments/kovan.json\"));\nconst rinkeby_json_1 = __importDefault(require(\"../deployments/rinkeby.json\"));\nconst ropsten_json_1 = __importDefault(require(\"../deployments/ropsten.json\"));\nconst mainnet_json_1 = __importDefault(require(\"../deployments/mainnet.json\"));\nconst contracts_1 = require(\"./contracts\");\nconst _Multicall_1 = require(\"./_Multicall\");\nconst dev = dev_json_1.default;\nconst deployments = {\n [mainnet_json_1.default.chainId]: mainnet_json_1.default,\n [ropsten_json_1.default.chainId]: ropsten_json_1.default,\n [rinkeby_json_1.default.chainId]: rinkeby_json_1.default,\n [goerli_json_1.default.chainId]: goerli_json_1.default,\n [kovan_json_1.default.chainId]: kovan_json_1.default,\n ...(dev !== null ? { [dev.chainId]: dev } : {})\n};\nconst branded = (t) => t;\nconst connectionFrom = (provider, signer, _contracts, _multicall, { deploymentDate, totalStabilityPoolLQTYReward, liquidityMiningLQTYRewardRate, ...deployment }, optionalParams) => {\n if (optionalParams &&\n optionalParams.useStore !== undefined &&\n !validStoreOptions.includes(optionalParams.useStore)) {\n throw new Error(`Invalid useStore value ${optionalParams.useStore}`);\n }\n return branded({\n provider,\n signer,\n _contracts,\n _multicall,\n deploymentDate: new Date(deploymentDate),\n totalStabilityPoolLQTYReward: lib_base_1.Decimal.from(totalStabilityPoolLQTYReward),\n liquidityMiningLQTYRewardRate: lib_base_1.Decimal.from(liquidityMiningLQTYRewardRate),\n ...deployment,\n ...optionalParams\n });\n};\n/** @internal */\nconst _getContracts = (connection) => connection._contracts;\nexports._getContracts = _getContracts;\nconst getMulticall = (connection) => connection._multicall;\nconst numberify = (bigNumber) => bigNumber.toNumber();\nconst getTimestampFromBlock = ({ timestamp }) => timestamp;\n/** @internal */\nconst _getBlockTimestamp = (connection, blockTag = \"latest\") => { var _a, _b; return (_b = (_a = \n// Get the timestamp via a contract call whenever possible, to make it batchable with other calls\ngetMulticall(connection)) === null || _a === void 0 ? void 0 : _a.getCurrentBlockTimestamp({ blockTag }).then(numberify)) !== null && _b !== void 0 ? _b : exports._getProvider(connection).getBlock(blockTag).then(getTimestampFromBlock); };\nexports._getBlockTimestamp = _getBlockTimestamp;\nconst panic = (e) => {\n throw e;\n};\n/** @internal */\nconst _requireSigner = (connection) => { var _a; return (_a = connection.signer) !== null && _a !== void 0 ? _a : panic(new Error(\"Must be connected through a Signer\")); };\nexports._requireSigner = _requireSigner;\n/** @internal */\nconst _getProvider = (connection) => connection.provider;\nexports._getProvider = _getProvider;\n// TODO parameterize error message?\n/** @internal */\nconst _requireAddress = (connection, overrides) => { var _a, _b; return (_b = (_a = overrides === null || overrides === void 0 ? void 0 : overrides.from) !== null && _a !== void 0 ? _a : connection.userAddress) !== null && _b !== void 0 ? _b : panic(new Error(\"A user address is required\")); };\nexports._requireAddress = _requireAddress;\n/** @internal */\nconst _requireFrontendAddress = (connection) => { var _a; return (_a = connection.frontendTag) !== null && _a !== void 0 ? _a : panic(new Error(\"A frontend address is required\")); };\nexports._requireFrontendAddress = _requireFrontendAddress;\n/** @internal */\nconst _usingStore = (connection) => connection.useStore !== undefined;\nexports._usingStore = _usingStore;\n/**\n * Thrown when trying to connect to a network where Liquity is not deployed.\n *\n * @remarks\n * Thrown by {@link ReadableEthersLiquity.(connect:2)} and {@link EthersLiquity.(connect:2)}.\n *\n * @public\n */\nclass UnsupportedNetworkError extends Error {\n /** @internal */\n constructor(chainId) {\n super(`Unsupported network (chainId = ${chainId})`);\n this.name = \"UnsupportedNetworkError\";\n this.chainId = chainId;\n }\n}\nexports.UnsupportedNetworkError = UnsupportedNetworkError;\nconst getProviderAndSigner = (signerOrProvider) => {\n var _a;\n const provider = abstract_signer_1.Signer.isSigner(signerOrProvider)\n ? (_a = signerOrProvider.provider) !== null && _a !== void 0 ? _a : panic(new Error(\"Signer must have a Provider\")) : signerOrProvider;\n const signer = abstract_signer_1.Signer.isSigner(signerOrProvider) ? signerOrProvider : undefined;\n return [provider, signer];\n};\n/** @internal */\nconst _connectToDeployment = (deployment, signerOrProvider, optionalParams) => connectionFrom(...getProviderAndSigner(signerOrProvider), contracts_1._connectToContracts(signerOrProvider, deployment), undefined, deployment, optionalParams);\nexports._connectToDeployment = _connectToDeployment;\nconst validStoreOptions = [\"blockPolled\"];\n/** @internal */\nfunction _connectByChainId(provider, signer, chainId, optionalParams) {\n var _a;\n const deployment = (_a = deployments[chainId]) !== null && _a !== void 0 ? _a : panic(new UnsupportedNetworkError(chainId));\n return connectionFrom(provider, signer, contracts_1._connectToContracts(signer !== null && signer !== void 0 ? signer : provider, deployment), _Multicall_1._connectToMulticall(signer !== null && signer !== void 0 ? signer : provider, chainId), deployment, optionalParams);\n}\nexports._connectByChainId = _connectByChainId;\n/** @internal */\nconst _connect = async (signerOrProvider, optionalParams) => {\n const [provider, signer] = getProviderAndSigner(signerOrProvider);\n if (signer) {\n if ((optionalParams === null || optionalParams === void 0 ? void 0 : optionalParams.userAddress) !== undefined) {\n throw new Error(\"Can't override userAddress when connecting through Signer\");\n }\n optionalParams = {\n ...optionalParams,\n userAddress: await signer.getAddress()\n };\n }\n return _connectByChainId(provider, signer, (await provider.getNetwork()).chainId, optionalParams);\n};\nexports._connect = _connect;\n//# sourceMappingURL=EthersLiquityConnection.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Percent = exports.Difference = exports.Decimal = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst bignumber_1 = require(\"@ethersproject/bignumber\");\nconst getDigits = (numDigits) => TEN.pow(numDigits);\nconst MAX_UINT_256 = \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\";\nconst PRECISION = 18;\nconst ONE = bignumber_1.BigNumber.from(1);\nconst TEN = bignumber_1.BigNumber.from(10);\nconst DIGITS = getDigits(PRECISION);\nconst stringRepresentationFormat = /^[0-9]*(\\.[0-9]*)?(e[-+]?[0-9]+)?$/;\nconst trailingZeros = /0*$/;\nconst magnitudes = [\"\", \"K\", \"M\", \"B\", \"T\"];\nconst roundedMul = (x, y) => x.mul(y).add(Decimal.HALF.hex).div(DIGITS);\n/**\n * Fixed-point decimal bignumber with 18 digits of precision.\n *\n * @remarks\n * Used by Liquity libraries to precisely represent native currency (e.g. Ether), LUSD and LQTY\n * amounts, as well as derived metrics like collateral ratios.\n *\n * @public\n */\nclass Decimal {\n constructor(bigNumber) {\n if (bigNumber.isNegative()) {\n throw new Error(\"negatives not supported by Decimal\");\n }\n this._bigNumber = bigNumber;\n }\n /** @internal */\n get hex() {\n return this._bigNumber.toHexString();\n }\n /** @internal */\n get bigNumber() {\n return this._bigNumber.toString();\n }\n static fromBigNumberString(bigNumberString) {\n return new Decimal(bignumber_1.BigNumber.from(bigNumberString));\n }\n static _fromString(representation) {\n if (!representation || !representation.match(stringRepresentationFormat)) {\n throw new Error(`bad decimal format: \"${representation}\"`);\n }\n if (representation.includes(\"e\")) {\n // eslint-disable-next-line prefer-const\n let [coefficient, exponent] = representation.split(\"e\");\n if (exponent.startsWith(\"-\")) {\n return new Decimal(Decimal._fromString(coefficient)._bigNumber.div(TEN.pow(bignumber_1.BigNumber.from(exponent.substr(1)))));\n }\n if (exponent.startsWith(\"+\")) {\n exponent = exponent.substr(1);\n }\n return new Decimal(Decimal._fromString(coefficient)._bigNumber.mul(TEN.pow(bignumber_1.BigNumber.from(exponent))));\n }\n if (!representation.includes(\".\")) {\n return new Decimal(bignumber_1.BigNumber.from(representation).mul(DIGITS));\n }\n // eslint-disable-next-line prefer-const\n let [characteristic, mantissa] = representation.split(\".\");\n if (mantissa.length < PRECISION) {\n mantissa += \"0\".repeat(PRECISION - mantissa.length);\n }\n else {\n mantissa = mantissa.substr(0, PRECISION);\n }\n return new Decimal(bignumber_1.BigNumber.from(characteristic || 0)\n .mul(DIGITS)\n .add(mantissa));\n }\n static from(decimalish) {\n switch (typeof decimalish) {\n case \"object\":\n if (decimalish instanceof Decimal) {\n return decimalish;\n }\n else {\n throw new Error(\"invalid Decimalish value\");\n }\n case \"string\":\n return Decimal._fromString(decimalish);\n case \"number\":\n return Decimal._fromString(decimalish.toString());\n default:\n throw new Error(\"invalid Decimalish value\");\n }\n }\n _toStringWithAutomaticPrecision() {\n const characteristic = this._bigNumber.div(DIGITS);\n const mantissa = this._bigNumber.mod(DIGITS);\n if (mantissa.isZero()) {\n return characteristic.toString();\n }\n else {\n const paddedMantissa = mantissa.toString().padStart(PRECISION, \"0\");\n const trimmedMantissa = paddedMantissa.replace(trailingZeros, \"\");\n return characteristic.toString() + \".\" + trimmedMantissa;\n }\n }\n _roundUp(precision) {\n const halfDigit = getDigits(PRECISION - 1 - precision).mul(5);\n return this._bigNumber.add(halfDigit);\n }\n _toStringWithPrecision(precision) {\n if (precision < 0) {\n throw new Error(\"precision must not be negative\");\n }\n const value = precision < PRECISION ? this._roundUp(precision) : this._bigNumber;\n const characteristic = value.div(DIGITS);\n const mantissa = value.mod(DIGITS);\n if (precision === 0) {\n return characteristic.toString();\n }\n else {\n const paddedMantissa = mantissa.toString().padStart(PRECISION, \"0\");\n const trimmedMantissa = paddedMantissa.substr(0, precision);\n return characteristic.toString() + \".\" + trimmedMantissa;\n }\n }\n toString(precision) {\n if (this.infinite) {\n return \"∞\";\n }\n else if (precision !== undefined) {\n return this._toStringWithPrecision(precision);\n }\n else {\n return this._toStringWithAutomaticPrecision();\n }\n }\n prettify(precision = 2) {\n const [characteristic, mantissa] = this.toString(precision).split(\".\");\n const prettyCharacteristic = characteristic.replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return mantissa !== undefined ? prettyCharacteristic + \".\" + mantissa : prettyCharacteristic;\n }\n shorten() {\n const characteristicLength = this.toString(0).length;\n const magnitude = Math.min(Math.floor((characteristicLength - 1) / 3), magnitudes.length - 1);\n const precision = Math.max(3 * (magnitude + 1) - characteristicLength, 0);\n const normalized = this.div(new Decimal(getDigits(PRECISION + 3 * magnitude)));\n return normalized.prettify(precision) + magnitudes[magnitude];\n }\n add(addend) {\n return new Decimal(this._bigNumber.add(Decimal.from(addend)._bigNumber));\n }\n sub(subtrahend) {\n return new Decimal(this._bigNumber.sub(Decimal.from(subtrahend)._bigNumber));\n }\n mul(multiplier) {\n return new Decimal(this._bigNumber.mul(Decimal.from(multiplier)._bigNumber).div(DIGITS));\n }\n div(divider) {\n divider = Decimal.from(divider);\n if (divider.isZero) {\n return Decimal.INFINITY;\n }\n return new Decimal(this._bigNumber.mul(DIGITS).div(divider._bigNumber));\n }\n /** @internal */\n _divCeil(divider) {\n divider = Decimal.from(divider);\n if (divider.isZero) {\n return Decimal.INFINITY;\n }\n return new Decimal(this._bigNumber.mul(DIGITS).add(divider._bigNumber.sub(ONE)).div(divider._bigNumber));\n }\n mulDiv(multiplier, divider) {\n multiplier = Decimal.from(multiplier);\n divider = Decimal.from(divider);\n if (divider.isZero) {\n return Decimal.INFINITY;\n }\n return new Decimal(this._bigNumber.mul(multiplier._bigNumber).div(divider._bigNumber));\n }\n pow(exponent) {\n assert_1.default(Number.isInteger(exponent));\n assert_1.default(0 <= exponent && exponent <= 0xffffffff); // Ensure we're safe to use bitwise ops\n if (exponent === 0) {\n return Decimal.ONE;\n }\n if (exponent === 1) {\n return this;\n }\n let x = this._bigNumber;\n let y = DIGITS;\n for (; exponent > 1; exponent >>>= 1) {\n if (exponent & 1) {\n y = roundedMul(x, y);\n }\n x = roundedMul(x, x);\n }\n return new Decimal(roundedMul(x, y));\n }\n get isZero() {\n return this._bigNumber.isZero();\n }\n get zero() {\n if (this.isZero) {\n return this;\n }\n }\n get nonZero() {\n if (!this.isZero) {\n return this;\n }\n }\n get infinite() {\n if (this.eq(Decimal.INFINITY)) {\n return this;\n }\n }\n get finite() {\n if (!this.eq(Decimal.INFINITY)) {\n return this;\n }\n }\n /** @internal */\n get absoluteValue() {\n return this;\n }\n lt(that) {\n return this._bigNumber.lt(Decimal.from(that)._bigNumber);\n }\n eq(that) {\n return this._bigNumber.eq(Decimal.from(that)._bigNumber);\n }\n gt(that) {\n return this._bigNumber.gt(Decimal.from(that)._bigNumber);\n }\n gte(that) {\n return this._bigNumber.gte(Decimal.from(that)._bigNumber);\n }\n lte(that) {\n return this._bigNumber.lte(Decimal.from(that)._bigNumber);\n }\n static min(a, b) {\n a = Decimal.from(a);\n b = Decimal.from(b);\n return a.lt(b) ? a : b;\n }\n static max(a, b) {\n a = Decimal.from(a);\n b = Decimal.from(b);\n return a.gt(b) ? a : b;\n }\n}\nexports.Decimal = Decimal;\nDecimal.INFINITY = Decimal.fromBigNumberString(MAX_UINT_256);\nDecimal.ZERO = Decimal.from(0);\nDecimal.HALF = Decimal.from(0.5);\nDecimal.ONE = Decimal.from(1);\n/** @alpha */\nclass Difference {\n constructor(number) {\n this._number = number;\n }\n static between(d1, d2) {\n if (d1 === undefined || d2 === undefined) {\n return new Difference(undefined);\n }\n d1 = Decimal.from(d1);\n d2 = Decimal.from(d2);\n if (d1.infinite && d2.infinite) {\n return new Difference(undefined);\n }\n else if (d1.infinite) {\n return new Difference({ sign: \"+\", absoluteValue: d1 });\n }\n else if (d2.infinite) {\n return new Difference({ sign: \"-\", absoluteValue: d2 });\n }\n else if (d1.gt(d2)) {\n return new Difference({ sign: \"+\", absoluteValue: Decimal.from(d1).sub(d2) });\n }\n else if (d2.gt(d1)) {\n return new Difference({ sign: \"-\", absoluteValue: Decimal.from(d2).sub(d1) });\n }\n else {\n return new Difference({ sign: \"\", absoluteValue: Decimal.ZERO });\n }\n }\n toString(precision) {\n if (!this._number) {\n return \"N/A\";\n }\n return this._number.sign + this._number.absoluteValue.toString(precision);\n }\n prettify(precision) {\n if (!this._number) {\n return this.toString();\n }\n return this._number.sign + this._number.absoluteValue.prettify(precision);\n }\n mul(multiplier) {\n return new Difference(this._number && {\n sign: this._number.sign,\n absoluteValue: this._number.absoluteValue.mul(multiplier)\n });\n }\n get nonZero() {\n var _a;\n return ((_a = this._number) === null || _a === void 0 ? void 0 : _a.absoluteValue.nonZero) && this;\n }\n get positive() {\n var _a;\n return ((_a = this._number) === null || _a === void 0 ? void 0 : _a.sign) === \"+\" ? this : undefined;\n }\n get negative() {\n var _a;\n return ((_a = this._number) === null || _a === void 0 ? void 0 : _a.sign) === \"-\" ? this : undefined;\n }\n get absoluteValue() {\n var _a;\n return (_a = this._number) === null || _a === void 0 ? void 0 : _a.absoluteValue;\n }\n get infinite() {\n var _a;\n return ((_a = this._number) === null || _a === void 0 ? void 0 : _a.absoluteValue.infinite) && this;\n }\n get finite() {\n var _a;\n return ((_a = this._number) === null || _a === void 0 ? void 0 : _a.absoluteValue.finite) && this;\n }\n}\nexports.Difference = Difference;\n/** @alpha */\nclass Percent {\n constructor(ratio) {\n this._percent = ratio.infinite || (ratio.mul && ratio.mul(100)) || ratio;\n }\n nonZeroish(precision) {\n var _a;\n const zeroish = `0.${\"0\".repeat(precision)}5`;\n if ((_a = this._percent.absoluteValue) === null || _a === void 0 ? void 0 : _a.gte(zeroish)) {\n return this;\n }\n }\n toString(precision) {\n return (this._percent.toString(precision) +\n (this._percent.absoluteValue && !this._percent.infinite ? \"%\" : \"\"));\n }\n prettify() {\n var _a, _b;\n if ((_a = this._percent.absoluteValue) === null || _a === void 0 ? void 0 : _a.gte(\"1000\")) {\n return this.toString(0);\n }\n else if ((_b = this._percent.absoluteValue) === null || _b === void 0 ? void 0 : _b.gte(\"10\")) {\n return this.toString(1);\n }\n else {\n return this.toString(2);\n }\n }\n}\nexports.Percent = Percent;\n//# sourceMappingURL=Decimal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MINIMUM_REDEMPTION_RATE = exports.MAXIMUM_BORROWING_RATE = exports.MINIMUM_BORROWING_RATE = exports.LUSD_MINIMUM_DEBT = exports.LUSD_MINIMUM_NET_DEBT = exports.LUSD_LIQUIDATION_RESERVE = exports.MINIMUM_COLLATERAL_RATIO = exports.CRITICAL_COLLATERAL_RATIO = void 0;\nconst Decimal_1 = require(\"./Decimal\");\n/**\n * Total collateral ratio below which recovery mode is triggered.\n *\n * @public\n */\nexports.CRITICAL_COLLATERAL_RATIO = Decimal_1.Decimal.from(1.5);\n/**\n * Collateral ratio below which a Trove can be liquidated in normal mode.\n *\n * @public\n */\nexports.MINIMUM_COLLATERAL_RATIO = Decimal_1.Decimal.from(1.1);\n/**\n * Amount of LUSD that's reserved for compensating the liquidator of a Trove.\n *\n * @public\n */\nexports.LUSD_LIQUIDATION_RESERVE = Decimal_1.Decimal.from(200);\n/**\n * A Trove must always have at least this much debt on top of the\n * {@link LUSD_LIQUIDATION_RESERVE | liquidation reserve}.\n *\n * @remarks\n * Any transaction that would result in a Trove with less net debt than this will be reverted.\n *\n * @public\n */\nexports.LUSD_MINIMUM_NET_DEBT = Decimal_1.Decimal.from(1800);\n/**\n * A Trove must always have at least this much debt.\n *\n * @remarks\n * Any transaction that would result in a Trove with less debt than this will be reverted.\n *\n * @public\n */\nexports.LUSD_MINIMUM_DEBT = exports.LUSD_LIQUIDATION_RESERVE.add(exports.LUSD_MINIMUM_NET_DEBT);\n/**\n * Value that the {@link Fees.borrowingRate | borrowing rate} will never decay below.\n *\n * @remarks\n * Note that the borrowing rate can still be lower than this during recovery mode, when it's\n * overridden by zero.\n *\n * @public\n */\nexports.MINIMUM_BORROWING_RATE = Decimal_1.Decimal.from(0.005);\n/**\n * Value that the {@link Fees.borrowingRate | borrowing rate} will never exceed.\n *\n * @public\n */\nexports.MAXIMUM_BORROWING_RATE = Decimal_1.Decimal.from(0.05);\n/**\n * Value that the {@link Fees.redemptionRate | redemption rate} will never decay below.\n *\n * @public\n */\nexports.MINIMUM_REDEMPTION_RATE = Decimal_1.Decimal.from(0.005);\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useLiquityStore = void 0;\nconst react_1 = require(\"react\");\nconst LiquityStoreProvider_1 = require(\"../components/LiquityStoreProvider\");\nconst useLiquityStore = () => {\n const store = react_1.useContext(LiquityStoreProvider_1.LiquityStoreContext);\n if (!store) {\n throw new Error(\"You must provide a LiquityStore via LiquityStoreProvider\");\n }\n return store;\n};\nexports.useLiquityStore = useLiquityStore;\n//# sourceMappingURL=useLiquityStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketAugmentedWeb3Provider = exports.WebSocketAugmented = exports.isWebSocketAugmentedProvider = void 0;\nconst providers_1 = require(\"@ethersproject/providers\");\nconst WebSocketProvider_1 = require(\"./WebSocketProvider\");\nconst webSocketAugmentedProviders = [];\nconst isWebSocketAugmentedProvider = (provider) => webSocketAugmentedProviders.some(webSocketAugmentedProvider => provider instanceof webSocketAugmentedProvider);\nexports.isWebSocketAugmentedProvider = isWebSocketAugmentedProvider;\nconst isHeaderNotFoundError = (error) => typeof error === \"object\" &&\n typeof error.message === \"string\" &&\n error.message.includes(\"header not found\");\nconst loadBalancingGlitchRetryIntervalMs = 200;\nconst delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));\nconst WebSocketAugmented = (Base) => {\n let webSocketAugmentedProvider = class extends Base {\n constructor() {\n super(...arguments);\n this._seenBlock = 0;\n this._blockListenerScheduled = false;\n this._blockListeners = new Set();\n this._blockListener = this._onBlock.bind(this);\n }\n openWebSocket(url, network) {\n this._wsProvider = new WebSocketProvider_1.WebSocketProvider(url, network);\n this._wsProvider.onClose = this._onWebSocketClose.bind(this);\n this._wsParams = [url, network];\n this._switchover();\n }\n _onWebSocketClose() {\n this.closeWebSocket();\n console.warn(\"WebSocketProvider disconnected. Retrying in 10 seconds.\");\n this._reconnectTimerId = setTimeout(() => this.openWebSocket(...this._wsParams), 10000);\n }\n closeWebSocket() {\n if (this._wsProvider) {\n this._wsProvider.onClose = null;\n this._wsProvider.close(1000); // normal closure\n this._wsProvider = undefined;\n this._switchover();\n if (this._reconnectTimerId !== undefined) {\n clearTimeout(this._reconnectTimerId);\n this._reconnectTimerId = undefined;\n }\n }\n }\n _switchover() {\n if (this._blockListeners.size > 0) {\n if (this._wsProvider) {\n super.off(\"block\", this._blockListener);\n }\n this._startBlockEvents();\n }\n }\n _onBlock(blockNumber) {\n this._seenBlock = blockNumber;\n if (!this._blockListenerScheduled) {\n this._blockListenerScheduled = true;\n setTimeout(() => {\n this._blockListenerScheduled = false;\n [...this._blockListeners].forEach(listener => listener(this._seenBlock));\n }, 50);\n }\n }\n async _retrySeenBlock(perform, startingBlock) {\n for (let retries = 0;; ++retries) {\n try {\n const ret = await perform();\n if (retries) {\n // console.log(`Glitch resolved after ${retries} ${retries === 1 ? \"retry\" : \"retries\"}.`);\n }\n return ret;\n }\n catch (error) {\n if (this._seenBlock !== startingBlock || !isHeaderNotFoundError(error)) {\n throw error;\n }\n }\n // console.warn(\"Load balancing glitch. Retrying...\");\n await delay(loadBalancingGlitchRetryIntervalMs);\n }\n }\n async call(transaction, blockTag) {\n const resolvedBlockTag = await blockTag;\n const perform = () => {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.call(transaction, resolvedBlockTag)\n : super.call(transaction, resolvedBlockTag);\n };\n return resolvedBlockTag === this._seenBlock\n ? this._retrySeenBlock(perform, this._seenBlock)\n : perform();\n }\n async getBalance(addressOrName, blockTag) {\n const resolvedBlockTag = await blockTag;\n const perform = () => {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.getBalance(addressOrName, resolvedBlockTag)\n : super.getBalance(addressOrName, resolvedBlockTag);\n };\n return resolvedBlockTag === this._seenBlock\n ? this._retrySeenBlock(perform, this._seenBlock)\n : perform();\n }\n _startBlockEvents() {\n if (this._wsProvider) {\n console.log(\"Listening for new blocks on WebSocketProvider\");\n this._wsProvider.on(\"block\", this._blockListener);\n }\n else {\n console.log(\"Listening for new blocks on basic Provider\");\n super.on(\"block\", this._blockListener);\n }\n }\n _stopBlockEvents() {\n if (this._wsProvider) {\n this._wsProvider.off(\"block\", this._blockListener);\n }\n else {\n super.off(\"block\", this._blockListener);\n }\n }\n on(eventName, listener) {\n if (eventName === \"block\") {\n return this._addBlockListener(listener);\n }\n else {\n return super.on(eventName, listener);\n }\n }\n _addBlockListener(listener) {\n if (!this._blockListeners.has(listener)) {\n this._blockListeners.add(listener);\n if (this._blockListeners.size === 1) {\n this._startBlockEvents();\n }\n }\n return this;\n }\n once(eventName, listener) {\n if (eventName === \"block\") {\n const listenOnce = (blockNumber) => {\n listener(blockNumber);\n this._removeBlockListener(listenOnce);\n };\n return this._addBlockListener(listenOnce);\n }\n else {\n return super.once(eventName, listener);\n }\n }\n off(eventName, listener) {\n if (eventName === \"block\") {\n return this._removeBlockListener(listener);\n }\n else {\n return super.off(eventName, listener);\n }\n }\n _removeBlockListener(listener) {\n if (this._blockListeners.has(listener)) {\n this._blockListeners.delete(listener);\n if (this._blockListeners.size === 0) {\n this._stopBlockEvents();\n }\n }\n return this;\n }\n getTransactionReceipt(transactionHash) {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.ready) ? this._wsProvider.getTransactionReceipt(transactionHash)\n : super.getTransactionReceipt(transactionHash);\n }\n async _blockContainsTx(blockNumber, txHash) {\n let block;\n for (block = null; !block; block = await this.getBlock(blockNumber)) {\n await delay(loadBalancingGlitchRetryIntervalMs);\n }\n return block.transactions.some(txHashInBlock => txHashInBlock === txHash);\n }\n async _getTransactionReceiptFromLatest(txHash, latestBlock) {\n txHash = await txHash;\n for (let retries = 0;; ++retries) {\n const receipt = (await this.getTransactionReceipt(txHash));\n if (latestBlock === undefined ||\n (receipt === null && !(await this._blockContainsTx(latestBlock, txHash))) ||\n (receipt !== null && receipt.blockNumber + receipt.confirmations - 1 >= latestBlock)) {\n if (retries) {\n // console.log(`Glitch resolved after ${retries} ${retries === 1 ? \"retry\" : \"retries\"}.`);\n }\n return receipt;\n }\n // console.warn(\"Load balancing glitch. Retrying...\");\n await delay(loadBalancingGlitchRetryIntervalMs);\n }\n }\n async waitForTransaction(txHash, confirmations, timeout) {\n if (timeout !== undefined) {\n // We don't use timeout, don't implement it\n return super.waitForTransaction(txHash, confirmations, timeout);\n }\n let latestBlock = undefined;\n for (;;) {\n const receipt = await this._getTransactionReceiptFromLatest(txHash, latestBlock);\n if (receipt !== null &&\n (confirmations === undefined || receipt.confirmations >= confirmations)) {\n return receipt;\n }\n latestBlock = await new Promise(resolve => this.once(\"block\", resolve));\n }\n }\n };\n webSocketAugmentedProviders.push(webSocketAugmentedProvider);\n return webSocketAugmentedProvider;\n};\nexports.WebSocketAugmented = WebSocketAugmented;\nexports.WebSocketAugmentedWeb3Provider = exports.WebSocketAugmented(providers_1.Web3Provider);\n//# sourceMappingURL=WebSocketAugmentedProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketProvider = void 0;\nconst providers_1 = require(\"@ethersproject/providers\");\nclass WebSocketProvider extends providers_1.WebSocketProvider {\n get isReady() {\n return this._websocket.readyState === WebSocket.OPEN;\n }\n set onClose(closeListener) {\n this._websocket.onclose = closeListener;\n }\n close(code) {\n this._websocket.close(code);\n }\n async detectNetwork() {\n return this.network;\n }\n}\nexports.WebSocketProvider = WebSocketProvider;\n//# sourceMappingURL=WebSocketProvider.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._connectToContracts = exports._uniTokenIsMock = exports._priceFeedIsTestnet = exports._LiquityContract = void 0;\nconst contracts_1 = require(\"@ethersproject/contracts\");\nconst ActivePool_json_1 = __importDefault(require(\"../abi/ActivePool.json\"));\nconst BorrowerOperations_json_1 = __importDefault(require(\"../abi/BorrowerOperations.json\"));\nconst TroveManager_json_1 = __importDefault(require(\"../abi/TroveManager.json\"));\nconst LUSDToken_json_1 = __importDefault(require(\"../abi/LUSDToken.json\"));\nconst CollSurplusPool_json_1 = __importDefault(require(\"../abi/CollSurplusPool.json\"));\nconst CommunityIssuance_json_1 = __importDefault(require(\"../abi/CommunityIssuance.json\"));\nconst DefaultPool_json_1 = __importDefault(require(\"../abi/DefaultPool.json\"));\nconst LQTYToken_json_1 = __importDefault(require(\"../abi/LQTYToken.json\"));\nconst HintHelpers_json_1 = __importDefault(require(\"../abi/HintHelpers.json\"));\nconst LockupContractFactory_json_1 = __importDefault(require(\"../abi/LockupContractFactory.json\"));\nconst LQTYStaking_json_1 = __importDefault(require(\"../abi/LQTYStaking.json\"));\nconst MultiTroveGetter_json_1 = __importDefault(require(\"../abi/MultiTroveGetter.json\"));\nconst PriceFeed_json_1 = __importDefault(require(\"../abi/PriceFeed.json\"));\nconst PriceFeedTestnet_json_1 = __importDefault(require(\"../abi/PriceFeedTestnet.json\"));\nconst SortedTroves_json_1 = __importDefault(require(\"../abi/SortedTroves.json\"));\nconst StabilityPool_json_1 = __importDefault(require(\"../abi/StabilityPool.json\"));\nconst GasPool_json_1 = __importDefault(require(\"../abi/GasPool.json\"));\nconst Unipool_json_1 = __importDefault(require(\"../abi/Unipool.json\"));\nconst IERC20_json_1 = __importDefault(require(\"../abi/IERC20.json\"));\nconst ERC20Mock_json_1 = __importDefault(require(\"../abi/ERC20Mock.json\"));\nconst buildEstimatedFunctions = (estimateFunctions, functions) => Object.fromEntries(Object.keys(estimateFunctions).map(functionName => [\n functionName,\n async (overrides, adjustEstimate, ...args) => {\n if (overrides.gasLimit === undefined) {\n const estimatedGas = await estimateFunctions[functionName](...args, overrides);\n overrides = {\n ...overrides,\n gasLimit: adjustEstimate(estimatedGas)\n };\n }\n return functions[functionName](...args, overrides);\n }\n]));\nclass _LiquityContract extends contracts_1.Contract {\n constructor(addressOrName, contractInterface, signerOrProvider) {\n super(addressOrName, contractInterface, signerOrProvider);\n // this.estimateAndCall = buildEstimatedFunctions(this.estimateGas, this);\n this.estimateAndPopulate = buildEstimatedFunctions(this.estimateGas, this.populateTransaction);\n }\n extractEvents(logs, name) {\n return logs\n .filter(log => log.address === this.address)\n .map(log => this.interface.parseLog(log))\n .filter(e => e.name === name);\n }\n}\nexports._LiquityContract = _LiquityContract;\n/** @internal */\nconst _priceFeedIsTestnet = (priceFeed) => \"setPrice\" in priceFeed;\nexports._priceFeedIsTestnet = _priceFeedIsTestnet;\n/** @internal */\nconst _uniTokenIsMock = (uniToken) => \"mint\" in uniToken;\nexports._uniTokenIsMock = _uniTokenIsMock;\nconst getAbi = (priceFeedIsTestnet, uniTokenIsMock) => ({\n activePool: ActivePool_json_1.default,\n borrowerOperations: BorrowerOperations_json_1.default,\n troveManager: TroveManager_json_1.default,\n lusdToken: LUSDToken_json_1.default,\n communityIssuance: CommunityIssuance_json_1.default,\n defaultPool: DefaultPool_json_1.default,\n lqtyToken: LQTYToken_json_1.default,\n hintHelpers: HintHelpers_json_1.default,\n lockupContractFactory: LockupContractFactory_json_1.default,\n lqtyStaking: LQTYStaking_json_1.default,\n multiTroveGetter: MultiTroveGetter_json_1.default,\n priceFeed: priceFeedIsTestnet ? PriceFeedTestnet_json_1.default : PriceFeed_json_1.default,\n sortedTroves: SortedTroves_json_1.default,\n stabilityPool: StabilityPool_json_1.default,\n gasPool: GasPool_json_1.default,\n collSurplusPool: CollSurplusPool_json_1.default,\n unipool: Unipool_json_1.default,\n uniToken: uniTokenIsMock ? ERC20Mock_json_1.default : IERC20_json_1.default\n});\nconst mapLiquityContracts = (contracts, f) => Object.fromEntries(Object.entries(contracts).map(([key, t]) => [key, f(t, key)]));\n/** @internal */\nconst _connectToContracts = (signerOrProvider, { addresses, _priceFeedIsTestnet, _uniTokenIsMock }) => {\n const abi = getAbi(_priceFeedIsTestnet, _uniTokenIsMock);\n return mapLiquityContracts(addresses, (address, key) => new _LiquityContract(address, abi[key], signerOrProvider));\n};\nexports._connectToContracts = _connectToContracts;\n//# sourceMappingURL=contracts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableEthersLiquity = void 0;\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst BlockPolledLiquityStore_1 = require(\"./BlockPolledLiquityStore\");\n// TODO: these are constant in the contracts, so it doesn't make sense to make a call for them,\n// but to avoid having to update them here when we change them in the contracts, we could read\n// them once after deployment and save them to LiquityDeployment.\nconst MINUTE_DECAY_FACTOR = lib_base_1.Decimal.from(\"0.999037758833783000\");\nconst BETA = lib_base_1.Decimal.from(2);\nvar BackendTroveStatus;\n(function (BackendTroveStatus) {\n BackendTroveStatus[BackendTroveStatus[\"nonExistent\"] = 0] = \"nonExistent\";\n BackendTroveStatus[BackendTroveStatus[\"active\"] = 1] = \"active\";\n BackendTroveStatus[BackendTroveStatus[\"closedByOwner\"] = 2] = \"closedByOwner\";\n BackendTroveStatus[BackendTroveStatus[\"closedByLiquidation\"] = 3] = \"closedByLiquidation\";\n BackendTroveStatus[BackendTroveStatus[\"closedByRedemption\"] = 4] = \"closedByRedemption\";\n})(BackendTroveStatus || (BackendTroveStatus = {}));\nconst panic = (error) => {\n throw error;\n};\nconst userTroveStatusFrom = (backendStatus) => backendStatus === BackendTroveStatus.nonExistent\n ? \"nonExistent\"\n : backendStatus === BackendTroveStatus.active\n ? \"open\"\n : backendStatus === BackendTroveStatus.closedByOwner\n ? \"closedByOwner\"\n : backendStatus === BackendTroveStatus.closedByLiquidation\n ? \"closedByLiquidation\"\n : backendStatus === BackendTroveStatus.closedByRedemption\n ? \"closedByRedemption\"\n : panic(new Error(`invalid backendStatus ${backendStatus}`));\nconst decimalify = (bigNumber) => lib_base_1.Decimal.fromBigNumberString(bigNumber.toHexString());\nconst numberify = (bigNumber) => bigNumber.toNumber();\nconst convertToDate = (timestamp) => new Date(timestamp * 1000);\nconst validSortingOptions = [\"ascendingCollateralRatio\", \"descendingCollateralRatio\"];\nconst expectPositiveInt = (obj, key) => {\n if (obj[key] !== undefined) {\n if (!Number.isInteger(obj[key])) {\n throw new Error(`${key} must be an integer`);\n }\n if (obj[key] < 0) {\n throw new Error(`${key} must not be negative`);\n }\n }\n};\n/**\n * Ethers-based implementation of {@link @liquity/lib-base#ReadableLiquity}.\n *\n * @public\n */\nclass ReadableEthersLiquity {\n /** @internal */\n constructor(connection) {\n this.connection = connection;\n }\n /** @internal */\n static _from(connection) {\n const readable = new ReadableEthersLiquity(connection);\n return connection.useStore === \"blockPolled\"\n ? new _BlockPolledReadableEthersLiquity(readable)\n : readable;\n }\n /**\n * Connect to the Liquity protocol and create a `ReadableEthersLiquity` object.\n *\n * @param signerOrProvider - Ethers `Signer` or `Provider` to use for connecting to the Ethereum\n * network.\n * @param optionalParams - Optional parameters that can be used to customize the connection.\n */\n static async connect(signerOrProvider, optionalParams) {\n return ReadableEthersLiquity._from(await EthersLiquityConnection_1._connect(signerOrProvider, optionalParams));\n }\n hasStore() {\n return false;\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalRedistributed} */\n async getTotalRedistributed(overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this.connection);\n const [collateral, debt] = await Promise.all([\n troveManager.L_ETH({ ...overrides }).then(decimalify),\n troveManager.L_LUSDDebt({ ...overrides }).then(decimalify)\n ]);\n return new lib_base_1.Trove(collateral, debt);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTroveBeforeRedistribution} */\n async getTroveBeforeRedistribution(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { troveManager } = EthersLiquityConnection_1._getContracts(this.connection);\n const [trove, snapshot] = await Promise.all([\n troveManager.Troves(address, { ...overrides }),\n troveManager.rewardSnapshots(address, { ...overrides })\n ]);\n if (trove.status === BackendTroveStatus.active) {\n return new lib_base_1.TroveWithPendingRedistribution(address, userTroveStatusFrom(trove.status), decimalify(trove.coll), decimalify(trove.debt), decimalify(trove.stake), new lib_base_1.Trove(decimalify(snapshot.ETH), decimalify(snapshot.LUSDDebt)));\n }\n else {\n return new lib_base_1.TroveWithPendingRedistribution(address, userTroveStatusFrom(trove.status));\n }\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTrove} */\n async getTrove(address, overrides) {\n const [trove, totalRedistributed] = await Promise.all([\n this.getTroveBeforeRedistribution(address, overrides),\n this.getTotalRedistributed(overrides)\n ]);\n return trove.applyRedistribution(totalRedistributed);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getNumberOfTroves} */\n async getNumberOfTroves(overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this.connection);\n return (await troveManager.getTroveOwnersCount({ ...overrides })).toNumber();\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getPrice} */\n getPrice(overrides) {\n const { priceFeed } = EthersLiquityConnection_1._getContracts(this.connection);\n return priceFeed.callStatic.fetchPrice({ ...overrides }).then(decimalify);\n }\n /** @internal */\n async _getActivePool(overrides) {\n const { activePool } = EthersLiquityConnection_1._getContracts(this.connection);\n const [activeCollateral, activeDebt] = await Promise.all([\n activePool.getETH({ ...overrides }),\n activePool.getLUSDDebt({ ...overrides })\n ].map(getBigNumber => getBigNumber.then(decimalify)));\n return new lib_base_1.Trove(activeCollateral, activeDebt);\n }\n /** @internal */\n async _getDefaultPool(overrides) {\n const { defaultPool } = EthersLiquityConnection_1._getContracts(this.connection);\n const [liquidatedCollateral, closedDebt] = await Promise.all([\n defaultPool.getETH({ ...overrides }),\n defaultPool.getLUSDDebt({ ...overrides })\n ].map(getBigNumber => getBigNumber.then(decimalify)));\n return new lib_base_1.Trove(liquidatedCollateral, closedDebt);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotal} */\n async getTotal(overrides) {\n const [activePool, defaultPool] = await Promise.all([\n this._getActivePool(overrides),\n this._getDefaultPool(overrides)\n ]);\n return activePool.add(defaultPool);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getStabilityDeposit} */\n async getStabilityDeposit(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this.connection);\n const [{ frontEndTag, initialValue }, currentLUSD, collateralGain, lqtyReward] = await Promise.all([\n stabilityPool.deposits(address, { ...overrides }),\n stabilityPool.getCompoundedLUSDDeposit(address, { ...overrides }),\n stabilityPool.getDepositorETHGain(address, { ...overrides }),\n stabilityPool.getDepositorLQTYGain(address, { ...overrides })\n ]);\n return new lib_base_1.StabilityDeposit(decimalify(initialValue), decimalify(currentLUSD), decimalify(collateralGain), decimalify(lqtyReward), frontEndTag);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getRemainingStabilityPoolLQTYReward} */\n async getRemainingStabilityPoolLQTYReward(overrides) {\n const { communityIssuance } = EthersLiquityConnection_1._getContracts(this.connection);\n const issuanceCap = this.connection.totalStabilityPoolLQTYReward;\n const totalLQTYIssued = decimalify(await communityIssuance.totalLQTYIssued({ ...overrides }));\n // totalLQTYIssued approaches but never reaches issuanceCap\n return issuanceCap.sub(totalLQTYIssued);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLUSDInStabilityPool} */\n getLUSDInStabilityPool(overrides) {\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this.connection);\n return stabilityPool.getTotalLUSDDeposits({ ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLUSDBalance} */\n getLUSDBalance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { lusdToken } = EthersLiquityConnection_1._getContracts(this.connection);\n return lusdToken.balanceOf(address, { ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLQTYBalance} */\n getLQTYBalance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { lqtyToken } = EthersLiquityConnection_1._getContracts(this.connection);\n return lqtyToken.balanceOf(address, { ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getUniTokenBalance} */\n getUniTokenBalance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { uniToken } = EthersLiquityConnection_1._getContracts(this.connection);\n return uniToken.balanceOf(address, { ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getUniTokenAllowance} */\n getUniTokenAllowance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { uniToken, unipool } = EthersLiquityConnection_1._getContracts(this.connection);\n return uniToken.allowance(address, unipool.address, { ...overrides }).then(decimalify);\n }\n /** @internal */\n async _getRemainingLiquidityMiningLQTYRewardCalculator(overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this.connection);\n const [totalSupply, rewardRate, periodFinish, lastUpdateTime] = await Promise.all([\n unipool.totalSupply({ ...overrides }),\n unipool.rewardRate({ ...overrides }).then(decimalify),\n unipool.periodFinish({ ...overrides }).then(numberify),\n unipool.lastUpdateTime({ ...overrides }).then(numberify)\n ]);\n return (blockTimestamp) => rewardRate.mul(Math.max(0, periodFinish - (totalSupply.isZero() ? lastUpdateTime : blockTimestamp)));\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getRemainingLiquidityMiningLQTYReward} */\n async getRemainingLiquidityMiningLQTYReward(overrides) {\n const [calculateRemainingLQTY, blockTimestamp] = await Promise.all([\n this._getRemainingLiquidityMiningLQTYRewardCalculator(overrides),\n EthersLiquityConnection_1._getBlockTimestamp(this.connection, overrides === null || overrides === void 0 ? void 0 : overrides.blockTag)\n ]);\n return calculateRemainingLQTY(blockTimestamp);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLiquidityMiningStake} */\n getLiquidityMiningStake(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { unipool } = EthersLiquityConnection_1._getContracts(this.connection);\n return unipool.balanceOf(address, { ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalStakedUniTokens} */\n getTotalStakedUniTokens(overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this.connection);\n return unipool.totalSupply({ ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLiquidityMiningLQTYReward} */\n getLiquidityMiningLQTYReward(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { unipool } = EthersLiquityConnection_1._getContracts(this.connection);\n return unipool.earned(address, { ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getCollateralSurplusBalance} */\n getCollateralSurplusBalance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { collSurplusPool } = EthersLiquityConnection_1._getContracts(this.connection);\n return collSurplusPool.getCollateral(address, { ...overrides }).then(decimalify);\n }\n async getTroves(params, overrides) {\n var _a, _b;\n const { multiTroveGetter } = EthersLiquityConnection_1._getContracts(this.connection);\n expectPositiveInt(params, \"first\");\n expectPositiveInt(params, \"startingAt\");\n if (!validSortingOptions.includes(params.sortedBy)) {\n throw new Error(`sortedBy must be one of: ${validSortingOptions.map(x => `\"${x}\"`).join(\", \")}`);\n }\n const [totalRedistributed, backendTroves] = await Promise.all([\n params.beforeRedistribution ? undefined : this.getTotalRedistributed({ ...overrides }),\n multiTroveGetter.getMultipleSortedTroves(params.sortedBy === \"descendingCollateralRatio\"\n ? (_a = params.startingAt) !== null && _a !== void 0 ? _a : 0 : -(((_b = params.startingAt) !== null && _b !== void 0 ? _b : 0) + 1), params.first, { ...overrides })\n ]);\n const troves = mapBackendTroves(backendTroves);\n if (totalRedistributed) {\n return troves.map(trove => trove.applyRedistribution(totalRedistributed));\n }\n else {\n return troves;\n }\n }\n /** @internal */\n async _getFeesFactory(overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this.connection);\n const [lastFeeOperationTime, baseRateWithoutDecay] = await Promise.all([\n troveManager.lastFeeOperationTime({ ...overrides }),\n troveManager.baseRate({ ...overrides }).then(decimalify)\n ]);\n return (blockTimestamp, recoveryMode) => new lib_base_1.Fees(baseRateWithoutDecay, MINUTE_DECAY_FACTOR, BETA, convertToDate(lastFeeOperationTime.toNumber()), convertToDate(blockTimestamp), recoveryMode);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getFees} */\n async getFees(overrides) {\n const [createFees, total, price, blockTimestamp] = await Promise.all([\n this._getFeesFactory(overrides),\n this.getTotal(overrides),\n this.getPrice(overrides),\n EthersLiquityConnection_1._getBlockTimestamp(this.connection, overrides === null || overrides === void 0 ? void 0 : overrides.blockTag)\n ]);\n return createFees(blockTimestamp, total.collateralRatioIsBelowCritical(price));\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLQTYStake} */\n async getLQTYStake(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { lqtyStaking } = EthersLiquityConnection_1._getContracts(this.connection);\n const [stakedLQTY, collateralGain, lusdGain] = await Promise.all([\n lqtyStaking.stakes(address, { ...overrides }),\n lqtyStaking.getPendingETHGain(address, { ...overrides }),\n lqtyStaking.getPendingLUSDGain(address, { ...overrides })\n ].map(getBigNumber => getBigNumber.then(decimalify)));\n return new lib_base_1.LQTYStake(stakedLQTY, collateralGain, lusdGain);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalStakedLQTY} */\n async getTotalStakedLQTY(overrides) {\n const { lqtyStaking } = EthersLiquityConnection_1._getContracts(this.connection);\n return lqtyStaking.totalLQTYStaked({ ...overrides }).then(decimalify);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getFrontendStatus} */\n async getFrontendStatus(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireFrontendAddress(this.connection));\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this.connection);\n const { registered, kickbackRate } = await stabilityPool.frontEnds(address, { ...overrides });\n return registered\n ? { status: \"registered\", kickbackRate: decimalify(kickbackRate) }\n : { status: \"unregistered\" };\n }\n}\nexports.ReadableEthersLiquity = ReadableEthersLiquity;\nconst mapBackendTroves = (troves) => troves.map(trove => new lib_base_1.TroveWithPendingRedistribution(trove.owner, \"open\", // These Troves are coming from the SortedTroves list, so they must be open\ndecimalify(trove.coll), decimalify(trove.debt), decimalify(trove.stake), new lib_base_1.Trove(decimalify(trove.snapshotETH), decimalify(trove.snapshotLUSDDebt))));\nclass BlockPolledLiquityStoreBasedCache {\n constructor(store) {\n this._store = store;\n }\n _blockHit(overrides) {\n return (!overrides ||\n overrides.blockTag === undefined ||\n overrides.blockTag === this._store.state.blockTag);\n }\n _userHit(address, overrides) {\n return (this._blockHit(overrides) &&\n (address === undefined || address === this._store.connection.userAddress));\n }\n _frontendHit(address, overrides) {\n return (this._blockHit(overrides) &&\n (address === undefined || address === this._store.connection.frontendTag));\n }\n getTotalRedistributed(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.totalRedistributed;\n }\n }\n getTroveBeforeRedistribution(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.troveBeforeRedistribution;\n }\n }\n getTrove(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.trove;\n }\n }\n getNumberOfTroves(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.numberOfTroves;\n }\n }\n getPrice(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.price;\n }\n }\n getTotal(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.total;\n }\n }\n getStabilityDeposit(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.stabilityDeposit;\n }\n }\n getRemainingStabilityPoolLQTYReward(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.remainingStabilityPoolLQTYReward;\n }\n }\n getLUSDInStabilityPool(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.lusdInStabilityPool;\n }\n }\n getLUSDBalance(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.lusdBalance;\n }\n }\n getLQTYBalance(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.lqtyBalance;\n }\n }\n getUniTokenBalance(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.uniTokenBalance;\n }\n }\n getUniTokenAllowance(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.uniTokenAllowance;\n }\n }\n getRemainingLiquidityMiningLQTYReward(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.remainingLiquidityMiningLQTYReward;\n }\n }\n getLiquidityMiningStake(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.liquidityMiningStake;\n }\n }\n getTotalStakedUniTokens(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.totalStakedUniTokens;\n }\n }\n getLiquidityMiningLQTYReward(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.liquidityMiningLQTYReward;\n }\n }\n getCollateralSurplusBalance(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.collateralSurplusBalance;\n }\n }\n getFees(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.fees;\n }\n }\n getLQTYStake(address, overrides) {\n if (this._userHit(address, overrides)) {\n return this._store.state.lqtyStake;\n }\n }\n getTotalStakedLQTY(overrides) {\n if (this._blockHit(overrides)) {\n return this._store.state.totalStakedLQTY;\n }\n }\n getFrontendStatus(address, overrides) {\n if (this._frontendHit(address, overrides)) {\n return this._store.state.frontend;\n }\n }\n getTroves() {\n return undefined;\n }\n}\nclass _BlockPolledReadableEthersLiquity extends lib_base_1._CachedReadableLiquity {\n constructor(readable) {\n const store = new BlockPolledLiquityStore_1.BlockPolledLiquityStore(readable);\n super(readable, new BlockPolledLiquityStoreBasedCache(store));\n this.store = store;\n this.connection = readable.connection;\n }\n hasStore(store) {\n return store === undefined || store === \"blockPolled\";\n }\n _getActivePool() {\n throw new Error(\"Method not implemented.\");\n }\n _getDefaultPool() {\n throw new Error(\"Method not implemented.\");\n }\n _getFeesFactory() {\n throw new Error(\"Method not implemented.\");\n }\n _getRemainingLiquidityMiningLQTYRewardCalculator() {\n throw new Error(\"Method not implemented.\");\n }\n}\n//# sourceMappingURL=ReadableEthersLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockPolledLiquityStore = void 0;\nconst constants_1 = require(\"@ethersproject/constants\");\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst promiseAllValues = (object) => {\n const keys = Object.keys(object);\n return Promise.all(Object.values(object)).then(values => Object.fromEntries(values.map((value, i) => [keys[i], value])));\n};\nconst decimalify = (bigNumber) => lib_base_1.Decimal.fromBigNumberString(bigNumber.toHexString());\n/**\n * Ethers-based {@link @liquity/lib-base#LiquityStore} that updates state whenever there's a new\n * block.\n *\n * @public\n */\nclass BlockPolledLiquityStore extends lib_base_1.LiquityStore {\n constructor(readable) {\n super();\n this.connection = readable.connection;\n this._readable = readable;\n this._provider = EthersLiquityConnection_1._getProvider(readable.connection);\n }\n async _getRiskiestTroveBeforeRedistribution(overrides) {\n const riskiestTroves = await this._readable.getTroves({ first: 1, sortedBy: \"ascendingCollateralRatio\", beforeRedistribution: true }, overrides);\n if (riskiestTroves.length === 0) {\n return new lib_base_1.TroveWithPendingRedistribution(constants_1.AddressZero, \"nonExistent\");\n }\n return riskiestTroves[0];\n }\n async _get(blockTag) {\n const { userAddress, frontendTag } = this.connection;\n const { blockTimestamp, createFees, calculateRemainingLQTY, ...baseState } = await promiseAllValues({\n blockTimestamp: EthersLiquityConnection_1._getBlockTimestamp(this.connection, blockTag),\n createFees: this._readable._getFeesFactory({ blockTag }),\n calculateRemainingLQTY: this._readable._getRemainingLiquidityMiningLQTYRewardCalculator({\n blockTag\n }),\n price: this._readable.getPrice({ blockTag }),\n numberOfTroves: this._readable.getNumberOfTroves({ blockTag }),\n totalRedistributed: this._readable.getTotalRedistributed({ blockTag }),\n total: this._readable.getTotal({ blockTag }),\n lusdInStabilityPool: this._readable.getLUSDInStabilityPool({ blockTag }),\n totalStakedLQTY: this._readable.getTotalStakedLQTY({ blockTag }),\n _riskiestTroveBeforeRedistribution: this._getRiskiestTroveBeforeRedistribution({ blockTag }),\n totalStakedUniTokens: this._readable.getTotalStakedUniTokens({ blockTag }),\n remainingStabilityPoolLQTYReward: this._readable.getRemainingStabilityPoolLQTYReward({\n blockTag\n }),\n frontend: frontendTag\n ? this._readable.getFrontendStatus(frontendTag, { blockTag })\n : { status: \"unregistered\" },\n ...(userAddress\n ? {\n accountBalance: this._provider.getBalance(userAddress, blockTag).then(decimalify),\n lusdBalance: this._readable.getLUSDBalance(userAddress, { blockTag }),\n lqtyBalance: this._readable.getLQTYBalance(userAddress, { blockTag }),\n uniTokenBalance: this._readable.getUniTokenBalance(userAddress, { blockTag }),\n uniTokenAllowance: this._readable.getUniTokenAllowance(userAddress, { blockTag }),\n liquidityMiningStake: this._readable.getLiquidityMiningStake(userAddress, { blockTag }),\n liquidityMiningLQTYReward: this._readable.getLiquidityMiningLQTYReward(userAddress, {\n blockTag\n }),\n collateralSurplusBalance: this._readable.getCollateralSurplusBalance(userAddress, {\n blockTag\n }),\n troveBeforeRedistribution: this._readable.getTroveBeforeRedistribution(userAddress, {\n blockTag\n }),\n stabilityDeposit: this._readable.getStabilityDeposit(userAddress, { blockTag }),\n lqtyStake: this._readable.getLQTYStake(userAddress, { blockTag }),\n ownFrontend: this._readable.getFrontendStatus(userAddress, { blockTag })\n }\n : {\n accountBalance: lib_base_1.Decimal.ZERO,\n lusdBalance: lib_base_1.Decimal.ZERO,\n lqtyBalance: lib_base_1.Decimal.ZERO,\n uniTokenBalance: lib_base_1.Decimal.ZERO,\n uniTokenAllowance: lib_base_1.Decimal.ZERO,\n liquidityMiningStake: lib_base_1.Decimal.ZERO,\n liquidityMiningLQTYReward: lib_base_1.Decimal.ZERO,\n collateralSurplusBalance: lib_base_1.Decimal.ZERO,\n troveBeforeRedistribution: new lib_base_1.TroveWithPendingRedistribution(constants_1.AddressZero, \"nonExistent\"),\n stabilityDeposit: new lib_base_1.StabilityDeposit(lib_base_1.Decimal.ZERO, lib_base_1.Decimal.ZERO, lib_base_1.Decimal.ZERO, lib_base_1.Decimal.ZERO, constants_1.AddressZero),\n lqtyStake: new lib_base_1.LQTYStake(),\n ownFrontend: { status: \"unregistered\" }\n })\n });\n return [\n {\n ...baseState,\n _feesInNormalMode: createFees(blockTimestamp, false),\n remainingLiquidityMiningLQTYReward: calculateRemainingLQTY(blockTimestamp)\n },\n {\n blockTag,\n blockTimestamp\n }\n ];\n }\n /** @internal @override */\n _doStart() {\n this._get().then(state => {\n if (!this._loaded) {\n this._load(...state);\n }\n });\n const blockListener = async (blockTag) => {\n const state = await this._get(blockTag);\n if (this._loaded) {\n this._update(...state);\n }\n else {\n this._load(...state);\n }\n };\n this._provider.on(\"block\", blockListener);\n return () => {\n this._provider.off(\"block\", blockListener);\n };\n }\n /** @internal @override */\n _reduceExtra(oldState, stateUpdate) {\n var _a, _b;\n return {\n blockTag: (_a = stateUpdate.blockTag) !== null && _a !== void 0 ? _a : oldState.blockTag,\n blockTimestamp: (_b = stateUpdate.blockTimestamp) !== null && _b !== void 0 ? _b : oldState.blockTimestamp\n };\n }\n}\nexports.BlockPolledLiquityStore = BlockPolledLiquityStore;\n//# sourceMappingURL=BlockPolledLiquityStore.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PopulatableEthersLiquity = exports.PopulatedEthersRedemption = exports.PopulatedEthersLiquityTransaction = exports.SentEthersLiquityTransaction = exports._redeemMaxIterations = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst constants_1 = require(\"@ethersproject/constants\");\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst contracts_1 = require(\"./contracts\");\nconst parseLogs_1 = require(\"./parseLogs\");\nconst decimalify = (bigNumber) => lib_base_1.Decimal.fromBigNumberString(bigNumber.toHexString());\n// With 70 iterations redemption costs about ~10M gas, and each iteration accounts for ~138k more\n/** @internal */\nexports._redeemMaxIterations = 70;\nconst defaultBorrowingRateSlippageTolerance = lib_base_1.Decimal.from(0.005); // 0.5%\nconst defaultRedemptionRateSlippageTolerance = lib_base_1.Decimal.from(0.001); // 0.1%\nconst noDetails = () => undefined;\nconst compose = (f, g) => (_) => f(g(_));\nconst id = (t) => t;\n// Takes ~6-7K to update lastFeeOperationTime. Let's be on the safe side.\nconst addGasForPotentialLastFeeOperationTimeUpdate = (gas) => gas.add(10000);\n// First traversal in ascending direction takes ~50K, then ~13.5K per extra step.\n// 80K should be enough for 3 steps, plus some extra to be safe.\nconst addGasForPotentialListTraversal = (gas) => gas.add(80000);\nconst addGasForLQTYIssuance = (gas) => gas.add(50000);\nconst addGasForUnipoolRewardUpdate = (gas) => gas.add(20000);\n// To get the best entropy available, we'd do something like:\n//\n// const bigRandomNumber = () =>\n// BigNumber.from(\n// `0x${Array.from(crypto.getRandomValues(new Uint32Array(8)))\n// .map(u32 => u32.toString(16).padStart(8, \"0\"))\n// .join(\"\")}`\n// );\n//\n// However, Window.crypto is browser-specific. Since we only use this for randomly picking Troves\n// during the search for hints, Math.random() will do fine, too.\n//\n// This returns a random integer between 0 and Number.MAX_SAFE_INTEGER\nconst randomInteger = () => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n// Maximum number of trials to perform in a single getApproxHint() call. If the number of trials\n// required to get a statistically \"good\" hint is larger than this, the search for the hint will\n// be broken up into multiple getApproxHint() calls.\n//\n// This should be low enough to work with popular public Ethereum providers like Infura without\n// triggering any fair use limits.\nconst maxNumberOfTrialsAtOnce = 2500;\nfunction* generateTrials(totalNumberOfTrials) {\n assert_1.default(Number.isInteger(totalNumberOfTrials) && totalNumberOfTrials > 0);\n while (totalNumberOfTrials) {\n const numberOfTrials = Math.min(totalNumberOfTrials, maxNumberOfTrialsAtOnce);\n yield numberOfTrials;\n totalNumberOfTrials -= numberOfTrials;\n }\n}\n/**\n * A transaction that has already been sent.\n *\n * @remarks\n * Returned by {@link SendableEthersLiquity} functions.\n *\n * @public\n */\nclass SentEthersLiquityTransaction {\n /** @internal */\n constructor(rawSentTransaction, connection, parse) {\n this.rawSentTransaction = rawSentTransaction;\n this._connection = connection;\n this._parse = parse;\n }\n _receiptFrom(rawReceipt) {\n return rawReceipt\n ? rawReceipt.status\n ? lib_base_1._successfulReceipt(rawReceipt, this._parse(rawReceipt), () => parseLogs_1.logsToString(rawReceipt, EthersLiquityConnection_1._getContracts(this._connection)))\n : lib_base_1._failedReceipt(rawReceipt)\n : lib_base_1._pendingReceipt;\n }\n /** {@inheritDoc @liquity/lib-base#SentLiquityTransaction.getReceipt} */\n async getReceipt() {\n return this._receiptFrom(await EthersLiquityConnection_1._getProvider(this._connection).getTransactionReceipt(this.rawSentTransaction.hash));\n }\n /** {@inheritDoc @liquity/lib-base#SentLiquityTransaction.waitForReceipt} */\n async waitForReceipt() {\n const receipt = this._receiptFrom(await EthersLiquityConnection_1._getProvider(this._connection).waitForTransaction(this.rawSentTransaction.hash));\n assert_1.default(receipt.status !== \"pending\");\n return receipt;\n }\n}\nexports.SentEthersLiquityTransaction = SentEthersLiquityTransaction;\n/**\n * A transaction that has been prepared for sending.\n *\n * @remarks\n * Returned by {@link PopulatableEthersLiquity} functions.\n *\n * @public\n */\nclass PopulatedEthersLiquityTransaction {\n /** @internal */\n constructor(rawPopulatedTransaction, connection, parse) {\n this.rawPopulatedTransaction = rawPopulatedTransaction;\n this._connection = connection;\n this._parse = parse;\n }\n /** {@inheritDoc @liquity/lib-base#PopulatedLiquityTransaction.send} */\n async send() {\n return new SentEthersLiquityTransaction(await EthersLiquityConnection_1._requireSigner(this._connection).sendTransaction(this.rawPopulatedTransaction), this._connection, this._parse);\n }\n}\nexports.PopulatedEthersLiquityTransaction = PopulatedEthersLiquityTransaction;\n/**\n * {@inheritDoc @liquity/lib-base#PopulatedRedemption}\n *\n * @public\n */\nclass PopulatedEthersRedemption extends PopulatedEthersLiquityTransaction {\n /** @internal */\n constructor(rawPopulatedTransaction, connection, attemptedLUSDAmount, redeemableLUSDAmount, increaseAmountByMinimumNetDebt) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(connection);\n super(rawPopulatedTransaction, connection, ({ logs }) => troveManager\n .extractEvents(logs, \"Redemption\")\n .map(({ args: { _ETHSent, _ETHFee, _actualLUSDAmount, _attemptedLUSDAmount } }) => ({\n attemptedLUSDAmount: decimalify(_attemptedLUSDAmount),\n actualLUSDAmount: decimalify(_actualLUSDAmount),\n collateralTaken: decimalify(_ETHSent),\n fee: decimalify(_ETHFee)\n }))[0]);\n this.attemptedLUSDAmount = attemptedLUSDAmount;\n this.redeemableLUSDAmount = redeemableLUSDAmount;\n this.isTruncated = redeemableLUSDAmount.lt(attemptedLUSDAmount);\n this._increaseAmountByMinimumNetDebt = increaseAmountByMinimumNetDebt;\n }\n /** {@inheritDoc @liquity/lib-base#PopulatedRedemption.increaseAmountByMinimumNetDebt} */\n increaseAmountByMinimumNetDebt(maxRedemptionRate) {\n if (!this._increaseAmountByMinimumNetDebt) {\n throw new Error(\"PopulatedEthersRedemption: increaseAmountByMinimumNetDebt() can \" +\n \"only be called when amount is truncated\");\n }\n return this._increaseAmountByMinimumNetDebt(maxRedemptionRate);\n }\n}\nexports.PopulatedEthersRedemption = PopulatedEthersRedemption;\n/**\n * Ethers-based implementation of {@link @liquity/lib-base#PopulatableLiquity}.\n *\n * @public\n */\nclass PopulatableEthersLiquity {\n constructor(readable) {\n this._readable = readable;\n }\n _wrapSimpleTransaction(rawPopulatedTransaction) {\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, noDetails);\n }\n _wrapTroveChangeWithFees(params, rawPopulatedTransaction) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs }) => {\n const [newTrove] = borrowerOperations\n .extractEvents(logs, \"TroveUpdated\")\n .map(({ args: { _coll, _debt } }) => new lib_base_1.Trove(decimalify(_coll), decimalify(_debt)));\n const [fee] = borrowerOperations\n .extractEvents(logs, \"LUSDBorrowingFeePaid\")\n .map(({ args: { _LUSDFee } }) => decimalify(_LUSDFee));\n return {\n params,\n newTrove,\n fee\n };\n });\n }\n async _wrapTroveClosure(rawPopulatedTransaction) {\n const { activePool, lusdToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs, from: userAddress }) => {\n const [repayLUSD] = lusdToken\n .extractEvents(logs, \"Transfer\")\n .filter(({ args: { from, to } }) => from === userAddress && to === constants_1.AddressZero)\n .map(({ args: { value } }) => decimalify(value));\n const [withdrawCollateral] = activePool\n .extractEvents(logs, \"EtherSent\")\n .filter(({ args: { _to } }) => _to === userAddress)\n .map(({ args: { _amount } }) => decimalify(_amount));\n return {\n params: repayLUSD.nonZero ? { withdrawCollateral, repayLUSD } : { withdrawCollateral }\n };\n });\n }\n _wrapLiquidation(rawPopulatedTransaction) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs }) => {\n const liquidatedAddresses = troveManager\n .extractEvents(logs, \"TroveLiquidated\")\n .map(({ args: { _borrower } }) => _borrower);\n const [totals] = troveManager\n .extractEvents(logs, \"Liquidation\")\n .map(({ args: { _LUSDGasCompensation, _collGasCompensation, _liquidatedColl, _liquidatedDebt } }) => ({\n collateralGasCompensation: decimalify(_collGasCompensation),\n lusdGasCompensation: decimalify(_LUSDGasCompensation),\n totalLiquidated: new lib_base_1.Trove(decimalify(_liquidatedColl), decimalify(_liquidatedDebt))\n }));\n return {\n liquidatedAddresses,\n ...totals\n };\n });\n }\n _extractStabilityPoolGainsWithdrawalDetails(logs) {\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const [newLUSDDeposit] = stabilityPool\n .extractEvents(logs, \"UserDepositChanged\")\n .map(({ args: { _newDeposit } }) => decimalify(_newDeposit));\n const [[collateralGain, lusdLoss]] = stabilityPool\n .extractEvents(logs, \"ETHGainWithdrawn\")\n .map(({ args: { _ETH, _LUSDLoss } }) => [decimalify(_ETH), decimalify(_LUSDLoss)]);\n const [lqtyReward] = stabilityPool\n .extractEvents(logs, \"LQTYPaidToDepositor\")\n .map(({ args: { _LQTY } }) => decimalify(_LQTY));\n return {\n lusdLoss,\n newLUSDDeposit,\n collateralGain,\n lqtyReward\n };\n }\n _wrapStabilityPoolGainsWithdrawal(rawPopulatedTransaction) {\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs }) => this._extractStabilityPoolGainsWithdrawalDetails(logs));\n }\n _wrapStabilityDepositTopup(change, rawPopulatedTransaction) {\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs }) => ({\n ...this._extractStabilityPoolGainsWithdrawalDetails(logs),\n change\n }));\n }\n async _wrapStabilityDepositWithdrawal(rawPopulatedTransaction) {\n const { stabilityPool, lusdToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs, from: userAddress }) => {\n const gainsWithdrawalDetails = this._extractStabilityPoolGainsWithdrawalDetails(logs);\n const [withdrawLUSD] = lusdToken\n .extractEvents(logs, \"Transfer\")\n .filter(({ args: { from, to } }) => from === stabilityPool.address && to === userAddress)\n .map(({ args: { value } }) => decimalify(value));\n return {\n ...gainsWithdrawalDetails,\n change: { withdrawLUSD, withdrawAllLUSD: gainsWithdrawalDetails.newLUSDDeposit.isZero }\n };\n });\n }\n _wrapCollateralGainTransfer(rawPopulatedTransaction) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return new PopulatedEthersLiquityTransaction(rawPopulatedTransaction, this._readable.connection, ({ logs }) => {\n const [newTrove] = borrowerOperations\n .extractEvents(logs, \"TroveUpdated\")\n .map(({ args: { _coll, _debt } }) => new lib_base_1.Trove(decimalify(_coll), decimalify(_debt)));\n return {\n ...this._extractStabilityPoolGainsWithdrawalDetails(logs),\n newTrove\n };\n });\n }\n async _findHintsForNominalCollateralRatio(nominalCollateralRatio) {\n const { sortedTroves, hintHelpers } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const numberOfTroves = await this._readable.getNumberOfTroves();\n if (!numberOfTroves) {\n return [constants_1.AddressZero, constants_1.AddressZero];\n }\n if (nominalCollateralRatio.infinite) {\n return [constants_1.AddressZero, await sortedTroves.getFirst()];\n }\n const totalNumberOfTrials = Math.ceil(10 * Math.sqrt(numberOfTroves));\n const [firstTrials, ...restOfTrials] = generateTrials(totalNumberOfTrials);\n const collectApproxHint = ({ latestRandomSeed, results }, numberOfTrials) => hintHelpers\n .getApproxHint(nominalCollateralRatio.hex, numberOfTrials, latestRandomSeed)\n .then(({ latestRandomSeed, ...result }) => ({\n latestRandomSeed,\n results: [...results, result]\n }));\n const { results } = await restOfTrials.reduce((p, numberOfTrials) => p.then(state => collectApproxHint(state, numberOfTrials)), collectApproxHint({ latestRandomSeed: randomInteger(), results: [] }, firstTrials));\n const { hintAddress } = results.reduce((a, b) => (a.diff.lt(b.diff) ? a : b));\n return sortedTroves.findInsertPosition(nominalCollateralRatio.hex, hintAddress, hintAddress);\n }\n async _findHints(trove) {\n if (trove instanceof lib_base_1.TroveWithPendingRedistribution) {\n throw new Error(\"Rewards must be applied to this Trove\");\n }\n return this._findHintsForNominalCollateralRatio(trove._nominalCollateralRatio);\n }\n async _findRedemptionHints(amount) {\n const { hintHelpers } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const price = await this._readable.getPrice();\n const { firstRedemptionHint, partialRedemptionHintNICR, truncatedLUSDamount } = await hintHelpers.getRedemptionHints(amount.hex, price.hex, exports._redeemMaxIterations);\n const [partialRedemptionUpperHint, partialRedemptionLowerHint] = partialRedemptionHintNICR.isZero()\n ? [constants_1.AddressZero, constants_1.AddressZero]\n : await this._findHintsForNominalCollateralRatio(decimalify(partialRedemptionHintNICR));\n return [\n decimalify(truncatedLUSDamount),\n firstRedemptionHint,\n partialRedemptionUpperHint,\n partialRedemptionLowerHint,\n partialRedemptionHintNICR\n ];\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.openTrove} */\n async openTrove(params, maxBorrowingRate, overrides) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const normalized = lib_base_1._normalizeTroveCreation(params);\n const { depositCollateral, borrowLUSD } = normalized;\n const fees = await this._readable.getFees();\n const borrowingRate = fees.borrowingRate();\n const newTrove = lib_base_1.Trove.create(normalized, borrowingRate);\n maxBorrowingRate =\n maxBorrowingRate !== undefined\n ? lib_base_1.Decimal.from(maxBorrowingRate)\n : borrowingRate.add(defaultBorrowingRateSlippageTolerance);\n return this._wrapTroveChangeWithFees(normalized, await borrowerOperations.estimateAndPopulate.openTrove({ value: depositCollateral.hex, ...overrides }, compose(addGasForPotentialLastFeeOperationTimeUpdate, addGasForPotentialListTraversal), maxBorrowingRate.hex, borrowLUSD.hex, ...(await this._findHints(newTrove))));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.closeTrove} */\n async closeTrove(overrides) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapTroveClosure(await borrowerOperations.estimateAndPopulate.closeTrove({ ...overrides }, id));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.depositCollateral} */\n depositCollateral(amount, overrides) {\n return this.adjustTrove({ depositCollateral: amount }, undefined, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.withdrawCollateral} */\n withdrawCollateral(amount, overrides) {\n return this.adjustTrove({ withdrawCollateral: amount }, undefined, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.borrowLUSD} */\n borrowLUSD(amount, maxBorrowingRate, overrides) {\n return this.adjustTrove({ borrowLUSD: amount }, maxBorrowingRate, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.repayLUSD} */\n repayLUSD(amount, overrides) {\n return this.adjustTrove({ repayLUSD: amount }, undefined, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.adjustTrove} */\n async adjustTrove(params, maxBorrowingRate, overrides) {\n var _a, _b;\n const address = EthersLiquityConnection_1._requireAddress(this._readable.connection, overrides);\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const normalized = lib_base_1._normalizeTroveAdjustment(params);\n const { depositCollateral, withdrawCollateral, borrowLUSD, repayLUSD } = normalized;\n const [trove, fees] = await Promise.all([\n this._readable.getTrove(address),\n borrowLUSD && this._readable.getFees()\n ]);\n const borrowingRate = fees === null || fees === void 0 ? void 0 : fees.borrowingRate();\n const finalTrove = trove.adjust(normalized, borrowingRate);\n maxBorrowingRate =\n maxBorrowingRate !== undefined\n ? lib_base_1.Decimal.from(maxBorrowingRate)\n : (_a = borrowingRate === null || borrowingRate === void 0 ? void 0 : borrowingRate.add(defaultBorrowingRateSlippageTolerance)) !== null && _a !== void 0 ? _a : lib_base_1.Decimal.ZERO;\n return this._wrapTroveChangeWithFees(normalized, await borrowerOperations.estimateAndPopulate.adjustTrove({ value: depositCollateral === null || depositCollateral === void 0 ? void 0 : depositCollateral.hex, ...overrides }, compose(borrowLUSD ? addGasForPotentialLastFeeOperationTimeUpdate : id, addGasForPotentialListTraversal), maxBorrowingRate.hex, (withdrawCollateral !== null && withdrawCollateral !== void 0 ? withdrawCollateral : lib_base_1.Decimal.ZERO).hex, ((_b = borrowLUSD !== null && borrowLUSD !== void 0 ? borrowLUSD : repayLUSD) !== null && _b !== void 0 ? _b : lib_base_1.Decimal.ZERO).hex, !!borrowLUSD, ...(await this._findHints(finalTrove))));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.claimCollateralSurplus} */\n async claimCollateralSurplus(overrides) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await borrowerOperations.estimateAndPopulate.claimCollateral({ ...overrides }, id));\n }\n /** @internal */\n async setPrice(price, overrides) {\n const { priceFeed } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n if (!contracts_1._priceFeedIsTestnet(priceFeed)) {\n throw new Error(\"setPrice() unavailable on this deployment of Liquity\");\n }\n return this._wrapSimpleTransaction(await priceFeed.estimateAndPopulate.setPrice({ ...overrides }, id, lib_base_1.Decimal.from(price).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.liquidate} */\n async liquidate(address, overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n if (Array.isArray(address)) {\n return this._wrapLiquidation(await troveManager.estimateAndPopulate.batchLiquidateTroves({ ...overrides }, addGasForLQTYIssuance, address));\n }\n else {\n return this._wrapLiquidation(await troveManager.estimateAndPopulate.liquidate({ ...overrides }, addGasForLQTYIssuance, address));\n }\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.liquidateUpTo} */\n async liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapLiquidation(await troveManager.estimateAndPopulate.liquidateTroves({ ...overrides }, addGasForLQTYIssuance, maximumNumberOfTrovesToLiquidate));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.depositLUSDInStabilityPool} */\n async depositLUSDInStabilityPool(amount, frontendTag, overrides) {\n var _a;\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const depositLUSD = lib_base_1.Decimal.from(amount);\n return this._wrapStabilityDepositTopup({ depositLUSD }, await stabilityPool.estimateAndPopulate.provideToSP({ ...overrides }, addGasForLQTYIssuance, depositLUSD.hex, (_a = frontendTag !== null && frontendTag !== void 0 ? frontendTag : this._readable.connection.frontendTag) !== null && _a !== void 0 ? _a : constants_1.AddressZero));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.withdrawLUSDFromStabilityPool} */\n async withdrawLUSDFromStabilityPool(amount, overrides) {\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapStabilityDepositWithdrawal(await stabilityPool.estimateAndPopulate.withdrawFromSP({ ...overrides }, addGasForLQTYIssuance, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.withdrawGainsFromStabilityPool} */\n async withdrawGainsFromStabilityPool(overrides) {\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapStabilityPoolGainsWithdrawal(await stabilityPool.estimateAndPopulate.withdrawFromSP({ ...overrides }, addGasForLQTYIssuance, lib_base_1.Decimal.ZERO.hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.transferCollateralGainToTrove} */\n async transferCollateralGainToTrove(overrides) {\n const address = EthersLiquityConnection_1._requireAddress(this._readable.connection, overrides);\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const [initialTrove, stabilityDeposit] = await Promise.all([\n this._readable.getTrove(address),\n this._readable.getStabilityDeposit(address)\n ]);\n const finalTrove = initialTrove.addCollateral(stabilityDeposit.collateralGain);\n return this._wrapCollateralGainTransfer(await stabilityPool.estimateAndPopulate.withdrawETHGainToTrove({ ...overrides }, compose(addGasForPotentialListTraversal, addGasForLQTYIssuance), ...(await this._findHints(finalTrove))));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.sendLUSD} */\n async sendLUSD(toAddress, amount, overrides) {\n const { lusdToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await lusdToken.estimateAndPopulate.transfer({ ...overrides }, id, toAddress, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.sendLQTY} */\n async sendLQTY(toAddress, amount, overrides) {\n const { lqtyToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await lqtyToken.estimateAndPopulate.transfer({ ...overrides }, id, toAddress, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.redeemLUSD} */\n async redeemLUSD(amount, maxRedemptionRate, overrides) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const attemptedLUSDAmount = lib_base_1.Decimal.from(amount);\n const [fees, total, [truncatedAmount, firstRedemptionHint, ...partialHints]] = await Promise.all([\n this._readable.getFees(),\n this._readable.getTotal(),\n this._findRedemptionHints(attemptedLUSDAmount)\n ]);\n if (truncatedAmount.isZero) {\n throw new Error(`redeemLUSD: amount too low to redeem (try at least ${lib_base_1.LUSD_MINIMUM_NET_DEBT})`);\n }\n const defaultMaxRedemptionRate = (amount) => lib_base_1.Decimal.min(fees.redemptionRate(amount.div(total.debt)).add(defaultRedemptionRateSlippageTolerance), lib_base_1.Decimal.ONE);\n const populateRedemption = async (attemptedLUSDAmount, maxRedemptionRate, truncatedAmount = attemptedLUSDAmount, partialHints = [constants_1.AddressZero, constants_1.AddressZero, 0]) => {\n const maxRedemptionRateOrDefault = maxRedemptionRate !== undefined\n ? lib_base_1.Decimal.from(maxRedemptionRate)\n : defaultMaxRedemptionRate(truncatedAmount);\n return new PopulatedEthersRedemption(await troveManager.estimateAndPopulate.redeemCollateral({ ...overrides }, addGasForPotentialLastFeeOperationTimeUpdate, truncatedAmount.hex, firstRedemptionHint, ...partialHints, exports._redeemMaxIterations, maxRedemptionRateOrDefault.hex), this._readable.connection, attemptedLUSDAmount, truncatedAmount, truncatedAmount.lt(attemptedLUSDAmount)\n ? newMaxRedemptionRate => populateRedemption(truncatedAmount.add(lib_base_1.LUSD_MINIMUM_NET_DEBT), newMaxRedemptionRate !== null && newMaxRedemptionRate !== void 0 ? newMaxRedemptionRate : maxRedemptionRate)\n : undefined);\n };\n return populateRedemption(attemptedLUSDAmount, maxRedemptionRate, truncatedAmount, partialHints);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.stakeLQTY} */\n async stakeLQTY(amount, overrides) {\n const { lqtyStaking } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await lqtyStaking.estimateAndPopulate.stake({ ...overrides }, id, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.unstakeLQTY} */\n async unstakeLQTY(amount, overrides) {\n const { lqtyStaking } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await lqtyStaking.estimateAndPopulate.unstake({ ...overrides }, id, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.withdrawGainsFromStaking} */\n withdrawGainsFromStaking(overrides) {\n return this.unstakeLQTY(lib_base_1.Decimal.ZERO, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.registerFrontend} */\n async registerFrontend(kickbackRate, overrides) {\n const { stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await stabilityPool.estimateAndPopulate.registerFrontEnd({ ...overrides }, id, lib_base_1.Decimal.from(kickbackRate).hex));\n }\n /** @internal */\n async _mintUniToken(amount, address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this._readable.connection, overrides));\n const { uniToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n if (!contracts_1._uniTokenIsMock(uniToken)) {\n throw new Error(\"_mintUniToken() unavailable on this deployment of Liquity\");\n }\n return this._wrapSimpleTransaction(await uniToken.estimateAndPopulate.mint({ ...overrides }, id, address, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.approveUniTokens} */\n async approveUniTokens(allowance, overrides) {\n const { uniToken, unipool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await uniToken.estimateAndPopulate.approve({ ...overrides }, id, unipool.address, lib_base_1.Decimal.from(allowance !== null && allowance !== void 0 ? allowance : lib_base_1.Decimal.INFINITY).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.stakeUniTokens} */\n async stakeUniTokens(amount, overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await unipool.estimateAndPopulate.stake({ ...overrides }, addGasForUnipoolRewardUpdate, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.unstakeUniTokens} */\n async unstakeUniTokens(amount, overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await unipool.estimateAndPopulate.withdraw({ ...overrides }, addGasForUnipoolRewardUpdate, lib_base_1.Decimal.from(amount).hex));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.withdrawLQTYRewardFromLiquidityMining} */\n async withdrawLQTYRewardFromLiquidityMining(overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await unipool.estimateAndPopulate.claimReward({ ...overrides }, addGasForUnipoolRewardUpdate));\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.exitLiquidityMining} */\n async exitLiquidityMining(overrides) {\n const { unipool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await unipool.estimateAndPopulate.withdrawAndClaim({ ...overrides }, addGasForUnipoolRewardUpdate));\n }\n}\nexports.PopulatableEthersLiquity = PopulatableEthersLiquity;\n//# sourceMappingURL=PopulatableEthersLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SendableEthersLiquity = void 0;\nconst sendTransaction = (tx) => tx.send();\n/**\n * Ethers-based implementation of {@link @liquity/lib-base#SendableLiquity}.\n *\n * @public\n */\nclass SendableEthersLiquity {\n constructor(populatable) {\n this._populate = populatable;\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.openTrove} */\n openTrove(params, maxBorrowingRate, overrides) {\n return this._populate.openTrove(params, maxBorrowingRate, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.closeTrove} */\n closeTrove(overrides) {\n return this._populate.closeTrove(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.adjustTrove} */\n adjustTrove(params, maxBorrowingRate, overrides) {\n return this._populate.adjustTrove(params, maxBorrowingRate, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.depositCollateral} */\n depositCollateral(amount, overrides) {\n return this._populate.depositCollateral(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.withdrawCollateral} */\n withdrawCollateral(amount, overrides) {\n return this._populate.withdrawCollateral(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.borrowLUSD} */\n borrowLUSD(amount, maxBorrowingRate, overrides) {\n return this._populate.borrowLUSD(amount, maxBorrowingRate, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.repayLUSD} */\n repayLUSD(amount, overrides) {\n return this._populate.repayLUSD(amount, overrides).then(sendTransaction);\n }\n /** @internal */\n setPrice(price, overrides) {\n return this._populate.setPrice(price, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.liquidate} */\n liquidate(address, overrides) {\n return this._populate.liquidate(address, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.liquidateUpTo} */\n liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides) {\n return this._populate\n .liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides)\n .then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.depositLUSDInStabilityPool} */\n depositLUSDInStabilityPool(amount, frontendTag, overrides) {\n return this._populate\n .depositLUSDInStabilityPool(amount, frontendTag, overrides)\n .then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.withdrawLUSDFromStabilityPool} */\n withdrawLUSDFromStabilityPool(amount, overrides) {\n return this._populate.withdrawLUSDFromStabilityPool(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.withdrawGainsFromStabilityPool} */\n withdrawGainsFromStabilityPool(overrides) {\n return this._populate.withdrawGainsFromStabilityPool(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.transferCollateralGainToTrove} */\n transferCollateralGainToTrove(overrides) {\n return this._populate.transferCollateralGainToTrove(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.sendLUSD} */\n sendLUSD(toAddress, amount, overrides) {\n return this._populate.sendLUSD(toAddress, amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.sendLQTY} */\n sendLQTY(toAddress, amount, overrides) {\n return this._populate.sendLQTY(toAddress, amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.redeemLUSD} */\n redeemLUSD(amount, maxRedemptionRate, overrides) {\n return this._populate.redeemLUSD(amount, maxRedemptionRate, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.claimCollateralSurplus} */\n claimCollateralSurplus(overrides) {\n return this._populate.claimCollateralSurplus(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.stakeLQTY} */\n stakeLQTY(amount, overrides) {\n return this._populate.stakeLQTY(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.unstakeLQTY} */\n unstakeLQTY(amount, overrides) {\n return this._populate.unstakeLQTY(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.withdrawGainsFromStaking} */\n withdrawGainsFromStaking(overrides) {\n return this._populate.withdrawGainsFromStaking(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.registerFrontend} */\n registerFrontend(kickbackRate, overrides) {\n return this._populate.registerFrontend(kickbackRate, overrides).then(sendTransaction);\n }\n /** @internal */\n _mintUniToken(amount, address, overrides) {\n return this._populate._mintUniToken(amount, address, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.approveUniTokens} */\n approveUniTokens(allowance, overrides) {\n return this._populate.approveUniTokens(allowance, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.stakeUniTokens} */\n stakeUniTokens(amount, overrides) {\n return this._populate.stakeUniTokens(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.unstakeUniTokens} */\n unstakeUniTokens(amount, overrides) {\n return this._populate.unstakeUniTokens(amount, overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.withdrawLQTYRewardFromLiquidityMining} */\n withdrawLQTYRewardFromLiquidityMining(overrides) {\n return this._populate.withdrawLQTYRewardFromLiquidityMining(overrides).then(sendTransaction);\n }\n /** {@inheritDoc @liquity/lib-base#SendableLiquity.exitLiquidityMining} */\n exitLiquidityMining(overrides) {\n return this._populate.exitLiquidityMining(overrides).then(sendTransaction);\n }\n}\nexports.SendableEthersLiquity = SendableEthersLiquity;\n//# sourceMappingURL=SendableEthersLiquity.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LiquityStoreProvider = exports.LiquityStoreContext = void 0;\nconst react_1 = __importStar(require(\"react\"));\nexports.LiquityStoreContext = react_1.createContext(undefined);\nconst LiquityStoreProvider = ({ store, loader, children }) => {\n const [loadedStore, setLoadedStore] = react_1.useState();\n react_1.useEffect(() => {\n store.onLoaded = () => setLoadedStore(store);\n const stop = store.start();\n return () => {\n store.onLoaded = undefined;\n setLoadedStore(undefined);\n stop();\n };\n }, [store]);\n if (!loadedStore) {\n return react_1.default.createElement(react_1.default.Fragment, null, loader);\n }\n return react_1.default.createElement(exports.LiquityStoreContext.Provider, { value: loadedStore }, children);\n};\nexports.LiquityStoreProvider = LiquityStoreProvider;\n//# sourceMappingURL=LiquityStoreProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.equals = void 0;\nconst hasOwnProperty = (o, key) => Object.prototype.hasOwnProperty.call(o, key);\nconst shallowEquals = (a, b) => {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(key => hasOwnProperty(b, key) && Object.is(a[key], b[key])));\n};\nconst isObject = (a) => a !== null && typeof a === \"object\";\nconst equals = (a, b) => isObject(a) && isObject(b) ? shallowEquals(a, b) : Object.is(a, b);\nexports.equals = equals;\n//# sourceMappingURL=equals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchedWebSocketAugmentedWeb3Provider = exports.Batched = exports.isBatchedProvider = void 0;\nconst address_1 = require(\"@ethersproject/address\");\nconst contracts_1 = require(\"@ethersproject/contracts\");\nconst properties_1 = require(\"@ethersproject/properties\");\nconst WebSocketAugmentedProvider_1 = require(\"./WebSocketAugmentedProvider\");\nconst multicallAddress = {\n 1: \"0xeefBa1e63905eF1D7ACbA5a8513c70307C1cE441\",\n 3: \"0x53C43764255c17BD724F74c4eF150724AC50a3ed\",\n 4: \"0x42Ad527de7d4e9d9d011aC45B31D8551f8Fe9821\",\n 5: \"0x77dCa2C955b15e9dE4dbBCf1246B4B85b651e50e\",\n 42: \"0x2cc8688C5f75E365aaEEb4ea8D6a480405A48D2A\"\n};\nconst hasMulticall = (chainId) => chainId in multicallAddress;\nconst multicallAbi = [\n {\n type: \"function\",\n name: \"aggregate\",\n stateMutability: \"nonpayable\",\n constant: false,\n payable: false,\n inputs: [\n {\n components: [\n {\n name: \"target\",\n type: \"address\"\n },\n {\n name: \"callData\",\n type: \"bytes\"\n }\n ],\n name: \"calls\",\n type: \"tuple[]\"\n }\n ],\n outputs: [\n {\n name: \"blockNumber\",\n type: \"uint256\"\n },\n {\n name: \"returnData\",\n type: \"bytes[]\"\n }\n ]\n },\n {\n type: \"function\",\n name: \"getEthBalance\",\n stateMutability: \"view\",\n constant: true,\n payable: false,\n inputs: [\n {\n name: \"addr\",\n type: \"address\"\n }\n ],\n outputs: [\n {\n name: \"balance\",\n type: \"uint256\"\n }\n ]\n }\n];\nconst emptyBatch = () => ({ calls: [], callbacks: [] });\n// TODO\n//\n// Technically, requests that have a `from` address shouldn't be batched, because `msg.sender` will\n// be replaced with the Multicall contract's address when the batched calls are being executed.\n//\n// Currently, `@liquity/lib-ethers` makes many of its read calls through Signers, which populates\n// `from`. Instead these calls should be made through a Provider, and `from` should be omitted\n// (since none of the read calls in Liquity care about `msg.sender`).\n//\n// Then we'll be able to properly exclude calls that have `from` addresses from batching.\nconst batchableCall = (request) => request.gasLimit === undefined && request.gasPrice === undefined && request.value === undefined;\nconst batchedCall = (request, multicallAddress) => request.to === multicallAddress &&\n typeof request.data === \"string\" &&\n request.data.startsWith(\"0x252dba42\"); // signature of `aggregate((address,bytes)[])`\nconst batchedProviders = [];\nconst isBatchedProvider = (provider) => batchedProviders.some(batchedProvider => provider instanceof batchedProvider);\nexports.isBatchedProvider = isBatchedProvider;\nconst Batched = (Base) => {\n const batchedProvider = class extends Base {\n constructor() {\n super(...arguments);\n this.batchingDelayMs = 10;\n this._chainId = 0;\n this._batched = emptyBatch();\n this._numberOfBatchedCalls = 0;\n this._numberOfActualCalls = 0;\n }\n get chainId() {\n return this._chainId;\n }\n set chainId(chainId) {\n if (this._multicall) {\n throw new Error(\"can only set chainId once\");\n }\n if (hasMulticall(chainId)) {\n this._multicall = new contracts_1.Contract(multicallAddress[chainId], multicallAbi, this);\n }\n this._chainId = chainId;\n }\n async _dispatchCalls() {\n const { calls, callbacks, blockTag } = this._batched;\n this._batched = emptyBatch();\n try {\n const results = calls.length > 1\n ? await this._multicall.callStatic.aggregate(calls, { blockTag }).then(x => x.returnData)\n : [await super.call({ to: calls[0].target, data: calls[0].callData }, blockTag)];\n callbacks.forEach(([resolve], i) => resolve(results[i]));\n }\n catch (error) {\n callbacks.forEach(([, reject]) => reject(error));\n }\n }\n _enqueueCall(call) {\n if (this._timeoutId !== undefined) {\n clearTimeout(this._timeoutId);\n }\n this._batched.calls.push(call);\n this._timeoutId = setTimeout(() => this._dispatchCalls(), this.batchingDelayMs);\n return new Promise((resolve, reject) => this._batched.callbacks.push([resolve, reject]));\n }\n _alreadyBatchedCallsConflictWith(blockTag) {\n var _a;\n return (this._batched.calls.length !== 0 &&\n (blockTag !== null && blockTag !== void 0 ? blockTag : \"latest\") !== ((_a = this._batched.blockTag) !== null && _a !== void 0 ? _a : \"latest\"));\n }\n async call(request, blockTag) {\n if (!this._multicall) {\n return super.call(request, blockTag);\n }\n else {\n const now = new Date().getTime();\n if (this._timeOfLastRatioCheck === undefined) {\n this._timeOfLastRatioCheck = now;\n }\n else {\n const timeSinceLastRatioCheck = now - this._timeOfLastRatioCheck;\n if (timeSinceLastRatioCheck >= 10000 && this._numberOfActualCalls) {\n // console.log(\n // `Call batching ratio: ${\n // Math.round((10 * this._numberOfBatchedCalls) / this._numberOfActualCalls) / 10\n // }X`\n // );\n this._numberOfBatchedCalls = 0;\n this._numberOfActualCalls = 0;\n this._timeOfLastRatioCheck = now;\n }\n }\n }\n const [resolvedRequest, resolvedBlockTag] = await Promise.all([\n properties_1.resolveProperties(request),\n blockTag\n ]);\n if (batchedCall(resolvedRequest, this._multicall.address) ||\n !batchableCall(resolvedRequest) ||\n this._alreadyBatchedCallsConflictWith(resolvedBlockTag)) {\n this._numberOfActualCalls++;\n return super.call(resolvedRequest, resolvedBlockTag);\n }\n else {\n this._numberOfBatchedCalls++;\n if (this._batched.calls.length === 0) {\n this._batched.blockTag = resolvedBlockTag;\n }\n return this._enqueueCall({ target: resolvedRequest.to, callData: resolvedRequest.data });\n }\n }\n async getBalance(addressOrName, blockTag) {\n const [resolvedAddressOrName, resolvedBlockTag] = await Promise.all([addressOrName, blockTag]);\n if (!address_1.isAddress(resolvedAddressOrName) || !this._multicall) {\n return super.getBalance(resolvedAddressOrName, blockTag);\n }\n const [balance] = await this._multicall.functions.getEthBalance(resolvedAddressOrName, {\n blockTag: resolvedBlockTag\n });\n return balance;\n }\n };\n batchedProviders.push(batchedProvider);\n return batchedProvider;\n};\nexports.Batched = Batched;\nexports.BatchedWebSocketAugmentedWeb3Provider = exports.Batched(WebSocketAugmentedProvider_1.WebSocketAugmentedWeb3Provider);\n//# sourceMappingURL=BatchedProvider.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TroveWithPendingRedistribution = exports.UserTrove = exports._emptyTrove = exports.Trove = exports._normalizeTroveAdjustment = exports._normalizeTroveCreation = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst Decimal_1 = require(\"./Decimal\");\nconst constants_1 = require(\"./constants\");\nconst invalidTroveCreation = (invalidTrove, error) => ({\n type: \"invalidCreation\",\n invalidTrove,\n error\n});\nconst troveCreation = (params) => ({\n type: \"creation\",\n params\n});\nconst troveClosure = (params) => ({\n type: \"closure\",\n params\n});\nconst troveAdjustment = (params, setToZero) => ({\n type: \"adjustment\",\n params,\n setToZero\n});\nconst valueIsDefined = (entry) => entry[1] !== undefined;\nconst allowedTroveCreationKeys = [\n \"depositCollateral\",\n \"borrowLUSD\"\n];\nfunction checkAllowedTroveCreationKeys(entries) {\n const badKeys = entries\n .filter(([k]) => !allowedTroveCreationKeys.includes(k))\n .map(([k]) => `'${k}'`);\n if (badKeys.length > 0) {\n throw new Error(`TroveCreationParams: property ${badKeys.join(\", \")} not allowed`);\n }\n}\nconst troveCreationParamsFromEntries = (entries) => {\n const params = Object.fromEntries(entries);\n const missingKeys = allowedTroveCreationKeys.filter(k => !(k in params)).map(k => `'${k}'`);\n if (missingKeys.length > 0) {\n throw new Error(`TroveCreationParams: property ${missingKeys.join(\", \")} missing`);\n }\n return params;\n};\nconst decimalize = ([k, v]) => [k, Decimal_1.Decimal.from(v)];\nconst nonZero = ([, v]) => !v.isZero;\n/** @internal */\nconst _normalizeTroveCreation = (params) => {\n const definedEntries = Object.entries(params).filter(valueIsDefined);\n checkAllowedTroveCreationKeys(definedEntries);\n const nonZeroEntries = definedEntries.map(decimalize);\n return troveCreationParamsFromEntries(nonZeroEntries);\n};\nexports._normalizeTroveCreation = _normalizeTroveCreation;\nconst allowedTroveAdjustmentKeys = [\n \"depositCollateral\",\n \"withdrawCollateral\",\n \"borrowLUSD\",\n \"repayLUSD\"\n];\nfunction checkAllowedTroveAdjustmentKeys(entries) {\n const badKeys = entries\n .filter(([k]) => !allowedTroveAdjustmentKeys.includes(k))\n .map(([k]) => `'${k}'`);\n if (badKeys.length > 0) {\n throw new Error(`TroveAdjustmentParams: property ${badKeys.join(\", \")} not allowed`);\n }\n}\nconst collateralChangeFrom = ({ depositCollateral, withdrawCollateral }) => {\n if (depositCollateral !== undefined && withdrawCollateral !== undefined) {\n throw new Error(\"TroveAdjustmentParams: 'depositCollateral' and 'withdrawCollateral' \" +\n \"can't be present at the same time\");\n }\n if (depositCollateral !== undefined) {\n return { depositCollateral };\n }\n if (withdrawCollateral !== undefined) {\n return { withdrawCollateral };\n }\n};\nconst debtChangeFrom = ({ borrowLUSD, repayLUSD }) => {\n if (borrowLUSD !== undefined && repayLUSD !== undefined) {\n throw new Error(\"TroveAdjustmentParams: 'borrowLUSD' and 'repayLUSD' can't be present at the same time\");\n }\n if (borrowLUSD !== undefined) {\n return { borrowLUSD };\n }\n if (repayLUSD !== undefined) {\n return { repayLUSD };\n }\n};\nconst troveAdjustmentParamsFromEntries = (entries) => {\n const params = Object.fromEntries(entries);\n const collateralChange = collateralChangeFrom(params);\n const debtChange = debtChangeFrom(params);\n if (collateralChange !== undefined && debtChange !== undefined) {\n return { ...collateralChange, ...debtChange };\n }\n if (collateralChange !== undefined) {\n return collateralChange;\n }\n if (debtChange !== undefined) {\n return debtChange;\n }\n throw new Error(\"TroveAdjustmentParams: must include at least one non-zero parameter\");\n};\n/** @internal */\nconst _normalizeTroveAdjustment = (params) => {\n const definedEntries = Object.entries(params).filter(valueIsDefined);\n checkAllowedTroveAdjustmentKeys(definedEntries);\n const nonZeroEntries = definedEntries.map(decimalize).filter(nonZero);\n return troveAdjustmentParamsFromEntries(nonZeroEntries);\n};\nexports._normalizeTroveAdjustment = _normalizeTroveAdjustment;\nconst applyFee = (borrowingRate, debtIncrease) => debtIncrease.mul(Decimal_1.Decimal.ONE.add(borrowingRate));\nconst unapplyFee = (borrowingRate, debtIncrease) => debtIncrease._divCeil(Decimal_1.Decimal.ONE.add(borrowingRate));\nconst NOMINAL_COLLATERAL_RATIO_PRECISION = Decimal_1.Decimal.from(100);\n/**\n * A combination of collateral and debt.\n *\n * @public\n */\nclass Trove {\n /** @internal */\n constructor(collateral = Decimal_1.Decimal.ZERO, debt = Decimal_1.Decimal.ZERO) {\n this.collateral = collateral;\n this.debt = debt;\n }\n get isEmpty() {\n return this.collateral.isZero && this.debt.isZero;\n }\n /**\n * Amount of LUSD that must be repaid to close this Trove.\n *\n * @remarks\n * This doesn't include the liquidation reserve, which is refunded in case of normal closure.\n */\n get netDebt() {\n if (this.debt.lt(constants_1.LUSD_LIQUIDATION_RESERVE)) {\n throw new Error(`netDebt should not be used when debt < ${constants_1.LUSD_LIQUIDATION_RESERVE}`);\n }\n return this.debt.sub(constants_1.LUSD_LIQUIDATION_RESERVE);\n }\n /** @internal */\n get _nominalCollateralRatio() {\n return this.collateral.mulDiv(NOMINAL_COLLATERAL_RATIO_PRECISION, this.debt);\n }\n /** Calculate the Trove's collateralization ratio at a given price. */\n collateralRatio(price) {\n return this.collateral.mulDiv(price, this.debt);\n }\n /**\n * Whether the Trove is undercollateralized at a given price.\n *\n * @returns\n * `true` if the Trove's collateralization ratio is less than the\n * {@link MINIMUM_COLLATERAL_RATIO}.\n */\n collateralRatioIsBelowMinimum(price) {\n return this.collateralRatio(price).lt(constants_1.MINIMUM_COLLATERAL_RATIO);\n }\n /**\n * Whether the collateralization ratio is less than the {@link CRITICAL_COLLATERAL_RATIO} at a\n * given price.\n *\n * @example\n * Can be used to check whether the Liquity protocol is in recovery mode by using it on the return\n * value of {@link ReadableLiquity.getTotal | getTotal()}. For example:\n *\n * ```typescript\n * const total = await liquity.getTotal();\n * const price = await liquity.getPrice();\n *\n * if (total.collateralRatioIsBelowCritical(price)) {\n * // Recovery mode is active\n * }\n * ```\n */\n collateralRatioIsBelowCritical(price) {\n return this.collateralRatio(price).lt(constants_1.CRITICAL_COLLATERAL_RATIO);\n }\n /** Whether the Trove is sufficiently collateralized to be opened during recovery mode. */\n isOpenableInRecoveryMode(price) {\n return this.collateralRatio(price).gte(constants_1.CRITICAL_COLLATERAL_RATIO);\n }\n /** @internal */\n toString() {\n return `{ collateral: ${this.collateral}, debt: ${this.debt} }`;\n }\n equals(that) {\n return this.collateral.eq(that.collateral) && this.debt.eq(that.debt);\n }\n add(that) {\n return new Trove(this.collateral.add(that.collateral), this.debt.add(that.debt));\n }\n addCollateral(collateral) {\n return new Trove(this.collateral.add(collateral), this.debt);\n }\n addDebt(debt) {\n return new Trove(this.collateral, this.debt.add(debt));\n }\n subtract(that) {\n const { collateral, debt } = that;\n return new Trove(this.collateral.gt(collateral) ? this.collateral.sub(collateral) : Decimal_1.Decimal.ZERO, this.debt.gt(debt) ? this.debt.sub(debt) : Decimal_1.Decimal.ZERO);\n }\n subtractCollateral(collateral) {\n return new Trove(this.collateral.gt(collateral) ? this.collateral.sub(collateral) : Decimal_1.Decimal.ZERO, this.debt);\n }\n subtractDebt(debt) {\n return new Trove(this.collateral, this.debt.gt(debt) ? this.debt.sub(debt) : Decimal_1.Decimal.ZERO);\n }\n multiply(multiplier) {\n return new Trove(this.collateral.mul(multiplier), this.debt.mul(multiplier));\n }\n setCollateral(collateral) {\n return new Trove(Decimal_1.Decimal.from(collateral), this.debt);\n }\n setDebt(debt) {\n return new Trove(this.collateral, Decimal_1.Decimal.from(debt));\n }\n _debtChange({ debt }, borrowingRate) {\n return debt.gt(this.debt)\n ? { borrowLUSD: unapplyFee(borrowingRate, debt.sub(this.debt)) }\n : { repayLUSD: this.debt.sub(debt) };\n }\n _collateralChange({ collateral }) {\n return collateral.gt(this.collateral)\n ? { depositCollateral: collateral.sub(this.collateral) }\n : { withdrawCollateral: this.collateral.sub(collateral) };\n }\n /**\n * Calculate the difference between this Trove and another.\n *\n * @param that - The other Trove.\n * @param borrowingRate - Borrowing rate to use when calculating a borrowed amount.\n *\n * @returns\n * An object representing the change, or `undefined` if the Troves are equal.\n */\n whatChanged(that, borrowingRate = constants_1.MINIMUM_BORROWING_RATE) {\n var _a;\n if (this.collateral.eq(that.collateral) && this.debt.eq(that.debt)) {\n return undefined;\n }\n if (this.isEmpty) {\n if (that.debt.lt(constants_1.LUSD_LIQUIDATION_RESERVE)) {\n return invalidTroveCreation(that, \"missingLiquidationReserve\");\n }\n return troveCreation({\n depositCollateral: that.collateral,\n borrowLUSD: unapplyFee(borrowingRate, that.netDebt)\n });\n }\n if (that.isEmpty) {\n return troveClosure(this.netDebt.nonZero\n ? { withdrawCollateral: this.collateral, repayLUSD: this.netDebt }\n : { withdrawCollateral: this.collateral });\n }\n return this.collateral.eq(that.collateral)\n ? troveAdjustment(this._debtChange(that, borrowingRate), that.debt.zero && \"debt\")\n : this.debt.eq(that.debt)\n ? troveAdjustment(this._collateralChange(that), that.collateral.zero && \"collateral\")\n : troveAdjustment({\n ...this._debtChange(that, borrowingRate),\n ...this._collateralChange(that)\n }, (_a = (that.debt.zero && \"debt\")) !== null && _a !== void 0 ? _a : (that.collateral.zero && \"collateral\"));\n }\n /**\n * Make a new Trove by applying a {@link TroveChange} to this Trove.\n *\n * @param change - The change to apply.\n * @param borrowingRate - Borrowing rate to use when adding a borrowed amount to the Trove's debt.\n */\n apply(change, borrowingRate = constants_1.MINIMUM_BORROWING_RATE) {\n if (!change) {\n return this;\n }\n switch (change.type) {\n case \"invalidCreation\":\n if (!this.isEmpty) {\n throw new Error(\"Can't create onto existing Trove\");\n }\n return change.invalidTrove;\n case \"creation\": {\n if (!this.isEmpty) {\n throw new Error(\"Can't create onto existing Trove\");\n }\n const { depositCollateral, borrowLUSD } = change.params;\n return new Trove(depositCollateral, constants_1.LUSD_LIQUIDATION_RESERVE.add(applyFee(borrowingRate, borrowLUSD)));\n }\n case \"closure\":\n if (this.isEmpty) {\n throw new Error(\"Can't close empty Trove\");\n }\n return exports._emptyTrove;\n case \"adjustment\": {\n const { setToZero, params: { depositCollateral, withdrawCollateral, borrowLUSD, repayLUSD } } = change;\n const collateralDecrease = withdrawCollateral !== null && withdrawCollateral !== void 0 ? withdrawCollateral : Decimal_1.Decimal.ZERO;\n const collateralIncrease = depositCollateral !== null && depositCollateral !== void 0 ? depositCollateral : Decimal_1.Decimal.ZERO;\n const debtDecrease = repayLUSD !== null && repayLUSD !== void 0 ? repayLUSD : Decimal_1.Decimal.ZERO;\n const debtIncrease = borrowLUSD ? applyFee(borrowingRate, borrowLUSD) : Decimal_1.Decimal.ZERO;\n return setToZero === \"collateral\"\n ? this.setCollateral(Decimal_1.Decimal.ZERO).addDebt(debtIncrease).subtractDebt(debtDecrease)\n : setToZero === \"debt\"\n ? this.setDebt(Decimal_1.Decimal.ZERO)\n .addCollateral(collateralIncrease)\n .subtractCollateral(collateralDecrease)\n : this.add(new Trove(collateralIncrease, debtIncrease)).subtract(new Trove(collateralDecrease, debtDecrease));\n }\n }\n }\n /**\n * Calculate the result of an {@link TransactableLiquity.openTrove | openTrove()} transaction.\n *\n * @param params - Parameters of the transaction.\n * @param borrowingRate - Borrowing rate to use when calculating the Trove's debt.\n */\n static create(params, borrowingRate) {\n return exports._emptyTrove.apply(troveCreation(exports._normalizeTroveCreation(params)), borrowingRate);\n }\n /**\n * Calculate the parameters of an {@link TransactableLiquity.openTrove | openTrove()} transaction\n * that will result in the given Trove.\n *\n * @param that - The Trove to recreate.\n * @param borrowingRate - Current borrowing rate.\n */\n static recreate(that, borrowingRate) {\n const change = exports._emptyTrove.whatChanged(that, borrowingRate);\n assert_1.default((change === null || change === void 0 ? void 0 : change.type) === \"creation\");\n return change.params;\n }\n /**\n * Calculate the result of an {@link TransactableLiquity.adjustTrove | adjustTrove()} transaction\n * on this Trove.\n *\n * @param params - Parameters of the transaction.\n * @param borrowingRate - Borrowing rate to use when adding to the Trove's debt.\n */\n adjust(params, borrowingRate) {\n return this.apply(troveAdjustment(exports._normalizeTroveAdjustment(params)), borrowingRate);\n }\n /**\n * Calculate the parameters of an {@link TransactableLiquity.adjustTrove | adjustTrove()}\n * transaction that will change this Trove into the given Trove.\n *\n * @param that - The desired result of the transaction.\n * @param borrowingRate - Current borrowing rate.\n */\n adjustTo(that, borrowingRate) {\n const change = this.whatChanged(that, borrowingRate);\n assert_1.default((change === null || change === void 0 ? void 0 : change.type) === \"adjustment\");\n return change.params;\n }\n}\nexports.Trove = Trove;\n/** @internal */\nexports._emptyTrove = new Trove();\n/**\n * A Trove that is associated with a single owner.\n *\n * @remarks\n * The SDK uses the base {@link Trove} class as a generic container of collateral and debt, for\n * example to represent the {@link ReadableLiquity.getTotal | total collateral and debt} locked up\n * in the protocol.\n *\n * The `UserTrove` class extends `Trove` with extra information that's only available for Troves\n * that are associated with a single owner (such as the owner's address, or the Trove's status).\n *\n * @public\n */\nclass UserTrove extends Trove {\n /** @internal */\n constructor(ownerAddress, status, collateral, debt) {\n super(collateral, debt);\n this.ownerAddress = ownerAddress;\n this.status = status;\n }\n equals(that) {\n return (super.equals(that) && this.ownerAddress === that.ownerAddress && this.status === that.status);\n }\n /** @internal */\n toString() {\n return (`{ ownerAddress: \"${this.ownerAddress}\"` +\n `, collateral: ${this.collateral}` +\n `, debt: ${this.debt}` +\n `, status: \"${this.status}\" }`);\n }\n}\nexports.UserTrove = UserTrove;\n/**\n * A Trove in its state after the last direct modification.\n *\n * @remarks\n * The Trove may have received collateral and debt shares from liquidations since then.\n * Use {@link TroveWithPendingRedistribution.applyRedistribution | applyRedistribution()} to\n * calculate the Trove's most up-to-date state.\n *\n * @public\n */\nclass TroveWithPendingRedistribution extends UserTrove {\n /** @internal */\n constructor(ownerAddress, status, collateral, debt, stake = Decimal_1.Decimal.ZERO, snapshotOfTotalRedistributed = exports._emptyTrove) {\n super(ownerAddress, status, collateral, debt);\n this.stake = stake;\n this.snapshotOfTotalRedistributed = snapshotOfTotalRedistributed;\n }\n applyRedistribution(totalRedistributed) {\n const afterRedistribution = this.add(totalRedistributed.subtract(this.snapshotOfTotalRedistributed).multiply(this.stake));\n return new UserTrove(this.ownerAddress, this.status, afterRedistribution.collateral, afterRedistribution.debt);\n }\n equals(that) {\n return (super.equals(that) &&\n this.stake.eq(that.stake) &&\n this.snapshotOfTotalRedistributed.equals(that.snapshotOfTotalRedistributed));\n }\n}\nexports.TroveWithPendingRedistribution = TroveWithPendingRedistribution;\n//# sourceMappingURL=Trove.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StabilityDeposit = void 0;\nconst Decimal_1 = require(\"./Decimal\");\n/**\n * A Stability Deposit and its accrued gains.\n *\n * @public\n */\nclass StabilityDeposit {\n /** @internal */\n constructor(initialLUSD, currentLUSD, collateralGain, lqtyReward, frontendTag) {\n this.initialLUSD = initialLUSD;\n this.currentLUSD = currentLUSD;\n this.collateralGain = collateralGain;\n this.lqtyReward = lqtyReward;\n this.frontendTag = frontendTag;\n if (this.currentLUSD.gt(this.initialLUSD)) {\n throw new Error(\"currentLUSD can't be greater than initialLUSD\");\n }\n }\n get isEmpty() {\n return (this.initialLUSD.isZero &&\n this.currentLUSD.isZero &&\n this.collateralGain.isZero &&\n this.lqtyReward.isZero);\n }\n /** @internal */\n toString() {\n return (`{ initialLUSD: ${this.initialLUSD}` +\n `, currentLUSD: ${this.currentLUSD}` +\n `, collateralGain: ${this.collateralGain}` +\n `, lqtyReward: ${this.lqtyReward}` +\n `, frontendTag: \"${this.frontendTag}\" }`);\n }\n /**\n * Compare to another instance of `StabilityDeposit`.\n */\n equals(that) {\n return (this.initialLUSD.eq(that.initialLUSD) &&\n this.currentLUSD.eq(that.currentLUSD) &&\n this.collateralGain.eq(that.collateralGain) &&\n this.lqtyReward.eq(that.lqtyReward) &&\n this.frontendTag === that.frontendTag);\n }\n /**\n * Calculate the difference between the `currentLUSD` in this Stability Deposit and `thatLUSD`.\n *\n * @returns An object representing the change, or `undefined` if the deposited amounts are equal.\n */\n whatChanged(thatLUSD) {\n thatLUSD = Decimal_1.Decimal.from(thatLUSD);\n if (thatLUSD.lt(this.currentLUSD)) {\n return { withdrawLUSD: this.currentLUSD.sub(thatLUSD), withdrawAllLUSD: thatLUSD.isZero };\n }\n if (thatLUSD.gt(this.currentLUSD)) {\n return { depositLUSD: thatLUSD.sub(this.currentLUSD) };\n }\n }\n /**\n * Apply a {@link StabilityDepositChange} to this Stability Deposit.\n *\n * @returns The new deposited LUSD amount.\n */\n apply(change) {\n if (!change) {\n return this.currentLUSD;\n }\n if (change.withdrawLUSD !== undefined) {\n return change.withdrawAllLUSD || this.currentLUSD.lte(change.withdrawLUSD)\n ? Decimal_1.Decimal.ZERO\n : this.currentLUSD.sub(change.withdrawLUSD);\n }\n else {\n return this.currentLUSD.add(change.depositLUSD);\n }\n }\n}\nexports.StabilityDeposit = StabilityDeposit;\n//# sourceMappingURL=StabilityDeposit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LQTYStake = void 0;\nconst Decimal_1 = require(\"./Decimal\");\n/**\n * Represents a user's LQTY stake and accrued gains.\n *\n * @remarks\n * Returned by the {@link ReadableLiquity.getLQTYStake | getLQTYStake()} function.\n\n * @public\n */\nclass LQTYStake {\n /** @internal */\n constructor(stakedLQTY = Decimal_1.Decimal.ZERO, collateralGain = Decimal_1.Decimal.ZERO, lusdGain = Decimal_1.Decimal.ZERO) {\n this.stakedLQTY = stakedLQTY;\n this.collateralGain = collateralGain;\n this.lusdGain = lusdGain;\n }\n get isEmpty() {\n return this.stakedLQTY.isZero && this.collateralGain.isZero && this.lusdGain.isZero;\n }\n /** @internal */\n toString() {\n return (`{ stakedLQTY: ${this.stakedLQTY}` +\n `, collateralGain: ${this.collateralGain}` +\n `, lusdGain: ${this.lusdGain} }`);\n }\n /**\n * Compare to another instance of `LQTYStake`.\n */\n equals(that) {\n return (this.stakedLQTY.eq(that.stakedLQTY) &&\n this.collateralGain.eq(that.collateralGain) &&\n this.lusdGain.eq(that.lusdGain));\n }\n /**\n * Calculate the difference between this `LQTYStake` and `thatStakedLQTY`.\n *\n * @returns An object representing the change, or `undefined` if the staked amounts are equal.\n */\n whatChanged(thatStakedLQTY) {\n thatStakedLQTY = Decimal_1.Decimal.from(thatStakedLQTY);\n if (thatStakedLQTY.lt(this.stakedLQTY)) {\n return {\n unstakeLQTY: this.stakedLQTY.sub(thatStakedLQTY),\n unstakeAllLQTY: thatStakedLQTY.isZero\n };\n }\n if (thatStakedLQTY.gt(this.stakedLQTY)) {\n return { stakeLQTY: thatStakedLQTY.sub(this.stakedLQTY) };\n }\n }\n /**\n * Apply a {@link LQTYStakeChange} to this `LQTYStake`.\n *\n * @returns The new staked LQTY amount.\n */\n apply(change) {\n if (!change) {\n return this.stakedLQTY;\n }\n if (change.unstakeLQTY !== undefined) {\n return change.unstakeAllLQTY || this.stakedLQTY.lte(change.unstakeLQTY)\n ? Decimal_1.Decimal.ZERO\n : this.stakedLQTY.sub(change.unstakeLQTY);\n }\n else {\n return this.stakedLQTY.add(change.stakeLQTY);\n }\n }\n}\nexports.LQTYStake = LQTYStake;\n//# sourceMappingURL=LQTYStake.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Fees = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst Decimal_1 = require(\"./Decimal\");\nconst constants_1 = require(\"./constants\");\n/**\n * Calculator for fees.\n *\n * @remarks\n * Returned by the {@link ReadableLiquity.getFees | getFees()} function.\n *\n * @public\n */\nclass Fees {\n /** @internal */\n constructor(baseRateWithoutDecay, minuteDecayFactor, beta, lastFeeOperation, timeOfLatestBlock, recoveryMode) {\n this._baseRateWithoutDecay = Decimal_1.Decimal.from(baseRateWithoutDecay);\n this._minuteDecayFactor = Decimal_1.Decimal.from(minuteDecayFactor);\n this._beta = Decimal_1.Decimal.from(beta);\n this._lastFeeOperation = lastFeeOperation;\n this._timeOfLatestBlock = timeOfLatestBlock;\n this._recoveryMode = recoveryMode;\n assert_1.default(this._minuteDecayFactor.lt(1));\n }\n /** @internal */\n _setRecoveryMode(recoveryMode) {\n return new Fees(this._baseRateWithoutDecay, this._minuteDecayFactor, this._beta, this._lastFeeOperation, this._timeOfLatestBlock, recoveryMode);\n }\n /**\n * Compare to another instance of `Fees`.\n */\n equals(that) {\n return (this._baseRateWithoutDecay.eq(that._baseRateWithoutDecay) &&\n this._minuteDecayFactor.eq(that._minuteDecayFactor) &&\n this._beta.eq(that._beta) &&\n this._lastFeeOperation.getTime() === that._lastFeeOperation.getTime() &&\n this._timeOfLatestBlock.getTime() === that._timeOfLatestBlock.getTime() &&\n this._recoveryMode === that._recoveryMode);\n }\n /** @internal */\n toString() {\n return (`{ baseRateWithoutDecay: ${this._baseRateWithoutDecay}` +\n `, lastFeeOperation: \"${this._lastFeeOperation.toLocaleString()}\"` +\n `, recoveryMode: ${this._recoveryMode} } `);\n }\n /** @internal */\n baseRate(when = this._timeOfLatestBlock) {\n const millisecondsSinceLastFeeOperation = Math.max(when.getTime() - this._lastFeeOperation.getTime(), 0 // Clamp negative elapsed time to 0, in case the client's time is in the past.\n // We will calculate slightly higher than actual fees, which is fine.\n );\n const minutesSinceLastFeeOperation = Math.floor(millisecondsSinceLastFeeOperation / 60000);\n return this._minuteDecayFactor.pow(minutesSinceLastFeeOperation).mul(this._baseRateWithoutDecay);\n }\n /**\n * Calculate the current borrowing rate.\n *\n * @param when - Optional timestamp that can be used to calculate what the borrowing rate would\n * decay to at a point of time in the future.\n *\n * @remarks\n * By default, the fee is calculated at the time of the latest block. This can be overridden using\n * the `when` parameter.\n *\n * To calculate the borrowing fee in LUSD, multiply the borrowed LUSD amount by the borrowing rate.\n *\n * @example\n * ```typescript\n * const fees = await liquity.getFees();\n *\n * const borrowedLUSDAmount = 100;\n * const borrowingRate = fees.borrowingRate();\n * const borrowingFeeLUSD = borrowingRate.mul(borrowedLUSDAmount);\n * ```\n */\n borrowingRate(when) {\n return this._recoveryMode\n ? Decimal_1.Decimal.ZERO\n : Decimal_1.Decimal.min(constants_1.MINIMUM_BORROWING_RATE.add(this.baseRate(when)), constants_1.MAXIMUM_BORROWING_RATE);\n }\n /**\n * Calculate the current redemption rate.\n *\n * @param redeemedFractionOfSupply - The amount of LUSD being redeemed divided by the total supply.\n * @param when - Optional timestamp that can be used to calculate what the redemption rate would\n * decay to at a point of time in the future.\n *\n * @remarks\n * By default, the fee is calculated at the time of the latest block. This can be overridden using\n * the `when` parameter.\n \n * Unlike the borrowing rate, the redemption rate depends on the amount being redeemed. To be more\n * precise, it depends on the fraction of the redeemed amount compared to the total LUSD supply,\n * which must be passed as a parameter.\n *\n * To calculate the redemption fee in LUSD, multiply the redeemed LUSD amount with the redemption\n * rate.\n *\n * @example\n * ```typescript\n * const fees = await liquity.getFees();\n * const total = await liquity.getTotal();\n *\n * const redeemedLUSDAmount = Decimal.from(100);\n * const redeemedFractionOfSupply = redeemedLUSDAmount.div(total.debt);\n * const redemptionRate = fees.redemptionRate(redeemedFractionOfSupply);\n * const redemptionFeeLUSD = redemptionRate.mul(redeemedLUSDAmount);\n * ```\n */\n redemptionRate(redeemedFractionOfSupply = Decimal_1.Decimal.ZERO, when) {\n redeemedFractionOfSupply = Decimal_1.Decimal.from(redeemedFractionOfSupply);\n let baseRate = this.baseRate(when);\n if (redeemedFractionOfSupply.nonZero) {\n baseRate = redeemedFractionOfSupply.div(this._beta).add(baseRate);\n }\n return Decimal_1.Decimal.min(constants_1.MINIMUM_REDEMPTION_RATE.add(baseRate), Decimal_1.Decimal.ONE);\n }\n}\nexports.Fees = Fees;\n//# sourceMappingURL=Fees.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransactionFailedError = void 0;\n/**\n * Thrown by {@link TransactableLiquity} functions in case of transaction failure.\n *\n * @public\n */\nclass TransactionFailedError extends Error {\n /** @internal */\n constructor(name, message, failedReceipt) {\n super(message);\n this.name = name;\n this.failedReceipt = failedReceipt;\n }\n}\nexports.TransactionFailedError = TransactionFailedError;\n//# sourceMappingURL=TransactableLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._successfulReceipt = exports._failedReceipt = exports._pendingReceipt = void 0;\n/** @internal */\nexports._pendingReceipt = { status: \"pending\" };\n/** @internal */\nconst _failedReceipt = (rawReceipt) => ({\n status: \"failed\",\n rawReceipt\n});\nexports._failedReceipt = _failedReceipt;\n/** @internal */\nconst _successfulReceipt = (rawReceipt, details, toString) => ({\n status: \"succeeded\",\n rawReceipt,\n details,\n ...(toString ? { toString } : {})\n});\nexports._successfulReceipt = _successfulReceipt;\n//# sourceMappingURL=SendableLiquity.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LiquityStore = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst strictEquals = (a, b) => a === b;\nconst eq = (a, b) => a.eq(b);\nconst equals = (a, b) => a.equals(b);\nconst frontendStatusEquals = (a, b) => a.status === \"unregistered\"\n ? b.status === \"unregistered\"\n : b.status === \"registered\" && a.kickbackRate.eq(b.kickbackRate);\nconst showFrontendStatus = (x) => x.status === \"unregistered\"\n ? '{ status: \"unregistered\" }'\n : `{ status: \"registered\", kickbackRate: ${x.kickbackRate} }`;\nconst wrap = (f) => (...args) => f(...args);\nconst difference = (a, b) => Object.fromEntries(Object.entries(a).filter(([key, value]) => value !== b[key]));\n/**\n * Abstract base class of Liquity data store implementations.\n *\n * @remarks\n * The type parameter `T` may be used to type extra state added to {@link LiquityStoreState} by the\n * subclass.\n *\n * Implemented by {@link @liquity/lib-ethers#BlockPolledLiquityStore}.\n *\n * @public\n */\nclass LiquityStore {\n constructor() {\n /** Turn console logging on/off. */\n this.logging = false;\n /** @internal */\n this._loaded = false;\n this._listeners = new Set();\n }\n /**\n * The current store state.\n *\n * @remarks\n * Should not be accessed before the store is loaded. Assign a function to\n * {@link LiquityStore.onLoaded | onLoaded} to get a callback when this happens.\n *\n * See {@link LiquityStoreState} for the list of properties returned.\n */\n get state() {\n return Object.assign({}, this._baseState, this._derivedState, this._extraState);\n }\n /**\n * Start monitoring the blockchain for Liquity state changes.\n *\n * @remarks\n * The {@link LiquityStore.onLoaded | onLoaded} callback will be called after the state is fetched\n * for the first time.\n *\n * Use the {@link LiquityStore.subscribe | subscribe()} function to register listeners.\n *\n * @returns Function to stop the monitoring.\n */\n start() {\n const doStop = this._doStart();\n return () => {\n doStop();\n this._cancelUpdateIfScheduled();\n };\n }\n _cancelUpdateIfScheduled() {\n if (this._updateTimeoutId !== undefined) {\n clearTimeout(this._updateTimeoutId);\n }\n }\n _scheduleUpdate() {\n this._cancelUpdateIfScheduled();\n this._updateTimeoutId = setTimeout(() => {\n this._updateTimeoutId = undefined;\n this._update();\n }, 30000);\n }\n _logUpdate(name, next, show) {\n if (this.logging) {\n console.log(`${name} updated to ${show ? show(next) : next}`);\n }\n return next;\n }\n _updateIfChanged(equals, name, prev, next, show) {\n return next !== undefined && !equals(prev, next) ? this._logUpdate(name, next, show) : prev;\n }\n _silentlyUpdateIfChanged(equals, prev, next) {\n return next !== undefined && !equals(prev, next) ? next : prev;\n }\n _updateFees(name, prev, next) {\n if (next && !next.equals(prev)) {\n // Filter out fee update spam that happens on every new block by only logging when string\n // representation changes.\n if (`${next}` !== `${prev}`) {\n this._logUpdate(name, next);\n }\n return next;\n }\n else {\n return prev;\n }\n }\n _reduce(baseState, baseStateUpdate) {\n return {\n frontend: this._updateIfChanged(frontendStatusEquals, \"frontend\", baseState.frontend, baseStateUpdate.frontend, showFrontendStatus),\n ownFrontend: this._updateIfChanged(frontendStatusEquals, \"ownFrontend\", baseState.ownFrontend, baseStateUpdate.ownFrontend, showFrontendStatus),\n numberOfTroves: this._updateIfChanged(strictEquals, \"numberOfTroves\", baseState.numberOfTroves, baseStateUpdate.numberOfTroves),\n accountBalance: this._updateIfChanged(eq, \"accountBalance\", baseState.accountBalance, baseStateUpdate.accountBalance),\n lusdBalance: this._updateIfChanged(eq, \"lusdBalance\", baseState.lusdBalance, baseStateUpdate.lusdBalance),\n lqtyBalance: this._updateIfChanged(eq, \"lqtyBalance\", baseState.lqtyBalance, baseStateUpdate.lqtyBalance),\n uniTokenBalance: this._updateIfChanged(eq, \"uniTokenBalance\", baseState.uniTokenBalance, baseStateUpdate.uniTokenBalance),\n uniTokenAllowance: this._updateIfChanged(eq, \"uniTokenAllowance\", baseState.uniTokenAllowance, baseStateUpdate.uniTokenAllowance),\n remainingLiquidityMiningLQTYReward: this._silentlyUpdateIfChanged(eq, baseState.remainingLiquidityMiningLQTYReward, baseStateUpdate.remainingLiquidityMiningLQTYReward),\n liquidityMiningStake: this._updateIfChanged(eq, \"liquidityMiningStake\", baseState.liquidityMiningStake, baseStateUpdate.liquidityMiningStake),\n totalStakedUniTokens: this._updateIfChanged(eq, \"totalStakedUniTokens\", baseState.totalStakedUniTokens, baseStateUpdate.totalStakedUniTokens),\n liquidityMiningLQTYReward: this._silentlyUpdateIfChanged(eq, baseState.liquidityMiningLQTYReward, baseStateUpdate.liquidityMiningLQTYReward),\n collateralSurplusBalance: this._updateIfChanged(eq, \"collateralSurplusBalance\", baseState.collateralSurplusBalance, baseStateUpdate.collateralSurplusBalance),\n price: this._updateIfChanged(eq, \"price\", baseState.price, baseStateUpdate.price),\n lusdInStabilityPool: this._updateIfChanged(eq, \"lusdInStabilityPool\", baseState.lusdInStabilityPool, baseStateUpdate.lusdInStabilityPool),\n total: this._updateIfChanged(equals, \"total\", baseState.total, baseStateUpdate.total),\n totalRedistributed: this._updateIfChanged(equals, \"totalRedistributed\", baseState.totalRedistributed, baseStateUpdate.totalRedistributed),\n troveBeforeRedistribution: this._updateIfChanged(equals, \"troveBeforeRedistribution\", baseState.troveBeforeRedistribution, baseStateUpdate.troveBeforeRedistribution),\n stabilityDeposit: this._updateIfChanged(equals, \"stabilityDeposit\", baseState.stabilityDeposit, baseStateUpdate.stabilityDeposit),\n remainingStabilityPoolLQTYReward: this._silentlyUpdateIfChanged(eq, baseState.remainingStabilityPoolLQTYReward, baseStateUpdate.remainingStabilityPoolLQTYReward),\n _feesInNormalMode: this._silentlyUpdateIfChanged(equals, baseState._feesInNormalMode, baseStateUpdate._feesInNormalMode),\n lqtyStake: this._updateIfChanged(equals, \"lqtyStake\", baseState.lqtyStake, baseStateUpdate.lqtyStake),\n totalStakedLQTY: this._updateIfChanged(eq, \"totalStakedLQTY\", baseState.totalStakedLQTY, baseStateUpdate.totalStakedLQTY),\n _riskiestTroveBeforeRedistribution: this._silentlyUpdateIfChanged(equals, baseState._riskiestTroveBeforeRedistribution, baseStateUpdate._riskiestTroveBeforeRedistribution)\n };\n }\n _derive({ troveBeforeRedistribution, totalRedistributed, _feesInNormalMode, total, price, _riskiestTroveBeforeRedistribution }) {\n const fees = _feesInNormalMode._setRecoveryMode(total.collateralRatioIsBelowCritical(price));\n return {\n trove: troveBeforeRedistribution.applyRedistribution(totalRedistributed),\n fees,\n borrowingRate: fees.borrowingRate(),\n redemptionRate: fees.redemptionRate(),\n haveUndercollateralizedTroves: _riskiestTroveBeforeRedistribution\n .applyRedistribution(totalRedistributed)\n .collateralRatioIsBelowMinimum(price)\n };\n }\n _reduceDerived(derivedState, derivedStateUpdate) {\n return {\n fees: this._updateFees(\"fees\", derivedState.fees, derivedStateUpdate.fees),\n trove: this._updateIfChanged(equals, \"trove\", derivedState.trove, derivedStateUpdate.trove),\n borrowingRate: this._silentlyUpdateIfChanged(eq, derivedState.borrowingRate, derivedStateUpdate.borrowingRate),\n redemptionRate: this._silentlyUpdateIfChanged(eq, derivedState.redemptionRate, derivedStateUpdate.redemptionRate),\n haveUndercollateralizedTroves: this._updateIfChanged(strictEquals, \"haveUndercollateralizedTroves\", derivedState.haveUndercollateralizedTroves, derivedStateUpdate.haveUndercollateralizedTroves)\n };\n }\n _notify(params) {\n // Iterate on a copy of `_listeners`, to avoid notifying any new listeners subscribed by\n // existing listeners, as that could result in infinite loops.\n //\n // Before calling a listener from our copy of `_listeners`, check if it has been removed from\n // the original set. This way we avoid calling listeners that have already been unsubscribed\n // by an earlier listener callback.\n [...this._listeners].forEach(listener => {\n if (this._listeners.has(listener)) {\n listener(params);\n }\n });\n }\n /**\n * Register a state change listener.\n *\n * @param listener - Function that will be called whenever state changes.\n * @returns Function to unregister this listener.\n */\n subscribe(listener) {\n const uniqueListener = wrap(listener);\n this._listeners.add(uniqueListener);\n return () => {\n this._listeners.delete(uniqueListener);\n };\n }\n /** @internal */\n _load(baseState, extraState) {\n assert_1.default(!this._loaded);\n this._baseState = baseState;\n this._derivedState = this._derive(baseState);\n this._extraState = extraState;\n this._loaded = true;\n this._scheduleUpdate();\n if (this.onLoaded) {\n this.onLoaded();\n }\n }\n /** @internal */\n _update(baseStateUpdate, extraStateUpdate) {\n assert_1.default(this._baseState && this._derivedState);\n const oldState = this.state;\n if (baseStateUpdate) {\n this._baseState = this._reduce(this._baseState, baseStateUpdate);\n }\n // Always running this lets us derive state based on passage of time, like baseRate decay\n this._derivedState = this._reduceDerived(this._derivedState, this._derive(this._baseState));\n if (extraStateUpdate) {\n assert_1.default(this._extraState);\n this._extraState = this._reduceExtra(this._extraState, extraStateUpdate);\n }\n this._scheduleUpdate();\n this._notify({\n newState: this.state,\n oldState,\n stateChange: difference(this.state, oldState)\n });\n }\n}\nexports.LiquityStore = LiquityStore;\n//# sourceMappingURL=LiquityStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._CachedReadableLiquity = void 0;\n/** @internal */\nclass _CachedReadableLiquity {\n constructor(readable, cache) {\n this._readable = readable;\n this._cache = cache;\n }\n async getTotalRedistributed(...extraParams) {\n var _a;\n return ((_a = this._cache.getTotalRedistributed(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTotalRedistributed(...extraParams));\n }\n async getTroveBeforeRedistribution(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getTroveBeforeRedistribution(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTroveBeforeRedistribution(address, ...extraParams));\n }\n async getTrove(address, ...extraParams) {\n const [troveBeforeRedistribution, totalRedistributed] = await Promise.all([\n this.getTroveBeforeRedistribution(address, ...extraParams),\n this.getTotalRedistributed(...extraParams)\n ]);\n return troveBeforeRedistribution.applyRedistribution(totalRedistributed);\n }\n async getNumberOfTroves(...extraParams) {\n var _a;\n return ((_a = this._cache.getNumberOfTroves(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getNumberOfTroves(...extraParams));\n }\n async getPrice(...extraParams) {\n var _a;\n return (_a = this._cache.getPrice(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getPrice(...extraParams);\n }\n async getTotal(...extraParams) {\n var _a;\n return (_a = this._cache.getTotal(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTotal(...extraParams);\n }\n async getStabilityDeposit(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getStabilityDeposit(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getStabilityDeposit(address, ...extraParams));\n }\n async getRemainingStabilityPoolLQTYReward(...extraParams) {\n var _a;\n return ((_a = this._cache.getRemainingStabilityPoolLQTYReward(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getRemainingStabilityPoolLQTYReward(...extraParams));\n }\n async getLUSDInStabilityPool(...extraParams) {\n var _a;\n return ((_a = this._cache.getLUSDInStabilityPool(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLUSDInStabilityPool(...extraParams));\n }\n async getLUSDBalance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getLUSDBalance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLUSDBalance(address, ...extraParams));\n }\n async getLQTYBalance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getLQTYBalance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLQTYBalance(address, ...extraParams));\n }\n async getUniTokenBalance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getUniTokenBalance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getUniTokenBalance(address, ...extraParams));\n }\n async getUniTokenAllowance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getUniTokenAllowance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getUniTokenAllowance(address, ...extraParams));\n }\n async getRemainingLiquidityMiningLQTYReward(...extraParams) {\n var _a;\n return ((_a = this._cache.getRemainingLiquidityMiningLQTYReward(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getRemainingLiquidityMiningLQTYReward(...extraParams));\n }\n async getLiquidityMiningStake(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getLiquidityMiningStake(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLiquidityMiningStake(address, ...extraParams));\n }\n async getTotalStakedUniTokens(...extraParams) {\n var _a;\n return ((_a = this._cache.getTotalStakedUniTokens(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTotalStakedUniTokens(...extraParams));\n }\n async getLiquidityMiningLQTYReward(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getLiquidityMiningLQTYReward(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLiquidityMiningLQTYReward(address, ...extraParams));\n }\n async getCollateralSurplusBalance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getCollateralSurplusBalance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getCollateralSurplusBalance(address, ...extraParams));\n }\n async getTroves(params, ...extraParams) {\n var _a;\n const { beforeRedistribution, ...restOfParams } = params;\n const [totalRedistributed, troves] = await Promise.all([\n beforeRedistribution ? undefined : this.getTotalRedistributed(...extraParams),\n (_a = this._cache.getTroves({ beforeRedistribution: true, ...restOfParams }, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTroves({ beforeRedistribution: true, ...restOfParams }, ...extraParams)\n ]);\n if (totalRedistributed) {\n return troves.map(trove => trove.applyRedistribution(totalRedistributed));\n }\n else {\n return troves;\n }\n }\n async getFees(...extraParams) {\n var _a;\n return (_a = this._cache.getFees(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getFees(...extraParams);\n }\n async getLQTYStake(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getLQTYStake(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getLQTYStake(address, ...extraParams));\n }\n async getTotalStakedLQTY(...extraParams) {\n var _a;\n return ((_a = this._cache.getTotalStakedLQTY(...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getTotalStakedLQTY(...extraParams));\n }\n async getFrontendStatus(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getFrontendStatus(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getFrontendStatus(address, ...extraParams));\n }\n}\nexports._CachedReadableLiquity = _CachedReadableLiquity;\n//# sourceMappingURL=_CachedReadableLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._connectToMulticall = void 0;\nconst contracts_1 = require(\"@ethersproject/contracts\");\nconst multicallAbi = [\n {\n constant: true,\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [\n {\n name: \"timestamp\",\n type: \"uint256\"\n }\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\"\n }\n];\nconst multicallAddress = {\n 1: \"0xeefba1e63905ef1d7acba5a8513c70307c1ce441\",\n 3: \"0x53c43764255c17bd724f74c4ef150724ac50a3ed\",\n 4: \"0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821\",\n 5: \"0x77dca2c955b15e9de4dbbcf1246b4b85b651e50e\",\n 42: \"0x2cc8688c5f75e365aaeeb4ea8d6a480405a48d2a\"\n};\nconst hasMulticall = (chainId) => chainId in multicallAddress;\nconst _connectToMulticall = (signerOrProvider, chainId) => hasMulticall(chainId)\n ? new contracts_1.Contract(multicallAddress[chainId], multicallAbi, signerOrProvider)\n : undefined;\nexports._connectToMulticall = _connectToMulticall;\n//# sourceMappingURL=_Multicall.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObservableEthersLiquity = void 0;\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst debouncingDelayMs = 50;\nconst debounce = (listener) => {\n let timeoutId = undefined;\n let latestBlock = 0;\n return (...args) => {\n const event = args[args.length - 1];\n if (event.blockNumber !== undefined && event.blockNumber > latestBlock) {\n latestBlock = event.blockNumber;\n }\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n listener(latestBlock);\n timeoutId = undefined;\n }, debouncingDelayMs);\n };\n};\n/** @alpha */\nclass ObservableEthersLiquity {\n constructor(readable) {\n this._readable = readable;\n }\n watchTotalRedistributed(onTotalRedistributedChanged) {\n const { activePool, defaultPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const etherSent = activePool.filters.EtherSent();\n const redistributionListener = debounce((blockTag) => {\n this._readable.getTotalRedistributed({ blockTag }).then(onTotalRedistributedChanged);\n });\n const etherSentListener = (toAddress, _amount, event) => {\n if (toAddress === defaultPool.address) {\n redistributionListener(event);\n }\n };\n activePool.on(etherSent, etherSentListener);\n return () => {\n activePool.removeListener(etherSent, etherSentListener);\n };\n }\n watchTroveWithoutRewards(onTroveChanged, address) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this._readable.connection));\n const { troveManager, borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const troveUpdatedByTroveManager = troveManager.filters.TroveUpdated(address);\n const troveUpdatedByBorrowerOperations = borrowerOperations.filters.TroveUpdated(address);\n const troveListener = debounce((blockTag) => {\n this._readable.getTroveBeforeRedistribution(address, { blockTag }).then(onTroveChanged);\n });\n troveManager.on(troveUpdatedByTroveManager, troveListener);\n borrowerOperations.on(troveUpdatedByBorrowerOperations, troveListener);\n return () => {\n troveManager.removeListener(troveUpdatedByTroveManager, troveListener);\n borrowerOperations.removeListener(troveUpdatedByBorrowerOperations, troveListener);\n };\n }\n watchNumberOfTroves(onNumberOfTrovesChanged) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const { TroveUpdated } = troveManager.filters;\n const troveUpdated = TroveUpdated();\n const troveUpdatedListener = debounce((blockTag) => {\n this._readable.getNumberOfTroves({ blockTag }).then(onNumberOfTrovesChanged);\n });\n troveManager.on(troveUpdated, troveUpdatedListener);\n return () => {\n troveManager.removeListener(troveUpdated, troveUpdatedListener);\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n watchPrice(onPriceChanged) {\n // TODO revisit\n // We no longer have our own PriceUpdated events. If we want to implement this in an event-based\n // manner, we'll need to listen to aggregator events directly. Or we could do polling.\n throw new Error(\"Method not implemented.\");\n }\n watchTotal(onTotalChanged) {\n const { troveManager } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const { TroveUpdated } = troveManager.filters;\n const troveUpdated = TroveUpdated();\n const totalListener = debounce((blockTag) => {\n this._readable.getTotal({ blockTag }).then(onTotalChanged);\n });\n troveManager.on(troveUpdated, totalListener);\n return () => {\n troveManager.removeListener(troveUpdated, totalListener);\n };\n }\n watchStabilityDeposit(onStabilityDepositChanged, address) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this._readable.connection));\n const { activePool, stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const { UserDepositChanged } = stabilityPool.filters;\n const { EtherSent } = activePool.filters;\n const userDepositChanged = UserDepositChanged(address);\n const etherSent = EtherSent();\n const depositListener = debounce((blockTag) => {\n this._readable.getStabilityDeposit(address, { blockTag }).then(onStabilityDepositChanged);\n });\n const etherSentListener = (toAddress, _amount, event) => {\n if (toAddress === stabilityPool.address) {\n // Liquidation while Stability Pool has some deposits\n // There may be new gains\n depositListener(event);\n }\n };\n stabilityPool.on(userDepositChanged, depositListener);\n activePool.on(etherSent, etherSentListener);\n return () => {\n stabilityPool.removeListener(userDepositChanged, depositListener);\n activePool.removeListener(etherSent, etherSentListener);\n };\n }\n watchLUSDInStabilityPool(onLUSDInStabilityPoolChanged) {\n const { lusdToken, stabilityPool } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const { Transfer } = lusdToken.filters;\n const transferLUSDFromStabilityPool = Transfer(stabilityPool.address);\n const transferLUSDToStabilityPool = Transfer(null, stabilityPool.address);\n const stabilityPoolLUSDFilters = [transferLUSDFromStabilityPool, transferLUSDToStabilityPool];\n const stabilityPoolLUSDListener = debounce((blockTag) => {\n this._readable.getLUSDInStabilityPool({ blockTag }).then(onLUSDInStabilityPoolChanged);\n });\n stabilityPoolLUSDFilters.forEach(filter => lusdToken.on(filter, stabilityPoolLUSDListener));\n return () => stabilityPoolLUSDFilters.forEach(filter => lusdToken.removeListener(filter, stabilityPoolLUSDListener));\n }\n watchLUSDBalance(onLUSDBalanceChanged, address) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this._readable.connection));\n const { lusdToken } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const { Transfer } = lusdToken.filters;\n const transferLUSDFromUser = Transfer(address);\n const transferLUSDToUser = Transfer(null, address);\n const lusdTransferFilters = [transferLUSDFromUser, transferLUSDToUser];\n const lusdTransferListener = debounce((blockTag) => {\n this._readable.getLUSDBalance(address, { blockTag }).then(onLUSDBalanceChanged);\n });\n lusdTransferFilters.forEach(filter => lusdToken.on(filter, lusdTransferListener));\n return () => lusdTransferFilters.forEach(filter => lusdToken.removeListener(filter, lusdTransferListener));\n }\n}\nexports.ObservableEthersLiquity = ObservableEthersLiquity;\n//# sourceMappingURL=ObservableEthersLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logsToString = void 0;\nconst bignumber_1 = require(\"@ethersproject/bignumber\");\nconst constants_1 = require(\"@ethersproject/constants\");\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst interfaceLookupFrom = (contractLookup) => {\n return Object.fromEntries(Object.entries(contractLookup).map(([, contract]) => [contract.address, contract.interface]));\n};\nconst nameLookupFrom = (contractLookup) => {\n return Object.fromEntries(Object.entries(contractLookup).map(([name, contract]) => [contract.address, name]));\n};\nconst tryToParseLog = (log, interfaceLookup) => {\n const { address } = log;\n if (address in interfaceLookup) {\n try {\n return { address, logDescription: interfaceLookup[address].parseLog(log) };\n }\n catch (err) {\n console.warn(\"Failed to parse log:\");\n console.warn(log);\n console.warn(\"Caught:\");\n console.warn(err);\n }\n }\n};\nconst parseLogs = (logs, interfaceLookup) => {\n const parsedLogs = [];\n const unparsedLogs = [];\n logs.forEach(log => {\n const parsedLog = tryToParseLog(log, interfaceLookup);\n if (parsedLog) {\n parsedLogs.push(parsedLog);\n }\n else {\n unparsedLogs.push(log);\n }\n });\n return [parsedLogs, unparsedLogs];\n};\nconst VERY_BIG = bignumber_1.BigNumber.from(10).pow(9);\nconst prettify = (arg, nameLookup) => {\n if (bignumber_1.BigNumber.isBigNumber(arg)) {\n if (arg.gte(VERY_BIG)) {\n return `${lib_base_1.Decimal.fromBigNumberString(arg.toHexString())}e18`;\n }\n else {\n return arg.toString();\n }\n }\n else if (typeof arg === \"string\") {\n return arg === constants_1.AddressZero\n ? \"address(0)\"\n : nameLookup && arg in nameLookup\n ? nameLookup[arg]\n : arg;\n }\n else {\n return String(arg);\n }\n};\nconst logDescriptionToString = (logDescription, nameLookup) => {\n const prettyEntries = Object.entries(logDescription.args)\n .filter(([key]) => !key.match(/^[0-9]/))\n .map(([key, value]) => `${key}: ${prettify(value, nameLookup)}`);\n return `${logDescription.name}({ ${prettyEntries.join(\", \")} })`;\n};\nconst logsToString = (receipt, contracts) => {\n const contractLookup = contracts;\n const interfaceLookup = interfaceLookupFrom(contractLookup);\n const contractNameLookup = nameLookupFrom(contractLookup);\n const nameLookup = {\n [receipt.from]: \"user\",\n ...contractNameLookup\n };\n const [parsedLogs, unparsedLogs] = parseLogs(receipt.logs, interfaceLookup);\n if (unparsedLogs.length > 0) {\n console.warn(\"Warning: not all logs were parsed. Unparsed logs:\");\n console.warn(unparsedLogs);\n }\n if (parsedLogs.length > 0) {\n return (`Logs of tx ${receipt.transactionHash}:\\n` +\n parsedLogs\n .map(({ address, logDescription }) => ` ${contractNameLookup[address]}.${logDescriptionToString(logDescription, nameLookup)}`)\n .join(\"\\n\"));\n }\n else {\n return `No logs were parsed in tx ${receipt.transactionHash}`;\n }\n};\nexports.logsToString = logsToString;\n//# sourceMappingURL=parseLogs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthersLiquity = exports.EthersTransactionFailedError = void 0;\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst PopulatableEthersLiquity_1 = require(\"./PopulatableEthersLiquity\");\nconst ReadableEthersLiquity_1 = require(\"./ReadableEthersLiquity\");\nconst SendableEthersLiquity_1 = require(\"./SendableEthersLiquity\");\n/**\n * Thrown by {@link EthersLiquity} in case of transaction failure.\n *\n * @public\n */\nclass EthersTransactionFailedError extends lib_base_1.TransactionFailedError {\n constructor(message, failedReceipt) {\n super(\"EthersTransactionFailedError\", message, failedReceipt);\n }\n}\nexports.EthersTransactionFailedError = EthersTransactionFailedError;\nconst waitForSuccess = async (tx) => {\n const receipt = await tx.waitForReceipt();\n if (receipt.status !== \"succeeded\") {\n throw new EthersTransactionFailedError(\"Transaction failed\", receipt);\n }\n return receipt.details;\n};\n/**\n * Convenience class that combines multiple interfaces of the library in one object.\n *\n * @public\n */\nclass EthersLiquity {\n /** @internal */\n constructor(readable) {\n this._readable = readable;\n this.connection = readable.connection;\n this.populate = new PopulatableEthersLiquity_1.PopulatableEthersLiquity(readable);\n this.send = new SendableEthersLiquity_1.SendableEthersLiquity(this.populate);\n }\n /** @internal */\n static _from(connection) {\n if (EthersLiquityConnection_1._usingStore(connection)) {\n return new _EthersLiquityWithStore(ReadableEthersLiquity_1.ReadableEthersLiquity._from(connection));\n }\n else {\n return new EthersLiquity(ReadableEthersLiquity_1.ReadableEthersLiquity._from(connection));\n }\n }\n static async connect(signerOrProvider, optionalParams) {\n return EthersLiquity._from(await EthersLiquityConnection_1._connect(signerOrProvider, optionalParams));\n }\n hasStore() {\n return false;\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalRedistributed} */\n getTotalRedistributed(overrides) {\n return this._readable.getTotalRedistributed(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTroveBeforeRedistribution} */\n getTroveBeforeRedistribution(address, overrides) {\n return this._readable.getTroveBeforeRedistribution(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTrove} */\n getTrove(address, overrides) {\n return this._readable.getTrove(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getNumberOfTroves} */\n getNumberOfTroves(overrides) {\n return this._readable.getNumberOfTroves(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getPrice} */\n getPrice(overrides) {\n return this._readable.getPrice(overrides);\n }\n /** @internal */\n _getActivePool(overrides) {\n return this._readable._getActivePool(overrides);\n }\n /** @internal */\n _getDefaultPool(overrides) {\n return this._readable._getDefaultPool(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotal} */\n getTotal(overrides) {\n return this._readable.getTotal(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getStabilityDeposit} */\n getStabilityDeposit(address, overrides) {\n return this._readable.getStabilityDeposit(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getRemainingStabilityPoolLQTYReward} */\n getRemainingStabilityPoolLQTYReward(overrides) {\n return this._readable.getRemainingStabilityPoolLQTYReward(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLUSDInStabilityPool} */\n getLUSDInStabilityPool(overrides) {\n return this._readable.getLUSDInStabilityPool(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLUSDBalance} */\n getLUSDBalance(address, overrides) {\n return this._readable.getLUSDBalance(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLQTYBalance} */\n getLQTYBalance(address, overrides) {\n return this._readable.getLQTYBalance(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getUniTokenBalance} */\n getUniTokenBalance(address, overrides) {\n return this._readable.getUniTokenBalance(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getUniTokenAllowance} */\n getUniTokenAllowance(address, overrides) {\n return this._readable.getUniTokenAllowance(address, overrides);\n }\n /** @internal */\n _getRemainingLiquidityMiningLQTYRewardCalculator(overrides) {\n return this._readable._getRemainingLiquidityMiningLQTYRewardCalculator(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getRemainingLiquidityMiningLQTYReward} */\n getRemainingLiquidityMiningLQTYReward(overrides) {\n return this._readable.getRemainingLiquidityMiningLQTYReward(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLiquidityMiningStake} */\n getLiquidityMiningStake(address, overrides) {\n return this._readable.getLiquidityMiningStake(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalStakedUniTokens} */\n getTotalStakedUniTokens(overrides) {\n return this._readable.getTotalStakedUniTokens(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLiquidityMiningLQTYReward} */\n getLiquidityMiningLQTYReward(address, overrides) {\n return this._readable.getLiquidityMiningLQTYReward(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getCollateralSurplusBalance} */\n getCollateralSurplusBalance(address, overrides) {\n return this._readable.getCollateralSurplusBalance(address, overrides);\n }\n getTroves(params, overrides) {\n return this._readable.getTroves(params, overrides);\n }\n /** @internal */\n _getFeesFactory(overrides) {\n return this._readable._getFeesFactory(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getFees} */\n getFees(overrides) {\n return this._readable.getFees(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getLQTYStake} */\n getLQTYStake(address, overrides) {\n return this._readable.getLQTYStake(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getTotalStakedLQTY} */\n getTotalStakedLQTY(overrides) {\n return this._readable.getTotalStakedLQTY(overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getFrontendStatus} */\n getFrontendStatus(address, overrides) {\n return this._readable.getFrontendStatus(address, overrides);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.openTrove}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n openTrove(params, maxBorrowingRate, overrides) {\n return this.send.openTrove(params, maxBorrowingRate, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.closeTrove}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n closeTrove(overrides) {\n return this.send.closeTrove(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.adjustTrove}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n adjustTrove(params, maxBorrowingRate, overrides) {\n return this.send.adjustTrove(params, maxBorrowingRate, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.depositCollateral}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n depositCollateral(amount, overrides) {\n return this.send.depositCollateral(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.withdrawCollateral}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n withdrawCollateral(amount, overrides) {\n return this.send.withdrawCollateral(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.borrowLUSD}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n borrowLUSD(amount, maxBorrowingRate, overrides) {\n return this.send.borrowLUSD(amount, maxBorrowingRate, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.repayLUSD}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n repayLUSD(amount, overrides) {\n return this.send.repayLUSD(amount, overrides).then(waitForSuccess);\n }\n /** @internal */\n setPrice(price, overrides) {\n return this.send.setPrice(price, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.liquidate}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n liquidate(address, overrides) {\n return this.send.liquidate(address, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.liquidateUpTo}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides) {\n return this.send.liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.depositLUSDInStabilityPool}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n depositLUSDInStabilityPool(amount, frontendTag, overrides) {\n return this.send.depositLUSDInStabilityPool(amount, frontendTag, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.withdrawLUSDFromStabilityPool}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n withdrawLUSDFromStabilityPool(amount, overrides) {\n return this.send.withdrawLUSDFromStabilityPool(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.withdrawGainsFromStabilityPool}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n withdrawGainsFromStabilityPool(overrides) {\n return this.send.withdrawGainsFromStabilityPool(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.transferCollateralGainToTrove}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n transferCollateralGainToTrove(overrides) {\n return this.send.transferCollateralGainToTrove(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.sendLUSD}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n sendLUSD(toAddress, amount, overrides) {\n return this.send.sendLUSD(toAddress, amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.sendLQTY}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n sendLQTY(toAddress, amount, overrides) {\n return this.send.sendLQTY(toAddress, amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.redeemLUSD}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n redeemLUSD(amount, maxRedemptionRate, overrides) {\n return this.send.redeemLUSD(amount, maxRedemptionRate, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.claimCollateralSurplus}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n claimCollateralSurplus(overrides) {\n return this.send.claimCollateralSurplus(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.stakeLQTY}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n stakeLQTY(amount, overrides) {\n return this.send.stakeLQTY(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.unstakeLQTY}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n unstakeLQTY(amount, overrides) {\n return this.send.unstakeLQTY(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.withdrawGainsFromStaking}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n withdrawGainsFromStaking(overrides) {\n return this.send.withdrawGainsFromStaking(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.registerFrontend}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n registerFrontend(kickbackRate, overrides) {\n return this.send.registerFrontend(kickbackRate, overrides).then(waitForSuccess);\n }\n /** @internal */\n _mintUniToken(amount, address, overrides) {\n return this.send._mintUniToken(amount, address, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.approveUniTokens}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n approveUniTokens(allowance, overrides) {\n return this.send.approveUniTokens(allowance, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.stakeUniTokens}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n stakeUniTokens(amount, overrides) {\n return this.send.stakeUniTokens(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.unstakeUniTokens}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n unstakeUniTokens(amount, overrides) {\n return this.send.unstakeUniTokens(amount, overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.withdrawLQTYRewardFromLiquidityMining}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n withdrawLQTYRewardFromLiquidityMining(overrides) {\n return this.send.withdrawLQTYRewardFromLiquidityMining(overrides).then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.exitLiquidityMining}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n */\n exitLiquidityMining(overrides) {\n return this.send.exitLiquidityMining(overrides).then(waitForSuccess);\n }\n}\nexports.EthersLiquity = EthersLiquity;\nclass _EthersLiquityWithStore extends EthersLiquity {\n constructor(readable) {\n super(readable);\n this.store = readable.store;\n }\n hasStore(store) {\n return store === undefined || store === this.connection.useStore;\n }\n}\n//# sourceMappingURL=EthersLiquity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useLiquityReducer = void 0;\nconst react_1 = require(\"react\");\nconst equals_1 = require(\"../utils/equals\");\nconst useLiquityStore_1 = require(\"./useLiquityStore\");\nconst useLiquityReducer = (reduce, init) => {\n const store = useLiquityStore_1.useLiquityStore();\n const oldStore = react_1.useRef(store);\n const state = react_1.useRef(init(store.state));\n const [, rerender] = react_1.useReducer(() => ({}), {});\n const dispatch = react_1.useCallback((action) => {\n const newState = reduce(state.current, action);\n if (!equals_1.equals(newState, state.current)) {\n state.current = newState;\n rerender();\n }\n }, [reduce]);\n react_1.useEffect(() => store.subscribe(params => dispatch({ type: \"updateStore\", ...params })), [\n store,\n dispatch\n ]);\n if (oldStore.current !== store) {\n state.current = init(store.state);\n oldStore.current = store;\n }\n return [state.current, dispatch];\n};\nexports.useLiquityReducer = useLiquityReducer;\n//# sourceMappingURL=useLiquityReducer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useLiquitySelector = void 0;\nconst react_1 = require(\"react\");\nconst equals_1 = require(\"../utils/equals\");\nconst useLiquityStore_1 = require(\"./useLiquityStore\");\nconst useLiquitySelector = (select) => {\n const store = useLiquityStore_1.useLiquityStore();\n const [, rerender] = react_1.useReducer(() => ({}), {});\n react_1.useEffect(() => store.subscribe(({ newState, oldState }) => {\n if (!equals_1.equals(select(newState), select(oldState))) {\n rerender();\n }\n }), [store, select]);\n return select(store.state);\n};\nexports.useLiquitySelector = useLiquitySelector;\n//# sourceMappingURL=useLiquitySelector.js.map","import { AddressZero } from \"@ethersproject/constants\";\nimport { isAddress, getAddress } from \"@ethersproject/address\";\n\nexport type LiquityFrontendConfig = {\n frontendTag: string;\n infuraApiKey?: string;\n testnetOnly?: boolean;\n};\n\nconst defaultConfig: LiquityFrontendConfig = {\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): LiquityFrontendConfig => {\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, { createContext, useContext, useEffect, useMemo, useState } 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 { isBatchedProvider, isWebSocketAugmentedProvider } from \"@liquity/providers\";\nimport {\n BlockPolledLiquityStore,\n EthersLiquity,\n EthersLiquityWithStore,\n _connectByChainId\n} from \"@liquity/lib-ethers\";\n\nimport { LiquityFrontendConfig, getConfig } from \"../config\";\n\ntype LiquityContextValue = {\n config: LiquityFrontendConfig;\n account: string;\n provider: Provider;\n liquity: EthersLiquityWithStore;\n};\n\nconst LiquityContext = createContext(undefined);\n\ntype LiquityProviderProps = {\n loader?: React.ReactNode;\n unsupportedNetworkFallback?: (chainId: number) => React.ReactNode;\n unsupportedMainnetFallback?: React.ReactNode;\n};\n\nconst wsParams = (network: string, infuraApiKey: string): [string, string] => [\n `wss://${network === \"homestead\" ? \"mainnet\" : network}.infura.io/ws/v3/${infuraApiKey}`,\n network\n];\n\nconst supportedNetworks = [\"homestead\", \"kovan\", \"rinkeby\", \"ropsten\", \"goerli\"];\n\nexport const LiquityProvider: 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(provider, provider.getSigner(account), chainId, {\n userAddress: account,\n frontendTag: config.frontendTag,\n useStore: \"blockPolled\"\n });\n } catch {}\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 (network.name && supportedNetworks.includes(network.name) && config.infuraApiKey) {\n provider.openWebSocket(...wsParams(network.name, config.infuraApiKey));\n } else if (connection._isDev) {\n provider.openWebSocket(`ws://${window.location.hostname}:8546`, chainId);\n }\n\n return () => {\n provider.closeWebSocket();\n };\n }\n }\n }, [config, connection]);\n\n if (!config || !provider || !account || !chainId) {\n return <>{loader};\n }\n\n if (config.testnetOnly && chainId === 1) {\n return <>{unsupportedMainnetFallback};\n }\n\n if (!connection) {\n return unsupportedNetworkFallback ? <>{unsupportedNetworkFallback(chainId)} : null;\n }\n\n const liquity = EthersLiquity._from(connection);\n liquity.store.logging = true;\n\n return (\n \n {children}\n \n );\n};\n\nexport const useLiquity = () => {\n const liquityContext = useContext(LiquityContext);\n\n if (!liquityContext) {\n throw new Error(\"You must provide a LiquityContext via LiquityProvider\");\n }\n\n return liquityContext;\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 Ether\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","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 } 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\";\n\ninterface MaybeHasMetaMask {\n ethereum?: {\n isMetaMask?: boolean;\n };\n}\n\ntype ConnectionState =\n | { type: \"inactive\" }\n | {\n type: \"activating\" | \"active\" | \"rejectedByUser\" | \"alreadyPending\" | \"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 = (state, action) => {\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: 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 = () => (window as MaybeHasMetaMask).ethereum?.isMetaMask ?? false;\n\ntype WalletConnectorProps = {\n loader?: React.ReactNode;\n};\n\nexport const WalletConnector: React.FC = ({ children, loader }) => {\n const { activate, deactivate, active, error } = useWeb3React();\n const triedAuthorizedConnection = useAuthorizedConnection();\n const [connectionState, dispatch] = useReducer(connectionReducer, { type: \"inactive\" });\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({ type: \"startActivating\", connector: injectedConnector });\n activate(injectedConnector);\n }}\n >\n {isMetaMask ? (\n <>\n \n Connect to MetaMask\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 onCancel={() => dispatch({ type: \"cancel\" })}\n >\n \n Confirm the request that's just appeared.\n {isMetaMask ? (\n <> If you can't see a request, open your MetaMask extension via your browser.\n ) : (\n <> If you can't see a request, you might have to open your wallet.\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 To use Liquity, you need to connect your Ethereum account.\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 Please check your wallet and accept the connection request before retrying.\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 Ethereum 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 { Provider, TransactionResponse, TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { hexDataSlice, hexDataLength } from \"@ethersproject/bytes\";\nimport { defaultAbiCoder } from \"@ethersproject/abi\";\n\nimport { buildStyles, CircularProgressbarWithChildren } from \"react-circular-progressbar\";\nimport \"react-circular-progressbar/dist/styles.css\";\n\nimport { EthersTransactionOverrides } from \"@liquity/lib-ethers\";\nimport { SentLiquityTransaction, LiquityReceipt } from \"@liquity/lib-base\";\n\nimport { useLiquity } from \"../hooks/LiquityContext\";\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 {children}\n );\n};\n\nconst useTransactionState = () => {\n const transactionState = useContext(TransactionContext);\n\n if (!transactionState) {\n throw new Error(\"You must provide a TransactionContext via TransactionProvider\");\n }\n\n return transactionState;\n};\n\nexport const useMyTransactionState = (myId: string | RegExp): TransactionState => {\n const [transactionState] = useTransactionState();\n\n return transactionState.type !== \"idle\" &&\n (typeof myId === \"string\" ? transactionState.id === myId : 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 = SentLiquityTransaction<\n TransactionResponse,\n LiquityReceipt\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): [sendTransaction: () => Promise, transactionState: TransactionState] => {\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 (hasMessage(error) && error.message.includes(\"User denied transaction signature\")) {\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 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 ? showFailure ?? (tooltip ? \"asTooltip\" : \"asChildText\") : 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 (provider: Provider, hash: string) => {\n try {\n const tx = await provider.getTransaction(hash);\n const result = await provider.call(tx, tx.blockNumber);\n\n if (hexDataLength(result) % 32 === 4 && hexDataSlice(result, 0, 4) === \"0x08c379a0\") {\n return (defaultAbiCoder.decode([\"string\"], hexDataSlice(result, 4)) as [string])[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 = ({ state }) => {\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 } = useLiquity();\n const [transactionState, setTransactionState] = useTransactionState();\n\n const id = transactionState.type !== \"idle\" ? transactionState.id : undefined;\n const tx = transactionState.type === \"waitingForConfirmation\" ? transactionState.tx : 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 = receipt.rawReceipt.blockNumber + confirmations - 1;\n console.log(`Block #${blockNumber} ${confirmations}-confirms tx ${txHash}`);\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(provider, txHash);\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 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 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 (transactionState.type === \"idle\" || transactionState.type === \"waitingForApproval\") {\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\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\n success: baseColors.green,\n warning: baseColors.yellow,\n danger: baseColors.red,\n dangerHover: baseColors.lightRed,\n info: baseColors.blue,\n invalid: \"pink\",\n\n text: \"#293147\",\n background: \"white\",\n muted: \"#eaebed\"\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: `linear-gradient(90deg, ${colors.background}, ${colors.muted})`\n};\n\nconst theme: Theme = {\n breakpoints: [\"48em\", \"52em\", \"64em\"],\n\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n\n fonts: {\n body: [\n \"system-ui\",\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: \"monospace\",\n fontSize: 1\n }\n },\n\n buttons: {\n primary: {\n ...button,\n\n bg: \"primary\",\n borderColor: \"primary\",\n\n \":enabled:hover\": {\n bg: \"secondary\",\n borderColor: \"secondary\"\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 dangerIcon: {\n ...iconButton,\n color: \"danger\",\n \":enabled:hover\": { color: \"dangerHover\" }\n },\n\n titleIcon: {\n ...iconButton,\n color: \"text\",\n \":enabled:hover\": { color: \"success\" }\n }\n },\n\n cards: {\n primary: {\n ...card,\n\n padding: 0,\n\n borderColor: \"muted\",\n bg: \"background\",\n\n \"> h2\": {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n\n height: \"56px\",\n\n pl: 3,\n py: 2,\n pr: 2,\n\n bg: \"muted\",\n\n fontSize: cardHeadingFontSize\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: 2,\n\n border: 1,\n borderColor: \"muted\",\n borderRadius: \"4px\",\n bg: \"background\",\n boxShadow: 2,\n\n fontSize: 1,\n color: \"text\",\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 },\n\n layout: {\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"stretch\",\n\n position: [\"fixed\", \"relative\"],\n width: \"100vw\",\n top: 0,\n zIndex: 1,\n\n px: [2, \"12px\", \"12px\", 5],\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: [\"40px\", 0],\n mb: [\"40px\", \"40px\"],\n px: cardGapX\n },\n\n columns: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyItems: \"center\"\n },\n\n left: {\n pr: cardGapX,\n width: [\"100%\", \"58%\"]\n },\n\n right: {\n width: [\"100%\", \"42%\"]\n },\n\n actions: {\n justifyContent: \"flex-end\",\n mt: 2,\n\n button: {\n ml: 2\n }\n },\n\n disabledOverlay: {\n ...overlay,\n\n bg: \"rgba(255, 255, 255, 0.5)\"\n },\n\n modalOverlay: {\n ...modalOverlay,\n\n bg: \"rgba(0, 0, 0, 0.8)\",\n\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n\n modal: {\n padding: 3,\n width: [\"100%\", \"40em\"]\n },\n\n infoOverlay: {\n ...modalOverlay,\n\n display: [\"block\", \"none\"],\n\n bg: \"rgba(255, 255, 255, 0.8)\"\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\", \"none\"],\n flexDirection: \"column\",\n p: 0,\n m: 0,\n borderColor: \"muted\",\n mr: \"25vw\",\n height: \"100%\",\n ...headerGradient\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 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: 1,\n fontWeight: \"medium\",\n fontSize: 2,\n textTransform: \"uppercase\",\n letterSpacing: \"2px\",\n width: [\"100%\", \"auto\"],\n mt: [3, \"auto\"]\n }\n }\n};\n\nexport default theme;\n","import { hexlify } from \"@ethersproject/bytes\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport { Decimal, Decimalish } from \"@liquity/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","export const COIN = \"LUSD\";\nexport const GT = \"LQTY\";\nexport const LP = \"UNI LP\";\n// export const LP = \"ETH/LUSD LP\";\n","export const shortenAddress = (address: string) => address.substr(0, 6) + \"...\" + address.substr(-4);\n","import React from \"react\";\nimport { Text, Flex, Box, Heading } from \"theme-ui\";\n\nimport { LiquityStoreState } from \"@liquity/lib-base\";\nimport { useLiquitySelector } from \"@liquity/lib-react\";\n\nimport { COIN, GT } from \"../strings\";\nimport { useLiquity } from \"../hooks/LiquityContext\";\nimport { shortenAddress } from \"../utils/shortenAddress\";\n\nimport { Icon } from \"./Icon\";\n\nconst select = ({ accountBalance, lusdBalance, lqtyBalance }: LiquityStoreState) => ({\n accountBalance,\n lusdBalance,\n lqtyBalance\n});\n\nexport const UserAccount: React.FC = () => {\n const { account } = useLiquity();\n const { accountBalance, lusdBalance, lqtyBalance } = useLiquitySelector(select);\n\n return (\n \n \n \n \n Connected as\n \n {shortenAddress(account)}\n \n \n \n\n \n \n\n {([\n [\"ETH\", accountBalance],\n [COIN, lusdBalance],\n [GT, lqtyBalance]\n ] as const).map(([currency, balance], i) => (\n \n {currency}\n {balance.prettify()}\n \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 { 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 = ({ name, tooltip, children }) => {\n return (\n \n \n {name}\n {tooltip && {tooltip}} />}\n \n {children}\n \n );\n};\n","import React from \"react\";\nimport { Card, Heading, Link, Box, Text } from \"theme-ui\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { Decimal, Percent, LiquityStoreState } from \"@liquity/lib-base\";\nimport { useLiquitySelector } from \"@liquity/lib-react\";\n\nimport { useLiquity } from \"../hooks/LiquityContext\";\nimport { COIN, GT } from \"../strings\";\nimport { Statistic } from \"./Statistic\";\n\nconst selectBalances = ({ accountBalance, lusdBalance, lqtyBalance }: LiquityStoreState) => ({\n accountBalance,\n lusdBalance,\n lqtyBalance\n});\n\nconst Balances: React.FC = () => {\n const { accountBalance, lusdBalance, lqtyBalance } = useLiquitySelector(selectBalances);\n\n return (\n \n My Account Balances\n {accountBalance.prettify(4)}\n {lusdBalance.prettify()}\n {lqtyBalance.prettify()}\n \n );\n};\n\nconst GitHubCommit: React.FC<{ children?: string }> = ({ children }) =>\n children?.match(/[0-9a-f]{40}/) ? (\n {children.substr(0, 7)}\n ) : (\n <>unknown\n );\n\ntype SystemStatsProps = {\n variant?: string;\n showBalances?: boolean;\n};\n\nconst select = ({\n numberOfTroves,\n price,\n total,\n lusdInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLQTY,\n frontend\n}: LiquityStoreState) => ({\n numberOfTroves,\n price,\n total,\n lusdInStabilityPool,\n borrowingRate,\n redemptionRate,\n totalStakedLQTY,\n kickbackRate: frontend.status === \"registered\" ? frontend.kickbackRate : null\n});\n\nexport const SystemStats: React.FC = ({ variant = \"info\", showBalances }) => {\n const {\n liquity: {\n connection: { version: contractsVersion, deploymentDate, frontendTag }\n }\n } = useLiquity();\n\n const {\n numberOfTroves,\n price,\n lusdInStabilityPool,\n total,\n borrowingRate,\n totalStakedLQTY,\n kickbackRate\n } = useLiquitySelector(select);\n\n const lusdInStabilityPoolPct =\n total.debt.nonZero && new Percent(lusdInStabilityPool.div(total.debt));\n const totalCollateralRatioPct = new Percent(total.collateralRatio(price));\n const borrowingFeePct = new Percent(borrowingRate);\n const kickbackRatePct = frontendTag === AddressZero ? \"100\" : kickbackRate?.mul(100).prettify();\n\n return (\n \n {showBalances && }\n\n Liquity statistics\n\n \n Protocol\n \n\n \n {borrowingFeePct.toString(2)}\n \n\n \n {total.collateral.shorten()}  ETH\n \n  (${Decimal.from(total.collateral.mul(price)).shorten()})\n \n \n \n {Decimal.from(numberOfTroves).prettify(0)}\n \n \n {total.debt.shorten()}\n \n {lusdInStabilityPoolPct && (\n \n {lusdInStabilityPool.shorten()}\n  ({lusdInStabilityPoolPct.toString(1)})\n \n )}\n \n {totalStakedLQTY.shorten()}\n \n \n {totalCollateralRatioPct.prettify()}\n \n \n {total.collateralRatioIsBelowCritical(price) ? Yes : \"No\"}\n \n {}\n\n \n Frontend\n \n {kickbackRatePct && (\n \n {kickbackRatePct}%\n \n )}\n\n \n \n Contracts version: {contractsVersion}\n \n Deployed: {deploymentDate.toLocaleString()}\n \n Frontend version:{\" \"}\n {process.env.NODE_ENV === \"development\" ? (\n \"development\"\n ) : (\n {process.env.REACT_APP_VERSION}\n )}\n \n \n \n );\n};\n","import React, { useState, useRef } from \"react\";\nimport { Container, Flex, Button } from \"theme-ui\";\n\nimport { LiquityStoreState } from \"@liquity/lib-base\";\nimport { useLiquitySelector } from \"@liquity/lib-react\";\n\nimport { Icon } from \"./Icon\";\nimport { SystemStats } from \"./SystemStats\";\n\nconst select = ({ total, price }: LiquityStoreState) => ({ total, price });\n\nexport const SystemStatsPopup: React.FC = () => {\n const { price, total } = useLiquitySelector(select);\n\n const [systemStatsOpen, setSystemStatsOpen] = useState(false);\n const systemStatsOverlayRef = useRef(null);\n\n return (\n <>\n setSystemStatsOpen(!systemStatsOpen)}\n variant=\"icon\"\n sx={{\n position: \"relative\",\n display: [\"block\", \"none\"]\n }}\n >\n \n\n {total.collateralRatioIsBelowCritical(price) && (\n \n \n \n )}\n \n\n {systemStatsOpen && (\n {\n if (e.target === systemStatsOverlayRef.current) {\n setSystemStatsOpen(false);\n }\n }}\n >\n \n \n )}\n \n );\n};\n","import React from \"react\";\nimport { Box, Image } from \"theme-ui\";\n\ntype LiquityLogoProps = React.ComponentProps & {\n height?: number | string;\n};\n\nexport const LiquityLogo: React.FC = ({ height, ...boxProps }) => (\n \n \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 { Flex, Box } from \"theme-ui\";\nimport { Link } from \"./Link\";\n\nexport const Nav: React.FC = () => {\n return (\n \n \n Dashboard\n Farm\n \n \n \n Risky Troves\n \n \n Redemption\n \n \n \n );\n};\n","import React, { useState, useRef } from \"react\";\nimport { Box, Button, Container, Flex } from \"theme-ui\";\nimport { Icon } from \"./Icon\";\nimport { LiquityLogo } from \"./LiquityLogo\";\nimport { Link } from \"./Link\";\n\nconst logoHeight = \"32px\";\n\nexport const SideNav: React.FC = () => {\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(false);\n }\n }}\n >\n \n setIsVisible(false)}\n >\n \n \n \n setIsVisible(false)}>\n Dashboard\n Farm\n Risky Troves\n Redemption\n \n \n \n );\n};\n","import React from \"react\";\nimport { LiquityStoreState } from \"@liquity/lib-base\";\nimport { useLiquitySelector } from \"@liquity/lib-react\";\nimport { Container, Flex, Box } from \"theme-ui\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { useLiquity } from \"../hooks/LiquityContext\";\n\nimport { LiquityLogo } from \"./LiquityLogo\";\nimport { Nav } from \"./Nav\";\nimport { SideNav } from \"./SideNav\";\n\nconst logoHeight = \"32px\";\n\nconst select = ({ frontend }: LiquityStoreState) => ({\n frontend\n});\n\nexport const Header: React.FC = ({ children }) => {\n const {\n config: { frontendTag }\n } = useLiquity();\n const { frontend } = useLiquitySelector(select);\n const isFrontendRegistered = frontendTag === AddressZero || frontend.status === \"registered\";\n\n return (\n \n \n \n\n \n {isFrontendRegistered && (\n <>\n \n