{ "address": "0xEA0C58bE3133Cb7f035faCF45cb1d4F84CF178B4", "abi": [ { "inputs": [ { "internalType": "contract IWstETH", "name": "wstETH", "type": "address" }, { "internalType": "contract IWeETH", "name": "weETH", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidOracleError", "type": "error" }, { "inputs": [], "name": "getExchangeRate", "outputs": [ { "internalType": "uint256", "name": "exchangeRate_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExchangeRateLiquidate", "outputs": [ { "internalType": "uint256", "name": "exchangeRate_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExchangeRateOperate", "outputs": [ { "internalType": "uint256", "name": "exchangeRate_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "weETHOracleData", "outputs": [ { "internalType": "uint256", "name": "weETHExchangeRate_", "type": "uint256" }, { "internalType": "contract IWeETH", "name": "weETH_", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wstETHOracleData", "outputs": [ { "internalType": "uint256", "name": "wstETHExchangeRate_", "type": "uint256" }, { "internalType": "contract IWstETH", "name": "wstETH_", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "transactionHash": "0xdd9a4260e8ab7cbffbb964eb13a28d84efefaa0f64a10564a276a8055b736808", "receipt": { "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", "from": "0x0Ed35B1609Ec45c7079E80d11149a52717e4859A", "contractAddress": null, "transactionIndex": 322, "gasUsed": "400673", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "blockHash": "0x60ed6435e9d54f09467b1f1d7e51d8cb7d66ca22b8efdc2669c7c981a4c9224d", "transactionHash": "0xdd9a4260e8ab7cbffbb964eb13a28d84efefaa0f64a10564a276a8055b736808", "logs": [], "blockNumber": 20024268, "cumulativeGasUsed": "21378040", "status": 1, "byzantium": true }, "args": [ "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee" ], "numDeployments": 1, "solcInputHash": "1989963ad64c4704dbe1170530c79d20", "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IWstETH\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IWeETH\",\"name\":\"weETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorId_\",\"type\":\"uint256\"}],\"name\":\"FluidOracleError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getExchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"exchangeRate_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExchangeRateLiquidate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"exchangeRate_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExchangeRateOperate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"exchangeRate_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"weETHOracleData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weETHExchangeRate_\",\"type\":\"uint256\"},{\"internalType\":\"contract IWeETH\",\"name\":\"weETH_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wstETHOracleData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wstETHExchangeRate_\",\"type\":\"uint256\"},{\"internalType\":\"contract IWstETH\",\"name\":\"wstETH_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"weETH\":\"address of the weETH contract\",\"wstETH\":\"address of the wstETH contract\"}},\"getExchangeRate()\":{\"details\":\"Deprecated. Use `getExchangeRateOperate()` and `getExchangeRateLiquidate()` instead. Only implemented for backwards compatibility.\"}},\"title\":\"Oracle for weETH (Etherfi's wrapped eETH) to wstETH. wstETH is the debt token here (get amount of wstETH for 1 weETH)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getExchangeRateLiquidate()\":{\"notice\":\"Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for liquidations\"},\"getExchangeRateOperate()\":{\"notice\":\"Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for operates\"},\"weETHOracleData()\":{\"notice\":\"returns all weETH oracle related data as utility for easy off-chain use / block explorer in a single view method\"},\"wstETHOracleData()\":{\"notice\":\"returns all wWtETH oracle related data as utility for easy off-chain use / block explorer in a single view method\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/oracles/weETHwstETHOracle.sol\":\"WeETHWstETHOracle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[]},\"sources\":{\"contracts/oracle/error.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\ncontract Error {\\n error FluidOracleError(uint256 errorId_);\\n}\\n\",\"keccak256\":\"0xc7b7e945238168d216c480e9dd4fbaaf8780645d58c47f9abdaa4f29910568fe\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/errorTypes.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nlibrary ErrorTypes {\\n /***********************************|\\n | UniV3CheckCLRSOracle | \\n |__________________________________*/\\n\\n /// @notice thrown when the delta between main price source and check rate source is exceeding the allowed delta\\n uint256 internal constant UniV3CheckCLRSOracle__InvalidPrice = 60001;\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant UniV3CheckCLRSOracle__InvalidParams = 60002;\\n\\n /// @notice thrown when the exchange rate is zero, even after all possible fallbacks depending on config\\n uint256 internal constant UniV3CheckCLRSOracle__ExchangeRateZero = 60003;\\n\\n /***********************************|\\n | sUSDe Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant SUSDeOracle__InvalidParams = 60102;\\n\\n /***********************************|\\n | Chainlink Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant ChainlinkOracle__InvalidParams = 61001;\\n\\n /***********************************|\\n | UniswapV3 Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant UniV3Oracle__InvalidParams = 62001;\\n\\n /// @notice thrown when constructor is called with invalid ordered seconds agos values\\n uint256 internal constant UniV3Oracle__InvalidSecondsAgos = 62002;\\n\\n /// @notice thrown when constructor is called with invalid delta values > 100%\\n uint256 internal constant UniV3Oracle__InvalidDeltas = 62003;\\n\\n /***********************************|\\n | WstETh Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant WstETHOracle__InvalidParams = 63001;\\n\\n /***********************************|\\n | Redstone Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant RedstoneOracle__InvalidParams = 64001;\\n\\n /***********************************|\\n | Fallback Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant FallbackOracle__InvalidParams = 65001;\\n\\n /***********************************|\\n | FallbackCLRSOracle | \\n |__________________________________*/\\n\\n /// @notice thrown when the exchange rate is zero, even for the fallback oracle source (if enabled)\\n uint256 internal constant FallbackCLRSOracle__ExchangeRateZero = 66001;\\n\\n /***********************************|\\n | WstETHCLRSOracle | \\n |__________________________________*/\\n\\n /// @notice thrown when the exchange rate is zero, even for the fallback oracle source (if enabled)\\n uint256 internal constant WstETHCLRSOracle__ExchangeRateZero = 67001;\\n\\n /***********************************|\\n | CLFallbackUniV3Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when the exchange rate is zero, even for the uniV3 rate\\n uint256 internal constant CLFallbackUniV3Oracle__ExchangeRateZero = 68001;\\n\\n /***********************************|\\n | WstETHCLRS2UniV3CheckCLRSOracle | \\n |__________________________________*/\\n\\n /// @notice thrown when the exchange rate is zero, even for the uniV3 rate\\n uint256 internal constant WstETHCLRS2UniV3CheckCLRSOracle__ExchangeRateZero = 69001;\\n\\n /***********************************|\\n | WeETh Oracle | \\n |__________________________________*/\\n\\n /// @notice thrown when an invalid parameter is passed to a method\\n uint256 internal constant WeETHOracle__InvalidParams = 70001;\\n}\\n\",\"keccak256\":\"0x8c742fefdf4acbdb11e4ca21572969d58e513a805a61e19e6d90a8a0bf094c4c\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/fluidOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { IFluidOracle } from \\\"./interfaces/iFluidOracle.sol\\\";\\n\\n/// @title FluidOracle\\n/// @notice Base contract that any Fluid Oracle must implement\\nabstract contract FluidOracle is IFluidOracle {\\n /// @inheritdoc IFluidOracle\\n function getExchangeRate() external view virtual returns (uint256 exchangeRate_);\\n\\n /// @inheritdoc IFluidOracle\\n function getExchangeRateOperate() external view virtual returns (uint256 exchangeRate_);\\n\\n /// @inheritdoc IFluidOracle\\n function getExchangeRateLiquidate() external view virtual returns (uint256 exchangeRate_);\\n}\\n\",\"keccak256\":\"0xd275b5b0ada86c81a4dc6c79a24b1cb8bcfc374f4856e08917bf1bae83574b37\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/implementations/weETHOracleImpl.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { IWeETH } from \\\"../interfaces/external/IWeETH.sol\\\";\\nimport { ErrorTypes } from \\\"../errorTypes.sol\\\";\\nimport { Error as OracleError } from \\\"../error.sol\\\";\\nimport { OracleUtils } from \\\"../libraries/oracleUtils.sol\\\";\\n\\n/// @title weETH Oracle Implementation\\n/// @notice This contract is used to get the exchange rate between weETH and eETH\\nabstract contract WeETHOracleImpl is OracleError {\\n /// @notice constant value for price scaling to reduce gas usage\\n uint256 internal immutable _WEETH_PRICE_SCALER_MULTIPLIER;\\n\\n /// @notice WEETH contract, e.g. on mainnet 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee\\n IWeETH internal immutable _WEETH;\\n\\n /// @notice constructor sets the weETH (Etherfi's wrapped eETH) `weETH_` token address.\\n constructor(IWeETH weETH_) {\\n if (address(weETH_) == address(0)) {\\n revert FluidOracleError(ErrorTypes.WeETHOracle__InvalidParams);\\n }\\n\\n _WEETH = weETH_;\\n\\n _WEETH_PRICE_SCALER_MULTIPLIER = 10 ** (OracleUtils.RATE_OUTPUT_DECIMALS - 18); // e.g. 1e9\\n }\\n\\n /// @notice Get the exchange rate from weETH contract\\n /// @return rate_ The exchange rate in `OracleUtils.RATE_OUTPUT_DECIMALS`\\n function _getWeETHExchangeRate() internal view returns (uint256 rate_) {\\n return _WEETH.getEETHByWeETH(1e18) * _WEETH_PRICE_SCALER_MULTIPLIER;\\n }\\n\\n /// @notice returns all weETH oracle related data as utility for easy off-chain use / block explorer in a single view method\\n function weETHOracleData() public view returns (uint256 weETHExchangeRate_, IWeETH weETH_) {\\n return (_getWeETHExchangeRate(), _WEETH);\\n }\\n}\\n\",\"keccak256\":\"0x2d25cdc82dc959e5208a4daec1dcd7fadb1ac0511bbd4e4583d00b914f88722c\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/implementations/wstETHOracleImpl.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { IWstETH } from \\\"../interfaces/external/IWstETH.sol\\\";\\nimport { ErrorTypes } from \\\"../errorTypes.sol\\\";\\nimport { Error as OracleError } from \\\"../error.sol\\\";\\nimport { OracleUtils } from \\\"../libraries/oracleUtils.sol\\\";\\n\\n/// @title wstETH Oracle Implementation\\n/// @notice This contract is used to get the exchange rate between wstETH and stETH\\nabstract contract WstETHOracleImpl is OracleError {\\n /// @notice constant value for price scaling to reduce gas usage\\n uint256 internal immutable _WSTETH_PRICE_SCALER_MULTIPLIER;\\n\\n /// @notice WSTETH contract, e.g. on mainnet 0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0\\n IWstETH internal immutable _WSTETH;\\n\\n /// @notice constructor sets the wstETH `wstETH_` token address.\\n constructor(IWstETH wstETH_) {\\n if (address(wstETH_) == address(0)) {\\n revert FluidOracleError(ErrorTypes.WstETHOracle__InvalidParams);\\n }\\n\\n _WSTETH = wstETH_;\\n\\n _WSTETH_PRICE_SCALER_MULTIPLIER = 10 ** (OracleUtils.RATE_OUTPUT_DECIMALS - 18); // e.g. 1e9\\n }\\n\\n /// @notice Get the exchange rate from wstETH contract\\n /// @return rate_ The exchange rate in `OracleUtils.RATE_OUTPUT_DECIMALS`\\n function _getWstETHExchangeRate() internal view returns (uint256 rate_) {\\n return _WSTETH.stEthPerToken() * _WSTETH_PRICE_SCALER_MULTIPLIER;\\n }\\n\\n /// @notice returns all wWtETH oracle related data as utility for easy off-chain use / block explorer in a single view method\\n function wstETHOracleData() public view returns (uint256 wstETHExchangeRate_, IWstETH wstETH_) {\\n return (_getWstETHExchangeRate(), _WSTETH);\\n }\\n}\\n\",\"keccak256\":\"0x2c923e9fc9107a469e55dfa9a6a1d02f44be696cfafdb078d76fc6d3ef5695bc\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/interfaces/external/IWeETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\ninterface IWeETH {\\n /**\\n * @notice Get amount of eETH for {_weETHAmount} weETH\\n * @return Amount of eETH for {_weETHAmount} weETH\\n */\\n function getEETHByWeETH(uint256 _weETHAmount) external view returns (uint256);\\n\\n /**\\n * @notice Get amount of weETH for {_eETHAmount} eETH\\n * @return Amount of weETH for {_eETHAmount} eETH\\n */\\n function getWeETHByeETH(uint256 _eETHAmount) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x88db56795f04ab655f6fd917a73f2308ab7da726e5b04b91e0b6a88f4d7b9d09\",\"license\":\"MIT\"},\"contracts/oracle/interfaces/external/IWstETH.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\ninterface IWstETH {\\n /**\\n * @notice Get amount of stETH for 1 wstETH\\n * @return Amount of stETH for 1 wstETH\\n */\\n function stEthPerToken() external view returns (uint256);\\n\\n /**\\n * @notice Get amount of wstETH for 1 stETH\\n * @return Amount of wstETH for 1 stETH\\n */\\n function tokensPerStEth() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xfe6c8477bea4b01e693d5a8ca635e795e203fe53ddee0fb30f3dcf9a0e5f4f61\",\"license\":\"MIT\"},\"contracts/oracle/interfaces/iFluidOracle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\ninterface IFluidOracle {\\n /// @dev Deprecated. Use `getExchangeRateOperate()` and `getExchangeRateLiquidate()` instead. Only implemented for\\n /// backwards compatibility.\\n function getExchangeRate() external view returns (uint256 exchangeRate_);\\n\\n /// @notice Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for operates\\n function getExchangeRateOperate() external view returns (uint256 exchangeRate_);\\n\\n /// @notice Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for liquidations\\n function getExchangeRateLiquidate() external view returns (uint256 exchangeRate_);\\n}\\n\",\"keccak256\":\"0x410b5f85b64414df35131bbf322261e2a11956d58af3800d8b71b5befb9907d4\",\"license\":\"MIT\"},\"contracts/oracle/libraries/oracleUtils.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\n/// @title Oracle utils library\\n/// @notice implements common utility methods for Fluid Oracles\\nlibrary OracleUtils {\\n /// @dev The scaler for max delta point math (100%)\\n uint256 internal constant HUNDRED_PERCENT_DELTA_SCALER = 10_000;\\n /// @dev output precision of rates\\n uint256 internal constant RATE_OUTPUT_DECIMALS = 27;\\n\\n /// @dev checks if `mainSourceRate_` is within a `maxDeltaPercent_` of `checkSourceRate_`. Returns true if so.\\n function isRateOutsideDelta(\\n uint256 mainSourceRate_,\\n uint256 checkSourceRate_,\\n uint256 maxDeltaPercent_\\n ) internal pure returns (bool) {\\n uint256 offset_ = (checkSourceRate_ * maxDeltaPercent_) / HUNDRED_PERCENT_DELTA_SCALER;\\n return (mainSourceRate_ > (checkSourceRate_ + offset_) || mainSourceRate_ < (checkSourceRate_ - offset_));\\n }\\n}\\n\",\"keccak256\":\"0x968b1a0606875abd523895c5075cf6c34c296919e77b0da7dd952374398e2a4c\",\"license\":\"BUSL-1.1\"},\"contracts/oracle/oracles/weETHwstETHOracle.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { FluidOracle } from \\\"../fluidOracle.sol\\\";\\nimport { WstETHOracleImpl } from \\\"../implementations/wstETHOracleImpl.sol\\\";\\nimport { WeETHOracleImpl } from \\\"../implementations/weETHOracleImpl.sol\\\";\\nimport { IWstETH } from \\\"../interfaces/external/IWstETH.sol\\\";\\nimport { IWeETH } from \\\"../interfaces/external/IWeETH.sol\\\";\\nimport { OracleUtils } from \\\"../libraries/oracleUtils.sol\\\";\\n\\n/// @title Oracle for weETH (Etherfi's wrapped eETH) to wstETH. wstETH is the debt token here (get amount of wstETH for 1 weETH)\\ncontract WeETHWstETHOracle is FluidOracle, WstETHOracleImpl, WeETHOracleImpl {\\n /// @param wstETH address of the wstETH contract\\n /// @param weETH address of the weETH contract\\n constructor(IWstETH wstETH, IWeETH weETH) WstETHOracleImpl(wstETH) WeETHOracleImpl(weETH) {}\\n\\n /// @inheritdoc FluidOracle\\n function getExchangeRateOperate() public view override returns (uint256 exchangeRate_) {\\n // weEth -> wstETH\\n exchangeRate_ =\\n (_WEETH.getEETHByWeETH(1e18) * (10 ** OracleUtils.RATE_OUTPUT_DECIMALS)) /\\n _WSTETH.stEthPerToken();\\n }\\n\\n /// @inheritdoc FluidOracle\\n function getExchangeRateLiquidate() external view override returns (uint256 exchangeRate_) {\\n return getExchangeRateOperate();\\n }\\n\\n /// @inheritdoc FluidOracle\\n function getExchangeRate() external view override returns (uint256 exchangeRate_) {\\n return getExchangeRateOperate();\\n }\\n}\\n\",\"keccak256\":\"0x6b850915483aa5a33d57d4fb38530490e895a7d33b01fc370022e149bdd07f4f\",\"license\":\"BUSL-1.1\"}},\"version\":1}", "bytecode": "0x6101006040523480156200001257600080fd5b506040516200090538038062000905833981016040819052620000359162000110565b80826001600160a01b038116620000685760405163c82fc46560e01b815261f61960048201526024015b60405180910390fd5b6001600160a01b03811660a052620000836012601b62000165565b6200009090600a6200027e565b608052506001600160a01b038116620000c25760405163c82fc46560e01b81526201117160048201526024016200005f565b6001600160a01b03811660e052620000dd6012601b62000165565b620000ea90600a6200027e565b60c0525062000293915050565b6001600160a01b03811681146200010d57600080fd5b50565b600080604083850312156200012457600080fd5b82516200013181620000f7565b60208401519092506200014481620000f7565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156200017b576200017b6200014f565b92915050565b600181815b80851115620001c2578160001904821115620001a657620001a66200014f565b80851615620001b457918102915b93841c939080029062000186565b509250929050565b600082620001db575060016200017b565b81620001ea575060006200017b565b81600181146200020357600281146200020e576200022e565b60019150506200017b565b60ff8411156200022257620002226200014f565b50506001821b6200017b565b5060208310610133831016604e8410600b841016171562000253575081810a6200017b565b6200025f838362000181565b80600019048211156200027657620002766200014f565b029392505050565b60006200028c8383620001ca565b9392505050565b60805160a05160c05160e05161061d620002e86000396000818160d7015281816101cf0152610315015260006102de0152600081816101000152818161027601526103af0152600061038e015261061d6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063dfaba9b511610050578063dfaba9b5146100b9578063e6aa216c146100c1578063f3190c89146100c157600080fd5b80631b3904f21461006c5780638e7bfbc0146100a3575b600080fd5b6100746100c9565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152015b60405180910390f35b6100ab6100fc565b60405190815260200161009a565b610074610268565b6100ab61029b565b6000806100d46102a5565b927f000000000000000000000000000000000000000000000000000000000000000092509050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663035faf826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190610418565b610199601b600a610582565b6040517f94626044000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639462604490602401602060405180830381865afa15801561022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190610418565b6102599190610595565b61026391906105ac565b905090565b60008061027361038a565b927f000000000000000000000000000000000000000000000000000000000000000092509050565b60006102636100fc565b6040517f94626044000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639462604490602401602060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103809190610418565b6102639190610595565b60007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663035faf826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035c573d6000803e3d6000fd5b60006020828403121561042a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156104b957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561049f5761049f610431565b808516156104ac57918102915b93841c9390800290610465565b509250929050565b6000826104d05750600161057c565b816104dd5750600061057c565b81600181146104f357600281146104fd57610519565b600191505061057c565b60ff84111561050e5761050e610431565b50506001821b61057c565b5060208310610133831016604e8410600b841016171561053c575081810a61057c565b6105468383610460565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561057857610578610431565b0290505b92915050565b600061058e83836104c1565b9392505050565b808202811582820484141761057c5761057c610431565b6000826105e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220443b43615811dec1c8493be8af14df2045b7032acf9a531a0319d7f3df79b46e64736f6c63430008150033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063dfaba9b511610050578063dfaba9b5146100b9578063e6aa216c146100c1578063f3190c89146100c157600080fd5b80631b3904f21461006c5780638e7bfbc0146100a3575b600080fd5b6100746100c9565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152015b60405180910390f35b6100ab6100fc565b60405190815260200161009a565b610074610268565b6100ab61029b565b6000806100d46102a5565b927f000000000000000000000000000000000000000000000000000000000000000092509050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663035faf826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190610418565b610199601b600a610582565b6040517f94626044000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639462604490602401602060405180830381865afa15801561022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f9190610418565b6102599190610595565b61026391906105ac565b905090565b60008061027361038a565b927f000000000000000000000000000000000000000000000000000000000000000092509050565b60006102636100fc565b6040517f94626044000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639462604490602401602060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103809190610418565b6102639190610595565b60007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663035faf826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035c573d6000803e3d6000fd5b60006020828403121561042a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156104b957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561049f5761049f610431565b808516156104ac57918102915b93841c9390800290610465565b509250929050565b6000826104d05750600161057c565b816104dd5750600061057c565b81600181146104f357600281146104fd57610519565b600191505061057c565b60ff84111561050e5761050e610431565b50506001821b61057c565b5060208310610133831016604e8410600b841016171561053c575081810a61057c565b6105468383610460565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561057857610578610431565b0290505b92915050565b600061058e83836104c1565b9392505050565b808202811582820484141761057c5761057c610431565b6000826105e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220443b43615811dec1c8493be8af14df2045b7032acf9a531a0319d7f3df79b46e64736f6c63430008150033", "devdoc": { "kind": "dev", "methods": { "constructor": { "params": { "weETH": "address of the weETH contract", "wstETH": "address of the wstETH contract" } }, "getExchangeRate()": { "details": "Deprecated. Use `getExchangeRateOperate()` and `getExchangeRateLiquidate()` instead. Only implemented for backwards compatibility." } }, "title": "Oracle for weETH (Etherfi's wrapped eETH) to wstETH. wstETH is the debt token here (get amount of wstETH for 1 weETH)", "version": 1 }, "userdoc": { "kind": "user", "methods": { "getExchangeRateLiquidate()": { "notice": "Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for liquidations" }, "getExchangeRateOperate()": { "notice": "Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for operates" }, "weETHOracleData()": { "notice": "returns all weETH oracle related data as utility for easy off-chain use / block explorer in a single view method" }, "wstETHOracleData()": { "notice": "returns all wWtETH oracle related data as utility for easy off-chain use / block explorer in a single view method" } }, "version": 1 }, "storageLayout": { "storage": [], "types": null } }