123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)
- pragma solidity ^0.8.19;
- import {IERC165} from "../../utils/introspection/IERC165.sol";
- /**
- * @dev Required interface of an ERC1155 compliant contract, as defined in the
- * https://eips.ethereum.org/EIPS/eip-1155[EIP].
- */
- interface IERC1155 is IERC165 {
- /**
- * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.
- */
- event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
- /**
- * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
- * transfers.
- */
- event TransferBatch(
- address indexed operator,
- address indexed from,
- address indexed to,
- uint256[] ids,
- uint256[] values
- );
- /**
- * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
- * `approved`.
- */
- event ApprovalForAll(address indexed account, address indexed operator, bool approved);
- /**
- * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
- *
- * If an {URI} event was emitted for `id`, the standard
- * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
- * returned by {IERC1155MetadataURI-uri}.
- */
- event URI(string value, uint256 indexed id);
- /**
- * @dev Returns the value of tokens of token type `id` owned by `account`.
- *
- * Requirements:
- *
- * - `account` cannot be the zero address.
- */
- function balanceOf(address account, uint256 id) external view returns (uint256);
- /**
- * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
- *
- * Requirements:
- *
- * - `accounts` and `ids` must have the same length.
- */
- function balanceOfBatch(
- address[] calldata accounts,
- uint256[] calldata ids
- ) external view returns (uint256[] memory);
- /**
- * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
- *
- * Emits an {ApprovalForAll} event.
- *
- * Requirements:
- *
- * - `operator` cannot be the caller.
- */
- function setApprovalForAll(address operator, bool approved) external;
- /**
- * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
- *
- * See {setApprovalForAll}.
- */
- function isApprovedForAll(address account, address operator) external view returns (bool);
- /**
- * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.
- *
- * WARNING: This function can potentially allow a reentrancy attack when transferring tokens
- * to an untrusted contract, when invoking {onERC1155Received} on the receiver.
- * Ensure to follow the checks-effects-interactions pattern and consider employing
- * reentrancy guards when interacting with untrusted contracts.
- *
- * Emits a {TransferSingle} event.
- *
- * Requirements:
- *
- * - `to` cannot be the zero address.
- * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
- * - `from` must have a balance of tokens of type `id` of at least `value` amount.
- * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
- * acceptance magic value.
- */
- function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;
- /**
- * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
- *
- *
- * WARNING: This function can potentially allow a reentrancy attack when transferring tokens
- * to an untrusted contract, when invoking {onERC1155BatchReceived} on the receiver.
- * Ensure to follow the checks-effects-interactions pattern and consider employing
- * reentrancy guards when interacting with untrusted contracts.
- *
- * Emits a {TransferBatch} event.
- *
- * Requirements:
- *
- * - `ids` and `values` must have the same length.
- * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
- * acceptance magic value.
- */
- function safeBatchTransferFrom(
- address from,
- address to,
- uint256[] calldata ids,
- uint256[] calldata values,
- bytes calldata data
- ) external;
- }
|