@artblocks/contracts 1.1.0 → 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 (257) 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 +273 -155
  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/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +3 -3
  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 +567 -206
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +787 -224
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +38 -8
  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 +38 -8
  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/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  47. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  48. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +58 -45
  49. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  50. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  51. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  52. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
  53. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  61. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +18 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +1 -1
  65. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  66. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  67. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  68. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  69. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  70. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  71. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  72. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  73. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  74. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  75. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  76. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  77. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  78. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  79. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  80. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  81. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  82. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  83. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  84. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  85. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  86. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  87. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  88. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
  89. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +2 -2
  90. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +2 -2
  92. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +2 -2
  93. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  94. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  96. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  97. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  98. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +2 -2
  99. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  101. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +2 -2
  102. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  103. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  105. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  106. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  107. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  108. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  109. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  110. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +7 -7
  111. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  112. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  113. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  114. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  115. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  116. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  117. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  118. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  119. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  120. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  121. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  122. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  123. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  124. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  125. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  126. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  127. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  128. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  129. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  130. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  131. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +2 -2
  132. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  133. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +2 -2
  134. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  135. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +2 -2
  136. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  137. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +2 -2
  138. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  139. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  140. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  141. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  142. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  143. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  144. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  145. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  146. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  147. package/contracts/AdminACLV0.sol +6 -2
  148. package/contracts/AdminACLV1.sol +2 -2
  149. package/contracts/DependencyRegistryV0.sol +687 -408
  150. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  151. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  152. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  153. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  154. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  155. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  156. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +8 -8
  157. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  158. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  159. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  160. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  161. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  162. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  163. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  164. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  165. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  166. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  167. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  168. package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
  169. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +894 -488
  170. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1054 -650
  171. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +3 -3
  172. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +1 -1
  173. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  174. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  175. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
  176. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +47 -45
  177. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  178. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  179. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  180. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  181. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  182. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  183. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  184. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
  185. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
  186. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  187. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  188. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  189. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  190. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  191. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  192. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +19 -0
  193. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  194. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
  195. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -4
  196. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +12 -6
  197. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  198. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  199. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  200. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  201. package/contracts/libs/v0.8.x/ABHelpers.sol +18 -4
  202. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  203. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  204. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
  205. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  206. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  207. package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
  208. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +10 -12
  209. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +4 -9
  210. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +44 -44
  211. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +64 -63
  212. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +14 -10
  213. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  214. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +60 -62
  215. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +4 -8
  216. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +92 -89
  217. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +21 -15
  218. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +5 -4
  219. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +16 -10
  220. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +2 -2
  221. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +19 -15
  222. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +2 -2
  223. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +2 -2
  224. package/contracts/minter-suite/Minters/MinterDALinV5.sol +2 -2
  225. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  226. package/contracts/minter-suite/Minters/MinterSEAV1.sol +21 -32
  227. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +17 -8
  228. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +2 -2
  229. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +2 -2
  230. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +23 -9
  231. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +2 -2
  232. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +2 -2
  233. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  234. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  235. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  236. package/contracts/mock/ForceSendMock.sol +22 -0
  237. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  238. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  239. package/contracts/mock/MockAdminACLV0.sol +21 -0
  240. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  241. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  242. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  243. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  244. package/contracts/randomizer/shared/SharedRandomizerV0.sol +1 -1
  245. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  246. package/contracts/split/SplitAtomicV0.sol +265 -0
  247. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  248. package/package.json +62 -34
  249. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  250. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  251. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  252. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  253. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  254. package/contracts/archive/readme.md +0 -16
  255. package/contracts/engine/README.md +0 -21
  256. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  257. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -5,8 +5,59 @@ pragma solidity ^0.8.0;
5
5
 
6
6
  import "./IAdminACLV0.sol";
7
7
  import "./IGenArt721CoreContractV3_Base.sol";
