@artblocks/contracts 1.0.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +75 -7
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +336 -131
  5. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
  6. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
  7. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  10. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  16. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  20. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  25. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  26. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
  27. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  28. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  37. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  38. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
  47. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  48. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
  50. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
  51. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  53. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
  63. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
  65. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
  66. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
  68. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
  70. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
  71. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
  74. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
  75. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
  76. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
  77. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  82. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  83. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  84. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  85. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  88. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  90. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  92. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  93. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  94. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  96. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  97. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  98. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  99. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
  101. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
  102. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
  103. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
  104. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
  105. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
  106. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
  107. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  108. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  109. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
  110. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
  111. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
  112. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
  113. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
  114. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  115. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
  116. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
  117. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
  118. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
  119. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
  120. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
  121. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  122. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
  123. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
  124. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
  125. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
  126. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
  127. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
  128. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
  129. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  130. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  131. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  132. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  133. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  134. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  135. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
  136. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  137. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  138. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  139. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  140. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  141. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  142. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  143. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  144. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
  145. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  146. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
  147. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  148. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
  149. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  150. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
  151. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  152. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  153. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  154. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  155. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  156. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
  157. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  158. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  159. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  160. package/contracts/AdminACLV0.sol +6 -2
  161. package/contracts/AdminACLV1.sol +2 -2
  162. package/contracts/DependencyRegistryV0.sol +737 -390
  163. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  164. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  165. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  166. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  167. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  168. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  169. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
  170. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  171. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  172. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  173. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  174. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  175. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  176. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  177. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  178. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  179. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  180. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  181. package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
  182. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
  183. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
  184. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
  185. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
  186. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  187. package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
  188. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  189. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
  190. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
  191. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
  192. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  193. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  194. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  195. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  196. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  197. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  198. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  199. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
  200. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
  201. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  202. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  203. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  204. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  205. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  206. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
  207. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  208. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
  209. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
  210. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
  211. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
  212. package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
  213. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
  214. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
  215. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  216. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
  217. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
  218. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
  219. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
  220. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
  221. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  222. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  223. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  224. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  225. package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
  226. package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
  227. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  228. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  229. package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
  230. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
  231. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  232. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  233. package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
  234. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
  235. package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
  236. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
  237. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
  238. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
  239. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
  240. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
  241. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  242. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
  243. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
  244. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
  245. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
  246. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
  247. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
  248. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
  249. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
  250. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
  251. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
  252. package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
  253. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  254. package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
  255. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
  256. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
  257. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
  258. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
  259. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
  260. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
  261. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  262. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  263. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  264. package/contracts/mock/ForceSendMock.sol +22 -0
  265. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
  266. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  267. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  268. package/contracts/mock/MockAdminACLV0.sol +21 -0
  269. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  270. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  271. package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
  272. package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
  273. package/contracts/mock/ReentrancyMockShared.sol +48 -0
  274. package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
  275. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  276. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  277. package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
  278. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  279. package/contracts/split/SplitAtomicV0.sol +265 -0
  280. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  281. package/package.json +79 -45
  282. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  283. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  284. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
  285. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  286. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  287. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  288. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  289. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc. to support the 0xSplits V2 integration
