@rarible/external-contracts 3.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/README.md +144 -0
- package/contracts/base/ERC1155Base.sol +282 -0
- package/contracts/base/ERC1155DelayedReveal.sol +117 -0
- package/contracts/base/ERC1155Drop.sol +368 -0
- package/contracts/base/ERC1155LazyMint.sol +286 -0
- package/contracts/base/ERC1155SignatureMint.sol +132 -0
- package/contracts/base/ERC20Base.sol +111 -0
- package/contracts/base/ERC20Drop.sol +157 -0
- package/contracts/base/ERC20DropVote.sol +135 -0
- package/contracts/base/ERC20SignatureMint.sol +100 -0
- package/contracts/base/ERC20SignatureMintVote.sol +107 -0
- package/contracts/base/ERC20Vote.sol +111 -0
- package/contracts/base/ERC721Base.sol +210 -0
- package/contracts/base/ERC721DelayedReveal.sol +118 -0
- package/contracts/base/ERC721Drop.sol +312 -0
- package/contracts/base/ERC721LazyMint.sol +219 -0
- package/contracts/base/ERC721Multiwrap.sol +262 -0
- package/contracts/base/ERC721SignatureMint.sol +120 -0
- package/contracts/base/Staking1155Base.sol +189 -0
- package/contracts/base/Staking20Base.sol +179 -0
- package/contracts/base/Staking721Base.sol +186 -0
- package/contracts/eip/ERC1155.sol +294 -0
- package/contracts/eip/ERC1271.sol +18 -0
- package/contracts/eip/ERC165.sol +29 -0
- package/contracts/eip/ERC721A.sol +580 -0
- package/contracts/eip/ERC721AUpgradeable.sol +625 -0
- package/contracts/eip/ERC721AVirtualApprove.sol +582 -0
- package/contracts/eip/ERC721AVirtualApproveUpgradeable.sol +598 -0
- package/contracts/eip/interface/IERC1155.sol +132 -0
- package/contracts/eip/interface/IERC1155Enumerable.sol +11 -0
- package/contracts/eip/interface/IERC1155Metadata.sol +15 -0
- package/contracts/eip/interface/IERC1155Receiver.sol +58 -0
- package/contracts/eip/interface/IERC1155Supply.sol +11 -0
- package/contracts/eip/interface/IERC165.sol +25 -0
- package/contracts/eip/interface/IERC20.sol +24 -0
- package/contracts/eip/interface/IERC20Metadata.sol +14 -0
- package/contracts/eip/interface/IERC20Permit.sol +60 -0
- package/contracts/eip/interface/IERC2981.sol +23 -0
- package/contracts/eip/interface/IERC4906.sol +17 -0
- package/contracts/eip/interface/IERC721.sol +128 -0
- package/contracts/eip/interface/IERC721A.sol +109 -0
- package/contracts/eip/interface/IERC721Enumerable.sol +24 -0
- package/contracts/eip/interface/IERC721Metadata.sol +20 -0
- package/contracts/eip/interface/IERC721Receiver.sol +27 -0
- package/contracts/eip/interface/IERC721Supply.sol +13 -0
- package/contracts/eip/queryable/ERC721AQueryable.sol +168 -0
- package/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol +193 -0
- package/contracts/eip/queryable/ERC721AStorage.sol +57 -0
- package/contracts/eip/queryable/ERC721AUpgradeable.sol +1075 -0
- package/contracts/eip/queryable/ERC721A__Initializable.sol +75 -0
- package/contracts/eip/queryable/ERC721A__InitializableStorage.sol +29 -0
- package/contracts/eip/queryable/IERC721AQueryable.sol +69 -0
- package/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol +69 -0
- package/contracts/eip/queryable/IERC721AUpgradeable.sol +269 -0
- package/contracts/extension/AppURI.sol +37 -0
- package/contracts/extension/BatchMintMetadata.sol +143 -0
- package/contracts/extension/BurnToClaim.sol +60 -0
- package/contracts/extension/ContractMetadata.sol +48 -0
- package/contracts/extension/DelayedReveal.sol +111 -0
- package/contracts/extension/Drop.sol +284 -0
- package/contracts/extension/Drop1155.sol +300 -0
- package/contracts/extension/DropSinglePhase.sol +237 -0
- package/contracts/extension/DropSinglePhase1155.sol +215 -0
- package/contracts/extension/Initializable.sol +136 -0
- package/contracts/extension/LazyMint.sol +56 -0
- package/contracts/extension/LazyMintWithTier.sol +112 -0
- package/contracts/extension/Multicall.sol +40 -0
- package/contracts/extension/NFTMetadata.sol +58 -0
- package/contracts/extension/OperatorFilterToggle.sol +22 -0
- package/contracts/extension/OperatorFilterer.sol +73 -0
- package/contracts/extension/OperatorFiltererUpgradeable.sol +69 -0
- package/contracts/extension/Ownable.sol +58 -0
- package/contracts/extension/Permissions.sol +159 -0
- package/contracts/extension/PermissionsEnumerable.sol +111 -0
- package/contracts/extension/PlatformFee.sol +117 -0
- package/contracts/extension/PrimarySale.sol +57 -0
- package/contracts/extension/Proxy.sol +84 -0
- package/contracts/extension/ProxyForUpgradeable.sol +32 -0
- package/contracts/extension/Royalty.sol +134 -0
- package/contracts/extension/SeaportEIP1271.sol +88 -0
- package/contracts/extension/SeaportOrderParser.sol +550 -0
- package/contracts/extension/SharedMetadata.sol +63 -0
- package/contracts/extension/SignatureAction.sol +67 -0
- package/contracts/extension/SignatureActionUpgradeable.sol +71 -0
- package/contracts/extension/SignatureMintERC1155.sol +78 -0
- package/contracts/extension/SignatureMintERC1155Upgradeable.sol +84 -0
- package/contracts/extension/SignatureMintERC20.sol +70 -0
- package/contracts/extension/SignatureMintERC20Upgradeable.sol +77 -0
- package/contracts/extension/SignatureMintERC721.sol +96 -0
- package/contracts/extension/SignatureMintERC721Upgradeable.sol +102 -0
- package/contracts/extension/SoulboundERC721A.sol +51 -0
- package/contracts/extension/Staking1155.sol +516 -0
- package/contracts/extension/Staking1155Upgradeable.sol +516 -0
- package/contracts/extension/Staking20.sol +376 -0
- package/contracts/extension/Staking20Upgradeable.sol +383 -0
- package/contracts/extension/Staking721.sol +362 -0
- package/contracts/extension/Staking721Upgradeable.sol +364 -0
- package/contracts/extension/TokenBundle.sol +130 -0
- package/contracts/extension/TokenStore.sol +97 -0
- package/contracts/extension/Upgradeable.sol +95 -0
- package/contracts/extension/interface/IAccountPermissions.sol +114 -0
- package/contracts/extension/interface/IAppURI.sol +24 -0
- package/contracts/extension/interface/IBurnToClaim.sol +43 -0
- package/contracts/extension/interface/IBurnableERC1155.sol +16 -0
- package/contracts/extension/interface/IBurnableERC20.sol +26 -0
- package/contracts/extension/interface/IBurnableERC721.sol +15 -0
- package/contracts/extension/interface/IClaimCondition.sol +48 -0
- package/contracts/extension/interface/IClaimConditionMultiPhase.sol +39 -0
- package/contracts/extension/interface/IClaimConditionsSinglePhase.sol +31 -0
- package/contracts/extension/interface/IClaimableERC1155.sol +39 -0
- package/contracts/extension/interface/IClaimableERC721.sol +37 -0
- package/contracts/extension/interface/IContractFactory.sol +20 -0
- package/contracts/extension/interface/IContractMetadata.sol +25 -0
- package/contracts/extension/interface/IDelayedReveal.sol +33 -0
- package/contracts/extension/interface/IDelayedRevealDeprecated.sol +38 -0
- package/contracts/extension/interface/IDrop.sol +72 -0
- package/contracts/extension/interface/IDrop1155.sol +75 -0
- package/contracts/extension/interface/IDropSinglePhase.sol +70 -0
- package/contracts/extension/interface/IDropSinglePhase1155.sol +74 -0
- package/contracts/extension/interface/IERC2771Context.sol +6 -0
- package/contracts/extension/interface/ILazyMint.sol +33 -0
- package/contracts/extension/interface/ILazyMintWithTier.sol +43 -0
- package/contracts/extension/interface/IMintableERC1155.sol +24 -0
- package/contracts/extension/interface/IMintableERC20.sol +20 -0
- package/contracts/extension/interface/IMintableERC721.sol +19 -0
- package/contracts/extension/interface/IMulticall.sol +16 -0
- package/contracts/extension/interface/INFTMetadata.sol +17 -0
- package/contracts/extension/interface/IOperatorFilterRegistry.sol +54 -0
- package/contracts/extension/interface/IOperatorFilterToggle.sol +12 -0
- package/contracts/extension/interface/IOwnable.sol +21 -0
- package/contracts/extension/interface/IPermissions.sol +88 -0
- package/contracts/extension/interface/IPermissionsEnumerable.sol +31 -0
- package/contracts/extension/interface/IPlatformFee.sol +33 -0
- package/contracts/extension/interface/IPrimarySale.sol +21 -0
- package/contracts/extension/interface/IRoyalty.sol +39 -0
- package/contracts/extension/interface/IRoyaltyEngineV1.sol +42 -0
- package/contracts/extension/interface/IRoyaltyPayments.sol +37 -0
- package/contracts/extension/interface/IRulesEngine.sol +58 -0
- package/contracts/extension/interface/ISharedMetadata.sol +30 -0
- package/contracts/extension/interface/ISharedMetadataBatch.sol +57 -0
- package/contracts/extension/interface/ISignatureAction.sol +44 -0
- package/contracts/extension/interface/ISignatureMintERC1155.sol +77 -0
- package/contracts/extension/interface/ISignatureMintERC20.sol +64 -0
- package/contracts/extension/interface/ISignatureMintERC721.sol +75 -0
- package/contracts/extension/interface/IStaking1155.sol +110 -0
- package/contracts/extension/interface/IStaking20.sol +97 -0
- package/contracts/extension/interface/IStaking721.sol +83 -0
- package/contracts/extension/interface/ITokenBundle.sol +52 -0
- package/contracts/extension/interface/plugin/IContext.sol +10 -0
- package/contracts/extension/interface/plugin/IPluginMap.sol +31 -0
- package/contracts/extension/interface/plugin/IRouter.sol +30 -0
- package/contracts/extension/plugin/ContractMetadataLogic.sol +52 -0
- package/contracts/extension/plugin/ContractMetadataStorage.sol +25 -0
- package/contracts/extension/plugin/ERC2771ContextConsumer.sol +34 -0
- package/contracts/extension/plugin/ERC2771ContextLogic.sol +43 -0
- package/contracts/extension/plugin/ERC2771ContextStorage.sol +22 -0
- package/contracts/extension/plugin/ERC2771ContextUpgradeableLogic.sol +47 -0
- package/contracts/extension/plugin/ERC2771ContextUpgradeableStorage.sol +20 -0
- package/contracts/extension/plugin/PermissionsEnumerableLogic.sol +101 -0
- package/contracts/extension/plugin/PermissionsEnumerableStorage.sol +41 -0
- package/contracts/extension/plugin/PermissionsLogic.sol +182 -0
- package/contracts/extension/plugin/PermissionsStorage.sol +28 -0
- package/contracts/extension/plugin/PlatformFeeLogic.sol +56 -0
- package/contracts/extension/plugin/PlatformFeeStorage.sol +28 -0
- package/contracts/extension/plugin/PluginMap.sol +81 -0
- package/contracts/extension/plugin/ReentrancyGuardLogic.sol +69 -0
- package/contracts/extension/plugin/ReentrancyGuardStorage.sol +22 -0
- package/contracts/extension/plugin/Router.sol +270 -0
- package/contracts/extension/plugin/RouterImmutable.sol +26 -0
- package/contracts/extension/plugin/RoyaltyPayments.sol +121 -0
- package/contracts/extension/upgradeable/AccountPermissions.sol +253 -0
- package/contracts/extension/upgradeable/BatchMintMetadata.sol +144 -0
- package/contracts/extension/upgradeable/BurnToClaim.sol +83 -0
- package/contracts/extension/upgradeable/ContractMetadata.sol +73 -0
- package/contracts/extension/upgradeable/DelayedReveal.sol +126 -0
- package/contracts/extension/upgradeable/Drop.sol +278 -0
- package/contracts/extension/upgradeable/ERC2771Context.sol +64 -0
- package/contracts/extension/upgradeable/ERC2771ContextConsumer.sol +32 -0
- package/contracts/extension/upgradeable/ERC2771ContextUpgradeable.sol +72 -0
- package/contracts/extension/upgradeable/Initializable.sol +110 -0
- package/contracts/extension/upgradeable/LazyMint.sol +77 -0
- package/contracts/extension/upgradeable/OperatorFilterToggle.sol +47 -0
- package/contracts/extension/upgradeable/OperatorFiltererUpgradeable.sol +58 -0
- package/contracts/extension/upgradeable/Ownable.sol +75 -0
- package/contracts/extension/upgradeable/Permissions.sol +197 -0
- package/contracts/extension/upgradeable/PermissionsEnumerable.sol +134 -0
- package/contracts/extension/upgradeable/PlatformFee.sol +131 -0
- package/contracts/extension/upgradeable/PrimarySale.sol +69 -0
- package/contracts/extension/upgradeable/ReentrancyGuard.sol +53 -0
- package/contracts/extension/upgradeable/Royalty.sol +144 -0
- package/contracts/extension/upgradeable/RoyaltyPayments.sol +121 -0
- package/contracts/extension/upgradeable/RulesEngine.sol +163 -0
- package/contracts/extension/upgradeable/SharedMetadataBatch.sol +98 -0
- package/contracts/extension/upgradeable/impl/ContractMetadataImpl.sol +34 -0
- package/contracts/extension/upgradeable/impl/MetaTx.sol +8 -0
- package/contracts/extension/upgradeable/impl/PermissionsEnumerableImpl.sol +28 -0
- package/contracts/extension/upgradeable/impl/PlatformFeeImpl.sol +34 -0
- package/contracts/extension/upgradeable/init/ContractMetadataInit.sol +17 -0
- package/contracts/extension/upgradeable/init/ERC2771ContextInit.sol +19 -0
- package/contracts/extension/upgradeable/init/ERC721AInit.sol +23 -0
- package/contracts/extension/upgradeable/init/ERC721AQueryableInit.sol +21 -0
- package/contracts/extension/upgradeable/init/OwnableInit.sol +18 -0
- package/contracts/extension/upgradeable/init/PermissionsEnumerableInit.sol +23 -0
- package/contracts/extension/upgradeable/init/PermissionsInit.sol +27 -0
- package/contracts/extension/upgradeable/init/PlatformFeeInit.sol +25 -0
- package/contracts/extension/upgradeable/init/PrimarySaleInit.sol +19 -0
- package/contracts/extension/upgradeable/init/ReentrancyGuardInit.sol +18 -0
- package/contracts/extension/upgradeable/init/RoyaltyInit.sol +22 -0
- package/contracts/external-deps/chainlink/LinkTokenInterface.sol +28 -0
- package/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol +83 -0
- package/contracts/external-deps/chainlink/VRFV2WrapperInterface.sol +35 -0
- package/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol +160 -0
- package/contracts/external-deps/openzeppelin/cryptography/EIP712ChainlessDomain.sol +100 -0
- package/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol +231 -0
- package/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol +54 -0
- package/contracts/external-deps/openzeppelin/metatx/ERC2771Context.sol +44 -0
- package/contracts/external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol +50 -0
- package/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol +67 -0
- package/contracts/external-deps/openzeppelin/proxy/Clones.sol +88 -0
- package/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol +32 -0
- package/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol +173 -0
- package/contracts/external-deps/openzeppelin/proxy/IERC1822Proxiable.sol +20 -0
- package/contracts/external-deps/openzeppelin/proxy/Proxy.sol +86 -0
- package/contracts/external-deps/openzeppelin/proxy/beacon/IBeacon.sol +16 -0
- package/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol +138 -0
- package/contracts/external-deps/openzeppelin/security/ReentrancyGuard.sol +32 -0
- package/contracts/external-deps/openzeppelin/security/ReentrancyGuardUpgradeable.sol +44 -0
- package/contracts/external-deps/openzeppelin/token/ERC1155/IERC1155Receiver.sol +58 -0
- package/contracts/external-deps/openzeppelin/token/ERC1155/utils/ERC1155Holder.sol +36 -0
- package/contracts/external-deps/openzeppelin/token/ERC1155/utils/ERC1155Receiver.sol +19 -0
- package/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol +359 -0
- package/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Permit.sol +117 -0
- package/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol +246 -0
- package/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol +78 -0
- package/contracts/external-deps/openzeppelin/token/ERC721/IERC721Receiver.sol +27 -0
- package/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol +23 -0
- package/contracts/external-deps/openzeppelin/utils/Base64.sol +92 -0
- package/contracts/external-deps/openzeppelin/utils/Context.sol +24 -0
- package/contracts/external-deps/openzeppelin/utils/Counters.sol +43 -0
- package/contracts/external-deps/openzeppelin/utils/Create2.sol +58 -0
- package/contracts/external-deps/openzeppelin/utils/ERC1155/ERC1155Holder.sol +36 -0
- package/contracts/external-deps/openzeppelin/utils/ERC1155/ERC1155Receiver.sol +19 -0
- package/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol +23 -0
- package/contracts/external-deps/openzeppelin/utils/EnumerableSet.sol +367 -0
- package/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol +217 -0
- package/contracts/external-deps/openzeppelin/utils/cryptography/EIP712.sol +104 -0
- package/contracts/external-deps/openzeppelin/utils/math/Math.sol +43 -0
- package/contracts/external-deps/openzeppelin/utils/math/SafeCast.sol +241 -0
- package/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol +215 -0
- package/contracts/external-deps/openzeppelin/utils/structs/EnumerableSet.sol +367 -0
- package/contracts/infra/ContractPublisher.sol +268 -0
- package/contracts/infra/TWFactory.sol +140 -0
- package/contracts/infra/TWFee.sol +162 -0
- package/contracts/infra/TWMinimalFactory.sol +47 -0
- package/contracts/infra/TWMultichainRegistry.sol +116 -0
- package/contracts/infra/TWProxy.sol +42 -0
- package/contracts/infra/TWRegistry.sol +70 -0
- package/contracts/infra/TWStatelessFactory.sol +47 -0
- package/contracts/infra/forwarder/Forwarder.sol +76 -0
- package/contracts/infra/forwarder/ForwarderChainlessDomain.sol +90 -0
- package/contracts/infra/forwarder/ForwarderConsumer.sol +25 -0
- package/contracts/infra/forwarder/ForwarderEOAOnly.sol +23 -0
- package/contracts/infra/interface/IContractDeployer.sol +54 -0
- package/contracts/infra/interface/IContractPublisher.sol +128 -0
- package/contracts/infra/interface/ITWFee.sol +6 -0
- package/contracts/infra/interface/ITWMultichainRegistry.sol +28 -0
- package/contracts/infra/interface/ITWRegistry.sol +24 -0
- package/contracts/infra/interface/IThirdwebContract.sol +19 -0
- package/contracts/infra/interface/IWETH.sol +10 -0
- package/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol +61 -0
- package/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol +120 -0
- package/contracts/infra/registry/registry-extension/TWMultichainRegistryStorage.sol +30 -0
- package/contracts/legacy-contracts/extension/BatchMintMetadata_V1.sol +89 -0
- package/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol +268 -0
- package/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol +252 -0
- package/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol +112 -0
- package/contracts/legacy-contracts/extension/LazyMint_V1.sol +52 -0
- package/contracts/legacy-contracts/extension/PlatformFee_V1.sol +69 -0
- package/contracts/legacy-contracts/extension/PrimarySale_V1.sol +53 -0
- package/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol +54 -0
- package/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol +58 -0
- package/contracts/legacy-contracts/extension/interface/IDropSinglePhase_V1.sol +54 -0
- package/contracts/legacy-contracts/extension/interface/IPlatformFee_V1.sol +21 -0
- package/contracts/legacy-contracts/extension/interface/IPrimarySale_V1.sol +21 -0
- package/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol +18 -0
- package/contracts/legacy-contracts/interface/drop/IDropClaimCondition_V2.sol +82 -0
- package/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol +96 -0
- package/contracts/legacy-contracts/interface/drop/IDropERC20_V2.sol +73 -0
- package/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol +98 -0
- package/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol +731 -0
- package/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol +521 -0
- package/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol +745 -0
- package/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol +360 -0
- package/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol +115 -0
- package/contracts/lib/Address.sol +244 -0
- package/contracts/lib/BitMaps.sol +52 -0
- package/contracts/lib/BytesLib.sol +18 -0
- package/contracts/lib/CurrencyTransferLib.sol +96 -0
- package/contracts/lib/FeeType.sol +10 -0
- package/contracts/lib/MerkleProof.sol +40 -0
- package/contracts/lib/NFTMetadataRenderer.sol +91 -0
- package/contracts/lib/StorageSlot.sol +54 -0
- package/contracts/lib/StringSet.sol +107 -0
- package/contracts/lib/Strings.sol +195 -0
- package/contracts/prebuilts/account/dynamic/DynamicAccount.sol +48 -0
- package/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol +61 -0
- package/contracts/prebuilts/account/interfaces/IAccount.sol +39 -0
- package/contracts/prebuilts/account/interfaces/IAccountCore.sol +11 -0
- package/contracts/prebuilts/account/interfaces/IAccountExecute.sol +17 -0
- package/contracts/prebuilts/account/interfaces/IAccountFactory.sol +16 -0
- package/contracts/prebuilts/account/interfaces/IAccountFactoryCore.sol +40 -0
- package/contracts/prebuilts/account/interfaces/IAggregator.sol +41 -0
- package/contracts/prebuilts/account/interfaces/IEntryPoint.sol +204 -0
- package/contracts/prebuilts/account/interfaces/INonceManager.sol +25 -0
- package/contracts/prebuilts/account/interfaces/IOracle.sol +10 -0
- package/contracts/prebuilts/account/interfaces/IPaymaster.sol +63 -0
- package/contracts/prebuilts/account/interfaces/IStakeManager.sol +94 -0
- package/contracts/prebuilts/account/interfaces/PackedUserOperation.sol +28 -0
- package/contracts/prebuilts/account/managed/ManagedAccount.sol +33 -0
- package/contracts/prebuilts/account/managed/ManagedAccountFactory.sol +68 -0
- package/contracts/prebuilts/account/non-upgradeable/Account.sol +169 -0
- package/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol +54 -0
- package/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol +252 -0
- package/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol +44 -0
- package/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551BytecodeLib.sol +20 -0
- package/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol +51 -0
- package/contracts/prebuilts/account/token-paymaster/BasePaymaster.sol +151 -0
- package/contracts/prebuilts/account/token-paymaster/TokenPaymaster.sol +212 -0
- package/contracts/prebuilts/account/utils/AccountCore.sol +245 -0
- package/contracts/prebuilts/account/utils/AccountCoreStorage.sol +21 -0
- package/contracts/prebuilts/account/utils/AccountExtension.sol +172 -0
- package/contracts/prebuilts/account/utils/AccountSeaportBulkSigSupport.sol +40 -0
- package/contracts/prebuilts/account/utils/BaseAccount.sol +106 -0
- package/contracts/prebuilts/account/utils/BaseAccountFactory.sol +168 -0
- package/contracts/prebuilts/account/utils/EntryPoint.sol +725 -0
- package/contracts/prebuilts/account/utils/Exec.sol +56 -0
- package/contracts/prebuilts/account/utils/Helpers.sol +88 -0
- package/contracts/prebuilts/account/utils/NonceManager.sol +39 -0
- package/contracts/prebuilts/account/utils/OracleHelper.sol +154 -0
- package/contracts/prebuilts/account/utils/SenderCreator.sol +28 -0
- package/contracts/prebuilts/account/utils/StakeManager.sol +126 -0
- package/contracts/prebuilts/account/utils/TokenCallbackHandler.sol +55 -0
- package/contracts/prebuilts/account/utils/UniswapHelper.sol +119 -0
- package/contracts/prebuilts/account/utils/UserOperationLib.sol +127 -0
- package/contracts/prebuilts/airdrop/Airdrop.sol +616 -0
- package/contracts/prebuilts/drop/DropERC1155.sol +388 -0
- package/contracts/prebuilts/drop/DropERC20.sol +262 -0
- package/contracts/prebuilts/drop/DropERC721.sol +397 -0
- package/contracts/prebuilts/evolving-nfts/EvolvingNFT.sol +101 -0
- package/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol +251 -0
- package/contracts/prebuilts/evolving-nfts/extension/RulesEngineExtension.sol +26 -0
- package/contracts/prebuilts/interface/ILoyaltyCard.sol +27 -0
- package/contracts/prebuilts/interface/ILoyaltyPoints.sol +24 -0
- package/contracts/prebuilts/interface/IMultiwrap.sol +49 -0
- package/contracts/prebuilts/interface/IPack.sol +69 -0
- package/contracts/prebuilts/interface/IPackVRFDirect.sol +85 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol +45 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC1155Claimable.sol +40 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC20.sol +46 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC20Claimable.sol +33 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol +42 -0
- package/contracts/prebuilts/interface/airdrop/IAirdropERC721Claimable.sol +33 -0
- package/contracts/prebuilts/interface/drop/IDropClaimCondition.sol +82 -0
- package/contracts/prebuilts/interface/drop/IDropERC1155.sol +92 -0
- package/contracts/prebuilts/interface/drop/IDropERC20.sol +68 -0
- package/contracts/prebuilts/interface/drop/IDropERC721.sol +94 -0
- package/contracts/prebuilts/interface/marketplace/IMarketplace.sol +329 -0
- package/contracts/prebuilts/interface/staking/IEditionStake.sol +45 -0
- package/contracts/prebuilts/interface/staking/INFTStake.sol +45 -0
- package/contracts/prebuilts/interface/staking/ITokenStake.sol +46 -0
- package/contracts/prebuilts/interface/token/ITokenERC1155.sol +84 -0
- package/contracts/prebuilts/interface/token/ITokenERC20.sol +68 -0
- package/contracts/prebuilts/interface/token/ITokenERC721.sol +77 -0
- package/contracts/prebuilts/loyalty/LoyaltyCard.sol +339 -0
- package/contracts/prebuilts/marketplace/IMarketplace.sol +512 -0
- package/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol +579 -0
- package/contracts/prebuilts/marketplace/direct-listings/DirectListingsStorage.sol +30 -0
- package/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol +546 -0
- package/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsStorage.sol +30 -0
- package/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol +184 -0
- package/contracts/prebuilts/marketplace/offers/OffersLogic.sol +358 -0
- package/contracts/prebuilts/marketplace/offers/OffersStorage.sol +28 -0
- package/contracts/prebuilts/marketplace-legacy/Marketplace.sol +907 -0
- package/contracts/prebuilts/multiwrap/Multiwrap.sol +264 -0
- package/contracts/prebuilts/open-edition/OpenEditionERC721.sol +268 -0
- package/contracts/prebuilts/open-edition/OpenEditionERC721FlatFee.sol +298 -0
- package/contracts/prebuilts/pack/Pack.sol +463 -0
- package/contracts/prebuilts/pack/PackVRFDirect.sol +516 -0
- package/contracts/prebuilts/signature-drop/SignatureDrop.sol +371 -0
- package/contracts/prebuilts/split/Split.sol +182 -0
- package/contracts/prebuilts/staking/EditionStake.sol +211 -0
- package/contracts/prebuilts/staking/NFTStake.sol +201 -0
- package/contracts/prebuilts/staking/TokenStake.sol +197 -0
- package/contracts/prebuilts/tiered-drop/TieredDrop.sol +607 -0
- package/contracts/prebuilts/token/TokenERC1155.sol +576 -0
- package/contracts/prebuilts/token/TokenERC20.sol +312 -0
- package/contracts/prebuilts/token/TokenERC721.sol +469 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol +154 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol +199 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol +194 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol +180 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol +143 -0
- package/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol +197 -0
- package/contracts/prebuilts/unaudited/burn-to-claim-drop/BurnToClaimDropERC721.sol +137 -0
- package/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol +362 -0
- package/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Storage.sol +21 -0
- package/contracts/prebuilts/unaudited/contract-builder/CoreRouter.sol +60 -0
- package/contracts/prebuilts/unaudited/contract-builder/extension/PermissionOverride.sol +52 -0
- package/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol +249 -0
- package/contracts/prebuilts/vote/VoteERC20.sol +167 -0
- package/js/DropERC1155.d.ts +1198 -0
- package/js/DropERC1155.js +2 -0
- package/js/DropERC1155.js.map +1 -0
- package/js/DropERC721.d.ts +1247 -0
- package/js/DropERC721.js +2 -0
- package/js/DropERC721.js.map +1 -0
- package/js/OpenEditionERC721FlatFee.d.ts +1207 -0
- package/js/OpenEditionERC721FlatFee.js +2 -0
- package/js/OpenEditionERC721FlatFee.js.map +1 -0
- package/js/common.d.ts +22 -0
- package/js/common.js +2 -0
- package/js/common.js.map +1 -0
- package/js/factories/DropERC1155__factory.d.ts +1751 -0
- package/js/factories/DropERC1155__factory.js +2279 -0
- package/js/factories/DropERC1155__factory.js.map +1 -0
- package/js/factories/DropERC721__factory.d.ts +1826 -0
- package/js/factories/DropERC721__factory.js +2380 -0
- package/js/factories/DropERC721__factory.js.map +1 -0
- package/js/factories/OpenEditionERC721FlatFee__factory.d.ts +1707 -0
- package/js/factories/OpenEditionERC721FlatFee__factory.js +2219 -0
- package/js/factories/OpenEditionERC721FlatFee__factory.js.map +1 -0
- package/js/factories/index.d.ts +1 -0
- package/js/factories/index.js +5 -0
- package/js/factories/index.js.map +1 -0
- package/js/index.d.ts +3 -0
- package/js/index.js +3 -0
- package/js/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Thirdweb's `Airdrop` contracts provide a lightweight and easy to use mechanism
|
|
6
|
+
* to drop tokens.
|
|
7
|
+
*
|
|
8
|
+
* `AirdropERC20Claimable` contract is an airdrop contract for ERC20 tokens. It follows a
|
|
9
|
+
* pull mechanism for transfer of tokens, where allowlisted recipients can claim tokens from
|
|
10
|
+
* the contract.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
interface IAirdropERC20Claimable {
|
|
14
|
+
/// @dev Emitted when tokens are claimed.
|
|
15
|
+
event TokensClaimed(address indexed claimer, address indexed receiver, uint256 quantityClaimed);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @notice Lets an account claim a given quantity of NFTs.
|
|
19
|
+
*
|
|
20
|
+
* @param receiver The receiver of the NFTs to claim.
|
|
21
|
+
* @param quantity The quantity of NFTs to claim.
|
|
22
|
+
* @param proofs The proof of the claimer's inclusion in the merkle root allowlist
|
|
23
|
+
* of the claim conditions that apply.
|
|
24
|
+
* @param proofMaxQuantityForWallet The maximum number of NFTs an address included in an
|
|
25
|
+
* allowlist can claim.
|
|
26
|
+
*/
|
|
27
|
+
function claim(
|
|
28
|
+
address receiver,
|
|
29
|
+
uint256 quantity,
|
|
30
|
+
bytes32[] calldata proofs,
|
|
31
|
+
uint256 proofMaxQuantityForWallet
|
|
32
|
+
) external;
|
|
33
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Thirdweb's `Airdrop` contracts provide a lightweight and easy to use mechanism
|
|
6
|
+
* to drop tokens.
|
|
7
|
+
*
|
|
8
|
+
* `AirdropERC721` contract is an airdrop contract for ERC721 tokens. It follows a
|
|
9
|
+
* push mechanism for transfer of tokens to intended recipients.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
interface IAirdropERC721 {
|
|
13
|
+
/// @notice Emitted when an airdrop fails for a recipient address.
|
|
14
|
+
event AirdropFailed(
|
|
15
|
+
address indexed tokenAddress,
|
|
16
|
+
address indexed tokenOwner,
|
|
17
|
+
address indexed recipient,
|
|
18
|
+
uint256 tokenId
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @notice Details of amount and recipient for airdropped token.
|
|
23
|
+
*
|
|
24
|
+
* @param recipient The recipient of the tokens.
|
|
25
|
+
* @param tokenId ID of the ERC721 token being airdropped.
|
|
26
|
+
*/
|
|
27
|
+
struct AirdropContent {
|
|
28
|
+
address recipient;
|
|
29
|
+
uint256 tokenId;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @notice Lets contract-owner send ERC721 tokens to a list of addresses.
|
|
34
|
+
* @dev The token-owner should approve target tokens to Airdrop contract,
|
|
35
|
+
* which acts as operator for the tokens.
|
|
36
|
+
*
|
|
37
|
+
* @param tokenAddress The contract address of the tokens to transfer.
|
|
38
|
+
* @param tokenOwner The owner of the tokens to transfer.
|
|
39
|
+
* @param contents List containing recipient, tokenId to airdrop.
|
|
40
|
+
*/
|
|
41
|
+
function airdropERC721(address tokenAddress, address tokenOwner, AirdropContent[] calldata contents) external;
|
|
42
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Thirdweb's `Airdrop` contracts provide a lightweight and easy to use mechanism
|
|
6
|
+
* to drop tokens.
|
|
7
|
+
*
|
|
8
|
+
* `AirdropERC721Claimable` contract is an airdrop contract for ERC721 tokens. It follows a
|
|
9
|
+
* pull mechanism for transfer of tokens, where allowlisted recipients can claim tokens from
|
|
10
|
+
* the contract.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
interface IAirdropERC721Claimable {
|
|
14
|
+
/// @dev Emitted when tokens are claimed.
|
|
15
|
+
event TokensClaimed(address indexed claimer, address indexed receiver, uint256 quantityClaimed);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @notice Lets an account claim a given quantity of NFTs.
|
|
19
|
+
*
|
|
20
|
+
* @param receiver The receiver of the NFTs to claim.
|
|
21
|
+
* @param quantity The quantity of NFTs to claim.
|
|
22
|
+
* @param proofs The proof of the claimer's inclusion in the merkle root allowlist
|
|
23
|
+
* of the claim conditions that apply.
|
|
24
|
+
* @param proofMaxQuantityForWallet The maximum number of NFTs an address included in an
|
|
25
|
+
* allowlist can claim.
|
|
26
|
+
*/
|
|
27
|
+
function claim(
|
|
28
|
+
address receiver,
|
|
29
|
+
uint256 quantity,
|
|
30
|
+
bytes32[] calldata proofs,
|
|
31
|
+
uint256 proofMaxQuantityForWallet
|
|
32
|
+
) external;
|
|
33
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts-upgradeable/utils/structs/BitMapsUpgradeable.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Thirdweb's 'Drop' contracts are distribution mechanisms for tokens.
|
|
8
|
+
*
|
|
9
|
+
* A contract admin (i.e. a holder of `DEFAULT_ADMIN_ROLE`) can set a series of claim conditions,
|
|
10
|
+
* ordered by their respective `startTimestamp`. A claim condition defines criteria under which
|
|
11
|
+
* accounts can mint tokens. Claim conditions can be overwritten or added to by the contract admin.
|
|
12
|
+
* At any moment, there is only one active claim condition.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
interface IDropClaimCondition {
|
|
16
|
+
/**
|
|
17
|
+
* @notice The criteria that make up a claim condition.
|
|
18
|
+
*
|
|
19
|
+
* @param startTimestamp The unix timestamp after which the claim condition applies.
|
|
20
|
+
* The same claim condition applies until the `startTimestamp`
|
|
21
|
+
* of the next claim condition.
|
|
22
|
+
*
|
|
23
|
+
* @param maxClaimableSupply The maximum total number of tokens that can be claimed under
|
|
24
|
+
* the claim condition.
|
|
25
|
+
*
|
|
26
|
+
* @param supplyClaimed At any given point, the number of tokens that have been claimed
|
|
27
|
+
* under the claim condition.
|
|
28
|
+
*
|
|
29
|
+
* @param quantityLimitPerWallet The maximum number of tokens that can be claimed by a wallet.
|
|
30
|
+
*
|
|
31
|
+
* @param waitTimeInSecondsBetweenClaims The least number of seconds an account must wait after claiming
|
|
32
|
+
* tokens, to be able to claim tokens again.
|
|
33
|
+
*
|
|
34
|
+
* @param merkleRoot The allowlist of addresses that can claim tokens under the claim
|
|
35
|
+
* condition.
|
|
36
|
+
*
|
|
37
|
+
* @param pricePerToken The price required to pay per token claimed.
|
|
38
|
+
*
|
|
39
|
+
* @param currency The currency in which the `pricePerToken` must be paid.
|
|
40
|
+
*/
|
|
41
|
+
struct ClaimCondition {
|
|
42
|
+
uint256 startTimestamp;
|
|
43
|
+
uint256 maxClaimableSupply;
|
|
44
|
+
uint256 supplyClaimed;
|
|
45
|
+
uint256 quantityLimitPerWallet;
|
|
46
|
+
uint256 waitTimeInSecondsBetweenClaims;
|
|
47
|
+
bytes32 merkleRoot;
|
|
48
|
+
uint256 pricePerToken;
|
|
49
|
+
address currency;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @notice The set of all claim conditions, at any given moment.
|
|
54
|
+
* Claim Phase ID = [currentStartId, currentStartId + length - 1];
|
|
55
|
+
*
|
|
56
|
+
* @param currentStartId The uid for the first claim condition amongst the current set of
|
|
57
|
+
* claim conditions. The uid for each next claim condition is one
|
|
58
|
+
* more than the previous claim condition's uid.
|
|
59
|
+
*
|
|
60
|
+
* @param count The total number of phases / claim conditions in the list
|
|
61
|
+
* of claim conditions.
|
|
62
|
+
*
|
|
63
|
+
* @param phases The claim conditions at a given uid. Claim conditions
|
|
64
|
+
* are ordered in an ascending order by their `startTimestamp`.
|
|
65
|
+
*
|
|
66
|
+
* @param limitLastClaimTimestamp Map from an account and uid for a claim condition, to the last timestamp
|
|
67
|
+
* at which the account claimed tokens under that claim condition.
|
|
68
|
+
*
|
|
69
|
+
* @param limitMerkleProofClaim Map from a claim condition uid to whether an address in an allowlist
|
|
70
|
+
* has already claimed tokens i.e. used their place in the allowlist.
|
|
71
|
+
*
|
|
72
|
+
* @param supplyClaimedByWallet Map from a claim condition uid and account to supply claimed by account.
|
|
73
|
+
*/
|
|
74
|
+
struct ClaimConditionList {
|
|
75
|
+
uint256 currentStartId;
|
|
76
|
+
uint256 count;
|
|
77
|
+
mapping(uint256 => ClaimCondition) phases;
|
|
78
|
+
mapping(uint256 => mapping(address => uint256)) limitLastClaimTimestamp;
|
|
79
|
+
mapping(uint256 => BitMapsUpgradeable.BitMap) limitMerkleProofClaim;
|
|
80
|
+
mapping(uint256 => mapping(address => uint256)) supplyClaimedByWallet;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol";
|
|
5
|
+
import "./IDropClaimCondition.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Thirdweb's 'Drop' contracts are distribution mechanisms for tokens. The
|
|
9
|
+
* `DropERC721` contract is a distribution mechanism for ERC721 tokens.
|
|
10
|
+
*
|
|
11
|
+
* A minter wallet (i.e. holder of `MINTER_ROLE`) can (lazy)mint 'n' tokens
|
|
12
|
+
* at once by providing a single base URI for all tokens being lazy minted.
|
|
13
|
+
* The URI for each of the 'n' tokens lazy minted is the provided base URI +
|
|
14
|
+
* `{tokenId}` of the respective token. (e.g. "ipsf://Qmece.../1").
|
|
15
|
+
*
|
|
16
|
+
* A minter can choose to lazy mint 'delayed-reveal' tokens. More on 'delayed-reveal'
|
|
17
|
+
* tokens in [this article](https://blog.thirdweb.com/delayed-reveal-nfts).
|
|
18
|
+
*
|
|
19
|
+
* A contract admin (i.e. holder of `DEFAULT_ADMIN_ROLE`) can create claim conditions
|
|
20
|
+
* with non-overlapping time windows, and accounts can claim the tokens according to
|
|
21
|
+
* restrictions defined in the claim condition that is active at the time of the transaction.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
interface IDropERC1155 is IERC1155Upgradeable, IDropClaimCondition {
|
|
25
|
+
struct AllowlistProof {
|
|
26
|
+
bytes32[] proof;
|
|
27
|
+
uint256 maxQuantityInAllowlist;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// @dev Emitted when tokens are claimed.
|
|
31
|
+
event TokensClaimed(
|
|
32
|
+
uint256 indexed claimConditionIndex,
|
|
33
|
+
uint256 indexed tokenId,
|
|
34
|
+
address indexed claimer,
|
|
35
|
+
address receiver,
|
|
36
|
+
uint256 quantityClaimed
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
/// @dev Emitted when tokens are lazy minted.
|
|
40
|
+
event TokensLazyMinted(uint256 startTokenId, uint256 endTokenId, string baseURI);
|
|
41
|
+
|
|
42
|
+
/// @dev Emitted when new claim conditions are set for a token.
|
|
43
|
+
event ClaimConditionsUpdated(uint256 indexed tokenId, ClaimCondition[] claimConditions);
|
|
44
|
+
|
|
45
|
+
/// @dev Emitted when the global max supply of a token is updated.
|
|
46
|
+
event MaxTotalSupplyUpdated(uint256 tokenId, uint256 maxTotalSupply);
|
|
47
|
+
|
|
48
|
+
/// @dev Emitted when the sale recipient for a particular tokenId is updated.
|
|
49
|
+
event SaleRecipientForTokenUpdated(uint256 indexed tokenId, address saleRecipient);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @notice Lets an account with `MINTER_ROLE` lazy mint 'n' NFTs.
|
|
53
|
+
* The URIs for each token is the provided `_baseURIForTokens` + `{tokenId}`.
|
|
54
|
+
*
|
|
55
|
+
* @param amount The amount of NFTs to lazy mint.
|
|
56
|
+
* @param baseURIForTokens The URI for the NFTs to lazy mint.
|
|
57
|
+
*/
|
|
58
|
+
function lazyMint(uint256 amount, string calldata baseURIForTokens) external;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @notice Lets an account claim a given quantity of NFTs.
|
|
62
|
+
*
|
|
63
|
+
* @param receiver The receiver of the NFT to claim.
|
|
64
|
+
* @param tokenId The tokenId of the NFT to claim.
|
|
65
|
+
* @param quantity The quantity of the NFT to claim.
|
|
66
|
+
* @param currency The currency in which to pay for the claim.
|
|
67
|
+
* @param pricePerToken The price per token to pay for the claim.
|
|
68
|
+
* @param allowlistProof The proof of the claimer's inclusion in the merkle root allowlist
|
|
69
|
+
* of the claim conditions that apply.
|
|
70
|
+
* @param data Arbitrary bytes data that can be leveraged in the implementation of this interface.
|
|
71
|
+
*/
|
|
72
|
+
function claim(
|
|
73
|
+
address receiver,
|
|
74
|
+
uint256 tokenId,
|
|
75
|
+
uint256 quantity,
|
|
76
|
+
address currency,
|
|
77
|
+
uint256 pricePerToken,
|
|
78
|
+
AllowlistProof calldata allowlistProof,
|
|
79
|
+
bytes memory data
|
|
80
|
+
) external payable;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @notice Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions.
|
|
84
|
+
*
|
|
85
|
+
* @param tokenId The token ID for which to set mint conditions.
|
|
86
|
+
* @param phases Claim conditions in ascending order by `startTimestamp`.
|
|
87
|
+
* @param resetClaimEligibility Whether to reset `limitLastClaimTimestamp` and
|
|
88
|
+
* `limitMerkleProofClaim` values when setting new
|
|
89
|
+
* claim conditions.
|
|
90
|
+
*/
|
|
91
|
+
function setClaimConditions(uint256 tokenId, ClaimCondition[] calldata phases, bool resetClaimEligibility) external;
|
|
92
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
|
|
5
|
+
import "./IDropClaimCondition.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Thirdweb's 'Drop' contracts are distribution mechanisms for tokens. The
|
|
9
|
+
* `DropERC20` contract is a distribution mechanism for ERC20 tokens.
|
|
10
|
+
*
|
|
11
|
+
* A contract admin (i.e. holder of `DEFAULT_ADMIN_ROLE`) can create claim conditions
|
|
12
|
+
* with non-overlapping time windows, and accounts can claim the tokens according to
|
|
13
|
+
* restrictions defined in the claim condition that is active at the time of the transaction.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
interface IDropERC20 is IERC20Upgradeable, IDropClaimCondition {
|
|
17
|
+
struct AllowlistProof {
|
|
18
|
+
bytes32[] proof;
|
|
19
|
+
uint256 maxQuantityInAllowlist;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// @dev Emitted when tokens are claimed.
|
|
23
|
+
event TokensClaimed(
|
|
24
|
+
uint256 indexed claimConditionIndex,
|
|
25
|
+
address indexed claimer,
|
|
26
|
+
address indexed receiver,
|
|
27
|
+
uint256 quantityClaimed
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
/// @dev Emitted when new claim conditions are set.
|
|
31
|
+
event ClaimConditionsUpdated(ClaimCondition[] claimConditions);
|
|
32
|
+
|
|
33
|
+
/// @dev Emitted when the global max supply of tokens is updated.
|
|
34
|
+
event MaxTotalSupplyUpdated(uint256 maxTotalSupply);
|
|
35
|
+
|
|
36
|
+
/// @dev Emitted when the contract URI is updated.
|
|
37
|
+
event ContractURIUpdated(string prevURI, string newURI);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @notice Lets an account claim a given quantity of NFTs.
|
|
41
|
+
*
|
|
42
|
+
* @param receiver The receiver of the tokens to claim.
|
|
43
|
+
* @param quantity The quantity of tokens to claim.
|
|
44
|
+
* @param currency The currency in which to pay for the claim.
|
|
45
|
+
* @param pricePerToken The price per token to pay for the claim.
|
|
46
|
+
* @param allowlistProof The proof of the claimer's inclusion in the merkle root allowlist
|
|
47
|
+
* of the claim conditions that apply.
|
|
48
|
+
* @param data Arbitrary bytes data that can be leveraged in the implementation of this interface.
|
|
49
|
+
*/
|
|
50
|
+
function claim(
|
|
51
|
+
address receiver,
|
|
52
|
+
uint256 quantity,
|
|
53
|
+
address currency,
|
|
54
|
+
uint256 pricePerToken,
|
|
55
|
+
AllowlistProof calldata allowlistProof,
|
|
56
|
+
bytes memory data
|
|
57
|
+
) external payable;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @notice Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions.
|
|
61
|
+
*
|
|
62
|
+
* @param phases Claim conditions in ascending order by `startTimestamp`.
|
|
63
|
+
* @param resetClaimEligibility Whether to reset `limitLastClaimTimestamp` and
|
|
64
|
+
* `limitMerkleProofClaim` values when setting new
|
|
65
|
+
* claim conditions.
|
|
66
|
+
*/
|
|
67
|
+
function setClaimConditions(ClaimCondition[] calldata phases, bool resetClaimEligibility) external;
|
|
68
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.11;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol";
|
|
5
|
+
import "./IDropClaimCondition.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Thirdweb's 'Drop' contracts are distribution mechanisms for tokens. The
|
|
9
|
+
* `DropERC721` contract is a distribution mechanism for ERC721 tokens.
|
|
10
|
+
*
|
|
11
|
+
* A minter wallet (i.e. holder of `MINTER_ROLE`) can (lazy)mint 'n' tokens
|
|
12
|
+
* at once by providing a single base URI for all tokens being lazy minted.
|
|
13
|
+
* The URI for each of the 'n' tokens lazy minted is the provided base URI +
|
|
14
|
+
* `{tokenId}` of the respective token. (e.g. "ipsf://Qmece.../1").
|
|
15
|
+
*
|
|
16
|
+
* A minter can choose to lazy mint 'delayed-reveal' tokens. More on 'delayed-reveal'
|
|
17
|
+
* tokens in [this article](https://blog.thirdweb.com/delayed-reveal-nfts).
|
|
18
|
+
*
|
|
19
|
+
* A contract admin (i.e. holder of `DEFAULT_ADMIN_ROLE`) can create claim conditions
|
|
20
|
+
* with non-overlapping time windows, and accounts can claim the tokens according to
|
|
21
|
+
* restrictions defined in the claim condition that is active at the time of the transaction.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
interface IDropERC721 is IERC721Upgradeable, IDropClaimCondition {
|
|
25
|
+
struct AllowlistProof {
|
|
26
|
+
bytes32[] proof;
|
|
27
|
+
uint256 maxQuantityInAllowlist;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// @dev Emitted when tokens are claimed.
|
|
31
|
+
event TokensClaimed(
|
|
32
|
+
uint256 indexed claimConditionIndex,
|
|
33
|
+
address indexed claimer,
|
|
34
|
+
address indexed receiver,
|
|
35
|
+
uint256 startTokenId,
|
|
36
|
+
uint256 quantityClaimed
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
/// @dev Emitted when tokens are lazy minted.
|
|
40
|
+
event TokensLazyMinted(uint256 startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI);
|
|
41
|
+
|
|
42
|
+
/// @dev Emitted when the URI for a batch of 'delayed-reveal' NFTs is revealed.
|
|
43
|
+
event NFTRevealed(uint256 endTokenId, string revealedURI);
|
|
44
|
+
|
|
45
|
+
/// @dev Emitted when new claim conditions are set.
|
|
46
|
+
event ClaimConditionsUpdated(ClaimCondition[] claimConditions);
|
|
47
|
+
|
|
48
|
+
/// @dev Emitted when the global max supply of tokens is updated.
|
|
49
|
+
event MaxTotalSupplyUpdated(uint256 maxTotalSupply);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @notice Lets an account with `MINTER_ROLE` lazy mint 'n' NFTs.
|
|
53
|
+
* The URIs for each token is the provided `_baseURIForTokens` + `{tokenId}`.
|
|
54
|
+
*
|
|
55
|
+
* @param amount The amount of NFTs to lazy mint.
|
|
56
|
+
* @param baseURIForTokens The URI for the NFTs to lazy mint. If lazy minting
|
|
57
|
+
* 'delayed-reveal' NFTs, the is a URI for NFTs in the
|
|
58
|
+
* un-revealed state.
|
|
59
|
+
* @param encryptedBaseURI If lazy minting 'delayed-reveal' NFTs, this is the
|
|
60
|
+
* result of encrypting the URI of the NFTs in the revealed
|
|
61
|
+
* state.
|
|
62
|
+
*/
|
|
63
|
+
function lazyMint(uint256 amount, string calldata baseURIForTokens, bytes calldata encryptedBaseURI) external;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @notice Lets an account claim a given quantity of NFTs.
|
|
67
|
+
*
|
|
68
|
+
* @param receiver The receiver of the NFTs to claim.
|
|
69
|
+
* @param quantity The quantity of NFTs to claim.
|
|
70
|
+
* @param currency The currency in which to pay for the claim.
|
|
71
|
+
* @param pricePerToken The price per token to pay for the claim.
|
|
72
|
+
* @param allowlistProof The proof of the claimer's inclusion in the merkle root allowlist
|
|
73
|
+
* of the claim conditions that apply.
|
|
74
|
+
* @param data Arbitrary bytes data that can be leveraged in the implementation of this interface.
|
|
75
|
+
*/
|
|
76
|
+
function claim(
|
|
77
|
+
address receiver,
|
|
78
|
+
uint256 quantity,
|
|
79
|
+
address currency,
|
|
80
|
+
uint256 pricePerToken,
|
|
81
|
+
AllowlistProof calldata allowlistProof,
|
|
82
|
+
bytes memory data
|
|
83
|
+
) external payable;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @notice Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions.
|
|
87
|
+
*
|
|
88
|
+
* @param phases Claim conditions in ascending order by `startTimestamp`.
|
|
89
|
+
* @param resetClaimEligibility Whether to reset `limitLastClaimTimestamp` and
|
|
90
|
+
* `limitMerkleProofClaim` values when setting new
|
|
91
|
+
* claim conditions.
|
|
92
|
+
*/
|
|
93
|
+
function setClaimConditions(ClaimCondition[] calldata phases, bool resetClaimEligibility) external;
|
|
94
|
+
}
|