123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v5.1.0-rc.0) (token/ERC1155/utils/ERC1155Holder.sol)
- pragma solidity ^0.8.20;
- import {IERC165, ERC165} from "../../../utils/introspection/ERC165.sol";
- import {IERC1155Receiver} from "../IERC1155Receiver.sol";
- /**
- * @dev Simple implementation of `IERC1155Receiver` that will allow a contract to hold ERC-1155 tokens.
- *
- * IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be
- * stuck.
- */
- abstract contract ERC1155Holder is ERC165, IERC1155Receiver {
- /**
- * @dev See {IERC165-supportsInterface}.
- */
- function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
- return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);
- }
- function onERC1155Received(
- address,
- address,
- uint256,
- uint256,
- bytes memory
- ) public virtual override returns (bytes4) {
- return this.onERC1155Received.selector;
- }
- function onERC1155BatchReceived(
- address,
- address,
- uint256[] memory,
- uint256[] memory,
- bytes memory
- ) public virtual override returns (bytes4) {
- return this.onERC1155BatchReceived.selector;
- }
- }
|