{
  "address": "0x8E92506660a9e523FE144e21d2A50B43045fdEFd",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_guardian",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_feeReceiver",
          "type": "address"
        },
        {
          "internalType": "contract IBlast",
          "name": "_blast",
          "type": "address"
        },
        {
          "internalType": "contract IWETH",
          "name": "_WETH",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "feeReceiver",
          "type": "address"
        }
      ],
      "name": "FeeReceiverSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "guardian",
          "type": "address"
        }
      ],
      "name": "GuardianSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "NewOwnerAccepted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "NewOwnerCommitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "revokedOwner",
          "type": "address"
        }
      ],
      "name": "NewOwnerRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "OWNERSHIP_TRANSFER_DELAY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WETH",
      "outputs": [
        {
          "internalType": "contract IWETH",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptTransferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "blast",
      "outputs": [
        {
          "internalType": "contract IBlast",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "commitTransferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeReceiver",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "guardian",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ownershipTransferDeadline",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceFeed",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revokeTransferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_feeReceiver",
          "type": "address"
        }
      ],
      "name": "setFeeReceiver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_guardian",
          "type": "address"
        }
      ],
      "name": "setGuardian",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_paused",
          "type": "bool"
        }
      ],
      "name": "setPaused",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "transactionHash": "0x10b80a9e4c3423959f6e6fc415557bdfcc2f093d60c276728da6ef314ac8b140",
  "receipt": {
    "to": null,
    "from": "0xF1658C608708172655A8e70a1624c29F956Ee63D",
    "contractAddress": "0x8E92506660a9e523FE144e21d2A50B43045fdEFd",
    "transactionIndex": 3,
    "gasUsed": "645363",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000008080000000008000000000000100084000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000100000000000000000000000000",
    "blockHash": "0x7efc21ccfbfb9a58506d1e708e6e6a8acbd6fabeeff0867cc52067ce4e0194b8",
    "transactionHash": "0x10b80a9e4c3423959f6e6fc415557bdfcc2f093d60c276728da6ef314ac8b140",
    "logs": [
      {
        "transactionIndex": 3,
        "blockNumber": 2166405,
        "transactionHash": "0x10b80a9e4c3423959f6e6fc415557bdfcc2f093d60c276728da6ef314ac8b140",
        "address": "0x8E92506660a9e523FE144e21d2A50B43045fdEFd",
        "topics": [
          "0xe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e"
        ],
        "data": "0x000000000000000000000000f1658c608708172655a8e70a1624c29f956ee63d",
        "logIndex": 2,
        "blockHash": "0x7efc21ccfbfb9a58506d1e708e6e6a8acbd6fabeeff0867cc52067ce4e0194b8"
      },
      {
        "transactionIndex": 3,
        "blockNumber": 2166405,
        "transactionHash": "0x10b80a9e4c3423959f6e6fc415557bdfcc2f093d60c276728da6ef314ac8b140",
        "address": "0x8E92506660a9e523FE144e21d2A50B43045fdEFd",
        "topics": [
          "0xbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d"
        ],
        "data": "0x00000000000000000000000027f700ae7ae22e2d783303da00975b9276d03faa",
        "logIndex": 3,
        "blockHash": "0x7efc21ccfbfb9a58506d1e708e6e6a8acbd6fabeeff0867cc52067ce4e0194b8"
      }
    ],
    "blockNumber": 2166405,
    "cumulativeGasUsed": "804002",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "0xF1658C608708172655A8e70a1624c29F956Ee63D",
    "0xF1658C608708172655A8e70a1624c29F956Ee63D",
    "0x27f700ae7ae22e2d783303da00975b9276d03faa",
    "0x4300000000000000000000000000000000000002",
    "0x4200000000000000000000000000000000000023"
  ],
  "numDeployments": 1,
  "solcInputHash": "942dc8602b269d303b12c8f7c5649095",
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_feeReceiver\",\"type\":\"address\"},{\"internalType\":\"contract IBlast\",\"name\":\"_blast\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"guardian\",\"type\":\"address\"}],\"name\":\"GuardianSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewOwnerAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"NewOwnerCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"revokedOwner\",\"type\":\"address\"}],\"name\":\"NewOwnerRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OWNERSHIP_TRANSFER_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blast\",\"outputs\":[{\"internalType\":\"contract IBlast\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"commitTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownershipTransferDeadline\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revokeTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"}],\"name\":\"setGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"setFeeReceiver(address)\":{\"params\":{\"_feeReceiver\":\"Address of the fee's recipient\"}},\"setGuardian(address)\":{\"params\":{\"_guardian\":\"Guardian address\"}},\"setPaused(bool)\":{\"params\":{\"_paused\":\"If true the protocol is paused\"}}},\"title\":\"Propel PropelCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setFeeReceiver(address)\":{\"notice\":\"Set the receiver of all fees across the protocol\"},\"setGuardian(address)\":{\"notice\":\"Set the guardian address The guardian can execute some emergency actions\"},\"setPaused(bool)\":{\"notice\":\"Sets the global pause state of the protocol         Pausing is used to mitigate risks in exceptional circumstances         Functionalities affected by pausing are:         - New borrowing is not possible         - New collateral deposits are not possible         - New stability pool deposits are not possible\"}},\"notice\":\"Single source of truth for system-wide values and contract ownership. Ownership of this contract should be the Propel DAO via `AdminVoting`. Other ownable Propel contracts inherit their ownership from this contract using `PropelOwnable`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/core/PropelCore.sol\":\"PropelCore\"},\"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/core/PropelCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nimport \\\"../interfaces/IBlast.sol\\\";\\nimport \\\"../interfaces/IWETH.sol\\\";\\n\\n/**\\n    @title Propel PropelCore\\n    @notice Single source of truth for system-wide values and contract ownership.\\n\\n            Ownership of this contract should be the Propel DAO via `AdminVoting`.\\n            Other ownable Propel contracts inherit their ownership from this contract\\n            using `PropelOwnable`.\\n */\\ncontract PropelCore {\\n\\taddress public feeReceiver;\\n\\taddress public priceFeed;\\n\\tIBlast public blast;\\n\\tIWETH public WETH;\\n\\n\\taddress public owner;\\n\\taddress public pendingOwner;\\n\\tuint256 public ownershipTransferDeadline;\\n\\n\\taddress public guardian;\\n\\n\\t// We enforce a three day delay between committing and applying\\n\\t// an ownership change, as a sanity check on a proposed new owner\\n\\t// and to give users time to react in case the act is malicious.\\n\\tuint256 public constant OWNERSHIP_TRANSFER_DELAY = 86400 * 3;\\n\\n\\t// System-wide pause. When true, disables trove adjustments across all collaterals.\\n\\tbool public paused;\\n\\n\\t// System-wide start time, rounded down the nearest epoch week.\\n\\t// Other contracts that require access to this should inherit `SystemStart`.\\n\\tuint256 public immutable startTime;\\n\\n\\tevent NewOwnerCommitted(address owner, address pendingOwner, uint256 deadline);\\n\\n\\tevent NewOwnerAccepted(address oldOwner, address owner);\\n\\n\\tevent NewOwnerRevoked(address owner, address revokedOwner);\\n\\n\\tevent FeeReceiverSet(address feeReceiver);\\n\\n\\tevent GuardianSet(address guardian);\\n\\n\\tevent Paused();\\n\\n\\tevent Unpaused();\\n\\n\\tconstructor(address _owner, address _guardian, address _feeReceiver, IBlast _blast, IWETH _WETH) {\\n\\t\\towner = _owner;\\n\\t\\tstartTime = (block.timestamp / 1 weeks) * 1 weeks;\\n\\t\\tguardian = _guardian;\\n\\t\\tfeeReceiver = _feeReceiver;\\n\\t\\tblast = _blast;\\n\\t\\tWETH = _WETH;\\n\\n\\t\\temit GuardianSet(_guardian);\\n\\t\\temit FeeReceiverSet(_feeReceiver);\\n\\t}\\n\\n\\tmodifier onlyOwner() {\\n\\t\\trequire(msg.sender == owner, \\\"Only owner\\\");\\n\\t\\t_;\\n\\t}\\n\\n\\t/**\\n\\t * @notice Set the receiver of all fees across the protocol\\n\\t * @param _feeReceiver Address of the fee's recipient\\n\\t */\\n\\tfunction setFeeReceiver(address _feeReceiver) external onlyOwner {\\n\\t\\tfeeReceiver = _feeReceiver;\\n\\t\\temit FeeReceiverSet(_feeReceiver);\\n\\t}\\n\\n\\t/**\\n     * @notice Set the guardian address\\n               The guardian can execute some emergency actions\\n     * @param _guardian Guardian address\\n     */\\n\\tfunction setGuardian(address _guardian) external onlyOwner {\\n\\t\\tguardian = _guardian;\\n\\t\\temit GuardianSet(_guardian);\\n\\t}\\n\\n\\t/**\\n\\t * @notice Sets the global pause state of the protocol\\n\\t *         Pausing is used to mitigate risks in exceptional circumstances\\n\\t *         Functionalities affected by pausing are:\\n\\t *         - New borrowing is not possible\\n\\t *         - New collateral deposits are not possible\\n\\t *         - New stability pool deposits are not possible\\n\\t * @param _paused If true the protocol is paused\\n\\t */\\n\\tfunction setPaused(bool _paused) external {\\n\\t\\trequire((_paused && msg.sender == guardian) || msg.sender == owner, \\\"Unauthorized\\\");\\n\\t\\tpaused = _paused;\\n\\t\\tif (_paused) {\\n\\t\\t\\temit Paused();\\n\\t\\t} else {\\n\\t\\t\\temit Unpaused();\\n\\t\\t}\\n\\t}\\n\\n\\tfunction commitTransferOwnership(address newOwner) external onlyOwner {\\n\\t\\tpendingOwner = newOwner;\\n\\t\\townershipTransferDeadline = block.timestamp + OWNERSHIP_TRANSFER_DELAY;\\n\\n\\t\\temit NewOwnerCommitted(msg.sender, newOwner, block.timestamp + OWNERSHIP_TRANSFER_DELAY);\\n\\t}\\n\\n\\tfunction acceptTransferOwnership() external {\\n\\t\\trequire(msg.sender == pendingOwner, \\\"Only new owner\\\");\\n\\t\\trequire(block.timestamp >= ownershipTransferDeadline, \\\"Deadline not passed\\\");\\n\\n\\t\\temit NewOwnerAccepted(owner, msg.sender);\\n\\n\\t\\towner = pendingOwner;\\n\\t\\tpendingOwner = address(0);\\n\\t\\townershipTransferDeadline = 0;\\n\\t}\\n\\n\\tfunction revokeTransferOwnership() external onlyOwner {\\n\\t\\temit NewOwnerRevoked(msg.sender, pendingOwner);\\n\\n\\t\\tpendingOwner = address(0);\\n\\t\\townershipTransferDeadline = 0;\\n\\t}\\n}\\n\",\"keccak256\":\"0xe4700256c8ab6ce880463ba6a6f63b28598f8ebc1fc038d780fc11ce9c7634d3\",\"license\":\"MIT\"},\"contracts/interfaces/IBlast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nenum YieldMode {\\n\\tAUTOMATIC,\\n\\tVOID,\\n\\tCLAIMABLE\\n}\\n\\nenum GasMode {\\n\\tVOID,\\n\\tCLAIMABLE\\n}\\n\\ninterface IERC20Rebasing {\\n\\t// changes the yield mode of the caller and update the balance\\n\\t// to reflect the configuration\\n\\tfunction configure(YieldMode) external returns (uint256);\\n\\n\\t// \\\"claimable\\\" yield mode accounts can call this this claim their yield\\n\\t// to another address\\n\\tfunction claim(address recipient, uint256 amount) external returns (uint256);\\n\\n\\t// read the claimable amount for an account\\n\\tfunction getClaimableAmount(address account) external view returns (uint256);\\n}\\n\\ninterface IBlast {\\n\\t// configure\\n\\tfunction configureContract(address contractAddress, YieldMode _yield, GasMode gasMode, address governor) external;\\n\\n\\tfunction configure(YieldMode _yield, GasMode gasMode, address governor) external;\\n\\n\\t// base configuration options\\n\\tfunction configureClaimableYield() external;\\n\\n\\tfunction configureClaimableYieldOnBehalf(address contractAddress) external;\\n\\n\\tfunction configureAutomaticYield() external;\\n\\n\\tfunction configureAutomaticYieldOnBehalf(address contractAddress) external;\\n\\n\\tfunction configureVoidYield() external;\\n\\n\\tfunction configureVoidYieldOnBehalf(address contractAddress) external;\\n\\n\\tfunction configureClaimableGas() external;\\n\\n\\tfunction configureClaimableGasOnBehalf(address contractAddress) external;\\n\\n\\tfunction configureVoidGas() external;\\n\\n\\tfunction configureVoidGasOnBehalf(address contractAddress) external;\\n\\n\\tfunction configureGovernor(address _governor) external;\\n\\n\\tfunction configureGovernorOnBehalf(address _newGovernor, address contractAddress) external;\\n\\n\\t// claim yield\\n\\tfunction claimYield(address contractAddress, address recipientOfYield, uint256 amount) external returns (uint256);\\n\\n\\tfunction claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256);\\n\\n\\t// claim gas\\n\\tfunction claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256);\\n\\n\\tfunction claimGasAtMinClaimRate(address contractAddress, address recipientOfGas, uint256 minClaimRateBips) external returns (uint256);\\n\\n\\tfunction claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);\\n\\n\\tfunction claimGas(address contractAddress, address recipientOfGas, uint256 gasToClaim, uint256 gasSecondsToConsume) external returns (uint256);\\n\\n\\t// read functions\\n\\tfunction readClaimableYield(address contractAddress) external view returns (uint256);\\n\\n\\tfunction readYieldConfiguration(address contractAddress) external view returns (uint8);\\n\\n\\tfunction readGasParams(address contractAddress) external view returns (uint256 etherSeconds, uint256 etherBalance, uint256 lastUpdated, GasMode);\\n}\\n\",\"keccak256\":\"0xffaa54f302ba2c47f29080863318906f4094105afb1d5a57798177a9b34f142a\",\"license\":\"MIT\"},\"contracts/interfaces/IWETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.19;\\n\\nimport \\\"../interfaces/IBlast.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface IWETH is IERC20, IERC20Rebasing {\\n\\tfunction deposit() external payable;\\n}\\n\",\"keccak256\":\"0x63d5514ce911f067af3312ed496bb55dae2526835692c6d3e01b2c68c6b28d54\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610a9f380380610a9f83398101604081905261002f91610140565b600480546001600160a01b0319166001600160a01b03871617905561005762093a80426101b5565b6100649062093a806101d7565b608052600780546001600160a01b038681166001600160a01b03199283168117909355600080548783169084161790556002805486831690841617905560038054918516919092161790556040519081527fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e9060200160405180910390a16040516001600160a01b03841681527fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d9060200160405180910390a15050505050610202565b6001600160a01b038116811461013d57600080fd5b50565b600080600080600060a0868803121561015857600080fd5b855161016381610128565b602087015190955061017481610128565b604087015190945061018581610128565b606087015190935061019681610128565b60808701519092506101a781610128565b809150509295509295909350565b6000826101d257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176101fc57634e487b7160e01b600052601160045260246000fd5b92915050565b60805161088261021d60003960006101ee01526108826000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806378e97925116100b2578063ad5c464811610081578063e1cebf0b11610066578063e1cebf0b14610264578063e30c397814610277578063efdcd9741461028a57600080fd5b8063ad5c46481461023e578063b3f006741461025157600080fd5b806378e97925146101e95780637b371107146102105780638a0dac4a146102185780638da5cb5b1461022b57600080fd5b80635c975abb116100ee5780635c975abb1461018f5780636cd550cd146101c4578063741bef1a146101cc5780637433ae7a146101df57600080fd5b806315112f111461012057806316c38b3c1461013c578063175e1a7d14610151578063452a93201461017c575b600080fd5b61012960065481565b6040519081526020015b60405180910390f35b61014f61014a3660046107ba565b61029d565b005b600254610164906001600160a01b031681565b6040516001600160a01b039091168152602001610133565b600754610164906001600160a01b031681565b6007546101b49074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610133565b61014f6103c0565b600154610164906001600160a01b031681565b6101296203f48081565b6101297f000000000000000000000000000000000000000000000000000000000000000081565b61014f610470565b61014f6102263660046107e3565b61059a565b600454610164906001600160a01b031681565b600354610164906001600160a01b031681565b600054610164906001600160a01b031681565b61014f6102723660046107e3565b610643565b600554610164906001600160a01b031681565b61014f6102983660046107e3565b610718565b8080156102b457506007546001600160a01b031633145b806102c957506004546001600160a01b031633145b61031a5760405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600780548215801574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117909155610394576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a150565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a150565b6004546001600160a01b031633146104075760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b600554604080513381526001600160a01b0390921660208301527fd6176b30539d20b54c946c7ca9dca5950b2f1090fc2bfc55cc77a4025a8a78ae910160405180910390a16005805473ffffffffffffffffffffffffffffffffffffffff191690556000600655565b6005546001600160a01b031633146104ca5760405162461bcd60e51b815260206004820152600e60248201527f4f6e6c79206e6577206f776e65720000000000000000000000000000000000006044820152606401610311565b60065442101561051c5760405162461bcd60e51b815260206004820152601360248201527f446561646c696e65206e6f7420706173736564000000000000000000000000006044820152606401610311565b600454604080516001600160a01b0390921682523360208301527f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554910160405180910390a1600580546004805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038416179091551690556000600655565b6004546001600160a01b031633146105e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e906020015b60405180910390a150565b6004546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556106bf6203f4804261080c565b6006557f4c743940588d40b308f73f5275a4e608b25c5374f40e4839fb00467e238acfac33826106f26203f4804261080c565b604080516001600160a01b03948516815293909216602084015290820152606001610638565b6004546001600160a01b0316331461075f5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d90602001610638565b6000602082840312156107cc57600080fd5b813580151581146107dc57600080fd5b9392505050565b6000602082840312156107f557600080fd5b81356001600160a01b03811681146107dc57600080fd5b80820180821115610846577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220c4f622c987d446350c3f84fa95cf1e3d18db9d6fdc69242d39920f595292233164736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806378e97925116100b2578063ad5c464811610081578063e1cebf0b11610066578063e1cebf0b14610264578063e30c397814610277578063efdcd9741461028a57600080fd5b8063ad5c46481461023e578063b3f006741461025157600080fd5b806378e97925146101e95780637b371107146102105780638a0dac4a146102185780638da5cb5b1461022b57600080fd5b80635c975abb116100ee5780635c975abb1461018f5780636cd550cd146101c4578063741bef1a146101cc5780637433ae7a146101df57600080fd5b806315112f111461012057806316c38b3c1461013c578063175e1a7d14610151578063452a93201461017c575b600080fd5b61012960065481565b6040519081526020015b60405180910390f35b61014f61014a3660046107ba565b61029d565b005b600254610164906001600160a01b031681565b6040516001600160a01b039091168152602001610133565b600754610164906001600160a01b031681565b6007546101b49074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610133565b61014f6103c0565b600154610164906001600160a01b031681565b6101296203f48081565b6101297f000000000000000000000000000000000000000000000000000000000000000081565b61014f610470565b61014f6102263660046107e3565b61059a565b600454610164906001600160a01b031681565b600354610164906001600160a01b031681565b600054610164906001600160a01b031681565b61014f6102723660046107e3565b610643565b600554610164906001600160a01b031681565b61014f6102983660046107e3565b610718565b8080156102b457506007546001600160a01b031633145b806102c957506004546001600160a01b031633145b61031a5760405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600780548215801574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117909155610394576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a150565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a150565b6004546001600160a01b031633146104075760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b600554604080513381526001600160a01b0390921660208301527fd6176b30539d20b54c946c7ca9dca5950b2f1090fc2bfc55cc77a4025a8a78ae910160405180910390a16005805473ffffffffffffffffffffffffffffffffffffffff191690556000600655565b6005546001600160a01b031633146104ca5760405162461bcd60e51b815260206004820152600e60248201527f4f6e6c79206e6577206f776e65720000000000000000000000000000000000006044820152606401610311565b60065442101561051c5760405162461bcd60e51b815260206004820152601360248201527f446561646c696e65206e6f7420706173736564000000000000000000000000006044820152606401610311565b600454604080516001600160a01b0390921682523360208301527f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554910160405180910390a1600580546004805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038416179091551690556000600655565b6004546001600160a01b031633146105e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e906020015b60405180910390a150565b6004546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556106bf6203f4804261080c565b6006557f4c743940588d40b308f73f5275a4e608b25c5374f40e4839fb00467e238acfac33826106f26203f4804261080c565b604080516001600160a01b03948516815293909216602084015290820152606001610638565b6004546001600160a01b0316331461075f5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610311565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d90602001610638565b6000602082840312156107cc57600080fd5b813580151581146107dc57600080fd5b9392505050565b6000602082840312156107f557600080fd5b81356001600160a01b03811681146107dc57600080fd5b80820180821115610846577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220c4f622c987d446350c3f84fa95cf1e3d18db9d6fdc69242d39920f595292233164736f6c63430008130033",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "setFeeReceiver(address)": {
        "params": {
          "_feeReceiver": "Address of the fee's recipient"
        }
      },
      "setGuardian(address)": {
        "params": {
          "_guardian": "Guardian address"
        }
      },
      "setPaused(bool)": {
        "params": {
          "_paused": "If true the protocol is paused"
        }
      }
    },
    "title": "Propel PropelCore",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "setFeeReceiver(address)": {
        "notice": "Set the receiver of all fees across the protocol"
      },
      "setGuardian(address)": {
        "notice": "Set the guardian address The guardian can execute some emergency actions"
      },
      "setPaused(bool)": {
        "notice": "Sets the global pause state of the protocol         Pausing is used to mitigate risks in exceptional circumstances         Functionalities affected by pausing are:         - New borrowing is not possible         - New collateral deposits are not possible         - New stability pool deposits are not possible"
      }
    },
    "notice": "Single source of truth for system-wide values and contract ownership. Ownership of this contract should be the Propel DAO via `AdminVoting`. Other ownable Propel contracts inherit their ownership from this contract using `PropelOwnable`.",
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 84,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "feeReceiver",
        "offset": 0,
        "slot": "0",
        "type": "t_address"
      },
      {
        "astId": 86,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "priceFeed",
        "offset": 0,
        "slot": "1",
        "type": "t_address"
      },
      {
        "astId": 89,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "blast",
        "offset": 0,
        "slot": "2",
        "type": "t_contract(IBlast)573"
      },
      {
        "astId": 92,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "WETH",
        "offset": 0,
        "slot": "3",
        "type": "t_contract(IWETH)585"
      },
      {
        "astId": 94,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "owner",
        "offset": 0,
        "slot": "4",
        "type": "t_address"
      },
      {
        "astId": 96,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "pendingOwner",
        "offset": 0,
        "slot": "5",
        "type": "t_address"
      },
      {
        "astId": 98,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "ownershipTransferDeadline",
        "offset": 0,
        "slot": "6",
        "type": "t_uint256"
      },
      {
        "astId": 100,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "guardian",
        "offset": 0,
        "slot": "7",
        "type": "t_address"
      },
      {
        "astId": 107,
        "contract": "contracts/core/PropelCore.sol:PropelCore",
        "label": "paused",
        "offset": 20,
        "slot": "7",
        "type": "t_bool"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_bool": {
        "encoding": "inplace",
        "label": "bool",
        "numberOfBytes": "1"
      },
      "t_contract(IBlast)573": {
        "encoding": "inplace",
        "label": "contract IBlast",
        "numberOfBytes": "20"
      },
      "t_contract(IWETH)585": {
        "encoding": "inplace",
        "label": "contract IWETH",
        "numberOfBytes": "20"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}