Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Base #311

Merged
merged 2 commits into from
Aug 26, 2023
Merged

Base #311

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions contracts/base/connectors/aave/aave-v3-rewards/events.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

contract Events {
event LogClaimed(
address[] assets,
uint256 amt,
uint256 getId,
uint256 setId
);

event LogAllClaimed(address[] assets, address[] rewards, uint256[] amts);
}
14 changes: 14 additions & 0 deletions contracts/base/connectors/aave/aave-v3-rewards/helpers.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

import { DSMath } from "../../../common/math.sol";
import { Basic } from "../../../common/basic.sol";
import { AaveIncentivesInterface } from "./interface.sol";

abstract contract Helpers is DSMath, Basic {
/**
* @dev Aave v3 Incentives
*/
AaveIncentivesInterface internal constant incentives =
AaveIncentivesInterface(0xf9cc4F0D883F1a1eb2c253bdb46c254Ca51E1F44);
}
15 changes: 15 additions & 0 deletions contracts/base/connectors/aave/aave-v3-rewards/interface.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

interface AaveIncentivesInterface {
function claimRewards(
address[] calldata assets,
uint256 amount,
address to,
address reward
) external returns (uint256);

function claimAllRewards(address[] calldata assets, address to)
external
returns (address[] memory rewardsList, uint256[] memory claimedAmounts);
}
78 changes: 78 additions & 0 deletions contracts/base/connectors/aave/aave-v3-rewards/main.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

/**
* @title Aave v3 Rewards.
* @dev Claim Aave v3 rewards.
*/

import { TokenInterface } from "../../../common/interfaces.sol";
import { Stores } from "../../../common/stores.sol";
import { Helpers } from "./helpers.sol";
import { Events } from "./events.sol";

abstract contract IncentivesResolver is Helpers, Events {
/**
* @dev Claim Pending Rewards.
* @notice Claim Pending Rewards from Aave v3 incentives contract.
* @param assets The list of assets supplied and borrowed.
* @param amt The amount of reward to claim. (uint(-1) for max)
* @param reward The address of reward token to claim.
* @param getId ID to retrieve amt.
* @param setId ID stores the amount of rewards claimed.
*/
function claim(
address[] calldata assets,
uint256 amt,
address reward,
uint256 getId,
uint256 setId
)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
uint256 _amt = getUint(getId, amt);

require(assets.length > 0, "invalid-assets");

_amt = incentives.claimRewards(assets, _amt, address(this), reward);

TokenInterface weth = TokenInterface(wethAddr);
uint256 wethAmount = weth.balanceOf(address(this));
convertWethToEth(wethAmount > 0, weth, wethAmount);

setUint(setId, _amt);

_eventName = "LogClaimed(address[],uint256,uint256,uint256)";
_eventParam = abi.encode(assets, _amt, getId, setId);
}

/**
* @dev Claim All Pending Rewards.
* @notice Claim All Pending Rewards from Aave v3 incentives contract.
* @param assets The list of assets supplied and borrowed.
*/
function claimAll(address[] calldata assets)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
require(assets.length > 0, "invalid-assets");
uint256[] memory _amts = new uint256[](assets.length);
address[] memory _rewards = new address[](assets.length);

(_rewards, _amts) = incentives.claimAllRewards(assets, address(this));

TokenInterface weth = TokenInterface(wethAddr);
uint256 wethAmount = weth.balanceOf(address(this));
convertWethToEth(wethAmount > 0, weth, wethAmount);

_eventName = "LogAllClaimed(address[],address[],uint256[])";
_eventParam = abi.encode(assets, _rewards, _amts);
}
}

contract ConnectV3AaveIncentivesBase is IncentivesResolver {
string public constant name = "Aave-V3-Incentives-v1";
}
25 changes: 25 additions & 0 deletions contracts/base/connectors/aave/v3-import-permit/events.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

contract Events {
event LogAaveV3ImportWithPermit(
address indexed user,
address[] atokens,
string[] supplyIds,
string[] borrowIds,
uint256[] flashLoanFees,
uint256[] supplyAmts,
uint256[] borrowAmts
);
event LogAaveV3ImportWithPermitAndCollateral(
address indexed user,
address[] atokens,
string[] supplyIds,
string[] borrowIds,
uint256[] flashLoanFees,
uint256[] supplyAmts,
uint256[] borrowAmts,
bool[] enableCollateral
);
}
Loading
Loading