// File: contracts/external/AntfarmBurner.sol



// SPDX-License-Identifier: MIT
pragma solidity =0.8.10;

import "../interfaces/IAntfarmToken.sol";

/// @title Antfarm Burner
/// @notice Anyone can trigger a burn of the ATF balance of this contract.
contract AntfarmBurner {
    address public immutable antfarmToken;

    constructor(address _antfarmToken) {
        antfarmToken = _antfarmToken;
    }

    function burn() external {
        IAntfarmToken atfContract = IAntfarmToken(antfarmToken);
        atfContract.burn(atfContract.balanceOf(address(this)));
    }
}

// File: contracts/interfaces/IAntfarmToken.sol



// SPDX-License-Identifier: MIT
pragma solidity =0.8.10;

interface IAntfarmToken {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function nonces(address owner) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function burn(uint256 _amount) external;
}