@artblocks/contracts 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/README.md +86 -34
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  5. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  6. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  7. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +403 -155
  8. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  9. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  10. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2060 -0
  11. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2034 -0
  12. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  15. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  18. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +3 -3
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  21. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  25. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  30. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +54 -49
  32. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  33. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  36. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  39. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  40. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  41. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  42. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  43. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  44. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +624 -0
  45. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +613 -216
  46. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +805 -206
  47. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +51 -8
  48. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  49. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +51 -8
  50. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +59 -54
  51. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  52. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  53. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  54. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  57. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +228 -45
  61. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  63. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +53 -48
  65. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +53 -48
  66. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +198 -90
  67. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +198 -90
  68. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1065 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +778 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  74. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  75. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  76. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  77. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  79. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +18 -0
  81. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  82. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  83. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  84. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +1 -1
  85. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  86. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  87. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  88. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +56 -0
  89. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  90. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  91. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  92. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  93. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  94. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  95. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  96. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  97. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  98. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  99. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  101. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  102. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  103. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  104. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  105. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  106. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  107. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  108. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  109. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  110. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  111. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  112. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  113. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  114. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  115. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +195 -0
  116. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +2 -2
  117. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +2 -2
  118. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +2 -2
  119. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +2 -2
  120. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  121. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +2 -2
  122. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  123. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  124. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  125. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  126. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +2 -2
  127. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  128. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  129. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +2 -2
  130. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  131. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  132. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  133. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  134. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  135. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  136. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  137. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  138. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  139. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  140. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +7 -7
  141. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  142. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  143. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  144. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  145. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  146. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  147. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  148. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  149. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  150. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  151. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  152. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  153. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  154. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  155. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  156. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  157. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  158. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  159. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  160. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  161. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  162. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  163. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  164. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  165. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  166. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +2 -2
  167. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  168. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +2 -2
  169. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  170. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +2 -2
  171. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  172. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +2 -2
  173. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  174. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  175. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  176. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  177. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  178. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  179. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  180. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  181. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  182. package/contracts/AdminACLV0.sol +6 -2
  183. package/contracts/AdminACLV1.sol +2 -2
  184. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  185. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  186. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  187. package/contracts/DependencyRegistryV0.sol +878 -430
  188. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  189. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  190. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  191. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  192. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  193. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  194. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  195. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  196. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +8 -8
  197. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  198. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  199. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  200. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  201. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  202. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  203. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  204. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  205. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  206. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  207. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  208. package/contracts/engine/V3/EngineFactoryV0.sol +427 -0
  209. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +977 -502
  210. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1137 -663
  211. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +3 -3
  212. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +1 -1
  213. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  214. package/contracts/generator/AddressChunks.sol +106 -0
  215. package/contracts/generator/GenArt721GeneratorV0.sol +1094 -0
  216. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  217. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  218. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  219. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +25 -0
  220. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  221. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  222. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +141 -45
  223. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  224. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  225. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  226. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  227. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  228. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  229. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  230. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +126 -11
  231. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +86 -8
  232. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  233. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  234. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  235. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  236. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  237. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  238. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  239. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  240. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  241. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  242. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  243. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  244. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  245. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +19 -0
  246. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  247. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  248. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +26 -0
  249. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -4
  250. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +12 -6
  251. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  252. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  253. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  254. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +28 -0
  255. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  256. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  257. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  258. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  259. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  260. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  261. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  262. package/contracts/libs/v0.8.x/ABHelpers.sol +18 -4
  263. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  264. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  265. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  266. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +98 -0
  267. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  268. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  269. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  270. package/contracts/libs/v0.8.x/V3FlexLib.sol +597 -0
  271. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +10 -12
  272. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +4 -9
  273. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +44 -44
  274. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +64 -63
  275. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +14 -10
  276. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  277. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  278. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +60 -62
  279. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +4 -8
  280. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +92 -89
  281. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +128 -15
  282. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +5 -4
  283. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +16 -10
  284. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +2 -2
  285. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +19 -15
  286. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +2 -2
  287. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +2 -2
  288. package/contracts/minter-suite/Minters/MinterDALinV5.sol +2 -2
  289. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  290. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  291. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  292. package/contracts/minter-suite/Minters/MinterSEAV1.sol +21 -32
  293. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +17 -8
  294. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +2 -2
  295. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +2 -2
  296. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +23 -9
  297. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +2 -2
  298. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +2 -2
  299. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  300. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  301. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  302. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  303. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  304. package/contracts/mock/ForceSendMock.sol +22 -0
  305. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  306. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  307. package/contracts/mock/MockAdminACLV0.sol +21 -0
  308. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  309. package/contracts/mock/MockFileStore.sol +22 -0
  310. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  311. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  312. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  313. package/contracts/randomizer/shared/SharedRandomizerV0.sol +1 -1
  314. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  315. package/contracts/split/SplitAtomicV0.sol +265 -0
  316. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  317. package/package.json +66 -36
  318. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  319. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  320. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  321. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  322. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  323. package/contracts/archive/readme.md +0 -16
  324. package/contracts/engine/README.md +0 -21
  325. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  326. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -678,7 +678,7 @@ contract MinterDAExpSettlementV0 is