3
+ // Sourced from:
4
+ // - https://github.com/0xSplits/splits-contracts-monorepo/blob/main/packages/splits-v2/src/libraries/SplitV2.sol
5
+ // - https://github.com/0xSplits/splits-contracts-monorepo/blob/main/packages/splits-v2/src/splitters/SplitFactoryV2.sol
6
+
7
+ pragma solidity ^0.8.0;
8
+
9
+ interface ISplitFactoryV2 {
10
+ /* -------------------------------------------------------------------------- */
11
+ /* STRUCTS */
12
+ /* -------------------------------------------------------------------------- */
13
+
14
+ /**
15
+ * @notice Split struct
16
+ * @dev This struct is used to store the split information.
17
+ * @dev There are no hard caps on the number of recipients/totalAllocation/allocation unit. Thus the chain and its
18
+ * gas limits will dictate these hard caps. Please double check if the split you are creating can be distributed on
19
+ * the chain.
20
+ * @param recipients The recipients of the split.
21
+ * @param allocations The allocations of the split.
22
+ * @param totalAllocation The total allocation of the split.
23
+ * @param distributionIncentive The incentive for distribution. Limits max incentive to 6.5%.
24
+ */
25
+ struct Split {
26
+ address[] recipients;
27
+ uint256[] allocations;
28
+ uint256 totalAllocation;
29
+ uint16 distributionIncentive;
30
+ }
31
+
32
+ /* -------------------------------------------------------------------------- */
33
+ /* FUNCTIONS */
34
+ /* -------------------------------------------------------------------------- */
35
+
36
+ /**
37
+ * @notice Create a new split with params and owner.
38
+ * @param _splitParams Params to create split with.
39
+ * @param _owner Owner of created split.
40
+ * @param _creator Creator of created split.
41
+ * @param _salt Salt for create2.
42
+ * @return split Address of the created split.
43
+ */
44
+ function createSplitDeterministic(
45
+ Split calldata _splitParams,
46
+ address _owner,
47
+ address _creator,
48
+ bytes32 _salt
49
+ ) external returns (address split);
50
+
51
+ /**
52
+ * @notice Predict the address of a new split and check if it is deployed.
53
+ * @param _splitParams Params to create split with.
54
+ * @param _owner Owner of created split.
55
+ * @param _salt Salt for create2.
56
+ */
57
+ function isDeployed(
58
+ Split calldata _splitParams,
59
+ address _owner,
60
+ bytes32 _salt
61
+ ) external view returns (address split, bool exists);
62
+ }
@@ -14,42 +14,56 @@ library ABHelpers {
14
14
  uint256 constant ONE_MILLION = 1_000_000;
15
15
 
16
16
  /**
17
- * Convert token id to project id.
18
- * @param _tokenId The id of the token.
17
+ * @notice Function to convert token id to project id.
18
+ * @param tokenId The id of the token.
19
19
  */
20
20
  function tokenIdToProjectId(
21
- uint256 _tokenId
21
+ uint256 tokenId
22
22
  ) internal pure returns (uint256) {
23
23
  // int division properly rounds down
24
- // @dev unchecked because will never divide by zero
25
- unchecked {
26
- return _tokenId / ONE_MILLION;
27
- }
24
+ // @dev no way to disable division by zero check in solidity v0.8.24, so not unchecked
25
+ return tokenId / ONE_MILLION;
28
26
  }
29
27
 
30
28
  /**
31
- * Convert token id to token number.
32
- * @param _tokenId The id of the token.
29
+ * @notice Function to convert token id to token number.
30
+ * @param tokenId The id of the token.
33
31
  */
34
32
  function tokenIdToTokenNumber(
35
- uint256 _tokenId
33
+ uint256 tokenId
36
34
  ) internal pure returns (uint256) {
37
35
  // mod returns remainder, which is the token number
38
36
  // @dev no way to disable mod zero check in solidity, so not unchecked
39
- return _tokenId % ONE_MILLION;
37
+ return tokenId % ONE_MILLION;
38
+ }
39
+
40
+ /**
41
+ * @notice Function to convert token id to token invocation.
42
+ * @dev token invocation is the token number plus one, because token #0 is
43
+ * invocation 1.
44
+ * @param tokenId The id of the token.
45
+ */
46
+ function tokenIdToTokenInvocation(
47
+ uint256 tokenId
48
+ ) internal pure returns (uint256) {
49
+ unchecked {
50
+ // mod returns remainder, which is the token number
51
+ // @dev no way to disable mod zero check in solidity, unchecked to optimize gas for addition
52
+ return (tokenId % ONE_MILLION) + 1;
53
+ }
40
54
  }
41
55
 
42
56
  /**
43
- * Convert project id and token number to token id.
44
- * @param _projectId The id of the project.
45
- * @param _tokenNumber The token number.
57
+ * @notice Function to convert project id and token number to token id.
58
+ * @param projectId The id of the project.
59
+ * @param tokenNumber The token number.
46
60
  */
47
61
  function tokenIdFromProjectIdAndTokenNumber(
48
- uint256 _projectId,
49
- uint256 _tokenNumber
62
+ uint256 projectId,
63
+ uint256 tokenNumber
50
64
  ) internal pure returns (uint256) {
51
65
  // @dev intentionally not unchecked to ensure overflow detection, which
52
66
  // would likley only occur in a malicious call
53
- return (_projectId * ONE_MILLION) + _tokenNumber;
67
+ return (projectId * ONE_MILLION) + tokenNumber;
54
68
  }
55
69
  }
