@artblocks/contracts 1.0.3 → 1.0.4

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 (366) hide show
  1. package/README.md +32 -25
  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 +125 -17
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +6 -6
  6. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
  7. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
  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/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
  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/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
  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/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
  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/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  33. package/artifacts/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol/GenArt721CoreV2_ENGINE_FLEX.json +2 -2
  34. package/artifacts/contracts/engine/V2/GenArt721CoreV2_PBAB.sol/GenArt721CoreV2_PBAB.json +2 -2
  35. package/artifacts/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol/GenArt721CoreV2_PRTNR.json +2 -2
  36. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +2 -2
  37. package/artifacts/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol/GenArt721MinterDAExp_PBAB.json +2 -2
  38. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +2 -2
  39. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +6 -6
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +6 -6
  41. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +4 -4
  42. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +6 -6
  44. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  45. package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
  46. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +6 -6
  47. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
  48. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  49. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  50. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
  51. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
  52. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
  53. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
  54. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +1 -1
  55. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol/ICoreRegistryV1.json +1 -1
  56. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
  57. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
  58. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
  59. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
  60. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
  61. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
  62. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
  63. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
  64. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
  65. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
  66. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
  67. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
  68. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
  69. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
  70. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
  71. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
  72. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
  73. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1 -1
  74. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
  75. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
  76. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
  77. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +1 -1
  78. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  79. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +1 -1
  80. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
  81. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +1 -1
  82. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +1 -1
  83. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1 -1
  84. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  85. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
  86. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
  87. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
  88. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol/IMinterFilterV1.json +86 -1
  89. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
  90. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
  91. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  92. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
  93. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
  94. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
  95. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +1 -1
  96. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
  97. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
  98. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
  99. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
  100. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
  101. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
  102. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
  103. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
  104. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
  105. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +42 -26
  106. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
  107. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
  108. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
  109. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
  110. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
  111. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
  112. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
  113. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
  114. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
  115. package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
  116. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  117. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
  118. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
  119. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
  120. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
  121. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
  122. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
  123. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol/BytecodeStorage.json +3 -3
  124. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageReader.json +3 -3
  125. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol/BytecodeStorageWriter.json +3 -3
  126. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
  127. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
  128. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol/SSTORE2.json +3 -3
  129. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
  130. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
  131. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
  132. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
  133. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
  134. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
  135. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
  136. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
  137. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
  138. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
  139. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
  140. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  141. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +58 -2
  142. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
  143. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  144. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
  145. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  146. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
  147. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
  148. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  149. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
  150. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  151. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  152. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  153. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  154. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
  155. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  156. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
  157. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
  158. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
  159. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
  160. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
  161. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  162. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
  163. package/artifacts/contracts/mock/BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json +2 -2
  164. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  165. package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +4 -4
  166. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
  167. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  168. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
  169. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -4
  170. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
  171. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  172. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  173. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  174. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  175. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  176. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  177. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  178. package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +2 -2
  179. package/artifacts/contracts/randomizer/deprecated/BasicRandomizer.sol/BasicRandomizer.json +2 -2
  180. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  181. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  182. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  183. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +48 -32
  184. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  185. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
  186. package/contracts/AdminACLV0.sol +1 -1
  187. package/contracts/AdminACLV1.sol +1 -1
  188. package/contracts/DependencyRegistryV0.sol +216 -107
  189. package/contracts/GenArt721CoreV3.sol +27 -12
  190. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
  191. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
  192. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +3 -3
  193. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +3 -3
  194. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +3 -3
  195. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +3 -3
  196. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
  197. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
  198. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +3 -3
  199. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +3 -3
  200. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
  201. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +3 -3
  202. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +4 -4
  203. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +4 -4
  204. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
  205. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +3 -3
  206. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +4 -4
  207. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +4 -4
  208. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +4 -4
  209. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
  210. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
  211. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +3 -3
  212. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +3 -3
  213. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
  214. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
  215. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +3 -3
  216. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +3 -3
  217. package/contracts/engine/V2/GenArt721CoreV2_ENGINE_FLEX.sol +2 -2
  218. package/contracts/engine/V2/GenArt721CoreV2_PBAB.sol +2 -2
  219. package/contracts/engine/V2/GenArt721CoreV2_PRTNR.sol +3 -3
  220. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +2 -2
  221. package/contracts/engine/V2/GenArt721MinterDAExp_PBAB.sol +1 -1
  222. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +2 -2
  223. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +29 -14
  224. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +29 -14
  225. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +9 -9
  226. package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +1 -1
  227. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +20 -15
  228. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +1 -1
  229. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +1 -1
  230. package/contracts/engine-registry/CoreRegistryV1.sol +1 -1
  231. package/contracts/engine-registry/EngineRegistryV0.sol +1 -1
  232. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +27 -12
  233. package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +2 -2
  234. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
  235. package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV1.sol +26 -0
  236. package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
  237. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
  238. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
  239. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
  240. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
  241. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
  242. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
  243. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
  244. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
  245. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
  246. package/contracts/interfaces/{0.8.x → v0.8.x}/ISharedRandomizerV0.sol +42 -24
  247. package/contracts/legacy/GenArt721CoreV1.sol +2 -2
  248. package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
  249. package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +1 -1
  250. package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
  251. package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
  252. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
  253. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
  254. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
  255. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
  256. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
  257. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
  258. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
  259. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
  260. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
  261. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
  262. package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
  263. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +5 -5
  264. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +83 -9
  265. package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
  266. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
  267. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +3 -3
  268. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
  269. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +3 -3
  270. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
  271. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
  272. package/contracts/minter-suite/Minters/MinterDALinV4.sol +3 -3
  273. package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
  274. package/contracts/minter-suite/Minters/MinterHolderV4.sol +4 -4
  275. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +4 -4
  276. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +6 -6
  277. package/contracts/minter-suite/Minters/MinterSEAV0.sol +3 -3
  278. package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
  279. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +5 -5
  280. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
  281. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
  282. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
  283. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
  284. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
  285. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +3 -3
  286. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
  287. package/contracts/mock/BytecodeV0TextCR_DMock.sol +1 -1
  288. package/contracts/mock/BytecodeV1LibCallsMock.sol +1 -1
  289. package/contracts/mock/BytecodeV1TextCR_DMock.sol +1 -1
  290. package/contracts/mock/DeadReceiverBidderMock.sol +15 -0
  291. package/contracts/mock/DummySharedMinter.sol +2 -2
  292. package/contracts/mock/ERC20Mock.sol +16 -0
  293. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +9 -9
  294. package/contracts/mock/MockAdminACLV0.sol +1 -1
  295. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +1 -1
  296. package/contracts/mock/OriginRegisterMock.sol +1 -1
  297. package/contracts/mock/ReentrancyHolderMock.sol +1 -1
  298. package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
  299. package/contracts/mock/ReentrancyMock.sol +1 -1
  300. package/contracts/mock/ReentrancySEAMock.sol +1 -1
  301. package/contracts/mock/SSTORE2Mock.sol +1 -1
  302. package/contracts/randomizer/deprecated/BasicRandomizer.sol +1 -1
  303. package/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol +2 -2
  304. package/contracts/randomizer/deprecated/RandomizerV2.sol +2 -2
  305. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  306. package/contracts/randomizer/shared/SharedRandomizerV0.sol +91 -76
  307. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
  308. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
  309. package/package.json +46 -31
  310. package/LICENSE +0 -165
  311. package/contracts/interfaces/0.8.x/IRandomizer_V3CoreBase.sol +0 -10
  312. /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
  313. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
  314. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  315. /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
  316. /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
  317. /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
  318. /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
  319. /package/contracts/interfaces/{0.8.x → v0.8.x}/IBytecodeStorageReader.sol +0 -0
  320. /package/contracts/interfaces/{0.8.x → v0.8.x}/ICoreRegistryV1.sol +0 -0
  321. /package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +0 -0
  322. /package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +0 -0
  323. /package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +0 -0
  324. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
  325. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
  326. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
  327. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
  328. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
  329. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
  330. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
  331. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
  332. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
  333. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
  334. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
  335. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
  336. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
  337. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +0 -0
  338. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
  339. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
  340. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
  341. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractExposesHashSeed.sol +0 -0
  342. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
  343. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
  344. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +0 -0
  345. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -0
  346. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
  347. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  348. /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
  349. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
  350. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
  351. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
  352. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
  353. /package/contracts/interfaces/{0.8.x → v0.8.x}/IPseudorandomAtomic.sol +0 -0
  354. /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
  355. /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +0 -0
  356. /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +0 -0
  357. /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
  358. /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
  359. /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
  360. /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
  361. /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
  362. /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV0.sol +0 -0
  363. /package/contracts/libs/{0.8.x → v0.8.x}/BytecodeStorageV1.sol +0 -0
  364. /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
  365. /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
  366. /package/contracts/libs/{0.8.x → v0.8.x}/SSTORE2.sol +0 -0
