@artblocks/contracts 1.0.4 → 1.2.0

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 (289) hide show
  1. package/README.md +75 -7
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +336 -131
  5. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
  6. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
  7. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  10. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  16. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  20. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  25. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  26. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
  27. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  28. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  37. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  38. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
  47. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  48. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
  50. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
  51. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  53. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
  63. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
  65. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
  66. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
  68. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
  70. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
  71. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
  74. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
  75. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
  76. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
  77. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  82. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  83. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  84. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  85. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  88. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  90. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  92. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  93. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  94. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  96. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  97. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  98. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  99. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
  101. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
  102. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
  103. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
  104. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
  105. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
  106. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
  107. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  108. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  109. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
  110. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
  111. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
  112. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
  113. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
  114. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  115. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
  116. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
  117. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
  118. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
  119. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
  120. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
  121. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  122. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
  123. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
  124. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
  125. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
  126. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
  127. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
  128. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
  129. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  130. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  131. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  132. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  133. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  134. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  135. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
  136. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  137. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  138. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  139. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  140. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  141. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  142. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  143. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  144. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
  145. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  146. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
  147. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  148. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
  149. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  150. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
  151. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  152. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  153. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  154. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  155. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  156. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
  157. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  158. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  159. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  160. package/contracts/AdminACLV0.sol +6 -2
  161. package/contracts/AdminACLV1.sol +2 -2
  162. package/contracts/DependencyRegistryV0.sol +737 -390
  163. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  164. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  165. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  166. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  167. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  168. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  169. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
  170. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  171. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  172. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  173. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  174. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  175. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  176. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  177. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  178. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  179. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  180. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  181. package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
  182. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
  183. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
  184. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
  185. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
  186. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  187. package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
  188. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  189. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
  190. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
  191. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
  192. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  193. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  194. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  195. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  196. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  197. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  198. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  199. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
  200. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
  201. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  202. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  203. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  204. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  205. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  206. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
  207. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  208. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
  209. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
  210. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
  211. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
  212. package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
  213. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
  214. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
  215. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  216. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
  217. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
  218. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
  219. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
  220. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
  221. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  222. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  223. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  224. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  225. package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
  226. package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
  227. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  228. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  229. package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
  230. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
  231. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  232. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  233. package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
  234. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
  235. package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
  236. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
  237. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
  238. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
  239. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
  240. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
  241. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  242. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
  243. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
  244. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
  245. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
  246. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
  247. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
  248. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
  249. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
  250. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
  251. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
  252. package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
  253. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  254. package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
  255. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
  256. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
  257. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
  258. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
  259. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
  260. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
  261. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  262. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  263. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  264. package/contracts/mock/ForceSendMock.sol +22 -0
  265. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
  266. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  267. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  268. package/contracts/mock/MockAdminACLV0.sol +21 -0
  269. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  270. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  271. package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
  272. package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
  273. package/contracts/mock/ReentrancyMockShared.sol +48 -0
  274. package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
  275. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  276. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  277. package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
  278. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  279. package/contracts/split/SplitAtomicV0.sol +265 -0
  280. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  281. package/package.json +79 -45
  282. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  283. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  284. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
  285. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  286. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  287. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  288. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  289. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -0,0 +1,124 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {EngineConfiguration} from "./IGenArt721CoreContractV3_Engine.sol";
