mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
273 lines
7.6 KiB
Solidity
273 lines
7.6 KiB
Solidity
pragma solidity ^0.6.8;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
import {ReserveConfiguration} from '../../contracts/libraries/configuration/ReserveConfiguration.sol';
|
|
import {ILendingPool} from '../../contracts/interfaces/ILendingPool.sol';
|
|
import {LendingPool} from '../../contracts/lendingpool/LendingPool.sol';
|
|
|
|
/*
|
|
Certora: Harness that delegates calls to the original LendingPool.
|
|
*/
|
|
contract LendingPoolHarness is ILendingPool {
|
|
|
|
LendingPool private originalPool;
|
|
|
|
function deposit(
|
|
address asset,
|
|
uint256 amount,
|
|
address onBehalfOf,
|
|
uint16 referralCode
|
|
) external override {
|
|
originalPool.deposit(asset, amount, onBehalfOf, referralCode);
|
|
}
|
|
|
|
function withdraw(address asset, uint256 amount) external override {
|
|
originalPool.withdraw(asset, amount);
|
|
}
|
|
|
|
function getBorrowAllowance(
|
|
address fromUser,
|
|
address toUser,
|
|
address asset,
|
|
uint256 interestRateMode
|
|
) external override view returns (uint256) {
|
|
return originalPool.getBorrowAllowance(fromUser, toUser, asset, interestRateMode);
|
|
}
|
|
|
|
function delegateBorrowAllowance(
|
|
address asset,
|
|
address user,
|
|
uint256 interestRateMode,
|
|
uint256 amount
|
|
) external override {
|
|
originalPool.delegateBorrowAllowance(asset, user, interestRateMode, amount);
|
|
}
|
|
|
|
function borrow(
|
|
address asset,
|
|
uint256 amount,
|
|
uint256 interestRateMode,
|
|
uint16 referralCode,
|
|
address onBehalfOf
|
|
) external override {
|
|
originalPool.borrow(asset, amount, interestRateMode, referralCode, onBehalfOf);
|
|
}
|
|
|
|
function repay(
|
|
address asset,
|
|
uint256 amount,
|
|
uint256 rateMode,
|
|
address onBehalfOf
|
|
) external override {
|
|
originalPool.repay(asset, amount, rateMode, onBehalfOf);
|
|
}
|
|
|
|
function swapBorrowRateMode(address asset, uint256 rateMode) external override {
|
|
originalPool.swapBorrowRateMode(asset, rateMode);
|
|
}
|
|
|
|
function rebalanceStableBorrowRate(address asset, address user) external override {
|
|
originalPool.rebalanceStableBorrowRate(asset, user);
|
|
}
|
|
|
|
function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) external override {
|
|
originalPool.setUserUseReserveAsCollateral(asset, useAsCollateral);
|
|
}
|
|
|
|
function liquidationCall(
|
|
address collateral,
|
|
address asset,
|
|
address user,
|
|
uint256 purchaseAmount,
|
|
bool receiveAToken
|
|
) external override {
|
|
originalPool.liquidationCall(collateral, asset, user, purchaseAmount, receiveAToken);
|
|
}
|
|
|
|
function repayWithCollateral(
|
|
address collateral,
|
|
address principal,
|
|
address user,
|
|
uint256 principalAmount,
|
|
address receiver,
|
|
bytes calldata params
|
|
) external override {
|
|
originalPool.repayWithCollateral(collateral, principal, user, principalAmount, receiver, params);
|
|
}
|
|
|
|
function flashLoan(
|
|
address receiverAddress,
|
|
address asset,
|
|
uint256 amount,
|
|
uint256 mode,
|
|
bytes calldata params,
|
|
uint16 referralCode
|
|
) external override {
|
|
originalPool.flashLoan(receiverAddress, asset, amount, mode, params, referralCode);
|
|
}
|
|
|
|
function swapLiquidity(
|
|
address receiverAddress,
|
|
address fromAsset,
|
|
address toAsset,
|
|
uint256 amountToSwap,
|
|
bytes calldata params
|
|
) external override {
|
|
originalPool.swapLiquidity(receiverAddress, fromAsset, toAsset, amountToSwap, params);
|
|
}
|
|
|
|
function getReserveConfigurationData(address asset)
|
|
external
|
|
override
|
|
view
|
|
returns (
|
|
uint256 decimals,
|
|
uint256 ltv,
|
|
uint256 liquidationThreshold,
|
|
uint256 liquidationBonus,
|
|
uint256 reserveFactor,
|
|
address interestRateStrategyAddress,
|
|
bool usageAsCollateralEnabled,
|
|
bool borrowingEnabled,
|
|
bool stableBorrowRateEnabled,
|
|
bool isActive,
|
|
bool isFreezed
|
|
)
|
|
{
|
|
return originalPool.getReserveConfigurationData(asset);
|
|
}
|
|
|
|
function getReserveTokensAddresses(address asset)
|
|
external
|
|
override
|
|
view
|
|
returns (
|
|
address aTokenAddress,
|
|
address stableDebtTokenAddress,
|
|
address variableDebtTokenAddress
|
|
)
|
|
{
|
|
return originalPool.getReserveTokensAddresses(asset);
|
|
}
|
|
|
|
function getReserveData(address asset)
|
|
external
|
|
override
|
|
view
|
|
returns (
|
|
uint256 availableLiquidity,
|
|
uint256 totalStableDebt,
|
|
uint256 totalVariableDebt,
|
|
uint256 liquidityRate,
|
|
uint256 variableBorrowRate,
|
|
uint256 stableBorrowRate,
|
|
uint256 averageStableBorrowRate,
|
|
uint256 liquidityIndex,
|
|
uint256 variableBorrowIndex,
|
|
uint40 lastUpdateTimestamp
|
|
)
|
|
{
|
|
return originalPool.getReserveData(asset);
|
|
}
|
|
|
|
function getUserAccountData(address user)
|
|
external
|
|
override
|
|
view
|
|
returns (
|
|
uint256 totalCollateralETH,
|
|
uint256 totalBorrowsETH,
|
|
uint256 availableBorrowsETH,
|
|
uint256 currentLiquidationThreshold,
|
|
uint256 ltv,
|
|
uint256 healthFactor
|
|
)
|
|
{
|
|
return originalPool.getUserAccountData(user);
|
|
}
|
|
|
|
function getUserReserveData(address asset, address user)
|
|
external
|
|
override
|
|
view
|
|
returns (
|
|
uint256 currentATokenBalance,
|
|
uint256 currentStableDebt,
|
|
uint256 currentVariableDebt,
|
|
uint256 principalStableDebt,
|
|
uint256 scaledVariableDebt,
|
|
uint256 stableBorrowRate,
|
|
uint256 liquidityRate,
|
|
uint40 stableRateLastUpdated,
|
|
bool usageAsCollateralEnabled
|
|
)
|
|
{
|
|
return originalPool.getUserReserveData(asset, user);
|
|
}
|
|
|
|
function getReserves() external override view returns (address[] memory) {
|
|
return originalPool.getReserves();
|
|
}
|
|
|
|
function initReserve(
|
|
address asset,
|
|
address aTokenAddress,
|
|
address stableDebtAddress,
|
|
address variableDebtAddress,
|
|
address interestRateStrategyAddress
|
|
) external override {
|
|
originalPool.initReserve(asset, aTokenAddress, stableDebtAddress, variableDebtAddress, interestRateStrategyAddress);
|
|
}
|
|
|
|
function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress)
|
|
external
|
|
override
|
|
{
|
|
originalPool.setReserveInterestRateStrategyAddress(asset, rateStrategyAddress);
|
|
}
|
|
|
|
function setConfiguration(address asset, uint256 configuration) external override {
|
|
originalPool.setConfiguration(asset, configuration);
|
|
}
|
|
|
|
function getConfiguration(address asset)
|
|
external
|
|
override
|
|
view
|
|
returns (ReserveConfiguration.Map memory)
|
|
{
|
|
return originalPool.getConfiguration(asset);
|
|
}
|
|
|
|
function getReserveNormalizedIncome(address asset) external override view returns (uint256) {
|
|
return originalPool.getReserveNormalizedIncome(asset);
|
|
}
|
|
|
|
mapping(uint256 => uint256) private reserveNormalizedVariableDebt;
|
|
|
|
function getReserveNormalizedVariableDebt(address asset)
|
|
external
|
|
override
|
|
view
|
|
returns (uint256)
|
|
{
|
|
require(reserveNormalizedVariableDebt[block.timestamp] == 1e27);
|
|
return reserveNormalizedVariableDebt[block.timestamp];
|
|
}
|
|
|
|
function balanceDecreaseAllowed(
|
|
address asset,
|
|
address user,
|
|
uint256 amount
|
|
) external override view returns (bool) {
|
|
return originalPool.balanceDecreaseAllowed(asset, user, amount);
|
|
}
|
|
|
|
function setPause(bool val) external override {
|
|
originalPool.setPause(val);
|
|
}
|
|
|
|
function paused() external override view returns (bool) {
|
|
return originalPool.paused();
|
|
}
|
|
} |