8
+ import "./ISplitProviderV0.sol";
9
+
10
+ /**
11
+ * @notice Struct representing Engine contract configuration.
12
+ * @param tokenName Name of token.
13
+ * @param tokenSymbol Token symbol.
14
+ * @param renderProviderAddress address to send render provider revenue to
15
+ * @param randomizerContract Randomizer contract.
16
+ * @param splitProviderAddress Address to use as royalty splitter provider for the contract.
17
+ * @param minterFilterAddress Address of the Minter Filter to set as the Minter
18
+ * on the contract.
19
+ * @param startingProjectId The initial next project ID.
20
+ * @param autoApproveArtistSplitProposals Whether or not to always
21
+ * auto-approve proposed artist split updates.
22
+ * @param nullPlatformProvider Enforce always setting zero platform provider fees and addresses.
23
+ * @param allowArtistProjectActivation Allow artist to activate their own projects.
24
+ * @dev _startingProjectId should be set to a value much, much less than
25
+ * max(uint248), but an explicit input type of `uint248` is used as it is
26
+ * safer to cast up to `uint256` than it is to cast down for the purposes
27
+ * of setting `_nextProjectId`.
28
+ */
29
+ struct EngineConfiguration {
30
+ string tokenName;
31
+ string tokenSymbol;
32
+ address renderProviderAddress;
33
+ address platformProviderAddress;
34
+ address newSuperAdminAddress;
35
+ address randomizerContract;
36
+ address splitProviderAddress;
37
+ address minterFilterAddress;
38
+ uint248 startingProjectId;
39
+ bool autoApproveArtistSplitProposals;
40
+ bool nullPlatformProvider;
41
+ bool allowArtistProjectActivation;
42
+ }
8
43
 
9
44
  interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
45
+ // @dev new function in V3.2
46
+ /**
47
+ * @notice Initializes the contract with the provided `engineConfiguration`.
48
+ * This function should be called atomically, immediately after deployment.
49
+ * Only callable once. Validation on `engineConfiguration` is performed by caller.
50
+ * @param engineConfiguration EngineConfiguration to configure the contract with.
51
+ * @param adminACLContract_ Address of admin access control contract, to be
52
+ * set as contract owner.
53
+ * @param defaultBaseURIHost Base URI prefix to initialize default base URI with.
54
+ */
55
+ function initialize(
56
+ EngineConfiguration calldata engineConfiguration,
57
+ address adminACLContract_,
58
+ string memory defaultBaseURIHost
59
+ ) external;
60
+
10
61
  // @dev new function in V3
11
62
  function getPrimaryRevenueSplits(
12
63
  uint256 _projectId,
@@ -49,24 +100,49 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
49
100
  view
50
101
  returns (uint256);
51
102
 
52
- // @dev The render provider secondary sales royalties payment address
53
- function renderProviderSecondarySalesAddress()
103
+ /** @notice The default render provider payment address for all secondary sales royalty
104
+ * revenues, for all new projects. Individual project payment info is defined
105
+ * in each project's ProjectFinance struct.
106
+ * @return The default render provider payment address for secondary sales royalties.
107
+ */
108
+ function defaultRenderProviderSecondarySalesAddress()
54
109
  external
55
110
  view
56
111
  returns (address payable);
57
112
 
58
- // @dev The platform provider secondary sales royalties payment address
59
- function platformProviderSecondarySalesAddress()
113
+ /** @notice The default platform provider payment address for all secondary sales royalty
114
+ * revenues, for all new projects. Individual project payment info is defined
115
+ * in each project's ProjectFinance struct.
116
+ * @return The default platform provider payment address for secondary sales royalties.
117
+ */
118
+ function defaultPlatformProviderSecondarySalesAddress()
60
119
  external
61
120
  view
62
121
  returns (address payable);
63
122
 
64
- // @dev Basis points of secondary sales allocated to the render provider
65
- function renderProviderSecondarySalesBPS() external view returns (uint256);
123
+ /** @notice The default render provider payment basis points for all secondary sales royalty
124
+ * revenues, for all new projects. Individual project payment info is defined
125
+ * in each project's ProjectFinance struct.
126
+ * @return The default render provider payment basis points for secondary sales royalties.
127
+ */
128
+ function defaultRenderProviderSecondarySalesBPS()
129
+ external
130
+ view
131
+ returns (uint256);
66
132
 
67
- // @dev Basis points of secondary sales allocated to the platform provider
68
- function platformProviderSecondarySalesBPS()
133
+ /** @notice The default platform provider payment basis points for all secondary sales royalty
134
+ * revenues, for all new projects. Individual project payment info is defined
135
+ * in each project's ProjectFinance struct.
136
+ * @return The default platform provider payment basis points for secondary sales royalties.
137
+ */
138
+ function defaultPlatformProviderSecondarySalesBPS()
69
139
  external
70
140
  view
71
141
  returns (uint256);
142
+
143
+ /**
144
+ * @notice The address of the current split provider being used by the contract.
145
+ * @return The address of the current split provider.
146
+ */
147
+ function splitProvider() external view returns (ISplitProviderV0);
72
148
  }