7
+
8
+ interface IEngineFactoryV0 {
9
+ /// @notice Engine Core type
10
+ enum EngineCoreType {
11
+ Engine, // GenArt721CoreV3_Engine Contract
12
+ EngineFlex // GenArt721CoreV3_Engine_Flex Contract
13
+ }
14
+ /**
15
+ * @notice This contract was deployed.
16
+ * @param engineImplementation address with the implementation of the Engine contract
17
+ * @param engineFlexImplementation address with the implementation of the Engine Flex contract
18
+ * @param type_ type of this contract
19
+ */
20
+ event Deployed(
21
+ address indexed engineImplementation,
22
+ address indexed engineFlexImplementation,
23
+ bytes32 indexed type_
24
+ );
25
+ /**
26
+ * @notice New Engine or Engine Flex contract was created.
27
+ * @param engineContract address of the newly created Engine contract
28
+ */
29
+ event EngineContractCreated(address indexed engineContract);
30
+ /**
31
+ * @notice This contract was abandoned and no longer can be used to create
32
+ * new Engine or Engine Flex contracts.
33
+ */
34
+ event Abandoned();
35
+
36
+ /**
37
+ * @notice Creates a new Engine or Engine Flex contract with the provided
38
+ * `engineConfiguration`, depending on the `engineCoreContractType`.
39
+ * @param engineCoreContractType Type of Engine Core contract.
40
+ * @param engineConfiguration EngineConfiguration data to configure the
41
+ * contract with.
42
+ * @param adminACLContract Address of admin access control contract, to be
43
+ * set as contract owner. A new contract will be deployed if address is null.
44
+ * @param salt Salt used to deterministically deploy the clone.
45
+ * @return engineContract The address of the newly created Engine or Engine Flex
46
+ * contract. The address is also emitted in both the `EngineCreated` and
47
+ * `EngineFlexCreated` events.
48
+ */
49
+ function createEngineContract(
50
+ EngineCoreType engineCoreContractType,
51
+ EngineConfiguration calldata engineConfiguration,
52
+ address adminACLContract,
53
+ bytes32 salt
54
+ ) external returns (address engineContract);
55
+
56
+ /**
57
+ * @notice Drains the contract's balance to the `recipient`.
58
+ * @param recipient The address to send funds to.
59
+ * Only callable by the owner.
60
+ */
61
+ function drainETH(address payable recipient) external;
62
+
63
+ /**
64
+ * @notice Drains the contract's balance of an input ERC20 token to
65
+ * the `recipient`.
66
+ * @param ERC20TokenAddress The address of the ERC20 token to withdraw.
67
+ * @param recipient The address to send ERC20 tokens to.
68
+ * Only callable by the owner.
69
+ */
70
+ function drainERC20(address ERC20TokenAddress, address recipient) external;
71
+
72
+ /**
73
+ * @notice Calls transferOwnership on the core registry.
74
+ * Useful for updating the owner of the core registry contract.
75
+ * @param _owner address of the new owner
76
+ */
77
+ function transferCoreRegistryOwnership(address _owner) external;
78
+
79
+ /**
80
+ * @notice Registers multiple contracts with the core registry.
81
+ * @param contractAddresses An array of contract addresses to register.
82
+ * @param coreVersions An array of versions corresponding to the contract addresses.
83
+ * @param coreTypes An array of types corresponding to the contract addresses.
84
+ */
85
+ function registerMultipleContracts(
86
+ address[] calldata contractAddresses,
87
+ bytes32[] calldata coreVersions,
88
+ bytes32[] calldata coreTypes
89
+ ) external;
90
+
91
+ /**
92
+ * @notice Unregisters multiple contracts from the core registry.
93
+ * @param contractAddresses An array of contract addresses to unregister.
94
+ */
95
+ function unregisterMultipleContracts(
96
+ address[] calldata contractAddresses
97
+ ) external;
98
+
99
+ /**
100
+ * @notice The implementation contract that is cloned when creating new
101
+ * Engine Core contracts.
102
+ */
103
+ function engineImplementation() external view returns (address);
104
+
105
+ /**
106
+ * @notice The implementation contract that is cloned when creating new
107
+ * Engine Flex Core contracts.
108
+ */
109
+ function engineFlexImplementation() external view returns (address);
110
+
111
+ /**
112
+ * @notice Indicates whether the contract is abandoned.
113
+ * Once abandoned, the contract can no longer be used to create new Engine
114
+ * or Engine Flex contracts.
115
+ * @return bool True if the contract is abandoned, false otherwise.
116
+ */
117
+ function isAbandoned() external view returns (bool);
118
+
119
+ /**
120
+ * @notice Indicates the type of the contract, e.g. `EngineFactoryV0`.
121
+ * @return type_ The type of the contract.
122
+ */
123
+ function type_() external pure returns (bytes32);
124
+ }
@@ -16,6 +16,4 @@ interface IFilteredMinterDAExpSettlementV0 is
16
16
  IFilteredMinterDAExpSettlement_Mixin,
