interface IMoonFarm {
    /**
     * @dev Returns the amount of available tokens.
     */
    function isEnded() external view returns(bool);
    function buy(address referrer) external payable;
    function claim() external;
    function calcDepositAmount(uint256 _tokens) external view returns (uint256);
    function calcTokenAmount(uint256 _incoming) external view returns (uint256);
    function getUserReferrer(address userAddress) external view returns(address);
    function getUserReferralBonus(address userAddress) external view returns(uint256);
    function getUserAvailable(address userAddress) external view returns(uint256);
    function checkTokenBalance(address _sender) external view returns (uint256, bool);
    function withdraw_eth() external returns (bool);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
    
}
function isEnded() external view returns(bool);

/**
 * @dev Returns the amount of available tokens.
 */