@@ -10,10 +10,10 @@ import {UUPSUpgradeable} from
1010 "../../lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol " ;
1111import {ReentrancyGuardUpgradeable} from
1212 "../../lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol " ;
13- import {ERC721AUpgradeable } from "../../lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol " ;
14- import {IERC721AUpgradeable } from "../../lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol " ;
1513import {ERC721A__Initializable } from
1614 "../../lib/ERC721A-Upgradeable/contracts/ERC721A__Initializable.sol " ;
15+ import {ERC721AUpgradeable } from "../../lib/ERC721A-Upgradeable/contracts/ERC721AUpgradeable.sol " ;
16+ import {IERC721AUpgradeable } from "../../lib/ERC721A-Upgradeable/contracts/IERC721AUpgradeable.sol " ;
1717import {ERC721AStorage } from "../../lib/ERC721A-Upgradeable/contracts/ERC721AStorage.sol " ;
1818import {IERC20 } from "../../lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol " ;
1919import {IERC20Permit } from
@@ -29,8 +29,8 @@ string constant SYMBOL = "Titan1GPU";
2929contract SuccinctTitan1GPU is
3030 ISuccinctTitan1GPU ,
3131 Initializable ,
32- ERC721A__Initializable ,
3332 OwnableUpgradeable ,
33+ ERC721A__Initializable ,
3434 ERC721AUpgradeable ,
3535 ReentrancyGuardUpgradeable ,
3636 UUPSUpgradeable
@@ -55,9 +55,6 @@ contract SuccinctTitan1GPU is
5555 /// @dev Track actual minted supply since ERC721A's totalSupply includes skipped tokens
5656 uint256 private _actualSupply;
5757
58- /// @inheritdoc ISuccinctTitan1GPU
59- uint256 public override nextId;
60-
6158 /// @inheritdoc ISuccinctTitan1GPU
6259 uint256 public override saleId;
6360
@@ -71,7 +68,7 @@ contract SuccinctTitan1GPU is
7168 mapping (address => uint256 ) public override whitelistMinted;
7269
7370 /// @dev Reserved storage gap for future upgrades.
74- uint256 [49 ] internal __gap;
71+ uint256 [50 ] internal __gap;
7572
7673 /*//////////////////////////////////////////////////////////////
7774 MODIFIERS
@@ -146,6 +143,11 @@ contract SuccinctTitan1GPU is
146143 return _currentPrice ();
147144 }
148145
146+ /// @inheritdoc ISuccinctTitan1GPU
147+ function nextId () external view override returns (uint256 ) {
148+ return _nextTokenId ();
149+ }
150+
149151 /*//////////////////////////////////////////////////////////////
150152 CORE
151153 //////////////////////////////////////////////////////////////*/
@@ -211,9 +213,8 @@ contract SuccinctTitan1GPU is
211213 // If a sale is active (some tokens are unsold), finalize it and skip the unsold tokens.
212214 if (_isSaleActive ()) {
213215 uint256 skipped = currentSale.batchSize - currentSale.sold;
214- nextId += skipped;
215- // Update ERC721A's internal counter to match our nextId
216- ERC721AStorage .layout ()._currentIndex = nextId;
216+ // Skip tokens by updating ERC721A's internal counter
217+ ERC721AStorage .layout ()._currentIndex += skipped;
217218 emit SaleFinalized (currentSale.saleId, skipped);
218219 }
219220
@@ -223,7 +224,7 @@ contract SuccinctTitan1GPU is
223224 }
224225
225226 // Reserve token IDs for this batch.
226- uint256 reservedStartId = nextId ;
227+ uint256 reservedStartId = _nextTokenId () ;
227228
228229 // Activate sale.
229230 currentSale = Sale ({
@@ -388,9 +389,8 @@ contract SuccinctTitan1GPU is
388389 SaleType _saleType ,
389390 uint256 _unitPrice
390391 ) internal {
391- uint256 startId = nextId ;
392+ uint256 startId = _nextTokenId () ;
392393 unchecked {
393- nextId += _amount;
394394 _actualSupply += _amount;
395395 }
396396
@@ -428,19 +428,12 @@ contract SuccinctTitan1GPU is
428428 return baseURI;
429429 }
430430
431- /// @dev Returns the starting token ID for sequential mints.
432- function _startTokenId () internal view virtual override returns (uint256 ) {
433- return 0 ;
434- }
435-
436431 /// @dev Prevents transfers after minting (soulbound).
437432 function _beforeTokenTransfers (address from , address to , uint256 startTokenId , uint256 quantity )
438433 internal
439434 virtual
440435 override
441436 {
442- // Allow minting (from == address(0))
443- // Prevent transfers (from != address(0))
444437 if (from != address (0 )) {
445438 revert TokenIsSoulbound ();
446439 }
0 commit comments