interface ERC1155MintableI is IERC1155 {

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function mint(address account, uint256 id, uint256 amount) external;

    /**
     * @dev Batched version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts) external;

}
/**
 * @dev ERC1155 compliant contract with mint() and mintBatch() functions.
 */
function mint(address account, uint256 id, uint256 amount) external;

/**
 * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
 *
 * Emits a {TransferSingle} event.
 *
 * Requirements:
 *
 * - `account` cannot be the zero address.
 * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
 * acceptance magic value.
 */