abstract contract BaseERC20 is ERC20Burnable, Ownable, Roles {

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * NOTE: restricting access to owner only.
     *
     * See {ERC20-_burn}.
     */
    function _burn(address account, uint256 amount) internal override onlyOwner {
        super._burn(account, amount);
    }

    /**
     * @dev Function to mint tokens.
     *
     * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.
     *
     * @param account The address that will receive the minted tokens
     * @param amount The amount of tokens to mint
     */
    function _mint(address account, uint256 amount) internal override onlyMinter {
        super._mint(account, amount);
    }

    /**
     * @dev Function to stop minting new tokens.
     *
     * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}.
     */
    function _finishMinting() internal override onlyOwner {
        super._finishMinting();
    }
}
/**
 * @title BaseERC20
 * @dev Implementation of the BaseERC20
 */
function _mint(address account, uint256 amount) internal override onlyMinter {
        super._mint(account, amount);
    }
/**
 * @dev Function to mint tokens.
 *
 * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.
 *
 * @param account The address that will receive the minted tokens
 * @param amount The amount of tokens to mint
 */