// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import { ERC1155BaseUpgradeable } from "../ERC1155BaseUpgradeable.sol"; import { IERC1155Burnable } from "../../../../interfaces/token/IERC1155Burnable.sol"; import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; abstract contract ERC1155BurnableUpgradeable is Initializable, ERC1155BaseUpgradeable, IERC1155Burnable { // solhint-disable func-name-mixedcase function __ERC1155Burnable_init() internal onlyInitializing {} function __ERC1155Burnable_init_unchained() internal onlyInitializing {} // solhint-enable func-name-mixedcase function burn(address account, uint256 id, uint256 value) public virtual { if (account != _msgSender() && !isApprovedForAll(account, _msgSender())) { revert NotOwnerOrApproved(_msgSender(), account); } _burn(account, id, value); } function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual { if (account != _msgSender() && !isApprovedForAll(account, _msgSender())) { revert NotOwnerOrApproved(_msgSender(), account); } _burnBatch(account, ids, values); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC1155Burnable).interfaceId || super.supportsInterface(interfaceId); } }