17
17
  IFilteredMinterV1,
18
18
  IFilteredMinterDAExpV0
19
- {
20
-
21
- }
19
+ {}
@@ -16,6 +16,4 @@ interface IFilteredMinterDAExpSettlementV1 is
16
16
  IFilteredMinterDAExpSettlement_Mixin,
17
17
  IFilteredMinterV2,
18
18
  IFilteredMinterDAExpV0
19
- {
20
-
21
- }
19
+ {}
@@ -11,6 +11,4 @@ pragma solidity ^0.8.0;
11
11
  * add support for manually setting project max invocations.
12
12
  * @author Art Blocks Inc.
13
13
  */
14
- interface IFilteredMinterDAExpV1 is IFilteredMinterDAExpV0, IFilteredMinterV2 {
15
-
16
- }
14
+ interface IFilteredMinterDAExpV1 is IFilteredMinterDAExpV0, IFilteredMinterV2 {}
@@ -11,6 +11,4 @@ pragma solidity ^0.8.0;
11
11
  * add support for manually setting project max invocations.
12
12
  * @author Art Blocks Inc.
13
13
  */
14
- interface IFilteredMinterDALinV1 is IFilteredMinterDALinV0, IFilteredMinterV2 {
15
-
16
- }
14
+ interface IFilteredMinterDALinV1 is IFilteredMinterDALinV0, IFilteredMinterV2 {}
@@ -14,6 +14,4 @@ pragma solidity ^0.8.0;
14
14
  interface IFilteredMinterHolderV2 is
15
15
  IFilteredMinterHolderV1,
16
16
  IFilteredMinterV2
17
- {
18
-
19
- }
17
+ {}
@@ -14,6 +14,4 @@ pragma solidity ^0.8.0;
14
14
  interface IFilteredMinterMerkleV2 is
15
15
  IFilteredMinterMerkleV1,
16
16
  IFilteredMinterV2
17
- {
18
-
19
- }
17
+ {}
@@ -4,8 +4,6 @@
4
4
  pragma solidity ^0.8.0;
5
5
 
6
6
  import "./IAdminACLV0.sol";
7
- /// use the Royalty Registry's IManifold interface for token royalties
8
- import "./IManifold.sol";
9
7
 
10
8
  /**
11
9
  * @title This interface is intended to house interface items that are common
@@ -14,7 +12,121 @@ import "./IManifold.sol";
14
12
  * add support the Royalty Registry by default.
15
13
  * @author Art Blocks Inc.
16
14
  */
