mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
//SPDX-License-Identifier: MIT
 | 
						|
pragma solidity ^0.7.0;
 | 
						|
 | 
						|
import { DSMath } from "../../../common/math.sol";
 | 
						|
import { Basic } from "../../../common/basic.sol";
 | 
						|
import { StakedAaveInterface, AaveInterface } from "./interface.sol";
 | 
						|
 | 
						|
abstract contract Helpers is DSMath, Basic {
 | 
						|
 | 
						|
    enum DelegationType {VOTING_POWER, PROPOSITION_POWER, BOTH}
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dev Staked Aave Token
 | 
						|
    */
 | 
						|
    StakedAaveInterface internal constant stkAave = StakedAaveInterface(0x4da27a545c0c5B758a6BA100e3a049001de870f5);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dev Aave Token
 | 
						|
    */
 | 
						|
    AaveInterface internal constant aave = AaveInterface(0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9);
 | 
						|
 | 
						|
    function _delegateAave(address _delegatee, DelegationType _type) internal {
 | 
						|
        if (_type == DelegationType.BOTH) {
 | 
						|
            require(
 | 
						|
                aave.getDelegateeByType(address(this), 0) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
            require(
 | 
						|
                aave.getDelegateeByType(address(this), 1) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            aave.delegate(_delegatee);
 | 
						|
        } else if (_type == DelegationType.VOTING_POWER) {
 | 
						|
            require(
 | 
						|
                aave.getDelegateeByType(address(this), 0) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            aave.delegateByType(_delegatee, 0);
 | 
						|
        } else {
 | 
						|
            require(
 | 
						|
                aave.getDelegateeByType(address(this), 1) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            aave.delegateByType(_delegatee, 1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    function _delegateStakedAave(address _delegatee, DelegationType _type) internal {
 | 
						|
        if (_type == DelegationType.BOTH) {
 | 
						|
            require(
 | 
						|
                stkAave.getDelegateeByType(address(this), 0) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
            require(
 | 
						|
                stkAave.getDelegateeByType(address(this), 1) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            stkAave.delegate(_delegatee);
 | 
						|
        } else if (_type == DelegationType.VOTING_POWER) {
 | 
						|
            require(
 | 
						|
                stkAave.getDelegateeByType(address(this), 0) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            stkAave.delegateByType(_delegatee, 0);
 | 
						|
        } else {
 | 
						|
            require(
 | 
						|
                stkAave.getDelegateeByType(address(this), 1) != _delegatee,
 | 
						|
                "already-delegated"
 | 
						|
            );
 | 
						|
 | 
						|
            stkAave.delegateByType(_delegatee, 1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |