1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC1155/IERC1155Receiver.sol)
- pragma solidity ^0.8.20;
- import {IERC165} from "../../utils/introspection/IERC165.sol";
- /**
- * @dev Interface that must be implemented by smart contracts in order to receive
- * ERC-1155 token transfers.
- */
- interface IERC1155Receiver is IERC165 {
- /**
- * @dev Handles the receipt of a single ERC-1155 token type. This function is
- * called at the end of a `safeTransferFrom` after the balance has been updated.
- *
- * NOTE: To accept the transfer, this must return
- * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
- * (i.e. 0xf23a6e61, or its own function selector).
- *
- * @param operator The address which initiated the transfer (i.e. msg.sender)
- * @param from The address which previously owned the token
- * @param id The ID of the token being transferred
- * @param value The amount of tokens being transferred
- * @param data Additional data with no specified format
- * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
- */
- function onERC1155Received(
- address operator,
- address from,
- uint256 id,
- uint256 value,
- bytes calldata data
- ) external returns (bytes4);
- /**
- * @dev Handles the receipt of a multiple ERC-1155 token types. This function
- * is called at the end of a `safeBatchTransferFrom` after the balances have
- * been updated.
- *
- * NOTE: To accept the transfer(s), this must return
- * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
- * (i.e. 0xbc197c81, or its own function selector).
- *
- * @param operator The address which initiated the batch transfer (i.e. msg.sender)
- * @param from The address which previously owned the token
- * @param ids An array containing ids of each token being transferred (order and length must match values array)
- * @param values An array containing amounts of each token being transferred (order and length must match ids array)
- * @param data Additional data with no specified format
- * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
- */
- function onERC1155BatchReceived(
- address operator,
- address from,
- uint256[] calldata ids,
- uint256[] calldata values,
- bytes calldata data
- ) external returns (bytes4);
- }
|