dsa-connectors/contracts/mainnet/connectors/morpho-rewards/main.sol

136 lines
3.6 KiB
Solidity
Raw Normal View History

2022-10-19 21:04:55 +00:00
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
import "./helpers.sol";
import "./events.sol";
/**
* @title Morpho Rewards.
* @dev Claim Morpho and Underlying Pool Rewards.
*/
abstract contract MorphoRewards is Helpers, Events {
/**
* @dev Claim Pending MORPHO Rewards.
* @notice Claims rewards.
2022-10-21 00:10:04 +00:00
* @param _account The address of the claimer.
2022-10-19 21:04:55 +00:00
* @param _claimable The overall claimable amount of token rewards.
2022-10-21 00:10:04 +00:00
* @param _proof The merkle proof that validates this claim.
2022-10-19 21:04:55 +00:00
*/
2022-10-22 00:33:20 +00:00
function claimMorpho(
address _account,
uint256 _claimable,
bytes32[] calldata _proof,
uint256 _setId
)
2022-10-19 21:04:55 +00:00
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
2022-10-21 00:10:04 +00:00
require(_proof.length > 0, "proofs-empty");
2022-10-19 21:04:55 +00:00
2022-10-21 00:10:04 +00:00
MORPHO_REWARDS.claim(_account, _claimable, _proof);
2022-10-19 21:04:55 +00:00
2022-10-22 00:33:20 +00:00
setUint(_setId, _claimable);
2022-10-25 17:31:29 +00:00
_eventName = "LogClaimedMorpho(address,uint256,uint256)";
_eventParam = abi.encode(_account, _claimable, _setId);
2022-10-19 21:04:55 +00:00
}
/**
* @dev Claim Underlying Pool Rewards.
* @notice Claims rewards for the given assets.
* @param _poolTokenAddresses The cToken addresses to claim rewards from.
* @param _tradeForMorphoToken Whether or not to trade reward tokens for MORPHO tokens.
* @param _setId Set ID for claimed amount(in COMP).
*/
function claimCompound(
address[] calldata _poolTokenAddresses,
bool _tradeForMorphoToken,
uint256 _setId
)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
uint256 _amountOfRewards = MORPHO_COMPOUND.claimRewards(
_poolTokenAddresses,
_tradeForMorphoToken
);
setUint(_setId, _amountOfRewards);
_eventName = "LogClaimedCompound(address[],bool,uint256,uint256)";
_eventParam = abi.encode(
_poolTokenAddresses,
_tradeForMorphoToken,
_amountOfRewards,
_setId
);
}
/**
* @dev Claim Underlying Pool Rewards.
* @notice Claims rewards for the given assets.
* @param _poolTokenAddresses The assets to claim rewards from (aToken or variable debt token).
* @param _tradeForMorphoToken Whether or not to trade reward tokens for MORPHO tokens.
* @param _setId Set ID for claimed amount(in reward token).
*/
function claimAave(
address[] calldata _poolTokenAddresses,
bool _tradeForMorphoToken,
uint256 _setId
)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
uint256 _amountOfRewards = MORPHO_AAVE.claimRewards(
_poolTokenAddresses,
_tradeForMorphoToken
);
setUint(_setId, _amountOfRewards);
_eventName = "LogClaimedAave(address[],bool,uint256,uint256)";
_eventParam = abi.encode(
_poolTokenAddresses,
_tradeForMorphoToken,
_amountOfRewards,
_setId
);
}
2023-06-23 09:09:36 +00:00
/**
2023-06-23 18:54:10 +00:00
* @dev Claims rewards for the given assets from Morpho Aave V3.
2023-06-23 09:09:36 +00:00
* @notice Claims rewards for the given assets.
* @param _poolTokenAddresses The assets to claim rewards from (aToken or variable debt token).
* @param _onBehalf The address for which rewards are claimed and sent to.
*/
2023-06-23 09:52:33 +00:00
function claimMorphoAaveV3(
2023-06-23 09:09:36 +00:00
address[] calldata _poolTokenAddresses,
address _onBehalf
)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
(address[] memory _rewardTokens, uint256[] memory _claimedAmounts) = MORPHO_AAVE_V3.claimRewards(
_poolTokenAddresses,
_onBehalf
);
2023-06-23 18:54:10 +00:00
_eventName = "LogClaimedMorphoAaveV3(address[],address,address[],uint256[])";
2023-06-23 09:09:36 +00:00
_eventParam = abi.encode(
_poolTokenAddresses,
_onBehalf,
_rewardTokens,
_claimedAmounts
);
}
2022-10-19 21:04:55 +00:00
}
2022-10-22 00:33:20 +00:00
contract ConnectV2MorphoRewards is MorphoRewards {
2023-06-23 18:54:10 +00:00
string public constant name = "Morpho-Rewards-v1.1";
2022-10-19 21:04:55 +00:00
}