interface IERC1155721InventoryBurnable {
    /**
     * Burns some token (ERC1155-compatible).
     * @dev Reverts if the sender is not approved.
     * @dev Reverts if `id` does not represent a token.
     * @dev Reverts if `id` represents a fungible token and `value` is 0.
     * @dev Reverts if `id` represents a fungible token and `value` is higher than `from`'s balance.
     * @dev Reverts if `id` represents a non-fungible token and `value` is not 1.
     * @dev Reverts if `id` represents a non-fungible token which is not owned by `from`.
     * @dev Emits an {IERC721-Transfer} event to the zero address if `id` represents a non-fungible token.
     * @dev Emits an {IERC1155-TransferSingle} event to the zero address.
     * @param from Address of the current token owner.
     * @param id Identifier of the token to burn.
     * @param value Amount of token to burn.
     */
    function burnFrom(
        address from,
        uint256 id,
        uint256 value
    ) external;

    /**
     * Burns multiple tokens (ERC1155-compatible).
     * @dev Reverts if `ids` and `values` have different lengths.
     * @dev Reverts if the sender is not approved.
     * @dev Reverts if one of `ids` does not represent a token.
     * @dev Reverts if one of `ids` represents a fungible token and `value` is 0.
     * @dev Reverts if one of `ids` represents a fungible token and `value` is higher than `from`'s balance.
     * @dev Reverts if one of `ids` represents a non-fungible token and `value` is not 1.
     * @dev Reverts if one of `ids` represents a non-fungible token which is not owned by `from`.
     * @dev Emits an {IERC721-Transfer} event to the zero address for each burnt non-fungible token.
     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.
     * @param from Address of the current tokens owner.
     * @param ids Identifiers of the tokens to burn.
     * @param values Amounts of tokens to burn.
     */
    function batchBurnFrom(
        address from,
        uint256[] calldata ids,
        uint256[] calldata values
    ) external;

    /**
     * Burns a batch of Non-Fungible Tokens (ERC721-compatible).
     * @dev Reverts if the sender is not approved.
     * @dev Reverts if one of `nftIds` does not represent a non-fungible token.
     * @dev Reverts if one of `nftIds` is not owned by `from`.
     * @dev Emits an {IERC721-Transfer} event to the zero address for each of `nftIds`.
     * @dev Emits an {IERC1155-TransferBatch} event to the zero address.
     * @param from Current token owner.
     * @param nftIds Identifiers of the tokens to transfer.
     */
    function batchBurnFrom(address from, uint256[] calldata nftIds) external;
}
/**
 * @title IERC1155721InventoryBurnable interface.
 * The function {IERC721Burnable-burnFrom(address,uint256)} is not provided as
 *  {IERC1155Burnable-burnFrom(address,uint256,uint256)} can be used instead.
 */
function batchBurnFrom(
    address from,
    uint256[] calldata ids,
    uint256[] calldata values
) external;

/**
 * Burns multiple tokens (ERC1155-compatible).
 * @dev Reverts if `ids` and `values` have different lengths.
 * @dev Reverts if the sender is not approved.
 * @dev Reverts if one of `ids` does not represent a token.
 * @dev Reverts if one of `ids` represents a fungible token and `value` is 0.
 * @dev Reverts if one of `ids` represents a fungible token and `value` is higher than `from`'s balance.
 * @dev Reverts if one of `ids` represents a non-fungible token and `value` is not 1.
 * @dev Reverts if one of `ids` represents a non-fungible token which is not owned by `from`.
 * @dev Emits an {IERC721-Transfer} event to the zero address for each burnt non-fungible token.
 * @dev Emits an {IERC1155-TransferBatch} event to the zero address.
 * @param from Address of the current tokens owner.
 * @param ids Identifiers of the tokens to burn.
 * @param values Amounts of tokens to burn.
 */