mirror of
				https://github.com/Instadapp/dsa-connectors-2.0.git
				synced 2024-07-29 21:57:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| //SPDX-License-Identifier: MIT
 | |
| pragma solidity ^0.8.2;
 | |
| 
 | |
| import {Basic} from "../../common/basic.sol";
 | |
| import {Events} from "./events.sol";
 | |
| import {IFluidMerkleDistributor} from "./interface.sol";
 | |
| import {TokenInterface} from "../../common/interfaces.sol";
 | |
| 
 | |
| abstract contract FluidMerkle is Basic, Events {
 | |
|     IFluidMerkleDistributor internal constant MERKLE_DISTRIBUTOR =
 | |
|         IFluidMerkleDistributor(0x1d3D6d38Da24E9Ff3B17693f6971CAe62c3AA1DE);
 | |
| 
 | |
|     TokenInterface internal constant TOKEN =
 | |
|         TokenInterface(0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb);
 | |
| 
 | |
|     /**
 | |
|      * @dev Claims rewards from Fluid merkle distributor contract
 | |
|      * @param cumulativeAmount_ Total reward cumulated since reward inception.
 | |
|      * @param fToken_ Address of fToken on which rewards are being distributed.
 | |
|      * @param cycle_ Current epoch cycle.
 | |
|      * @param merkleProof_ Merkle proof that validates this claim.
 | |
|      * @param setId_ Id to set the rewards received.
 | |
|      */
 | |
|     function claim(
 | |
|         uint256 cumulativeAmount_,
 | |
|         address fToken_,
 | |
|         uint256 cycle_,
 | |
|         bytes32[] calldata merkleProof_,
 | |
|         uint256 setId_
 | |
|     )
 | |
|         external
 | |
|         payable
 | |
|         returns (string memory _eventName, bytes memory _eventParam)
 | |
|     {
 | |
|         uint256 rewardsBeforeBal_ = TOKEN.balanceOf(address(this));
 | |
| 
 | |
|         MERKLE_DISTRIBUTOR.claim(
 | |
|             address(this),
 | |
|             cumulativeAmount_,
 | |
|             fToken_,
 | |
|             cycle_,
 | |
|             merkleProof_
 | |
|         );
 | |
| 
 | |
|         uint256 rewardsClaimed_ = TOKEN.balanceOf(address(this)) -
 | |
|             rewardsBeforeBal_;
 | |
| 
 | |
|         _eventName = "LogClaim(uint256,address,uint256,bytes32[],uint256,uint256)";
 | |
|         _eventParam = abi.encode(
 | |
|             cumulativeAmount_,
 | |
|             fToken_,
 | |
|             cycle_,
 | |
|             merkleProof_,
 | |
|             rewardsClaimed_,
 | |
|             setId_
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev Claims rewards from Fluid merkle distributor contract
 | |
|      * @param cumulativeAmount_ Total reward cumulated since reward inception.
 | |
|      * @param fToken_ Address of fToken on which rewards are being distributed.
 | |
|      * @param cycle_ Current epoch cycle.
 | |
|      * @param merkleProof_ Merkle proof that validates this claim.
 | |
|      * @param setId_ Id to set the rewards received.
 | |
|      */
 | |
|     function claimOnBehalf(
 | |
|         address recipient_,
 | |
|         uint256 cumulativeAmount_,
 | |
|         address fToken_,
 | |
|         uint256 cycle_,
 | |
|         bytes32[] calldata merkleProof_,
 | |
|         uint256 setId_
 | |
|     )
 | |
|         external
 | |
|         payable
 | |
|         returns (string memory _eventName, bytes memory _eventParam)
 | |
|     {
 | |
|         uint256 rewardsBeforeBal_ = TOKEN.balanceOf(recipient_);
 | |
| 
 | |
|         MERKLE_DISTRIBUTOR.claim(
 | |
|             recipient_,
 | |
|             cumulativeAmount_,
 | |
|             fToken_,
 | |
|             cycle_,
 | |
|             merkleProof_
 | |
|         );
 | |
| 
 | |
|         uint256 rewardsClaimed_ = TOKEN.balanceOf(recipient_) -
 | |
|             rewardsBeforeBal_;
 | |
| 
 | |
|         _eventName = "LogClaimOnBehalf(address,uint256,address,uint256,bytes32[],uint256,uint256)";
 | |
|         _eventParam = abi.encode(
 | |
|             recipient_,
 | |
|             cumulativeAmount_,
 | |
|             fToken_,
 | |
|             cycle_,
 | |
|             merkleProof_,
 | |
|             rewardsClaimed_,
 | |
|             setId_
 | |
|         );
 | |
|     }
 | |
| }
 | |
| 
 | |
| contract ConnectV2FluidMerkleClaim is FluidMerkle {
 | |
|     string public constant name = "Fluid-Merkle-v1.0";
 | |
| }
 | 
