mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
feat: add lint
This commit is contained in:
parent
001a4777e6
commit
9bf8613bf6
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user