// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IBadge is IERC721{ function burn(address owner, uint256 tokenId) external; } interface ISbt is IERC721{ function burn(uint256 tokenId) external; } contract NftBuner is AccessControlEnumerable { event BatchBurn( address indexed user, uint256 indexed tokenId, address indexed nft, uint256[] tokenIds ); function brunBadge(address _badge, uint256[] calldata _nftIds) external { address user = _msgSender(); for (uint256 i = 0; i < _nftIds.length; i++) { IBadge(_badge).burn(user, _nftIds[i]); } emit BatchBurn(user, 0, _badge, _nftIds); } function burnSbt(address _nft, uint256[] calldata _nftIds) external{ for (uint256 i = 0; i < _nftIds.length; i++) { ISbt(_nft).burn(_nftIds[i]); } address user = _msgSender(); emit BatchBurn(user, 0, _nft, _nftIds); } }