@artblocks/contracts 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +22 -38
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  4. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  5. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  6. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +144 -14
  7. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  8. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  9. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +15 -2
  10. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +15 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +37 -0
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  38. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +20 -2
  39. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +48 -12
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +76 -40
  41. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +15 -2
  42. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +15 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +37 -0
  45. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  46. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  47. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  48. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  50. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +7 -7
  51. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +170 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +37 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +37 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +42 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +42 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +37 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +37 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  66. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  68. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  74. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  75. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  76. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  77. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  78. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +9 -22
  79. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  80. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  81. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  82. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  83. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  84. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  85. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  86. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  87. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  88. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  89. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  90. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  91. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  92. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  93. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  94. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  95. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  96. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  97. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  98. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  100. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  103. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  105. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  106. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +2 -2
  107. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  108. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  109. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  110. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  111. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  112. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  113. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  114. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  115. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  116. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  117. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  118. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  119. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  120. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  121. package/contracts/DependencyRegistryV0.sol +229 -60
  122. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  123. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  124. package/contracts/engine/V3/EngineFactoryV0.sol +10 -2
  125. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +139 -70
  126. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +141 -71
  127. package/contracts/generator/AddressChunks.sol +106 -0
  128. package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
  129. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  130. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  131. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +5 -3
  132. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  133. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  134. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +94 -0
  135. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +13 -2
  136. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +3 -1
  137. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  138. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  139. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  140. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  141. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  142. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  143. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  144. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  145. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +10 -4
  146. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
  147. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  148. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  149. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  150. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  151. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  152. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  153. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  154. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +11 -3
  155. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  156. package/contracts/libs/v0.8.x/V3FlexLib.sol +9 -3
  157. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  158. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +107 -0
  159. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  160. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  161. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  162. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  163. package/contracts/mock/MockFileStore.sol +22 -0
  164. package/package.json +20 -18
