2020-08-20 12:32:20 +00:00
|
|
|
// SPDX-License-Identifier: agpl-3.0
|
2020-06-08 15:36:40 +00:00
|
|
|
pragma solidity ^0.6.8;
|
|
|
|
pragma experimental ABIEncoderV2;
|
2020-06-08 19:06:26 +00:00
|
|
|
|
2020-07-13 08:54:08 +00:00
|
|
|
import {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';
|
|
|
|
import {IERC20Detailed} from '../interfaces/IERC20Detailed.sol';
|
2020-08-20 12:32:20 +00:00
|
|
|
import {ILendingPool} from '../interfaces/ILendingPool.sol';
|
2020-06-08 15:36:40 +00:00
|
|
|
|
|
|
|
contract AaveProtocolTestHelpers {
|
2020-07-13 08:54:08 +00:00
|
|
|
struct TokenData {
|
|
|
|
string symbol;
|
|
|
|
address tokenAddress;
|
|
|
|
}
|
2020-06-08 15:36:40 +00:00
|
|
|
|
2020-07-13 08:54:08 +00:00
|
|
|
ILendingPoolAddressesProvider public immutable ADDRESSES_PROVIDER;
|
2020-06-08 15:36:40 +00:00
|
|
|
|
2020-07-13 08:54:08 +00:00
|
|
|
constructor(ILendingPoolAddressesProvider addressesProvider) public {
|
|
|
|
ADDRESSES_PROVIDER = addressesProvider;
|
|
|
|
}
|
2020-06-08 15:36:40 +00:00
|
|
|
|
2020-07-13 08:54:08 +00:00
|
|
|
function getAllReservesTokens() external view returns (TokenData[] memory) {
|
2020-08-20 12:32:20 +00:00
|
|
|
ILendingPool pool = ILendingPool(ADDRESSES_PROVIDER.getLendingPool());
|
2020-07-13 08:54:08 +00:00
|
|
|
address[] memory reserves = pool.getReserves();
|
|
|
|
TokenData[] memory reservesTokens = new TokenData[](reserves.length);
|
|
|
|
for (uint256 i = 0; i < reserves.length; i++) {
|
|
|
|
reservesTokens[i] = TokenData({
|
|
|
|
symbol: (reserves[i] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
|
|
|
|
? 'ETH'
|
|
|
|
: IERC20Detailed(reserves[i]).symbol(),
|
|
|
|
tokenAddress: reserves[i]
|
|
|
|
});
|
2020-06-09 09:11:19 +00:00
|
|
|
}
|
2020-07-13 08:54:08 +00:00
|
|
|
return reservesTokens;
|
|
|
|
}
|
2020-06-09 09:11:19 +00:00
|
|
|
|
2020-07-13 08:54:08 +00:00
|
|
|
function getAllATokens() external view returns (TokenData[] memory) {
|
2020-08-20 12:32:20 +00:00
|
|
|
ILendingPool pool = ILendingPool(ADDRESSES_PROVIDER.getLendingPool());
|
2020-07-13 08:54:08 +00:00
|
|
|
address[] memory reserves = pool.getReserves();
|
|
|
|
TokenData[] memory aTokens = new TokenData[](reserves.length);
|
|
|
|
for (uint256 i = 0; i < reserves.length; i++) {
|
|
|
|
(address aTokenAddress, , ) = pool.getReserveTokensAddresses(reserves[i]);
|
2020-07-13 10:24:36 +00:00
|
|
|
aTokens[i] = TokenData({
|
2020-08-20 12:32:20 +00:00
|
|
|
symbol: IERC20Detailed(aTokenAddress).symbol(),
|
2020-07-13 10:24:36 +00:00
|
|
|
tokenAddress: aTokenAddress
|
|
|
|
});
|
2020-06-08 15:36:40 +00:00
|
|
|
}
|
2020-07-13 08:54:08 +00:00
|
|
|
return aTokens;
|
|
|
|
}
|
|
|
|
}
|