Contract Name:
LFWUtils_ETH_LB
Contract Source Code:
<i class='far fa-question-circle text-muted ms-2' data-bs-trigger='hover' data-bs-toggle='tooltip' data-bs-html='true' data-bs-title='Click on the check box to select individual contract to compare. Only 1 contract can be selected from each side.'></i>
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
interface IPair {
function token0() external view returns (address);
function token1() external view returns (address);
function totalSupply() external view returns (uint256);
function getReserves() external view returns (uint112, uint112, uint32);
}
interface IAaveTokenInterface {
function balanceOf(address _user) external view returns (uint256);
}
interface IAaveLendingBorrowingV2Interface {
function getReservesList() external view returns(address[] memory);
function getReserveData(address _token) external view returns(uint256, uint128, uint128, uint128, uint128, uint128, uint40, address, address, address, address, uint8);
}
interface IAaveLendingBorrowingV3Interface {
function getReservesList() external view returns(address[] memory);
function getReserveData(address _token) external view returns(uint256, uint128, uint128, uint128, uint128, uint128, uint40, uint16, address, address, address);
}
contract LFWUtils_ETH_LB {
function getAaveV2LendingInfo(
address _scAddress,
address _userAddress
) public view returns (uint256[] memory lendingInfo, address[] memory lendingData) {
// Define array to return
IAaveLendingBorrowingV2Interface scInterface = IAaveLendingBorrowingV2Interface(_scAddress);
address[] memory listAddresses = scInterface.getReservesList();
lendingInfo = new uint256[](listAddresses.length);
lendingData = new address[](listAddresses.length);
for (uint i = 0; i < listAddresses.length; i++) {
address _data = listAddresses[i];
(uint256 config , , , , , , , address _lendingAddress, , , ,) = scInterface.getReserveData(_data);
if (config != 0) {
IAaveTokenInterface aaveInterface = IAaveTokenInterface(_lendingAddress);
uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
if (_userBalance > 0) {
lendingData[i] = _data;
lendingInfo[i] = _userBalance;
}
}
}
}
function getAaveV2BorrowingInfo(
address _scAddress,
address _userAddress
) public view returns (uint256[] memory borrowingInfo, address[] memory borrowingData) {
// Define array to return
IAaveLendingBorrowingV2Interface scInterface = IAaveLendingBorrowingV2Interface(_scAddress);
address[] memory listAddresses = scInterface.getReservesList();
borrowingInfo = new uint256[](listAddresses.length);
borrowingData = new address[](listAddresses.length);
for (uint i = 0; i < listAddresses.length; i++) {
address _data = listAddresses[i];
(uint256 config , , , , , , , , , address _borrowingAddress, ,) = scInterface.getReserveData(_data);
if (config != 0) {
IAaveTokenInterface aaveInterface = IAaveTokenInterface(_borrowingAddress);
uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
if (_userBalance > 0) {
borrowingData[i] = _data;
borrowingInfo[i] = _userBalance;
}
}
}
}
function getAaveV3LendingInfo(
address _scAddress,
address _userAddress
) public view returns (uint256[] memory lendingInfo, address[] memory lendingData) {
// Define array to return
IAaveLendingBorrowingV3Interface scInterface = IAaveLendingBorrowingV3Interface(_scAddress);
address[] memory listAddresses = scInterface.getReservesList();
lendingInfo = new uint256[](listAddresses.length);
lendingData = new address[](listAddresses.length);
for (uint i = 0; i < listAddresses.length; i++) {
address _data = listAddresses[i];
(uint256 config , , , , , , , ,address _lendingAddress, ,) = scInterface.getReserveData(_data);
if (config != 0) {
IAaveTokenInterface aaveInterface = IAaveTokenInterface(_lendingAddress);
uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
if (_userBalance > 0) {
lendingData[i] = _data;
lendingInfo[i] = _userBalance;
}
}
}
}
function getAaveV3BorrowingInfo(
address _scAddress,
address _userAddress
) public view returns (uint256[] memory borrowingInfo, address[] memory borrowingData) {
// Define array to return
IAaveLendingBorrowingV3Interface scInterface = IAaveLendingBorrowingV3Interface(_scAddress);
address[] memory listAddresses = scInterface.getReservesList();
borrowingInfo = new uint256[](listAddresses.length);
borrowingData = new address[](listAddresses.length);
for (uint i = 0; i < listAddresses.length; i++) {
address _data = listAddresses[i];
(uint256 config , , , , , , , , , ,address _borrowingAddress) = scInterface.getReserveData(_data);
if (config != 0) {
IAaveTokenInterface aaveInterface = IAaveTokenInterface(_borrowingAddress);
uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
if (_userBalance > 0) {
borrowingData[i] = _data;
borrowingInfo[i] = _userBalance;
}
}
}
}
}