@artblocks/contracts 1.2.0 → 1.3.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 (219) hide show
  1. package/README.md +22 -38
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  4. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol/BytecodeStorageReaderContractV2_Web3Call.json +201 -0
  5. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  6. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  7. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +174 -55
  8. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  9. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  10. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +15 -2
  11. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +15 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +37 -0
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +20 -2
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +48 -12
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +76 -40
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +15 -2
  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 +15 -2
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +37 -0
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  47. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  48. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  49. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  50. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  51. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +7 -7
  52. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IDelegateRegistry.sol/IDelegateRegistry.json +820 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +183 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +37 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +37 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +42 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +42 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +37 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +37 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  66. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  67. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  68. package/artifacts/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol/IPMPAugmentHook.json +83 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol/IPMPConfigureHook.json +80 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/IPMPV0.sol/IPMPV0.json +402 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +69 -0
  74. package/artifacts/contracts/interfaces/v0.8.x/IWeb3Call.sol/IWeb3Call.json +47 -0
  75. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  76. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  77. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  80. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol/DelegateRegistry.json +846 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol/RegistryHashes.json +10 -0
  82. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol/RegistryOps.json +10 -0
  83. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol/RegistryStorage.json +10 -0
  84. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  85. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/ImmutableStringArray.sol/ImmutableStringArray.json +10 -0
  88. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +9 -22
  90. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  92. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  93. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  94. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  96. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  97. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  98. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  100. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  103. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  105. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  106. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  107. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  108. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  109. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  110. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  111. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  112. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  113. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  114. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  115. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  116. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  117. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +2 -2
  118. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  119. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  120. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  121. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  122. package/artifacts/contracts/mock/ImmutableStringArrayMock.sol/ImmutableStringArrayMock.json +69 -0
  123. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  124. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  125. package/artifacts/contracts/mock/MockPMPAugmentHook.sol/MockPMPAugmentHook.json +214 -0
  126. package/artifacts/contracts/mock/MockPMPConfigureHook.sol/MockPMPConfigureHook.json +236 -0
  127. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  128. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  129. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  130. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  131. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  132. package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +629 -0
  133. package/artifacts/contracts/web3call/Web3Call.sol/Web3Call.json +66 -0
  134. package/artifacts/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol/AbstractPMPAugmentHook.json +83 -0
  135. package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +83 -0
  136. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/IUniswapV2Pair.json +60 -0
  137. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +107 -0
  138. package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +96 -0
  139. package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +83 -0
  140. package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +141 -0
  141. package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +99 -0
  142. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +99 -0
  143. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +83 -0
  144. package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +107 -0
  145. package/artifacts/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol/AbstractPMPConfigureHook.json +80 -0
  146. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  147. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol +128 -0
  148. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  149. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  150. package/contracts/DependencyRegistryV0.sol +296 -88
  151. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  152. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  153. package/contracts/engine/V3/EngineFactoryV0.sol +10 -2
  154. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +139 -70
  155. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +148 -72
  156. package/contracts/generator/AddressChunks.sol +106 -0
  157. package/contracts/generator/GenArt721GeneratorV0.sol +1163 -0
  158. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  159. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  160. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +5 -3
  161. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  162. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  163. package/contracts/interfaces/v0.8.x/IDelegateRegistry.sol +318 -0
  164. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +96 -0
  165. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +13 -2
  166. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +3 -1
  167. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  168. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  169. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  170. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  171. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  172. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  173. package/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol +31 -0
  174. package/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol +25 -0
  175. package/contracts/interfaces/v0.8.x/IPMPV0.sol +224 -0
  176. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  177. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  178. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +10 -4
  179. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +33 -0
  180. package/contracts/interfaces/v0.8.x/IWeb3Call.sol +28 -0
  181. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  182. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  183. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  184. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  185. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  186. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  187. package/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol +753 -0
  188. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol +359 -0
  189. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol +31 -0
  190. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol +87 -0
  191. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  192. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +14 -3
  193. package/contracts/libs/v0.8.x/ImmutableStringArray.sol +289 -0
  194. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  195. package/contracts/libs/v0.8.x/V3FlexLib.sol +16 -4
  196. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  197. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +107 -0
  198. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  199. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  200. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  201. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  202. package/contracts/mock/ImmutableStringArrayMock.sol +47 -0
  203. package/contracts/mock/MockFileStore.sol +22 -0
  204. package/contracts/mock/MockPMPAugmentHook.sol +170 -0
  205. package/contracts/mock/MockPMPConfigureHook.sol +78 -0
  206. package/contracts/web3call/PMPV0.sol +1125 -0
  207. package/contracts/web3call/Web3Call.sol +25 -0
  208. package/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol +46 -0
  209. package/contracts/web3call/augment-hooks/InjectBaseGasFee.sol +57 -0
  210. package/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol +103 -0
  211. package/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol +66 -0
  212. package/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol +73 -0
  213. package/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol +88 -0
  214. package/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol +62 -0
  215. package/contracts/web3call/augment-hooks/InjectTokenOwner.sol +60 -0
  216. package/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol +61 -0
  217. package/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol +69 -0
  218. package/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol +41 -0
  219. package/package.json +23 -21