@@ -3,8 +3,8 @@
3
3
 
4
4
  pragma solidity ^0.8.0;
5
5
 
6
- import "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
7
- import "../../interfaces/v0.8.x/IMinterFilterV1.sol";
6
+ import {IGenArt721CoreContractV3_Base} from "../../interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol";
7
+ import {IMinterFilterV1} from "../../interfaces/v0.8.x/IMinterFilterV1.sol";
8
8
 
9
9
  /**
10
10
  * @title Art Blocks Authorization Minter Library
@@ -16,111 +16,110 @@ import "../../interfaces/v0.8.x/IMinterFilterV1.sol";
16
16
 
17
17
  library AuthLib {
18
18
  /**
19
- * function to restrict access to only AdminACL allowed calls, where
19
+ * @notice Function to restrict access to only AdminACL allowed calls, where
20
20
  * AdminACL is the admin of an IMinterFilterV1.
21
21
  * Reverts if not allowed.
22
- * @param _minterFilterAddress address of the minter filter to be checked,
22
+ * @param minterFilterAddress address of the minter filter to be checked,
23
23
  * should implement IMinterFilterV1
24
- * @param _sender address of the caller
25
- * @param _contract address of the contract being called
26
- * @param _selector selector of the function being called
24
+ * @param sender address of the caller
25
+ * @param contract_ address of the contract being called
26
+ * @param selector selector of the function being called
27
27
  */
28
28
  function onlyMinterFilterAdminACL(
29
- address _minterFilterAddress,
30
- address _sender,
31
- address _contract,
32
- bytes4 _selector
29
+ address minterFilterAddress,
30
+ address sender,
31
+ address contract_,
32
+ bytes4 selector
33
33
  ) internal {
34
34
  require(
35
35
  _minterFilterAdminACLAllowed({
36
- _minterFilterAddress: _minterFilterAddress,
37
- _sender: _sender,
38
- _contract: _contract,
39
- _selector: _selector
36
+ minterFilterAddress: minterFilterAddress,
37
+ sender: sender,
38
+ contract_: contract_,
39
+ selector: selector
40
40
  }),
41
41
  "Only MinterFilter AdminACL"
42
42
  );
43
43
  }
44
44
 
45
45
  /**
46
- * Function to restrict access to only AdminACL allowed calls, where
47
- * AdminACL is the admin of a core contract at `_coreContract`.
46
+ * @notice Function to restrict access to only AdminACL allowed calls, where
47
+ * AdminACL is the admin of a core contract at `coreContract`.
48
48
  * Reverts if not allowed.
49
- * @param _coreContract address of the core contract to be checked
50
- * @param _sender address of the caller
51
- * @param _contract address of the contract being called
52
- * @param _selector selector of the function being called
49
+ * @param coreContract address of the core contract to be checked
50
+ * @param sender address of the caller
51
+ * @param contract_ address of the contract being called
52
+ * @param selector selector of the function being called
53
53
  */
54
54
  function onlyCoreAdminACL(
55
- address _coreContract,
56
- address _sender,
57
- address _contract,
58
- bytes4 _selector
55
+ address coreContract,
56
+ address sender,
57
+ address contract_,
58
+ bytes4 selector
59
59
  ) internal {
60
60
  require(
61
61
  _coreAdminACLAllowed({
62
- _coreContract: _coreContract,
63
- _sender: _sender,
64
- _contract: _contract,
65
- _selector: _selector
62
+ coreContract: coreContract,
63
+ sender: sender,
64
+ contract_: contract_,
65
+ selector: selector
66
66
  }),
67
67
  "Only Core AdminACL allowed"
68
68
  );
69
69
  }
