From 63630c3095052e68f45ea2521d7725d7fc9b3109 Mon Sep 17 00:00:00 2001 From: Samyak Jain <34437877+KaymasJain@users.noreply.github.com> Date: Fri, 22 Jan 2021 23:08:35 +0530 Subject: [PATCH] Aave v2 resolver basics done --- contracts/powerResolver/aave_v2.sol | 81 +++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 contracts/powerResolver/aave_v2.sol diff --git a/contracts/powerResolver/aave_v2.sol b/contracts/powerResolver/aave_v2.sol new file mode 100644 index 0000000..d8a7898 --- /dev/null +++ b/contracts/powerResolver/aave_v2.sol @@ -0,0 +1,81 @@ +pragma solidity ^0.6.0; +pragma experimental ABIEncoderV2; + +interface AaveProtocolDataProvider { + function getUserReserveData(address asset, address user) external view returns ( + uint256 currentATokenBalance, + uint256 currentStableDebt, + uint256 currentVariableDebt, + uint256 principalStableDebt, + uint256 scaledVariableDebt, + uint256 stableBorrowRate, + uint256 liquidityRate, + uint40 stableRateLastUpdated, + bool usageAsCollateralEnabled + ); +} + +interface AaveLendingPool { + function getUserAccountData(address user) external view returns ( + uint256 totalCollateralETH, + uint256 totalDebtETH, + uint256 availableBorrowsETH, + uint256 currentLiquidationThreshold, + uint256 ltv, + uint256 healthFactor + ); +} + +interface AaveAddressProvider { + function getLendingPool() external view returns (address); + function getPriceOracle() external view returns (address); +} + +contract Helpers { + + struct AaveData { + uint collateral; + uint debt; + } + + struct data { + address user; + AaveData[] tokensData; + } + + struct datas { + AaveData[] tokensData; + } + + /** + * @dev get Aave Provider Address + */ + function getAaveAddressProvider() internal pure returns (address) { + return 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5; // Mainnet + // return 0x652B2937Efd0B5beA1c8d54293FC1289672AFC6b; // Kovan + } + +} + +contract Resolver is Helpers { + + function getPositionByAddress( + address[] memory owners + ) + public + view + returns (AaveData[] memory tokensData) + { + AaveAddressProvider addrProvider = AaveAddressProvider(getAaveAddressProvider()); + AaveLendingPool aave = AaveLendingPool(addrProvider.getLendingPool(); + tokensData = new AaveData[](owners.length); + for (uint i = 0; i < owners.length; i++) { + (uint256 collateral,uint256 debt,,,,) = aave.getUserAccountData(owners[i]); + tokensData[i] = AaveData( + collateral, + debt + ); + } + } + +} \ No newline at end of file