@@ -0,0 +1,5 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ // This file is just used to make sure ScriptyBuilderV2.sol is compiled for use in tests.
5
+ import "scripty.sol/contracts/scripty/ScriptyBuilderV2.sol";
@@ -3,60 +3,58 @@
3
3
 
4
4
  pragma solidity ^0.8.0;
5
5
 
6
+ import {IBytecodeStorageReader_Base} from "./IBytecodeStorageReader_Base.sol";
7
+
6
8
  /**
7
- * @title Art Blocks Script Storage Library (Reader)
8
- * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
9
+ * @title Art Blocks Script Storage Library - Reader Contract
10
+ * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library's Reader
11
+ * Contracts. It is extended from the base interface to add additional read functions for further introspection of
12
+ * stored data.
9
13
  */
10
- interface IBytecodeStorageReader {
11
- /**
12
- * @notice Read a string from contract bytecode
13
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
14
- * @return data string read from contract bytecode
15
- * @dev This function performs input validation that the contract to read is in an expected format
16
- */
17
- function readFromBytecode(
18
- address _address
19
- ) external view returns (string memory data);
20
-
14
+ interface IBytecodeStorageReader is IBytecodeStorageReader_Base {
21
15
  /**
22
- * @notice Read the bytes from contract bytecode that was written to the EVM using SSTORE2
23
- * @param _address address of deployed contract with bytecode stored in the SSTORE2 format
24
- * @return data bytes read from contract bytecode
25
- * @dev This function performs no input validation on the provided contract,
26
- * other than that there is content to read (but not that its a "storage contract")
16
+ * @notice Read a bytes array from the SSTORE2-formatted bytecode of a contract.
17
+ * Note that this function is only compatible with contracts that have been deployed using the popular SSTORE2
18
+ * library.
19
+ * @dev see versioned BytecodeStorageReader implementation details to understand which data are being returned,
20
+ * espcially in the context of EOF updates.
21
+ * @param address_ address of contract with SSTORE2-formatted bytecode to be read
22
+ * @return data The bytes data stored at the specific address.
27
23
  */
28
24
  function readBytesFromSSTORE2Bytecode(
29
- address _address
25
+ address address_
30
26
  ) external view returns (bytes memory data);
31
27
 
32
28
  /**
33
- * @notice Read the bytes from contract bytecode, with an explicitly provided starting offset
34
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
35
- * @param _offset offset to read from in contract bytecode, explicitly provided (not calculated)
36
- * @return data bytes read from contract bytecode
37
- * @dev This function performs no input validation on the provided contract,
38
- * other than that there is content to read (but not that its a "storage contract")
29
+ * @notice Read a bytes array from the a contract deployed via BytecodeStorage.
30
+ * @dev see versioned BytecodeStorageReader implementation details to understand which data are being returned, and
31
+ * how offset is interpreted, especially in the context of EOF updates.
32
+ * @param address_ address of contract with valid bytecode to be read
33
+ * @param offset offset to read from in contract bytecode, explicitly provided (not calculated)
34
+ * @return The bytes data stored at the specific address.
39
35
  */
40
36
  function readBytesFromBytecode(
41
- address _address,
42
- uint256 _offset
43
- ) external view returns (bytes memory data);
37
+ address address_,
38
+ uint256 offset
39
+ ) external view returns (bytes memory);
40
+
41
+ //------ Metadata Functions ------//
44
42
 
45
43
  /**
46
- * @notice Get address for deployer for given contract bytecode
47
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
48
- * @return writerAddress address read from contract bytecode
44
+ * @notice Get address of deployer for given contract deployed via BytecodeStorage.
45
+ * @param address_ address of deployed contract
46
+ * @return writerAddress address of deployer
49
47
  */
50
48
  function getWriterAddressForBytecode(
51
- address _address
49
+ address address_
52
50
  ) external view returns (address);
53
51
 
54
52
  /**
55
- * @notice Get version for given contract bytecode
56
- * @param _address address of deployed contract with bytecode stored in the V0 or V1 format
57
- * @return version version read from contract bytecode
53
+ * @notice Get version for given contract deployed via BytecodeStorage.
54
+ * @param address_ address of deployed contract
55
+ * @return version version of the contract
58
56
  */
59
57
  function getLibraryVersionForBytecode(
60
- address _address
58
+ address address_
61
59
  ) external view returns (bytes32);
62
60
  }