678
678
 
679
679
  /**
680
680
  * @notice Reclaims the sender's payment above current settled price for
681
- * project `_projectId`. The current settled price is the the price paid
681
+ * project `_projectId`. The current settled price is the price paid
682
682
  * for the most recently purchased token, or the base price if the artist
683
683
  * has withdrawn revenues after the auction reached base price.
684
684
  * This function is callable at any point, but is expected to typically be
@@ -694,7 +694,7 @@ contract MinterDAExpSettlementV0 is
694
694
 
695
695
  /**
696
696
  * @notice Reclaims the sender's payment above current settled price for
697
- * project `_projectId`. The current settled price is the the price paid
697
+ * project `_projectId`. The current settled price is the price paid
698
698
  * for the most recently purchased token, or the base price if the artist
699
699
  * has withdrawn revenues after the auction reached base price.
700
700
  * This function is callable at any point, but is expected to typically be
@@ -750,7 +750,7 @@ contract MinterDAExpSettlementV0 is
750
750
 
751
751
  /**
752
752
  * @notice Reclaims the sender's payment above current settled price for
753
- * projects in `_projectIds`. The current settled price is the the price
753
+ * projects in `_projectIds`. The current settled price is the price
754
754
  * paid for the most recently purchased token, or the base price if the
755
755
  * artist has withdrawn revenues after the auction reached base price.
756
756
  * This function is callable at any point, but is expected to typically be
@@ -774,7 +774,7 @@ contract MinterDAExpSettlementV0 is
774
774
 
775
775
  /**
776
776
  * @notice Reclaims the sender's payment above current settled price for
777
- * projects in `_projectIds`. The current settled price is the the price
777
+ * projects in `_projectIds`. The current settled price is the price
778
778
  * paid for the most recently purchased token, or the base price if the
779
779
  * artist has withdrawn revenues after the auction reached base price.
780
780
  * This function is callable at any point, but is expected to typically be
@@ -4,7 +4,7 @@
4
4
  import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
5
  import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
6
  import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol";
7
- import "../../../../minter-suite/Minters/MinterBase_v0_1_1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
@@ -688,7 +688,7 @@ contract MinterDAExpSettlementV1 is
688
688
 
689
689
  /**
690
690
  * @notice Reclaims the sender's payment above current settled price for
691
- * project `_projectId`. The current settled price is the the price paid
691
+ * project `_projectId`. The current settled price is the price paid
692
692
  * for the most recently purchased token, or the base price if the artist
693
693
  * has withdrawn revenues after the auction reached base price.
694
694
  * This function is callable at any point, but is expected to typically be
@@ -704,7 +704,7 @@ contract MinterDAExpSettlementV1 is
704
704
 
705
705
  /**
706
706
  * @notice Reclaims the sender's payment above current settled price for
707
- * project `_projectId`. The current settled price is the the price paid
707
+ * project `_projectId`. The current settled price is the price paid
708
708
  * for the most recently purchased token, or the base price if the artist
709
709
  * has withdrawn revenues after the auction reached base price.
710
710
  * This function is callable at any point, but is expected to typically be
@@ -760,7 +760,7 @@ contract MinterDAExpSettlementV1 is
760
760
 
761
761
  /**
762
762
  * @notice Reclaims the sender's payment above current settled price for
763
- * projects in `_projectIds`. The current settled price is the the price
763
+ * projects in `_projectIds`. The current settled price is the price
764
764
  * paid for the most recently purchased token, or the base price if the
765
765
  * artist has withdrawn revenues after the auction reached base price.
766
766
  * This function is callable at any point, but is expected to typically be
@@ -784,7 +784,7 @@ contract MinterDAExpSettlementV1 is
784
784
 
785
785
  /**
786
786
  * @notice Reclaims the sender's payment above current settled price for
787
- * projects in `_projectIds`. The current settled price is the the price
787
+ * projects in `_projectIds`. The current settled price is the price
788
788
  * paid for the most recently purchased token, or the base price if the
789
789
  * artist has withdrawn revenues after the auction reached base price.
790
790
  * This function is callable at any point, but is expected to typically be
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
@@ -727,7 +727,7 @@ contract MinterDAExpSettlementV2 is
727
727
 
728
728
  /**
729
729
  * @notice Reclaims the sender's payment above current settled price for
730
- * project `_projectId`. The current settled price is the the price paid
730
+ * project `_projectId`. The current settled price is the price paid
731
731
  * for the most recently purchased token, or the base price if the artist
732
732
  * has withdrawn revenues after the auction reached base price.
733
733
  * This function is callable at any point, but is expected to typically be
@@ -743,7 +743,7 @@ contract MinterDAExpSettlementV2 is
743
743
 
744
744
  /**
745
745
  * @notice Reclaims the sender's payment above current settled price for
746
- * project `_projectId`. The current settled price is the the price paid
746
+ * project `_projectId`. The current settled price is the price paid
747
747
  * for the most recently purchased token, or the base price if the artist
748
748
  * has withdrawn revenues after the auction reached base price.
749
749
  * This function is callable at any point, but is expected to typically be
@@ -799,7 +799,7 @@ contract MinterDAExpSettlementV2 is
799
799
 
800
800
  /**
801
801
  * @notice Reclaims the sender's payment above current settled price for
802
- * projects in `_projectIds`. The current settled price is the the price
802
+ * projects in `_projectIds`. The current settled price is the price
803
803
  * paid for the most recently purchased token, or the base price if the
804
804
  * artist has withdrawn revenues after the auction reached base price.
805
805
  * This function is callable at any point, but is expected to typically be
@@ -823,7 +823,7 @@ contract MinterDAExpSettlementV2 is
823
823
 
824
824
  /**
825
825
  * @notice Reclaims the sender's payment above current settled price for
826
- * projects in `_projectIds`. The current settled price is the the price
826
+ * projects in `_projectIds`. The current settled price is the price
827
827
  * paid for the most recently purchased token, or the base price if the
828
828
  * artist has withdrawn revenues after the auction reached base price.
829
829
  * This function is callable at any point, but is expected to typically be
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterDALinV1.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterDALinV1.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
7
- import "./MinterBase_v0_1_1.sol";
8
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
9
9
 
10
10
  import "@openzeppelin-4.5/contracts/token/ERC721/IERC721.sol";
11
11
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterMerkleV2.sol";
7
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
8
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterMerkleV2.sol";
7
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
8
+ import "../MinterBase_v0_1_1.sol";
9
9
 
10
10
  import "@openzeppelin-4.7/contracts/utils/cryptography/MerkleProof.sol";
11
11
  import "@openzeppelin-4.7/contracts/token/ERC20/IERC20.sol";
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
6
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
7
- import "../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
8
- import "../../interfaces/v0.8.x/IRandomizerPolyptychV0.sol";
9
- import "../../interfaces/v0.8.x/IDelegationRegistry.sol";
10
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol";
6
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
7
+ import "../../../../interfaces/v0.8.x/IFilteredMinterHolderV2.sol";
8
+ import "../../../../interfaces/v0.8.x/IRandomizerPolyptychV0.sol";
9
+ import "../../../../interfaces/v0.8.x/IDelegationRegistry.sol";
10
+ import "../MinterBase_v0_1_1.sol";
11
11
 
12
12
  import "@openzeppelin-4.5/contracts/token/ERC721/IERC721.sol";
13
13
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
@@ -3,10 +3,10 @@
3
3
 
4
4
  pragma solidity 0.8.19;
5
5
 
6
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
7
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
8
- import "../../interfaces/v0.8.x/IFilteredMinterSEAV0.sol";
9
- import "./MinterBase_v0_1_1.sol";
6
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
7
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
8
+ import "../../../../interfaces/v0.8.x/IFilteredMinterSEAV0.sol";
9
+ import "../MinterBase_v0_1_1.sol";
10
10
 
11
11
  import "@openzeppelin-4.7/contracts/token/ERC721/IERC721.sol";
12
12
  import "@openzeppelin-4.7/contracts/security/ReentrancyGuard.sol";
@@ -119,23 +119,23 @@ contract MinterSEAV0 is ReentrancyGuard, MinterBase, IFilteredMinterSEAV0 {
119
119
 
120
120
  // minter-wide, admin-configurable parameters
121
121
  // ----------------------------------------
122
- // minimum inital auction length, in seconds; configurable by admin
122
+ // minimum initial auction length, in seconds; configurable by admin
123
123
  // max uint32 ~= 4.3e9 sec ~= 136 years
124
124
  // @dev enforced only when artist configures a project
125
125
  // @dev default to 10 minutes
126
126
  uint32 minAuctionDurationSeconds = 600;
127
- // maximum inital auction length, in seconds; configurable by admin
127
+ // maximum initial auction length, in seconds; configurable by admin
128
128
  // @dev enforced only when artist configures a project
129
129
  // @dev default to 1 month (1/12 of a year)
130
130
  uint32 maxAuctionDurationSeconds = 2_629_746;
131
131
  // the minimum percent increase for new bids above the current bid
132
- // configureable by admin
132
+ // configurable by admin
133
133
  // max uint8 ~= 255, > 100 percent
134
134
  // @dev used when determining the increment percentage for any new bid on
135
135
  // the minter, across all projects
136
136
  uint8 minterMinBidIncrementPercentage = 5;
137
137
  // minimum time remaining in auction after a new bid is placed
138
- // configureable by admin
138
+ // configurable by admin
139
139
  // max uint32 ~= 4.3e9 sec ~= 136 years
140
140
  // @dev used when determining the buffer time for any new bid on the
141
141
  // minter, across all projects
@@ -406,7 +406,7 @@ contract MinterSEAV0 is ReentrancyGuard, MinterBase, IFilteredMinterSEAV0 {
406
406
  * @param _projectId Project ID to set future auction details for.
407
407
  * @param _timestampStart Timestamp after which new auctions may be
408
408
  * started. Note that this is not the timestamp of the auction start, but
409
- * rather the timestamp after which a auction may be started. Also note
409
+ * rather the timestamp after which an auction may be started. Also note
410
410
  * that the passed value here must either be in the future, or `0` (which
411
411
  * indicates that auctions are immediately startable).
412
412
  * @param _auctionDurationSeconds Duration of new auctions, in seconds,
@@ -499,7 +499,7 @@ contract MinterSEAV0 is ReentrancyGuard, MinterBase, IFilteredMinterSEAV0 {
499
499
  * has a "next token" assigned to a project, but the project has been reset
500
500
  * via `resetAuctionDetails`, and the artist does not want an auction to be
501
501
  * started for the "next token". This function also protects against the
502
- * unforseen case where the minter is in an unexpected state where it has a
502
+ * unforeseen case where the minter is in an unexpected state where it has a
503
503
  * "next token" assigned to a project, but for some reason the project is
504
504
  * unable to begin a new auction due to a bug.
505
505
  * @dev only a single token may be actively assigned to a project's "next
@@ -541,11 +541,11 @@ contract MinterSEAV0 is ReentrancyGuard, MinterBase, IFilteredMinterSEAV0 {
541
541
 
542
542
  /**
543
543
  * @notice Emergency, Artist-only function that attempts to mint a new
544
- * token and set it as the the next token to be auctioned for project
544
+ * token and set it as the next token to be auctioned for project
545
545
  * `_projectId`.
546
- * Note: This function is only included for emergency, unforseen use cases,
546
+ * Note: This function is only included for emergency, unforeseen use cases,
547
547
  * and should not be used in normal operation. It is here only for
548
- * redundant protection against an unforseen edge case where the minter
548
+ * redundant protection against an unforeseen edge case where the minter
549
549
  * does not have a populated "next token", but there are still invocations
550
550
  * remaining on the project.
551
551
  * This function reverts if the project is not configured on this minter.
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
2
  // Created By: Art Blocks Inc.
3
3
 
4
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
- import "../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
- import "../../interfaces/v0.8.x/IFilteredMinterV2.sol";
7
- import "./MinterBase_v0_1_1.sol";
4
+ import "../../../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
5
+ import "../../../../interfaces/v0.8.x/IMinterFilterV0.sol";
6
+ import "../../../../interfaces/v0.8.x/IFilteredMinterV2.sol";
7
+ import "../MinterBase_v0_1_1.sol";
8
8
 
9
9
  import "@openzeppelin-4.5/contracts/security/ReentrancyGuard.sol";
10
10
 
@@ -231,19 +231,46 @@ contract MinterSetPriceERC20V0 is ReentrancyGuard, IFilteredMinterV0 {
231
231
  }
232
232
 
233
233
  /**
234
- * @notice Purchases a token from project `_projectId`.
234
+ * @notice Purchases a token from project `_projectId` with ETH.
235
235
  * @param _projectId Project ID to mint a token on.
236
236
  * @return tokenId Token ID of minted token
237
237
  */
