@artblocks/contracts 1.1.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 (326) hide show
  1. package/README.md +86 -34
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  5. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  6. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  7. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +403 -155
  8. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  9. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  10. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2060 -0
  11. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2034 -0
  12. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  15. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  18. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +3 -3
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  21. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  25. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  30. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +54 -49
  32. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  33. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  36. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  39. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  40. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  41. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  42. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  43. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  44. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +624 -0
  45. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +613 -216
  46. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +805 -206
  47. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +51 -8
  48. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  49. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +51 -8
  50. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +59 -54
  51. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  52. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  53. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  54. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  57. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +228 -45
  61. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  63. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +53 -48
  65. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +53 -48
  66. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +198 -90
  67. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +198 -90
  68. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1065 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +778 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  74. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  75. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  76. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  77. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  79. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +18 -0
  81. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  82. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  83. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  84. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +1 -1
  85. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  86. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  87. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  88. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
  89. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  90. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  91. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  92. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  93. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  94. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  95. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  96. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  97. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  98. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  99. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  101. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  102. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  103. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  104. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  105. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  106. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  107. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  108. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  109. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  110. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  111. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  112. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  113. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  114. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  115. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +195 -0
  116. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +2 -2
  117. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +2 -2
  118. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +2 -2
  119. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +2 -2
  120. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  121. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +2 -2
  122. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  123. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  124. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  125. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  126. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +2 -2
  127. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  128. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  129. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +2 -2
  130. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  131. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  132. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  133. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  134. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  135. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  136. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  137. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  138. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  139. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  140. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +7 -7
  141. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  142. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  143. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  144. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  145. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  146. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  147. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  148. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  149. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  150. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  151. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  152. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  153. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  154. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  155. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  156. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  157. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  158. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  159. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  160. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  161. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  162. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  163. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  164. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  165. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  166. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +2 -2
  167. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  168. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +2 -2
  169. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  170. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +2 -2
  171. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  172. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +2 -2
  173. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  174. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  175. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  176. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  177. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  178. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  179. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  180. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  181. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  182. package/contracts/AdminACLV0.sol +6 -2
  183. package/contracts/AdminACLV1.sol +2 -2
  184. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  185. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  186. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  187. package/contracts/DependencyRegistryV0.sol +878 -430
  188. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  189. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  190. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  191. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  192. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  193. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  194. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  195. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  196. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +8 -8
  197. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  198. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  199. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  200. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  201. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  202. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  203. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  204. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  205. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  206. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  207. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  208. package/contracts/engine/V3/EngineFactoryV0.sol +427 -0
  209. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +977 -502
  210. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1137 -663
  211. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +3 -3
  212. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +1 -1
  213. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  214. package/contracts/generator/AddressChunks.sol +106 -0
  215. package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
  216. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  217. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  218. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  219. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +25 -0
  220. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  221. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  222. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +141 -45
  223. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  224. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  225. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  226. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  227. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  228. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  229. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  230. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +126 -11
  231. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +86 -8
  232. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  233. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  234. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  235. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  236. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  237. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  238. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  239. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  240. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  241. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  242. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  243. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  244. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  245. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +19 -0
  246. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  247. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  248. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +26 -0
  249. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -4
  250. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +12 -6
  251. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  252. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  253. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  254. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
  255. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  256. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  257. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  258. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  259. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  260. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  261. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  262. package/contracts/libs/v0.8.x/ABHelpers.sol +18 -4
  263. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  264. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  265. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  266. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +98 -0
  267. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  268. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  269. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  270. package/contracts/libs/v0.8.x/V3FlexLib.sol +597 -0
  271. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +10 -12
  272. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +4 -9
  273. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +44 -44
  274. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +64 -63
  275. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +14 -10
  276. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  277. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  278. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +60 -62
  279. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +4 -8
  280. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +92 -89
  281. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +128 -15
  282. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +5 -4
  283. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +16 -10
  284. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +2 -2
  285. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +19 -15
  286. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +2 -2
  287. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +2 -2
  288. package/contracts/minter-suite/Minters/MinterDALinV5.sol +2 -2
  289. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  290. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  291. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  292. package/contracts/minter-suite/Minters/MinterSEAV1.sol +21 -32
  293. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +17 -8
  294. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +2 -2
  295. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +2 -2
  296. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +23 -9
  297. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +2 -2
  298. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +2 -2
  299. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  300. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  301. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  302. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  303. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  304. package/contracts/mock/ForceSendMock.sol +22 -0
  305. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  306. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  307. package/contracts/mock/MockAdminACLV0.sol +21 -0
  308. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  309. package/contracts/mock/MockFileStore.sol +22 -0
  310. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  311. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  312. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  313. package/contracts/randomizer/shared/SharedRandomizerV0.sol +1 -1
  314. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  315. package/contracts/split/SplitAtomicV0.sol +265 -0
  316. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  317. package/package.json +66 -36
  318. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  319. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  320. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  321. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  322. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  323. package/contracts/archive/readme.md +0 -16
  324. package/contracts/engine/README.md +0 -21
  325. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  326. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -4,8 +4,7 @@
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";
7
+ import "./IGenArt721CoreProjectScriptV1.sol";
9
8
 
