From 11e623216e2305f4b2c66c0823d54de65436eb41 Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Tue, 13 Apr 2021 11:31:53 +0530 Subject: [PATCH] Add Aave rewards claimed connector --- .../connectors/aave-rewards/events.sol | 11 ++++++++ .../connectors/aave-rewards/helpers.sol | 12 ++++++++ .../connectors/aave-rewards/interface.sol | 10 +++++++ .../polygon/connectors/aave-rewards/main.sol | 28 +++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 contracts/polygon/connectors/aave-rewards/events.sol create mode 100644 contracts/polygon/connectors/aave-rewards/helpers.sol create mode 100644 contracts/polygon/connectors/aave-rewards/interface.sol create mode 100644 contracts/polygon/connectors/aave-rewards/main.sol diff --git a/contracts/polygon/connectors/aave-rewards/events.sol b/contracts/polygon/connectors/aave-rewards/events.sol new file mode 100644 index 00000000..614e6897 --- /dev/null +++ b/contracts/polygon/connectors/aave-rewards/events.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.7.0; + +contract Events { + event LogClaimed( + address[] assets, + uint256 amt, + bool stake, + uint256 getId, + uint256 setId + ); +} diff --git a/contracts/polygon/connectors/aave-rewards/helpers.sol b/contracts/polygon/connectors/aave-rewards/helpers.sol new file mode 100644 index 00000000..db11d566 --- /dev/null +++ b/contracts/polygon/connectors/aave-rewards/helpers.sol @@ -0,0 +1,12 @@ +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 Incentives + */ + AaveIncentivesInterface internal constant incentives = AaveIncentivesInterface(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B); +} \ No newline at end of file diff --git a/contracts/polygon/connectors/aave-rewards/interface.sol b/contracts/polygon/connectors/aave-rewards/interface.sol new file mode 100644 index 00000000..86024449 --- /dev/null +++ b/contracts/polygon/connectors/aave-rewards/interface.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.7.0; + +interface AaveIncentivesInterface { + function claimRewards( + address[] calldata assets, + uint256 amount, + address to, + bool stake + ) external returns (uint256); +} \ No newline at end of file diff --git a/contracts/polygon/connectors/aave-rewards/main.sol b/contracts/polygon/connectors/aave-rewards/main.sol new file mode 100644 index 00000000..b72044d1 --- /dev/null +++ b/contracts/polygon/connectors/aave-rewards/main.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.7.0; + +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 { + + function claim( + address[] calldata assets, + uint256 amt, + bool stake, + uint256 getId, + uint256 setId + ) external payable returns (string memory _eventName, bytes memory _eventParam) { + uint _amt = getUint(getId, amt); + + require(assets.length > 0, "invalid-assets"); + + _amt = incentives.claimRewards(assets, _amt, address(this), stake); + + setUint(setId, _amt); + + _eventName = "LogClaimed(address[],uint256,bool,uint256,uint256)"; + _eventParam = abi.encode(assets, _amt, stake, getId, setId); + } +} \ No newline at end of file