{
  "address": "0x9Ce17A004B20683C8478eC8354A31b20d036Bcf8",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IFactory",
          "name": "_factory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract IFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getActiveTroveManagersForAccount",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllCollateralsAndTroveManagers",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IERC20",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address[]",
              "name": "troveManagers",
              "type": "address[]"
            }
          ],
          "internalType": "struct TroveManagerGetters.Collateral[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "transactionHash": "0xb532a08667c5385ff565475e638b0af6411692f4f996560bba49bdc74495d25d",
  "receipt": {
    "to": null,
    "from": "0xF1658C608708172655A8e70a1624c29F956Ee63D",
    "contractAddress": "0x9Ce17A004B20683C8478eC8354A31b20d036Bcf8",
    "transactionIndex": 6,
    "gasUsed": "705514",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0xbb766b4d42afa1e1b2f05e3ac9556794538117a094dd8f6e8536b8f356e0f0f0",
    "transactionHash": "0xb532a08667c5385ff565475e638b0af6411692f4f996560bba49bdc74495d25d",
    "logs": [],
    "blockNumber": 2166515,
    "cumulativeGasUsed": "1442675",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "0x3eE1d388d4b7D5F0798F4720A4BB382ED3beEE0b"
  ],
  "numDeployments": 1,
  "solcInputHash": "a6d939c7ac4bb59822edb24b0d925d24",
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract IFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getActiveTroveManagersForAccount\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllCollateralsAndTroveManagers\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"troveManagers\",\"type\":\"address[]\"}],\"internalType\":\"struct TroveManagerGetters.Collateral[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getActiveTroveManagersForAccount(address)\":{\"notice\":\"Returns a list of trove managers where `account` has an existing trove\"},\"getAllCollateralsAndTroveManagers()\":{\"notice\":\"Returns all active system trove managers and collaterals, as an `       array of tuples of [(collateral, [troveManager, ...]), ...]\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/helpers/TroveManagerGetters.sol\":\"TroveManagerGetters\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `from` to `to` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"contracts/helpers/TroveManagerGetters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nimport \\\"../interfaces/ITroveManager.sol\\\";\\nimport \\\"../interfaces/IFactory.sol\\\";\\n\\n/*  Helper contract for grabbing Trove data for the front end. Not part of the PropelCore Propel system. */\\ncontract TroveManagerGetters {\\n\\tstruct Collateral {\\n\\t\\tIERC20 collateral;\\n\\t\\taddress[] troveManagers;\\n\\t}\\n\\n\\tIFactory public immutable factory;\\n\\n\\tconstructor(IFactory _factory) {\\n\\t\\tfactory = _factory;\\n\\t}\\n\\n\\t/**\\n        @notice Returns all active system trove managers and collaterals, as an\\n        `       array of tuples of [(collateral, [troveManager, ...]), ...]\\n     */\\n\\tfunction getAllCollateralsAndTroveManagers() external view returns (Collateral[] memory) {\\n\\t\\tuint256 length = factory.troveManagerCount();\\n\\t\\taddress[2][] memory troveManagersAndCollaterals = new address[2][](length);\\n\\t\\taddress[] memory uniqueCollaterals = new address[](length);\\n\\t\\tuint256 collateralCount;\\n\\t\\tfor (uint i = 0; i < length; i++) {\\n\\t\\t\\taddress troveManager = factory.troveManagers(i);\\n\\t\\t\\tIERC20 collateral = ITroveManager(troveManager).collateralToken();\\n\\t\\t\\ttroveManagersAndCollaterals[i] = [troveManager, address(collateral)];\\n\\t\\t\\tfor (uint x = 0; x < length; x++) {\\n\\t\\t\\t\\tif (uniqueCollaterals[x] == address(collateral)) break;\\n\\t\\t\\t\\tif (uniqueCollaterals[x] == address(0)) {\\n\\t\\t\\t\\t\\tuniqueCollaterals[x] = address(collateral);\\n\\t\\t\\t\\t\\tcollateralCount++;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tCollateral[] memory collateralMap = new Collateral[](collateralCount);\\n\\t\\tfor (uint i = 0; i < collateralCount; i++) {\\n\\t\\t\\tcollateralMap[i].collateral = IERC20(uniqueCollaterals[i]);\\n\\t\\t\\tuint tmCollCount = 0;\\n\\t\\t\\taddress[] memory troveManagers = new address[](length);\\n\\t\\t\\tfor (uint x = 0; x < length; x++) {\\n\\t\\t\\t\\tif (troveManagersAndCollaterals[x][1] == uniqueCollaterals[i]) {\\n\\t\\t\\t\\t\\ttroveManagers[tmCollCount] = troveManagersAndCollaterals[x][0];\\n\\t\\t\\t\\t\\ttmCollCount++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tcollateralMap[i].troveManagers = new address[](tmCollCount);\\n\\t\\t\\tfor (uint x = 0; x < tmCollCount; x++) {\\n\\t\\t\\t\\tcollateralMap[i].troveManagers[x] = troveManagers[x];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn collateralMap;\\n\\t}\\n\\n\\t/**\\n        @notice Returns a list of trove managers where `account` has an existing trove\\n     */\\n\\tfunction getActiveTroveManagersForAccount(address account) external view returns (address[] memory) {\\n\\t\\tuint256 length = factory.troveManagerCount();\\n\\t\\taddress[] memory troveManagers = new address[](length);\\n\\t\\tuint256 tmCount;\\n\\t\\tfor (uint i = 0; i < length; i++) {\\n\\t\\t\\taddress troveManager = factory.troveManagers(i);\\n\\t\\t\\tif (ITroveManager(troveManager).getTroveStatus(account) > 0) {\\n\\t\\t\\t\\ttroveManagers[tmCount] = troveManager;\\n\\t\\t\\t\\ttmCount++;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tassembly {\\n\\t\\t\\tmstore(troveManagers, tmCount)\\n\\t\\t}\\n\\t\\treturn troveManagers;\\n\\t}\\n}\\n\",\"keccak256\":\"0x87f79473d41112650416f510afc44e6a0f4f967c83bddcb18c431ba4019fdfad\",\"license\":\"MIT\"},\"contracts/interfaces/IFactory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\ninterface IFactory {\\n\\t// commented values are suggested default parameters\\n\\tstruct DeploymentParams {\\n\\t\\tuint256 minuteDecayFactor; // 999037758833783000  (half life of 12 hours)\\n\\t\\tuint256 redemptionFeeFloor; // 1e18 / 1000 * 5  (0.5%)\\n\\t\\tuint256 maxRedemptionFee; // 1e18  (100%)\\n\\t\\tuint256 borrowingFeeFloor; // 1e18 / 1000 * 5  (0.5%)\\n\\t\\tuint256 maxBorrowingFee; // 1e18 / 100 * 5  (5%)\\n\\t\\tuint256 interestRateInBps; // 100 (1%)\\n\\t\\tuint256 maxDebt;\\n\\t\\tuint256 MCR; // 12 * 1e17  (120%)\\n\\t}\\n\\n\\tevent NewDeployment(address collateral, address priceFeed, address troveManager, address sortedTroves);\\n\\n\\tfunction deployNewInstance(address collateral, address priceFeed, address customTroveManagerImpl, address customSortedTrovesImpl, DeploymentParams calldata params) external;\\n\\n\\tfunction setImplementations(address _troveManagerImpl, address _sortedTrovesImpl) external;\\n\\n\\tfunction Propel_CORE() external view returns (address);\\n\\n\\tfunction borrowerOperations() external view returns (address);\\n\\n\\tfunction debtToken() external view returns (address);\\n\\n\\tfunction guardian() external view returns (address);\\n\\n\\tfunction liquidationManager() external view returns (address);\\n\\n\\tfunction owner() external view returns (address);\\n\\n\\tfunction sortedTrovesImpl() external view returns (address);\\n\\n\\tfunction stabilityPool() external view returns (address);\\n\\n\\tfunction troveManagerCount() external view returns (uint256);\\n\\n\\tfunction troveManagerImpl() external view returns (address);\\n\\n\\tfunction troveManagers(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x2e6c41a32d40629a0f5d4128b01a5801842010d1c10b509b686f788ff44a607d\",\"license\":\"MIT\"},\"contracts/interfaces/IPriceFeed.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nimport \\\"../interfaces/IPyth.sol\\\";\\n\\ninterface IPriceFeed {\\n\\tstruct OracleRecord {\\n\\t\\tIPyth pyth;\\n\\t\\tuint32 decimals;\\n\\t\\tuint32 heartbeat;\\n\\t\\tbool isFeedWorking;\\n\\t}\\n\\n\\tstruct PriceRecord {\\n\\t\\tuint96 scaledPrice;\\n\\t\\tuint32 timestamp;\\n\\t\\tuint32 lastUpdated;\\n\\t}\\n\\n\\tstruct FeedResponse {\\n\\t\\tint64 price;\\n\\t\\t// Confidence interval around the price\\n\\t\\tuint64 conf;\\n\\t\\t// Price exponent\\n\\t\\tint32 expo;\\n\\t\\t// Unix timestamp describing when the price was published\\n\\t\\tuint publishTime;\\n\\t\\tbool success;\\n\\t}\\n\\n\\t// Custom Errors --------------------------------------------------------------------------------------------------\\n\\n\\terror PriceFeed__InvalidFeedResponseError();\\n\\terror PriceFeed__FeedFrozenError();\\n\\terror PriceFeed__UnknownFeedError();\\n\\terror PriceFeed__HeartbeatOutOfBoundsError();\\n\\n\\t// Events ---------------------------------------------------------------------------------------------------------\\n\\n\\tevent NewOracleRegistered(address pyth);\\n\\tevent PriceFeedStatusUpdated(address oracle, bool isWorking);\\n\\tevent PriceRecordUpdated(uint256 _price);\\n\\n\\tfunction fetchPrice(address _token) external returns (uint256);\\n}\\n\",\"keccak256\":\"0x8ef2b41df0f27e3c3a61cbcbd999aac5928199c7cd5dc7da2d93d7a58891a908\",\"license\":\"MIT\"},\"contracts/interfaces/IPropelBase.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\ninterface IPropelBase {\\n\\tfunction DECIMAL_PRECISION() external view returns (uint256);\\n\\n\\t// Critical system collateral ratio. If the system's total collateral ratio (TCR) falls below the CCR, Recovery Mode is triggered.\\n\\tfunction CCR() external view returns (uint256); // 150%\\n\\n\\t// Amount of debt to be locked in gas pool on opening troves\\n\\tfunction DEBT_GAS_COMPENSATION() external view returns (uint256);\\n\\n\\tfunction PERCENT_DIVISOR() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xcf4433a83eb57f68ce98b33c442abde5420e6e4cede255cfa41680fc5c2808b8\",\"license\":\"MIT\"},\"contracts/interfaces/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\ninterface IPyth {\\n\\tstruct Price {\\n\\t\\t// Price\\n\\t\\tint64 price;\\n\\t\\t// Confidence interval around the price\\n\\t\\tuint64 conf;\\n\\t\\t// Price exponent\\n\\t\\tint32 expo;\\n\\t\\t// Unix timestamp describing when the price was published\\n\\t\\tuint publishTime;\\n\\t}\\n\\n\\tfunction getPrice(bytes32 id) external view returns (Price memory);\\n\\n\\tfunction getPriceUnsafe(bytes32 id) external view returns (Price memory price);\\n}\\n\",\"keccak256\":\"0xfd589468ff2885c85543d89042b18e7801be77d8586bddf27481830fb233bd01\",\"license\":\"MIT\"},\"contracts/interfaces/ISortedTroves.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\ninterface ISortedTroves {\\n\\tevent NodeAdded(address _id, uint256 _NICR);\\n\\tevent NodeRemoved(address _id);\\n\\n\\tfunction insert(address _id, uint256 _NICR, address _prevId, address _nextId) external;\\n\\n\\tfunction reInsert(address _id, uint256 _newNICR, address _prevId, address _nextId) external;\\n\\n\\tfunction remove(address _id) external;\\n\\n\\tfunction setAddresses(address _troveManagerAddress) external;\\n\\n\\tfunction contains(address _id) external view returns (bool);\\n\\n\\tfunction data() external view returns (address head, address tail, uint256 size);\\n\\n\\tfunction findInsertPosition(uint256 _NICR, address _prevId, address _nextId) external view returns (address, address);\\n\\n\\tfunction getFirst() external view returns (address);\\n\\n\\tfunction getLast() external view returns (address);\\n\\n\\tfunction getNext(address _id) external view returns (address);\\n\\n\\tfunction getPrev(address _id) external view returns (address);\\n\\n\\tfunction getSize() external view returns (uint256);\\n\\n\\tfunction isEmpty() external view returns (bool);\\n\\n\\tfunction troveManager() external view returns (address);\\n\\n\\tfunction validInsertPosition(uint256 _NICR, address _prevId, address _nextId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x568f6029aad06d63866b67a30cddcb6ca716b5163aac714d847189d09a2aaf31\",\"license\":\"MIT\"},\"contracts/interfaces/ITroveManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"./IPropelBase.sol\\\";\\nimport \\\"./ISortedTroves.sol\\\";\\nimport \\\"./IPriceFeed.sol\\\";\\n\\ninterface ITroveManager is IPropelBase {\\n\\t// Store the necessary data for a trove\\n\\tstruct Trove {\\n\\t\\tuint256 debt;\\n\\t\\tuint256 coll;\\n\\t\\tuint256 stake;\\n\\t\\tStatus status;\\n\\t\\tuint128 arrayIndex;\\n\\t}\\n\\n\\tstruct RedemptionTotals {\\n\\t\\tuint256 remainingDebt;\\n\\t\\tuint256 totalDebtToRedeem;\\n\\t\\tuint256 totalCollateralDrawn;\\n\\t\\tuint256 totalInterest;\\n\\t\\tuint256 collateralFee;\\n\\t\\tuint256 collateralToSendToRedeemer;\\n\\t\\tuint256 decayedBaseRate;\\n\\t\\tuint256 price;\\n\\t\\tuint256 totalDebtSupplyAtStart;\\n\\t}\\n\\n\\tstruct SingleRedemptionValues {\\n\\t\\tuint256 debtLot;\\n\\t\\tuint256 collateralLot;\\n\\t\\tuint256 interestLot;\\n\\t\\tbool cancelledPartial;\\n\\t}\\n\\n\\t// Object containing the collateral and debt snapshots for a given active trove\\n\\tstruct RewardSnapshot {\\n\\t\\tuint256 collateral;\\n\\t\\tuint256 debt;\\n\\t\\tuint256 interest;\\n\\t}\\n\\n\\tenum TroveManagerOperation {\\n\\t\\tapplyPendingRewards,\\n\\t\\tliquidateInNormalMode,\\n\\t\\tliquidateInRecoveryMode,\\n\\t\\tredeemCollateral\\n\\t}\\n\\n\\tenum Status {\\n\\t\\tnonExistent,\\n\\t\\tactive,\\n\\t\\tclosedByOwner,\\n\\t\\tclosedByLiquidation,\\n\\t\\tclosedByRedemption\\n\\t}\\n\\n\\tevent InsterstPaid(address _account, address _borrower, uint256 _interest);\\n\\tevent TroveUpdated(address indexed _borrower, uint256 _debt, uint256 _coll, uint256 _stake, TroveManagerOperation _operation);\\n\\tevent Redemption(uint256 _attemptedDebtAmount, uint256 _actualDebtAmount, uint256 _collateralSent, uint256 _InterestDebt, uint256 _collateralFee);\\n\\tevent BaseRateUpdated(uint256 _baseRate);\\n\\tevent LastFeeOpTimeUpdated(uint256 _lastFeeOpTime);\\n\\tevent TotalStakesUpdated(uint256 _newTotalStakes);\\n\\tevent SystemSnapshotsUpdated(uint256 _totalStakesSnapshot, uint256 _totalCollateralSnapshot);\\n\\tevent LTermsUpdated(uint256 _L_collateral, uint256 _L_debt);\\n\\tevent TroveSnapshotsUpdated(uint256 _L_collateral, uint256 _L_debt, uint256 _L_Interest_Debt);\\n\\tevent TroveIndexUpdated(address _borrower, uint256 _newIndex);\\n\\tevent CollateralSent(address _to, uint256 _amount);\\n\\tevent RewardClaimed(address indexed account, address indexed recipient, uint256 claimed);\\n\\n\\tfunction addCollateralSurplus(address borrower, uint256 collSurplus) external;\\n\\n\\tfunction applyPendingRewards(address _borrower) external returns (uint256 coll, uint256 debt);\\n\\n\\tfunction claimCollateral(address _receiver) external;\\n\\n\\tfunction closeTrove(address _borrower, address _receiver, uint256 collAmount, uint256 debtAmount) external;\\n\\n\\tfunction closeTroveByLiquidation(address _borrower) external;\\n\\n\\tfunction decayBaseRateAndGetBorrowingFee(uint256 _debt) external returns (uint256);\\n\\n\\tfunction decreaseDebtAndSendCollateral(address account, uint256 debt, uint256 coll) external;\\n\\n\\tfunction finalizeLiquidation(address _liquidator, uint256 _debt, uint256 _coll, uint256 _collSurplus, uint256 _debtGasComp, uint256 _collGasComp, uint256 _interest) external;\\n\\n\\tfunction getEntireSystemBalances() external returns (uint256, uint256, uint256);\\n\\n\\tfunction movePendingTroveRewardsToActiveBalances(uint256 _debt, uint256 _collateral) external;\\n\\n\\tfunction openTrove(address _borrower, uint256 _collateralAmount, uint256 _compositeDebt, uint256 NICR, address _upperHint, address _lowerHint) external returns (uint256 stake, uint256 arrayIndex);\\n\\n\\tfunction redeemCollateral(uint256 _debtAmount, address _firstRedemptionHint, address _upperPartialRedemptionHint, address _lowerPartialRedemptionHint, uint256 _partialRedemptionHintNICR, uint256 _maxIterations, uint256 _maxFeePercentage) external;\\n\\n\\tfunction setAddresses(address _priceFeedAddress, address _sortedTrovesAddress, IERC20 _collateralToken) external;\\n\\n\\tfunction setParameters(uint256 _minuteDecayFactor, uint256 _redemptionFeeFloor, uint256 _maxRedemptionFee, uint256 _borrowingFeeFloor, uint256 _maxBorrowingFee, uint256 _maxSystemDebt, uint256 _MCR, uint32 _interestRate) external;\\n\\n\\tfunction setPaused(bool _paused) external;\\n\\n\\tfunction setPriceFeed(address _priceFeedAddress) external;\\n\\n\\tfunction updateTroveFromAdjustment(bool _isDebtIncrease, uint256 _debtChange, uint256 _netDebtChange, bool _isCollIncrease, uint256 _collChange, address _upperHint, address _lowerHint, address _borrower, address _receiver) external returns (uint256, uint256, uint256);\\n\\n\\tfunction fetchPrice() external returns (uint256);\\n\\n\\tfunction distributeInterestDebt() external returns (uint256);\\n\\n\\tfunction repayInterest(address _account, address _borrower, uint256 _debt) external;\\n\\n\\tfunction BOOTSTRAP_PERIOD() external view returns (uint256);\\n\\n\\tfunction L_collateral() external view returns (uint256);\\n\\n\\tfunction L_debt() external view returns (uint256);\\n\\n\\tfunction MCR() external view returns (uint256);\\n\\n\\tfunction getTrove(address _borrower) external view returns (Trove memory);\\n\\n\\tfunction baseRate() external view returns (uint256);\\n\\n\\tfunction borrowerOperationsAddress() external view returns (address);\\n\\n\\tfunction borrowingFeeFloor() external view returns (uint256);\\n\\n\\tfunction collateralToken() external view returns (IERC20);\\n\\n\\tfunction defaultedCollateral() external view returns (uint256);\\n\\n\\tfunction defaultedDebt() external view returns (uint256);\\n\\n\\tfunction getBorrowingFee(uint256 _debt) external view returns (uint256);\\n\\n\\tfunction getBorrowingFeeWithDecay(uint256 _debt) external view returns (uint256);\\n\\n\\tfunction getBorrowingRate() external view returns (uint256);\\n\\n\\tfunction getBorrowingRateWithDecay() external view returns (uint256);\\n\\n\\tfunction getCurrentICR(address _borrower, uint256 _price) external view returns (uint256);\\n\\n\\tfunction getEntireDebtAndColl(address _borrower) external view returns (uint256 debt, uint256 coll, uint256 pendingDebtReward, uint256 pendingCollateralReward);\\n\\n\\tfunction getEntireSystemColl() external view returns (uint256);\\n\\n\\tfunction getEntireSystemDebt() external view returns (uint256);\\n\\n\\tfunction getGlobalSystemDebt() external view returns (uint256);\\n\\n\\tfunction getTroveInterest(address _borrower, uint256 _debt) external view returns (uint256);\\n\\n\\tfunction getRedemptionICR(address _borrower, uint256 _price) external view returns (uint256);\\n\\n\\tfunction getNominalICR(address _borrower) external view returns (uint256);\\n\\n\\tfunction getPendingCollAndDebtRewards(address _borrower) external view returns (uint256, uint256);\\n\\n\\tfunction getRedemptionFeeWithDecay(uint256 _collateralDrawn) external view returns (uint256);\\n\\n\\tfunction getRedemptionRate() external view returns (uint256);\\n\\n\\tfunction getRedemptionRateWithDecay() external view returns (uint256);\\n\\n\\tfunction getTotalActiveCollateral() external view returns (uint256);\\n\\n\\tfunction getTotalActiveDebt() external view returns (uint256);\\n\\n\\tfunction getTroveCollAndDebt(address _borrower) external view returns (uint256 coll, uint256 debt);\\n\\n\\tfunction getTroveFromTroveOwnersArray(uint256 _index) external view returns (address);\\n\\n\\tfunction getTroveOwnersCount() external view returns (uint256);\\n\\n\\tfunction getTroveStake(address _borrower) external view returns (uint256);\\n\\n\\tfunction getTroveStatus(address _borrower) external view returns (uint256);\\n\\n\\tfunction hasPendingRewards(address _borrower) external view returns (bool);\\n\\n\\tfunction lastCollateralError_Redistribution() external view returns (uint256);\\n\\n\\tfunction lastDebtError_Redistribution() external view returns (uint256);\\n\\n\\tfunction lastFeeOperationTime() external view returns (uint256);\\n\\n\\tfunction liquidationManager() external view returns (address);\\n\\n\\tfunction maxBorrowingFee() external view returns (uint256);\\n\\n\\tfunction maxRedemptionFee() external view returns (uint256);\\n\\n\\tfunction maxSystemDebt() external view returns (uint256);\\n\\n\\tfunction minuteDecayFactor() external view returns (uint256);\\n\\n\\tfunction paused() external view returns (bool);\\n\\n\\tfunction redemptionFeeFloor() external view returns (uint256);\\n\\n\\tfunction getRewardSnapshots(address) external view returns (RewardSnapshot memory);\\n\\n\\tfunction priceFeed() external view returns (IPriceFeed);\\n\\n\\tfunction sortedTroves() external view returns (ISortedTroves);\\n\\n\\tfunction sunsetting() external view returns (bool);\\n\\n\\tfunction surplusBalances(address) external view returns (uint256);\\n\\n\\tfunction systemDeploymentTime() external view returns (uint256);\\n\\n\\tfunction totalCollateralSnapshot() external view returns (uint256);\\n\\n\\tfunction totalStakes() external view returns (uint256);\\n\\n\\tfunction totalStakesSnapshot() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x489a259e79e6b4ba4d57177d8b4576487645b00ca324c9d1ae50301abfc939a8\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610c71380380610c7183398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610bcc6100a56000396000818160690152818160c9015281816102270152818161071b01526108220152610bcc6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063a8ea80f714610046578063c45a015514610064578063d5df056e146100a3575b600080fd5b61004e6100c3565b60405161005b9190610998565b60405180910390f35b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005b565b6100b66100b1366004610a7d565b610715565b60405161005b9190610aa1565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663679df0d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101499190610aee565b905060008167ffffffffffffffff81111561016657610166610b07565b60405190808252806020026020018201604052801561019f57816020015b61018c61097a565b8152602001906001900390816101845790505b50905060008267ffffffffffffffff8111156101bd576101bd610b07565b6040519080825280602002602001820160405280156101e6578160200160208202803683370190505b5090506000805b8481101561042e576040517f3b707478000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b70747890602401602060405180830381865afa158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a9190610b1d565b90506000816001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103009190610b1d565b90506040518060400160405280836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681525086848151811061034d5761034d610b3a565b602002602001018190525060005b8781101561041857816001600160a01b031686828151811061037f5761037f610b3a565b60200260200101516001600160a01b031603156104185760006001600160a01b03168682815181106103b3576103b3610b3a565b60200260200101516001600160a01b03160361040657818682815181106103dc576103dc610b3a565b6001600160a01b0390921660209283029190910190910152846103fe81610b50565b955050610418565b8061041081610b50565b91505061035b565b505050808061042690610b50565b9150506101ed565b5060008167ffffffffffffffff81111561044a5761044a610b07565b60405190808252806020026020018201604052801561049057816020015b6040805180820190915260008152606060208201528152602001906001900390816104685790505b50905060005b8281101561070b578381815181106104b0576104b0610b3a565b60200260200101518282815181106104ca576104ca610b3a565b60209081029190910101516001600160a01b0390911690526000808767ffffffffffffffff8111156104fe576104fe610b07565b604051908082528060200260200182016040528015610527578160200160208202803683370190505b50905060005b888110156106125786848151811061054757610547610b3a565b60200260200101516001600160a01b031688828151811061056a5761056a610b3a565b602002602001015160016002811061058457610584610b3a565b60200201516001600160a01b031603610600578781815181106105a9576105a9610b3a565b60200260200101516000600281106105c3576105c3610b3a565b60200201518284815181106105da576105da610b3a565b6001600160a01b0390921660209283029190910190910152826105fc81610b50565b9350505b8061060a81610b50565b91505061052d565b508167ffffffffffffffff81111561062c5761062c610b07565b604051908082528060200260200182016040528015610655578160200160208202803683370190505b5084848151811061066857610668610b3a565b60200260200101516020018190525060005b828110156106f55781818151811061069457610694610b3a565b60200260200101518585815181106106ae576106ae610b3a565b60200260200101516020015182815181106106cb576106cb610b3a565b6001600160a01b0390921660209283029190910190910152806106ed81610b50565b91505061067a565b505050808061070390610b50565b915050610496565b5095945050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663679df0d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190610aee565b905060008167ffffffffffffffff8111156107b8576107b8610b07565b6040519080825280602002602001820160405280156107e1578160200160208202803683370190505b5090506000805b83811015610970576040517f3b707478000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b70747890602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190610b1d565b6040517f21e378010000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301529192506000918316906321e3780190602401602060405180830381865afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190610aee565b111561095d578084848151811061093757610937610b3a565b6001600160a01b03909216602092830291909101909101528261095981610b50565b9350505b508061096881610b50565b9150506107e8565b5081529392505050565b60405180604001604052806002906020820280368337509192915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610a56578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b039081168652908901518986018990528051898701819052908a0191849160608801905b80841015610a4057845183168252938c019360019390930192908c0190610a1e565b50988b01989650505092880192506001016109c0565b50919998505050505050505050565b6001600160a01b0381168114610a7a57600080fd5b50565b600060208284031215610a8f57600080fd5b8135610a9a81610a65565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610ae25783516001600160a01b031683529284019291840191600101610abd565b50909695505050505050565b600060208284031215610b0057600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b2f57600080fd5b8151610a9a81610a65565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b8f57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220afc69f3b7eb40d4a92f119f7e4a07e5486ce908aca6bb3db17fd2405996dfd2664736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063a8ea80f714610046578063c45a015514610064578063d5df056e146100a3575b600080fd5b61004e6100c3565b60405161005b9190610998565b60405180910390f35b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005b565b6100b66100b1366004610a7d565b610715565b60405161005b9190610aa1565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663679df0d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101499190610aee565b905060008167ffffffffffffffff81111561016657610166610b07565b60405190808252806020026020018201604052801561019f57816020015b61018c61097a565b8152602001906001900390816101845790505b50905060008267ffffffffffffffff8111156101bd576101bd610b07565b6040519080825280602002602001820160405280156101e6578160200160208202803683370190505b5090506000805b8481101561042e576040517f3b707478000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b70747890602401602060405180830381865afa158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a9190610b1d565b90506000816001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103009190610b1d565b90506040518060400160405280836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681525086848151811061034d5761034d610b3a565b602002602001018190525060005b8781101561041857816001600160a01b031686828151811061037f5761037f610b3a565b60200260200101516001600160a01b031603156104185760006001600160a01b03168682815181106103b3576103b3610b3a565b60200260200101516001600160a01b03160361040657818682815181106103dc576103dc610b3a565b6001600160a01b0390921660209283029190910190910152846103fe81610b50565b955050610418565b8061041081610b50565b91505061035b565b505050808061042690610b50565b9150506101ed565b5060008167ffffffffffffffff81111561044a5761044a610b07565b60405190808252806020026020018201604052801561049057816020015b6040805180820190915260008152606060208201528152602001906001900390816104685790505b50905060005b8281101561070b578381815181106104b0576104b0610b3a565b60200260200101518282815181106104ca576104ca610b3a565b60209081029190910101516001600160a01b0390911690526000808767ffffffffffffffff8111156104fe576104fe610b07565b604051908082528060200260200182016040528015610527578160200160208202803683370190505b50905060005b888110156106125786848151811061054757610547610b3a565b60200260200101516001600160a01b031688828151811061056a5761056a610b3a565b602002602001015160016002811061058457610584610b3a565b60200201516001600160a01b031603610600578781815181106105a9576105a9610b3a565b60200260200101516000600281106105c3576105c3610b3a565b60200201518284815181106105da576105da610b3a565b6001600160a01b0390921660209283029190910190910152826105fc81610b50565b9350505b8061060a81610b50565b91505061052d565b508167ffffffffffffffff81111561062c5761062c610b07565b604051908082528060200260200182016040528015610655578160200160208202803683370190505b5084848151811061066857610668610b3a565b60200260200101516020018190525060005b828110156106f55781818151811061069457610694610b3a565b60200260200101518585815181106106ae576106ae610b3a565b60200260200101516020015182815181106106cb576106cb610b3a565b6001600160a01b0390921660209283029190910190910152806106ed81610b50565b91505061067a565b505050808061070390610b50565b915050610496565b5095945050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663679df0d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190610aee565b905060008167ffffffffffffffff8111156107b8576107b8610b07565b6040519080825280602002602001820160405280156107e1578160200160208202803683370190505b5090506000805b83811015610970576040517f3b707478000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b70747890602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190610b1d565b6040517f21e378010000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301529192506000918316906321e3780190602401602060405180830381865afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190610aee565b111561095d578084848151811061093757610937610b3a565b6001600160a01b03909216602092830291909101909101528261095981610b50565b9350505b508061096881610b50565b9150506107e8565b5081529392505050565b60405180604001604052806002906020820280368337509192915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610a56578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b039081168652908901518986018990528051898701819052908a0191849160608801905b80841015610a4057845183168252938c019360019390930192908c0190610a1e565b50988b01989650505092880192506001016109c0565b50919998505050505050505050565b6001600160a01b0381168114610a7a57600080fd5b50565b600060208284031215610a8f57600080fd5b8135610a9a81610a65565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610ae25783516001600160a01b031683529284019291840191600101610abd565b50909695505050505050565b600060208284031215610b0057600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b2f57600080fd5b8151610a9a81610a65565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b8f57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220afc69f3b7eb40d4a92f119f7e4a07e5486ce908aca6bb3db17fd2405996dfd2664736f6c63430008130033",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getActiveTroveManagersForAccount(address)": {
        "notice": "Returns a list of trove managers where `account` has an existing trove"
      },
      "getAllCollateralsAndTroveManagers()": {
        "notice": "Returns all active system trove managers and collaterals, as an `       array of tuples of [(collateral, [troveManager, ...]), ...]"
      }
    },
    "version": 1
  },
  "storageLayout": {
    "storage": [],
    "types": null
  }
}