10
9
  /**
11
10
  * @title This interface is intended to house interface items that are common
@@ -14,7 +13,131 @@ import "./IManifold.sol";
14
13
  * add support the Royalty Registry by default.
15
14
  * @author Art Blocks Inc.
16
15
  */
17
- interface IGenArt721CoreContractV3_Base is IManifold {
16
+ interface IGenArt721CoreContractV3_Base is IGenArt721CoreProjectScriptV1 {
17
+ // This interface emits generic events that contain fields that indicate
18
+ // which parameter has been updated. This is sufficient for application
19
+ // state management, while also simplifying the contract and indexing code.
20
+ // This was done as an alternative to having custom events that emit what
21
+ // field-values have changed for each event, given that changed values can
22
+ // be introspected by indexers due to the design of this smart contract
23
+ // exposing these state changes via publicly viewable fields.
24
+
25
+ /**
26
+ * @notice Event emitted when the Art Blocks Curation Registry contract is updated.
27
+ * @dev only utilized by subset of V3 core contracts (Art Blocks Curated contracts)
28
+ * @param artblocksCurationRegistryAddress Address of Art Blocks Curation Registry contract.
29
+ */
30
+ event ArtBlocksCurationRegistryContractUpdated(
31
+ address indexed artblocksCurationRegistryAddress
32
+ );
33
+
34
+ /**
35
+ * @notice Project's royalty splitter was updated to `_splitter`.
36
+ * @dev New event in v3.2
37
+ * @param projectId The project ID.
38
+ * @param royaltySplitter The new splitter address to receive royalties.
39
+ */
40
+ event ProjectRoyaltySplitterUpdated(
41
+ uint256 indexed projectId,
42
+ address indexed royaltySplitter
43
+ );
44
+
45
+ // The following fields are used to indicate which contract-level parameter
46
+ // has been updated in the `PlatformUpdated` event:
47
+ // @dev only append to the end of this enum in the case of future updates
48
+ enum PlatformUpdatedFields {
49
+ FIELD_NEXT_PROJECT_ID, // 0
50
+ FIELD_NEW_PROJECTS_FORBIDDEN, // 1
51
+ FIELD_DEFAULT_BASE_URI, // 2
52
+ FIELD_RANDOMIZER_ADDRESS, // 3
53
+ FIELD_NEXT_CORE_CONTRACT, // 4
54
+ FIELD_ARTBLOCKS_DEPENDENCY_REGISTRY_ADDRESS, // 5
55
+ FIELD_ARTBLOCKS_ON_CHAIN_GENERATOR_ADDRESS, // 6
56
+ FIELD_PROVIDER_SALES_ADDRESSES, // 7
57
+ FIELD_PROVIDER_PRIMARY_SALES_PERCENTAGES, // 8
58
+ FIELD_PROVIDER_SECONDARY_SALES_BPS, // 9
59
+ FIELD_SPLIT_PROVIDER, // 10
60
+ FIELD_BYTECODE_STORAGE_READER // 11
61
+ }
62
+
63
+ // The following fields are used to indicate which project-level parameter
64
+ // has been updated in the `ProjectUpdated` event:
65
+ // @dev only append to the end of this enum in the case of future updates
66
+ enum ProjectUpdatedFields {
67
+ FIELD_PROJECT_COMPLETED, // 0
68
+ FIELD_PROJECT_ACTIVE, // 1
69
+ FIELD_PROJECT_ARTIST_ADDRESS, // 2
70
+ FIELD_PROJECT_PAUSED, // 3
71
+ FIELD_PROJECT_CREATED, // 4
72
+ FIELD_PROJECT_NAME, // 5
73
+ FIELD_PROJECT_ARTIST_NAME, // 6
74
+ FIELD_PROJECT_SECONDARY_MARKET_ROYALTY_PERCENTAGE, // 7
75
+ FIELD_PROJECT_DESCRIPTION, // 8
76
+ FIELD_PROJECT_WEBSITE, // 9
77
+ FIELD_PROJECT_LICENSE, // 10
78
+ FIELD_PROJECT_MAX_INVOCATIONS, // 11
79
+ FIELD_PROJECT_SCRIPT, // 12
80
+ FIELD_PROJECT_SCRIPT_TYPE, // 13
81
+ FIELD_PROJECT_ASPECT_RATIO, // 14
82
+ FIELD_PROJECT_BASE_URI, // 15
83
+ FIELD_PROJECT_PROVIDER_SECONDARY_FINANCIALS // 16
84
+ }
85
+
86
+ /**
87
+ * @notice Error codes for the GenArt721 contract. Used by the GenArt721Error
88
+ * custom error.
89
+ * @dev only append to the end of this enum in the case of future updates
90
+ */
91
+ enum ErrorCodes {
92
+ OnlyNonZeroAddress, // 0
93
+ OnlyNonEmptyString, // 1
94
+ OnlyNonEmptyBytes, // 2
95
+ TokenDoesNotExist, // 3
96
+ ProjectDoesNotExist, // 4
97
+ OnlyUnlockedProjects, // 5
98
+ OnlyAdminACL, // 6
99
+ OnlyArtist, // 7
100
+ OnlyArtistOrAdminACL, // 8
101
+ OnlyAdminACLOrRenouncedArtist, // 9
102
+ OnlyMinterContract, // 10
103
+ MaxInvocationsReached, // 11
104
+ ProjectMustExistAndBeActive, // 12
105
+ PurchasesPaused, // 13
106
+ OnlyRandomizer, // 14
107
+ TokenHashAlreadySet, // 15
108
+ NoZeroHashSeed, // 16
109
+ OverMaxSumOfPercentages, // 17
110
+ IndexOutOfBounds, // 18
111
+ OverMaxSumOfBPS, // 19
112
+ MaxOf100Percent, // 20
113
+ PrimaryPayeeIsZeroAddress, // 21
114
+ SecondaryPayeeIsZeroAddress, // 22
115
+ MustMatchArtistProposal, // 23
116
+ NewProjectsForbidden, // 24
117
+ NewProjectsAlreadyForbidden, // 25
118
+ OnlyArtistOrAdminIfLocked, // 26
119
+ OverMaxSecondaryRoyaltyPercentage, // 27
120
+ OnlyMaxInvocationsDecrease, // 28
121
+ OnlyGteInvocations, // 29
122
+ ScriptIdOutOfRange, // 30
123
+ NoScriptsToRemove, // 31
124
+ ScriptTypeAndVersionFormat, // 32
125
+ AspectRatioTooLong, // 33
126
+ AspectRatioNoNumbers, // 34
127
+ AspectRatioImproperFormat, // 35
128
+ OnlyNullPlatformProvider, // 36
129
+ ContractInitialized // 37
130
+ }
131
+
132
+ /**
133
+ * @notice Emits an error code `_errorCode` in the GenArt721Error event.
134
+ * @dev Emitting error codes instead of error strings saves significant
135
+ * contract bytecode size, allowing for more contract functionality within
136
+ * the 24KB contract size limit.
137
+ * @param _errorCode The error code to emit. See ErrorCodes enum.
138
+ */
139
+ error GenArt721Error(ErrorCodes _errorCode);
140
+
18
141
  /**
19
142
  * @notice Token ID `_tokenId` minted to `_to`.
20
143
  */
@@ -95,14 +218,6 @@ interface IGenArt721CoreContractV3_Base is IManifold {
95
218
  uint256 _projectId
96
219
  ) external view returns (address payable);
97
220
 
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
221
  function projectIdToSecondaryMarketRoyaltyPercentage(
107
222
  uint256 _projectId
108
223
  ) external view returns (uint256);
@@ -5,8 +5,61 @@ 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
+ * @param bytecodeStorageReaderContract_ Address of the bytecode storage reader contract.
55
+ */
56
+ function initialize(
57
+ EngineConfiguration calldata engineConfiguration,
58
+ address adminACLContract_,
59
+ string memory defaultBaseURIHost,
60
+ address bytecodeStorageReaderContract_
61
+ ) external;
62
+
10
63
  // @dev new function in V3
11
64
  function getPrimaryRevenueSplits(
12
65
  uint256 _projectId,
@@ -49,24 +102,49 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
49
102
  view
50
103
  returns (uint256);
51
104
 
52
- // @dev The render provider secondary sales royalties payment address
53
- function renderProviderSecondarySalesAddress()
105
+ /** @notice The default render provider payment address for all secondary sales royalty
106
+ * revenues, for all new projects. Individual project payment info is defined
107
+ * in each project's ProjectFinance struct.
108
+ * @return The default render provider payment address for secondary sales royalties.
109
+ */
110
+ function defaultRenderProviderSecondarySalesAddress()
54
111
  external
55
112
  view
56
113
  returns (address payable);
57
114
 
58
- // @dev The platform provider secondary sales royalties payment address
59
- function platformProviderSecondarySalesAddress()
115
+ /** @notice The default platform provider payment address for all secondary sales royalty
116
+ * revenues, for all new projects. Individual project payment info is defined
117
+ * in each project's ProjectFinance struct.
118
+ * @return The default platform provider payment address for secondary sales royalties.
119
+ */
120
+ function defaultPlatformProviderSecondarySalesAddress()
60
121
  external
61
122
  view
62
123
  returns (address payable);
63
124
 
64
- // @dev Basis points of secondary sales allocated to the render provider
65
- function renderProviderSecondarySalesBPS() external view returns (uint256);
125
+ /** @notice The default render provider payment basis points for all secondary sales royalty
126
+ * revenues, for all new projects. Individual project payment info is defined
127
+ * in each project's ProjectFinance struct.
128
+ * @return The default render provider payment basis points for secondary sales royalties.
129
+ */
130
+ function defaultRenderProviderSecondarySalesBPS()
131
+ external
132
+ view
133
+ returns (uint256);
66
134
 
67
- // @dev Basis points of secondary sales allocated to the platform provider
68
- function platformProviderSecondarySalesBPS()
135
+ /** @notice The default platform provider payment basis points for all secondary sales royalty
136
+ * revenues, for all new projects. Individual project payment info is defined
137
+ * in each project's ProjectFinance struct.
138
+ * @return The default platform provider payment basis points for secondary sales royalties.
139
+ */
140
+ function defaultPlatformProviderSecondarySalesBPS()
69
141
  external
70
142
  view
71
143
  returns (uint256);
144
+
145
+ /**
146
+ * @notice The address of the current split provider being used by the contract.
147
+ * @return The address of the current split provider.
148
+ */
149
+ function splitProvider() external view returns (ISplitProviderV0);
72
150
  }
@@ -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
+ }
@@ -0,0 +1,78 @@
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_Base.sol";
8
+
9
+ // @title This interface is intended to house interface items that were used on the
10
+ // GenArt721CoreContractV3 Engine and derivative implementations prior to v3.2.0.
11
+ // Namely, the platform and render provider secondary sales functions are exposed at the contract-level
12
+ // instead of having only defaults defined at the contract level.
13
+ interface IGenArt721CoreContractV3_Engine_PreV3p2 is
14
+ IGenArt721CoreContractV3_Base
15
+ {
16
+ // @dev new function in V3
17
+ function getPrimaryRevenueSplits(
18
+ uint256 _projectId,
19
+ uint256 _price
20
+ )
21
+ external
22
+ view
23
+ returns (
24
+ uint256 renderProviderRevenue_,
25
+ address payable renderProviderAddress_,
26
+ uint256 platformProviderRevenue_,
27
+ address payable platformProviderAddress_,
28
+ uint256 artistRevenue_,
29
+ address payable artistAddress_,
30
+ uint256 additionalPayeePrimaryRevenue_,
31
+ address payable additionalPayeePrimaryAddress_
32
+ );
33
+
34
+ // @dev The render provider primary sales payment address
35
+ function renderProviderPrimarySalesAddress()
36
+ external
37
+ view
38
+ returns (address payable);
39
+
40
+ // @dev The platform provider primary sales payment address
41
+ function platformProviderPrimarySalesAddress()
42
+ external
43
+ view
44
+ returns (address payable);
45
+
46
+ // @dev Percentage of primary sales allocated to the render provider
47
+ function renderProviderPrimarySalesPercentage()
48
+ external
49
+ view
50
+ returns (uint256);
51
+
52
+ // @dev Percentage of primary sales allocated to the platform provider
53
+ function platformProviderPrimarySalesPercentage()
54
+ external
55
+ view
56
+ returns (uint256);
57
+
58
+ // @dev The render provider secondary sales royalties payment address
59
+ function renderProviderSecondarySalesAddress()
60
+ external
61
+ view
62
+ returns (address payable);
63
+
64
+ // @dev The platform provider secondary sales royalties payment address
65
+ function platformProviderSecondarySalesAddress()
66
+ external
67
+ view
68
+ returns (address payable);
69
+
70
+ // @dev Basis points of secondary sales allocated to the render provider
71
+ function renderProviderSecondarySalesBPS() external view returns (uint256);
72
+
73
+ // @dev Basis points of secondary sales allocated to the platform provider
74
+ function platformProviderSecondarySalesBPS()
75
+ external
76
+ view
77
+ returns (uint256);
78
+ }
@@ -0,0 +1,47 @@
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
+
8
+ /**
9
+ * @title This interface defines a project finance struct that is used in the
10
+ * GenArt721CoreContractV3 flagship and derivative implementations beginning
11
+ * with v3.2.0. This struct is intended to house all financial information
12
+ * related to a project, including royalties, artist splits, and platform
13
+ * provider splits.
14
+ * @author Art Blocks Inc.
15
+ */
16
+ interface IGenArt721CoreContractV3_ProjectFinance {
17
+ /// packed struct containing project financial information
18
+ struct ProjectFinance {
19
+ address payable additionalPayeePrimarySales;
20
+ // packed uint: max of 95, max uint8 = 255
21
+ uint8 secondaryMarketRoyaltyPercentage;
22
+ address payable additionalPayeeSecondarySales;
23
+ // packed uint: max of 100, max uint8 = 255
24
+ uint8 additionalPayeeSecondarySalesPercentage;
25
+ address payable artistAddress;
26
+ // packed uint: max of 100, max uint8 = 255
27
+ uint8 additionalPayeePrimarySalesPercentage;
28
+ address platformProviderSecondarySalesAddress;
29
+ // packed uint: max of 10_000 max uint16 = 65_535
30
+ uint16 platformProviderSecondarySalesBPS;
31
+ address renderProviderSecondarySalesAddress;
32
+ // packed uint: max of 10_000 max uint16 = 65_535
33
+ uint16 renderProviderSecondarySalesBPS;
34
+ // address to send ERC-2981 royalties to
35
+ address royaltySplitter;
36
+ }
37
+
38
+ /**
39
+ * @notice View function returning project financial details for project
40
+ * `_projectId`.
41
+ * @param _projectId Project ID to be queried.
42
+ * @return ProjectFinance Project financial details.
43
+ */
44
+ function projectIdToFinancials(
45
+ uint256 _projectId
46
+ ) external view returns (ProjectFinance memory);
47
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV0, GenArt721CoreV1, and GenArt721CoreV2
6
+ */
7
+ interface IGenArt721CoreProjectScriptV0 {
8
+ function projectScriptByIndex(
9
+ uint256 _projectId,
10
+ uint256 _index
11
+ ) external view returns (string memory);
12
+
13
+ /**
14
+ * @dev the return specified here is common across all
15
+ * pre-v3 core contracts. They all return additional
16
+ * data as well that varies between contracts but is not
17
+ * used by the dependency registry.
18
+ */
19
+ function projectScriptInfo(
20
+ uint256 _projectId
21
+ ) external view returns (string memory scriptJSON, uint256 scriptCount);
22
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV3 and above
6
+ */
7
+ interface IGenArt721CoreProjectScriptV1 {
8
+ function projectScriptDetails(
9
+ uint256 _projectId
10
+ )
11
+ external
12
+ view
13
+ returns (
14
+ string memory scriptTypeAndVersion,
15
+ string memory aspectRatio,
16
+ uint256 scriptCount
17
+ );
18
+
19
+ function projectScriptBytecodeAddressByIndex(
20
+ uint256 _projectId,
21
+ uint256 _index
22
+ ) external view returns (address);
23
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by the GenArt721 (GenArt721CoreV0)
6
+ */
7
+ interface IGenArt721CoreTokenHashProviderV0 {
8
+ function showTokenHashes(
9
+ uint256 _tokenId
10
+ ) external view returns (bytes32[] memory);
11
+ }
@@ -0,0 +1,9 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV1 and above.
6
+ */
7
+ interface IGenArt721CoreTokenHashProviderV1 {
8
+ function tokenIdToHash(uint256 tokenId) external view returns (bytes32);
9
+ }