{"version":3,"sources":["../../index.ts","../../../src/EthersLiquityConnection.ts","../../../src/Decimal.ts","../../../src/_utils.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/Stability/context/fetchLqtyPrice.ts","components/InfoIcon.tsx","components/Statistic.tsx","components/SystemStats.tsx","components/SystemStatsPopup.tsx","components/LiquityLogo.tsx","components/MenuLink.tsx","components/Nav.tsx","components/Link.tsx","components/SideNav.tsx","components/Header.tsx","components/InfoMessage.tsx","components/Farm/context/FarmViewContext.tsx","components/Farm/views/RemainingLQTY.tsx","components/Farm/views/Inactive/Inactive.tsx","components/Trove/Editor.tsx","components/LoadingOverlay.tsx","components/Farm/context/useValidationState.ts","components/Farm/views/Confirm.tsx","components/ActionDescription.tsx","components/Farm/views/Description.tsx","components/Farm/views/Approve.tsx","components/ErrorDescription.tsx","components/Farm/views/Validation.tsx","components/Farm/views/Staking/Staking.tsx","components/Farm/views/Adjusting/Adjusting.tsx","components/Farm/views/Active/ClaimReward.tsx","components/Farm/views/UnstakeAndClaim.tsx","components/Farm/views/Active/Active.tsx","components/Farm/views/Disabled/Disabled.tsx","components/Farm/Farm.tsx","pages/Farm.tsx","components/LiquidationManager.tsx","components/Abbreviation.tsx","components/RiskyTroves.tsx","pages/RiskyTrovesPage.tsx","components/Trove/CollateralRatio.tsx","components/Trove/TroveEditor.tsx","components/Trove/TroveAction.tsx","components/Trove/context/TroveViewContext.tsx","components/Trove/validation/useCollateralValidationState.ts","components/Trove/validation/Approve.tsx","components/Trove/validation/validateTroveChange.tsx","components/Trove/TroveManager.tsx","components/Trove/ReadOnlyTrove.tsx","components/Trove/NoTrove.tsx","hooks/useStableTroveChange.ts","components/Warning.tsx","components/Trove/ExpensiveTroveChangeWarning.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/ClaimRewards.tsx","components/Stability/RemainingLQTY.tsx","components/Stability/ActiveDeposit.tsx","components/Stability/NoDeposit.tsx","components/Stability/Stability.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/StakingPage.tsx","pages/StabilityPoolPage.tsx","pages/TrovePage.tsx","pages/StatsPage.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":["__exportStar","exports","WebSocketProvider","overrides","a","LiquityStore","readable","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","LiquityProvider","children","loader","unsupportedNetworkFallback","unsupportedMainnetFallback","useWeb3React","provider","library","account","chainId","useState","setConfig","collateral","setCollateral","connection","useMemo","getSigner","_connectByChainId","userAddress","useStore","useEffect","then","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","name","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","window","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","includes","Transaction","tooltip","tooltipPlacement","showFailure","requires","sendTransaction","trigger","failureReasons","filter","map","push","clonedTrigger","length","disabled","tryToGetRevertReason","call","blockNumber","result","hexDataLength","hexDataSlice","defaultAbiCoder","decode","Donut","memo","CircularProgressbarWithChildren","TransactionProgressDonut","setValue","maxValue","spin","TransactionMonitor","cancelled","finished","txHash","rawSentTransaction","hash","waitForConfirmation","waitForReceipt","receipt","confirmations","rawReceipt","reason","EthersTransactionCancelledError","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","fetchMSTPrice","data","lqtyPriceUSD","fetchMSTMcap","MstMcapUSD","fetchMeridianTVL","TVLUSD","InfoIcon","interactive","content","Statistic","selectBalances","numberOfTroves","price","total","lusdInStabilityPool","borrowingRate","redemptionRate","totalStakedLQTY","frontend","kickbackRate","SystemStats","showBalances","version","deploymentDate","setLqtyPrice","setMSTMcap","setTVLUSD","Balances","lusdInStabilityPoolPct","debt","nonZero","Percent","div","totalCollateralRatioPct","collateralRatio","borrowingFeePct","mul","toString","shorten","shorten_4","collateralRatioIsBelowCritical","SystemStatsPopup","systemStatsOpen","setSystemStatsOpen","systemStatsOverlayRef","pt","e","LiquityLogo","boxProps","rel","src","ExactLink","props","exact","MenuLink","startsWith","paddingLeft","Nav","Link","navItemStyle","SideNav","isVisible","setIsVisible","overlay","Header","isFrontendRegistered","paddingRight","transform","InfoMessage","FarmViewContext","useFarmView","context","selector","remainingLiquidityMiningLQTYReward","RemainingLQTY","Inactive","dispatchEvent","addresses","handleStakePressed","Row","labelId","labelFor","infoIcon","htmlFor","PendingAmount","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","uniTokenBalance","uniTokenAllowance","liquidityMiningStake","useValidationState","isWithdrawing","gt","amountChanged","sub","maximumStake","hasSetMaximumStake","eq","isValid","hasApproved","hasEnoughUniToken","isZero","gte","transactionId","Confirm","transactionAction","unstakeUniTokens","bind","stakeUniTokens","shouldDisable","ActionDescription","Amount","whiteSpace","Description","Approve","approveUniTokens","ErrorDescription","Validation","totalStakedUniTokens","Staking","setAmount","isDirty","isTransactionPending","handleCancelPressed","nextTotalStakedUniTokens","poolShare","mulDiv","infinite","liquidityMiningLQTYReward","Adjusting","maximumAmount","hasSetMaximumAmount","originalPoolShare","poolShareChange","Difference","between","concat","positive","ClaimReward","withdrawLQTYRewardFromLiquidityMining","UnstakeAndClaim","exitLiquidityMining","Active","handleAdjustPressed","hasStakeAndRewards","Disabled","hasStake","Farm","view","LiquidationManager","numberOfTrovesToLiquidate","setNumberOfTrovesToLiquidate","min","liquidateUpTo","parseInt","Abbreviation","short","rowHeight","liquidatableInNormalMode","trove","collateralRatioIsBelowMinimum","liquidatableInRecoveryMode","totalCollateralRatio","MINIMUM_COLLATERAL_RATIO","lt","lte","blockTag","recoveryMode","RiskyTroves","pageSize","loading","setLoading","troves","setTroves","reload","setReload","forceReload","page","setPage","numberOfPages","Math","ceil","clampedPage","mounted","getTroves","first","sortedBy","startingAt","copied","setCopied","isEmpty","ownerAddress","onCopy","CRITICAL_COLLATERAL_RATIO","liquidate","RiskyTrovesPage","CollateralRatio","change","collateralRatioPct","changePct","absoluteValue","negative","nonZeroish","TroveEditor","original","edited","fee","changePending","collateral_tag","feePct","originalCollateralRatio","collateralRatioChange","LUSD_LIQUIDATION_RESERVE","TroveAction","maxBorrowingRate","borrowingFeeDecayToleranceMinutes","openTrove","closeTrove","adjustTrove","TroveViewContext","useTroveView","collateralAllowance","useCollateralValidationState","hasEnoughCollateralToken","hasEnoughCollateral","approveCollateralTokens","mcrPercent","ccrPercent","TroveChangeDescription","depositCollateral","borrowLUSD","repayLUSD","withdrawCollateral","selectForTroveChangeValidation","validateTroveChange","originalTrove","adjustedTrove","selectedState","whatChanged","resultingTrove","apply","wouldTriggerRecoveryMode","subtract","LUSD_MINIMUM_DEBT","errorDescription","validateTroveCreation","validateTroveClosure","validateTroveAdjustment","LUSD_MINIMUM_NET_DEBT","isOpenableInRecoveryMode","init","Trove","debtDirty","addedMinimumDebt","reduceWith","reduce","addMinimumDebt","removeMinimumDebt","finishChange","revert","newCollateral","newValue","newState","setDebt","changeCommitted","stateChange","troveBeforeRedistribution","feeFrom","ZERO","fees","validationContext","transactionIdPrefix","transactionIdMatcher","RegExp","TroveManager","useLiquityReducer","isIncreasing","validChange","description","handleCancel","openingNewTrove","myTransactionState","ReadOnlyTrove","handleAdjustTrove","handleCloseTrove","NoTrove","handleOpenTrove","paramsEq","b","useStableTroveChange","troveChange","stableTroveChange","setStableTroveChange","Warning","ExpensiveTroveChangeWarning","gasEstimationState","setGasEstimationState","timeoutId","populate","populatedTx","rawPopulatedTransaction","clearTimeout","gasHeadroom","EMPTY_TROVE","TRANSACTION_ID","GAS_ROOM_ETH","Opening","borrowAmount","setBorrowAmount","totalDebt","maxCollateral","collateralMaxedOut","reset","previousTrove","netDebt","setNetDebt","nextCollateral","unsavedChanges","applyUnsavedCollateralChanges","nextNetDebt","applyUnsavedNetDebtChanges","isDebtIncrease","debtIncreaseAmount","updatedTrove","availableEth","collateralSurplusBalance","CollateralSurplusAction","myTransactionId","claimCollateralSurplus","hasSurplusCollateral","RedeemedTrove","LiquidatedTrove","StabilityDepositEditor","originalDeposit","editedLUSD","currentLUSD","lusdInStabilityPoolAfterChange","newPoolShare","collateralGain","selectFrontendRegistered","StabilityDepositAction","depositLUSD","depositLUSDInStabilityPool","withdrawLUSDFromStabilityPool","withdrawLUSD","StabilityViewContext","useStabilityView","StabilityActionDescription","lqtyReward","selectForStabilityDepositChangeValidation","ownFrontend","haveUndercollateralizedTroves","haveOwnFrontend","stabilityDeposit","updatedDeposit","initialLUSD","StabilityDepositManager","validateStabilityDepositChange","makingNewDeposit","ClaimRewards","withdrawGainsFromStabilityPool","remainingStabilityPoolLQTYReward","ActiveDeposit","handleAdjustDeposit","hasReward","hasGain","isWaitingForTransaction","NoDeposit","Stability","StakingViewContext","useStakingView","selectLQTYStake","lqtyStake","StakingGainsAction","lusdGain","withdrawGainsFromStaking","ReadOnlyStake","stakedLQTY","StakingEditor","originalStake","editedLQTY","totalStakedLQTYAfterChange","StakingManagerAction","stakeLQTY","unstakeLQTY","updatedStake","selectLQTYBalance","StakingManagerActionDescription","StakingManager","dispatchStakingViewAction","makingNewStake","NoStake","StakingPage","activeTab","renderContent","StabilityPoolPage","TrovePage","StatsPage","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","marginLeft","marginRight","path","autoRefreshOnNetworkChange","process","REACT_APP_DEMO_MODE","location","hostname","EthersWeb3ReactProvider","getLibrary","BatchedWebSocketAugmentedWeb3Provider","UnsupportedMainnetFallback","App","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.e86d6a02.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 });\n__exportStar(require(\"./src/BatchedProvider\"), exports);\n__exportStar(require(\"./src/WebSocketAugmentedProvider\"), exports);\n__exportStar(require(\"./src/WebSocketProvider\"), 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 telos_mainnet_json_1 = __importDefault(require(\"../deployments/telos_mainnet.json\"));\nconst telos_testnet_json_1 = __importDefault(require(\"../deployments/telos_testnet.json\"));\nconst fuse_testnet_json_1 = __importDefault(require(\"../deployments/fuse_testnet.json\"));\nconst base_mainnet_json_1 = __importDefault(require(\"../deployments/base_mainnet.json\"));\nconst mainnet_json_1 = __importDefault(require(\"../deployments/mainnet.json\"));\nconst _utils_1 = require(\"./_utils\");\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.chainId]: ropsten,\n // [rinkeby.chainId]: rinkeby,\n [telos_mainnet_json_1.default.chainId]: telos_mainnet_json_1.default,\n [telos_testnet_json_1.default.chainId]: telos_testnet_json_1.default,\n [base_mainnet_json_1.default.chainId]: base_mainnet_json_1.default,\n [fuse_testnet_json_1.default.chainId]: fuse_testnet_json_1.default,\n // [goerli.chainId]: goerli,\n // [kovan.chainId]: kovan,\n // [kiln.chainId]: kiln,\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 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(_utils_1.numberify)) !== null && _b !== void 0 ? _b : exports._getProvider(connection).getBlock(blockTag).then(getTimestampFromBlock); };\nexports._getBlockTimestamp = _getBlockTimestamp;\n/** @internal */\nconst _requireSigner = (connection) => { var _a; return (_a = connection.signer) !== null && _a !== void 0 ? _a : _utils_1.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 : _utils_1.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 : _utils_1.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 : _utils_1.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 : _utils_1.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 shorten_4(decimalPlaces) {\n // ... (previous code remains unchanged)\n const characteristicLength = this.toString(0).length;\n const magnitude = Math.min(Math.floor((characteristicLength - 1) / 3), magnitudes.length - 1);\n // Increase the precision by setting the decimal places\n const normalized = this.div(new Decimal(getDigits(PRECISION + 3 * magnitude)));\n // Format the normalized number with the increased decimal places\n return normalized.prettify(decimalPlaces) + 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.promiseAllValues = exports.panic = exports.decimalify = exports.numberify = void 0;\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst numberify = (bigNumber) => bigNumber.toNumber();\nexports.numberify = numberify;\nconst decimalify = (bigNumber) => lib_base_1.Decimal.fromBigNumberString(bigNumber.toHexString());\nexports.decimalify = decimalify;\nconst panic = (e) => {\n throw e;\n};\nexports.panic = panic;\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};\nexports.promiseAllValues = promiseAllValues;\n//# sourceMappingURL=_utils.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(20);\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(180);\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 bytes_1 = require(\"@ethersproject/bytes\");\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(\n // geth\n \"header not found\") ||\n error.message.includes(\n // openethereum\n \"request is not supported because your node is running with state pruning\"));\nconst isTransactionHash = (eventName) => typeof eventName === \"string\" && bytes_1.hexDataLength(eventName) === 32;\nconst loadBalancingGlitchRetryIntervalMs = 200;\nconst delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));\nconst waitFor = (f) => (g) => (t, { isActive }) => {\n f(t).then(u => {\n if (u !== null && isActive()) {\n g(u);\n }\n });\n};\nconst pass = (f) => (t, _) => {\n f(t);\n};\nconst passOnce = (f) => (t, { removeMe }) => {\n f(t);\n removeMe();\n};\nconst sequence = (f, g) => (h) => (t, context) => {\n f(u => g(h)(u, context))(t, context);\n};\nconst defer = (f) => (t) => {\n setTimeout(() => {\n f(t);\n }, 0);\n};\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 Map();\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 _wrap(f, g) {\n return [\n f,\n (u) => g(defer(f))(u, {\n isActive: () => this._blockListeners.has(f),\n removeMe: () => this._blockListeners.delete(f)\n })\n ];\n }\n on(eventName, listener) {\n if (isTransactionHash(eventName)) {\n const fetchReceipt = this._getTransactionReceiptFromLatest.bind(this, eventName);\n const [, passReceipt] = this._wrap(listener, waitFor(fetchReceipt));\n passReceipt(undefined);\n return this._addBlockListener(listener, passReceipt);\n }\n else if (eventName === \"block\") {\n return this._addBlockListener(...this._wrap(listener, pass));\n }\n else {\n return super.on(eventName, listener);\n }\n }\n _addBlockListener(key, blockListener) {\n if (!this._blockListeners.has(key)) {\n this._blockListeners.set(key, blockListener);\n if (this._blockListeners.size === 1) {\n this._startBlockEvents();\n }\n }\n return this;\n }\n once(eventName, listener) {\n if (isTransactionHash(eventName)) {\n const fetchReceipt = this._getTransactionReceiptFromLatest.bind(this, eventName);\n const [, passReceiptOnce] = this._wrap(listener, sequence(waitFor(fetchReceipt), passOnce));\n passReceiptOnce(undefined);\n return this._addBlockListener(listener, passReceiptOnce);\n }\n else if (eventName === \"block\") {\n return this._addBlockListener(...this._wrap(listener, passOnce));\n }\n else {\n return super.once(eventName, listener);\n }\n }\n off(eventName, listener) {\n if (isTransactionHash(eventName) || eventName === \"block\") {\n return this._removeBlockListener(listener);\n }\n else {\n return super.off(eventName, listener);\n }\n }\n _removeBlockListener(key) {\n if (this._blockListeners.has(key)) {\n this._blockListeners.delete(key);\n if (this._blockListeners.size === 0) {\n this._stopBlockEvents();\n }\n }\n return this;\n }\n async getTransaction(transactionHash) {\n var _a, _b;\n const txPromises = [\n super.getTransaction(transactionHash),\n ...(((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? [this._wsProvider.getTransaction(transactionHash)] : [])\n ];\n const first = await Promise.race(txPromises);\n const tx = (_b = first !== null && first !== void 0 ? first : (await Promise.all(txPromises)).find(tx => tx !== null)) !== null && _b !== void 0 ? _b : null;\n return tx;\n }\n getTransactionReceipt(transactionHash) {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.getTransactionReceipt(transactionHash)\n : super.getTransactionReceipt(transactionHash);\n }\n getTransactionCount(addressOrName, blockTag) {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.getTransactionCount(addressOrName, blockTag)\n : super.getTransactionCount(addressOrName, blockTag);\n }\n getBlock(blockHashOrBlockTag) {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.getBlock(blockHashOrBlockTag)\n : super.getBlock(blockHashOrBlockTag);\n }\n getBlockWithTransactions(blockHashOrBlockTag) {\n var _a;\n return ((_a = this._wsProvider) === null || _a === void 0 ? void 0 : _a.isReady) ? this._wsProvider.getBlockWithTransactions(blockHashOrBlockTag)\n : super.getBlockWithTransactions(blockHashOrBlockTag);\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 collateralToken: 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 _utils_1 = require(\"./_utils\");\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 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 : _utils_1.panic(new Error(`invalid backendStatus ${backendStatus}`));\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(_utils_1.decimalify),\n troveManager.L_LUSDDebt({ ...overrides }).then(_utils_1.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), _utils_1.decimalify(trove.coll), _utils_1.decimalify(trove.debt), _utils_1.decimalify(trove.stake), new lib_base_1.Trove(_utils_1.decimalify(snapshot.ETH), _utils_1.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(_utils_1.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(_utils_1.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(_utils_1.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(_utils_1.decimalify(initialValue), _utils_1.decimalify(currentLUSD), _utils_1.decimalify(collateralGain), _utils_1.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 = _utils_1.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(_utils_1.decimalify);\n }\n // JJ new function\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getErc20CollBalance} */\n getErc20CollBalance(address, overrides) {\n console.log(\" Get baqlance 1\");\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n const { collateralToken } = EthersLiquityConnection_1._getContracts(this.connection);\n return collateralToken.balanceOf(address, { ...overrides }).then(_utils_1.decimalify);\n }\n // JJ new function\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getErc20CollAllowance} */\n getErc20CollAllowance(address, overrides) {\n address !== null && address !== void 0 ? address : (address = EthersLiquityConnection_1._requireAddress(this.connection));\n console.log(\"Step 1\"); // JJ\n const { collateralToken, borrowerOperations } = EthersLiquityConnection_1._getContracts(this.connection);\n const currentAllowance = collateralToken.allowance(address, borrowerOperations.address, { ...overrides }).then(_utils_1.decimalify);\n console.log(\"Step 1 Getting the allowance for user \", address, \" for contract \", borrowerOperations.address); // JJ\n return currentAllowance;\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(_utils_1.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(_utils_1.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(_utils_1.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, lqtyStaking } = EthersLiquityConnection_1._getContracts(this.connection);\n return uniToken.allowance(address, lqtyStaking.address, { ...overrides }).then(_utils_1.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(_utils_1.decimalify),\n unipool.periodFinish({ ...overrides }).then(_utils_1.numberify),\n unipool.lastUpdateTime({ ...overrides }).then(_utils_1.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 this._getBlockTimestamp(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(_utils_1.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(_utils_1.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(_utils_1.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(_utils_1.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 _getBlockTimestamp(blockTag) {\n return EthersLiquityConnection_1._getBlockTimestamp(this.connection, blockTag);\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(_utils_1.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 this._getBlockTimestamp(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(_utils_1.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(_utils_1.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: _utils_1.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\n_utils_1.decimalify(trove.coll), _utils_1.decimalify(trove.debt), _utils_1.decimalify(trove.stake), new lib_base_1.Trove(_utils_1.decimalify(trove.snapshotETH), _utils_1.decimalify(trove.snapshotLUSDDebt))));\nclass _BlockPolledReadableEthersLiquity {\n constructor(readable) {\n const store = new BlockPolledLiquityStore_1.BlockPolledLiquityStore(readable);\n this.store = store;\n this.connection = readable.connection;\n this._readable = readable;\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 hasStore(store) {\n return store === undefined || store === \"blockPolled\";\n }\n async getTotalRedistributed(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.totalRedistributed\n : this._readable.getTotalRedistributed(overrides);\n }\n async getTroveBeforeRedistribution(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.troveBeforeRedistribution\n : this._readable.getTroveBeforeRedistribution(address, overrides);\n }\n async getTrove(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.trove\n : this._readable.getTrove(address, overrides);\n }\n async getNumberOfTroves(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.numberOfTroves\n : this._readable.getNumberOfTroves(overrides);\n }\n async getPrice(overrides) {\n return this._blockHit(overrides) ? this.store.state.price : this._readable.getPrice(overrides);\n }\n async getTotal(overrides) {\n return this._blockHit(overrides) ? this.store.state.total : this._readable.getTotal(overrides);\n }\n async getStabilityDeposit(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.stabilityDeposit\n : this._readable.getStabilityDeposit(address, overrides);\n }\n async getRemainingStabilityPoolLQTYReward(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.remainingStabilityPoolLQTYReward\n : this._readable.getRemainingStabilityPoolLQTYReward(overrides);\n }\n async getLUSDInStabilityPool(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.lusdInStabilityPool\n : this._readable.getLUSDInStabilityPool(overrides);\n }\n // JJ\n async getErc20CollBalance(address, overrides) {\n console.log(\"andanother async\"); // JJ\n return this._userHit(address, overrides)\n ? this.store.state.accountBalance\n : this._readable.getErc20CollBalance(address, overrides);\n }\n // JJ\n async getErc20CollAllowance(address, overrides) {\n console.log(\"About to do async\"); // JJ\n return this._userHit(address, overrides)\n ? this.store.state.collateralAllowance\n : this._readable.getErc20CollAllowance(address, overrides);\n }\n async getLUSDBalance(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.lusdBalance\n : this._readable.getLUSDBalance(address, overrides);\n }\n async getLQTYBalance(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.lqtyBalance\n : this._readable.getLQTYBalance(address, overrides);\n }\n async getUniTokenBalance(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.uniTokenBalance\n : this._readable.getUniTokenBalance(address, overrides);\n }\n async getUniTokenAllowance(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.uniTokenAllowance\n : this._readable.getUniTokenAllowance(address, overrides);\n }\n async getRemainingLiquidityMiningLQTYReward(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.remainingLiquidityMiningLQTYReward\n : this._readable.getRemainingLiquidityMiningLQTYReward(overrides);\n }\n async getLiquidityMiningStake(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.liquidityMiningStake\n : this._readable.getLiquidityMiningStake(address, overrides);\n }\n async getTotalStakedUniTokens(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.totalStakedUniTokens\n : this._readable.getTotalStakedUniTokens(overrides);\n }\n async getLiquidityMiningLQTYReward(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.liquidityMiningLQTYReward\n : this._readable.getLiquidityMiningLQTYReward(address, overrides);\n }\n async getCollateralSurplusBalance(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.collateralSurplusBalance\n : this._readable.getCollateralSurplusBalance(address, overrides);\n }\n async _getBlockTimestamp(blockTag) {\n return this._blockHit({ blockTag })\n ? this.store.state.blockTimestamp\n : this._readable._getBlockTimestamp(blockTag);\n }\n async _getFeesFactory(overrides) {\n return this._blockHit(overrides)\n ? this.store.state._feesFactory\n : this._readable._getFeesFactory(overrides);\n }\n async getFees(overrides) {\n return this._blockHit(overrides) ? this.store.state.fees : this._readable.getFees(overrides);\n }\n async getLQTYStake(address, overrides) {\n return this._userHit(address, overrides)\n ? this.store.state.lqtyStake\n : this._readable.getLQTYStake(address, overrides);\n }\n async getTotalStakedLQTY(overrides) {\n return this._blockHit(overrides)\n ? this.store.state.totalStakedLQTY\n : this._readable.getTotalStakedLQTY(overrides);\n }\n async getFrontendStatus(address, overrides) {\n return this._frontendHit(address, overrides)\n ? this.store.state.frontend\n : this._readable.getFrontendStatus(address, overrides);\n }\n getTroves(params, overrides) {\n return this._readable.getTroves(params, overrides);\n }\n _getActivePool() {\n throw new Error(\"Method not implemented.\");\n }\n _getDefaultPool() {\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 _utils_1 = require(\"./_utils\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\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, _feesFactory, calculateRemainingLQTY, ...baseState } = await _utils_1.promiseAllValues({\n blockTimestamp: this._readable._getBlockTimestamp(blockTag),\n _feesFactory: this._readable._getFeesFactory({ blockTag }),\n calculateRemainingLQTY: this._readable._getRemainingLiquidityMiningLQTYRewardCalculator({ blockTag }),\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 // accountBalance: this._readable.getErc20Balance(userAddress, this._provider, { blockTag }).then(decimalify), // JJ gets erc20 balance instead of eth\n accountBalance: this._readable.getErc20CollBalance(userAddress, { blockTag }),\n collateralAllowance: this._readable.getErc20CollAllowance(userAddress, { blockTag }),\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 collateralAllowance: 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: _feesFactory(blockTimestamp, false),\n remainingLiquidityMiningLQTYReward: calculateRemainingLQTY(blockTimestamp)\n },\n {\n blockTag,\n blockTimestamp,\n _feesFactory\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, _c;\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 _feesFactory: (_c = stateUpdate._feesFactory) !== null && _c !== void 0 ? _c : oldState._feesFactory\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.EthersTransactionCancelledError = exports._RawErrorReason = exports._redeemMaxIterations = void 0;\nconst assert_1 = __importDefault(require(\"assert\"));\nconst constants_1 = require(\"@ethersproject/constants\");\nconst logger_1 = require(\"@ethersproject/logger\");\nconst lib_base_1 = require(\"@liquity/lib-base\");\nconst EthersLiquityConnection_1 = require(\"./EthersLiquityConnection\");\nconst _utils_1 = require(\"./_utils\");\nconst contracts_1 = require(\"./contracts\");\nconst parseLogs_1 = require(\"./parseLogs\");\nconst bigNumberMax = (a, b) => ((b === null || b === void 0 ? void 0 : b.gt(a)) ? b : a);\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 defaultBorrowingFeeDecayToleranceMinutes = 10;\nconst noDetails = () => undefined;\nconst compose = (f, g) => (_) => f(g(_));\nconst id = (t) => t;\n// Takes ~6-7K (use 10K to be safe) to update lastFeeOperationTime, but the cost of calculating the\n// decayed baseRate increases logarithmically with time elapsed since the last update.\nconst addGasForBaseRateUpdate = (maxMinutesSinceLastUpdate = 10) => (gas) => gas.add(10000 + 1414 * Math.ceil(Math.log2(maxMinutesSinceLastUpdate + 1)));\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/** @internal */\nvar _RawErrorReason;\n(function (_RawErrorReason) {\n _RawErrorReason[\"TRANSACTION_FAILED\"] = \"transaction failed\";\n _RawErrorReason[\"TRANSACTION_CANCELLED\"] = \"cancelled\";\n _RawErrorReason[\"TRANSACTION_REPLACED\"] = \"replaced\";\n _RawErrorReason[\"TRANSACTION_REPRICED\"] = \"repriced\";\n})(_RawErrorReason = exports._RawErrorReason || (exports._RawErrorReason = {}));\nconst transactionReplacementReasons = [\n _RawErrorReason.TRANSACTION_CANCELLED,\n _RawErrorReason.TRANSACTION_REPLACED,\n _RawErrorReason.TRANSACTION_REPRICED\n];\nconst hasProp = (o, p) => p in o;\nconst isTransactionFailedError = (error) => hasProp(error, \"code\") &&\n error.code === logger_1.ErrorCode.CALL_EXCEPTION &&\n hasProp(error, \"reason\") &&\n error.reason === _RawErrorReason.TRANSACTION_FAILED;\nconst isTransactionReplacedError = (error) => hasProp(error, \"code\") &&\n error.code === logger_1.ErrorCode.TRANSACTION_REPLACED &&\n hasProp(error, \"reason\") &&\n transactionReplacementReasons.includes(error.reason);\n/**\n * Thrown when a transaction is cancelled or replaced by a different transaction.\n *\n * @public\n */\nclass EthersTransactionCancelledError extends Error {\n /** @internal */\n constructor(rawError) {\n assert_1.default(rawError.reason !== _RawErrorReason.TRANSACTION_REPRICED);\n super(`Transaction ${rawError.reason}`);\n this.name = \"TransactionCancelledError\";\n this.rawReplacementReceipt = rawError.receipt;\n this.rawError = rawError;\n }\n}\nexports.EthersTransactionCancelledError = EthersTransactionCancelledError;\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 async _waitForRawReceipt(confirmations) {\n try {\n return await this.rawSentTransaction.wait(confirmations);\n }\n catch (error) {\n if (error instanceof Error) {\n if (isTransactionFailedError(error)) {\n return error.receipt;\n }\n if (isTransactionReplacedError(error)) {\n if (error.cancelled) {\n throw new EthersTransactionCancelledError(error);\n }\n else {\n return error.receipt;\n }\n }\n }\n throw error;\n }\n }\n /** {@inheritDoc @liquity/lib-base#SentLiquityTransaction.getReceipt} */\n async getReceipt() {\n return this._receiptFrom(await this._waitForRawReceipt(0));\n }\n /**\n * {@inheritDoc @liquity/lib-base#SentLiquityTransaction.waitForReceipt}\n *\n * @throws\n * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\n */\n async waitForReceipt() {\n const receipt = this._receiptFrom(await this._waitForRawReceipt());\n assert_1.default(receipt.status !== \"pending\");\n return receipt;\n }\n}\nexports.SentEthersLiquityTransaction = SentEthersLiquityTransaction;\nconst normalizeBorrowingOperationOptionalParams = (maxBorrowingRateOrOptionalParams, currentBorrowingRate) => {\n var _a, _b;\n if (maxBorrowingRateOrOptionalParams === undefined) {\n return {\n maxBorrowingRate: (_a = currentBorrowingRate === null || currentBorrowingRate === void 0 ? void 0 : currentBorrowingRate.add(defaultBorrowingRateSlippageTolerance)) !== null && _a !== void 0 ? _a : lib_base_1.Decimal.ZERO,\n borrowingFeeDecayToleranceMinutes: defaultBorrowingFeeDecayToleranceMinutes\n };\n }\n else if (typeof maxBorrowingRateOrOptionalParams === \"number\" ||\n typeof maxBorrowingRateOrOptionalParams === \"string\" ||\n maxBorrowingRateOrOptionalParams instanceof lib_base_1.Decimal) {\n return {\n maxBorrowingRate: lib_base_1.Decimal.from(maxBorrowingRateOrOptionalParams),\n borrowingFeeDecayToleranceMinutes: defaultBorrowingFeeDecayToleranceMinutes\n };\n }\n else {\n const { maxBorrowingRate, borrowingFeeDecayToleranceMinutes } = maxBorrowingRateOrOptionalParams;\n return {\n maxBorrowingRate: maxBorrowingRate !== undefined\n ? lib_base_1.Decimal.from(maxBorrowingRate)\n : (_b = currentBorrowingRate === null || currentBorrowingRate === void 0 ? void 0 : currentBorrowingRate.add(defaultBorrowingRateSlippageTolerance)) !== null && _b !== void 0 ? _b : lib_base_1.Decimal.ZERO,\n borrowingFeeDecayToleranceMinutes: borrowingFeeDecayToleranceMinutes !== null && borrowingFeeDecayToleranceMinutes !== void 0 ? borrowingFeeDecayToleranceMinutes : defaultBorrowingFeeDecayToleranceMinutes\n };\n }\n};\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, gasHeadroom) {\n this.rawPopulatedTransaction = rawPopulatedTransaction;\n this._connection = connection;\n this._parse = parse;\n if (gasHeadroom !== undefined) {\n this.gasHeadroom = gasHeadroom;\n }\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: _utils_1.decimalify(_attemptedLUSDAmount),\n actualLUSDAmount: _utils_1.decimalify(_actualLUSDAmount),\n collateralTaken: _utils_1.decimalify(_ETHSent),\n fee: _utils_1.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, gasHeadroom) {\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(_utils_1.decimalify(_coll), _utils_1.decimalify(_debt)));\n const [fee] = borrowerOperations\n .extractEvents(logs, \"LUSDBorrowingFeePaid\")\n .map(({ args: { _LUSDFee } }) => _utils_1.decimalify(_LUSDFee));\n return {\n params,\n newTrove,\n fee\n };\n }, gasHeadroom);\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 } }) => _utils_1.decimalify(value));\n const [withdrawCollateral] = activePool\n .extractEvents(logs, \"EtherSent\")\n .filter(({ args: { _to } }) => _to === userAddress)\n .map(({ args: { _amount } }) => _utils_1.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: _utils_1.decimalify(_collGasCompensation),\n lusdGasCompensation: _utils_1.decimalify(_LUSDGasCompensation),\n totalLiquidated: new lib_base_1.Trove(_utils_1.decimalify(_liquidatedColl), _utils_1.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 } }) => _utils_1.decimalify(_newDeposit));\n const [[collateralGain, lusdLoss]] = stabilityPool\n .extractEvents(logs, \"ETHGainWithdrawn\")\n .map(({ args: { _ETH, _LUSDLoss } }) => [_utils_1.decimalify(_ETH), _utils_1.decimalify(_LUSDLoss)]);\n const [lqtyReward] = stabilityPool\n .extractEvents(logs, \"LQTYPaidToDepositor\")\n .map(({ args: { _LQTY } }) => _utils_1.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 } }) => _utils_1.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(_utils_1.decimalify(_coll), _utils_1.decimalify(_debt)));\n return {\n ...this._extractStabilityPoolGainsWithdrawalDetails(logs),\n newTrove\n };\n });\n }\n async _findHintsForNominalCollateralRatio(nominalCollateralRatio, ownAddress) {\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 let [prev, next] = await sortedTroves.findInsertPosition(nominalCollateralRatio.hex, hintAddress, hintAddress);\n if (ownAddress) {\n // In the case of reinsertion, the address of the Trove being reinserted is not a usable hint,\n // because it is deleted from the list before the reinsertion.\n // \"Jump over\" the Trove to get the proper hint.\n if (prev === ownAddress) {\n prev = await sortedTroves.getPrev(prev);\n }\n else if (next === ownAddress) {\n next = await sortedTroves.getNext(next);\n }\n }\n // Don't use `address(0)` as hint as it can result in huge gas cost.\n // (See https://github.com/liquity/dev/issues/600).\n if (prev === constants_1.AddressZero) {\n prev = next;\n }\n else if (next === constants_1.AddressZero) {\n next = prev;\n }\n return [prev, next];\n }\n async _findHints(trove, ownAddress) {\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, ownAddress);\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(_utils_1.decimalify(partialRedemptionHintNICR)\n // XXX: if we knew the partially redeemed Trove's address, we'd pass it here\n );\n return [\n _utils_1.decimalify(truncatedLUSDamount),\n firstRedemptionHint,\n partialRedemptionUpperHint,\n partialRedemptionLowerHint,\n partialRedemptionHintNICR\n ];\n }\n /** {@inheritDoc @liquity/lib-base#PopulatableLiquity.openTrove} */\n async openTrove(params, maxBorrowingRateOrOptionalParams, overrides) {\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const normalizedParams = lib_base_1._normalizeTroveCreation(params);\n const { depositCollateral, borrowLUSD } = normalizedParams;\n const [fees, blockTimestamp, total, price] = await Promise.all([\n this._readable._getFeesFactory(),\n this._readable._getBlockTimestamp(),\n this._readable.getTotal(),\n this._readable.getPrice()\n ]);\n const recoveryMode = total.collateralRatioIsBelowCritical(price);\n const decayBorrowingRate = (seconds) => fees(blockTimestamp + seconds, recoveryMode).borrowingRate();\n const currentBorrowingRate = decayBorrowingRate(0);\n const newTrove = lib_base_1.Trove.create(normalizedParams, currentBorrowingRate);\n const hints = await this._findHints(newTrove);\n const { maxBorrowingRate, borrowingFeeDecayToleranceMinutes } = normalizeBorrowingOperationOptionalParams(maxBorrowingRateOrOptionalParams, currentBorrowingRate);\n const txParams = (borrowLUSD) => [\n depositCollateral.hex,\n maxBorrowingRate.hex,\n borrowLUSD.hex,\n ...hints,\n overrides !== null && overrides !== void 0 ? overrides : {}\n ];\n let gasHeadroom;\n if ((overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) === undefined) {\n const decayedBorrowingRate = decayBorrowingRate(60 * borrowingFeeDecayToleranceMinutes);\n const decayedTrove = lib_base_1.Trove.create(normalizedParams, decayedBorrowingRate);\n const { borrowLUSD: borrowLUSDSimulatingDecay } = lib_base_1.Trove.recreate(decayedTrove, currentBorrowingRate);\n if (decayedTrove.debt.lt(lib_base_1.LUSD_MINIMUM_DEBT)) {\n throw new Error(`Trove's debt might fall below ${lib_base_1.LUSD_MINIMUM_DEBT} ` +\n `within ${borrowingFeeDecayToleranceMinutes} minutes`);\n }\n console.log(\"ABOUT to estimate gas with \", txParams(borrowLUSD)); // JJ\n console.log(\"borrowerOperations is \", borrowerOperations); // JJ\n const [gasNow, gasLater] = await Promise.all([\n borrowerOperations.estimateGas.openTrove(...txParams(borrowLUSD)),\n borrowerOperations.estimateGas.openTrove(...txParams(borrowLUSDSimulatingDecay))\n ]);\n const gasLimit = addGasForBaseRateUpdate(borrowingFeeDecayToleranceMinutes)(bigNumberMax(addGasForPotentialListTraversal(gasNow), gasLater));\n gasHeadroom = gasLimit.sub(gasNow).toNumber();\n overrides = { ...overrides, gasLimit };\n }\n console.log(\"ABOUT to call function with \", txParams(borrowLUSD)); // JJ\n return this._wrapTroveChangeWithFees(normalizedParams, await borrowerOperations.populateTransaction.openTrove(...txParams(borrowLUSD)), gasHeadroom);\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, maxBorrowingRateOrOptionalParams, overrides) {\n const address = EthersLiquityConnection_1._requireAddress(this._readable.connection, overrides);\n const { borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n const normalizedParams = lib_base_1._normalizeTroveAdjustment(params);\n const { depositCollateral, withdrawCollateral, borrowLUSD, repayLUSD } = normalizedParams;\n const [trove, feeVars] = await Promise.all([\n this._readable.getTrove(address),\n borrowLUSD &&\n _utils_1.promiseAllValues({\n fees: this._readable._getFeesFactory(),\n blockTimestamp: this._readable._getBlockTimestamp(),\n total: this._readable.getTotal(),\n price: this._readable.getPrice()\n })\n ]);\n const decayBorrowingRate = (seconds) => feeVars === null || feeVars === void 0 ? void 0 : feeVars.fees(feeVars.blockTimestamp + seconds, feeVars.total.collateralRatioIsBelowCritical(feeVars.price)).borrowingRate();\n const currentBorrowingRate = decayBorrowingRate(0);\n const adjustedTrove = trove.adjust(normalizedParams, currentBorrowingRate);\n const hints = await this._findHints(adjustedTrove, address);\n const { maxBorrowingRate, borrowingFeeDecayToleranceMinutes } = normalizeBorrowingOperationOptionalParams(maxBorrowingRateOrOptionalParams, currentBorrowingRate);\n const txParams = (borrowLUSD) => {\n var _a;\n return [\n maxBorrowingRate.hex,\n (depositCollateral !== null && depositCollateral !== void 0 ? depositCollateral : lib_base_1.Decimal.ZERO).hex,\n (withdrawCollateral !== null && withdrawCollateral !== void 0 ? withdrawCollateral : lib_base_1.Decimal.ZERO).hex,\n ((_a = borrowLUSD !== null && borrowLUSD !== void 0 ? borrowLUSD : repayLUSD) !== null && _a !== void 0 ? _a : lib_base_1.Decimal.ZERO).hex,\n !!borrowLUSD,\n ...hints,\n overrides !== null && overrides !== void 0 ? overrides : {}\n ];\n };\n let gasHeadroom;\n if ((overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) === undefined) {\n const decayedBorrowingRate = decayBorrowingRate(60 * borrowingFeeDecayToleranceMinutes);\n const decayedTrove = trove.adjust(normalizedParams, decayedBorrowingRate);\n const { borrowLUSD: borrowLUSDSimulatingDecay } = trove.adjustTo(decayedTrove, currentBorrowingRate);\n if (decayedTrove.debt.lt(lib_base_1.LUSD_MINIMUM_DEBT)) {\n throw new Error(`Trove's debt might fall below ${lib_base_1.LUSD_MINIMUM_DEBT} ` +\n `within ${borrowingFeeDecayToleranceMinutes} minutes`);\n }\n const [gasNow, gasLater] = await Promise.all([\n borrowerOperations.estimateGas.adjustTrove(...txParams(borrowLUSD)),\n borrowLUSD &&\n borrowerOperations.estimateGas.adjustTrove(...txParams(borrowLUSDSimulatingDecay))\n ]);\n let gasLimit = bigNumberMax(addGasForPotentialListTraversal(gasNow), gasLater);\n if (borrowLUSD) {\n gasLimit = addGasForBaseRateUpdate(borrowingFeeDecayToleranceMinutes)(gasLimit);\n }\n gasHeadroom = gasLimit.sub(gasNow).toNumber();\n overrides = { ...overrides, gasLimit };\n }\n return this._wrapTroveChangeWithFees(normalizedParams, await borrowerOperations.populateTransaction.adjustTrove(...txParams(borrowLUSD)), gasHeadroom);\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, address))));\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 }, addGasForBaseRateUpdate(), 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.approveCollateralTokens} */\n async approveCollateralTokens(allowance, overrides) {\n const { collateralToken, borrowerOperations } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await collateralToken.estimateAndPopulate.approve({ ...overrides }, id, borrowerOperations.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.approveUniTokens} */\n async approveUniTokens(allowance, overrides) {\n const { uniToken, lqtyStaking } = EthersLiquityConnection_1._getContracts(this._readable.connection);\n return this._wrapSimpleTransaction(await uniToken.estimateAndPopulate.approve({ ...overrides }, id, lqtyStaking.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 async openTrove(params, maxBorrowingRateOrOptionalParams, overrides) {\n return this._populate\n .openTrove(params, maxBorrowingRateOrOptionalParams, overrides)\n .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, maxBorrowingRateOrOptionalParams, overrides) {\n return this._populate\n .adjustTrove(params, maxBorrowingRateOrOptionalParams, overrides)\n .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.approveCollateralTokens} */\n approveCollateralTokens(allowance, overrides) {\n return this._populate.approveCollateralTokens(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 // JJ\n collateralAllowance: this._updateIfChanged(eq, \"collateralAllowance\", baseState.collateralAllowance, baseStateUpdate.collateralAllowance),\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 // JJ\n async getErc20CollBalance(address, ...extraParams) {\n var _a;\n console.log(\"Async part\"); // JJ\n return ((_a = this._cache.getErc20CollBalance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getErc20CollBalance(address, ...extraParams));\n }\n // JJ\n async getErc20CollAllowance(address, ...extraParams) {\n var _a;\n return ((_a = this._cache.getErc20CollAllowance(address, ...extraParams)) !== null && _a !== void 0 ? _a : this._readable.getErc20CollAllowance(address, ...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 getErc20CollBalance(address, overrides) {\n console.log(\"in etherLiquity\"); // JJ\n return this._readable.getErc20CollBalance(address, overrides);\n }\n /** {@inheritDoc @liquity/lib-base#ReadableLiquity.getErc20CollAllowance} */\n getErc20CollAllowance(address, overrides) {\n console.log(\"Step 3 does this get called?\"); // JJ\n return this._readable.getErc20CollAllowance(address, 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 _getBlockTimestamp(blockTag) {\n return this._readable._getBlockTimestamp(blockTag);\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\n */\n openTrove(params, maxBorrowingRateOrOptionalParams, overrides) {\n return this.send\n .openTrove(params, maxBorrowingRateOrOptionalParams, overrides)\n .then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.closeTrove}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\n */\n adjustTrove(params, maxBorrowingRateOrOptionalParams, overrides) {\n return this.send\n .adjustTrove(params, maxBorrowingRateOrOptionalParams, overrides)\n .then(waitForSuccess);\n }\n /**\n * {@inheritDoc @liquity/lib-base#TransactableLiquity.depositCollateral}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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.approveCollateralTokens}\n *\n * @throws\n * Throws {@link EthersTransactionFailedError} in case of transaction failure.\n * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\n */\n approveCollateralTokens(allowance, overrides) {\n return this.send.approveCollateralTokens(allowance, 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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 * Throws {@link EthersTransactionCancelledError} if the transaction is cancelled or replaced.\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 collateral?: string; // Add \"word\" property with an optional string type\n chainId: number; // JJ\n\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 webSocketSupportedNetworks = [\"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 const [collateral, setCollateral] = useState(); // Define the \"word\" state\n\n const connection = useMemo(() => {\n if (config && provider && account && chainId) {\n try {\n // Define the conditions to set \"word\" based on \"chainId\"\n if (chainId === 40) {\n setCollateral(\"HATCHI\");\n } else if (chainId === 41) {\n console.log(\"Network is testnet provider is \", provider, \" account \", account, \"signer \", provider.getSigner(account), \" Config is \", config.frontendTag)\n setCollateral(\"HATCHI\");\n } else if (chainId === 8453) {\n setCollateral(\"ETH\");\n } else if (chainId === 122) {\n setCollateral(\"FUSE\");\n }\n return _connectByChainId(provider, provider.getSigner(account), chainId, {\n userAddress: account,\n frontendTag: config.frontendTag,\n useStore: \"blockPolled\"\n });\n } catch { console.log(\"failed to estabish\") }\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 // Rest of your existing code...\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 {/* Add \"word\" to the context value */}\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\";\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 \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 | { type: \"waitingForAgreement\"; connector: AbstractConnector };\n\n// ... (existing code)\n\ntype ConnectionAction =\n | { type: \"startActivating\" | \"agreeToTerms\"; 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 if (state.type === \"waitingForAgreement\") {\n return {\n type: \"activating\",\n connector: action.connector\n };\n }\n return {\n type: \"waitingForAgreement\",\n connector: action.connector\n };\n\n case \"agreeToTerms\":\n if (state.type === \"waitingForAgreement\") {\n return {\n type: \"activating\",\n connector: state.connector\n };\n }\n break;\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 Hatchi, you need to connect your Metamask 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, EthersTransactionCancelledError } 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, tx: TransactionReceipt) => {\n try {\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, receipt.rawReceipt);\n\n if (cancelled) {\n return;\n }\n\n console.error(`Tx ${txHash} failed`);\n if (reason) {\n console.error(`Revert reason: ${reason}`);\n }\n\n setTransactionState({\n type: \"failed\",\n id,\n error: new Error(reason ? `Reverted: ${reason}` : \"Failed\")\n });\n }\n } catch (rawError) {\n if (cancelled) {\n return;\n }\n\n finished = true;\n\n if (rawError instanceof EthersTransactionCancelledError) {\n console.log(`Cancelled tx ${txHash}`);\n setTransactionState({ type: \"cancelled\", id });\n } else {\n console.error(`Failed to get receipt for tx ${txHash}`);\n console.error(rawError);\n\n setTransactionState({\n type: \"failed\",\n id,\n error: new Error(\"Failed\")\n });\n }\n }\n };\n\n console.log(`Start monitoring tx ${txHash}`);\n waitForConfirmation();\n\n return () => {\n if (!finished) {\n setTransactionState({ type: \"idle\" });\n console.log(`Cancel monitoring tx ${txHash}`);\n cancelled = true;\n }\n };\n }\n }, [provider, id, tx, setTransactionState]);\n\n useEffect(() => {\n if (transactionState.type === \"confirmedOneShot\" && id) {\n // hack: the txn confirmed state lasts 5 seconds which blocks other states, review with Dani\n setTransactionState({ type: \"confirmed\", id });\n } else if (\n transactionState.type === \"confirmed\" ||\n transactionState.type === \"failed\" ||\n transactionState.type === \"cancelled\"\n ) {\n let cancelled = false;\n\n setTimeout(() => {\n if (!cancelled) {\n setTransactionState({ type: \"idle\" });\n }\n }, 5000);\n\n return () => {\n cancelled = true;\n };\n }\n }, [transactionState.type, setTransactionState, id]);\n\n if (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: \"#c71e2d\",\n purple: \"#c71e2d\",\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: \"#353535\",\n background: \"#FAFAFA\",\n muted: \"#dcccaf\"\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: \"#ffffff\",\n background: \"linear-gradient(200deg, #e7e0d3, #ffffff)\",\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.muted}, ${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: \"#ffffff\",\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: [1, 1, 1, 1],\n py: [2, 2, 2],\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\", \"40px\"],\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;","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 = \"HUSD\";\nexport const GT = \"HATCHI\";\nexport const LP = \"LEET 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, collateral } = useLiquity();\n const { accountBalance, lusdBalance, lqtyBalance } = useLiquitySelector(select);\n\n return (\n \n \n \n \n \n \n \n Connected as\n \n {shortenAddress(account)}\n \n \n \n \n\n \n \n\n {([\n [collateral, accountBalance],\n [COIN, lusdBalance],\n ] as const).map(([currency, balance], i) => (\n \n {currency}\n {balance.prettify()}\n \n ))}\n \n \n );\n};\n","import { Decimal } from \"@liquity/lib-base\";\n\ntype CoinGeckoSimplePriceResponse = {\n [P in T]: {\n [Q in U]: number;\n };\n};\n\nconst hasProp = (o: T, p: P): o is T & { [_ in P]: unknown } => p in o;\n\nconst validateCoinGeckoSimplePriceResponse = (\n expectedCoinIds: readonly T[],\n expectedCurrencies: readonly U[],\n body: unknown\n): CoinGeckoSimplePriceResponse => {\n if (typeof body !== \"object\" || body === null) {\n throw new Error(`unexpected response from CoinGecko`);\n }\n\n for (const coinId of expectedCoinIds) {\n if (!hasProp(body, coinId)) {\n throw new Error(`coin \"${coinId}\" missing from CoinGecko response`);\n }\n\n const coinPrices = body[coinId];\n\n for (const currency of expectedCurrencies) {\n if (!hasProp(coinPrices, currency)) {\n throw new Error(`currency \"${currency}\" missing from CoinGecko response`);\n }\n\n if (typeof coinPrices[currency] !== \"number\") {\n throw new Error(`price of coin \"${coinId}\" in currency \"${currency}\" is not a number`);\n }\n }\n }\n\n return body as CoinGeckoSimplePriceResponse;\n};\n\nconst fetchCoinGeckoSimplePrice = async (\n coinIds: readonly T[],\n vsCurrencies: readonly U[]\n): Promise> => {\n const simplePriceUrl =\n \"https://api.coingecko.com/api/v3/simple/price?\" +\n new URLSearchParams({\n ids: coinIds.join(\",\"),\n vs_currencies: vsCurrencies.join(\",\")\n });\n\n const response = await window.fetch(simplePriceUrl, {\n headers: {\n accept: \"application/json\"\n }\n });\n\n if (!response.ok) {\n throw new Error(`couldn't fetch price from CoinGecko: got status ${response.status}`);\n }\n\n return validateCoinGeckoSimplePriceResponse(coinIds, vsCurrencies, await response.json());\n};\n\nexport interface LqtyPriceResponse {\n lqtyPriceUSD: Decimal;\n}\n\nexport const fetchLqtyPrice = async (): Promise => {\n const response = await fetchCoinGeckoSimplePrice([\"liquity\"] as const, [\"usd\"] as const);\n\n console.log(Decimal.from(response.liquity.usd), \"LIQUITY PRICE\")\n return {\n lqtyPriceUSD: Decimal.from(response.liquity.usd)\n };\n};\n\n\nexport interface MstPriceResponse {\n lqtyPriceUSD: Decimal;\n}\n\nexport const fetchMSTPrice = async (): Promise => {\n const url = \"https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/mst_price\";\n const response = await fetch(url);\n const data = await response.json();\n\n return {\n lqtyPriceUSD: Decimal.from(data)\n };\n};\n\n\nexport interface TLOSYieldResponse {\n TLOSYield: Decimal;\n}\n\nexport const fetchTLOSYield = async (): Promise => {\n const url = \"https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/stability_pool_yield\";\n const response = await fetch(url);\n const data = await response.json();\n return {\n TLOSYield: Decimal.from(data)\n };\n};\n\n\nexport interface FUSEYieldResponse {\n FUSEYield: Decimal;\n}\n\nexport const fetchFUSEYield = async (): Promise => {\n const url = \"https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/fuse_stability_pool_yield\";\n const response = await fetch(url);\n const data = await response.json();\n return {\n FUSEYield: Decimal.from(data)\n };\n};\n\n\nexport interface MSTMcapResponse {\n MstMcapUSD: Decimal;\n}\n\nexport interface TVLUSDResponse {\n TVLUSD: Decimal;\n}\n\n\nexport const fetchMSTMcap = async (): Promise => {\n const url = \"https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/mst_mcap\";\n const response = await fetch(url);\n const data = await response.json();\n\n return {\n MstMcapUSD: Decimal.from(data)\n };\n};\n\n\n\nexport const fetchMeridianTVL = async (): Promise => {\n const url = \"https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/total_tvl\";\n const response = await fetch(url);\n const data = await response.json();\n\n return {\n TVLUSD: Decimal.from(data)\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, { useState, useEffect } 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\";\nimport { fetchMSTPrice, fetchMSTMcap, fetchMeridianTVL } from \"./Stability/context/fetchLqtyPrice\";\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\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\n\n\nexport const SystemStats: React.FC = ({ variant = \"info\", showBalances }) => {\n const {\n liquity: {\n connection: { version: contractsVersion, deploymentDate, frontendTag }\n },\n collateral\n } = useLiquity();\n\n const [lqtyPrice, setLqtyPrice] = useState(undefined);\n const [mstMcap, setMSTMcap] = useState(undefined);\n const [TVLUSD, setTVLUSD] = useState(undefined);\n\n const 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\n useEffect(() => {\n (async () => {\n try {\n // const { lqtyPriceUSD } = await fetchLqtyPrice();\n const { lqtyPriceUSD } = await fetchMSTPrice();\n const { MstMcapUSD } = await fetchMSTMcap();\n const { TVLUSD } = await fetchMeridianTVL();\n\n setLqtyPrice(lqtyPriceUSD);\n setMSTMcap(MstMcapUSD);\n setTVLUSD(TVLUSD);\n\n } catch (error) {\n console.error(error);\n }\n })();\n }, []);\n\n // if (lqtyPrice === undefined) return null;\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 let decimals: number;\n\n if (collateral === \"TLOS\" || collateral === \"FUSE\") {\n decimals = 4;\n } else {\n decimals = 2;\n }\n\n return (\n \n {showBalances && }\n\n Hatchi statistics\n\n \n Protocol\n \n\n \n {borrowingFeePct.toString(2)}\n \n\n \n {total.collateral.shorten()}  {collateral}\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 {collateral != \"FUSE\" && (\n \n {totalStakedLQTY.shorten()}\n \n )}\n \n {totalCollateralRatioPct.prettify()}\n \n \n ${Decimal.from(price).shorten_4(6)}\n \n {/*\n \n Average price of Hatchi across all supported exchanges\n \n }\n >\n  ${Decimal.from(lqtyPrice || 0).shorten_4(4)}\n \n \n  ${Decimal.from(mstMcap || 0).shorten()}\n \n \n \n ${Decimal.from(total.debt || 0).shorten()}\n \n */}\n \n {total.collateralRatioIsBelowCritical(price) ? Yes : \"No\"}\n \n\n { }\n {/*\n \n Frontend\n \n \n {kickbackRatePct && (\n \n {kickbackRatePct}%\n \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};\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 = \"40px\", ...boxProps }) => (\n \n \n \n \n \n);\n\n","import React from \"react\";\nimport { 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\nexport const ExactLink: React.FC = props => {\n return ;\n};\n\nexport const MenuLink: React.FC = (props) => {\n const isExternalLink =\n typeof props.to === \"string\" && (props.to.startsWith(\"http://\") || props.to.startsWith(\"https://\"));\n\n if (isExternalLink) {\n return (\n \n {props.children}\n \n );\n } else {\n return (\n \n {props.children}\n \n );\n }\n};\n","import { Flex, Box, Badge, Text } from \"theme-ui\";\nimport { MenuLink } from \"./MenuLink\";\nimport { useLiquity } from \"../hooks/LiquityContext\";\nimport React, { ReactNode } from 'react';\n\ninterface LinkProps {\n children: ReactNode;\n href: string;\n}\n\nconst TemporaryNewBadge = () => {\n const isBeforeNovember2022 = new Date() < new Date(\"2022-11-01\");\n if (!isBeforeNovember2022) return null;\n return (\n \n New\n \n );\n};\n\n\nexport const Nav: React.FC = () => {\n const { collateral } = useLiquity();\n\n return (\n \n\n Mint\n Stability Pool\n Staking\n {/* Redemption */}\n Risky Troves\n\n \n );\n};\n","import React from \"react\";\nimport { 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\nexport const ExactLink: React.FC = props => {\n return ;\n};\n\nexport const Link: React.FC = (props) => {\n const isExternalLink =\n typeof props.to === \"string\" && (props.to.startsWith(\"http://\") || props.to.startsWith(\"https://\"));\n\n if (isExternalLink) {\n return (\n \n {props.children}\n \n );\n } else {\n return (\n \n {props.children}\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 = \"42px\";\n\nconst navItemStyle = {\n textDecoration: 'none',\n color: 'red',\n mb: 2, // Some margin-bottom for space between items\n display: 'block', // Ensure they are block-level elements for consistent spacing\n fontSize: '18px' \n};\n\nexport const SideNav: React.FC = () => {\n const [isVisible, setIsVisible] = useState(false);\n const overlay = useRef(null);\n const [submenuVisible, setSubmenuVisible] = useState(false); // Add this line\n\n\n if (!isVisible) {\n return (\n \n );\n }\n return (\n <>\n {\n if (e.target === overlay.current) {\n setIsVisible(false);\n }\n }}\n >\n \n {/* ... */}\n setIsVisible(false)}>\n Mint\n Stability Pool\n Staking\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 = \"35px\";\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