mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma solidity ^0.7.0;
 | |
| 
 | |
| // import files from common directory
 | |
| import { Stores } from "../common/stores.sol";
 | |
| import { DSMath } from "../common/math.sol";
 | |
| import { TokenInterface } from "../common/interfaces.sol";
 | |
| 
 | |
| interface ICurve {
 | |
|   function claim(address addr) external;
 | |
| }
 | |
| 
 | |
| abstract contract CurveVestingHelpers is Stores, DSMath {
 | |
|   /**
 | |
|   * @dev Return Curve Token Address
 | |
|   */
 | |
|   function getCurveTokenAddr() virtual internal view returns (address) {
 | |
|     return 0xD533a949740bb3306d119CC777fa900bA034cd52;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|   * @dev Return Curve Vesting Address
 | |
|   */
 | |
|   function getCurveVestingAddr() virtual internal view returns (address) {
 | |
|     return 0x575CCD8e2D300e2377B43478339E364000318E2c;
 | |
|   }
 | |
| }
 | |
| 
 | |
| abstract contract CurveVestingProtocol is CurveVestingHelpers {
 | |
|   event LogClaim(address account, uint256 claimAmount, uint256 getId, uint256 setId);
 | |
| 
 | |
|   /**
 | |
|   * @dev Claim Curve DAO Token.
 | |
|   * @param getId Get token amount at this ID from `InstaMemory` Contract.
 | |
|   * @param setId Set token amount at this ID in `InstaMemory` Contract.
 | |
|   */
 | |
|   function claim(uint getId, uint setId) external{
 | |
|     TokenInterface curveTokenContract = TokenInterface(getCurveTokenAddr());
 | |
| 
 | |
|     uint initialCurveBal = curveTokenContract.balanceOf(address(this));
 | |
|     ICurve(getCurveVestingAddr()).claim(address(this));
 | |
|     uint finalCurveBal = curveTokenContract.balanceOf(address(this));
 | |
| 
 | |
|     uint claimedAmt = sub(finalCurveBal, initialCurveBal);
 | |
| 
 | |
|     setUint(setId, claimedAmt);
 | |
| 
 | |
|     emit LogClaim(address(this), claimedAmt, getId, setId);
 | |
|   }
 | |
| }
 | |
| 
 | |
| contract ConnectCurveVesting is CurveVestingProtocol {
 | |
|   string public name = "Curve-vesting-v1";
 | |
| }
 | |
| 
 | 