17
- interface IGenArt721CoreContractV3_Base is IManifold {
15
+ interface IGenArt721CoreContractV3_Base {
16
+ // This interface emits generic events that contain fields that indicate
17
+ // which parameter has been updated. This is sufficient for application
18
+ // state management, while also simplifying the contract and indexing code.
19
+ // This was done as an alternative to having custom events that emit what
20
+ // field-values have changed for each event, given that changed values can
21
+ // be introspected by indexers due to the design of this smart contract
22
+ // exposing these state changes via publicly viewable fields.
23
+
24
+ /**
25
+ * @notice Project's royalty splitter was updated to `_splitter`.
26
+ * @dev New event in v3.2
27
+ * @param projectId The project ID.
28
+ * @param royaltySplitter The new splitter address to receive royalties.
29
+ */
30
+ event ProjectRoyaltySplitterUpdated(
31
+ uint256 indexed projectId,
32
+ address indexed royaltySplitter
33
+ );
34
+
35
+ // The following fields are used to indicate which contract-level parameter
36
+ // has been updated in the `PlatformUpdated` event:
37
+ // @dev only append to the end of this enum in the case of future updates
38
+ enum PlatformUpdatedFields {
39
+ FIELD_NEXT_PROJECT_ID, // 0
40
+ FIELD_NEW_PROJECTS_FORBIDDEN, // 1
41
+ FIELD_DEFAULT_BASE_URI, // 2
42
+ FIELD_RANDOMIZER_ADDRESS, // 3
43
+ FIELD_NEXT_CORE_CONTRACT, // 4
44
+ FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS, // 5
45
+ FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS, // 6
46
+ FIELD_PROVIDER_SALES_ADDRESSES, // 7
47
+ FIELD_PROVIDER_PRIMARY_SALES_PERCENTAGES, // 8
48
+ FIELD_PROVIDER_SECONDARY_SALES_BPS, // 9
49
+ FIELD_SPLIT_PROVIDER // 10
50
+ }
51
+
52
+ // The following fields are used to indicate which project-level parameter
53
+ // has been updated in the `ProjectUpdated` event:
54
+ // @dev only append to the end of this enum in the case of future updates
55
+ enum ProjectUpdatedFields {
56
+ FIELD_PROJECT_COMPLETED, // 0
57
+ FIELD_PROJECT_ACTIVE, // 1
58
+ FIELD_PROJECT_ARTIST_ADDRESS, // 2
59
+ FIELD_PROJECT_PAUSED, // 3
60
+ FIELD_PROJECT_CREATED, // 4
61
+ FIELD_PROJECT_NAME, // 5
62
+ FIELD_PROJECT_ARTIST_NAME, // 6
63
+ FIELD_PROJECT_SECONDARY_MARKET_ROYALTY_PERCENTAGE, // 7
64
+ FIELD_PROJECT_DESCRIPTION, // 8
65
+ FIELD_PROJECT_WEBSITE, // 9
66
+ FIELD_PROJECT_LICENSE, // 10
67
+ FIELD_PROJECT_MAX_INVOCATIONS, // 11
68
+ FIELD_PROJECT_SCRIPT, // 12
69
+ FIELD_PROJECT_SCRIPT_TYPE, // 13
70
+ FIELD_PROJECT_ASPECT_RATIO, // 14
71
+ FIELD_PROJECT_BASE_URI, // 15
72
+ FIELD_PROJECT_PROVIDER_SECONDARY_FINANCIALS // 16
73
+ }
74
+
75
+ /**
76
+ * @notice Error codes for the GenArt721 contract. Used by the GenArt721Error
77
+ * custom error.
78
+ * @dev only append to the end of this enum in the case of future updates
79
+ */
80
+ enum ErrorCodes {
81
+ OnlyNonZeroAddress, // 0
82
+ OnlyNonEmptyString, // 1
83
+ OnlyNonEmptyBytes, // 2
84
+ TokenDoesNotExist, // 3
85
+ ProjectDoesNotExist, // 4
86
+ OnlyUnlockedProjects, // 5
87
+ OnlyAdminACL, // 6
88
+ OnlyArtist, // 7
89
+ OnlyArtistOrAdminACL, // 8
90
+ OnlyAdminACLOrRenouncedArtist, // 9
91
+ OnlyMinterContract, // 10
92
+ MaxInvocationsReached, // 11
93
+ ProjectMustExistAndBeActive, // 12
94
+ PurchasesPaused, // 13
95
+ OnlyRandomizer, // 14
96
+ TokenHashAlreadySet, // 15
97
+ NoZeroHashSeed, // 16
98
+ OverMaxSumOfPercentages, // 17
99
+ IndexOutOfBounds, // 18
100
+ OverMaxSumOfBPS, // 19
101
+ MaxOf100Percent, // 20
102
+ PrimaryPayeeIsZeroAddress, // 21
103
+ SecondaryPayeeIsZeroAddress, // 22
104
+ MustMatchArtistProposal, // 23
105
+ NewProjectsForbidden, // 24
106
+ NewProjectsAlreadyForbidden, // 25
107
+ OnlyArtistOrAdminIfLocked, // 26
108
+ OverMaxSecondaryRoyaltyPercentage, // 27
109
+ OnlyMaxInvocationsDecrease, // 28
110
+ OnlyGteInvocations, // 29
111
+ ScriptIdOutOfRange, // 30
112
+ NoScriptsToRemove, // 31
113
+ ScriptTypeAndVersionFormat, // 32
114
+ AspectRatioTooLong, // 33
115
+ AspectRatioNoNumbers, // 34
116
+ AspectRatioImproperFormat, // 35
117
+ OnlyNullPlatformProvider, // 36
118
+ ContractInitialized // 37
119
+ }
120
+
121
+ /**
122
+ * @notice Emits an error code `_errorCode` in the GenArt721Error event.
123
+ * @dev Emitting error codes instead of error strings saves significant
124
+ * contract bytecode size, allowing for more contract functionality within
125
+ * the 24KB contract size limit.
126
+ * @param _errorCode The error code to emit. See ErrorCodes enum.
127
+ */
128
+ error GenArt721Error(ErrorCodes _errorCode);
129
+
18
130
  /**
19
131
  * @notice Token ID `_tokenId` minted to `_to`.
20
132
  */
@@ -95,14 +207,6 @@ interface IGenArt721CoreContractV3_Base is IManifold {
95
207
  uint256 _projectId
96
208
  ) external view returns (address payable);
97
209
 
98
- function projectIdToAdditionalPayeePrimarySales(
99
- uint256 _projectId
100
- ) external view returns (address payable);
101
-
102
- function projectIdToAdditionalPayeePrimarySalesPercentage(
103
- uint256 _projectId
104
- ) external view returns (uint256);
105
-
106
210
  function projectIdToSecondaryMarketRoyaltyPercentage(
107
211
  uint256 _projectId
108
212
  ) external view returns (uint256);
@@ -5,8 +5,59 @@ pragma solidity ^0.8.0;
5
5
 
6
6
  import "./IAdminACLV0.sol";
7
7
  import "./IGenArt721CoreContractV3_Base.sol";
8
+ import "./ISplitProviderV0.sol";
9
+
10
+ /**
11
+ * @notice Struct representing Engine contract configuration.
12
+ * @param tokenName Name of token.
13
+ * @param tokenSymbol Token symbol.
14
+ * @param renderProviderAddress address to send render provider revenue to
15
+ * @param randomizerContract Randomizer contract.
16
+ * @param splitProviderAddress Address to use as royalty splitter provider for the contract.
17
+ * @param minterFilterAddress Address of the Minter Filter to set as the Minter
18
+ * on the contract.
19
+ * @param startingProjectId The initial next project ID.
20
+ * @param autoApproveArtistSplitProposals Whether or not to always
21
+ * auto-approve proposed artist split updates.
22
+ * @param nullPlatformProvider Enforce always setting zero platform provider fees and addresses.
23
+ * @param allowArtistProjectActivation Allow artist to activate their own projects.
24
+ * @dev _startingProjectId should be set to a value much, much less than
25
+ * max(uint248), but an explicit input type of `uint248` is used as it is
26
+ * safer to cast up to `uint256` than it is to cast down for the purposes
27
+ * of setting `_nextProjectId`.
28
+ */
29
+ struct EngineConfiguration {
30
+ string tokenName;
31
+ string tokenSymbol;
32
+ address renderProviderAddress;
33
+ address platformProviderAddress;
34
+ address newSuperAdminAddress;
35
+ address randomizerContract;
36
+ address splitProviderAddress;
37
+ address minterFilterAddress;
38
+ uint248 startingProjectId;
39
+ bool autoApproveArtistSplitProposals;
40
+ bool nullPlatformProvider;
41
+ bool allowArtistProjectActivation;
42
+ }
8
43
 
9
44
  interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
45
+ // @dev new function in V3.2
46
+ /**
47
+ * @notice Initializes the contract with the provided `engineConfiguration`.
48
+ * This function should be called atomically, immediately after deployment.
49
+ * Only callable once. Validation on `engineConfiguration` is performed by caller.
50
+ * @param engineConfiguration EngineConfiguration to configure the contract with.
51
+ * @param adminACLContract_ Address of admin access control contract, to be
52
+ * set as contract owner.
53
+ * @param defaultBaseURIHost Base URI prefix to initialize default base URI with.
54
+ */
55
+ function initialize(
56
+ EngineConfiguration calldata engineConfiguration,
57
+ address adminACLContract_,
58
+ string memory defaultBaseURIHost
59
+ ) external;
60
+
10
61
  // @dev new function in V3
11
62
  function getPrimaryRevenueSplits(
12
63
  uint256 _projectId,
@@ -49,24 +100,49 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
49
100
  view
50
101
  returns (uint256);
51
102
 
52
- // @dev The render provider secondary sales royalties payment address
53
- function renderProviderSecondarySalesAddress()
103
+ /** @notice The default render provider payment address for all secondary sales royalty
104
+ * revenues, for all new projects. Individual project payment info is defined
105
+ * in each project's ProjectFinance struct.
106
+ * @return The default render provider payment address for secondary sales royalties.
107
+ */
108
+ function defaultRenderProviderSecondarySalesAddress()
54
109
  external
55
110
  view
56
111
  returns (address payable);
57
112
 
58
- // @dev The platform provider secondary sales royalties payment address
59
- function platformProviderSecondarySalesAddress()
113
+ /** @notice The default platform provider payment address for all secondary sales royalty
114
+ * revenues, for all new projects. Individual project payment info is defined
115
+ * in each project's ProjectFinance struct.
116
+ * @return The default platform provider payment address for secondary sales royalties.
117
+ */
118
+ function defaultPlatformProviderSecondarySalesAddress()
60
119
  external
61
120
  view
62
121
  returns (address payable);
63
122
 
64
- // @dev Basis points of secondary sales allocated to the render provider
65
- function renderProviderSecondarySalesBPS() external view returns (uint256);
123
+ /** @notice The default render provider payment basis points for all secondary sales royalty
124
+ * revenues, for all new projects. Individual project payment info is defined
125
+ * in each project's ProjectFinance struct.
126
+ * @return The default render provider payment basis points for secondary sales royalties.
127
+ */
128
+ function defaultRenderProviderSecondarySalesBPS()
129
+ external
130
+ view
131
+ returns (uint256);
66
132
 
67
- // @dev Basis points of secondary sales allocated to the platform provider
68
- function platformProviderSecondarySalesBPS()
133
+ /** @notice The default platform provider payment basis points for all secondary sales royalty
134
+ * revenues, for all new projects. Individual project payment info is defined
135
+ * in each project's ProjectFinance struct.
136
+ * @return The default platform provider payment basis points for secondary sales royalties.
137
+ */
138
+ function defaultPlatformProviderSecondarySalesBPS()
69
139
  external
70
140
  view
71
141
  returns (uint256);
142
+
143
+ /**
144
+ * @notice The address of the current split provider being used by the contract.
145
+ * @return The address of the current split provider.
146
+ */
147
+ function splitProvider() external view returns (ISplitProviderV0);
72
148
  }
@@ -18,8 +18,8 @@ interface IGenArt721CoreContractV3_Engine_Flex is
18
18
  * @notice When an external asset dependency is updated or added, this event is emitted.
19
19
  * @param _projectId The project ID of the project that was updated.
20
20
  * @param _index The index of the external asset dependency that was updated.
21
- * @param _cid The content ID of the external asset dependency. This is an empty string
22
- * if the dependency type is ONCHAIN.
21
+ * @param _cid Field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
22
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
23
23
  * @param _dependencyType The type of the external asset dependency.
24
24
  * @param _externalAssetDependencyCount The number of external asset dependencies.
25
25
  */
@@ -54,17 +54,31 @@ interface IGenArt721CoreContractV3_Engine_Flex is
54
54
  event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
55
55
 
56
56
  /**
57
- * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, or ONCHAIN.
57
+ * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, ONCHAIN, or ART_BLOCKS_DEPENDENCY_REGISTRY.
58
58
  */
59
59
  enum ExternalAssetDependencyType {
60
60
  IPFS,
61
61
  ARWEAVE,
62
- ONCHAIN
62
+ ONCHAIN,
63
+ ART_BLOCKS_DEPENDENCY_REGISTRY
63
64
  }
64
65
 
65
66
  /**
66
- * @notice An external asset dependency. This is a struct that contains the CID of the dependency,
67
- * the type of the dependency, and the address of the bytecode for this dependency.
67
+ * @notice Project storage that relate to Flex data.
68
+ */
69
+ struct ProjectFlex {
70
+ bool externalAssetDependenciesLocked;
71
+ uint24 externalAssetDependencyCount;
72
+ mapping(uint256 => ExternalAssetDependency) externalAssetDependencies;
73
+ }
74
+
75
+ /**
76
+ * @notice An external asset dependency, without the retrieved data of any ONCHAIN assets. This reflects what is
77
+ * stored in this contract's storage.
78
+ * @param CID field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
79
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
80
+ * @param dependencyType field that contains the type of the dependency.
81
+ * @param bytecodeAddress field that contains the address of the bytecode for this dependency if ONCHAIN, null address otherwise.
68
82
  */
69
83
  struct ExternalAssetDependency {
70
84
  string cid;
@@ -73,8 +87,12 @@ interface IGenArt721CoreContractV3_Engine_Flex is
73
87
  }
74
88
 
75
89
  /**
76
- * @notice An external asset dependency with data. This is a convenience struct that contains the CID of the dependency,
77
- * the type of the dependency, the address of the bytecode for this dependency, and the data retrieved from this bytecode address.
90
+ * @notice An external asset dependency with data. This is a convenience struct.
91
+ * @param CID field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
92
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
93
+ * @param dependencyType field that contains the type of the dependency.
94
+ * @param bytecodeAddress field that contains the address of the bytecode for this dependency if ONCHAIN, null address otherwise.
95
+ * @param data field that contains the data retrieved from this bytecode address if ONCHAIN, empty string otherwise.
78
96
  */
79
97
  struct ExternalAssetDependencyWithData {
80
98
  string cid;
@@ -0,0 +1,141 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./IAdminACLV0.sol";
7
+ import "./IGenArt721CoreContractV3_Engine_PreV3p2.sol";
8
+
9
+ /**
10
+ * @title This interface is intended to house interface items that are common
11
+ * across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
12
+ * @author Art Blocks Inc.
13
+ */
14
+ interface IGenArt721CoreContractV3_Engine_Flex_PreV3p2 is
15
+ IGenArt721CoreContractV3_Engine_PreV3p2
16
+ {
17
+ /**
18
+ * @notice When an external asset dependency is updated or added, this event is emitted.
19
+ * @param _projectId The project ID of the project that was updated.
20
+ * @param _index The index of the external asset dependency that was updated.
21
+ * @param _cid The content ID of the external asset dependency. This is an empty string
22
+ * if the dependency type is ONCHAIN.
23
+ * @param _dependencyType The type of the external asset dependency.
24
+ * @param _externalAssetDependencyCount The number of external asset dependencies.
25
+ */
26
+ event ExternalAssetDependencyUpdated(
27
+ uint256 indexed _projectId,
28
+ uint256 indexed _index,
29
+ string _cid,
30
+ ExternalAssetDependencyType _dependencyType,
31
+ uint24 _externalAssetDependencyCount
32
+ );
33
+
34
+ /**
35
+ * @notice The project id `_projectId` has had an external asset dependency removed at index `_index`.
36
+ */
37
+ event ExternalAssetDependencyRemoved(
38
+ uint256 indexed _projectId,
39
+ uint256 indexed _index
40
+ );
41
+
42
+ /**
43
+ * @notice The preferred gateway for dependency type `_dependencyType` has been updated to `_gatewayAddress`.
44
+ */
45
+ event GatewayUpdated(
46
+ ExternalAssetDependencyType indexed _dependencyType,
47
+ string _gatewayAddress
48
+ );
49
+
50
+ /**
51
+ * @notice The project id `_projectId` has had all external asset dependencies locked.
52
+ * @dev This is a one-way operation. Once locked, the external asset dependencies cannot be updated.
53
+ */
54
+ event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
55
+
56
+ /**
57
+ * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, or ONCHAIN.
58
+ */
59
+ enum ExternalAssetDependencyType {
60
+ IPFS,
61
+ ARWEAVE,
62
+ ONCHAIN
63
+ }
64
+
65
+ /**
66
+ * @notice Project storage that relate to Flex data.
67
+ */
68
+ struct ProjectFlex {
69
+ bool externalAssetDependenciesLocked;
70
+ uint24 externalAssetDependencyCount;
71
+ mapping(uint256 => ExternalAssetDependency) externalAssetDependencies;
72
+ }
73
+
74
+ /**
75
+ * @notice An external asset dependency. This is a struct that contains the CID of the dependency,
76
+ * the type of the dependency, and the address of the bytecode for this dependency.
77
+ */
78
+ struct ExternalAssetDependency {
79
+ string cid;
80
+ ExternalAssetDependencyType dependencyType;
81
+ address bytecodeAddress;
82
+ }
83
+
84
+ /**
85
+ * @notice An external asset dependency with data. This is a convenience struct that contains the CID of the dependency,
86
+ * the type of the dependency, the address of the bytecode for this dependency, and the data retrieved from this bytecode address.
87
+ */
88
+ struct ExternalAssetDependencyWithData {
89
+ string cid;
90
+ ExternalAssetDependencyType dependencyType;
91
+ address bytecodeAddress;
92
+ string data;
93
+ }
94
+
95
+ // preferredIPFSGateway is a url string
96
+ function preferredIPFSGateway() external view returns (string memory);
97
+
98
+ // preferredArweaveGateway is a url string
99
+ function preferredArweaveGateway() external view returns (string memory);
100
+
101
+ // updates the preferred IPFS gateway
102
+ function updateIPFSGateway(string calldata _gateway) external;
103
+
104
+ // updates the preferred Arweave gateway
105
+ function updateArweaveGateway(string calldata _gateway) external;
106
+
107
+ // locks the external asset dependencies for a project
108
+ function lockProjectExternalAssetDependencies(uint256 _projectId) external;
109
+
110
+ // updates the external asset dependency for a project at a given index
111
+ function updateProjectExternalAssetDependency(
112
+ uint256 _projectId,
113
+ uint256 _index,
114
+ string memory _cidOrData,
115
+ ExternalAssetDependencyType _dependencyType
116
+ ) external;
117
+
118
+ // adds an external asset dependency for a project
119
+ function addProjectExternalAssetDependency(
120
+ uint256 _projectId,
121
+ string memory _cidOrData,
122
+ ExternalAssetDependencyType _dependencyType
123
+ ) external;
124
+
125
+ // removes an external asset dependency for a project at a given index
126
+ function removeProjectExternalAssetDependency(
127
+ uint256 _projectId,
128
+ uint256 _index
129
+ ) external;
130
+
131
+ // getter function for project external asset dependencies
132
+ function projectExternalAssetDependencyByIndex(
133
+ uint256 _projectId,
134
+ uint256 _index
135
+ ) external view returns (ExternalAssetDependencyWithData memory);
136
+
137
+ // getter function project external asset dependency count
138
+ function projectExternalAssetDependencyCount(
139
+ uint256 _projectId
140
+ ) external view returns (uint256);
141
+ }