@@ -18,8 +18,8 @@ interface IGenArt721CoreContractV3_Engine_Flex is
18
18
  * @notice When an external asset dependency is updated or added, this event is emitted.
19
19
  * @param _projectId The project ID of the project that was updated.
20
20
  * @param _index The index of the external asset dependency that was updated.
21
- * @param _cid The content ID of the external asset dependency. This is an empty string
22
- * if the dependency type is ONCHAIN.
21
+ * @param _cid Field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
22
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
23
23
  * @param _dependencyType The type of the external asset dependency.
24
24
  * @param _externalAssetDependencyCount The number of external asset dependencies.
25
25
  */
@@ -54,17 +54,31 @@ interface IGenArt721CoreContractV3_Engine_Flex is
54
54
  event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
55
55
 
56
56
  /**
57
- * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, or ONCHAIN.
57
+ * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, ONCHAIN, or ART_BLOCKS_DEPENDENCY_REGISTRY.
58
58
  */
59
59
  enum ExternalAssetDependencyType {
60
60
  IPFS,
61
61
  ARWEAVE,
62
- ONCHAIN
62
+ ONCHAIN,
63
+ ART_BLOCKS_DEPENDENCY_REGISTRY
63
64
  }
64
65
 
65
66
  /**
66
- * @notice An external asset dependency. This is a struct that contains the CID of the dependency,
67
- * the type of the dependency, and the address of the bytecode for this dependency.
67
+ * @notice Project storage that relate to Flex data.
68
+ */
69
+ struct ProjectFlex {
70
+ bool externalAssetDependenciesLocked;
71
+ uint24 externalAssetDependencyCount;
72
+ mapping(uint256 => ExternalAssetDependency) externalAssetDependencies;
73
+ }
74
+
75
+ /**
76
+ * @notice An external asset dependency, without the retrieved data of any ONCHAIN assets. This reflects what is
77
+ * stored in this contract's storage.
78
+ * @param CID field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
79
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
80
+ * @param dependencyType field that contains the type of the dependency.
81
+ * @param bytecodeAddress field that contains the address of the bytecode for this dependency if ONCHAIN, null address otherwise.
68
82
  */
69
83
  struct ExternalAssetDependency {
70
84
  string cid;
@@ -73,8 +87,12 @@ interface IGenArt721CoreContractV3_Engine_Flex is
73
87
  }
74
88
 
75
89
  /**
76
- * @notice An external asset dependency with data. This is a convenience struct that contains the CID of the dependency,
77
- * the type of the dependency, the address of the bytecode for this dependency, and the data retrieved from this bytecode address.
90
+ * @notice An external asset dependency with data. This is a convenience struct.
91
+ * @param CID field that contains the CID of the dependency if IPFS or ARWEAVE, empty string of ONCHAIN, or a string representation
92
+ * of the Art Blocks Dependency Registry's `dependencyNameAndVersion` if ART_BLOCKS_DEPENDENCY_REGISTRY.
93
+ * @param dependencyType field that contains the type of the dependency.
94
+ * @param bytecodeAddress field that contains the address of the bytecode for this dependency if ONCHAIN, null address otherwise.
95
+ * @param data field that contains the data retrieved from this bytecode address if ONCHAIN, empty string otherwise.
78
96
  */