238
238
  function purchase(
239
239
  uint256 _projectId
240
240
  ) external payable returns (uint256 tokenId) {
241
- tokenId = purchaseTo(msg.sender, _projectId);
241
+ // pass max price as msg.value, currency address as ETH
242
+ tokenId = purchaseTo({
243
+ _to: msg.sender,
244
+ _projectId: _projectId,
245
+ _maxPricePerToken: msg.value,
246
+ _currencyAddress: address(0)
247
+ });
242
248
  return tokenId;
243
249
  }
244
250
 
245
251
  /**
246
- * @notice Purchases a token from project `_projectId` and sets
252
+ * @notice Purchases a token from project `_projectId` with ETH or any ERC-20 token.
253
+ * @param _projectId Project ID to mint a token on.
254
+ * @param _maxPricePerToken Maximum price of token being allowed by the purchaser, no decimal places.
255
+ * @param _currencyAddress Currency address of token. `address(0)` if minting with ETH.
256
+ * @return tokenId Token ID of minted token
257
+ */
258
+ function purchase(
259
+ uint256 _projectId,
260
+ uint256 _maxPricePerToken,
261
+ address _currencyAddress
262
+ ) external payable returns (uint256 tokenId) {
263
+ tokenId = purchaseTo({
264
+ _to: msg.sender,
265
+ _projectId: _projectId,
266
+ _maxPricePerToken: _maxPricePerToken,
267
+ _currencyAddress: _currencyAddress
268
+ });
269
+ return tokenId;
270
+ }
271
+
272
+ /**
273
+ * @notice Purchases a token from project `_projectId` with ETH and sets
247
274
  * the token's owner to `_to`.
248
275
  * @param _to Address to be the new token's owner.
249
276
  * @param _projectId Project ID to mint a token on.
@@ -252,6 +279,31 @@ contract MinterSetPriceERC20V0 is ReentrancyGuard, IFilteredMinterV0 {
252
279
  function purchaseTo(
253
280
  address _to,
254
281
  uint256 _projectId
282
+ ) public payable returns (uint256 tokenId) {
283
+ // pass max price as msg.value, currency address as ETH
284
+ return
285
+ purchaseTo({
286
+ _to: _to,
287
+ _projectId: _projectId,
288
+ _maxPricePerToken: msg.value,
289
+ _currencyAddress: address(0)
290
+ });
291
+ }
292
+
293
+ /**
294
+ * @notice Purchases a token from project `_projectId` with ETH or any ERC-20 token and sets
295
+ * the token's owner to `_to`.
296
+ * @param _to Address to be the new token's owner.
297
+ * @param _projectId Project ID to mint a token on.
298
+ * @param _maxPricePerToken Maximum price of token being allowed by the purchaser, no decimal places. Required if currency is ERC20.
299
+ * @param _currencyAddress Currency address of token. `address(0)` if minting with ETH.
300
+ * @return tokenId Token ID of minted token
301
+ */
302
+ function purchaseTo(
303
+ address _to,
304
+ uint256 _projectId,
305
+ uint256 _maxPricePerToken,
306
+ address _currencyAddress
255
307
  ) public payable nonReentrant returns (uint256 tokenId) {
256
308
  // CHECKS
257
309
  require(
@@ -265,6 +317,22 @@ contract MinterSetPriceERC20V0 is ReentrancyGuard, IFilteredMinterV0 {
265
317
  "Price not configured"
266
318
  );
267
319
 
320
+ uint256 pricePerTokenInWei = projectIdToPricePerTokenInWei[_projectId];
321
+ address configuredCurrencyAddress = projectIdToCurrencyAddress[
322
+ _projectId
323
+ ];
324
+
325
+ // validate that the currency address matches the project configured currency
326
+ require(
327
+ _currencyAddress == configuredCurrencyAddress,
328
+ "Currency addresses must match"
329
+ );
330
+
331
+ // if configured currency is ETH validate that msg.value is the same as max price per token
332
+ if (configuredCurrencyAddress == address(0)) {
333
+ require(msg.value == _maxPricePerToken, "inconsistent msg.value");
334
+ }
335
+
268
336
  // if contract filter is off, allow calls from another contract
269
337
  if (!contractMintable[_projectId]) {
270
338
  require(msg.sender == tx.origin, "No Contract Buys");
@@ -300,28 +368,32 @@ contract MinterSetPriceERC20V0 is ReentrancyGuard, IFilteredMinterV0 {
300
368
  }
301
369
 
302
370
  // INTERACTIONS
303
- if (projectIdToCurrencyAddress[_projectId] != address(0)) {
371
+ if (configuredCurrencyAddress != address(0)) {
372
+ // validate that the specified maximum price is greater than or equal to the price per token
373
+ require(
374
+ _maxPricePerToken >= pricePerTokenInWei,
375
+ "Only max price gte token price"
376
+ );
304
377
  require(
305
378
  msg.value == 0,
306
379
  "this project accepts a different currency and cannot accept ETH"
307
380
  );
308
381
  require(
309
- IERC20(projectIdToCurrencyAddress[_projectId]).allowance(
382
+ IERC20(configuredCurrencyAddress).allowance(
310
383
  msg.sender,
311
384
  address(this)
312
- ) >= projectIdToPricePerTokenInWei[_projectId],
385
+ ) >= pricePerTokenInWei,
313
386
  "Insufficient Funds Approved for TX"
314
387
  );
315
388
  require(
316
- IERC20(projectIdToCurrencyAddress[_projectId]).balanceOf(
317
- msg.sender
318
- ) >= projectIdToPricePerTokenInWei[_projectId],
389
+ IERC20(configuredCurrencyAddress).balanceOf(msg.sender) >=
390
+ pricePerTokenInWei,
319
391
  "Insufficient balance."
320
392
  );
321
393
  _splitFundsERC20(_projectId);
322
394
  } else {
323
395
  require(
324
- msg.value >= projectIdToPricePerTokenInWei[_projectId],
396
+ msg.value >= pricePerTokenInWei,
325
397
  "Must send minimum value to mint!"
326
398
  );
327
399
  _splitFundsETH(_projectId);
@@ -193,19 +193,46 @@ contract MinterSetPriceERC20V1 is ReentrancyGuard, IFilteredMinterV0 {
193
193
  }
194
194
 
195
195
  /**
196
- * @notice Purchases a token from project `_projectId`.
196
+ * @notice Purchases a token from project `_projectId` with ETH.
197
197
  * @param _projectId Project ID to mint a token on.
198
198
  * @return tokenId Token ID of minted token
199
199
  */
200
200
  function purchase(
201
201
  uint256 _projectId
202
202
  ) external payable returns (uint256 tokenId) {
203
- tokenId = purchaseTo(msg.sender, _projectId);
203
+ // pass max price as msg.value, currency address as ETH
204
+ tokenId = purchaseTo({
205
+ _to: msg.sender,
206
+ _projectId: _projectId,
207
+ _maxPricePerToken: msg.value,
208
+ _currencyAddress: address(0)
209
+ });
204
210
  return tokenId;
205
211
  }
206
212
 
207
213
  /**
208
- * @notice Purchases a token from project `_projectId` and sets
214
+ * @notice Purchases a token from project `_projectId` with ETH or any ERC-20 token.
215
+ * @param _projectId Project ID to mint a token on.
216
+ * @param _maxPricePerToken Maximum price of token being allowed by the purchaser, no decimal places.
217
+ * @param _currencyAddress Currency address of token. `address(0)` if minting with ETH.
218
+ * @return tokenId Token ID of minted token
219
+ */
220
+ function purchase(
221
+ uint256 _projectId,
222
+ uint256 _maxPricePerToken,
223
+ address _currencyAddress
224
+ ) external payable returns (uint256 tokenId) {
225
+ tokenId = purchaseTo({
226
+ _to: msg.sender,
227
+ _projectId: _projectId,
228
+ _maxPricePerToken: _maxPricePerToken,
229
+ _currencyAddress: _currencyAddress
230
+ });
231
+ return tokenId;
232
+ }
233
+
234
+ /**
235
+ * @notice Purchases a token from project `_projectId` with ETH and sets
209
236
  * the token's owner to `_to`.
210
237
  * @param _to Address to be the new token's owner.
211
238
  * @param _projectId Project ID to mint a token on.
@@ -214,6 +241,31 @@ contract MinterSetPriceERC20V1 is ReentrancyGuard, IFilteredMinterV0 {
214
241
  function purchaseTo(
215
242
  address _to,
216
243
  uint256 _projectId
244
+ ) public payable returns (uint256 tokenId) {
245
+ // pass max price as msg.value, currency address as ETH
246
+ return
247
+ purchaseTo({
248
+ _to: _to,
249
+ _projectId: _projectId,
250
+ _maxPricePerToken: msg.value,
251
+ _currencyAddress: address(0)
252
+ });
253
+ }
254
+
255
+ /**
256
+ * @notice Purchases a token from project `_projectId` with ETH or any ERC-20 token and sets
257
+ * the token's owner to `_to`.
258
+ * @param _to Address to be the new token's owner.
259
+ * @param _projectId Project ID to mint a token on.
260
+ * @param _maxPricePerToken Maximum price of token being allowed by the purchaser, no decimal places. Required if currency is ERC20.
261
+ * @param _currencyAddress Currency address of token. `address(0)` if minting with ETH.
262
+ * @return tokenId Token ID of minted token
263
+ */
264
+ function purchaseTo(
265
+ address _to,
266
+ uint256 _projectId,
267
+ uint256 _maxPricePerToken,
268
+ address _currencyAddress
217
269
  ) public payable nonReentrant returns (uint256 tokenId) {
218
270
  // CHECKS
219
271
  require(
@@ -227,6 +279,22 @@ contract MinterSetPriceERC20V1 is ReentrancyGuard, IFilteredMinterV0 {
227
279
  "Price not configured"
228
280
  );
229
281
 
282
+ uint256 pricePerTokenInWei = projectIdToPricePerTokenInWei[_projectId];
283
+ address configuredCurrencyAddress = projectIdToCurrencyAddress[
284
+ _projectId
285
+ ];
286
+
287
+ // validate that the currency address matches the project configured currency
288
+ require(
289
+ _currencyAddress == configuredCurrencyAddress,
290
+ "Currency addresses must match"
291
+ );
292
+
293
+ // if configured currency is ETH validate that msg.value is the same as max price per token
294
+ if (configuredCurrencyAddress == address(0)) {
295
+ require(msg.value == _maxPricePerToken, "inconsistent msg.value");
296
+ }
297
+
230
298
  // EFFECTS
231
299
  tokenId = minterFilter.mint(_to, _projectId, msg.sender);
232
300
  // what if projectMaxInvocations[_projectId] is 0 (default value)?
@@ -241,28 +309,32 @@ contract MinterSetPriceERC20V1 is ReentrancyGuard, IFilteredMinterV0 {
241
309
  }
242
310
 
243
311
  // INTERACTIONS
244
- if (projectIdToCurrencyAddress[_projectId] != address(0)) {
312
+ if (configuredCurrencyAddress != address(0)) {
313
+ // validate that the specified maximum price is greater than or equal to the price per token
314
+ require(
315
+ _maxPricePerToken >= pricePerTokenInWei,
316
+ "Only max price gte token price"
317
+ );
245
318
  require(
246
319
  msg.value == 0,
247
320
  "this project accepts a different currency and cannot accept ETH"
248
321
  );
249
322
  require(
250
- IERC20(projectIdToCurrencyAddress[_projectId]).allowance(
323
+ IERC20(configuredCurrencyAddress).allowance(
251
324
  msg.sender,
252
325
  address(this)
253
- ) >= projectIdToPricePerTokenInWei[_projectId],
326
+ ) >= pricePerTokenInWei,
254
327
  "Insufficient Funds Approved for TX"
255
328
  );
256
329
  require(
257
- IERC20(projectIdToCurrencyAddress[_projectId]).balanceOf(
258
- msg.sender
259
- ) >= projectIdToPricePerTokenInWei[_projectId],
330
+ IERC20(configuredCurrencyAddress).balanceOf(msg.sender) >=
331
+ pricePerTokenInWei,
260
332
  "Insufficient balance."
261
333
  );
262
334
  _splitFundsERC20(_projectId);
263
335
  } else {
264
336
  require(
265
- msg.value >= projectIdToPricePerTokenInWei[_projectId],
337
+ msg.value >= pricePerTokenInWei,
266
338
  "Must send minimum value to mint!"
267
339
  );
268
340
  _splitFundsETH(_projectId);