@artblocks/contracts 1.0.2 → 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 (387) hide show
  1. package/README.md +56 -21
  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 +141 -15
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +42 -5
  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/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol}/GenArt721CoreV2_ENGINE_FLEX.json +3 -3
  34. package/artifacts/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol}/GenArt721CoreV2_PBAB.json +3 -3
  35. package/artifacts/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol}/GenArt721CoreV2_PRTNR.json +3 -3
  36. package/artifacts/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol}/GenArt721MinterBurner_PBAB.json +3 -3
  37. package/artifacts/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol}/GenArt721MinterDAExp_PBAB.json +3 -3
  38. package/artifacts/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol}/GenArt721Minter_PBAB.json +3 -3
  39. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +1960 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2247 -0
  41. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +2247 -0
  42. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +401 -0
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +2281 -0
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol/IAdminACLV0_PROHIBITION.json +359 -0
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +1094 -0
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +242 -0
  47. package/artifacts/contracts/engine-registry/EngineRegistryV0.sol/EngineRegistryV0.json +2 -2
  48. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +41 -4
  49. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol/IBonusContract.json +1 -1
  50. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  51. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  52. package/artifacts/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol/IRandomizer.json +1 -1
  53. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol/IAdminACLV0.json +1 -1
  54. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol/IArtblocksRoyaltyOverride.json +1 -1
  55. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol/IBonusContract.json +1 -1
  56. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +111 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +172 -0
  58. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol/IDelegationRegistry.json +1 -1
  59. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol/IDependencyRegistryCompatibleV0.json +1 -1
  60. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +3 -3
  61. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol/IEngineRegistryV0.json +1 -1
  62. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +1 -1
  63. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +1 -1
  64. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol/IFilteredMinterDAExpSettlement_Mixin.json +1 -1
  65. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol/IFilteredMinterDAExpV0.json +1 -1
  66. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol/IFilteredMinterDAExpV1.json +1 -1
  67. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol/IFilteredMinterDALinV0.json +1 -1
  68. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol/IFilteredMinterDALinV1.json +1 -1
  69. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol/IFilteredMinterHolderV0.json +1 -1
  70. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol/IFilteredMinterHolderV1.json +1 -1
  71. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol/IFilteredMinterHolderV2.json +1 -1
  72. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol/IFilteredMinterMerkleV0.json +1 -1
  73. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol/IFilteredMinterMerkleV1.json +1 -1
  74. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol/IFilteredMinterMerkleV2.json +1 -1
  75. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +56 -54
  76. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol/IFilteredMinterV0.json +1 -1
  77. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol/IFilteredMinterV1.json +1 -1
  78. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol/IFilteredMinterV2.json +1 -1
  79. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol/IGenArt721CoreContractExposesHashSeed.json +30 -0
  80. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol/IGenArt721CoreContractV1.json +1 -1
  81. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +14 -1
  82. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol/IGenArt721CoreContractV3WithSharedRandomizer.json +24 -0
  83. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +14 -1
  84. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +8 -14
  85. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +8 -14
  86. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol/IGenArt721CoreV2_PBAB.json +1 -1
  87. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol/IManifold.json +1 -1
  88. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol/IMinterBaseV0.json +1 -1
  89. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol/IMinterFilterV0.json +1 -1
  90. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +514 -0
  91. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol/IMintingAPICoreV0.json +1 -1
  92. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol/IMintingAPIMinterV0.json +1 -1
  93. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +30 -0
  94. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol/IRandomizer.json +1 -1
  95. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +1 -1
  96. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol/IRandomizerV2.json +1 -1
  97. package/artifacts/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol/IRandomizer_V3CoreBase.json +24 -0
  98. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +207 -0
  99. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +93 -0
  100. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +93 -0
  101. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +69 -0
  102. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +203 -0
  103. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +123 -0
  104. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +261 -0
  105. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +64 -0
  106. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +533 -0
  107. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +223 -0
  108. package/artifacts/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol/IWETH.json +1 -1
  109. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Address.json +2 -2
  110. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Counters.json +2 -2
  111. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/CustomERC721Metadata.json +2 -2
  112. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721.json +2 -2
  113. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/ERC721Enumerable.json +2 -2
  114. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/GenArt721CoreV1.json +2 -2
  115. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/SafeMath.json +2 -2
  116. package/artifacts/contracts/legacy/GenArt721CoreV1.sol/Strings.json +2 -2
  117. package/artifacts/contracts/legacy/GenArt721LegacyMinter.sol/GenArt721LegacyMinter.json +2 -2
  118. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  119. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  120. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  121. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  122. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  123. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol/CustomERC721Metadata.json +3 -3
  124. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol/IERC20.json +1 -1
  125. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol/SafeMath.json +3 -3
  126. package/artifacts/contracts/libs/{0.5.x → v0.5.x}/Strings.sol/Strings.json +3 -3
  127. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +10 -0
  128. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +10 -0
  129. package/artifacts/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol}/BytecodeStorage.json +3 -3
  130. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +163 -0
  131. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +10 -0
  132. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol/Bytes32Strings.json +3 -3
  133. package/artifacts/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +3 -3
  134. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +10 -0
  135. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +10 -0
  136. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +10 -0
  137. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +10 -0
  138. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +10 -0
  139. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +10 -0
  140. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +10 -0
  141. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +10 -0
  142. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +10 -0
  143. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +10 -0
  144. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +10 -0
  145. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +2 -2
  146. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  147. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +748 -0
  148. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +1228 -0
  149. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  150. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +1146 -0
  151. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  152. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +909 -0
  153. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +1228 -0
  154. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  155. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +909 -0
  156. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  157. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  158. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +10 -160
  159. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  160. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +59 -80
  161. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +1325 -0
  162. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  163. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +848 -0
  164. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +1091 -0
  165. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +1075 -0
  166. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +1243 -0
  167. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +1167 -0
  168. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  169. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +772 -0
  170. package/artifacts/contracts/mock/{BytecodeTextCR_DMock.sol/BytecodeTextCR_DMock.json → BytecodeV0TextCR_DMock.sol/BytecodeV0TextCR_DMock.json} +4 -4
  171. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +135 -0
  172. package/artifacts/contracts/mock/BytecodeV1TextCR_DMock.sol/BytecodeV1TextCR_DMock.json +301 -0
  173. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +25 -2
  174. package/artifacts/contracts/mock/DeadReceiverMock.sol/DeadReceiverMock.json +2 -2
  175. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +114 -0
  176. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +28 -2
  177. package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +2 -2
  178. package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +2 -2
  179. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +22 -4
  180. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +2 -2
  181. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +440 -0
  182. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +39 -0
  183. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  184. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  185. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  186. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  187. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  188. package/artifacts/contracts/mock/SSTORE2Mock.sol/SSTORE2Mock.json +118 -0
  189. package/artifacts/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
  190. package/artifacts/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol}/RandomizerBase.json +1 -1
  191. package/artifacts/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol}/BasicPolyptychRandomizerV0.json +3 -3
  192. package/artifacts/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol}/BasicRandomizerV2.json +3 -3
  193. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +30 -0
  194. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +247 -0
  195. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  196. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +2 -2
  197. package/contracts/AdminACLV0.sol +2 -2
  198. package/contracts/AdminACLV1.sol +2 -2
  199. package/contracts/DependencyRegistryV0.sol +219 -123
  200. package/contracts/GenArt721CoreV3.sol +60 -42
  201. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol +3 -3
  202. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol +3 -3
  203. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol +4 -4
  204. package/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol +4 -4
  205. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  206. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +4 -4
  207. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol +3 -3
  208. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol +3 -3
  209. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol +4 -4
  210. package/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol +4 -4
  211. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol +3 -3
  212. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol +4 -4
  213. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol +5 -5
  214. package/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol +5 -5
  215. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol +3 -3
  216. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol +4 -4
  217. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol +5 -5
  218. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol +5 -5
  219. package/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol +5 -5
  220. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol +3 -3
  221. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol +3 -3
  222. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol +4 -4
  223. package/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol +4 -4
  224. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +3 -3
  225. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +3 -3
  226. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol +4 -4
  227. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol +4 -4
  228. package/contracts/engine/{GenArt721CoreV2_ENGINE_FLEX.sol → V2/GenArt721CoreV2_ENGINE_FLEX.sol} +2 -2
  229. package/contracts/engine/{GenArt721CoreV2_PBAB.sol → V2/GenArt721CoreV2_PBAB.sol} +2 -2
  230. package/contracts/engine/{GenArt721CoreV2_PRTNR.sol → V2/GenArt721CoreV2_PRTNR.sol} +3 -3
  231. package/contracts/engine/{GenArt721MinterBurner_PBAB.sol → V2/GenArt721MinterBurner_PBAB.sol} +2 -2
  232. package/contracts/engine/{GenArt721MinterDAExp_PBAB.sol → V2/GenArt721MinterDAExp_PBAB.sol} +2 -2
  233. package/contracts/engine/{GenArt721Minter_PBAB.sol → V2/GenArt721Minter_PBAB.sol} +2 -2
  234. package/contracts/{GenArt721CoreV3_Engine.sol → engine/V3/GenArt721CoreV3_Engine.sol} +48 -24
  235. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +2298 -0
  236. package/contracts/{GenArt721CoreV3_Engine_Flex.sol → engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol} +50 -31
  237. package/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol +281 -0
  238. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +2359 -0
  239. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IAdminACLV0_PROHIBITION.sol +123 -0
  240. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +29 -0
  241. package/contracts/engine-registry/CoreRegistryV1.sol +254 -0
  242. package/contracts/engine-registry/EngineRegistryV0.sol +2 -2
  243. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +58 -40
  244. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +62 -0
  245. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +27 -0
  246. package/contracts/interfaces/{0.8.x → v0.8.x}/IDelegationRegistry.sol +1 -1
  247. package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryCompatibleV0.sol +1 -1
  248. package/contracts/interfaces/{0.8.x → v0.8.x}/IDependencyRegistryV0.sol +3 -3
  249. package/contracts/interfaces/{0.8.x → v0.8.x}/IEngineRegistryV0.sol +1 -1
  250. package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterSEAV0.sol +34 -15
  251. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractExposesHashSeed.sol +11 -0
  252. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3WithSharedRandomizer.sol +23 -0
  253. package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Base.sol +3 -0
  254. package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine.sol +0 -5
  255. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +184 -0
  256. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +16 -0
  257. package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerPolyptychV0.sol +1 -1
  258. package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizerV2.sol +2 -5
  259. package/contracts/interfaces/v0.8.x/IRandomizer_V3CoreBase.sol +23 -0
  260. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +37 -0
  261. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +25 -0
  262. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +26 -0
  263. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +19 -0
  264. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +69 -0
  265. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +44 -0
  266. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +78 -0
  267. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +28 -0
  268. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +191 -0
  269. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +123 -0
  270. package/contracts/legacy/GenArt721CoreV1.sol +2 -2
  271. package/contracts/legacy/GenArt721LegacyMinter.sol +5 -5
  272. package/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol +2 -2
  273. package/contracts/libs/integration-refs/weth9/weth9.sol +2 -0
  274. package/contracts/libs/v0.8.x/ABHelpers.sol +55 -0
  275. package/contracts/libs/v0.8.x/AuthLib.sol +197 -0
  276. package/contracts/libs/v0.8.x/BytecodeStorageV1.sol +399 -0
  277. package/contracts/libs/v0.8.x/SSTORE2.sol +109 -0
  278. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +125 -0
  279. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +109 -0
  280. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +348 -0
  281. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +175 -0
  282. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +160 -0
  283. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +320 -0
  284. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +44 -0
  285. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +390 -0
  286. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +583 -0
  287. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +153 -0
  288. package/contracts/minter-suite/MinterFilter/MinterFilterV0.sol +3 -3
  289. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +6 -6
  290. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +830 -0
  291. package/contracts/minter-suite/Minters/MinterBase_v0_1_1.sol +4 -4
  292. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +966 -0
  293. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +4 -4
  294. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +1126 -0
  295. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +4 -4
  296. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +606 -0
  297. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +952 -0
  298. package/contracts/minter-suite/Minters/MinterDALinV4.sol +4 -4
  299. package/contracts/minter-suite/Minters/MinterDALinV5.sol +591 -0
  300. package/contracts/minter-suite/Minters/MinterHolderV4.sol +5 -5
  301. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +5 -5
  302. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +18 -17
  303. package/contracts/minter-suite/Minters/MinterSEAV0.sol +235 -186
  304. package/contracts/minter-suite/Minters/MinterSEAV1.sol +1190 -0
  305. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +6 -6
  306. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +570 -0
  307. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +821 -0
  308. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +802 -0
  309. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +1096 -0
  310. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +992 -0
  311. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +4 -4
  312. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +461 -0
  313. package/contracts/mock/{BytecodeTextCR_DMock.sol → BytecodeV0TextCR_DMock.sol} +5 -5
  314. package/contracts/mock/BytecodeV1LibCallsMock.sol +114 -0
  315. package/contracts/mock/BytecodeV1TextCR_DMock.sol +233 -0
  316. package/contracts/mock/DeadReceiverBidderMock.sol +16 -1
  317. package/contracts/mock/DeadReceiverMock.sol +1 -1
  318. package/contracts/mock/DummySharedMinter.sol +75 -0
  319. package/contracts/mock/ERC20Mock.sol +16 -0
  320. package/contracts/mock/GasLimitReceiverBidderMock.sol +1 -1
  321. package/contracts/mock/GasLimitReceiverMock.sol +1 -1
  322. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +22 -35
  323. package/contracts/mock/MockAdminACLV0.sol +2 -2
  324. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +207 -0
  325. package/contracts/mock/OriginRegisterMock.sol +27 -0
  326. package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -2
  327. package/contracts/mock/ReentrancyHolderMock.sol +1 -1
  328. package/contracts/mock/ReentrancyMerkleMock.sol +1 -1
  329. package/contracts/mock/ReentrancyMock.sol +1 -1
  330. package/contracts/mock/ReentrancySEAMock.sol +1 -1
  331. package/contracts/mock/SSTORE2Mock.sol +93 -0
  332. package/contracts/randomizer/{BasicRandomizer.sol → deprecated/BasicRandomizer.sol} +1 -1
  333. package/contracts/randomizer/{BasicRandomizerBase_v0_0_0.sol → deprecated/BasicRandomizerBase_v0_0_0.sol} +1 -1
  334. package/contracts/randomizer/{PolyptychRandomizerV0.sol → deprecated/PolyptychRandomizerV0.sol} +3 -3
  335. package/contracts/randomizer/{RandomizerV2.sol → deprecated/RandomizerV2.sol} +3 -3
  336. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +30 -0
  337. package/contracts/randomizer/shared/SharedRandomizerV0.sol +260 -0
  338. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +2 -2
  339. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +2 -2
  340. package/package.json +51 -43
  341. package/.env.example +0 -17
  342. package/LICENSE +0 -165
  343. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +0 -1942
  344. package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +0 -2229
  345. package/artifacts/contracts/engine-registry/future/EngineRegistryV1.sol/EngineRegistryV1.json +0 -109
  346. package/contracts/engine-registry/future/EngineRegistryV1.sol +0 -86
  347. /package/contracts/interfaces/{0.5.x → v0.5.x}/IBonusContract.sol +0 -0
  348. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreContractV1.sol +0 -0
  349. /package/contracts/interfaces/{0.5.x → v0.5.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  350. /package/contracts/interfaces/{0.5.x → v0.5.x}/IRandomizer.sol +0 -0
  351. /package/contracts/interfaces/{0.8.x → v0.8.x}/IAdminACLV0.sol +0 -0
  352. /package/contracts/interfaces/{0.8.x → v0.8.x}/IArtblocksRoyaltyOverride.sol +0 -0
  353. /package/contracts/interfaces/{0.8.x → v0.8.x}/IBonusContract.sol +0 -0
  354. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV0.sol +0 -0
  355. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlementV1.sol +0 -0
  356. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpSettlement_Mixin.sol +0 -0
  357. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV0.sol +0 -0
  358. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDAExpV1.sol +0 -0
  359. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV0.sol +0 -0
  360. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterDALinV1.sol +0 -0
  361. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV0.sol +0 -0
  362. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV1.sol +0 -0
  363. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterHolderV2.sol +0 -0
  364. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV0.sol +0 -0
  365. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV1.sol +0 -0
  366. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterMerkleV2.sol +0 -0
  367. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV0.sol +0 -0
  368. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV1.sol +0 -0
  369. /package/contracts/interfaces/{0.8.x → v0.8.x}/IFilteredMinterV2.sol +0 -0
  370. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV1.sol +0 -0
  371. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3.sol +0 -0
  372. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreContractV3_Engine_Flex.sol +0 -0
  373. /package/contracts/interfaces/{0.8.x → v0.8.x}/IGenArt721CoreV2_PBAB.sol +0 -0
  374. /package/contracts/interfaces/{0.8.x → v0.8.x}/IManifold.sol +0 -0
  375. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterBaseV0.sol +0 -0
  376. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMinterFilterV0.sol +0 -0
  377. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPICoreV0.sol +0 -0
  378. /package/contracts/interfaces/{0.8.x → v0.8.x}/IMintingAPIMinterV0.sol +0 -0
  379. /package/contracts/interfaces/{0.8.x → v0.8.x}/IRandomizer.sol +0 -0
  380. /package/contracts/interfaces/{0.8.x → v0.8.x}/IWETH.sol +0 -0
  381. /package/contracts/libs/{0.5.x → v0.5.x}/CustomERC721Metadata.sol +0 -0
  382. /package/contracts/libs/{0.5.x → v0.5.x}/IERC20.sol +0 -0
  383. /package/contracts/libs/{0.5.x → v0.5.x}/SafeMath.sol +0 -0
  384. /package/contracts/libs/{0.5.x → v0.5.x}/Strings.sol +0 -0
  385. /package/contracts/libs/{0.8.x/BytecodeStorage.sol → v0.8.x/BytecodeStorageV0.sol} +0 -0
  386. /package/contracts/libs/{0.8.x → v0.8.x}/Bytes32Strings.sol +0 -0
  387. /package/contracts/libs/{0.8.x → v0.8.x}/ERC721_PackedHashSeed.sol +0 -0
@@ -1,11 +1,11 @@
1
1
  // SPDX-License-Identifier: LGPL-3.0-only
2
- pragma solidity 0.8.17;
2
+ pragma solidity 0.8.19;
3
3
 
4
4
  // Created By: Art Blocks Inc.
5
5
 
6
- import "./interfaces/0.8.x/IAdminACLV0.sol";
7
- import "./interfaces/0.8.x/IDependencyRegistryCompatibleV0.sol";
8
- import "./interfaces/0.8.x/IDependencyRegistryV0.sol";
6
+ import "./interfaces/v0.8.x/IAdminACLV0.sol";
7
+ import "./interfaces/v0.8.x/IDependencyRegistryCompatibleV0.sol";
8
+ import "./interfaces/v0.8.x/IDependencyRegistryV0.sol";
9
9
 
10
10
  import "@openzeppelin-4.7/contracts/utils/Strings.sol";
11
11
  import "@openzeppelin-4.7/contracts/utils/structs/EnumerableSet.sol";
@@ -13,8 +13,8 @@ import "@openzeppelin-4.8/contracts-upgradeable/access/OwnableUpgradeable.sol";
13
13
  import "@openzeppelin-4.8/contracts-upgradeable/proxy/utils/Initializable.sol";
14
14
  import "@openzeppelin-4.5/contracts/utils/math/SafeCast.sol";
15
15
 
16
- import "./libs/0.8.x/BytecodeStorage.sol";
17
- import "./libs/0.8.x/Bytes32Strings.sol";
16
+ import "./libs/v0.8.x/BytecodeStorageV1.sol";
17
+ import "./libs/v0.8.x/Bytes32Strings.sol";
18
18
 
19
19
  /**
20
20
  * @title Art Blocks Dependency Registry, V0.
@@ -33,8 +33,7 @@ contract DependencyRegistryV0 is
33
33
  OwnableUpgradeable,
34
34
  IDependencyRegistryV0
35
35
  {
36
- using BytecodeStorage for string;
37
- using BytecodeStorage for address;
36
+ using BytecodeStorageWriter for string;
38
37
  using Bytes32Strings for bytes32;
39
38
  using Strings for uint256;
40
39
  using EnumerableSet for EnumerableSet.Bytes32Set;
@@ -48,8 +47,10 @@ contract DependencyRegistryV0 is
48
47
 
49
48
  struct Dependency {
50
49
  string preferredCDN;
50
+ // mapping from additional CDN index to CDN URLr
51
51
  mapping(uint256 => string) additionalCDNs;
52
52
  string preferredRepository;
53
+ // mapping from additional repository index to repository URL
53
54
  mapping(uint256 => string) additionalRepositories;
54
55
  string referenceWebsite;
55
56
  // mapping from script index to address storing script in bytecode
@@ -98,6 +99,10 @@ contract DependencyRegistryV0 is
98
99
  );
99
100
  }
100
101
 
102
+ function _onlyInRangeIndex(uint256 _index, uint256 _length) internal pure {
103
+ require(_index < _length, "Index out of range");
104
+ }
105
+
101
106
  /**
102
107
  * @notice Initializes contract.
103
108
  * @param _adminACLContract Address of admin access control contract, to be
@@ -135,10 +140,10 @@ contract DependencyRegistryV0 is
135
140
  );
136
141
 
137
142
  _dependencyTypes.add(_dependencyType);
138
- Dependency storage dependencyType = dependencyDetails[_dependencyType];
139
- dependencyType.preferredCDN = _preferredCDN;
140
- dependencyType.preferredRepository = _preferredRepository;
141
- dependencyType.referenceWebsite = _referenceWebsite;
143
+ Dependency storage dependency = dependencyDetails[_dependencyType];
144
+ dependency.preferredCDN = _preferredCDN;
145
+ dependency.preferredRepository = _preferredRepository;
146
+ dependency.referenceWebsite = _referenceWebsite;
142
147
 
143
148
  emit DependencyAdded(
144
149
  _dependencyType,
@@ -150,7 +155,7 @@ contract DependencyRegistryV0 is
150
155
 
151
156
  /**
152
157
  * @notice Removes a dependency.
153
- * @param _dependencyType Name of dependency type (i.e. "type@version")
158
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
154
159
  */
155
160
  function removeDependency(bytes32 _dependencyType) external {
156
161
  _onlyAdminACL(this.removeDependency.selector);
@@ -170,10 +175,11 @@ contract DependencyRegistryV0 is
170
175
  }
171
176
 
172
177
  /**
173
- * @notice Adds a script to dependency `_dependencyType`.
174
- * @param _dependencyType dependency to be updated.
178
+ * @notice Adds a script to dependency `_dependencyType`, by way of
179
+ * providing a string to write to bytecode storage.
180
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
175
181
  * @param _script Script to be added. Required to be a non-empty string,
176
- * but no further validation is performed.
182
+ * but no further validation is performed.
177
183
  */
178
184
  function addDependencyScript(
179
185
  bytes32 _dependencyType,
@@ -192,65 +198,87 @@ contract DependencyRegistryV0 is
192
198
  }
193
199
 
194
200
  /**
195
- * @notice Updates script for dependencyType `_dependencyType` at script ID `_scriptId`.
196
- * @param _dependencyType dependency to be updated.
197
- * @param _scriptId Script ID to be updated.
201
+ * @notice Updates script for dependencyType `_dependencyType` at script `_index`,
202
+ * by way of providing a string to write to bytecode storage.
203
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
204
+ * @param _index The index of a given script, relative to the overall `scriptCount`.
198
205
  * @param _script The updated script value. Required to be a non-empty
199
- * string, but no further validation is performed.
206
+ * string, but no further validation is performed.
200
207
  */
201
208
  function updateDependencyScript(
202
209
  bytes32 _dependencyType,
203
- uint256 _scriptId,
210
+ uint256 _index,
204
211
  string memory _script
205
212
  ) external {
206
213
  _onlyAdminACL(this.updateDependencyScript.selector);
207
214
  _onlyNonEmptyString(_script);
208
215
  _onlyExistingDependencyType(_dependencyType);
209
- Dependency storage dependencyType = dependencyDetails[_dependencyType];
210
- require(
211
- _scriptId < dependencyType.scriptCount,
212
- "scriptId out of range"
213
- );
214
- // purge old contract bytecode contract from the blockchain state
215
- // note: Although this does reduce usage of Ethereum state, it does not
216
- // reduce the gas costs of removal transactions. We believe this is the
217
- // best behavior at the time of writing, and do not expect this to
218
- // result in any breaking changes in the future. All current proposals
219
- // to change the self-destruct opcode are backwards compatible, but may
220
- // result in not removing the bytecode from the blockchain state. This
221
- // implementation is compatible with that architecture, as it does not
222
- // rely on the bytecode being removed from the blockchain state.
223
- dependencyType.scriptBytecodeAddresses[_scriptId].purgeBytecode();
216
+ Dependency storage dependency = dependencyDetails[_dependencyType];
217
+ _onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
224
218
  // store script in contract bytecode, replacing reference address from
225
219
  // the contract that no longer exists with the newly created one
226
- dependencyType.scriptBytecodeAddresses[_scriptId] = _script
227
- .writeToBytecode();
220
+ dependency.scriptBytecodeAddresses[_index] = _script.writeToBytecode();
221
+
222
+ emit DependencyScriptUpdated(_dependencyType);
223
+ }
224
+
225
+ /**
226
+ * @notice Adds a script to dependency `_dependencyType`, by way of
227
+ * providing an already written chunk of bytecode storage.
228
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
229
+ * @param _scriptPointer Address of script to be added. Required to be a non-zero address,
230
+ * but no further validation is performed.
231
+ */
232
+ function addDependencyScriptPointer(
233
+ bytes32 _dependencyType,
234
+ address _scriptPointer
235
+ ) external {
236
+ _onlyAdminACL(this.addDependencyScriptPointer.selector);
237
+ _onlyNonZeroAddress(_scriptPointer);
238
+ _onlyExistingDependencyType(_dependencyType);
239
+ Dependency storage dependency = dependencyDetails[_dependencyType];
240
+ // store script in contract bytecode
241
+ dependency.scriptBytecodeAddresses[
242
+ dependency.scriptCount
243
+ ] = _scriptPointer;
244
+ dependency.scriptCount = dependency.scriptCount + 1;
245
+
246
+ emit DependencyScriptUpdated(_dependencyType);
247
+ }
248
+
249
+ /**
250
+ * @notice Updates script for dependencyType `_dependencyType` at script `_index`,
251
+ * by way of providing an already written chunk of bytecode storage.
252
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
253
+ * @param _index The index of a given script, relative to the overall `scriptCount`.
254
+ * @param _scriptPointer The updated script pointer (address of bytecode storage).
255
+ * Required to be a non-zero address, but no further validation is performed.
256
+ */
257
+ function updateDependencyScriptPointer(
258
+ bytes32 _dependencyType,
259
+ uint256 _index,
260
+ address _scriptPointer
261
+ ) external {
262
+ _onlyAdminACL(this.updateDependencyScriptPointer.selector);
263
+ _onlyNonZeroAddress(_scriptPointer);
264
+ _onlyExistingDependencyType(_dependencyType);
265
+ Dependency storage dependency = dependencyDetails[_dependencyType];
266
+ _onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
267
+ dependency.scriptBytecodeAddresses[_index] = _scriptPointer;
228
268
 
229
269
  emit DependencyScriptUpdated(_dependencyType);
230
270
  }
231
271
 
232
272
  /**
233
273
  * @notice Removes last script from dependency `_dependencyType`.
234
- * @param _dependencyType dependency to be updated.
274
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
235
275
  */
236
276
  function removeDependencyLastScript(bytes32 _dependencyType) external {
237
277
  _onlyAdminACL(this.removeDependencyLastScript.selector);
238
278
  _onlyExistingDependencyType(_dependencyType);
239
279
  Dependency storage dependency = dependencyDetails[_dependencyType];
240
280
  require(dependency.scriptCount > 0, "there are no scripts to remove");
241
- // purge old contract bytecode contract from the blockchain state
242
- // note: Although this does reduce usage of Ethereum state, it does not
243
- // reduce the gas costs of removal transactions. We believe this is the
244
- // best behavior at the time of writing, and do not expect this to
245
- // result in any breaking changes in the future. All current proposals
246
- // to change the self-destruct opcode are backwards compatible, but may
247
- // result in not removing the bytecode from the blockchain state. This
248
- // implementation is compatible with that architecture, as it does not
249
- // rely on the bytecode being removed from the blockchain state.
250
- dependency
251
- .scriptBytecodeAddresses[dependency.scriptCount - 1]
252
- .purgeBytecode();
253
- // delete reference to contract address that no longer exists
281
+ // delete reference to old storage contract address
254
282
  delete dependency.scriptBytecodeAddresses[dependency.scriptCount - 1];
255
283
  unchecked {
256
284
  dependency.scriptCount = dependency.scriptCount - 1;
@@ -261,7 +289,7 @@ contract DependencyRegistryV0 is
261
289
 
262
290
  /**
263
291
  * @notice Updates preferred CDN for dependency `_dependencyType`.
264
- * @param _dependencyType dependency to be updated.
292
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
265
293
  * @param _preferredCDN URL for preferred CDN.
266
294
  */
267
295
  function updateDependencyPreferredCDN(
@@ -277,7 +305,7 @@ contract DependencyRegistryV0 is
277
305
 
278
306
  /**
279
307
  * @notice Updates preferred repository for dependency `_dependencyType`.
280
- * @param _dependencyType dependency to be updated.
308
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
281
309
  * @param _preferredRepository URL for preferred repository.
282
310
  */
283
311
  function updateDependencyPreferredRepository(
@@ -297,7 +325,7 @@ contract DependencyRegistryV0 is
297
325
 
298
326
  /**
299
327
  * @notice Updates project website for dependency `_dependencyType`.
300
- * @param _dependencyType dependency to be updated.
328
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
301
329
  * @param _referenceWebsite URL for project website.
302
330
  */
303
331
  function updateDependencyReferenceWebsite(
@@ -316,9 +344,9 @@ contract DependencyRegistryV0 is
316
344
 
317
345
  /**
318
346
  * @notice Adds a new CDN url to `_dependencyType`.
319
- * @param _dependencyType dependency to be updated.
347
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
320
348
  * @param _additionalCDN CDN URL to be added. Required to be a non-empty string,
321
- * but no further validation is performed.
349
+ * but no further validation is performed.
322
350
  */
323
351
  function addDependencyAdditionalCDN(
324
352
  bytes32 _dependencyType,
@@ -344,19 +372,19 @@ contract DependencyRegistryV0 is
344
372
  * @notice Removes additional CDN for dependency `_dependencyId` at index `_index`.
345
373
  * Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
346
374
  * Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
347
- * @param _dependencyType dependency to be updated.
348
- * @param _index Additional CDN index
375
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
376
+ * @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
349
377
  */
350
- function removeDependencyAdditionalCDNAtIndex(
378
+ function removeDependencyAdditionalCDN(
351
379
  bytes32 _dependencyType,
352
380
  uint256 _index
353
381
  ) external {
354
- _onlyAdminACL(this.removeDependencyAdditionalCDNAtIndex.selector);
382
+ _onlyAdminACL(this.removeDependencyAdditionalCDN.selector);
355
383
  _onlyExistingDependencyType(_dependencyType);
356
384
  Dependency storage dependency = dependencyDetails[_dependencyType];
357
385
 
358
386
  uint256 additionalCDNCount = dependency.additionalCDNCount;
359
- require(_index < additionalCDNCount, "Asset index out of range");
387
+ _onlyInRangeIndex({_index: _index, _length: additionalCDNCount});
360
388
 
361
389
  uint256 lastElementIndex = additionalCDNCount - 1;
362
390
 
@@ -372,21 +400,23 @@ contract DependencyRegistryV0 is
372
400
 
373
401
  /**
374
402
  * @notice Updates additional CDN for dependency `_dependencyType` at `_index`.
375
- * @param _dependencyType dependency to be updated.
376
- * @param _index Additional CDN index.
403
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
404
+ * @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
377
405
  * @param _additionalCDN New CDN URL.
378
406
  */
379
- function updateDependencyAdditionalCDNAtIndex(
407
+ function updateDependencyAdditionalCDN(
380
408
  bytes32 _dependencyType,
381
409
  uint256 _index,
382
410
  string memory _additionalCDN
383
411
  ) external {
384
- _onlyAdminACL(this.updateDependencyAdditionalCDNAtIndex.selector);
412
+ _onlyAdminACL(this.updateDependencyAdditionalCDN.selector);
385
413
  _onlyNonEmptyString(_additionalCDN);
386
414
  _onlyExistingDependencyType(_dependencyType);
387
415
  Dependency storage dependency = dependencyDetails[_dependencyType];
388
- uint24 additionalCDNCount = dependency.additionalCDNCount;
389
- require(_index < additionalCDNCount, "Asset index out of range");
416
+ _onlyInRangeIndex({
417
+ _index: _index,
418
+ _length: dependency.additionalCDNCount
419
+ });
390
420
 
391
421
  dependency.additionalCDNs[_index] = _additionalCDN;
392
422
 
@@ -399,7 +429,7 @@ contract DependencyRegistryV0 is
399
429
 
400
430
  /**
401
431
  * @notice Adds a new repository URL to dependency `_dependencyType`.
402
- * @param _dependencyType dependency to be updated.
432
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
403
433
  * @param _additionalRepository Repository URL to be added. Required to be a non-empty string,
404
434
  * but no further validation is performed.
405
435
  */
@@ -432,22 +462,19 @@ contract DependencyRegistryV0 is
432
462
  * @notice Removes additional repository for depenency `_dependencyId` at index `_index`.
433
463
  * Removal is done by swapping the element to be removed with the last element in the array, then deleting this last element.
434
464
  * Assets with indices higher than `_index` can have their indices adjusted as a result of this operation.
435
- * @param _dependencyType dependency to be updated.
436
- * @param _index Additional repository index.
465
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
466
+ * @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
437
467
  */
438
- function removeDependencyAdditionalRepositoryAtIndex(
468
+ function removeDependencyAdditionalRepository(
439
469
  bytes32 _dependencyType,
440
470
  uint256 _index
441
471
  ) external {
442
- _onlyAdminACL(
443
- this.removeDependencyAdditionalRepositoryAtIndex.selector
444
- );
472
+ _onlyAdminACL(this.removeDependencyAdditionalRepository.selector);
445
473
  _onlyExistingDependencyType(_dependencyType);
446
474
  Dependency storage dependency = dependencyDetails[_dependencyType];
447
- uint256 additionalRepositoryCount = uint256(
448
- dependency.additionalRepositoryCount
449
- );
450
- require(_index < additionalRepositoryCount, "Asset index out of range");
475
+ uint256 additionalRepositoryCount = dependency
476
+ .additionalRepositoryCount;
477
+ _onlyInRangeIndex({_index: _index, _length: additionalRepositoryCount});
451
478
 
452
479
  uint256 lastElementIndex = additionalRepositoryCount - 1;
453
480
 
@@ -463,23 +490,23 @@ contract DependencyRegistryV0 is
463
490
 
464
491
  /**
465
492
  * @notice Updates additional repository for dependency `_dependencyType` at `_index`.
466
- * @param _dependencyType dependency to be updated.
467
- * @param _index Additional repository index.
493
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
494
+ * @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
468
495
  * @param _additionalRepository New Repository URL.
469
496
  */
470
- function updateDependencyAdditionalRepositoryAtIndex(
497
+ function updateDependencyAdditionalRepository(
471
498
  bytes32 _dependencyType,
472
499
  uint256 _index,
473
500
  string memory _additionalRepository
474
501
  ) external {
475
- _onlyAdminACL(
476
- this.updateDependencyAdditionalRepositoryAtIndex.selector
477
- );
502
+ _onlyAdminACL(this.updateDependencyAdditionalRepository.selector);
478
503
  _onlyNonEmptyString(_additionalRepository);
479
504
  _onlyExistingDependencyType(_dependencyType);
480
505
  Dependency storage dependency = dependencyDetails[_dependencyType];
481
- uint24 additionalRepositoryCount = dependency.additionalRepositoryCount;
482
- require(_index < additionalRepositoryCount, "Asset index out of range");
506
+ _onlyInRangeIndex({
507
+ _index: _index,
508
+ _length: dependency.additionalRepositoryCount
509
+ });
483
510
 
484
511
  dependency.additionalRepositories[_index] = _additionalRepository;
485
512
 
@@ -526,7 +553,7 @@ contract DependencyRegistryV0 is
526
553
  * type (`_dependencyType`).
527
554
  * @param _contractAddress Core contract address.
528
555
  * @param _projectId Project to override script type and version for.
529
- * @param _dependencyType Dependency type to return for project.
556
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
530
557
  */
531
558
  function addProjectDependencyTypeOverride(
532
559
  address _contractAddress,
@@ -597,20 +624,20 @@ contract DependencyRegistryV0 is
597
624
 
598
625
  /**
599
626
  * @notice Returns registered depenedency type at index `_index`.
600
- * @return Registered dependency at `_index`.
627
+ * @return Registered dependency at `_index`, relative to the overall length of the dependency type set.
601
628
  */
602
- function getDependencyTypeAtIndex(
629
+ function getDependencyType(
603
630
  uint256 _index
604
631
  ) external view returns (string memory) {
605
- require(_dependencyTypes.length() > _index, "Index out of range");
632
+ _onlyInRangeIndex({_index: _index, _length: _dependencyTypes.length()});
606
633
  return _dependencyTypes.at(_index).toString();
607
634
  }
608
635
 
609
636
  /**
610
- * @notice Returns details for depedency type `_dependencyType`.
611
- * @param _dependencyType Dependency type to be queried.
637
+ * @notice Returns details for a given depedency type `_dependencyType`.
638
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
612
639
  * @return typeAndVersion String representation of `_dependencyType`.
613
- * (e.g. "p5js(atSymbol)1.0.0")
640
+ * (e.g. "p5js(atSymbol)1.0.0")
614
641
  * @return preferredCDN Preferred CDN URL for dependency
615
642
  * @return additionalCDNCount Count of additional CDN URLs for dependency
616
643
  * @return preferredRepository Preferred repository URL for dependency
@@ -659,19 +686,31 @@ contract DependencyRegistryV0 is
659
686
 
660
687
  /**
661
688
  * @notice Returns the address of the supported core contract at index `_index`.
662
- * @param _index Index of the core contract to be returned.
689
+ * @param _index Index of the core contract to be returned, relative to the overall
690
+ * list of supported core contracts.
663
691
  * @return address of the core contract.
664
692
  */
665
- function getSupportedCoreContractAtIndex(
693
+ function getSupportedCoreContract(
666
694
  uint256 _index
667
695
  ) external view returns (address) {
668
- require(
669
- _supportedCoreContracts.length() > _index,
670
- "Index out of bounds"
671
- );
696
+ _onlyInRangeIndex({
697
+ _index: _index,
698
+ _length: _supportedCoreContracts.length()
699
+ });
672
700
  return _supportedCoreContracts.at(_index);
673
701
  }
674
702
 
703
+ /**
704
+ * @notice Returns whether the given contract address is a supported core contract.
705
+ * @param coreContractAddress Address of the core contract to be queried.
706
+ * @return True if the given contract address is a supported core contract.
707
+ */
708
+ function isSupportedCoreContract(
709
+ address coreContractAddress
710
+ ) external view returns (bool) {
711
+ return _supportedCoreContracts.contains(coreContractAddress);
712
+ }
713
+
675
714
  /**
676
715
  * @notice Returns a list of supported core contracts.
677
716
  * @return List of supported core contracts.
@@ -697,32 +736,41 @@ contract DependencyRegistryV0 is
697
736
 
698
737
  /**
699
738
  * @notice Returns the additional CDN URL at index `_index` for dependency `_dependencyType`.
700
- * @param _dependencyType Dependency type to be queried.
701
- * @param _index Index of the additional CDN URL to be returned.
739
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
740
+ * @param _index The index of an additional CDN, relative to the overall `additionalCDNCount`.
702
741
  */
703
- function getDependencyAdditionalCDNAtIndex(
742
+ function getDependencyAdditionalCDN(
704
743
  bytes32 _dependencyType,
705
744
  uint256 _index
706
745
  ) external view returns (string memory) {
707
- return dependencyDetails[_dependencyType].additionalCDNs[_index];
746
+ Dependency storage dependency = dependencyDetails[_dependencyType];
747
+ _onlyInRangeIndex({
748
+ _index: _index,
749
+ _length: dependency.additionalCDNCount
750
+ });
751
+ return dependency.additionalCDNs[_index];
708
752
  }
709
753
 
710
754
  /**
711
755
  * @notice Returns the additional repository URL at index `_index` for dependency `_dependencyType`.
712
- * @param _dependencyType Dependency type to be queried.
713
- * @param _index Index of the additional repository URL to be returned.
756
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
757
+ * @param _index The index of an additional repository, relative to the overall `additionalRepositoryCount`.
714
758
  */
715
- function getDependencyAdditionalRepositoryAtIndex(
759
+ function getDependencyAdditionalRepository(
716
760
  bytes32 _dependencyType,
717
761
  uint256 _index
718
762
  ) external view returns (string memory) {
719
- return
720
- dependencyDetails[_dependencyType].additionalRepositories[_index];
763
+ Dependency storage dependency = dependencyDetails[_dependencyType];
764
+ _onlyInRangeIndex({
765
+ _index: _index,
766
+ _length: dependency.additionalRepositoryCount
767
+ });
768
+ return dependency.additionalRepositories[_index];
721
769
  }
722
770
 
723
771
  /**
724
772
  * @notice Returns the count of scripts for dependency `_dependencyType`.
725
- * @param _dependencyType Dependency type to be queried.
773
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
726
774
  */
727
775
  function getDependencyScriptCount(
728
776
  bytes32 _dependencyType
@@ -732,32 +780,80 @@ contract DependencyRegistryV0 is
732
780
 
733
781
  /**
734
782
  * @notice Returns address with bytecode containing script for
735
- * dependency `_dependencyTypes` at script index `_index`.
783
+ * dependency `_dependencyTypes` at script index `_index`.
784
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
785
+ * @param _index The index of a given script, relative to the overall `scriptCount`.
786
+ * @return The address of the bytecode storage for the script at the given index, if it can be determined.
736
787
  */
737
- function getDependencyScriptBytecodeAddressAtIndex(
788
+ function getDependencyScriptBytecodeAddress(
738
789
  bytes32 _dependencyType,
739
790
  uint256 _index
740
791
  ) external view returns (address) {
792
+ Dependency storage dependency = dependencyDetails[_dependencyType];
793
+ _onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
794
+ return dependency.scriptBytecodeAddresses[_index];
795
+ }
796
+
797
+ /**
798
+ * @notice Returns the storage library version for
799
+ * dependency `_dependencyTypes` at script index `_index`.
800
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
801
+ * @param _index The index of a given script, relative to the overall `scriptCount`.
802
+ * @return The storage library version for the script at the given index, if it can be determined.
803
+ * @dev Note that we only expect this to be determinable if the script was written using a version
804
+ * of the Art Blocks `BytecodeStorage` library, and in other cases the fallback will be the
805
+ * unknown version string, as defined by the `BytecodeStorage` UNKNOWN_VERSION_STRING – this
806
+ * is inclusive of the in the case of `SSTORE2` written data blobs, which are an unknown version
807
+ * that can be fallback-read optimistically.
808
+ */
809
+ function getDependencyScriptBytecodeStorageVersion(
810
+ bytes32 _dependencyType,
811
+ uint256 _index
812
+ ) external view returns (bytes32) {
813
+ Dependency storage dependency = dependencyDetails[_dependencyType];
814
+ _onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
741
815
  return
742
- dependencyDetails[_dependencyType].scriptBytecodeAddresses[_index];
816
+ BytecodeStorageReader.getLibraryVersionForBytecode(
817
+ dependencyDetails[_dependencyType].scriptBytecodeAddresses[
818
+ _index
819
+ ]
820
+ );
743
821
  }
744
822
 
745
823
  /**
746
824
  * @notice Returns script for dependency `_dependencyType` at script index `_index`.
747
- * @param _dependencyType dependency to be queried.
748
- * @param _index Index of script to be queried.
749
- */
750
- function getDependencyScriptAtIndex(
825
+ * @param _dependencyType Name of dependency type (i.e. "type@version") used to identify dependency.
826
+ * @param _index The index of a given script, relative to the overall `scriptCount`.
827
+ * @return A string containing the script content at the given script chunk index for a given dependency.
828
+ * @dev This method attempts to introspectively determine which library version of
829
+ * `BytecodeStorage` was used to write the stored script string that is being
830
+ * read back, in order to use the proper read approach. If the version is
831
+ * non-determinate, a fall-back to reading using the assumption that the bytes
832
+ * were written with `SSTORE2` is used.
833
+ * Also note that in this `SSTORE2` fallback handling, the approach of casting bytes to string
834
+ * can cause failure (e.g. unexpected continuation byte).
835
+ */
836
+ function getDependencyScript(
751
837
  bytes32 _dependencyType,
752
838
  uint256 _index
753
839
  ) external view returns (string memory) {
754
840
  Dependency storage dependency = dependencyDetails[_dependencyType];
755
- // If trying to access an out-of-index script, return the empty string.
756
- if (_index >= dependency.scriptCount) {
757
- return "";
841
+ _onlyInRangeIndex({_index: _index, _length: dependency.scriptCount});
842
+
843
+ address scriptAddress = dependency.scriptBytecodeAddresses[_index];
844
+ bytes32 storageVersion = BytecodeStorageReader
845
+ .getLibraryVersionForBytecode(scriptAddress);
846
+
847
+ if (storageVersion == BytecodeStorageReader.UNKNOWN_VERSION_STRING) {
848
+ return
849
+ string(
850
+ BytecodeStorageReader.readBytesFromSSTORE2Bytecode(
851
+ scriptAddress
852
+ )
853
+ );
854
+ } else {
855
+ return BytecodeStorageReader.readFromBytecode(scriptAddress);
758
856
  }
759
-
760
- return dependency.scriptBytecodeAddresses[_index].readFromBytecode();
761
857
  }
762
858
 
763
859
  /**
@@ -768,7 +864,7 @@ contract DependencyRegistryV0 is
768
864
  * an override set, this will revert.
769
865
  * @param _contractAddress Core contract address.
770
866
  * @param _projectId Project to return dependency type for.
771
- * @return dependencyType Dependency type used by project.
867
+ * @return dependencyType Identifier for the dependency (i.e. "type@version") used by project.
772
868
  */
773
869
  function getDependencyTypeForProject(
774
870
  address _contractAddress,