From 41c13f4568c390b52ba9849dbad982f28e1a6976 Mon Sep 17 00:00:00 2001 From: Shriya Tyagi Date: Sun, 26 Nov 2023 21:22:04 +0530 Subject: [PATCH] feat: added disable collateral --- .../mainnet/connectors/aave/v3/events.sol | 1 + contracts/mainnet/connectors/aave/v3/main.sol | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/contracts/mainnet/connectors/aave/v3/events.sol b/contracts/mainnet/connectors/aave/v3/events.sol index e60aaa12..0324edcd 100644 --- a/contracts/mainnet/connectors/aave/v3/events.sol +++ b/contracts/mainnet/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); event LogDelegateBorrow( diff --git a/contracts/mainnet/connectors/aave/v3/main.sol b/contracts/mainnet/connectors/aave/v3/main.sol index d49a869f..35b2c629 100644 --- a/contracts/mainnet/connectors/aave/v3/main.sol +++ b/contracts/mainnet/connectors/aave/v3/main.sol @@ -402,6 +402,33 @@ 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++) { + bool isEth = tokens[i] == ethAddr; + address _token = isEth ? wethAddr : 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