@@ -5,6 +5,7 @@ pragma solidity ^0.8.11;
55
66import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol " ;
77
8+ import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol " ;
89import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol " ;
910import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol " ;
1011import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol " ;
@@ -23,7 +24,7 @@ import "../feature/interface/IThirdwebRoyalty.sol";
2324import "../feature/interface/IThirdwebOwnable.sol " ;
2425import "../feature/DelayedReveal.sol " ;
2526import "../feature/LazyMint.sol " ;
26- import "../feature/SignatureMintUpgradeable .sol " ;
27+ import "../feature/SignatureMintERC721Upgradeable .sol " ;
2728
2829import "../openzeppelin-presets/metatx/ERC2771ContextUpgradeable.sol " ;
2930import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol " ;
@@ -42,9 +43,10 @@ contract SignatureDropEnumerable is
4243 ReentrancyGuardUpgradeable ,
4344 ERC2771ContextUpgradeable ,
4445 MulticallUpgradeable ,
46+ AccessControlEnumerableUpgradeable ,
4547 DelayedReveal ,
4648 LazyMint ,
47- SignatureMintUpgradeable ,
49+ SignatureMintERC721Upgradeable ,
4850 ERC721EnumerableUpgradeable
4951{
5052 using StringsUpgradeable for uint256 ;
@@ -58,6 +60,8 @@ contract SignatureDropEnumerable is
5860
5961 /// @dev Only transfers to or from TRANSFER_ROLE holders are valid, when transfers are restricted.
6062 bytes32 private constant TRANSFER_ROLE = keccak256 ("TRANSFER_ROLE " );
63+ /// @dev Only MINTER_ROLE holders can sign off on `MintRequest`s and lazy mint tokens.
64+ bytes32 private constant MINTER_ROLE = keccak256 ("MINTER_ROLE " );
6165
6266 /// @dev Max bps in the thirdweb system.
6367 uint256 private constant MAX_BPS = 10_000 ;
@@ -152,7 +156,7 @@ contract SignatureDropEnumerable is
152156 __ReentrancyGuard_init ();
153157 __ERC2771Context_init (_trustedForwarders);
154158 __ERC721_init (_name, _symbol);
155- __SignatureMint_init ( " TokenDrop " , " 1 " , _defaultAdmin );
159+ __SignatureMintERC721_init ( );
156160
157161 // Initialize this contract's state.
158162 royaltyRecipient = _royaltyRecipient;
@@ -278,7 +282,7 @@ contract SignatureDropEnumerable is
278282 require (nextTokenIdToClaim + _req.quantity <= nextTokenIdToMint, "not enough minted tokens. " );
279283
280284 // Verify and process payload.
281- processRequest (_req, _signature);
285+ _processRequest (_req, _signature);
282286
283287 // Get receiver of tokens.
284288 address receiver = _req.to == address (0 ) ? msg .sender : _req.to;
@@ -398,6 +402,11 @@ contract SignatureDropEnumerable is
398402 );
399403 }
400404
405+ /// @dev Returns whether a given address is authorized to sign mint requests.
406+ function _isAuthorizedSigner (address _signer ) internal view override returns (bool ) {
407+ return hasRole (MINTER_ROLE, _signer);
408+ }
409+
401410 /*///////////////////////////////////////////////////////////////
402411 Getter functions
403412 //////////////////////////////////////////////////////////////*/
0 commit comments