79
97
  struct ExternalAssetDependencyWithData {
80
98
  string cid;
@@ -0,0 +1,141 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./IAdminACLV0.sol";
7
+ import "./IGenArt721CoreContractV3_Engine_PreV3p2.sol";
8
+
9
+ /**
10
+ * @title This interface is intended to house interface items that are common
11
+ * across all GenArt721CoreContractV3 Engine Flex and derivative implementations.
12
+ * @author Art Blocks Inc.
13
+ */
14
+ interface IGenArt721CoreContractV3_Engine_Flex_PreV3p2 is
15
+ IGenArt721CoreContractV3_Engine_PreV3p2
16
+ {
17
+ /**
18
+ * @notice When an external asset dependency is updated or added, this event is emitted.
19
+ * @param _projectId The project ID of the project that was updated.
20
+ * @param _index The index of the external asset dependency that was updated.
21
+ * @param _cid The content ID of the external asset dependency. This is an empty string
22
+ * if the dependency type is ONCHAIN.
23
+ * @param _dependencyType The type of the external asset dependency.
24
+ * @param _externalAssetDependencyCount The number of external asset dependencies.
25
+ */
26
+ event ExternalAssetDependencyUpdated(
27
+ uint256 indexed _projectId,
28
+ uint256 indexed _index,
29
+ string _cid,
30
+ ExternalAssetDependencyType _dependencyType,
31
+ uint24 _externalAssetDependencyCount
32
+ );
33
+
34
+ /**
35
+ * @notice The project id `_projectId` has had an external asset dependency removed at index `_index`.
36
+ */
37
+ event ExternalAssetDependencyRemoved(
38
+ uint256 indexed _projectId,
39
+ uint256 indexed _index
40
+ );
41
+
42
+ /**
43
+ * @notice The preferred gateway for dependency type `_dependencyType` has been updated to `_gatewayAddress`.
44
+ */
45
+ event GatewayUpdated(
46
+ ExternalAssetDependencyType indexed _dependencyType,
47
+ string _gatewayAddress
48
+ );
49
+
50
+ /**
51
+ * @notice The project id `_projectId` has had all external asset dependencies locked.
52
+ * @dev This is a one-way operation. Once locked, the external asset dependencies cannot be updated.
53
+ */
54
+ event ProjectExternalAssetDependenciesLocked(uint256 indexed _projectId);
55
+
56
+ /**
57
+ * @notice An external asset dependency type. Can be one of IPFS, ARWEAVE, or ONCHAIN.
58
+ */
59
+ enum ExternalAssetDependencyType {
60
+ IPFS,
61
+ ARWEAVE,
62
+ ONCHAIN
63
+ }
64
+
65
+ /**
66
+ * @notice Project storage that relate to Flex data.
67
+ */
68
+ struct ProjectFlex {
69
+ bool externalAssetDependenciesLocked;
70
+ uint24 externalAssetDependencyCount;
71
+ mapping(uint256 => ExternalAssetDependency) externalAssetDependencies;
72
+ }
73
+
74
+ /**
75
+ * @notice An external asset dependency. This is a struct that contains the CID of the dependency,
76
+ * the type of the dependency, and the address of the bytecode for this dependency.
77
+ */
78
+ struct ExternalAssetDependency {
79
+ string cid;
80
+ ExternalAssetDependencyType dependencyType;
81
+ address bytecodeAddress;
82
+ }
83
+
84
+ /**
85
+ * @notice An external asset dependency with data. This is a convenience struct that contains the CID of the dependency,
86
+ * the type of the dependency, the address of the bytecode for this dependency, and the data retrieved from this bytecode address.
87
+ */
88
+ struct ExternalAssetDependencyWithData {
89
+ string cid;
90
+ ExternalAssetDependencyType dependencyType;
91
+ address bytecodeAddress;
92
+ string data;
93
+ }
94
+
95
+ // preferredIPFSGateway is a url string
96
+ function preferredIPFSGateway() external view returns (string memory);
97
+
98
+ // preferredArweaveGateway is a url string
99
+ function preferredArweaveGateway() external view returns (string memory);
100
+
101
+ // updates the preferred IPFS gateway
102
+ function updateIPFSGateway(string calldata _gateway) external;
103
+
104
+ // updates the preferred Arweave gateway
105
+ function updateArweaveGateway(string calldata _gateway) external;
106
+
107
+ // locks the external asset dependencies for a project
108
+ function lockProjectExternalAssetDependencies(uint256 _projectId) external;
109
+
110
+ // updates the external asset dependency for a project at a given index
111
+ function updateProjectExternalAssetDependency(
112
+ uint256 _projectId,
113
+ uint256 _index,
114
+ string memory _cidOrData,
115
+ ExternalAssetDependencyType _dependencyType
116
+ ) external;
117
+
118
+ // adds an external asset dependency for a project
119
+ function addProjectExternalAssetDependency(
120
+ uint256 _projectId,
121
+ string memory _cidOrData,
122
+ ExternalAssetDependencyType _dependencyType
123
+ ) external;
124
+
125
+ // removes an external asset dependency for a project at a given index
126
+ function removeProjectExternalAssetDependency(
127
+ uint256 _projectId,
128
+ uint256 _index
129
+ ) external;
130
+
131
+ // getter function for project external asset dependencies
132
+ function projectExternalAssetDependencyByIndex(
133
+ uint256 _projectId,
134
+ uint256 _index
135
+ ) external view returns (ExternalAssetDependencyWithData memory);
136
+
137
+ // getter function project external asset dependency count
138
+ function projectExternalAssetDependencyCount(
139
+ uint256 _projectId
140
+ ) external view returns (uint256);
141
+ }
@@ -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,91 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ interface IGenArt721Minter_PBAB {
7
+ /**
8
+ * @notice Price per token in wei updated for project `_projectId` to
9
+ * `_pricePerTokenInWei`.
10
+ */
11
+ event PricePerTokenInWeiUpdated(
12
+ uint256 indexed _projectId,
13
+ uint256 indexed _pricePerTokenInWei
14
+ );
15
+
16
+ /**
17
+ * @notice Currency updated for project `_projectId` to symbol
18
+ * `_currencySymbol` and address `_currencyAddress`.
19
+ */
20
+ event ProjectCurrencyInfoUpdated(
21
+ uint256 indexed _projectId,
22
+ address indexed _currencyAddress,
23
+ string _currencySymbol
24
+ );
25
+
26
+ /// togglePurchaseToDisabled updated
27
+ event PurchaseToDisabledUpdated(
28
+ uint256 indexed _projectId,
29
+ bool _purchaseToDisabled
30
+ );
31
+
32
+ // getter function of public variable
33
+ function minterType() external view returns (string memory);
34
+
35
+ function genArt721CoreAddress() external returns (address);
36
+
37
+ function minterFilterAddress() external returns (address);
38
+
39
+ // Triggers a purchase of a token from the desired project with ETH, to the
40
+ // TX-sending address.
41
+ function purchase(
42
+ uint256 _projectId
43
+ ) external payable returns (uint256 tokenId);
44
+
45
+ // Triggers a purchase of a token from the desired project with ETH or any ERC-20 token, to the
46
+ // TX-sending address.
47
+ function purchase(
48
+ uint256 _projectId,
49
+ uint256 _maxPricePerToken,
50
+ address _currencyAddress
51
+ ) external payable returns (uint256 tokenId);
52
+
53
+ // Triggers a purchase of a token from the desired project with ETH, to the specified
54
+ // receiving address.
55
+ function purchaseTo(
56
+ address _to,
57
+ uint256 _projectId
58
+ ) external payable returns (uint256 tokenId);
59
+
60
+ // Triggers a purchase of a token from the desired project with ETH or any ERC-20 token, to the specified
61
+ // receiving address.
62
+ function purchaseTo(
63
+ address _to,
64
+ uint256 _projectId,
65
+ uint256 _maxPricePerToken,
66
+ address _currencyAddress
67
+ ) external payable returns (uint256 tokenId);
68
+
69
+ // Toggles the ability for `purchaseTo` to be called directly with a
70
+ // specified receiving address that differs from the TX-sending address.
71
+ function togglePurchaseToDisabled(uint256 _projectId) external;
72
+
73
+ // Called to make the minter contract aware of the max invocations for a
74
+ // given project.
75
+ function setProjectMaxInvocations(uint256 _projectId) external;
76
+
77
+ // Gets if token price is configured, token price in wei, currency symbol,
78
+ // and currency address, assuming this is project's minter.
79
+ // Supersedes any defined core price.
80
+ function getPriceInfo(
81
+ uint256 _projectId
82
+ )
83
+ external
84
+ view
85
+ returns (
86
+ bool isConfigured,
87
+ uint256 tokenPriceInWei,
88
+ string memory currencySymbol,
89
+ address currencyAddress
90
+ );
91
+ }
@@ -10,7 +10,5 @@ interface IPseudorandomAtomic {
10
10
  * generation process. An example of entropy might be the hash of a core
11
11
  * contract's address, and the ID of the token being generated.
12
12
  */
13
- function getPseudorandomAtomic(
14
- bytes32 _entropy
15
- ) external view returns (bytes32);
13
+ function getPseudorandomAtomic(bytes32 _entropy) external returns (bytes32);
16
14
  }
@@ -25,4 +25,23 @@ interface ISharedMinterDAExpSettlementV0 is ISharedMinterDAExpV0 {
25
25
  address coreContract,
26
26
  address walletAddress
27
27
  ) external view returns (uint256 excessSettlementFundsInWei);
28
+
29
+ /**
30
+ * @notice Reclaims the sender's payment above current settled price for
31
+ * project `projectId` on core contract `coreContract`.
32
+ * The current settled price is the price paid for the most recently
33
+ * purchased token, or the base price if the artist has withdrawn revenues
34
+ * after the auction reached base price.
35
+ * This function is callable at any point, but is expected to typically be
36
+ * called after auction has sold out above base price or after the auction
37
+ * has been purchased at base price. This minimizes the amount of gas
38
+ * required to send all excess settlement funds to the sender.
39
+ * Sends excess settlement funds to msg.sender.
40
+ * @param projectId Project ID to reclaim excess settlement funds on.
41
+ * @param coreContract Contract address of the core contract
42
+ */
43
+ function reclaimProjectExcessSettlementFunds(
44
+ uint256 projectId,
45
+ address coreContract
46
+ ) external;
28
47
  }
