// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC1155 Inventory, optional extension: Mintable. * @dev See https://eips.ethereum.org/EIPS/eip-1155 */ interface IERC1155InventoryMintable { /** * Safely mints some token. * @dev Reverts if `to` is the zero address. * @dev Reverts if `id` is not a token. * @dev Reverts if `id` represents a Non-Fungible Token and `value` is not 1. * @dev Reverts if `id` represents a Non-Fungible Token which has already been minted. * @dev Reverts if `id` represents a Fungible Token and `value` is 0. * @dev Reverts if `id` represents a Fungible Token and there is an overflow of supply. * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155Received} fails or is refused. * @dev Emits an {IERC1155-TransferSingle} event. * @param to Address of the new token owner. * @param id Identifier of the token to mint. * @param value Amount of token to mint. * @param data Optional data to send along to a receiver contract. */ function safeMint( address to, uint256 id, uint256 value, bytes calldata data ) external; /** * Safely mints a batch of tokens. * @dev Reverts if `ids` and `values` have different lengths. * @dev Reverts if `to` is the zero address. * @dev Reverts if one of `ids` is not a token. * @dev Reverts if one of `ids` represents a Non-Fungible Token and its paired value is not 1. * @dev Reverts if one of `ids` represents a Non-Fungible Token which has already been minted. * @dev Reverts if one of `ids` represents a Fungible Token and its paired value is 0. * @dev Reverts if one of `ids` represents a Fungible Token and there is an overflow of supply. * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155batchReceived} fails or is refused. * @dev Emits an {IERC1155-TransferBatch} event. * @param to Address of the new tokens owner. * @param ids Identifiers of the tokens to mint. * @param values Amounts of tokens to mint. * @param data Optional data to send along to a receiver contract. */ function safeBatchMint( address to, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external; }