From 9bf8613bf63b6ae482c61465125c6827dd95e4bc Mon Sep 17 00:00:00 2001 From: Shriya Tyagi Date: Mon, 11 Dec 2023 17:48:35 +0530 Subject: [PATCH] feat: add lint --- .../mainnet/connectors/morpho-blue/events.sol | 5 +- .../connectors/morpho-blue/helpers.sol | 93 +++-- .../connectors/morpho-blue/interface.sol | 99 ++--- .../mainnet/connectors/morpho-blue/main.sol | 374 ++++++++++++------ 4 files changed, 383 insertions(+), 188 deletions(-) diff --git a/contracts/mainnet/connectors/morpho-blue/events.sol b/contracts/mainnet/connectors/morpho-blue/events.sol index 69286651..35792a0c 100644 --- a/contracts/mainnet/connectors/morpho-blue/events.sol +++ b/contracts/mainnet/connectors/morpho-blue/events.sol @@ -4,11 +4,10 @@ pragma experimental ABIEncoderV2; import "./interface.sol"; contract Events { - event LogSupplyAssets( MarketParams marketParams, uint256 assets, - uint256 shares, + uint256 shares, uint256 getId, uint256 setId ); @@ -16,7 +15,7 @@ contract Events { event LogSupplyOnBehalf( MarketParams marketParams, uint256 assets, - uint256 shares, + uint256 shares, address onBehalf, uint256 getId, uint256 setId diff --git a/contracts/mainnet/connectors/morpho-blue/helpers.sol b/contracts/mainnet/connectors/morpho-blue/helpers.sol index 02027aec..bc9c6abd 100644 --- a/contracts/mainnet/connectors/morpho-blue/helpers.sol +++ b/contracts/mainnet/connectors/morpho-blue/helpers.sol @@ -8,19 +8,18 @@ import "../../common/basic.sol"; import "../../common/interfaces.sol"; abstract contract Helpers is Stores, Basic { - IMorpho public constant MORPHO_BLUE = IMorpho(0x777777c9898D384F785Ee44Acfe945efDFf5f3E0); // TODO: Update uint256 internal constant MARKET_PARAMS_BYTES_LENGTH = 5 * 32; /// @dev The number of virtual assets of 1 enforces a conversion rate between shares and assets when a market is - /// empty. + /// empty. uint256 internal constant VIRTUAL_ASSETS = 1; /// @dev The number of virtual shares has been chosen low enough to prevent overflows, and high enough to ensure - /// high precision computations. - uint256 internal constant VIRTUAL_SHARES = 1e6; + /// high precision computations. + uint256 internal constant VIRTUAL_SHARES = 1e6; enum Mode { Collateral, @@ -46,11 +45,15 @@ abstract contract Helpers is Stores, Basic { } // Set the correct token contract - _tokenContract = _isEth ? TokenInterface(wethAddr) : TokenInterface(_marketParams.loanToken); + _tokenContract = _isEth + ? TokenInterface(wethAddr) + : TokenInterface(_marketParams.loanToken); // Check for max value if (_assets == type(uint256).max) { - uint256 _maxAvailable = _isEth ? address(this).balance : _tokenContract.balanceOf(address(this)); + uint256 _maxAvailable = _isEth + ? address(this).balance + : _tokenContract.balanceOf(address(this)); if (_mode == Mode.Repay) { uint256 _amtDebt = getPaybackBalance(_marketParams, _onBehalf); _amt = min(_maxAvailable, _amtDebt); @@ -77,15 +80,26 @@ abstract contract Helpers is Stores, Basic { bool _isEth = _marketParams.loanToken == ethAddr; // Set the token contract based on whether the loan token is ETH - _tokenContract = _isEth ? TokenInterface(wethAddr) : TokenInterface(_marketParams.loanToken); + _tokenContract = _isEth + ? TokenInterface(wethAddr) + : TokenInterface(_marketParams.loanToken); // Handle the max share case or normal share conversion if (_isRepay && _shares == type(uint256).max) { - uint256 _maxAvailable = _isEth ? address(this).balance : _tokenContract.balanceOf(address(this)); - _assets = min(_maxAvailable, getPaybackBalance(_marketParams, _onBehalf)); + uint256 _maxAvailable = _isEth + ? address(this).balance + : _tokenContract.balanceOf(address(this)); + _assets = min( + _maxAvailable, + getPaybackBalance(_marketParams, _onBehalf) + ); } else { bytes32 _id = id(_marketParams); - _assets = _toAssetsUp(_shareAmt, MORPHO_BLUE.market(_id).totalSupplyAssets, MORPHO_BLUE.market(_id).totalSupplyShares); + _assets = _toAssetsUp( + _shareAmt, + MORPHO_BLUE.market(_id).totalSupplyAssets, + MORPHO_BLUE.market(_id).totalSupplyShares + ); } // Perform ETH to WETH conversion if necessary @@ -100,34 +114,53 @@ abstract contract Helpers is Stores, Basic { } /// @notice Returns the payback balance in assets. - function getPaybackBalance(MarketParams memory _marketParams, address _onBehalf) internal view returns(uint256 _assets) { + function getPaybackBalance( + MarketParams memory _marketParams, + address _onBehalf + ) internal view returns (uint256 _assets) { bytes32 _id = id(_marketParams); uint256 _shareAmt = MORPHO_BLUE.position(_id, _onBehalf).supplyShares; - _assets = - _toAssetsUp( - _shareAmt, - MORPHO_BLUE.market(_id).totalSupplyAssets, - MORPHO_BLUE.market(_id).totalSupplyShares - ); - + _assets = _toAssetsUp( + _shareAmt, + MORPHO_BLUE.market(_id).totalSupplyAssets, + MORPHO_BLUE.market(_id).totalSupplyShares + ); } - /// @notice Returns the id of the market `marketParams`. - function id(MarketParams memory marketParams) internal pure returns (bytes32 marketParamsId) { - assembly { - marketParamsId := keccak256(marketParams, MARKET_PARAMS_BYTES_LENGTH) - } - } + /// @notice Returns the id of the market `marketParams`. + function id( + MarketParams memory marketParams + ) internal pure returns (bytes32 marketParamsId) { + assembly { + marketParamsId := keccak256( + marketParams, + MARKET_PARAMS_BYTES_LENGTH + ) + } + } /// @notice Calculates the value of `shares` quoted in assets, rounding up. - function _toAssetsUp(uint256 _shares, uint256 _totalAssets, uint256 _totalShares) internal pure returns (uint256) { - return _mulDivUp(_shares, _totalAssets + VIRTUAL_ASSETS, _totalShares + VIRTUAL_SHARES); - } + function _toAssetsUp( + uint256 _shares, + uint256 _totalAssets, + uint256 _totalShares + ) internal pure returns (uint256) { + return + _mulDivUp( + _shares, + _totalAssets + VIRTUAL_ASSETS, + _totalShares + VIRTUAL_SHARES + ); + } /// @notice Returns (`x` * `y`) / `d` rounded up. - function _mulDivUp(uint256 x, uint256 y, uint256 d) internal pure returns (uint256) { - return (x * y + (d - 1)) / d; - } + function _mulDivUp( + uint256 x, + uint256 y, + uint256 d + ) internal pure returns (uint256) { + return (x * y + (d - 1)) / d; + } } diff --git a/contracts/mainnet/connectors/morpho-blue/interface.sol b/contracts/mainnet/connectors/morpho-blue/interface.sol index 31f7695e..3bb6a46e 100644 --- a/contracts/mainnet/connectors/morpho-blue/interface.sol +++ b/contracts/mainnet/connectors/morpho-blue/interface.sol @@ -3,19 +3,19 @@ pragma solidity ^0.7.0; pragma experimental ABIEncoderV2; struct MarketParams { - address loanToken; - address collateralToken; - address oracle; - address irm; - uint256 lltv; + address loanToken; + address collateralToken; + address oracle; + address irm; + uint256 lltv; } /// @dev Warning: For `feeRecipient`, `supplyShares` does not contain the accrued shares since the last interest /// accrual. struct Position { - uint256 supplyShares; - uint128 borrowShares; - uint128 collateral; + uint256 supplyShares; + uint128 borrowShares; + uint128 collateral; } /// @dev Warning: `totalSupplyAssets` does not contain the accrued interest since the last interest accrual. @@ -23,56 +23,67 @@ struct Position { /// @dev Warning: `totalSupplyShares` does not contain the additional shares accrued by `feeRecipient` since the last /// interest accrual. struct Market { - uint128 totalSupplyAssets; - uint128 totalSupplyShares; - uint128 totalBorrowAssets; - uint128 totalBorrowShares; - uint128 lastUpdate; - uint128 fee; + uint128 totalSupplyAssets; + uint128 totalSupplyShares; + uint128 totalBorrowAssets; + uint128 totalBorrowShares; + uint128 lastUpdate; + uint128 fee; } - interface IMorpho { function createMarket(MarketParams memory marketParams) external; function supply( - MarketParams memory marketParams, - uint256 assets, - uint256 shares, - address onBehalf, - bytes calldata data - ) external returns (uint256, uint256); + MarketParams memory marketParams, + uint256 assets, + uint256 shares, + address onBehalf, + bytes calldata data + ) external returns (uint256, uint256); function withdraw( - MarketParams memory marketParams, - uint256 assets, - uint256 shares, - address onBehalf, - address receiver - ) external returns (uint256, uint256); + MarketParams memory marketParams, + uint256 assets, + uint256 shares, + address onBehalf, + address receiver + ) external returns (uint256, uint256); function borrow( - MarketParams memory marketParams, - uint256 assets, - uint256 shares, - address onBehalf, - address receiver - ) external returns (uint256, uint256); + MarketParams memory marketParams, + uint256 assets, + uint256 shares, + address onBehalf, + address receiver + ) external returns (uint256, uint256); function repay( - MarketParams memory marketParams, - uint256 assets, - uint256 shares, - address onBehalf, - bytes calldata data - ) external returns (uint256, uint256); + MarketParams memory marketParams, + uint256 assets, + uint256 shares, + address onBehalf, + bytes calldata data + ) external returns (uint256, uint256); - function supplyCollateral(MarketParams memory marketParams, uint256 assets, address onBehalf, bytes calldata data) external; + function supplyCollateral( + MarketParams memory marketParams, + uint256 assets, + address onBehalf, + bytes calldata data + ) external; - function withdrawCollateral(MarketParams memory marketParams, uint256 assets, address onBehalf, address receiver) external; + function withdrawCollateral( + MarketParams memory marketParams, + uint256 assets, + address onBehalf, + address receiver + ) external; - function position(bytes32 id, address user) external view returns(Position memory); + function position( + bytes32 id, + address user + ) external view returns (Position memory); - function market(bytes32 id) external view returns(Market memory); + function market(bytes32 id) external view returns (Market memory); } - diff --git a/contracts/mainnet/connectors/morpho-blue/main.sol b/contracts/mainnet/connectors/morpho-blue/main.sol index cd77ec57..079b9089 100644 --- a/contracts/mainnet/connectors/morpho-blue/main.sol +++ b/contracts/mainnet/connectors/morpho-blue/main.sol @@ -6,7 +6,6 @@ import "./helpers.sol"; import "./events.sol"; abstract contract MorphoBlue is Helpers, Events { - /** * @dev Supply ETH/ERC20 Token for lending. * @notice Supplies assets to Morpho Blue for lending. @@ -17,7 +16,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function supply( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -29,17 +28,31 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, // Loan token contract uint256 _amt - ) = _performEthToWethConversion(_marketParams, _assets, address(this), _getId, Mode.Other); + ) = _performEthToWethConversion( + _marketParams, + _assets, + address(this), + _getId, + Mode.Other + ); // Approving loan token for supplying approve(_tokenContract, address(MORPHO_BLUE), _amt); - + // Updating token addresses _marketParams.loanToken = address(_tokenContract); - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; uint256 _shares; - (_assets, _shares) = MORPHO_BLUE.supply(_marketParams, _amt, 0, address(this), new bytes(0)); + (_assets, _shares) = MORPHO_BLUE.supply( + _marketParams, + _amt, + 0, + address(this), + new bytes(0) + ); setUint(_setId, _assets); @@ -64,8 +77,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function supplyOnBehalf( MarketParams memory _marketParams, - uint256 _assets, - address _onBehalf, + uint256 _assets, + address _onBehalf, uint256 _getId, uint256 _setId ) @@ -77,17 +90,31 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, // Loan token contract uint256 _amt - ) = _performEthToWethConversion(_marketParams, _assets, _onBehalf, _getId, Mode.Other); + ) = _performEthToWethConversion( + _marketParams, + _assets, + _onBehalf, + _getId, + Mode.Other + ); // Approving loan token for supplying approve(_tokenContract, address(MORPHO_BLUE), _amt); - + // Updating token addresses _marketParams.loanToken = address(_tokenContract); - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; uint256 _shares; - (_assets, _shares) = MORPHO_BLUE.supply(_marketParams, _amt, 0, _onBehalf, new bytes(0)); + (_assets, _shares) = MORPHO_BLUE.supply( + _marketParams, + _amt, + 0, + _onBehalf, + new bytes(0) + ); setUint(_setId, _assets); @@ -113,8 +140,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function supplySharesOnBehalf( MarketParams memory _marketParams, - uint256 _shares, - address _onBehalf, + uint256 _shares, + address _onBehalf, uint256 _getId, uint256 _setId ) @@ -125,17 +152,31 @@ abstract contract MorphoBlue is Helpers, Events { // Final converted assets amount for approval and token contract ( TokenInterface _tokenContract, // Loan token contract - uint256 _amt // Shares amount converted to assets - ) = _performEthToWethSharesConversion(_marketParams, _shares, _onBehalf, _getId, false); + uint256 _amt // Shares amount converted to assets + ) = _performEthToWethSharesConversion( + _marketParams, + _shares, + _onBehalf, + _getId, + false + ); // Approving loan token for supplying approve(_tokenContract, address(MORPHO_BLUE), _amt); - + // Updating token addresses _marketParams.loanToken = address(_tokenContract); - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; - (uint256 _assets, ) = MORPHO_BLUE.supply(_marketParams, _amt, _shares, _onBehalf, new bytes(0)); + (uint256 _assets, ) = MORPHO_BLUE.supply( + _marketParams, + _amt, + _shares, + _onBehalf, + new bytes(0) + ); setUint(_setId, _assets); @@ -159,7 +200,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function supplyCollateral( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -171,26 +212,34 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, // Collateral token contract uint256 _amt - ) = _performEthToWethConversion(_marketParams, _assets, address(this), _getId, Mode.Collateral); + ) = _performEthToWethConversion( + _marketParams, + _assets, + address(this), + _getId, + Mode.Collateral + ); // Approving collateral token approve(_tokenContract, address(MORPHO_BLUE), _amt); // Updating token addresses _marketParams.collateralToken = address(_tokenContract); - _marketParams.loanToken = _marketParams.loanToken == ethAddr ? wethAddr : _marketParams.loanToken; + _marketParams.loanToken = _marketParams.loanToken == ethAddr + ? wethAddr + : _marketParams.loanToken; - MORPHO_BLUE.supplyCollateral(_marketParams, _amt, address(this), new bytes(0)); + MORPHO_BLUE.supplyCollateral( + _marketParams, + _amt, + address(this), + new bytes(0) + ); setUint(_setId, _amt); _eventName = "LogSupplyCollateral((address,address,address,address,unit256),uint256,uint256,uint256)"; - _eventParam = abi.encode( - _marketParams, - _assets, - _getId, - _setId - ); + _eventParam = abi.encode(_marketParams, _assets, _getId, _setId); } /** @@ -203,8 +252,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function supplyCollateralOnBehalf( MarketParams memory _marketParams, - uint256 _assets, - address _onBehalf, + uint256 _assets, + address _onBehalf, uint256 _getId, uint256 _setId ) @@ -216,16 +265,29 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, // Collateral token contract uint256 _amt - ) = _performEthToWethConversion(_marketParams, _assets, _onBehalf, _getId, Mode.Collateral); + ) = _performEthToWethConversion( + _marketParams, + _assets, + _onBehalf, + _getId, + Mode.Collateral + ); // Approving collateral token approve(_tokenContract, address(MORPHO_BLUE), _amt); - + // Updating token addresses _marketParams.collateralToken = address(_tokenContract); - _marketParams.loanToken = _marketParams.loanToken == ethAddr ? wethAddr : _marketParams.loanToken; + _marketParams.loanToken = _marketParams.loanToken == ethAddr + ? wethAddr + : _marketParams.loanToken; - MORPHO_BLUE.supplyCollateral(_marketParams, _amt, _onBehalf, new bytes(0)); + MORPHO_BLUE.supplyCollateral( + _marketParams, + _amt, + _onBehalf, + new bytes(0) + ); setUint(_setId, _amt); @@ -249,7 +311,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function withdrawCollateral( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -261,29 +323,33 @@ abstract contract MorphoBlue is Helpers, Events { // Updating token addresses bool _collateralIsEth = _marketParams.collateralToken == ethAddr; - _marketParams.collateralToken = _collateralIsEth ? wethAddr : _marketParams.collateralToken; - _marketParams.loanToken = _marketParams.loanToken == ethAddr ? wethAddr : _marketParams.loanToken; + _marketParams.collateralToken = _collateralIsEth + ? wethAddr + : _marketParams.collateralToken; + _marketParams.loanToken = _marketParams.loanToken == ethAddr + ? wethAddr + : _marketParams.loanToken; // If amount is max, fetch collateral value from Morpho's contract if (_amt == type(uint256).max) { - bytes32 _id = id(_marketParams); + bytes32 _id = id(_marketParams); Position memory _pos = MORPHO_BLUE.position(_id, address(this)); _amt = _pos.collateral; } - MORPHO_BLUE.withdrawCollateral(_marketParams, _amt, address(this), address(this)); + MORPHO_BLUE.withdrawCollateral( + _marketParams, + _amt, + address(this), + address(this) + ); convertWethToEth(_collateralIsEth, TokenInterface(wethAddr), _amt); setUint(_setId, _amt); _eventName = "LogWithdrawCollateral((address,address,address,address,unit256),uint256,uint256,uint256)"; - _eventParam = abi.encode( - _marketParams, - _amt, - _getId, - _setId - ); + _eventParam = abi.encode(_marketParams, _amt, _getId, _setId); } /** @@ -297,8 +363,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function withdrawCollateralOnBehalf( MarketParams memory _marketParams, - uint256 _assets, - address _onBehalf, + uint256 _assets, + address _onBehalf, address _receiver, uint256 _getId, uint256 _setId @@ -311,18 +377,28 @@ abstract contract MorphoBlue is Helpers, Events { // Updating token addresses bool _collateralIsEth = _marketParams.collateralToken == ethAddr; - _marketParams.collateralToken = _collateralIsEth ? wethAddr : _marketParams.collateralToken; - _marketParams.loanToken = _marketParams.loanToken == ethAddr ? wethAddr : _marketParams.loanToken; + _marketParams.collateralToken = _collateralIsEth + ? wethAddr + : _marketParams.collateralToken; + _marketParams.loanToken = _marketParams.loanToken == ethAddr + ? wethAddr + : _marketParams.loanToken; if (_amt == type(uint256).max) { - bytes32 _id = id(_marketParams); + bytes32 _id = id(_marketParams); Position memory _pos = MORPHO_BLUE.position(_id, _onBehalf); _amt = _pos.collateral; } - MORPHO_BLUE.withdrawCollateral(_marketParams, _amt, _onBehalf, _receiver); + MORPHO_BLUE.withdrawCollateral( + _marketParams, + _amt, + _onBehalf, + _receiver + ); - if(_receiver == address(this)) convertWethToEth(_collateralIsEth, TokenInterface(wethAddr), _amt); + if (_receiver == address(this)) + convertWethToEth(_collateralIsEth, TokenInterface(wethAddr), _amt); setUint(_setId, _amt); @@ -347,7 +423,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function withdraw( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -358,17 +434,29 @@ abstract contract MorphoBlue is Helpers, Events { uint256 _amt = getUint(_getId, _assets); bool _isEth = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isEth ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; if (_amt == type(uint256).max) { - bytes32 _id = id(_marketParams); + bytes32 _id = id(_marketParams); Position memory _pos = MORPHO_BLUE.position(_id, address(this)); uint256 _shares = _pos.supplyShares; - _amt = _toAssetsUp(_shares, MORPHO_BLUE.market(_id).totalSupplyAssets, MORPHO_BLUE.market(_id).totalSupplyShares); + _amt = _toAssetsUp( + _shares, + MORPHO_BLUE.market(_id).totalSupplyAssets, + MORPHO_BLUE.market(_id).totalSupplyShares + ); } uint256 _shares; - (_assets, _shares) = MORPHO_BLUE.withdraw(_marketParams, _amt, 0, address(this), address(this)); + (_assets, _shares) = MORPHO_BLUE.withdraw( + _marketParams, + _amt, + 0, + address(this), + address(this) + ); convertWethToEth(_isEth, TokenInterface(wethAddr), _assets); @@ -395,8 +483,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function withdrawOnBehalf( MarketParams memory _marketParams, - uint256 _assets, - address _onBehalf, + uint256 _assets, + address _onBehalf, address _receiver, uint256 _getId, uint256 _setId @@ -408,19 +496,32 @@ abstract contract MorphoBlue is Helpers, Events { uint256 _amt = getUint(_getId, _assets); bool _isEth = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isEth ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; if (_amt == type(uint256).max) { - bytes32 _id = id(_marketParams); + bytes32 _id = id(_marketParams); Position memory _pos = MORPHO_BLUE.position(_id, _onBehalf); uint256 _shares = _pos.supplyShares; - _amt = _toAssetsUp(_shares, MORPHO_BLUE.market(_id).totalSupplyAssets, MORPHO_BLUE.market(_id).totalSupplyShares); + _amt = _toAssetsUp( + _shares, + MORPHO_BLUE.market(_id).totalSupplyAssets, + MORPHO_BLUE.market(_id).totalSupplyShares + ); } uint256 _shares; - (_assets, _shares) = MORPHO_BLUE.withdraw(_marketParams, _amt, 0, _onBehalf, _receiver); + (_assets, _shares) = MORPHO_BLUE.withdraw( + _marketParams, + _amt, + 0, + _onBehalf, + _receiver + ); - if(_receiver == address(this)) convertWethToEth(_isEth, TokenInterface(wethAddr), _assets); + if (_receiver == address(this)) + convertWethToEth(_isEth, TokenInterface(wethAddr), _assets); setUint(_setId, _assets); @@ -446,8 +547,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function withdrawSharesOnBehalf( MarketParams memory _marketParams, - uint256 _shares, - address _onBehalf, + uint256 _shares, + address _onBehalf, address _receiver, uint256 _getId, uint256 _setId @@ -459,17 +560,26 @@ abstract contract MorphoBlue is Helpers, Events { uint256 _shareAmt = getUint(_getId, _shares); bool _isEth = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isEth ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; if (_shareAmt == type(uint256).max) { - bytes32 _id = id(_marketParams); + bytes32 _id = id(_marketParams); Position memory _pos = MORPHO_BLUE.position(_id, _onBehalf); _shareAmt = _pos.supplyShares; } - (uint256 _assets,) = MORPHO_BLUE.withdraw(_marketParams, 0, _shareAmt, _onBehalf, _receiver); + (uint256 _assets, ) = MORPHO_BLUE.withdraw( + _marketParams, + 0, + _shareAmt, + _onBehalf, + _receiver + ); - if(_receiver == address(this)) convertWethToEth(_isEth, TokenInterface(wethAddr), _assets); + if (_receiver == address(this)) + convertWethToEth(_isEth, TokenInterface(wethAddr), _assets); setUint(_setId, _assets); @@ -494,7 +604,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function borrow( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -506,22 +616,24 @@ abstract contract MorphoBlue is Helpers, Events { bool _isETH = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isETH ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; - (, uint256 _shares) = MORPHO_BLUE.borrow(_marketParams, _amt, 0, address(this), address(this)); + (, uint256 _shares) = MORPHO_BLUE.borrow( + _marketParams, + _amt, + 0, + address(this), + address(this) + ); convertWethToEth(_isETH, TokenInterface(wethAddr), _amt); setUint(_setId, _amt); _eventName = "LogBorrow((address,address,address,address,unit256),uint256,uint256,uint256,uint256)"; - _eventParam = abi.encode( - _marketParams, - _amt, - _shares, - _getId, - _setId - ); + _eventParam = abi.encode(_marketParams, _amt, _shares, _getId, _setId); } /** @@ -536,8 +648,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function borrowOnBehalf( MarketParams memory _marketParams, - uint256 _assets, - address _onBehalf, + uint256 _assets, + address _onBehalf, address _receiver, uint256 _getId, uint256 _setId @@ -550,11 +662,20 @@ abstract contract MorphoBlue is Helpers, Events { bool _isETH = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isETH ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; - (, uint256 _shares) = MORPHO_BLUE.borrow(_marketParams, _amt, 0, _onBehalf, _receiver); + (, uint256 _shares) = MORPHO_BLUE.borrow( + _marketParams, + _amt, + 0, + _onBehalf, + _receiver + ); - if (_receiver == address(this)) convertWethToEth(_isETH, TokenInterface(wethAddr), _amt); + if (_receiver == address(this)) + convertWethToEth(_isETH, TokenInterface(wethAddr), _amt); setUint(_setId, _amt); @@ -582,8 +703,8 @@ abstract contract MorphoBlue is Helpers, Events { */ function borrowOnBehalfShares( MarketParams memory _marketParams, - uint256 _shares, - address _onBehalf, + uint256 _shares, + address _onBehalf, address _receiver, uint256 _getId, uint256 _setId @@ -596,11 +717,20 @@ abstract contract MorphoBlue is Helpers, Events { bool _isETH = _marketParams.loanToken == ethAddr; _marketParams.loanToken = _isETH ? wethAddr : _marketParams.loanToken; - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; - (uint256 _assets, ) = MORPHO_BLUE.borrow(_marketParams, 0, _shareAmt, _onBehalf, _receiver); + (uint256 _assets, ) = MORPHO_BLUE.borrow( + _marketParams, + 0, + _shareAmt, + _onBehalf, + _receiver + ); - if (_receiver == address(this)) convertWethToEth(_isETH, TokenInterface(wethAddr), _assets); + if (_receiver == address(this)) + convertWethToEth(_isETH, TokenInterface(wethAddr), _assets); setUint(_setId, _assets); @@ -626,7 +756,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function repay( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, uint256 _getId, uint256 _setId ) @@ -638,21 +768,29 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, uint256 _amt // Assets final amount to repay - ) = _performEthToWethConversion(_marketParams, _assets, address(this), _getId, Mode.Repay); + ) = _performEthToWethConversion( + _marketParams, + _assets, + address(this), + _getId, + Mode.Repay + ); // Approving loan token for repaying approve(_tokenContract, address(MORPHO_BLUE), _amt); // Updating token addresses _marketParams.loanToken = address(_tokenContract); - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; uint256 _shares; (_assets, _shares) = MORPHO_BLUE.repay( - _marketParams, - _amt, - 0, - address(this), + _marketParams, + _amt, + 0, + address(this), new bytes(0) ); @@ -679,7 +817,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function repayOnBehalf( MarketParams memory _marketParams, - uint256 _assets, + uint256 _assets, address _onBehalf, uint256 _getId, uint256 _setId @@ -692,21 +830,29 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, uint256 _amt // Assets final amount to repay - ) = _performEthToWethConversion(_marketParams, _assets, _onBehalf, _getId, Mode.Repay); + ) = _performEthToWethConversion( + _marketParams, + _assets, + _onBehalf, + _getId, + Mode.Repay + ); // Approving loan token for repaying approve(_tokenContract, address(MORPHO_BLUE), _amt); // Updating token addresses _marketParams.loanToken = address(_tokenContract); - _marketParams.collateralToken = _marketParams.collateralToken == ethAddr ? wethAddr : _marketParams.collateralToken; + _marketParams.collateralToken = _marketParams.collateralToken == ethAddr + ? wethAddr + : _marketParams.collateralToken; uint256 _shares; (_assets, _shares) = MORPHO_BLUE.repay( - _marketParams, - _amt, - 0, - _onBehalf, + _marketParams, + _amt, + 0, + _onBehalf, new bytes(0) ); @@ -734,7 +880,7 @@ abstract contract MorphoBlue is Helpers, Events { */ function repayOnBehalfShares( MarketParams memory _marketParams, - uint256 _shares, + uint256 _shares, address _onBehalf, uint256 _getId, uint256 _setId @@ -747,15 +893,21 @@ abstract contract MorphoBlue is Helpers, Events { ( TokenInterface _tokenContract, uint256 _assetsAmt // Assets final amount to repay - ) = _performEthToWethSharesConversion(_marketParams, _shares, _onBehalf, _getId, true); + ) = _performEthToWethSharesConversion( + _marketParams, + _shares, + _onBehalf, + _getId, + true + ); approve(_tokenContract, address(MORPHO_BLUE), _assetsAmt); (uint256 _assets, ) = MORPHO_BLUE.repay( - _marketParams, - _assetsAmt, - 0, - _onBehalf, + _marketParams, + _assetsAmt, + 0, + _onBehalf, new bytes(0) );