@@ -0,0 +1,23 @@
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 This interface adds support for ranked auction minting.
8
+ * @author Art Blocks Inc.
9
+ */
10
+ interface ISharedMinterRAMV0 {
11
+ function createBid(
12
+ uint256 projectId,
13
+ address coreContract,
14
+ uint16 slotIndex
15
+ ) external payable;
16
+
17
+ function topUpBid(
18
+ uint256 projectId,
19
+ address coreContract,
20
+ uint32 bidId,
21
+ uint16 newSlotIndex
22
+ ) external payable;
23
+ }
@@ -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,8 +8,5 @@ pragma solidity ^0.8.0;
8
8
  * @author Art Blocks Inc.
9
9
  */
10
10
  interface ISharedMinterSEAV0 {
11
- function createBid(
12
- uint256 projectId,
13
- address coreContract
14
- ) external payable;
11
+ function createBid(uint256 tokenId, address coreContract) external payable;
15
12
  }
@@ -3,7 +3,18 @@
3
3
 
4
4
  pragma solidity ^0.8.0;
5
5
 
6
- interface ISharedMinterV0 {
6
+ import {ISharedMinterRequired} from "./ISharedMinterRequired.sol";
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 {
7
18
  // Sets the local max invocations for a given project, checking that the provided max invocations is
8
19
  // less than or equal to the global max invocations for the project set on the core contract.
9
20
  // This does not impact the max invocations value defined on the core contract.
@@ -20,11 +31,6 @@ interface ISharedMinterV0 {
20
31
  address coreContract
21
32
  ) external;
22
33
 
23
- // getter function of public variable
24
- function minterType() external view returns (string memory);
25
-
26
- function minterFilterAddress() external returns (address);
27
-
28
34
  // Gets if token price is configured, token price in wei, currency symbol,
29
35
  // and currency address, assuming this is project's minter.
30
36
  // Supersedes any defined core price.