@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,20 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @title ISharedMinterRequired
8
+ * @notice This interface contains the minimum required interface for a shared
9
+ * minter contract. All custom, one-off minter contracts should implement this
10
+ * interface.
11
+ */
12
+ interface ISharedMinterRequired {
13
+ // Function returns the minter type, and is called by the MinterFilter for
14
+ // metadata purposes.
15
+ function minterType() external view returns (string memory);
16
+
17
+ // Function returns the minter's associated shared minter filter address,
18
+ // and is called by subgraph indexing service for entity relation purposes.
19
+ function minterFilterAddress() external returns (address);
20
+ }
@@ -8,71 +8,5 @@ pragma solidity ^0.8.0;
8
8
  * @author Art Blocks Inc.
9
9
  */
10
10
  interface ISharedMinterSEAV0 {
11
- /**
12
- * @notice Minimum auction length, in seconds, was updated to be the
13
- * provided value.
14
- */
15
- event MinAuctionDurationSecondsUpdated(uint256 minAuctionDurationSeconds);
16
-
17
- /// Admin-controlled time buffer updated
18
- event MinterTimeBufferUpdated(uint32 minterTimeBufferSeconds);
19
-
20
- // Admin-controlled refund gas limit updated
21
- event MinterRefundGasLimitUpdated(uint24 refundGasLimit);
22
-
23
- /// Artist configured future auction details
24
- event ConfiguredFutureAuctions(
25
- uint256 indexed projectId,
26
- address indexed coreContract,
27
- uint64 timestampStart,
28
- uint32 auctionDurationSeconds,
29
- uint256 basePrice,
30
- uint8 minBidIncrementPercentage
31
- );
32
-
33
- /// New token auction created, token created and sent to minter
34
- event AuctionInitialized(
35
- uint256 indexed tokenId,
36
- address indexed coreContract,
37
- address indexed bidder,
38
- uint256 bidAmount,
39
- uint64 endTime,
40
- uint8 minBidIncrementPercentage
41
- );
42
-
43
- /// Successful bid placed on token auction
44
- event AuctionBid(
45
- uint256 indexed tokenId,
46
- address indexed coreContract,
47
- address indexed bidder,
48
- uint256 bidAmount
49
- );
50
-
51
- /// Token auction was settled (token distributed to winner)
52
- event AuctionSettled(
53
- uint256 indexed tokenId,
54
- address indexed coreContract,
55
- address indexed winner,
56
- uint256 price
57
- );
58
-
59
- /// Future auction details for project `projectId` reset
60
- event ResetAuctionDetails(
61
- uint256 indexed projectId,
62
- address indexed coreContract
63
- );
64
-
65
- // Next token ID for project `projectId` updated
66
- event ProjectNextTokenUpdated(
67
- uint256 indexed projectId,
68
- address indexed coreContract,
69
- uint256 tokenId
70
- );
71
-
72
- // Next token ID for project `projectId` was ejected from the minter
73
- // and is no longer populated
74
- event ProjectNextTokenEjected(
75
- uint256 indexed projectId,
76
- address indexed coreContract
77
- );
11
+ function createBid(uint256 tokenId, address coreContract) external payable;
78
12
  }
@@ -14,15 +14,15 @@ interface ISharedMinterSimplePurchaseV0 {
14
14
  // Triggers a purchase of a token from the desired project, to the
15
15
  // TX-sending address.
16
16
  function purchase(
17
- uint256 _projectId,
18
- address _coreContract
17
+ uint256 projectId,
18
+ address coreContract
19
19
  ) external payable returns (uint256 tokenId);
20
20
 
21
21
  // Triggers a purchase of a token from the desired project, to the specified
22
22
  // receiving address.
23
23
  function purchaseTo(
24
- address _to,
25
- uint256 _projectId,
26
- address _coreContract
24
+ address to,
25
+ uint256 projectId,
26
+ address coreContract
27
27
  ) external payable returns (uint256 tokenId);
28
28
  }
@@ -3,182 +3,40 @@
3
3
 
4
4
  pragma solidity ^0.8.0;
5
5
 
