@artblocks/contracts 1.0.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -7
- package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
- package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
- package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +336 -131
- package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
- package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
- package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
- package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
- package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
- package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
- package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
- package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
- package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
- package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
- package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
- package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
- package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
- package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
- package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
- package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
- package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
- package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
- package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
- package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
- package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
- package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
- package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
- package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
- package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
- package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
- package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
- package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
- package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
- package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
- package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
- package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
- package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
- package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
- package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
- package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
- package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
- package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
- package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
- package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
- package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
- package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
- package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
- package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
- package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
- package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
- package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
- package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
- package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
- package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
- package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
- package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
- package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
- package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
- package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
- package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
- package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
- package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
- package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
- package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
- package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
- package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
- package/contracts/AdminACLV0.sol +6 -2
- package/contracts/AdminACLV1.sol +2 -2
- package/contracts/DependencyRegistryV0.sol +737 -390
- package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
- package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
- package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
- package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
- package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
- package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
- package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
- package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
- package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
- package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
- package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
- package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
- package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
- package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
- package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
- package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
- package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
- package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
- package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
- package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
- package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
- package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
- package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
- package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
- package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
- package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
- package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
- package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
- package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
- package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
- package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
- package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
- package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
- package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
- package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
- package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
- package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
- package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
- package/contracts/libs/v0.8.x/BitMap.sol +112 -0
- package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
- package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
- package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
- package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
- package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
- package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
- package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
- package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
- package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
- package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
- package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
- package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
- package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
- package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
- package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
- package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
- package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
- package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
- package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
- package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
- package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
- package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
- package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
- package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
- package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
- package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
- package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
- package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
- package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
- package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
- package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
- package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
- package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
- package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
- package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
- package/contracts/mock/ForceSendMock.sol +22 -0
- package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
- package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
- package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
- package/contracts/mock/MockAdminACLV0.sol +21 -0
- package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
- package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
- package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
- package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
- package/contracts/mock/ReentrancyMockShared.sol +48 -0
- package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
- package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
- package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
- package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
- package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
- package/contracts/split/SplitAtomicV0.sol +265 -0
- package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
- package/package.json +79 -45
- package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
- package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
- package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
- package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
- package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
- package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
- package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
2
2
|
// Created By: Art Blocks Inc.
|
|
3
3
|
|
|
4
|
-
import "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
|
|
5
|
-
import "@openzeppelin-4.7/contracts/token/ERC721/IERC721.sol";
|
|
6
|
-
|
|
7
4
|
pragma solidity ^0.8.0;
|
|
8
5
|
|
|
6
|
+
import {IERC721} from "@openzeppelin-4.7/contracts/token/ERC721/IERC721.sol";
|
|
7
|
+
|
|
8
|
+
import {ABHelpers} from "../ABHelpers.sol";
|
|
9
|
+
|
|
10
|
+
import {EnumerableSet} from "@openzeppelin-4.5/contracts/utils/structs/EnumerableSet.sol";
|
|
11
|
+
|
|
9
12
|
/**
|
|
10
13
|
* @title Art Blocks Token Holder Library
|
|
11
14
|
* @notice This library provides a collection of functions for managing and
|
|
@@ -19,98 +22,193 @@ pragma solidity ^0.8.0;
|
|
|
19
22
|
|
|
20
23
|
library TokenHolderLib {
|
|
21
24
|
using EnumerableSet for EnumerableSet.AddressSet;
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
/**
|
|
26
|
+
* @notice Notifies of the contracts' current delegation registry address.
|
|
27
|
+
* @param delegationRegistry The address of the delegation registry
|
|
28
|
+
*/
|
|
29
|
+
event DelegationRegistryUpdated(address delegationRegistry);
|
|
30
|
+
/**
|
|
31
|
+
* @notice Allow holders of NFTs at addresses `ownedNFTAddresses`, project
|
|
32
|
+
* IDs `ownedNFTProjectIds` to mint on project `projectId`.
|
|
33
|
+
* `ownedNFTAddresses` assumed to be aligned with `ownedNFTProjectIds`.
|
|
34
|
+
* e.g. Allows holders of project `ownedNFTProjectIds[0]` on token
|
|
35
|
+
* contract `ownedNFTAddresses[0]` to mint.
|
|
36
|
+
* @param projectId Project ID to allowlist holders for.
|
|
37
|
+
* @param coreContract Core contract address to allowlist holders for.
|
|
38
|
+
* @param ownedNFTAddresses NFT core addresses of projects to be
|
|
39
|
+
* allowlisted. Indexes align with `ownedNFTProjectIds`.
|
|
40
|
+
* @param ownedNFTProjectIds Project IDs on `ownedNFTAddresses` whose
|
|
41
|
+
* holders shall be allowlisted to mint project `projectId`. Indexes
|
|
42
|
+
* align with `ownedNFTAddresses`.
|
|
43
|
+
*/
|
|
44
|
+
event AllowedHoldersOfProjects(
|
|
45
|
+
uint256 indexed projectId,
|
|
46
|
+
address indexed coreContract,
|
|
47
|
+
address[] ownedNFTAddresses,
|
|
48
|
+
uint256[] ownedNFTProjectIds
|
|
49
|
+
);
|
|
50
|
+
/**
|
|
51
|
+
* @notice Remove holders of NFTs at addresses `ownedNFTAddresses`,
|
|
52
|
+
* project IDs `ownedNFTProjectIds` to mint on project `projectId`.
|
|
53
|
+
* `ownedNFTAddresses` assumed to be aligned with `ownedNFTProjectIds`.
|
|
54
|
+
* e.g. Removes holders of project `ownedNFTProjectIds[0]` on token
|
|
55
|
+
* contract `ownedNFTAddresses[0]` from mint allowlist.
|
|
56
|
+
* @param projectId Project ID to remove holders for.
|
|
57
|
+
* @param coreContract Core contract address to remove holders for.
|
|
58
|
+
* @param ownedNFTAddresses NFT core addresses of projects to be removed
|
|
59
|
+
* from allowlist. Indexes align with `ownedNFTProjectIds`.
|
|
60
|
+
* @param ownedNFTProjectIds Project IDs on `ownedNFTAddresses` whose
|
|
61
|
+
* holders will be removed from allowlist to mint project `projectId`.
|
|
62
|
+
* Indexes align with `ownedNFTAddresses`.
|
|
63
|
+
*/
|
|
64
|
+
event RemovedHoldersOfProjects(
|
|
65
|
+
uint256 indexed projectId,
|
|
66
|
+
address indexed coreContract,
|
|
67
|
+
address[] ownedNFTAddresses,
|
|
68
|
+
uint256[] ownedNFTProjectIds
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
// position of Token Holder Lib storage, using a diamond storage pattern
|
|
72
|
+
// for this library
|
|
73
|
+
bytes32 constant TOKEN_HOLDER_LIB_STORAGE_POSITION =
|
|
74
|
+
keccak256("tokenholderlib.storage");
|
|
24
75
|
|
|
25
76
|
struct HolderProjectConfig {
|
|
26
77
|
// projects whose holders are allowed to purchase a token on `projectId`
|
|
27
|
-
|
|
28
|
-
|
|
78
|
+
mapping(address ownedNFTAddress => mapping(uint256 ownedNFTProjectId => bool allowed)) allowedProjectHolders;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Diamond storage pattern is used in this library
|
|
82
|
+
struct TokenHolderLibStorage {
|
|
83
|
+
mapping(address coreContract => mapping(uint256 projectId => HolderProjectConfig)) holderProjectConfigs;
|
|
29
84
|
}
|
|
30
85
|
|
|
31
86
|
/**
|
|
32
|
-
* @
|
|
33
|
-
* @param
|
|
34
|
-
* @param
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
87
|
+
* @notice Allows holders of specific project tokens.
|
|
88
|
+
* @param projectId Project ID to allowlist holders for.
|
|
89
|
+
* @param coreContract Core contract address to allowlist holders for.
|
|
90
|
+
* @param ownedNFTAddresses NFT core addresses of projects to be
|
|
91
|
+
* allowlisted. Indexes must align with `ownedNFTProjectIds`.
|
|
92
|
+
* @param ownedNFTProjectIds Project IDs on `ownedNFTAddresses` whose
|
|
93
|
+
* holders shall be allowlisted to mint project `projectId`. Indexes must
|
|
94
|
+
* align with `ownedNFTAddresses`.
|
|
39
95
|
*/
|
|
40
96
|
function allowHoldersOfProjects(
|
|
41
|
-
|
|
42
|
-
address
|
|
43
|
-
|
|
97
|
+
uint256 projectId,
|
|
98
|
+
address coreContract,
|
|
99
|
+
address[] calldata ownedNFTAddresses,
|
|
100
|
+
uint256[] calldata ownedNFTProjectIds
|
|
44
101
|
) internal {
|
|
45
102
|
require(
|
|
46
|
-
|
|
103
|
+
ownedNFTAddresses.length == ownedNFTProjectIds.length,
|
|
47
104
|
"TokenHolderLib: arrays neq length"
|
|
48
105
|
);
|
|
49
|
-
|
|
50
|
-
holderProjectConfig
|
|
51
|
-
|
|
106
|
+
HolderProjectConfig
|
|
107
|
+
storage holderProjectConfig = getHolderProjectConfig({
|
|
108
|
+
projectId: projectId,
|
|
109
|
+
coreContract: coreContract
|
|
110
|
+
});
|
|
111
|
+
uint256 ownedNFTLoopLength = ownedNFTAddresses.length;
|
|
112
|
+
for (uint256 i; i < ownedNFTLoopLength; ) {
|
|
113
|
+
holderProjectConfig.allowedProjectHolders[ownedNFTAddresses[i]][
|
|
114
|
+
ownedNFTProjectIds[i]
|
|
52
115
|
] = true;
|
|
116
|
+
// gas-efficient loop increment
|
|
117
|
+
unchecked {
|
|
118
|
+
++i;
|
|
119
|
+
}
|
|
53
120
|
}
|
|
121
|
+
// emit approve event
|
|
122
|
+
emit AllowedHoldersOfProjects({
|
|
123
|
+
projectId: projectId,
|
|
124
|
+
coreContract: coreContract,
|
|
125
|
+
ownedNFTAddresses: ownedNFTAddresses,
|
|
126
|
+
ownedNFTProjectIds: ownedNFTProjectIds
|
|
127
|
+
});
|
|
54
128
|
}
|
|
55
129
|
|
|
56
130
|
/**
|
|
57
|
-
* @
|
|
58
|
-
* @param
|
|
59
|
-
* @param
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
131
|
+
* @notice Removes holders of specific project tokens.
|
|
132
|
+
* @param projectId Project ID to remove holders for.
|
|
133
|
+
* @param coreContract Core contract address to remove holders for.
|
|
134
|
+
* @param ownedNFTAddresses NFT core addresses of projects to be removed
|
|
135
|
+
* from allowlist. Indexes must align with `ownedNFTProjectIds`.
|
|
136
|
+
* @param ownedNFTProjectIds Project IDs on `ownedNFTAddresses` whose
|
|
137
|
+
* holders will be removed from allowlist to mint project `projectId`.
|
|
138
|
+
* Indexes must align with `ownedNFTAddresses`.
|
|
64
139
|
*/
|
|
65
140
|
function removeHoldersOfProjects(
|
|
66
|
-
|
|
67
|
-
address
|
|
68
|
-
|
|
141
|
+
uint256 projectId,
|
|
142
|
+
address coreContract,
|
|
143
|
+
address[] calldata ownedNFTAddresses,
|
|
144
|
+
uint256[] calldata ownedNFTProjectIds
|
|
69
145
|
) internal {
|
|
70
146
|
require(
|
|
71
|
-
|
|
147
|
+
ownedNFTAddresses.length == ownedNFTProjectIds.length,
|
|
72
148
|
"TokenHolderLib: arrays neq length"
|
|
73
149
|
);
|
|
74
|
-
|
|
75
|
-
holderProjectConfig
|
|
76
|
-
|
|
150
|
+
HolderProjectConfig
|
|
151
|
+
storage holderProjectConfig = getHolderProjectConfig({
|
|
152
|
+
projectId: projectId,
|
|
153
|
+
coreContract: coreContract
|
|
154
|
+
});
|
|
155
|
+
uint256 ownedNFTLoopLength = ownedNFTAddresses.length;
|
|
156
|
+
for (uint256 i; i < ownedNFTLoopLength; ) {
|
|
157
|
+
holderProjectConfig.allowedProjectHolders[ownedNFTAddresses[i]][
|
|
158
|
+
ownedNFTProjectIds[i]
|
|
77
159
|
] = false;
|
|
160
|
+
// gas-efficient loop increment
|
|
161
|
+
unchecked {
|
|
162
|
+
++i;
|
|
163
|
+
}
|
|
78
164
|
}
|
|
165
|
+
// emit removed event
|
|
166
|
+
emit RemovedHoldersOfProjects({
|
|
167
|
+
projectId: projectId,
|
|
168
|
+
coreContract: coreContract,
|
|
169
|
+
ownedNFTAddresses: ownedNFTAddresses,
|
|
170
|
+
ownedNFTProjectIds: ownedNFTProjectIds
|
|
171
|
+
});
|
|
79
172
|
}
|
|
80
173
|
|
|
81
174
|
/**
|
|
82
|
-
* @
|
|
83
|
-
*
|
|
84
|
-
* @param
|
|
85
|
-
*
|
|
86
|
-
* @param
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
175
|
+
* @notice Allows and removes holders of specific project tokens in one
|
|
176
|
+
* operation.
|
|
177
|
+
* @param projectId Project ID to modify holders for.
|
|
178
|
+
* @param coreContract Core contract address to modify holders for.
|
|
179
|
+
* @param ownedNFTAddressesAdd NFT core addresses of projects to be
|
|
180
|
+
* allowlisted. Indexes must align with `ownedNFTProjectIdsAdd`.
|
|
181
|
+
* @param ownedNFTProjectIdsAdd Project IDs on `ownedNFTAddressesAdd`
|
|
182
|
+
* whose holders shall be allowlisted to mint project `projectId`. Indexes
|
|
183
|
+
* must align with `ownedNFTAddressesAdd`.
|
|
184
|
+
* @param ownedNFTAddressesRemove NFT core addresses of projects to be
|
|
90
185
|
* removed from allowlist. Indexes must align with
|
|
91
|
-
* `
|
|
92
|
-
* @param
|
|
93
|
-
* `
|
|
94
|
-
* to mint project `
|
|
95
|
-
* `
|
|
186
|
+
* `ownedNFTProjectIdsRemove`.
|
|
187
|
+
* @param ownedNFTProjectIdsRemove Project IDs on
|
|
188
|
+
* `ownedNFTAddressesRemove` whose holders will be removed from allowlist
|
|
189
|
+
* to mint project `projectId`. Indexes must align with
|
|
190
|
+
* `ownedNFTAddressesRemove`.
|
|
96
191
|
*/
|
|
97
192
|
function allowAndRemoveHoldersOfProjects(
|
|
98
|
-
|
|
99
|
-
address
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
193
|
+
uint256 projectId,
|
|
194
|
+
address coreContract,
|
|
195
|
+
address[] calldata ownedNFTAddressesAdd,
|
|
196
|
+
uint256[] calldata ownedNFTProjectIdsAdd,
|
|
197
|
+
address[] calldata ownedNFTAddressesRemove,
|
|
198
|
+
uint256[] calldata ownedNFTProjectIdsRemove
|
|
103
199
|
) internal {
|
|
104
|
-
allowHoldersOfProjects(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
200
|
+
allowHoldersOfProjects({
|
|
201
|
+
projectId: projectId,
|
|
202
|
+
coreContract: coreContract,
|
|
203
|
+
ownedNFTAddresses: ownedNFTAddressesAdd,
|
|
204
|
+
ownedNFTProjectIds: ownedNFTProjectIdsAdd
|
|
205
|
+
});
|
|
206
|
+
removeHoldersOfProjects({
|
|
207
|
+
projectId: projectId,
|
|
208
|
+
coreContract: coreContract,
|
|
209
|
+
ownedNFTAddresses: ownedNFTAddressesRemove,
|
|
210
|
+
ownedNFTProjectIds: ownedNFTProjectIdsRemove
|
|
211
|
+
});
|
|
114
212
|
}
|
|
115
213
|
|
|
116
214
|
/**
|
|
@@ -120,34 +218,75 @@ library TokenHolderLib {
|
|
|
120
218
|
* contract. Plan is to only integrate with AB/PBAB NFTs on the minter, but
|
|
121
219
|
* in case other NFTs are registered, better to check here. Also,
|
|
122
220
|
* function is non-reentrant, so this is extra cautious.
|
|
221
|
+
* @param ownedNFTAddress ERC-721 NFT token address to be checked.
|
|
222
|
+
* @param ownedNFTTokenId ERC-721 NFT token ID to be checked.
|
|
223
|
+
* @param targetOwner Target owner address to check.
|
|
123
224
|
*/
|
|
124
225
|
function validateNFTOwnership(
|
|
125
|
-
address
|
|
126
|
-
uint256
|
|
127
|
-
address
|
|
226
|
+
address ownedNFTAddress,
|
|
227
|
+
uint256 ownedNFTTokenId,
|
|
228
|
+
address targetOwner
|
|
128
229
|
) internal view {
|
|
129
|
-
address actualNFTOwner = IERC721(
|
|
130
|
-
|
|
230
|
+
address actualNFTOwner = IERC721(ownedNFTAddress).ownerOf(
|
|
231
|
+
ownedNFTTokenId
|
|
131
232
|
);
|
|
132
|
-
require(actualNFTOwner ==
|
|
233
|
+
require(actualNFTOwner == targetOwner, "Only owner of NFT");
|
|
133
234
|
}
|
|
134
235
|
|
|
135
236
|
/**
|
|
136
|
-
* @
|
|
137
|
-
* @param
|
|
138
|
-
* @param
|
|
139
|
-
* @param
|
|
237
|
+
* @notice Checks if a specific NFT is allowlisted.
|
|
238
|
+
* @param projectId Project ID to be checked.
|
|
239
|
+
* @param coreContract Core contract address to be checked.
|
|
240
|
+
* @param ownedNFTAddress ERC-721 NFT token address to be checked.
|
|
241
|
+
* @param ownedNFTTokenId ERC-721 NFT token ID to be checked.
|
|
140
242
|
* @return bool true if the NFT is allowlisted; false otherwise.
|
|
141
243
|
*/
|
|
142
244
|
function isAllowlistedNFT(
|
|
143
|
-
|
|
144
|
-
address
|
|
145
|
-
|
|
245
|
+
uint256 projectId,
|
|
246
|
+
address coreContract,
|
|
247
|
+
address ownedNFTAddress,
|
|
248
|
+
uint256 ownedNFTTokenId
|
|
146
249
|
) internal view returns (bool) {
|
|
147
|
-
|
|
250
|
+
HolderProjectConfig
|
|
251
|
+
storage holderProjectConfig = getHolderProjectConfig({
|
|
252
|
+
projectId: projectId,
|
|
253
|
+
coreContract: coreContract
|
|
254
|
+
});
|
|
255
|
+
uint256 ownedNFTProjectId = ABHelpers.tokenIdToProjectId(
|
|
256
|
+
ownedNFTTokenId
|
|
257
|
+
);
|
|
148
258
|
return
|
|
149
|
-
holderProjectConfig.allowedProjectHolders[
|
|
259
|
+
holderProjectConfig.allowedProjectHolders[ownedNFTAddress][
|
|
150
260
|
ownedNFTProjectId
|
|
151
261
|
];
|
|
152
262
|
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* @notice Loads the HolderProjectConfig for a given project and core
|
|
266
|
+
* contract.
|
|
267
|
+
* @param projectId Project Id to get config for
|
|
268
|
+
* @param coreContract Core contract address to get config for
|
|
269
|
+
*/
|
|
270
|
+
function getHolderProjectConfig(
|
|
271
|
+
uint256 projectId,
|
|
272
|
+
address coreContract
|
|
273
|
+
) internal view returns (HolderProjectConfig storage) {
|
|
274
|
+
return s().holderProjectConfigs[coreContract][projectId];
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @notice Return the storage struct for reading and writing. This library
|
|
279
|
+
* uses a diamond storage pattern when managing storage.
|
|
280
|
+
* @return storageStruct The SetPriceLibStorage struct.
|
|
281
|
+
*/
|
|
282
|
+
function s()
|
|
283
|
+
internal
|
|
284
|
+
pure
|
|
285
|
+
returns (TokenHolderLibStorage storage storageStruct)
|
|
286
|
+
{
|
|
287
|
+
bytes32 position = TOKEN_HOLDER_LIB_STORAGE_POSITION;
|
|
288
|
+
assembly ("memory-safe") {
|
|
289
|
+
storageStruct.slot := position
|
|
290
|
+
}
|
|
291
|
+
}
|
|
153
292
|
}
|