mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Merge branch 'feat/165-repay-return' into 'master'
- Added return values to repay() and withdraw(). Useful for integrators Closes #165 See merge request aave-tech/protocol-v2!188
This commit is contained in:
commit
d5b7df3070
|
@ -5,7 +5,6 @@ pragma experimental ABIEncoderV2;
|
||||||
import {ILendingPoolAddressesProvider} from './ILendingPoolAddressesProvider.sol';
|
import {ILendingPoolAddressesProvider} from './ILendingPoolAddressesProvider.sol';
|
||||||
import {DataTypes} from '../protocol/libraries/types/DataTypes.sol';
|
import {DataTypes} from '../protocol/libraries/types/DataTypes.sol';
|
||||||
|
|
||||||
|
|
||||||
interface ILendingPool {
|
interface ILendingPool {
|
||||||
/**
|
/**
|
||||||
* @dev Emitted on deposit()
|
* @dev Emitted on deposit()
|
||||||
|
@ -195,12 +194,13 @@ interface ILendingPool {
|
||||||
* @param to Address that will receive the underlying, same as msg.sender if the user
|
* @param to Address that will receive the underlying, same as msg.sender if the user
|
||||||
* wants to receive it on his own wallet, or a different address if the beneficiary is a
|
* wants to receive it on his own wallet, or a different address if the beneficiary is a
|
||||||
* different wallet
|
* different wallet
|
||||||
|
* @return The final amount withdrawn
|
||||||
**/
|
**/
|
||||||
function withdraw(
|
function withdraw(
|
||||||
address asset,
|
address asset,
|
||||||
uint256 amount,
|
uint256 amount,
|
||||||
address to
|
address to
|
||||||
) external;
|
) external returns (uint256);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower
|
* @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower
|
||||||
|
@ -235,13 +235,14 @@ interface ILendingPool {
|
||||||
* @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the
|
* @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the
|
||||||
* user calling the function if he wants to reduce/remove his own debt, or the address of any other
|
* user calling the function if he wants to reduce/remove his own debt, or the address of any other
|
||||||
* other borrower whose debt should be removed
|
* other borrower whose debt should be removed
|
||||||
|
* @return The final amount repaid
|
||||||
**/
|
**/
|
||||||
function repay(
|
function repay(
|
||||||
address asset,
|
address asset,
|
||||||
uint256 amount,
|
uint256 amount,
|
||||||
uint256 rateMode,
|
uint256 rateMode,
|
||||||
address onBehalfOf
|
address onBehalfOf
|
||||||
) external;
|
) external returns (uint256);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa
|
* @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa
|
||||||
|
|
|
@ -138,12 +138,13 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
* @param to Address that will receive the underlying, same as msg.sender if the user
|
* @param to Address that will receive the underlying, same as msg.sender if the user
|
||||||
* wants to receive it on his own wallet, or a different address if the beneficiary is a
|
* wants to receive it on his own wallet, or a different address if the beneficiary is a
|
||||||
* different wallet
|
* different wallet
|
||||||
|
* @return The final amount withdrawn
|
||||||
**/
|
**/
|
||||||
function withdraw(
|
function withdraw(
|
||||||
address asset,
|
address asset,
|
||||||
uint256 amount,
|
uint256 amount,
|
||||||
address to
|
address to
|
||||||
) external override whenNotPaused {
|
) external override whenNotPaused returns (uint256) {
|
||||||
DataTypes.ReserveData storage reserve = _reserves[asset];
|
DataTypes.ReserveData storage reserve = _reserves[asset];
|
||||||
|
|
||||||
address aToken = reserve.aTokenAddress;
|
address aToken = reserve.aTokenAddress;
|
||||||
|
@ -179,6 +180,8 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
IAToken(aToken).burn(msg.sender, to, amountToWithdraw, reserve.liquidityIndex);
|
IAToken(aToken).burn(msg.sender, to, amountToWithdraw, reserve.liquidityIndex);
|
||||||
|
|
||||||
emit Withdraw(asset, msg.sender, to, amountToWithdraw);
|
emit Withdraw(asset, msg.sender, to, amountToWithdraw);
|
||||||
|
|
||||||
|
return amountToWithdraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -229,13 +232,14 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
* @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the
|
* @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the
|
||||||
* user calling the function if he wants to reduce/remove his own debt, or the address of any other
|
* user calling the function if he wants to reduce/remove his own debt, or the address of any other
|
||||||
* other borrower whose debt should be removed
|
* other borrower whose debt should be removed
|
||||||
|
* @return The final amount repaid
|
||||||
**/
|
**/
|
||||||
function repay(
|
function repay(
|
||||||
address asset,
|
address asset,
|
||||||
uint256 amount,
|
uint256 amount,
|
||||||
uint256 rateMode,
|
uint256 rateMode,
|
||||||
address onBehalfOf
|
address onBehalfOf
|
||||||
) external override whenNotPaused {
|
) external override whenNotPaused returns (uint256) {
|
||||||
DataTypes.ReserveData storage reserve = _reserves[asset];
|
DataTypes.ReserveData storage reserve = _reserves[asset];
|
||||||
|
|
||||||
(uint256 stableDebt, uint256 variableDebt) = Helpers.getUserCurrentDebt(onBehalfOf, reserve);
|
(uint256 stableDebt, uint256 variableDebt) = Helpers.getUserCurrentDebt(onBehalfOf, reserve);
|
||||||
|
@ -281,6 +285,8 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage
|
||||||
IERC20(asset).safeTransferFrom(msg.sender, aToken, paybackAmount);
|
IERC20(asset).safeTransferFrom(msg.sender, aToken, paybackAmount);
|
||||||
|
|
||||||
emit Repay(asset, onBehalfOf, msg.sender, paybackAmount);
|
emit Repay(asset, onBehalfOf, msg.sender, paybackAmount);
|
||||||
|
|
||||||
|
return paybackAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue
Block a user