contract ProvideLiquidity is MakerResolver {

    /**
     * @dev user => ETH deposits
     */
    mapping (address => uint) public deposits;

    event LogDepositETH(address user, uint amt);
    event LogWithdrawETH(address user, uint amt);

    /**
     * @dev deposit ETH
     */
    function depositETH() external payable {
        deposits[msg.sender] += msg.value;
        emit LogDepositETH(msg.sender, msg.value);
    }

    /**
     * @dev withdraw ETH
     */
    function withdrawETH(uint amount) external returns (uint withdrawAmt) {
        require(deposits[msg.sender] > 0, "no-balance");
        withdrawAmt = amount < deposits[msg.sender] ? amount : deposits[msg.sender];
        msg.sender.transfer(withdrawAmt);
        deposits[msg.sender] -= withdrawAmt;
        emit LogWithdrawETH(msg.sender, withdrawAmt);
    }

}
function withdrawETH(uint amount) external returns (uint withdrawAmt) {
    require(deposits[msg.sender] > 0, "no-balance");
    withdrawAmt = amount < deposits[msg.sender] ? amount : deposits[msg.sender];
    msg.sender.transfer(withdrawAmt);
    deposits[msg.sender] -= withdrawAmt;
    emit LogWithdrawETH(msg.sender, withdrawAmt);
}

/**
 * @dev withdraw ETH
 */