//SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // pragma experimental ABIEncoderV2; import "./interface.sol"; import "../../common/stores.sol"; import "../../common/basic.sol"; import "../../common/interfaces.sol"; abstract contract Helpers is Stores, Basic { IMorpho public constant MORPHO_BLUE = IMorpho(0x777777c9898D384F785Ee44Acfe945efDFf5f3E0); function _performEthToWethConversion( address _tokenAddress, uint256 _amount, uint256 _getId ) internal returns (TokenInterface _tokenContract, uint256 _amt, bool _isMax) { _amt = getUint(_getId, _amount); _isMax = _amt == uint256(-1); if (_tokenAddress == ethAddr) { _tokenContract = TokenInterface(wethAddr); if (_amt == uint256(-1)) _amt = address(this).balance; convertEthToWeth(true, _tokenContract, _amt); } else { _tokenContract = TokenInterface(_tokenAddress); if (_amt == uint256(-1)) _amt = _tokenContract.balanceOf(address(this)); } } uint256 internal constant MARKET_PARAMS_BYTES_LENGTH = 5 * 32; /// @notice Returns the id of the market `marketParams`. function id(MarketParams memory marketParams) internal pure returns (Id marketParamsId) { assembly { marketParamsId := keccak256(marketParams, MARKET_PARAMS_BYTES_LENGTH) } } }