6
- interface ISharedMinterV0 {
7
- // This section defines events for generic project minter configuration updates
8
- /**
9
- * @dev Strings not supported. Recommend conversion of (short) strings to
10
- * bytes32 to remain gas-efficient.
11
- */
12
- /**
13
- * @notice Generic project minter configuration event. Removes key `_key`
14
- * for project `_projectId`.
15
- */
16
- event ConfigKeyRemoved(
17
- uint256 indexed _projectId,
18
- address indexed _coreContract,
19
- bytes32 _key
20
- );
21
- /// BOOL
22
- /**
23
- * @notice Generic project minter configuration event. Sets value of key
24
- * `_key` to `_value` for project `_projectId`.
25
- */
26
- event ConfigValueSet(
27
- uint256 indexed _projectId,
28
- address indexed _coreContract,
29
- bytes32 _key,
30
- bool _value
31
- );
32
- /// UINT256
33
- /**
34
- * @notice Generic project minter configuration event. Sets value of key
35
- * `_key` to `_value` for project `_projectId`.
36
- */
37
- event ConfigValueSet(
38
- uint256 indexed _projectId,
39
- address indexed _coreContract,
40
- bytes32 _key,
41
- uint256 _value
42
- );
43
- /**
44
- * @notice Generic project minter configuration event. Adds value `_value`
45
- * to the set of uint256 at key `_key` for project `_projectId`.
46
- */
47
- event ConfigValueAddedToSet(
48
- uint256 indexed _projectId,
49
- address indexed _coreContract,
50
- bytes32 _key,
51
- uint256 _value
52
- );
53
- /**
54
- * @notice Generic project minter configuration event. Removes value
55
- * `_value` to the set of uint256 at key `_key` for project `_projectId`.
56
- */
57
- event ConfigValueRemovedFromSet(
58
- uint256 indexed _projectId,
59
- address indexed _coreContract,
60
- bytes32 _key,
61
- uint256 _value
62
- );
63
- /// ADDRESS
64
- /**
65
- * @notice Generic project minter configuration event. Sets value of key
66
- * `_key` to `_value` for project `_projectId`.
67
- */
68
- event ConfigValueSet(
69
- uint256 indexed _projectId,
70
- address indexed _coreContract,
71
- bytes32 _key,
72
- address _value
73
- );
74
- /**
75
- * @notice Generic project minter configuration event. Adds value `_value`
76
- * to the set of addresses at key `_key` for project `_projectId`.
77
- */
78
- event ConfigValueAddedToSet(
79
- uint256 indexed _projectId,
80
- address indexed _coreContract,
81
- bytes32 _key,
82
- address _value
83
- );
84
- /**
85
- * @notice Generic project minter configuration event. Removes value
86
- * `_value` to the set of addresses at key `_key` for project `_projectId`.
87
- */
88
- event ConfigValueRemovedFromSet(
89
- uint256 indexed _projectId,
90
- address indexed _coreContract,
91
- bytes32 _key,
92
- address _value
93
- );
94
- /// BYTES32
95
- /**
96
- * @notice Generic project minter configuration event. Sets value of key
97
- * `_key` to `_value` for project `_projectId`.
98
- */
99
- event ConfigValueSet(
100
- uint256 indexed _projectId,
101
- address indexed _coreContract,
102
- bytes32 _key,
103
- bytes32 _value
104
- );
105
- /**
106
- * @notice Generic project minter configuration event. Adds value `_value`
107
- * to the set of bytes32 at key `_key` for project `_projectId`.
108
- */
109
- event ConfigValueAddedToSet(
110
- uint256 indexed _projectId,
111
- address indexed _coreContract,
112
- bytes32 _key,
113
- bytes32 _value
114
- );
115
- /**
116
- * @notice Generic project minter configuration event. Removes value
117
- * `_value` to the set of bytes32 at key `_key` for project `_projectId`.
118
- */
119
- event ConfigValueRemovedFromSet(
120
- uint256 indexed _projectId,
121
- address indexed _coreContract,
122
- bytes32 _key,
123
- bytes32 _value
124
- );
125
- ///////////////////////////
126
- /**
127
- * @notice Price per token in wei updated for project `_projectId` to
128
- * `_pricePerTokenInWei`.
129
- */
130
- event PricePerTokenInWeiUpdated(
131
- uint256 indexed _projectId,
132
- address indexed _coreContract,
133
- uint256 indexed _pricePerTokenInWei
134
- );
135
- /**
136
- * @notice Currency updated for project `_projectId` to symbol
137
- * `_currencySymbol` and address `_currencyAddress`.
138
- */
139
- event ProjectCurrencyInfoUpdated(
140
- uint256 indexed _projectId,
141
- address indexed _coreContract,
142
- address indexed _currencyAddress,
143
- string _currencySymbol
144
- );
145
- /**
146
- * @notice Local max invocations for project `_projectId`, tied to core contract `_coreContractAddress`,
147
- * updated to `_maxInvocations`.
148
- */
149
- event ProjectMaxInvocationsLimitUpdated(
150
- uint256 indexed _projectId,
151
- address indexed _coreContract,
152
- uint256 _maxInvocations
153
- );
6
+ import {ISharedMinterRequired} from "./ISharedMinterRequired.sol";
154
7
 
8
+ /**
9
+ * @title ISharedMinterV0
10
+ * @notice This interface extends the minimum required interface for a shared
11
+ * minter contract to add additional functionality that is generally available
12
+ * for all shared minter contracts on the shared minter filter.
13
+ * @dev Custom, one-off minter contracts that are not globally approved may
14
+ * choose to not implement this interface, but should still implement the
15
+ * ISharedMinterRequired interface.
16
+ */
17
+ interface ISharedMinterV0 is ISharedMinterRequired {
155
18
  // Sets the local max invocations for a given project, checking that the provided max invocations is
156
19
  // less than or equal to the global max invocations for the project set on the core contract.
157
20
  // This does not impact the max invocations value defined on the core contract.
158
21
  function manuallyLimitProjectMaxInvocations(
159
- uint256 _projectId,
160
- address _coreContract,
161
- uint24 _maxInvocations
22
+ uint256 projectId,
23
+ address coreContract,
24
+ uint24 maxInvocations
162
25
  ) external;
163
26
 
164
27
  // Called to make the minter contract aware of the max invocations for a
165
28
  // given project.
166
29
  function syncProjectMaxInvocationsToCore(
167
- uint256 _projectId,
168
- address _coreContract
30
+ uint256 projectId,
31
+ address coreContract
169
32
  ) external;
170
33
 
171
- // getter function of public variable
172
- function minterType() external view returns (string memory);
173
-
174
- function minterFilterAddress() external returns (address);
175
-
176
34
  // Gets if token price is configured, token price in wei, currency symbol,
177
35
  // and currency address, assuming this is project's minter.
178
36
  // Supersedes any defined core price.
179
37
  function getPriceInfo(
180
- uint256 _projectId,
181
- address _coreContract
38
+ uint256 projectId,
39
+ address coreContract
182
40
  )
183
41
  external
184
42
  view
@@ -15,9 +15,9 @@ interface ISharedRandomizerV0 is IRandomizer_V3CoreBase {
15
15
  );
16
16
 
17
17
  /**
18
- * @notice Contract at `_hashSeedSetterContract` allowed to assign
19
- * token hash seeds on core contract `_coreContract` for project
20
- * `_projectId`.
18
+ * @notice Contract at `hashSeedSetterContract` allowed to assign
19
+ * token hash seeds on core contract `coreContract` for project
20
+ * `projectId`.
21
21
  */
22
22
  event HashSeedSetterForProjectUpdated(
23
23
  address indexed coreContract,
@@ -26,7 +26,7 @@ interface ISharedRandomizerV0 is IRandomizer_V3CoreBase {
26
26
  );
27
27
 
28
28
  /**
29
- * @notice Project with ID `_projectId` is is or is not using a hash seed
29
+ * @notice Project with ID `projectId` is is or is not using a hash seed
30
30
  * setter contract to assign token hash seeds on core contract.
31
31
  */
32
32
  event ProjectUsingHashSeedSetterUpdated(
@@ -39,15 +39,15 @@ interface ISharedRandomizerV0 is IRandomizer_V3CoreBase {
39
39
  * @notice Allows the artist of a project to set the contract that is
40
40
  * allowed to assign hash seeds to tokens. Typically, this is expected to
41
41
  * be a minter contract, such as `MinterPolyptychV1`.
42
- * @param _coreContract - the core contract that is being configured
43
- * @param _projectId - the project ID that is being configured
44
- * @param _hashSeedSetterContract - the contract that is allowed to assign
42
+ * @param coreContract - the core contract that is being configured
43
+ * @param projectId - the project ID that is being configured
44
+ * @param hashSeedSetterContract - the contract that is allowed to assign
45
45
  * hash seeds to tokens
46
46
  */
47
47
  function setHashSeedSetterContract(
48
- address _coreContract,
49
- uint256 _projectId,
50
- address _hashSeedSetterContract
48
+ address coreContract,
49
+ uint256 projectId,
50
+ address hashSeedSetterContract
51
51
  ) external;
52
52
 
53
53
  /**
@@ -60,48 +60,48 @@ interface ISharedRandomizerV0 is IRandomizer_V3CoreBase {
60
60
  * An example use case is where the artist wants to mint a polyptych panel
61
61
  * (second, third, etc.) of a project, and therefore wants to re-use
62
62
  * specific hash seeds of the original project.
63
- * @param _coreContract - The address of the core contract
64
- * @param _projectId - The ID of the project to be toggled
63
+ * @param coreContract - The address of the core contract
64
+ * @param projectId - The ID of the project to be toggled
65
65
  */
66
66
  function toggleProjectUseAssignedHashSeed(
67
- address _coreContract,
68
- uint256 _projectId
67
+ address coreContract,
68
+ uint256 projectId
69
69
  ) external;
70
70
 
71
71
  /**
72
72
  * @notice Pre-set the hash seed for a token. This function is only
73
73
  * callable by the hash seed setter contract of the project.
74
- * @param _coreContract - The address of the core contract of `_tokenId`
75
- * @param _tokenId - The ID of the token to set the hash seed for
76
- * @param _hashSeed - The hash seed to set for `_tokenId`
77
- * @dev Only callable by the hash seed setter contract of `_coreContract`.
74
+ * @param coreContract - The address of the core contract of `tokenId`
75
+ * @param tokenId - The ID of the token to set the hash seed for
76
+ * @param hashSeed - The hash seed to set for `tokenId`
77
+ * @dev Only callable by the hash seed setter contract of `coreContract`.
78
78
  */
79
79
  function preSetHashSeed(
80
- address _coreContract,
81
- uint256 _tokenId,
82
- bytes12 _hashSeed
80
+ address coreContract,
81
+ uint256 tokenId,
82
+ bytes12 hashSeed
83
83
  ) external;
84
84
 
85
85
  /**
86
- * @notice Boolean representing whether or not project with ID `_projectId`
87
- * on core contract `_coreContract` is currently using a hash seed setter
86
+ * @notice Boolean representing whether or not project with ID `projectId`
87
+ * on core contract `coreContract` is currently using a hash seed setter
88
88
  * contract to assign hash seeds to tokens.
89
89
  */
90
90
  function projectUsesHashSeedSetter(
91
- address _coreContract,
92
- uint256 _projectId
93
- ) external view returns (bool _usingHashSeedSetter);
91
+ address coreContract,
92
+ uint256 projectId
93
+ ) external view returns (bool usingHashSeedSetter);
94
94
 
95
95
  /**
96
96
  * Returns the hash seed setter contract for a given core contract.
97
97
  * Returns address(0) if no hash seed setter contract is set for the core.
98
- * @param _coreContract - The address of the core contract
99
- * @param _projectId - The ID of the project to query
98
+ * @param coreContract - The address of the core contract
99
+ * @param projectId - The ID of the project to query
100
100
  */
101
101
  function hashSeedSetterContracts(
102
- address _coreContract,
103
- uint256 _projectId
104
- ) external view returns (address _hashSeedSetterContract);
102
+ address coreContract,
103
+ uint256 projectId
104
+ ) external view returns (address hashSeedSetterContract);
105
105
 
106
106
  /**
107
107
  * Returns the current pre-assigned hash seed for a given token ID.
@@ -112,12 +112,12 @@ interface ISharedRandomizerV0 is IRandomizer_V3CoreBase {
112
112
  * the hash seed is generated on-chain by the pseudorandom atomic contract
113
113
  * and is not stored on-chain in this randomizer contract, and therefore
114
114
  * this function will return bytes12(0).
115
- * @param _coreContract - The address of the core contract of `_tokenId`
116
- * @param _tokenId - The ID of the token to get the hash seed for
117
- * @return _hashSeed - The stored hash seed for `_tokenId`
115
+ * @param coreContract - The address of the core contract of `tokenId`
116
+ * @param tokenId - The ID of the token to get the hash seed for
117
+ * @return hashSeed - The stored hash seed for `tokenId`
118
118
  */
119
119
  function preAssignedHashSeed(
120
- address _coreContract,
121
- uint256 _tokenId
122
- ) external view returns (bytes12 _hashSeed);
120
+ address coreContract,
121
+ uint256 tokenId
122
+ ) external view returns (bytes12 hashSeed);
123
123
  }
@@ -0,0 +1,81 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {Split} from "./ISplitAtomicV0.sol";
7
+
8
+ interface ISplitAtomicFactoryV0 {
9
+ /**
10
+ * @notice This contract was deployed.
11
+ * @param implementation address with the implementation of the contract
12
+ * @param type_ type of this contract
13
+ * @param requiredSplitAddress address that must be included in all splits
14
+ * @param requiredSplitBasisPoints basis points that must be included in
15
+ * all splits
16
+ */
17
+ event Deployed(
18
+ address indexed implementation,
19
+ bytes32 indexed type_,
20
+ address requiredSplitAddress,
21
+ uint16 requiredSplitBasisPoints
22
+ );
23
+ /**
24
+ * @notice New split atomic contract was created.
25
+ * @param splitAtomic address of the newly created split atomic contract
26
+ */
27
+ event SplitAtomicCreated(address indexed splitAtomic);
28
+ /**
29
+ * @notice This contract was abandoned and no longer can be used to create
30
+ * new split atomic contracts.
31
+ */
32
+ event Abandoned();
33
+
34
+ /**
35
+ * @notice Initializes the contract with the provided `splits`.
36
+ * Only callable once.
37
+ * @param splits Splits to configure the contract with. Must add up to
38
+ * 10_000 BPS.
39
+ * @return splitAtomic The address of the newly created split atomic
40
+ * contract
41
+ */
42
+ function createSplit(
43
+ Split[] calldata splits
44
+ ) external returns (address splitAtomic);
45
+
46
+ /**
47
+ * @notice The implementation contract that is cloned when creating new
48
+ * split atomic contracts.
49
+ */
50
+ function splitAtomicImplementation() external view returns (address);
51
+
52
+ /**
53
+ * @notice The address that must be included in all splits.
54
+ */
55
+ function requiredSplitAddress() external view returns (address);
56
+
57
+ /**
58
+ * @notice The basis points that must be included in all splits, for the
59
+ * required split address.
60
+ */
61
+ function requiredSplitBasisPoints() external view returns (uint16);
62
+
63
+ /**
64
+ * @notice The deployer of the contract.
65
+ */
66
+ function deployer() external view returns (address);
67
+
68
+ /**
69
+ * @notice Indicates whether the contract is abandoned.
70
+ * Once abandoned, the contract can no longer be used to create new split
71
+ * atomic contracts.
72
+ * @return bool True if the contract is abandoned, false otherwise.
73
+ */
74
+ function isAbandoned() external view returns (bool);
75
+
76
+ /**
77
+ * @notice Indicates the type of the contract, e.g. `SplitAtomicFactoryV0`.
78
+ * @return type_ The type of the contract.
79
+ */
80
+ function type_() external pure returns (bytes32);
81
+ }
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @notice Struct representing a split.
8
+ * @param recipient The address to send funds to.
9
+ * @param basisPoints The basis points to allocate to recipient (1-10_000).
10
+ */
11
+ struct Split {
12
+ // address to send funds to
13
+ address payable recipient;
14
+ // basis points to allocate to recipient (1-10_000)
15
+ uint16 basisPoints;
16
+ }
17
+
18
+ interface ISplitAtomicV0 {
19
+ /**
20
+ * @notice Indicates that the contract has been initialized.
21
+ * @param type_ The type of the contract.
22
+ */
23
+ event Initialized(bytes32 type_);
24
+
25
+ /**
26
+ * @notice Indicates that the contract's balance manually was drained of
27
+ * ETH.
28
+ */
29
+ event DrainedETH();
30
+
31
+ /**
32
+ * @notice Indicates that the contract's balance manually was drained of
33
+ * ERC20 token at address `ERC20TokenAddress`.
34
+ * @param ERC20TokenAddress The address of the ERC20 token that was
35
+ * drained.
36
+ */
37
+ event DrainedERC20(address ERC20TokenAddress);
38
+
39
+ /**
40
+ * @notice Initializes the contract with the provided `splits`.
41
+ * This function should be called atomically, immediately after deployment.
42
+ * Only callable once.
43
+ * @param splits Splits to configure the contract with. Must add up to
44
+ * 10_000 BPS.
45
+ */
46
+ function initialize(Split[] calldata splits) external;
47
+
48
+ /**
49
+ * @notice Drains the contract's ETH balance to the configured `splits`.
50
+ * Reverts if not initialized.
51
+ */
52
+ function drainETH() external;
53
+
54
+ /**
55
+ * @notice Drains the contract's balance of an input ERC20 token to the
56
+ * configured `splits`. Reverts if not initialized.
57
+ * @param ERC20TokenAddress The address of the ERC20 token to split.
58
+ */
59
+ function drainERC20(address ERC20TokenAddress) external;
60
+
61
+ /**
62
+ * @notice Returns the configured `splits`.
63
+ * @return Split[] memory The configured `splits`.
64
+ */
65
+ function getSplits() external view returns (Split[] memory);
66
+
67
+ /**
68
+ * @notice Indicates the type of the contract, e.g. `SplitAtomicV0`.
69
+ * @return type_ The type of the contract.
70
+ */
71
+ function type_() external pure returns (bytes32);
72
+ }
@@ -0,0 +1,49 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {ISplitFactoryV2} from "./integration-refs/splits-0x-v2/ISplitFactoryV2.sol";
7
+
8
+ interface ISplitProviderV0 {
9
+ /**
10
+ * @notice SplitInputs struct defines the inputs for requested splitters.
11
+ * It is defined in a way easily communicated from the Art Blocks GenArt721V3 contract,
12
+ * to allow for easy integration and minimal additional bytecode in the GenArt721V3 contract.
13
+ */
14
+ struct SplitInputs {
15
+ address platformProviderSecondarySalesAddress;
16
+ uint16 platformProviderSecondarySalesBPS;
17
+ address renderProviderSecondarySalesAddress;
18
+ uint16 renderProviderSecondarySalesBPS;
19
+ uint8 artistTotalRoyaltyPercentage;
20
+ address artist;
21
+ address additionalPayee;
22
+ uint8 additionalPayeePercentage;
23
+ }
24
+
25
+ /**
26
+ * @notice Emitted when a new splitter contract is created.
27
+ * @param splitter address of the splitter contract
28
+ */
29
+ event SplitterCreated(address indexed splitter);
30
+
31
+ /**
32
+ * @notice Gets or creates an immutable splitter contract at a deterministic address.
33
+ * Splits in the splitter contract are determined by the input split parameters,
34
+ * so we can safely create the splitter contract at a deterministic address (or use
35
+ * the existing splitter contract if it already exists at that address).
36
+ * @dev Uses the 0xSplits v2 implementation to create a splitter contract
37
+ * @param splitInputs The split input parameters.
38
+ * @return splitter The newly created splitter contract address.
39
+ */
40
+ function getOrCreateSplitter(
41
+ SplitInputs calldata splitInputs
42
+ ) external returns (address);
43
+
44
+ /**
45
+ * @notice Indicates the type of the contract, e.g. `SplitProviderV0`.
46
+ * @return type_ The type of the contract.
47
+ */
48
+ function type_() external pure returns (bytes32);
49
+ }