@@ -0,0 +1,320 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // @dev file is sourced from OpenSea's repository: https://github.com/ProjectOpenSea/seadrop/blob/main/src/lib/SeaDropErrorsAndEvents.sol
3
+ // @dev modified to not lock to specific version, as well as updated imports for this repository
4
+ pragma solidity ^0.8.17;
5
+
6
+ import {PublicDrop, TokenGatedDropStage, SignedMintValidationParams} from "./SeaDropStructs.sol";
7
+
8
+ interface SeaDropErrorsAndEvents {
9
+ /**
10
+ * @dev Revert with an error if the drop stage is not active.
11
+ */
12
+ error NotActive(
13
+ uint256 currentTimestamp,
14
+ uint256 startTimestamp,
15
+ uint256 endTimestamp
16
+ );
17
+
18
+ /**
19
+ * @dev Revert with an error if the mint quantity is zero.
20
+ */
21
+ error MintQuantityCannotBeZero();
22
+
23
+ /**
24
+ * @dev Revert with an error if the mint quantity exceeds the max allowed
25
+ * to be minted per wallet.
26
+ */
27
+ error MintQuantityExceedsMaxMintedPerWallet(uint256 total, uint256 allowed);
28
+
29
+ /**
30
+ * @dev Revert with an error if the mint quantity exceeds the max token
31
+ * supply.
32
+ */
33
+ error MintQuantityExceedsMaxSupply(uint256 total, uint256 maxSupply);
34
+
35
+ /**
36
+ * @dev Revert with an error if the mint quantity exceeds the max token
37
+ * supply for the stage.
38
+ * Note: The `maxTokenSupplyForStage` for public mint is
39
+ * always `type(uint).max`.
40
+ */
41
+ error MintQuantityExceedsMaxTokenSupplyForStage(
42
+ uint256 total,
43
+ uint256 maxTokenSupplyForStage
44
+ );
45
+
46
+ /**
47
+ * @dev Revert if the fee recipient is the zero address.
48
+ */
49
+ error FeeRecipientCannotBeZeroAddress();
50
+
51
+ /**
52
+ * @dev Revert if the fee recipient is not already included.
53
+ */
54
+ error FeeRecipientNotPresent();
55
+
56
+ /**
57
+ * @dev Revert if the fee basis points is greater than 10_000.
58
+ */
59
+ error InvalidFeeBps(uint256 feeBps);
60
+
61
+ /**
62
+ * @dev Revert if the fee recipient is already included.
63
+ */
64
+ error DuplicateFeeRecipient();
65
+
66
+ /**
67
+ * @dev Revert if the fee recipient is restricted and not allowed.
68
+ */
69
+ error FeeRecipientNotAllowed();
70
+
71
+ /**
72
+ * @dev Revert if the creator payout address is the zero address.
73
+ */
74
+ error CreatorPayoutAddressCannotBeZeroAddress();
75
+
76
+ /**
77
+ * @dev Revert with an error if the received payment is incorrect.
78
+ */
79
+ error IncorrectPayment(uint256 got, uint256 want);
80
+
81
+ /**
82
+ * @dev Revert with an error if the allow list proof is invalid.
83
+ */
84
+ error InvalidProof();
85
+
86
+ /**
87
+ * @dev Revert if a supplied signer address is the zero address.
88
+ */
89
+ error SignerCannotBeZeroAddress();
90
+
91
+ /**
92
+ * @dev Revert with an error if signer's signature is invalid.
93
+ */
94
+ error InvalidSignature(address recoveredSigner);
95
+
96
+ /**
97
+ * @dev Revert with an error if a signer is not included in
98
+ * the enumeration when removing.
99
+ */
100
+ error SignerNotPresent();
101
+
102
+ /**
103
+ * @dev Revert with an error if a payer is not included in
104
+ * the enumeration when removing.
105
+ */
106
+ error PayerNotPresent();
107
+
108
+ /**
109
+ * @dev Revert with an error if a payer is already included in mapping
110
+ * when adding.
111
+ * Note: only applies when adding a single payer, as duplicates in
112
+ * enumeration can be removed with updatePayer.
113
+ */
114
+ error DuplicatePayer();
115
+
116
+ /**
117
+ * @dev Revert with an error if the payer is not allowed. The minter must
118
+ * pay for their own mint.
119
+ */
120
+ error PayerNotAllowed();
121
+
122
+ /**
123
+ * @dev Revert if a supplied payer address is the zero address.
124
+ */
125
+ error PayerCannotBeZeroAddress();
126
+
127
+ /**
128
+ * @dev Revert with an error if the sender does not
129
+ * match the INonFungibleSeaDropToken interface.
130
+ */
131
+ error OnlyINonFungibleSeaDropToken(address sender);
132
+
133
+ /**
134
+ * @dev Revert with an error if the sender of a token gated supplied
135
+ * drop stage redeem is not the owner of the token.
136
+ */
137
+ error TokenGatedNotTokenOwner(
138
+ address nftContract,
139
+ address allowedNftToken,
140
+ uint256 allowedNftTokenId
141
+ );
142
+
143
+ /**
144
+ * @dev Revert with an error if the token id has already been used to
145
+ * redeem a token gated drop stage.
146
+ */
147
+ error TokenGatedTokenIdAlreadyRedeemed(
148
+ address nftContract,
149
+ address allowedNftToken,
150
+ uint256 allowedNftTokenId
151
+ );
152
+
153
+ /**
154
+ * @dev Revert with an error if an empty TokenGatedDropStage is provided
155
+ * for an already-empty TokenGatedDropStage.
156
+ */
157
+ error TokenGatedDropStageNotPresent();
158
+
159
+ /**
160
+ * @dev Revert with an error if an allowedNftToken is set to
161
+ * the zero address.
162
+ */
163
+ error TokenGatedDropAllowedNftTokenCannotBeZeroAddress();
164
+
165
+ /**
166
+ * @dev Revert with an error if an allowedNftToken is set to
167
+ * the drop token itself.
168
+ */
169
+ error TokenGatedDropAllowedNftTokenCannotBeDropToken();
170
+
171
+ /**
172
+ * @dev Revert with an error if supplied signed mint price is less than
173
+ * the minimum specified.
174
+ */
175
+ error InvalidSignedMintPrice(uint256 got, uint256 minimum);
176
+
177
+ /**
178
+ * @dev Revert with an error if supplied signed maxTotalMintableByWallet
179
+ * is greater than the maximum specified.
180
+ */
181
+ error InvalidSignedMaxTotalMintableByWallet(uint256 got, uint256 maximum);
182
+
183
+ /**
184
+ * @dev Revert with an error if supplied signed start time is less than
185
+ * the minimum specified.
186
+ */
187
+ error InvalidSignedStartTime(uint256 got, uint256 minimum);
188
+
189
+ /**
190
+ * @dev Revert with an error if supplied signed end time is greater than
191
+ * the maximum specified.
192
+ */
193
+ error InvalidSignedEndTime(uint256 got, uint256 maximum);
194
+
195
+ /**
196
+ * @dev Revert with an error if supplied signed maxTokenSupplyForStage
197
+ * is greater than the maximum specified.
198
+ */
199
+ error InvalidSignedMaxTokenSupplyForStage(uint256 got, uint256 maximum);
200
+
201
+ /**
202
+ * @dev Revert with an error if supplied signed feeBps is greater than
203
+ * the maximum specified, or less than the minimum.
204
+ */
205
+ error InvalidSignedFeeBps(uint256 got, uint256 minimumOrMaximum);
206
+
207
+ /**
208
+ * @dev Revert with an error if signed mint did not specify to restrict
209
+ * fee recipients.
210
+ */
211
+ error SignedMintsMustRestrictFeeRecipients();
212
+
213
+ /**
214
+ * @dev Revert with an error if a signature for a signed mint has already
215
+ * been used.
216
+ */
217
+ error SignatureAlreadyUsed();
218
+
219
+ /**
220
+ * @dev An event with details of a SeaDrop mint, for analytical purposes.
221
+ *
222
+ * @param nftContract The nft contract.
223
+ * @param minter The mint recipient.
224
+ * @param feeRecipient The fee recipient.
225
+ * @param payer The address who payed for the tx.
226
+ * @param quantityMinted The number of tokens minted.
227
+ * @param unitMintPrice The amount paid for each token.
228
+ * @param feeBps The fee out of 10_000 basis points collected.
229
+ * @param dropStageIndex The drop stage index. Items minted
230
+ * through mintPublic() have
231
+ * dropStageIndex of 0.
232
+ */
233
+ event SeaDropMint(
234
+ address indexed nftContract,
235
+ address indexed minter,
236
+ address indexed feeRecipient,
237
+ address payer,
238
+ uint256 quantityMinted,
239
+ uint256 unitMintPrice,
240
+ uint256 feeBps,
241
+ uint256 dropStageIndex
242
+ );
243
+
244
+ /**
245
+ * @dev An event with updated public drop data for an nft contract.
246
+ */
247
+ event PublicDropUpdated(address indexed nftContract, PublicDrop publicDrop);
248
+
249
+ /**
250
+ * @dev An event with updated token gated drop stage data
251
+ * for an nft contract.
252
+ */
253
+ event TokenGatedDropStageUpdated(
254
+ address indexed nftContract,
255
+ address indexed allowedNftToken,
256
+ TokenGatedDropStage dropStage
257
+ );
258
+
259
+ /**
260
+ * @dev An event with updated allow list data for an nft contract.
261
+ *
262
+ * @param nftContract The nft contract.
263
+ * @param previousMerkleRoot The previous allow list merkle root.
264
+ * @param newMerkleRoot The new allow list merkle root.
265
+ * @param publicKeyURI If the allow list is encrypted, the public key
266
+ * URIs that can decrypt the list.
267
+ * Empty if unencrypted.
268
+ * @param allowListURI The URI for the allow list.
269
+ */
270
+ event AllowListUpdated(
271
+ address indexed nftContract,
272
+ bytes32 indexed previousMerkleRoot,
273
+ bytes32 indexed newMerkleRoot,
274
+ string[] publicKeyURI,
275
+ string allowListURI
276
+ );
277
+
278
+ /**
279
+ * @dev An event with updated drop URI for an nft contract.
280
+ */
281
+ event DropURIUpdated(address indexed nftContract, string newDropURI);
282
+
283
+ /**
284
+ * @dev An event with the updated creator payout address for an nft
285
+ * contract.
286
+ */
287
+ event CreatorPayoutAddressUpdated(
288
+ address indexed nftContract,
289
+ address indexed newPayoutAddress
290
+ );
291
+
292
+ /**
293
+ * @dev An event with the updated allowed fee recipient for an nft
294
+ * contract.
295
+ */
296
+ event AllowedFeeRecipientUpdated(
297
+ address indexed nftContract,
298
+ address indexed feeRecipient,
299
+ bool indexed allowed
300
+ );
301
+
302
+ /**
303
+ * @dev An event with the updated validation parameters for server-side
304
+ * signers.
305
+ */
306
+ event SignedMintValidationParamsUpdated(
307
+ address indexed nftContract,
308
+ address indexed signer,
309
+ SignedMintValidationParams signedMintValidationParams
310
+ );
311
+
312
+ /**
313
+ * @dev An event with the updated payer for an nft contract.
314
+ */
315
+ event PayerUpdated(
316
+ address indexed nftContract,
317
+ address indexed payer,
318
+ bool indexed allowed
319
+ );
320
+ }
@@ -0,0 +1,146 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // @dev file is sourced from OpenSea's repository: https://github.com/ProjectOpenSea/seadrop/blob/main/src/lib/SeaDropStructs.sol
3
+ // @dev modified to not lock to specific version
4
+ pragma solidity ^0.8.17;
5
+
6
+ /**
7
+ * @notice A struct defining public drop data.
8
+ * Designed to fit efficiently in one storage slot.
9
+ *
10
+ * @param mintPrice The mint price per token. (Up to 1.2m
11
+ * of native token, e.g. ETH, MATIC)
12
+ * @param startTime The start time, ensure this is not zero.
13
+ * @param endTIme The end time, ensure this is not zero.
14
+ * @param maxTotalMintableByWallet Maximum total number of mints a user is
15
+ * allowed. (The limit for this field is
16
+ * 2^16 - 1)
17
+ * @param feeBps Fee out of 10_000 basis points to be
18
+ * collected.
19
+ * @param restrictFeeRecipients If false, allow any fee recipient;
20
+ * if true, check fee recipient is allowed.
21
+ */
22
+ struct PublicDrop {
23
+ uint80 mintPrice; // 80/256 bits
24
+ uint48 startTime; // 128/256 bits
25
+ uint48 endTime; // 176/256 bits
26
+ uint16 maxTotalMintableByWallet; // 224/256 bits
27
+ uint16 feeBps; // 240/256 bits
28
+ bool restrictFeeRecipients; // 248/256 bits
29
+ }
30
+
31
+ /**
32
+ * @notice A struct defining token gated drop stage data.
33
+ * Designed to fit efficiently in one storage slot.
34
+ *
35
+ * @param mintPrice The mint price per token. (Up to 1.2m
36
+ * of native token, e.g.: ETH, MATIC)
37
+ * @param maxTotalMintableByWallet Maximum total number of mints a user is
38
+ * allowed. (The limit for this field is
39
+ * 2^16 - 1)
40
+ * @param startTime The start time, ensure this is not zero.
41
+ * @param endTime The end time, ensure this is not zero.
42
+ * @param dropStageIndex The drop stage index to emit with the event
43
+ * for analytical purposes. This should be
44
+ * non-zero since the public mint emits
45
+ * with index zero.
46
+ * @param maxTokenSupplyForStage The limit of token supply this stage can
47
+ * mint within. (The limit for this field is
48
+ * 2^16 - 1)
49
+ * @param feeBps Fee out of 10_000 basis points to be
50
+ * collected.
51
+ * @param restrictFeeRecipients If false, allow any fee recipient;
52
+ * if true, check fee recipient is allowed.
53
+ */
54
+ struct TokenGatedDropStage {
55
+ uint80 mintPrice; // 80/256 bits
56
+ uint16 maxTotalMintableByWallet; // 96/256 bits
57
+ uint48 startTime; // 144/256 bits
58
+ uint48 endTime; // 192/256 bits
59
+ uint8 dropStageIndex; // non-zero. 200/256 bits
60
+ uint32 maxTokenSupplyForStage; // 232/256 bits
61
+ uint16 feeBps; // 248/256 bits
62
+ bool restrictFeeRecipients; // 256/256 bits
63
+ }
64
+
65
+ /**
66
+ * @notice A struct defining mint params for an allow list.
67
+ * An allow list leaf will be composed of `msg.sender` and
68
+ * the following params.
69
+ *
70
+ * Note: Since feeBps is encoded in the leaf, backend should ensure
71
+ * that feeBps is acceptable before generating a proof.
72
+ *
73
+ * @param mintPrice The mint price per token.
74
+ * @param maxTotalMintableByWallet Maximum total number of mints a user is
75
+ * allowed.
76
+ * @param startTime The start time, ensure this is not zero.
77
+ * @param endTime The end time, ensure this is not zero.
78
+ * @param dropStageIndex The drop stage index to emit with the event
79
+ * for analytical purposes. This should be
80
+ * non-zero since the public mint emits with
81
+ * index zero.
82
+ * @param maxTokenSupplyForStage The limit of token supply this stage can
83
+ * mint within.
84
+ * @param feeBps Fee out of 10_000 basis points to be
85
+ * collected.
86
+ * @param restrictFeeRecipients If false, allow any fee recipient;
87
+ * if true, check fee recipient is allowed.
88
+ */
89
+ struct MintParams {
90
+ uint256 mintPrice;
91
+ uint256 maxTotalMintableByWallet;
92
+ uint256 startTime;
93
+ uint256 endTime;
94
+ uint256 dropStageIndex; // non-zero
95
+ uint256 maxTokenSupplyForStage;
96
+ uint256 feeBps;
97
+ bool restrictFeeRecipients;
98
+ }
99
+
100
+ /**
101
+ * @notice A struct defining token gated mint params.
102
+ *
103
+ * @param allowedNftToken The allowed nft token contract address.
104
+ * @param allowedNftTokenIds The token ids to redeem.
105
+ */
106
+ struct TokenGatedMintParams {
107
+ address allowedNftToken;
108
+ uint256[] allowedNftTokenIds;
109
+ }
110
+
111
+ /**
112
+ * @notice A struct defining allow list data (for minting an allow list).
113
+ *
114
+ * @param merkleRoot The merkle root for the allow list.
115
+ * @param publicKeyURIs If the allowListURI is encrypted, a list of URIs
116
+ * pointing to the public keys. Empty if unencrypted.
117
+ * @param allowListURI The URI for the allow list.
118
+ */
119
+ struct AllowListData {
120
+ bytes32 merkleRoot;
121
+ string[] publicKeyURIs;
122
+ string allowListURI;
123
+ }
124
+
125
+ /**
126
+ * @notice A struct defining minimum and maximum parameters to validate for
127
+ * signed mints, to minimize negative effects of a compromised signer.
128
+ *
129
+ * @param minMintPrice The minimum mint price allowed.
130
+ * @param maxMaxTotalMintableByWallet The maximum total number of mints allowed
131
+ * by a wallet.
132
+ * @param minStartTime The minimum start time allowed.
133
+ * @param maxEndTime The maximum end time allowed.
134
+ * @param maxMaxTokenSupplyForStage The maximum token supply allowed.
135
+ * @param minFeeBps The minimum fee allowed.
136
+ * @param maxFeeBps The maximum fee allowed.
137
+ */
138
+ struct SignedMintValidationParams {
139
+ uint80 minMintPrice; // 80/256 bits
140
+ uint24 maxMaxTotalMintableByWallet; // 104/256 bits
141
+ uint40 minStartTime; // 144/256 bits
142
+ uint40 maxEndTime; // 184/256 bits
143
+ uint40 maxMaxTokenSupplyForStage; // 224/256 bits
144
+ uint16 minFeeBps; // 240/256 bits
145
+ uint16 maxFeeBps; // 256/256 bits
146
+ }
@@ -63,4 +63,24 @@ library Bytes32Strings {
63
63
  }
