From 39cf67a83041fe1350bfba65a45b03e8cece9919 Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Sun, 28 Mar 2021 19:09:16 +0530 Subject: [PATCH] Add swap borrow rate method --- contracts/connectors/aave_v2.sol | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/contracts/connectors/aave_v2.sol b/contracts/connectors/aave_v2.sol index 7d231d0..6a783e3 100644 --- a/contracts/connectors/aave_v2.sol +++ b/contracts/connectors/aave_v2.sol @@ -18,6 +18,7 @@ interface AaveInterface { ) external; function repay(address _asset, uint256 _amount, uint256 _rateMode, address _onBehalfOf) external; function setUserUseReserveAsCollateral(address _asset, bool _useAsCollateral) external; + function swapBorrowRateMode(address asset, uint256 rateMode) external; } interface AaveLendingPoolProviderInterface { @@ -115,6 +116,7 @@ contract BasicResolver is AaveHelpers { event LogBorrow(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); event LogPayback(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); event LogEnableCollateral(address[] tokens); + event LogSwapRateMode(address indexed token, uint256 rateMode); /** * @dev Deposit ETH/ERC20_Token. @@ -259,8 +261,26 @@ contract BasicResolver is AaveHelpers { emit LogEnableCollateral(tokens); } + + /** + * @dev Swap borrow rate mode between stable and variable + * @param token The address of the token to swap borrow rate.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) + * @param rateMode Desired borrow rate mode. (Stable = 1, Variable = 2) + */ + function swapBorrowRateMode(address token, uint rateMode) external payable { + AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); + AaveDataProviderInterface aaveData = getAaveDataProvider(); + + uint currentRateMode = rateMode == 1 ? 2 : 1; + + if (getPaybackBalance(aaveData, token, currentRateMode) > 0) { + aave.swapBorrowRateMode(token, rateMode); + } + + emit LogSwapRateMode(token, rateMode); + } } contract ConnectAaveV2 is BasicResolver { - string public name = "AaveV2-v1.1"; + string public name = "AaveV2-v1.2"; }