@@ -0,0 +1,320 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "@openzeppelin-4.7/contracts/utils/math/SafeCast.sol";
7
+
8
+ /**
9
+ * @title Art Blocks SEA Minter Library
10
+ * @notice This library is designed for the Art Blocks platform. It includes
11
+ * Structs and functions that help with serial English auction minters.
12
+ * @author Art Blocks Inc.
13
+ */
14
+
15
+ library SEALib {
16
+ using SafeCast for uint256;
17
+
18
+ uint256 constant ONE_MILLION = 1_000_000;
19
+
20
+ // project-specific parameters
21
+ struct SEAProjectConfig {
22
+ uint64 timestampStart;
23
+ // duration of each new auction, before any extensions due to late bids
24
+ // @dev for configured auctions, this will be gt 0, so it may be used
25
+ // to determine if an auction is configured
26
+ uint32 auctionDurationSeconds;
27
+ // minimum bid increment percentage. each subsequent bid must be at
28
+ // least this percentage greater than the previous bid. the value is
29
+ // expressed as a whole percentage, e.g. 5% is 5, 10% is 10, etc.
30
+ // @dev this is a project-level constraint, defined by the artist.
31
+ // recommended values are between 5 and 10 percent.
32
+ // max uint8 = 255, so max value is 255% (which is more than expected
33
+ // to be used)
34
+ uint8 minBidIncrementPercentage;
35
+ // next token number to be auctioned, owned by minter
36
+ // @dev store token number to enable storage packing, as token ID can
37
+ // be derived from this value in combination with project ID
38
+ // max uint24 ~= 1.6e7, > max possible project invocations of 1e6
39
+ uint24 nextTokenNumber;
40
+ // bool to indicate if next token number has been populated, or is
41
+ // still default value of 0
42
+ // @dev required to handle edge case where next token number is 0
43
+ bool nextTokenNumberIsPopulated;
44
+ // reserve price, i.e. minimum starting bid price, in wei
45
+ uint256 basePrice;
46
+ // active auction for project
47
+ Auction activeAuction;
48
+ }
49
+
50
+ /// Struct that defines a single token English auction
51
+ struct Auction {
52
+ // token number of NFT being auctioned
53
+ uint256 tokenId;
54
+ // The current highest bid amount (in wei)
55
+ uint256 currentBid;
56
+ // The address of the current highest bidder
57
+ // @dev if this is not the zero address, then the auction is
58
+ // considered initialized
59
+ address payable currentBidder;
60
+ // The time that the auction is scheduled to end
61
+ // max uint64 ~= 1.8e19 sec ~= 570 billion years
62
+ uint64 endTime;
63
+ // The minimum percentage increase required for the next bid
64
+ // value is copied from SEAProjectConfig, where it is also a uint8
65
+ uint8 minBidIncrementPercentage;
66
+ // Whether or not the auction has been settled
67
+ bool settled;
68
+ }
69
+
70
+ /**
71
+ * @notice Updates the SEAProjectConfig to clear the current settings for
72
+ * future auctions on the project. Values are reset to their default
73
+ * initial values.
74
+ * Current auction details are not cleared or affected.
75
+ * @param _SEAProjectConfig SEAProjectConfig to update
76
+ */
77
+ function resetFutureAuctionDetails(
78
+ SEAProjectConfig storage _SEAProjectConfig
79
+ ) internal {
80
+ // reset future auction details
81
+ _SEAProjectConfig.auctionDurationSeconds = 0;
82
+ _SEAProjectConfig.minBidIncrementPercentage = 0;
83
+ _SEAProjectConfig.basePrice = 0;
84
+ _SEAProjectConfig.timestampStart = 0;
85
+ }
86
+
87
+ /**
88
+ * Overwrite the active auction for a project with a new auction.
89
+ * @dev This function is used to initialize a new auction. Care must be
90
+ * taken to ensure that the existing auction is fully complete and settled.
91
+ * @param _SEAProjectConfig SEAProjectConfig to update
92
+ * @param _targetTokenId token ID to create the auction for
93
+ * @param _bidAmount initial bid amount
94
+ * @param _bidder initial bidder's payable address
95
+ * @return endTime end time of the newly created auction
96
+ */
97
+ function overwriteProjectActiveAuction(
98
+ SEAProjectConfig storage _SEAProjectConfig,
99
+ uint256 _targetTokenId,
100
+ uint256 _bidAmount,
101
+ address payable _bidder
102
+ ) internal returns (uint64 endTime) {
103
+ // calculate auction end time
104
+ endTime = (block.timestamp + _SEAProjectConfig.auctionDurationSeconds)
105
+ .toUint64();
106
+ // set active auction on SEAProjectConfig
107
+ _SEAProjectConfig.activeAuction = Auction({
108
+ tokenId: _targetTokenId,
109
+ currentBid: _bidAmount,
110
+ currentBidder: _bidder,
111
+ endTime: endTime,
112
+ minBidIncrementPercentage: _SEAProjectConfig
113
+ .minBidIncrementPercentage,
114
+ settled: false
115
+ });
116
+ return endTime;
117
+ }
118
+
119
+ /**
120
+ * @notice Updates the bid state of an Auction.
121
+ * Note that the auction's end time is extended if the bid is placed within
122
+ * the last `_timeBufferSeconds` of the auction.
123
+ * NOTE: This function does not check if the bid is valid. It is assumed
124
+ * that the bid has already been checked for validity by the caller.
125
+ * @param _auction Auction to update
126
+ * @param _timeBufferSeconds Time buffer to extend the auction to if the
127
+ * bid is placed within the last `_timeBufferSeconds` of the auction.
128
+ * @param _bidAmount bid amount
129
+ * @param _bidder bidder's payable address
130
+ */
131
+ function auctionUpdateBid(
132
+ Auction storage _auction,
133
+ uint256 _timeBufferSeconds,
134
+ uint256 _bidAmount,
135
+ address payable _bidder
136
+ ) internal {
137
+ // update auction state
138
+ _auction.currentBid = _bidAmount;
139
+ _auction.currentBidder = _bidder;
140
+ uint256 minEndTime = block.timestamp + _timeBufferSeconds;
141
+ if (_auction.endTime < minEndTime) {
142
+ _auction.endTime = minEndTime.toUint64();
143
+ }
144
+ }
145
+
146
+ /**
147
+ * @notice Determines if a project is configured or not on this minter.
148
+ * Uses project config's `auctionDurationSeconds` to determine if project
149
+ * is configured, because `auctionDurationSeconds` is required to be
150
+ * non-zero when configured.
151
+ * @param _SEAProjectConfig The project config to check.
152
+ */
153
+ function projectIsConfigured(
154
+ SEAProjectConfig storage _SEAProjectConfig
155
+ ) internal view returns (bool) {
156
+ return _SEAProjectConfig.auctionDurationSeconds != 0;
157
+ }
158
+
159
+ /**
160
+ * @notice Determines if an auction is initialized.
161
+ * Uses auction's `currentBidder` address to determine if auction is
162
+ * initialized, because `currentBidder` is always non-zero after an auction
163
+ * has been initialized.
164
+ * @param _auction The auction to check.
165
+ */
166
+ function auctionIsInitialized(
167
+ Auction storage _auction
168
+ ) internal view returns (bool isInitialized) {
169
+ // auction is initialized if currentBidder is non-zero
170
+ return _auction.currentBidder != address(0);
171
+ }
172
+
173
+ /**
174
+ * Returns bool representing if an auction is accepting bids above base
175
+ * price. It is accepting bids if it is initialized and has not reached its
176
+ * end time.
177
+ * @param _auction The auction to check.
178
+ */
179
+ function auctionIsAcceptingIncreasingBids(
180
+ Auction storage _auction
181
+ ) internal view returns (bool isAcceptingBids) {
182
+ // auction is accepting bids if it is initialized and has not reached
183
+ // its end time
184
+ isAcceptingBids = (auctionIsInitialized(_auction) &&
185
+ block.timestamp < _auction.endTime);
186
+ return isAcceptingBids;
187
+ }
188
+
189
+ /**
190
+ * @notice SEAProjectConfig => active auction details.
191
+ * @dev reverts if no auction exists for the project.
192
+ * @param _SEAProjectConfig SEAProjectConfig to query
193
+ */
194
+ function projectActiveAuctionDetails(
195
+ SEAProjectConfig storage _SEAProjectConfig
196
+ ) internal view returns (Auction memory auction) {
197
+ Auction storage _auction = _SEAProjectConfig.activeAuction;
198
+ // do not return uninitialized auctions (i.e. auctions that do not
199
+ // exist, where currentBidder is still the default value)
200
+ require(auctionIsInitialized(_auction), "No auction exists on project");
201
+ // load entire auction into memory
202
+ auction = _SEAProjectConfig.activeAuction;
203
+ return auction;
204
+ }
205
+
206
+ /**
207
+ * @notice Convenience function that returns either the current token ID
208
+ * being auctioned, or the next expected token ID to be auction if no
209
+ * auction is currently initialized or if the current auction has concluded
210
+ * (block.timestamp > auction.endTime).
211
+ * This is intended to be useful for frontends or scripts that intend to
212
+ * call `createBid` or `settleAuctionAndCreateBid`, which requires a
213
+ * target bid token ID to be passed in as an argument.
214
+ * The function reverts if a project does not have an active auction and
215
+ * the next expected token ID has not been populated.
216
+ * @param _SEAProjectConfig SEAProjectConfig to query
217
+ * @param _projectId The project ID being queried
218
+ * @return The current token ID being auctioned, or the next token ID to be
219
+ * auctioned if a new auction is ready to be created.
220
+ */
221
+ function getTokenToBid(
222
+ SEAProjectConfig storage _SEAProjectConfig,
223
+ uint256 _projectId
224
+ ) internal view returns (uint256) {
225
+ Auction storage _auction = _SEAProjectConfig.activeAuction;
226
+ // if project has an active token auction that is not settled, return
227
+ // that token ID
228
+ if (
229
+ auctionIsInitialized(_auction) &&
230
+ (_auction.endTime > block.timestamp)
231
+ ) {
232
+ return _auction.tokenId;
233
+ }
234
+ // otherwise, return the next expected token ID to be auctioned.
235
+ return getNextTokenId(_SEAProjectConfig, _projectId);
236
+ }
237
+
238
+ /**
239
+ * @notice View function that returns the next token ID to be auctioned
240
+ * by this minter for project `_projectId`.
241
+ * Reverts if the next token ID has not been populated for the project.
242
+ * @param _SEAProjectConfig SEAProjectConfig to query
243
+ * @param _projectId The project ID being queried
244
+ */
245
+ function getNextTokenId(
246
+ SEAProjectConfig storage _SEAProjectConfig,
247
+ uint256 _projectId
248
+ ) internal view returns (uint256 nextTokenId) {
249
+ if (!_SEAProjectConfig.nextTokenNumberIsPopulated) {
250
+ revert("Next token not populated");
251
+ }
252
+ // @dev overflow automatically checked in Solidity ^0.8.0
253
+ nextTokenId =
254
+ (_projectId * ONE_MILLION) +
255
+ _SEAProjectConfig.nextTokenNumber;
256
+ return nextTokenId;
257
+ }
258
+
259
+ /**
260
+ * @notice Gets price info to become the leading bidder on a token auction.
261
+ * If artist has not called `configureFutureAuctions` and there is no
262
+ * active token auction accepting bids, `isConfigured` will be false, and a
263
+ * dummy price of zero is assigned to `tokenPriceInWei`.
264
+ * If there is an active auction accepting bids, `isConfigured` will be
265
+ * true, and `tokenPriceInWei` will be the sum of the current bid value and
266
+ * the minimum bid increment due to the minter's
267
+ * `minterMinBidIncrementPercentage`.
268
+ * If there is an auction that has ended (no longer accepting bids), but
269
+ * the project is configured, `isConfigured` will be true, and
270
+ * `tokenPriceInWei` will be the minimum initial bid price for the next
271
+ * token auction.
272
+ * @param _SEAProjectConfig SEAProjectConfig to be evaluated.
273
+ * @return isConfigured true only if project auctions are configured.
274
+ * @return tokenPriceInWei price in wei to become the leading bidder on a
275
+ * token auction.
276
+ */
277
+ function getPriceInfoFromSEAProjectConfig(
278
+ SEAProjectConfig storage _SEAProjectConfig
279
+ ) internal view returns (bool isConfigured, uint256 tokenPriceInWei) {
280
+ Auction storage _auction = _SEAProjectConfig.activeAuction;
281
+ // base price of zero not allowed when configuring auctions, so use it
282
+ // as indicator of whether auctions are configured for the project
283
+ bool projectIsConfigured_ = projectIsConfigured(_SEAProjectConfig);
284
+ bool auctionIsAcceptingIncreasingBids_ = auctionIsAcceptingIncreasingBids(
285
+ _auction
286
+ );
287
+ isConfigured =
288
+ projectIsConfigured_ ||
289
+ auctionIsAcceptingIncreasingBids_;
290
+ // only return non-zero price if auction is configured
291
+ if (isConfigured) {
292
+ if (auctionIsAcceptingIncreasingBids_) {
293
+ // return minimum next bid, given current bid
294
+ tokenPriceInWei = getMinimumNextBid(_auction);
295
+ } else {
296
+ // return base (starting) price if if current auction is not
297
+ // accepting bids (i.e. the minimum initial bid price for the
298
+ // next token auction)
299
+ tokenPriceInWei = _SEAProjectConfig.basePrice;
300
+ }
301
+ }
302
+ // else leave tokenPriceInWei as default value of zero
303
+ // @dev values of `isConfigured` and `tokenPriceInWei` are returned
304
+ }
305
+
306
+ /**
307
+ * Returns the minimum next bid amount in a configured auction, given the
308
+ * current bid amount and the project's configured minimum bid increment
309
+ * percentage.
310
+ * @param _auction Auction to query
311
+ */
312
+ function getMinimumNextBid(
313
+ Auction storage _auction
314
+ ) internal view returns (uint256 minimumNextBid) {
315
+ // @dev overflow automatically checked in Solidity ^0.8.0
316
+ return
317
+ (_auction.currentBid * (100 + _auction.minBidIncrementPercentage)) /
318
+ 100;
319
+ }
320
+ }
@@ -0,0 +1,44 @@
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 Art Blocks Set Price Minter Library
8
+ * @notice This library is designed for the Art Blocks platform. It provides a
9
+ * struct and functions that falicitate the configuring of projects that use a
10
+ * fixed-price minting model.
11
+ * @author Art Blocks Inc.
12
+ */
13
+
14
+ library SetPriceLib {
15
+ // project-level variables
16
+ /**
17
+ * Struct used to store a project's currently configured price in wei, and
18
+ * whether or not the price has been configured.
19
+ */
20
+ struct SetPriceProjectConfig {
21
+ uint248 pricePerTokenInWei; // 0 if not configured
22
+ bool priceIsConfigured;
23
+ }
24
+
25
+ /**
26
+ * @notice Updates the minter's price per token in wei to be
27
+ * `_pricePerTokenInWei`, in Wei, for the referenced SetPriceProjectConfig
28
+ * struct in storage.
29
+ * @dev Note that it is intentionally supported here that the configured
30
+ * price may be explicitly set to `0`.
31
+ * @param _pricePerTokenInWei price per token in wei.
32
+ * @param _setPriceProjectConfig struct to update.
33
+ */
34
+ function updatePricePerTokenInWei(
35
+ uint256 _pricePerTokenInWei,
36
+ SetPriceProjectConfig storage _setPriceProjectConfig
37
+ ) internal {
38
+ // update storage with new values
39
+ _setPriceProjectConfig.pricePerTokenInWei = uint248(
40
+ _pricePerTokenInWei
41
+ );
42
+ _setPriceProjectConfig.priceIsConfigured = true;
43
+ }
44
+ }