64
64
  return _occurrences == targetQty;
65
65
  }
66
+
67
+ /**
68
+ * @notice Converts string to bytes32.
69
+ * https://ethereum.stackexchange.com/a/9152
70
+ * @param source string to be converted.
71
+ * @return result bytes32 representation of string.
72
+ * @dev If string is longer than 32 bytes, it truncates to the right.
73
+ */
74
+ function stringToBytes32(
75
+ string memory source
76
+ ) internal pure returns (bytes32 result) {
77
+ bytes memory tempEmptyStringTest = bytes(source);
78
+ if (tempEmptyStringTest.length == 0) {
79
+ return 0x0;
80
+ }
81
+
82
+ assembly ("memory-safe") {
83
+ result := mload(add(source, 32))
84
+ }
85
+ }
66
86
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import "../../interfaces/v0.8.x/IAdminACLV0.sol";
5
+ import "../../interfaces/v0.8.x/ICoreRegistryV1.sol";
5
6
  import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
6
7
 
7
8
  /**
@@ -66,14 +67,21 @@ library DependencyRegistryStorageLib {
66
67
  mapping(bytes32 dependencyNameAndVersion => Dependency dependency) dependencyRecords;
67
68
  // mapping from licenseTypes to License, which stores the properties of each license
68
69
  mapping(bytes32 licenseType => License license) allLicenses;
69
- // Set of addresses for the core contracts that are supported by the DependencyRegistry.
70
- // Each address represents a unique core contract in the Art Blocks ecosystem.
71
- EnumerableSet.AddressSet supportedCoreContracts;
70
+ // @dev This set is vestigial and no longer used. It has been replaced by CoreRegistry functionality.
71
+ // Cannot be removed due to storage layout requirements in upgradeable contracts.
72
+ // See https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#modifying-your-contracts
73
+ EnumerableSet.AddressSet DEPRECATED_supportedCoreContracts;
72
74
  // Mapping that allows for the overriding of project dependencies.
73
75
  // The first key is the address of the core contract, the second key is the project ID,
74
76
  // and the value is the bytes32 representation of the dependency name and version (i.e. name@version).
75
77
  // This allows for specific projects to use different versions of dependencies than what's stored on the core contract.
76
78
  mapping(address coreContractAddress => mapping(uint256 projectId => bytes32 dependencyNameAndVersion) projectToDependencyNameAndVersionMapping) projectDependencyOverrides;
79
+ // address of the CoreRegistry contract
80
+ ICoreRegistryV1 coreRegistryContract;
81
+ // enumerable set of core contract addresses supported by the DependencyRegistry, in addition to the set of core contracts
82
+ // that are supported by the CoreRegistry contract
83
+ // @dev possible there is overlap between the two sets, but not intentionally configured by admin.
84
+ EnumerableSet.AddressSet supportedCoreContractsOverride;
77
85
  }
78
86
 
79
87
  /**