@@ -7,14 +7,16 @@ import {IBytecodeStorageReader} from "./IBytecodeStorageReader.sol";
7
7
 
8
8
  /**
9
9
  * @title Art Blocks Script Storage Library (Reader)
10
- * @notice This interface defines the expected read functions for the Art Blocks Script Storage Library (Reader).
10
+ * @notice This interface defines the expected read functions for a Bytecode Storage Reader contract.
11
11
  * @dev This interface extends the V1 interface to add a function to get if data are stored in compressed format,
12
12
  * which is functionality added in the V2 format of the bytecode storage.
13
13
  */
14
14
  interface IBytecodeStorageReaderV2 is IBytecodeStorageReader {
15
+ //------ Metadata Functions ------//
16
+
15
17
  /**
16
- * @notice Get if data are stored in compressed format for given contract bytecode
17
- * @param _address address of deployed contract with bytecode stored in the V0, V1, or V2 format
18
+ * @notice Get if data are stored in compressed format for given contract deployed via BytecodeStorage.
19
+ * @param _address address of deployed contract
18
20
  * @return isCompressed boolean indicating if the stored data are compressed
19
21
  */
20
22
  function getIsCompressedForBytecode(
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ // Creatd By: Art Blocks Inc.
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ /**
7
+ * @title Art Blocks Script Storage Library - Minimal Interface for Reader Contracts
8
+ * @notice This interface defines the minimal expected read function(s) for a Bytecode Storage Reader contract.
9
+ */
10
+ interface IBytecodeStorageReader_Base {
11
+ /**
12
+ * @notice Read a string from a data contract deployed via BytecodeStorage.
13
+ * @dev may also support reading additional stored data formats in the future.
14
+ * @param address_ address of contract deployed via BytecodeStorage to be read
15
+ * @return data The string data stored at the specific address.
16
+ */
17
+ function readFromBytecode(
18
+ address address_
19
+ ) external view returns (string memory data);
20
+ }
@@ -22,4 +22,9 @@ interface ICoreRegistryV1 is IEngineRegistryV0 {
22
22
  function isRegisteredContract(
23
23
  address contractAddress
24
24
  ) external view returns (bool isRegistered);
25
+
26
+ function getAllRegisteredContracts()
27
+ external
28
+ view
29
+ returns (address[] memory);
25
30
  }
@@ -0,0 +1,318 @@
1
+ // SPDX-License-Identifier: CC0-1.0
2
+ pragma solidity >=0.8.13;
3
+
4
+ /**
5
+ * @title IDelegateRegistry
6
+ * @custom:version 2.0
7
+ * @custom:author foobar (0xfoobar)
8
+ * @notice A standalone immutable registry storing delegated permissions from one address to another
9
+ */
10
+ interface IDelegateRegistry {
11
+ /// @notice Delegation type, NONE is used when a delegation does not exist or is revoked
12
+ enum DelegationType {
13
+ NONE,
14
+ ALL,
15
+ CONTRACT,
16
+ ERC721,
17
+ ERC20,
18
+ ERC1155
19
+ }
20
+
21
+ /// @notice Struct for returning delegations
22
+ struct Delegation {
23
+ DelegationType type_;
24
+ address to;
25
+ address from;
26
+ bytes32 rights;
27
+ address contract_;
28
+ uint256 tokenId;
29
+ uint256 amount;
30
+ }
31
+
32
+ /// @notice Emitted when an address delegates or revokes rights for their entire wallet
33
+ event DelegateAll(
34
+ address indexed from,
35
+ address indexed to,
36
+ bytes32 rights,
37
+ bool enable
38
+ );
39
+
40
+ /// @notice Emitted when an address delegates or revokes rights for a contract address
41
+ event DelegateContract(
42
+ address indexed from,
43
+ address indexed to,
44
+ address indexed contract_,
45
+ bytes32 rights,
46
+ bool enable
47
+ );
48
+
49
+ /// @notice Emitted when an address delegates or revokes rights for an ERC721 tokenId
50
+ event DelegateERC721(
51
+ address indexed from,
52
+ address indexed to,
53
+ address indexed contract_,
54
+ uint256 tokenId,
55
+ bytes32 rights,
56
+ bool enable
57
+ );
58
+
59
+ /// @notice Emitted when an address delegates or revokes rights for an amount of ERC20 tokens
60
+ event DelegateERC20(
61
+ address indexed from,
62
+ address indexed to,
63
+ address indexed contract_,
64
+ bytes32 rights,
65
+ uint256 amount
66
+ );
67
+
68
+ /// @notice Emitted when an address delegates or revokes rights for an amount of an ERC1155 tokenId
69
+ event DelegateERC1155(
70
+ address indexed from,
71
+ address indexed to,
72
+ address indexed contract_,
73
+ uint256 tokenId,
74
+ bytes32 rights,
75
+ uint256 amount
76
+ );
77
+
78
+ /// @notice Thrown if multicall calldata is malformed
79
+ error MulticallFailed();
80
+
81
+ /**
82
+ * ----------- WRITE -----------
83
+ */
84
+
85
+ /**
86
+ * @notice Call multiple functions in the current contract and return the data from all of them if they all succeed
87
+ * @param data The encoded function data for each of the calls to make to this contract
88
+ * @return results The results from each of the calls passed in via data
89
+ */
90
+ function multicall(
91
+ bytes[] calldata data
92
+ ) external payable returns (bytes[] memory results);
93
+
94
+ /**
95
+ * @notice Allow the delegate to act on behalf of `msg.sender` for all contracts
96
+ * @param to The address to act as delegate
97
+ * @param rights Specific subdelegation rights granted to the delegate, pass an empty bytestring to encompass all rights
98
+ * @param enable Whether to enable or disable this delegation, true delegates and false revokes
99
+ * @return delegationHash The unique identifier of the delegation
100
+ */
101
+ function delegateAll(
102
+ address to,
103
+ bytes32 rights,
104
+ bool enable
105
+ ) external payable returns (bytes32 delegationHash);
106
+
107
+ /**
108
+ * @notice Allow the delegate to act on behalf of `msg.sender` for a specific contract
109
+ * @param to The address to act as delegate
110
+ * @param contract_ The contract whose rights are being delegated
111
+ * @param rights Specific subdelegation rights granted to the delegate, pass an empty bytestring to encompass all rights
112
+ * @param enable Whether to enable or disable this delegation, true delegates and false revokes
113
+ * @return delegationHash The unique identifier of the delegation
114
+ */
115
+ function delegateContract(
116
+ address to,
117
+ address contract_,
118
+ bytes32 rights,
119
+ bool enable
120
+ ) external payable returns (bytes32 delegationHash);
121
+
122
+ /**
123
+ * @notice Allow the delegate to act on behalf of `msg.sender` for a specific ERC721 token
124
+ * @param to The address to act as delegate
125
+ * @param contract_ The contract whose rights are being delegated
126
+ * @param tokenId The token id to delegate
127
+ * @param rights Specific subdelegation rights granted to the delegate, pass an empty bytestring to encompass all rights
128
+ * @param enable Whether to enable or disable this delegation, true delegates and false revokes
129
+ * @return delegationHash The unique identifier of the delegation
130
+ */
131
+ function delegateERC721(
132
+ address to,
133
+ address contract_,
134
+ uint256 tokenId,
135
+ bytes32 rights,
136
+ bool enable
137
+ ) external payable returns (bytes32 delegationHash);
138
+
139
+ /**
140
+ * @notice Allow the delegate to act on behalf of `msg.sender` for a specific amount of ERC20 tokens
141
+ * @dev The actual amount is not encoded in the hash, just the existence of a amount (since it is an upper bound)
142
+ * @param to The address to act as delegate
143
+ * @param contract_ The address for the fungible token contract
144
+ * @param rights Specific subdelegation rights granted to the delegate, pass an empty bytestring to encompass all rights
145
+ * @param amount The amount to delegate, > 0 delegates and 0 revokes
146
+ * @return delegationHash The unique identifier of the delegation
147
+ */
148
+ function delegateERC20(
149
+ address to,
150
+ address contract_,
151
+ bytes32 rights,
152
+ uint256 amount
153
+ ) external payable returns (bytes32 delegationHash);
154
+
155
+ /**
156
+ * @notice Allow the delegate to act on behalf of `msg.sender` for a specific amount of ERC1155 tokens
157
+ * @dev The actual amount is not encoded in the hash, just the existence of a amount (since it is an upper bound)
158
+ * @param to The address to act as delegate
159
+ * @param contract_ The address of the contract that holds the token
160
+ * @param tokenId The token id to delegate
161
+ * @param rights Specific subdelegation rights granted to the delegate, pass an empty bytestring to encompass all rights
162
+ * @param amount The amount of that token id to delegate, > 0 delegates and 0 revokes
163
+ * @return delegationHash The unique identifier of the delegation
164
+ */
165
+ function delegateERC1155(
166
+ address to,
167
+ address contract_,
168
+ uint256 tokenId,
169
+ bytes32 rights,
170
+ uint256 amount
171
+ ) external payable returns (bytes32 delegationHash);
172
+
173
+ /**
174
+ * ----------- CHECKS -----------
175
+ */
176
+
177
+ /**
178
+ * @notice Check if `to` is a delegate of `from` for the entire wallet
179
+ * @param to The potential delegate address
180
+ * @param from The potential address who delegated rights
181
+ * @param rights Specific rights to check for, pass the zero value to ignore subdelegations and check full delegations only
182
+ * @return valid Whether delegate is granted to act on the from's behalf
183
+ */
184
+ function checkDelegateForAll(
185
+ address to,
186
+ address from,
187
+ bytes32 rights
188
+ ) external view returns (bool);
189
+
190
+ /**
191
+ * @notice Check if `to` is a delegate of `from` for the specified `contract_` or the entire wallet
192
+ * @param to The delegated address to check
193
+ * @param contract_ The specific contract address being checked
194
+ * @param from The cold wallet who issued the delegation
195
+ * @param rights Specific rights to check for, pass the zero value to ignore subdelegations and check full delegations only
196
+ * @return valid Whether delegate is granted to act on from's behalf for entire wallet or that specific contract
197
+ */
198
+ function checkDelegateForContract(
199
+ address to,
200
+ address from,
201
+ address contract_,
202
+ bytes32 rights
203
+ ) external view returns (bool);
204
+
205
+ /**
206
+ * @notice Check if `to` is a delegate of `from` for the specific `contract` and `tokenId`, the entire `contract_`, or the entire wallet
207
+ * @param to The delegated address to check
208
+ * @param contract_ The specific contract address being checked
209
+ * @param tokenId The token id for the token to delegating
210
+ * @param from The wallet that issued the delegation
211
+ * @param rights Specific rights to check for, pass the zero value to ignore subdelegations and check full delegations only
212
+ * @return valid Whether delegate is granted to act on from's behalf for entire wallet, that contract, or that specific tokenId
213
+ */
214
+ function checkDelegateForERC721(
215
+ address to,
216
+ address from,
217
+ address contract_,
218
+ uint256 tokenId,
219
+ bytes32 rights
220
+ ) external view returns (bool);
221
+
222
+ /**
223
+ * @notice Returns the amount of ERC20 tokens the delegate is granted rights to act on the behalf of
224
+ * @param to The delegated address to check
225
+ * @param contract_ The address of the token contract
226
+ * @param from The cold wallet who issued the delegation
227
+ * @param rights Specific rights to check for, pass the zero value to ignore subdelegations and check full delegations only
228
+ * @return balance The delegated balance, which will be 0 if the delegation does not exist
229
+ */
230
+ function checkDelegateForERC20(
231
+ address to,
232
+ address from,
233
+ address contract_,
234
+ bytes32 rights
235
+ ) external view returns (uint256);
236
+
237
+ /**
238
+ * @notice Returns the amount of a ERC1155 tokens the delegate is granted rights to act on the behalf of
239
+ * @param to The delegated address to check
240
+ * @param contract_ The address of the token contract
241
+ * @param tokenId The token id to check the delegated amount of
242
+ * @param from The cold wallet who issued the delegation
243
+ * @param rights Specific rights to check for, pass the zero value to ignore subdelegations and check full delegations only
244
+ * @return balance The delegated balance, which will be 0 if the delegation does not exist
245
+ */
246
+ function checkDelegateForERC1155(
247
+ address to,
248
+ address from,
249
+ address contract_,
250
+ uint256 tokenId,
251
+ bytes32 rights
252
+ ) external view returns (uint256);
253
+
254
+ /**
255
+ * ----------- ENUMERATIONS -----------
256
+ */
257
+
258
+ /**
259
+ * @notice Returns all enabled delegations a given delegate has received
260
+ * @param to The address to retrieve delegations for
261
+ * @return delegations Array of Delegation structs
262
+ */
263
+ function getIncomingDelegations(
264
+ address to
265
+ ) external view returns (Delegation[] memory delegations);
266
+
267
+ /**
268
+ * @notice Returns all enabled delegations an address has given out
269
+ * @param from The address to retrieve delegations for
270
+ * @return delegations Array of Delegation structs
271
+ */
272
+ function getOutgoingDelegations(
273
+ address from
274
+ ) external view returns (Delegation[] memory delegations);
275
+
276
+ /**
277
+ * @notice Returns all hashes associated with enabled delegations an address has received
278
+ * @param to The address to retrieve incoming delegation hashes for
279
+ * @return delegationHashes Array of delegation hashes
280
+ */
281
+ function getIncomingDelegationHashes(
282
+ address to
283
+ ) external view returns (bytes32[] memory delegationHashes);
284
+
285
+ /**
286
+ * @notice Returns all hashes associated with enabled delegations an address has given out
287
+ * @param from The address to retrieve outgoing delegation hashes for
288
+ * @return delegationHashes Array of delegation hashes
289
+ */
290
+ function getOutgoingDelegationHashes(
291
+ address from
292
+ ) external view returns (bytes32[] memory delegationHashes);
293
+
294
+ /**
295
+ * @notice Returns the delegations for a given array of delegation hashes
296
+ * @param delegationHashes is an array of hashes that correspond to delegations
297
+ * @return delegations Array of Delegation structs, return empty structs for nonexistent or revoked delegations
298
+ */
299
+ function getDelegationsFromHashes(
300
+ bytes32[] calldata delegationHashes
301
+ ) external view returns (Delegation[] memory delegations);
302
+
303
+ /**
304
+ * ----------- STORAGE ACCESS -----------
305
+ */
306
+
307
+ /**
308
+ * @notice Allows external contracts to read arbitrary storage slots
309
+ */
310
+ function readSlot(bytes32 location) external view returns (bytes32);
311
+
312
+ /**
313
+ * @notice Allows external contracts to read an arbitrary array of storage slots
314
+ */
315
+ function readSlots(
316
+ bytes32[] calldata locations
317
+ ) external view returns (bytes32[] memory);
318
+ }
@@ -3,10 +3,22 @@
3
3
  pragma solidity ^0.8.19;
4
4
 
5
5
  interface IDependencyRegistryV0 {
6
+ // legacy event used before deferring to core registry for allowlist
6
7
  event SupportedCoreContractAdded(address indexed coreContractAddress);
7
8
 
9
+ // legacy event used before deferring to core registry for allowlist
8
10
  event SupportedCoreContractRemoved(address indexed coreContractAddress);
9
11
 
12
+ // active event used to add additional supported contracts beyond what core registry allows
13
+ event SupportedCoreContractOverrideAdded(
14
+ address indexed coreContractAddress
15
+ );
16
+
17
+ // active event used to remove additional supported contracts beyond what core registry allows
18
+ event SupportedCoreContractOverrideRemoved(
19
+ address indexed coreContractAddress
20
+ );
21
+
10
22
  event ProjectDependencyOverrideAdded(
11
23
  address indexed coreContractAddress,
12
24
  uint256 indexed projectId,
@@ -71,6 +83,10 @@ interface IDependencyRegistryV0 {
71
83
 
72
84
  event DependencyScriptUpdated(bytes32 indexed dependencyNameAndVersion);
73
85
 
86
+ event CoreRegistryAddressUpdated(address indexed coreRegistryAddress);
87
+
88
+ event UniversalBytecodeStorageReaderUpdated(address indexed newReader);
89
+
74
90
  /**
75
91
  * @notice Returns the count of scripts for dependency `dependencyNameAndVersion`.
76
92
  * @param dependencyNameAndVersion Dependency type to be queried.
@@ -97,4 +113,84 @@ interface IDependencyRegistryV0 {
97
113
  bytes32 dependencyNameAndVersion,
98
114
  uint256 index
99
115
  ) external view returns (string memory);
116
+
117
+ /**
118
+ * @notice Returns details for a given dependency type `dependencyNameAndVersion`.
119
+ * @param dependencyNameAndVersion Name and version of dependency (i.e. "name@version") used to identify dependency.
120
+ * @return nameAndVersion String representation of `dependencyNameAndVersion`.
121
+ * (e.g. "p5js(atSymbol)1.0.0")
122
+ * @return licenseType License type for dependency
123
+ * @return preferredCDN Preferred CDN URL for dependency
124
+ * @return additionalCDNCount Count of additional CDN URLs for dependency
125
+ * @return preferredRepository Preferred repository URL for dependency
126
+ * @return additionalRepositoryCount Count of additional repository URLs for dependency
127
+ * @return dependencyWebsite Project website URL for dependency
128
+ * @return availableOnChain Whether dependency is available on chain
129
+ * @return scriptCount Count of on-chain scripts for dependency
130
+ */
131
+ function getDependencyDetails(
132
+ bytes32 dependencyNameAndVersion
133
+ )
134
+ external
135
+ view
136
+ returns (
137
+ string memory nameAndVersion,
138
+ string memory licenseType,
139
+ string memory preferredCDN,
140
+ uint24 additionalCDNCount,
141
+ string memory preferredRepository,
142
+ uint24 additionalRepositoryCount,
143
+ string memory dependencyWebsite,
144
+ bool availableOnChain,
145
+ uint24 scriptCount
146
+ );
147
+
148
+ /**
149
+ * @notice Returns the dependency name and version for a given project (`projectId`)
150
+ * on a given core contract (`_contractAddress`). If no override is set,
151
+ * the core contract is called to retrieve the script type and version as
152
+ * dependency type. For any contract earlier than v3, that does not have
153
+ * an override set, this will revert.
154
+ * @param contractAddress Core contract address.
155
+ * @param projectId Project to return dependency type for.
156
+ * @return dependencyType Identifier for the dependency (i.e. "name@version") used by project.
157
+ */
158
+ function getDependencyNameAndVersionForProject(
159
+ address contractAddress,
160
+ uint256 projectId
161
+ ) external view returns (string memory);
162
+
163
+ /**
164
+ * @notice Returns whether the given contract address is a supported core contract.
165
+ * @param coreContractAddress Address of the core contract to be queried.
166
+ * @return True if the given contract address is a supported core contract.
167
+ */
168
+ function isSupportedCoreContract(
169
+ address coreContractAddress
170
+ ) external view returns (bool);
171
+
172
+ /**
173
+ * @notice Convenience function that returns whether `_sender` is allowed
174
+ * to call function with selector `_selector` on contract `_contract`, as
175
+ * determined by this contract's current Admin ACL contract. Expected use
176
+ * cases include minter contracts checking if caller is allowed to call
177
+ * admin-gated functions on minter contracts.
178
+ * @param sender Address of the sender calling function with selector
179
+ * `selector` on contract `contract_`.
180
+ * @param contract_ Address of the contract being called by `sender`.
181
+ * @param selector Function selector of the function being called by
182
+ * `sender`.
183
+ * @return bool Whether `sender` is allowed to call function with selector
184
+ * `selector` on contract `contract_`.
185
+ * @dev assumes the Admin ACL contract is the owner of this contract, which
186
+ * is expected to always be true.
187
+ * @dev adminACLContract is expected to either be null address (if owner
188
+ * has renounced ownership), or conform to IAdminACLV0 interface. Check for
189
+ * null address first to avoid revert when admin has renounced ownership.
190
+ */
191
+ function adminACLAllowed(
192
+ address sender,
193
+ address contract_,
194
+ bytes4 selector
195
+ ) external returns (bool);
100
196
  }
@@ -4,6 +4,7 @@
4
4
  pragma solidity ^0.8.0;
5
5
 
6
6
  import "./IAdminACLV0.sol";
7
+ import "./IGenArt721CoreProjectScriptV1.sol";
7
8
 
8
9
  /**
9
10
  * @title This interface is intended to house interface items that are common
@@ -12,7 +13,7 @@ import "./IAdminACLV0.sol";
12
13
  * add support the Royalty Registry by default.
13
14
  * @author Art Blocks Inc.
14
15
  */
15
- interface IGenArt721CoreContractV3_Base {
16
+ interface IGenArt721CoreContractV3_Base is IGenArt721CoreProjectScriptV1 {
16
17
  // This interface emits generic events that contain fields that indicate
17
18
  // which parameter has been updated. This is sufficient for application
18
19
  // state management, while also simplifying the contract and indexing code.
@@ -21,6 +22,15 @@ interface IGenArt721CoreContractV3_Base {
21
22
  // be introspected by indexers due to the design of this smart contract
22
23
  // exposing these state changes via publicly viewable fields.
23
24
 
25
+ /**
26
+ * @notice Event emitted when the Art Blocks Curation Registry contract is updated.
27
+ * @dev only utilized by subset of V3 core contracts (Art Blocks Curated contracts)
28
+ * @param artblocksCurationRegistryAddress Address of Art Blocks Curation Registry contract.
29
+ */
30
+ event ArtBlocksCurationRegistryContractUpdated(
31
+ address indexed artblocksCurationRegistryAddress
32
+ );
33
+
24
34
  /**
25
35
  * @notice Project's royalty splitter was updated to `_splitter`.
26
36
  * @dev New event in v3.2
@@ -46,7 +56,8 @@ interface IGenArt721CoreContractV3_Base {
46
56
  FIELD_PROVIDER_SALES_ADDRESSES, // 7
47
57
  FIELD_PROVIDER_PRIMARY_SALES_PERCENTAGES, // 8
48
58
  FIELD_PROVIDER_SECONDARY_SALES_BPS, // 9
49
- FIELD_SPLIT_PROVIDER // 10
59
+ FIELD_SPLIT_PROVIDER, // 10
60
+ FIELD_BYTECODE_STORAGE_READER // 11
50
61
  }
51
62
 
52
63
  // The following fields are used to indicate which project-level parameter
@@ -51,11 +51,13 @@ interface IGenArt721CoreContractV3_Engine is IGenArt721CoreContractV3_Base {
51
51
  * @param adminACLContract_ Address of admin access control contract, to be
52
52
  * set as contract owner.
53
53
  * @param defaultBaseURIHost Base URI prefix to initialize default base URI with.
54
+ * @param bytecodeStorageReaderContract_ Address of the bytecode storage reader contract.
54
55
  */
55
56
  function initialize(
56
57
  EngineConfiguration calldata engineConfiguration,
57
58
  address adminACLContract_,
58
- string memory defaultBaseURIHost
59
+ string memory defaultBaseURIHost,
60
+ address bytecodeStorageReaderContract_
59
61
  ) external;
60
62
 
61
63
  // @dev new function in V3
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ pragma solidity ^0.8.0;
3
+
4
+ /**
5
+ * @dev This interface is implemented by GenArt721CoreV0, GenArt721CoreV1, and GenArt721CoreV2
6
+ */
7
+ interface IGenArt721CoreProjectScriptV0 {
8
+ function projectScriptByIndex(
9
+ uint256 _projectId,
10
+ uint256 _index
11
+ ) external view returns (string memory);
12
+
13
+ /**
14
+ * @dev the return specified here is common across all
15
+ * pre-v3 core contracts. They all return additional
16
+ * data as well that varies between contracts but is not
17
+ * used by the dependency registry.
18
+ */
19
+ function projectScriptInfo(
20
+ uint256 _projectId
21
+ ) external view returns (string memory scriptJSON, uint256 scriptCount);
22
+ }