70
70
 
71
71
  /**
72
- * @notice Throws if `_sender` is any account other than the artist of the
73
- * specified project `_projectId` on core contract `_coreContract`.
74
- * Requirements: `msg.sender` must be the artist associated with
75
- * `_projectId` on `_coreContract`.
76
- * @param _projectId The ID of the project being checked.
77
- * @param _coreContract The address of the GenArt721CoreContractV3_Base
72
+ * @notice Throws if `sender` is any account other than the artist of the
73
+ * specified project `projectId` on core contract `coreContract`.
74
+ * @param projectId The ID of the project being checked.
75
+ * @param coreContract The address of the GenArt721CoreContractV3_Base
78
76
  * contract.
79
- * @param _sender Wallet to check. Typically, the address of the caller.
77
+ * @param sender Wallet to check. Typically, the address of the caller.
78
+ * @dev `sender` must be the artist associated with `projectId` on `coreContract`.
80
79
  */
81
80
  function onlyArtist(
82
- uint256 _projectId,
83
- address _coreContract,
84
- address _sender
81
+ uint256 projectId,
82
+ address coreContract,
83
+ address sender
85
84
  ) internal view {
86
85
  require(
87
86
  _senderIsArtist({
88
- _projectId: _projectId,
89
- _coreContract: _coreContract,
90
- _sender: _sender
87
+ projectId: projectId,
88
+ coreContract: coreContract,
89
+ sender: sender
91
90
  }),
92
91
  "Only Artist"
93
92
  );
94
93
  }
95
94
 
96
95
  /**
97
- * function to restrict access to only the artist of a project, or AdminACL
96
+ * @notice Function to restrict access to only the artist of a project, or AdminACL
98
97
  * allowed calls, where AdminACL is the admin of a core contract at
99
- * `_coreContract`.
100
- * @param _projectId id of the project
101
- * @param _coreContract address of the core contract to be checked
102
- * @param _sender address of the caller
103
- * @param _contract address of the contract being called
104
- * @param _selector selector of the function being called
98
+ * `coreContract`.
99
+ * @param projectId id of the project
100
+ * @param coreContract address of the core contract to be checked
101
+ * @param sender address of the caller
102
+ * @param contract_ address of the contract being called
103
+ * @param selector selector of the function being called
105
104
  */
