mirror of
				https://github.com/Instadapp/dsa-connectors-2.0.git
				synced 2024-07-29 21:57:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
//SPDX-License-Identifier: MIT
 | 
						|
pragma solidity 0.8.19;
 | 
						|
 | 
						|
import "./helpers.sol";
 | 
						|
import "./events.sol";
 | 
						|
import {Basic} from "../../common/basic.sol";
 | 
						|
 | 
						|
contract EETHContract is Helpers, Basic, Events {
 | 
						|
    /**
 | 
						|
     * @dev deposit wETH into Etherfi.
 | 
						|
     * @notice unwrap wETH and stake ETH in Etherfi, users receive eETH tokens on a 1:1 basis representing their staked ETH.
 | 
						|
     * @param wethAmount The amount of wETH to deposit. (For max: `uint256(-1)`)
 | 
						|
     * @param getId ID to retrieve amt.
 | 
						|
     * @param setId ID stores the amount of ETH deposited.
 | 
						|
     */
 | 
						|
    function depositWeth(
 | 
						|
        uint256 wethAmount,
 | 
						|
        uint256 getId,
 | 
						|
        uint256 setId
 | 
						|
    ) public returns (string memory _eventName, bytes memory _eventParam) {
 | 
						|
        uint256 _amount = getUint(getId, wethAmount);
 | 
						|
        _amount = _amount == type(uint256).max
 | 
						|
            ? WETH_CONTRACT.balanceOf(address(this))
 | 
						|
            : _amount;
 | 
						|
 | 
						|
        uint256 _ethBeforeBalance = address(this).balance;
 | 
						|
        WETH_CONTRACT.withdraw(_amount);
 | 
						|
        uint256 _ethAfterBalance = address(this).balance;
 | 
						|
 | 
						|
        uint256 _ethAmount = _ethAfterBalance - _ethBeforeBalance;
 | 
						|
        ETHERFI_POOL.deposit{value: _ethAmount}();
 | 
						|
 | 
						|
        setUint(setId, _ethAmount);
 | 
						|
 | 
						|
        _eventName = "LogDepositWeth(uint256,uint256,uint256)";
 | 
						|
        _eventParam = abi.encode(_amount, getId, setId);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dev deposit ETH into Etherfi.
 | 
						|
     * @notice stake ETH in Etherfi, users receive eETH tokens on a 1:1 basis representing their staked ETH.
 | 
						|
     * @param amount The amount of ETH to deposit. (For max: `uint256(-1)`)
 | 
						|
     * @param getId ID to retrieve amt.
 | 
						|
     * @param setId ID stores the amount of ETH deposited.
 | 
						|
     */
 | 
						|
    function deposit(
 | 
						|
        uint256 amount,
 | 
						|
        uint256 getId,
 | 
						|
        uint256 setId
 | 
						|
    )
 | 
						|
        public
 | 
						|
        payable
 | 
						|
        returns (string memory _eventName, bytes memory _eventParam)
 | 
						|
    {
 | 
						|
        uint256 _amount = getUint(getId, amount);
 | 
						|
        _amount = _amount == type(uint256).max
 | 
						|
            ? address(this).balance
 | 
						|
            : _amount;
 | 
						|
 | 
						|
        ETHERFI_POOL.deposit{value: _amount}();
 | 
						|
 | 
						|
        setUint(setId, _amount);
 | 
						|
 | 
						|
        _eventName = "LogDeposit(uint256,uint256,uint256)";
 | 
						|
        _eventParam = abi.encode(_amount, getId, setId);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
contract ConnectV2EETH is EETHContract {
 | 
						|
    string public name = "EETH-v1.0";
 | 
						|
}
 |