From e4ec3db116b8c076adc798c9afc81765d1f0ea12 Mon Sep 17 00:00:00 2001 From: pradyuman-verma <pradyumnverma27@gmail.com> Date: Sun, 10 Apr 2022 17:57:02 +0530 Subject: [PATCH] added disable collateral optimism --- .../optimism/connectors/aave/v3/events.sol | 1 + .../optimism/connectors/aave/v3/main.sol | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/contracts/optimism/connectors/aave/v3/events.sol b/contracts/optimism/connectors/aave/v3/events.sol index 09c88ea7..b29b4425 100644 --- a/contracts/optimism/connectors/aave/v3/events.sol +++ b/contracts/optimism/connectors/aave/v3/events.sol @@ -29,6 +29,7 @@ contract Events { uint256 setId ); event LogEnableCollateral(address[] tokens); + event LogDisableCollateral(address[] tokens); event LogSwapRateMode(address indexed token, uint256 rateMode); event LogSetUserEMode(uint8 categoryId); } diff --git a/contracts/optimism/connectors/aave/v3/main.sol b/contracts/optimism/connectors/aave/v3/main.sol index 2beb8e67..da927eee 100644 --- a/contracts/optimism/connectors/aave/v3/main.sol +++ b/contracts/optimism/connectors/aave/v3/main.sol @@ -251,6 +251,32 @@ abstract contract AaveResolver is Events, Helpers { _eventParam = abi.encode(tokens); } + /** + * @dev Disable collateral + * @notice Disable an array of tokens as collateral + * @param tokens Array of tokens to disable as collateral + */ + function disableCollateral(address[] calldata tokens) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + uint256 _length = tokens.length; + require(_length > 0, "0-tokens-not-allowed"); + + AaveInterface aave = AaveInterface(aaveProvider.getPool()); + + for (uint256 i = 0; i < _length; i++) { + address token = tokens[i]; + if (getCollateralBalance(token) > 0 && getIsColl(token)) { + aave.setUserUseReserveAsCollateral(token, false); + } + } + + _eventName = "LogDisableCollateral(address[])"; + _eventParam = abi.encode(tokens); + } + /** * @dev Swap borrow rate mode * @notice Swaps user borrow rate mode between variable and stable