106
105
  function onlyCoreAdminACLOrArtist(
107
- uint256 _projectId,
108
- address _coreContract,
109
- address _sender,
110
- address _contract,
111
- bytes4 _selector
106
+ uint256 projectId,
107
+ address coreContract,
108
+ address sender,
109
+ address contract_,
110
+ bytes4 selector
112
111
  ) internal {
113
112
  require(
114
113
  _senderIsArtist({
115
- _projectId: _projectId,
116
- _coreContract: _coreContract,
117
- _sender: _sender
114
+ projectId: projectId,
115
+ coreContract: coreContract,
116
+ sender: sender
118
117
  }) ||
119
118
  _coreAdminACLAllowed({
120
- _coreContract: _coreContract,
121
- _sender: _sender,
122
- _contract: _contract,
123
- _selector: _selector
119
+ coreContract: coreContract,
120
+ sender: sender,
121
+ contract_: contract_,
122
+ selector: selector
124
123
  }),
125
124
  "Only Artist or Core Admin ACL"
126
125
  );
@@ -131,67 +130,67 @@ library AuthLib {
131
130
  // ------------------------------------------------------------------------
132
131
 
133
132
  /**
134
- * Private function that returns if minter filter contract's AdminACL
135
- * allows `_sender` to call function with selector `_selector` on contract
136
- * `_contract`.
137
- * @param _minterFilterAddress address of the minter filter to be checked.
133
+ * @notice Private function that returns if minter filter contract's AdminACL
134
+ * allows `sender` to call function with selector `selector` on contract
135
+ * `contract`.
136
+ * @param minterFilterAddress address of the minter filter to be checked.
138
137
  * Should implement IMinterFilterV1.
139
- * @param _sender address of the caller
140
- * @param _contract address of the contract being called
141
- * @param _selector selector of the function being called
138
+ * @param sender address of the caller
139
+ * @param contract_ address of the contract being called
140
+ * @param selector selector of the function being called
142
141
  */
143
142
  function _minterFilterAdminACLAllowed(
144
- address _minterFilterAddress,
145
- address _sender,
146
- address _contract,
147
- bytes4 _selector
143
+ address minterFilterAddress,
144
+ address sender,
145
+ address contract_,
146
+ bytes4 selector
148
147
  ) private returns (bool) {
149
148
  return
150
- IMinterFilterV1(_minterFilterAddress).adminACLAllowed({
151
- _sender: _sender,
152
- _contract: _contract,
153
- _selector: _selector
149
+ IMinterFilterV1(minterFilterAddress).adminACLAllowed({
150
+ sender: sender,
151
+ contract_: contract_,
152
+ selector: selector
154
153
  });
155
154
  }
156
155
 
157
156
  /**
158
- * Private function that returns if core contract's AdminACL allows
159
- * `_sender` to call function with selector `_selector` on contract
160
- * `_contract`.
161
- * @param _coreContract address of the core contract to be checked
162
- * @param _sender address of the caller
163
- * @param _contract address of the contract being called
164
- * @param _selector selector of the function being called
157
+ * @notice Private function that returns if core contract's AdminACL allows
158
+ * `sender` to call function with selector `selector` on contract
159
+ * `contract`.
160
+ * @param coreContract address of the core contract to be checked
161
+ * @param sender address of the caller
162
+ * @param contract_ address of the contract being called
163
+ * @param selector selector of the function being called
165
164
  */
166
165
  function _coreAdminACLAllowed(
167
- address _coreContract,
168
- address _sender,
169
- address _contract,
170
- bytes4 _selector
166
+ address coreContract,
167
+ address sender,
168
+ address contract_,
169
+ bytes4 selector
171
170
  ) private returns (bool) {
172
171
  return
173
- IGenArt721CoreContractV3_Base(_coreContract).adminACLAllowed({
174
- _sender: _sender,
175
- _contract: _contract,
176
- _selector: _selector
172
+ IGenArt721CoreContractV3_Base(coreContract).adminACLAllowed({
173
+ _sender: sender,
174
+ _contract: contract_,
175
+ _selector: selector
177
176
  });
178
177
  }
179
178
 
180
179
  /**
181
- * Private function that returns if `_sender` is the artist of `_projectId`
182
- * on `_coreContract`.
183
- * @param _projectId project ID to check
184
- * @param _coreContract core contract to check
185
- * @param _sender wallet to check
180
+ * @notice Private function that returns if `sender` is the artist of `projectId`
181
+ * on `coreContract`.
182
+ * @param projectId project ID to check
183
+ * @param coreContract core contract to check
184
+ * @param sender wallet to check
186
185
  */
187
186
  function _senderIsArtist(
188
- uint256 _projectId,
189
- address _coreContract,
190
- address _sender
187
+ uint256 projectId,
188
+ address coreContract,
189
+ address sender
191
190
  ) private view returns (bool senderIsArtist) {
192
191
  return
193
- _sender ==
194
- IGenArt721CoreContractV3_Base(_coreContract)
195
- .projectIdToArtistAddress(_projectId);
192
+ sender ==
193
+ IGenArt721CoreContractV3_Base(coreContract)
194
+ .projectIdToArtistAddress(projectId);
196
195
  }
197
196
  }
@@ -0,0 +1,112 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Created By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @dev Library for using uint256 as a mapping to 256 bool values via a bit map.
8
+ * This is useful for storing a large number of bool values in a compact way.
9
+ * @dev This implementation is similar to OpenZeppelin's BitMaps library, but a
10
+ * single uint256 is used directly in memory instead of operating within a
11
+ * a mapping within a storage struct.
12
+ * This design limits the number of indices to 256, but is more gas efficient
13
+ * for use cases that fit within that limit. This is especially true for
14
+ * operations that require many reads/writes, since SLOAD/SSTORE can be managed
15
+ * outside of the library.
16
+ */
17
+ library BitMaps256 {
18
+ /**
19
+ * @notice Checks if the bit at a specific index in the bit map is set.
20
+ * A bit is considered set if it is 1, and unset if it is 0.
21
+ * @param bitMap BitMap to check.
22
+ * @param index The index of the bit to check.
23
+ * @return Indicating if the bit at the specified index is set, false otherwise.
24
+ */
25
+ function get(uint256 bitMap, uint8 index) internal pure returns (bool) {
26
+ uint256 mask = 1 << index;
27
+ return bitMap & mask != 0;
28
+ }
29
+
30
+ /**
31
+ * @notice Sets the bit at a specific index in the bit map to 1.
32
+ * This function creates a new bit map where the bit at the specified index is set,
33
+ * leaving other bits unchanged.
34
+ * @param bitMap The original BitMap.
35
+ * @param index The index of the bit to set.
36
+ * @return newBitMap The new bit map after setting the bit at the specified index.
37
+ */
38
+ function set(
39
+ uint256 bitMap,
40
+ uint8 index
41
+ ) internal pure returns (uint256 newBitMap) {
42
+ uint256 mask = 1 << index;
43
+ return bitMap | mask;
44
+ }
45
+
46
+ /**
47
+ * @notice Unsets the bit at a specific index in the bit map, setting it to 0.
48
+ * This function creates a new bit map where the bit at the specified index is unset,
49
+ * leaving other bits unchanged.
50
+ * @param bitMap The original BitMap.
51
+ * @param index The index of the bit to unset.
52
+ * @return newBitMap The new bit map after unsetting the bit at the specified index.
53
+ */
54
+ function unset(
55
+ uint256 bitMap,
56
+ uint8 index
57
+ ) internal pure returns (uint256 newBitMap) {
58
+ uint256 mask = 1 << index;
59
+ return bitMap & ~mask;
60
+ }
61
+
62
+ /**
63
+ * @notice Finds the index of the first bit that is set in the bit map
64
+ * starting from a given index.
65
+ * Returns (255, false) if no set bits were found.
66
+ * @param bitMap BitMap to search
67
+ * @param startIndex Index to start searching from, inclusive
68
+ * @return minIndex Index of first set bit, or 255 if no bits were found
69
+ * @return foundSetBit True if a set bit was found, false otherwise
70
+ */
71
+ function minBitSet(
72
+ uint256 bitMap,
73
+ uint8 startIndex
74
+ ) internal pure returns (uint256 minIndex, bool foundSetBit) {
75
+ // check if there's any set bit at or above startIndex
76
+ if ((bitMap >> startIndex) == 0) {
77
+ return (255, false);
78
+ }
79
+ minIndex = startIndex;
80
+ // @dev this is a linear search, optimized to start only if there's a set bit at or above startIndex
81
+ // worst case 255 iterations in memory
82
+ while (minIndex < 255 && !get(bitMap, uint8(minIndex))) {
83
+ minIndex++;
84
+ }
85
+ foundSetBit = get(bitMap, uint8(minIndex));
86
+ }
87
+
88
+ /**
89
+ * @notice Finds the index of the highest bit that is set in the bit map
90
+ * starting from a given index and counting down.
91
+ * Returns (0, false) if no set bits were found.
92
+ * @param bitMap BitMap to search
93
+ * @param startIndex Index to start searching from, inclusive
94
+ * @return maxIndex Index of last set bit, or 0 if no bits were found
95
+ * @return foundSetBit True if a set bit was found, false otherwise
96
+ */
97
+ function maxBitSet(
98
+ uint256 bitMap,
99
+ uint8 startIndex
100
+ ) internal pure returns (uint256 maxIndex, bool foundSetBit) {
101
+ if ((bitMap << (255 - startIndex)) == 0) {
102
+ return (0, false);
103
+ }
104
+
105
+ maxIndex = startIndex;
106
+ // @dev this is a linear search, worst case 255 iterations in memory
107
+ while (maxIndex > 0 && !get(bitMap, uint8(maxIndex))) {
108
+ maxIndex--;
109
+ }
110
+ foundSetBit = get(bitMap, uint8(maxIndex));
111
+ }
112
+ }