aave-protocol-v2/contracts/flashloan/base/FlashLoanReceiverBase.sol

39 lines
1.1 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.6.8;
2020-08-20 10:44:51 +00:00
import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
import {IFlashLoanReceiver} from '../interfaces/IFlashLoanReceiver.sol';
import {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';
2020-08-12 17:36:58 +00:00
import {SafeERC20} from '@openzeppelin/contracts/token/ERC20/SafeERC20.sol';
2020-07-13 13:19:47 +00:00
import '@nomiclabs/buidler/console.sol';
abstract contract FlashLoanReceiverBase is IFlashLoanReceiver {
2020-08-12 17:36:58 +00:00
using SafeERC20 for IERC20;
2020-07-13 08:54:08 +00:00
using SafeMath for uint256;
2020-07-13 08:54:08 +00:00
ILendingPoolAddressesProvider public addressesProvider;
2020-07-13 08:54:08 +00:00
constructor(ILendingPoolAddressesProvider _provider) public {
addressesProvider = _provider;
}
2020-07-13 08:54:08 +00:00
receive() external payable {}
function transferFundsBackInternal(
address _reserve,
address _destination,
uint256 _amount
) internal {
transferInternal(_destination, _reserve, _amount);
2020-07-13 08:54:08 +00:00
}
2020-07-13 08:54:08 +00:00
function transferInternal(
address _destination,
2020-07-13 08:54:08 +00:00
address _reserve,
uint256 _amount
) internal {
2020-08-12 17:36:58 +00:00
IERC20(_reserve).safeTransfer(_destination, _amount);
2020-07-13 08:54:08 +00:00
}
2020-06-02 14:16:22 +00:00
}