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

33 lines
1.2 KiB
Solidity

// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';
import {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';
import {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';
import {IFlashLoanReceiver} from '../interfaces/IFlashLoanReceiver.sol';
import {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';
import {ILendingPool} from '../../interfaces/ILendingPool.sol';
abstract contract FlashLoanReceiverBase is IFlashLoanReceiver {
using SafeERC20 for IERC20;
using SafeMath for uint256;
ILendingPoolAddressesProvider internal _addressesProvider;
ILendingPool internal _lendingPool;
constructor(ILendingPoolAddressesProvider provider) public {
_addressesProvider = provider;
_lendingPool = ILendingPool(provider.getLendingPool());
}
function getAddressesProvider() external view override returns (ILendingPoolAddressesProvider) {
return _addressesProvider;
}
function getLendingPool() external view override returns (ILendingPool) {
return _lendingPool;
}
receive() external payable {}
}