// SPDX-License-Identifier: MIT pragma solidity >=0.8.0; import 'erc721a-upgradeable/contracts/ERC721AUpgradeable.sol'; /** * @title MintableNonFungible */ contract MintableNonFungible is ERC721AUpgradeable { mapping(address => uint8) private _minted; event Mint(address indexed to, uint256 indexed quantity); event Burn(address indexed from, uint256 indexed tokenId); function __MintableNonFungible_init(string memory name_, string memory symbol_) internal initializerERC721A { __ERC721A_init(name_, symbol_); } /** * @dev Override _mint(address,uint256) function to use _mint(address,uint256,uin256) - Internal function * @param to - Address to mint the token for * @param quantity - number of tokens to mint */ function _mint(address to, uint256 quantity) internal virtual override(ERC721AUpgradeable) { ERC721AUpgradeable._mint(to, quantity); emit Mint(to, quantity); } /** * @dev Burn token * @param tokenId_ - The tokenId to burn */ function burn(uint256 tokenId_) public { require(ownerOf(tokenId_) == _msgSenderERC721A(), 'MintableNonFungible: caller is not the owner'); _burn(tokenId_, true); emit Burn(_msgSenderERC721A(), tokenId_); } uint256[50] private __gap; }