aave-protocol-v2/contracts/misc/AaveProtocolTestHelpers.sol

47 lines
1.9 KiB
Solidity
Raw Normal View History

2020-06-08 15:36:40 +00:00
pragma solidity ^0.6.8;
pragma experimental ABIEncoderV2;
2020-06-08 15:36:40 +00:00
import {ILendingPoolAddressesProvider} from "../interfaces/ILendingPoolAddressesProvider.sol";
import {IERC20Detailed} from "../interfaces/IERC20Detailed.sol";
2020-06-20 23:40:03 +00:00
import {LendingPool} from "../lendingpool/LendingPool.sol";
2020-06-08 15:36:40 +00:00
import {AToken} from "../tokenization/AToken.sol";
contract AaveProtocolTestHelpers {
struct TokenData {
2020-06-08 15:36:40 +00:00
string symbol;
address tokenAddress;
2020-06-08 15:36:40 +00:00
}
ILendingPoolAddressesProvider public immutable ADDRESSES_PROVIDER;
constructor(ILendingPoolAddressesProvider addressesProvider) public {
ADDRESSES_PROVIDER = addressesProvider;
}
function getAllReservesTokens() external view returns(TokenData[] memory) {
2020-06-20 23:40:03 +00:00
LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool()));
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]
});
}
return reservesTokens;
}
function getAllATokens() external view returns(TokenData[] memory) {
2020-06-20 23:40:03 +00:00
LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool()));
address[] memory reserves = pool.getReserves();
TokenData[] memory aTokens = new TokenData[](reserves.length);
2020-06-08 15:36:40 +00:00
for (uint256 i = 0; i < reserves.length; i++) {
(address aTokenAddress,,) = pool.getReserveTokensAddresses(reserves[i]);
aTokens[i] = TokenData({
2020-06-08 15:36:40 +00:00
symbol: AToken(aTokenAddress).symbol(),
tokenAddress: aTokenAddress
2020-06-08 15:36:40 +00:00
});
}
return aTokens;
}
}