// 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 {} }