@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.
Files changed (439) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +144 -0
  3. package/contracts/base/ERC1155Base.sol +282 -0
  4. package/contracts/base/ERC1155DelayedReveal.sol +117 -0
  5. package/contracts/base/ERC1155Drop.sol +368 -0
  6. package/contracts/base/ERC1155LazyMint.sol +286 -0
  7. package/contracts/base/ERC1155SignatureMint.sol +132 -0
  8. package/contracts/base/ERC20Base.sol +111 -0
  9. package/contracts/base/ERC20Drop.sol +157 -0
  10. package/contracts/base/ERC20DropVote.sol +135 -0
  11. package/contracts/base/ERC20SignatureMint.sol +100 -0
  12. package/contracts/base/ERC20SignatureMintVote.sol +107 -0
  13. package/contracts/base/ERC20Vote.sol +111 -0
  14. package/contracts/base/ERC721Base.sol +210 -0
  15. package/contracts/base/ERC721DelayedReveal.sol +118 -0
  16. package/contracts/base/ERC721Drop.sol +312 -0
  17. package/contracts/base/ERC721LazyMint.sol +219 -0
  18. package/contracts/base/ERC721Multiwrap.sol +262 -0
  19. package/contracts/base/ERC721SignatureMint.sol +120 -0
  20. package/contracts/base/Staking1155Base.sol +189 -0
  21. package/contracts/base/Staking20Base.sol +179 -0
  22. package/contracts/base/Staking721Base.sol +186 -0
  23. package/contracts/eip/ERC1155.sol +294 -0
  24. package/contracts/eip/ERC1271.sol +18 -0
  25. package/contracts/eip/ERC165.sol +29 -0
  26. package/contracts/eip/ERC721A.sol +580 -0
  27. package/contracts/eip/ERC721AUpgradeable.sol +625 -0
  28. package/contracts/eip/ERC721AVirtualApprove.sol +582 -0
  29. package/contracts/eip/ERC721AVirtualApproveUpgradeable.sol +598 -0
  30. package/contracts/eip/interface/IERC1155.sol +132 -0
  31. package/contracts/eip/interface/IERC1155Enumerable.sol +11 -0
  32. package/contracts/eip/interface/IERC1155Metadata.sol +15 -0
  33. package/contracts/eip/interface/IERC1155Receiver.sol +58 -0
  34. package/contracts/eip/interface/IERC1155Supply.sol +11 -0
  35. package/contracts/eip/interface/IERC165.sol +25 -0
  36. package/contracts/eip/interface/IERC20.sol +24 -0
  37. package/contracts/eip/interface/IERC20Metadata.sol +14 -0
  38. package/contracts/eip/interface/IERC20Permit.sol +60 -0
  39. package/contracts/eip/interface/IERC2981.sol +23 -0
  40. package/contracts/eip/interface/IERC4906.sol +17 -0
  41. package/contracts/eip/interface/IERC721.sol +128 -0
  42. package/contracts/eip/interface/IERC721A.sol +109 -0
  43. package/contracts/eip/interface/IERC721Enumerable.sol +24 -0
  44. package/contracts/eip/interface/IERC721Metadata.sol +20 -0
  45. package/contracts/eip/interface/IERC721Receiver.sol +27 -0
  46. package/contracts/eip/interface/IERC721Supply.sol +13 -0
  47. package/contracts/eip/queryable/ERC721AQueryable.sol +168 -0
  48. package/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol +193 -0
  49. package/contracts/eip/queryable/ERC721AStorage.sol +57 -0
  50. package/contracts/eip/queryable/ERC721AUpgradeable.sol +1075 -0
  51. package/contracts/eip/queryable/ERC721A__Initializable.sol +75 -0
  52. package/contracts/eip/queryable/ERC721A__InitializableStorage.sol +29 -0
  53. package/contracts/eip/queryable/IERC721AQueryable.sol +69 -0
  54. package/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol +69 -0
  55. package/contracts/eip/queryable/IERC721AUpgradeable.sol +269 -0
  56. package/contracts/extension/AppURI.sol +37 -0
  57. package/contracts/extension/BatchMintMetadata.sol +143 -0
  58. package/contracts/extension/BurnToClaim.sol +60 -0
  59. package/contracts/extension/ContractMetadata.sol +48 -0
  60. package/contracts/extension/DelayedReveal.sol +111 -0
  61. package/contracts/extension/Drop.sol +284 -0
  62. package/contracts/extension/Drop1155.sol +300 -0
  63. package/contracts/extension/DropSinglePhase.sol +237 -0
  64. package/contracts/extension/DropSinglePhase1155.sol +215 -0
  65. package/contracts/extension/Initializable.sol +136 -0
  66. package/contracts/extension/LazyMint.sol +56 -0
  67. package/contracts/extension/LazyMintWithTier.sol +112 -0
  68. package/contracts/extension/Multicall.sol +40 -0
  69. package/contracts/extension/NFTMetadata.sol +58 -0
  70. package/contracts/extension/OperatorFilterToggle.sol +22 -0
  71. package/contracts/extension/OperatorFilterer.sol +73 -0
  72. package/contracts/extension/OperatorFiltererUpgradeable.sol +69 -0
  73. package/contracts/extension/Ownable.sol +58 -0
  74. package/contracts/extension/Permissions.sol +159 -0
  75. package/contracts/extension/PermissionsEnumerable.sol +111 -0
  76. package/contracts/extension/PlatformFee.sol +117 -0
  77. package/contracts/extension/PrimarySale.sol +57 -0
  78. package/contracts/extension/Proxy.sol +84 -0
  79. package/contracts/extension/ProxyForUpgradeable.sol +32 -0
  80. package/contracts/extension/Royalty.sol +134 -0
  81. package/contracts/extension/SeaportEIP1271.sol +88 -0
  82. package/contracts/extension/SeaportOrderParser.sol +550 -0
  83. package/contracts/extension/SharedMetadata.sol +63 -0
  84. package/contracts/extension/SignatureAction.sol +67 -0
  85. package/contracts/extension/SignatureActionUpgradeable.sol +71 -0
  86. package/contracts/extension/SignatureMintERC1155.sol +78 -0
  87. package/contracts/extension/SignatureMintERC1155Upgradeable.sol +84 -0
  88. package/contracts/extension/SignatureMintERC20.sol +70 -0
  89. package/contracts/extension/SignatureMintERC20Upgradeable.sol +77 -0
  90. package/contracts/extension/SignatureMintERC721.sol +96 -0
  91. package/contracts/extension/SignatureMintERC721Upgradeable.sol +102 -0
  92. package/contracts/extension/SoulboundERC721A.sol +51 -0
  93. package/contracts/extension/Staking1155.sol +516 -0
  94. package/contracts/extension/Staking1155Upgradeable.sol +516 -0
  95. package/contracts/extension/Staking20.sol +376 -0
  96. package/contracts/extension/Staking20Upgradeable.sol +383 -0
  97. package/contracts/extension/Staking721.sol +362 -0
  98. package/contracts/extension/Staking721Upgradeable.sol +364 -0
  99. package/contracts/extension/TokenBundle.sol +130 -0
  100. package/contracts/extension/TokenStore.sol +97 -0
  101. package/contracts/extension/Upgradeable.sol +95 -0
  102. package/contracts/extension/interface/IAccountPermissions.sol +114 -0
  103. package/contracts/extension/interface/IAppURI.sol +24 -0
  104. package/contracts/extension/interface/IBurnToClaim.sol +43 -0
  105. package/contracts/extension/interface/IBurnableERC1155.sol +16 -0
  106. package/contracts/extension/interface/IBurnableERC20.sol +26 -0
  107. package/contracts/extension/interface/IBurnableERC721.sol +15 -0
  108. package/contracts/extension/interface/IClaimCondition.sol +48 -0
  109. package/contracts/extension/interface/IClaimConditionMultiPhase.sol +39 -0
  110. package/contracts/extension/interface/IClaimConditionsSinglePhase.sol +31 -0
  111. package/contracts/extension/interface/IClaimableERC1155.sol +39 -0
  112. package/contracts/extension/interface/IClaimableERC721.sol +37 -0
  113. package/contracts/extension/interface/IContractFactory.sol +20 -0
  114. package/contracts/extension/interface/IContractMetadata.sol +25 -0
  115. package/contracts/extension/interface/IDelayedReveal.sol +33 -0
  116. package/contracts/extension/interface/IDelayedRevealDeprecated.sol +38 -0
  117. package/contracts/extension/interface/IDrop.sol +72 -0
  118. package/contracts/extension/interface/IDrop1155.sol +75 -0
  119. package/contracts/extension/interface/IDropSinglePhase.sol +70 -0
  120. package/contracts/extension/interface/IDropSinglePhase1155.sol +74 -0
  121. package/contracts/extension/interface/IERC2771Context.sol +6 -0
  122. package/contracts/extension/interface/ILazyMint.sol +33 -0
  123. package/contracts/extension/interface/ILazyMintWithTier.sol +43 -0
  124. package/contracts/extension/interface/IMintableERC1155.sol +24 -0
  125. package/contracts/extension/interface/IMintableERC20.sol +20 -0
  126. package/contracts/extension/interface/IMintableERC721.sol +19 -0
  127. package/contracts/extension/interface/IMulticall.sol +16 -0
  128. package/contracts/extension/interface/INFTMetadata.sol +17 -0
  129. package/contracts/extension/interface/IOperatorFilterRegistry.sol +54 -0
  130. package/contracts/extension/interface/IOperatorFilterToggle.sol +12 -0
  131. package/contracts/extension/interface/IOwnable.sol +21 -0
  132. package/contracts/extension/interface/IPermissions.sol +88 -0
  133. package/contracts/extension/interface/IPermissionsEnumerable.sol +31 -0
  134. package/contracts/extension/interface/IPlatformFee.sol +33 -0
  135. package/contracts/extension/interface/IPrimarySale.sol +21 -0
  136. package/contracts/extension/interface/IRoyalty.sol +39 -0
  137. package/contracts/extension/interface/IRoyaltyEngineV1.sol +42 -0
  138. package/contracts/extension/interface/IRoyaltyPayments.sol +37 -0
  139. package/contracts/extension/interface/IRulesEngine.sol +58 -0
  140. package/contracts/extension/interface/ISharedMetadata.sol +30 -0
  141. package/contracts/extension/interface/ISharedMetadataBatch.sol +57 -0
  142. package/contracts/extension/interface/ISignatureAction.sol +44 -0
  143. package/contracts/extension/interface/ISignatureMintERC1155.sol +77 -0
  144. package/contracts/extension/interface/ISignatureMintERC20.sol +64 -0
  145. package/contracts/extension/interface/ISignatureMintERC721.sol +75 -0
  146. package/contracts/extension/interface/IStaking1155.sol +110 -0
  147. package/contracts/extension/interface/IStaking20.sol +97 -0
  148. package/contracts/extension/interface/IStaking721.sol +83 -0
  149. package/contracts/extension/interface/ITokenBundle.sol +52 -0
  150. package/contracts/extension/interface/plugin/IContext.sol +10 -0
  151. package/contracts/extension/interface/plugin/IPluginMap.sol +31 -0
  152. package/contracts/extension/interface/plugin/IRouter.sol +30 -0
  153. package/contracts/extension/plugin/ContractMetadataLogic.sol +52 -0
  154. package/contracts/extension/plugin/ContractMetadataStorage.sol +25 -0
  155. package/contracts/extension/plugin/ERC2771ContextConsumer.sol +34 -0
  156. package/contracts/extension/plugin/ERC2771ContextLogic.sol +43 -0
  157. package/contracts/extension/plugin/ERC2771ContextStorage.sol +22 -0
  158. package/contracts/extension/plugin/ERC2771ContextUpgradeableLogic.sol +47 -0
  159. package/contracts/extension/plugin/ERC2771ContextUpgradeableStorage.sol +20 -0
  160. package/contracts/extension/plugin/PermissionsEnumerableLogic.sol +101 -0
  161. package/contracts/extension/plugin/PermissionsEnumerableStorage.sol +41 -0
  162. package/contracts/extension/plugin/PermissionsLogic.sol +182 -0
  163. package/contracts/extension/plugin/PermissionsStorage.sol +28 -0
  164. package/contracts/extension/plugin/PlatformFeeLogic.sol +56 -0
  165. package/contracts/extension/plugin/PlatformFeeStorage.sol +28 -0
  166. package/contracts/extension/plugin/PluginMap.sol +81 -0
  167. package/contracts/extension/plugin/ReentrancyGuardLogic.sol +69 -0
  168. package/contracts/extension/plugin/ReentrancyGuardStorage.sol +22 -0
  169. package/contracts/extension/plugin/Router.sol +270 -0
  170. package/contracts/extension/plugin/RouterImmutable.sol +26 -0
  171. package/contracts/extension/plugin/RoyaltyPayments.sol +121 -0
  172. package/contracts/extension/upgradeable/AccountPermissions.sol +253 -0
  173. package/contracts/extension/upgradeable/BatchMintMetadata.sol +144 -0
  174. package/contracts/extension/upgradeable/BurnToClaim.sol +83 -0
  175. package/contracts/extension/upgradeable/ContractMetadata.sol +73 -0
  176. package/contracts/extension/upgradeable/DelayedReveal.sol +126 -0
  177. package/contracts/extension/upgradeable/Drop.sol +278 -0
  178. package/contracts/extension/upgradeable/ERC2771Context.sol +64 -0
  179. package/contracts/extension/upgradeable/ERC2771ContextConsumer.sol +32 -0
  180. package/contracts/extension/upgradeable/ERC2771ContextUpgradeable.sol +72 -0
  181. package/contracts/extension/upgradeable/Initializable.sol +110 -0
  182. package/contracts/extension/upgradeable/LazyMint.sol +77 -0
  183. package/contracts/extension/upgradeable/OperatorFilterToggle.sol +47 -0
  184. package/contracts/extension/upgradeable/OperatorFiltererUpgradeable.sol +58 -0
  185. package/contracts/extension/upgradeable/Ownable.sol +75 -0
  186. package/contracts/extension/upgradeable/Permissions.sol +197 -0
  187. package/contracts/extension/upgradeable/PermissionsEnumerable.sol +134 -0
  188. package/contracts/extension/upgradeable/PlatformFee.sol +131 -0
  189. package/contracts/extension/upgradeable/PrimarySale.sol +69 -0
  190. package/contracts/extension/upgradeable/ReentrancyGuard.sol +53 -0
  191. package/contracts/extension/upgradeable/Royalty.sol +144 -0
  192. package/contracts/extension/upgradeable/RoyaltyPayments.sol +121 -0
  193. package/contracts/extension/upgradeable/RulesEngine.sol +163 -0
  194. package/contracts/extension/upgradeable/SharedMetadataBatch.sol +98 -0
  195. package/contracts/extension/upgradeable/impl/ContractMetadataImpl.sol +34 -0
  196. package/contracts/extension/upgradeable/impl/MetaTx.sol +8 -0
  197. package/contracts/extension/upgradeable/impl/PermissionsEnumerableImpl.sol +28 -0
  198. package/contracts/extension/upgradeable/impl/PlatformFeeImpl.sol +34 -0
  199. package/contracts/extension/upgradeable/init/ContractMetadataInit.sol +17 -0
  200. package/contracts/extension/upgradeable/init/ERC2771ContextInit.sol +19 -0
  201. package/contracts/extension/upgradeable/init/ERC721AInit.sol +23 -0
  202. package/contracts/extension/upgradeable/init/ERC721AQueryableInit.sol +21 -0
  203. package/contracts/extension/upgradeable/init/OwnableInit.sol +18 -0
  204. package/contracts/extension/upgradeable/init/PermissionsEnumerableInit.sol +23 -0
  205. package/contracts/extension/upgradeable/init/PermissionsInit.sol +27 -0
  206. package/contracts/extension/upgradeable/init/PlatformFeeInit.sol +25 -0
  207. package/contracts/extension/upgradeable/init/PrimarySaleInit.sol +19 -0
  208. package/contracts/extension/upgradeable/init/ReentrancyGuardInit.sol +18 -0
  209. package/contracts/extension/upgradeable/init/RoyaltyInit.sol +22 -0
  210. package/contracts/external-deps/chainlink/LinkTokenInterface.sol +28 -0
  211. package/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol +83 -0
  212. package/contracts/external-deps/chainlink/VRFV2WrapperInterface.sol +35 -0
  213. package/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol +160 -0
  214. package/contracts/external-deps/openzeppelin/cryptography/EIP712ChainlessDomain.sol +100 -0
  215. package/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol +231 -0
  216. package/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol +54 -0
  217. package/contracts/external-deps/openzeppelin/metatx/ERC2771Context.sol +44 -0
  218. package/contracts/external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol +50 -0
  219. package/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol +67 -0
  220. package/contracts/external-deps/openzeppelin/proxy/Clones.sol +88 -0
  221. package/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol +32 -0
  222. package/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol +173 -0
  223. package/contracts/external-deps/openzeppelin/proxy/IERC1822Proxiable.sol +20 -0
  224. package/contracts/external-deps/openzeppelin/proxy/Proxy.sol +86 -0
  225. package/contracts/external-deps/openzeppelin/proxy/beacon/IBeacon.sol +16 -0
  226. package/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol +138 -0
  227. package/contracts/external-deps/openzeppelin/security/ReentrancyGuard.sol +32 -0
  228. package/contracts/external-deps/openzeppelin/security/ReentrancyGuardUpgradeable.sol +44 -0
  229. package/contracts/external-deps/openzeppelin/token/ERC1155/IERC1155Receiver.sol +58 -0
  230. package/contracts/external-deps/openzeppelin/token/ERC1155/utils/ERC1155Holder.sol +36 -0
  231. package/contracts/external-deps/openzeppelin/token/ERC1155/utils/ERC1155Receiver.sol +19 -0
  232. package/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol +359 -0
  233. package/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Permit.sol +117 -0
  234. package/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol +246 -0
  235. package/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol +78 -0
  236. package/contracts/external-deps/openzeppelin/token/ERC721/IERC721Receiver.sol +27 -0
  237. package/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol +23 -0
  238. package/contracts/external-deps/openzeppelin/utils/Base64.sol +92 -0
  239. package/contracts/external-deps/openzeppelin/utils/Context.sol +24 -0
  240. package/contracts/external-deps/openzeppelin/utils/Counters.sol +43 -0
  241. package/contracts/external-deps/openzeppelin/utils/Create2.sol +58 -0
  242. package/contracts/external-deps/openzeppelin/utils/ERC1155/ERC1155Holder.sol +36 -0
  243. package/contracts/external-deps/openzeppelin/utils/ERC1155/ERC1155Receiver.sol +19 -0
  244. package/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol +23 -0
  245. package/contracts/external-deps/openzeppelin/utils/EnumerableSet.sol +367 -0
  246. package/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol +217 -0
  247. package/contracts/external-deps/openzeppelin/utils/cryptography/EIP712.sol +104 -0
  248. package/contracts/external-deps/openzeppelin/utils/math/Math.sol +43 -0
  249. package/contracts/external-deps/openzeppelin/utils/math/SafeCast.sol +241 -0
  250. package/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol +215 -0
  251. package/contracts/external-deps/openzeppelin/utils/structs/EnumerableSet.sol +367 -0
  252. package/contracts/infra/ContractPublisher.sol +268 -0
  253. package/contracts/infra/TWFactory.sol +140 -0
  254. package/contracts/infra/TWFee.sol +162 -0
  255. package/contracts/infra/TWMinimalFactory.sol +47 -0
  256. package/contracts/infra/TWMultichainRegistry.sol +116 -0
  257. package/contracts/infra/TWProxy.sol +42 -0
  258. package/contracts/infra/TWRegistry.sol +70 -0
  259. package/contracts/infra/TWStatelessFactory.sol +47 -0
  260. package/contracts/infra/forwarder/Forwarder.sol +76 -0
  261. package/contracts/infra/forwarder/ForwarderChainlessDomain.sol +90 -0
  262. package/contracts/infra/forwarder/ForwarderConsumer.sol +25 -0
  263. package/contracts/infra/forwarder/ForwarderEOAOnly.sol +23 -0
  264. package/contracts/infra/interface/IContractDeployer.sol +54 -0
  265. package/contracts/infra/interface/IContractPublisher.sol +128 -0
  266. package/contracts/infra/interface/ITWFee.sol +6 -0
  267. package/contracts/infra/interface/ITWMultichainRegistry.sol +28 -0
  268. package/contracts/infra/interface/ITWRegistry.sol +24 -0
  269. package/contracts/infra/interface/IThirdwebContract.sol +19 -0
  270. package/contracts/infra/interface/IWETH.sol +10 -0
  271. package/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol +61 -0
  272. package/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol +120 -0
  273. package/contracts/infra/registry/registry-extension/TWMultichainRegistryStorage.sol +30 -0
  274. package/contracts/legacy-contracts/extension/BatchMintMetadata_V1.sol +89 -0
  275. package/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol +268 -0
  276. package/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol +252 -0
  277. package/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol +112 -0
  278. package/contracts/legacy-contracts/extension/LazyMint_V1.sol +52 -0
  279. package/contracts/legacy-contracts/extension/PlatformFee_V1.sol +69 -0
  280. package/contracts/legacy-contracts/extension/PrimarySale_V1.sol +53 -0
  281. package/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol +54 -0
  282. package/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol +58 -0
  283. package/contracts/legacy-contracts/extension/interface/IDropSinglePhase_V1.sol +54 -0
  284. package/contracts/legacy-contracts/extension/interface/IPlatformFee_V1.sol +21 -0
  285. package/contracts/legacy-contracts/extension/interface/IPrimarySale_V1.sol +21 -0
  286. package/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol +18 -0
  287. package/contracts/legacy-contracts/interface/drop/IDropClaimCondition_V2.sol +82 -0
  288. package/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol +96 -0
  289. package/contracts/legacy-contracts/interface/drop/IDropERC20_V2.sol +73 -0
  290. package/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol +98 -0
  291. package/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol +731 -0
  292. package/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol +521 -0
  293. package/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol +745 -0
  294. package/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol +360 -0
  295. package/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol +115 -0
  296. package/contracts/lib/Address.sol +244 -0
  297. package/contracts/lib/BitMaps.sol +52 -0
  298. package/contracts/lib/BytesLib.sol +18 -0
  299. package/contracts/lib/CurrencyTransferLib.sol +96 -0
  300. package/contracts/lib/FeeType.sol +10 -0
  301. package/contracts/lib/MerkleProof.sol +40 -0
  302. package/contracts/lib/NFTMetadataRenderer.sol +91 -0
  303. package/contracts/lib/StorageSlot.sol +54 -0
  304. package/contracts/lib/StringSet.sol +107 -0
  305. package/contracts/lib/Strings.sol +195 -0
  306. package/contracts/prebuilts/account/dynamic/DynamicAccount.sol +48 -0
  307. package/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol +61 -0
  308. package/contracts/prebuilts/account/interfaces/IAccount.sol +39 -0
  309. package/contracts/prebuilts/account/interfaces/IAccountCore.sol +11 -0
  310. package/contracts/prebuilts/account/interfaces/IAccountExecute.sol +17 -0
  311. package/contracts/prebuilts/account/interfaces/IAccountFactory.sol +16 -0
  312. package/contracts/prebuilts/account/interfaces/IAccountFactoryCore.sol +40 -0
  313. package/contracts/prebuilts/account/interfaces/IAggregator.sol +41 -0
  314. package/contracts/prebuilts/account/interfaces/IEntryPoint.sol +204 -0
  315. package/contracts/prebuilts/account/interfaces/INonceManager.sol +25 -0
  316. package/contracts/prebuilts/account/interfaces/IOracle.sol +10 -0
  317. package/contracts/prebuilts/account/interfaces/IPaymaster.sol +63 -0
  318. package/contracts/prebuilts/account/interfaces/IStakeManager.sol +94 -0
  319. package/contracts/prebuilts/account/interfaces/PackedUserOperation.sol +28 -0
  320. package/contracts/prebuilts/account/managed/ManagedAccount.sol +33 -0
  321. package/contracts/prebuilts/account/managed/ManagedAccountFactory.sol +68 -0
  322. package/contracts/prebuilts/account/non-upgradeable/Account.sol +169 -0
  323. package/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol +54 -0
  324. package/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol +252 -0
  325. package/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol +44 -0
  326. package/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551BytecodeLib.sol +20 -0
  327. package/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol +51 -0
  328. package/contracts/prebuilts/account/token-paymaster/BasePaymaster.sol +151 -0
  329. package/contracts/prebuilts/account/token-paymaster/TokenPaymaster.sol +212 -0
  330. package/contracts/prebuilts/account/utils/AccountCore.sol +245 -0
  331. package/contracts/prebuilts/account/utils/AccountCoreStorage.sol +21 -0
  332. package/contracts/prebuilts/account/utils/AccountExtension.sol +172 -0
  333. package/contracts/prebuilts/account/utils/AccountSeaportBulkSigSupport.sol +40 -0
  334. package/contracts/prebuilts/account/utils/BaseAccount.sol +106 -0
  335. package/contracts/prebuilts/account/utils/BaseAccountFactory.sol +168 -0
  336. package/contracts/prebuilts/account/utils/EntryPoint.sol +725 -0
  337. package/contracts/prebuilts/account/utils/Exec.sol +56 -0
  338. package/contracts/prebuilts/account/utils/Helpers.sol +88 -0
  339. package/contracts/prebuilts/account/utils/NonceManager.sol +39 -0
  340. package/contracts/prebuilts/account/utils/OracleHelper.sol +154 -0
  341. package/contracts/prebuilts/account/utils/SenderCreator.sol +28 -0
  342. package/contracts/prebuilts/account/utils/StakeManager.sol +126 -0
  343. package/contracts/prebuilts/account/utils/TokenCallbackHandler.sol +55 -0
  344. package/contracts/prebuilts/account/utils/UniswapHelper.sol +119 -0
  345. package/contracts/prebuilts/account/utils/UserOperationLib.sol +127 -0
  346. package/contracts/prebuilts/airdrop/Airdrop.sol +616 -0
  347. package/contracts/prebuilts/drop/DropERC1155.sol +388 -0
  348. package/contracts/prebuilts/drop/DropERC20.sol +262 -0
  349. package/contracts/prebuilts/drop/DropERC721.sol +397 -0
  350. package/contracts/prebuilts/evolving-nfts/EvolvingNFT.sol +101 -0
  351. package/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol +251 -0
  352. package/contracts/prebuilts/evolving-nfts/extension/RulesEngineExtension.sol +26 -0
  353. package/contracts/prebuilts/interface/ILoyaltyCard.sol +27 -0
  354. package/contracts/prebuilts/interface/ILoyaltyPoints.sol +24 -0
  355. package/contracts/prebuilts/interface/IMultiwrap.sol +49 -0
  356. package/contracts/prebuilts/interface/IPack.sol +69 -0
  357. package/contracts/prebuilts/interface/IPackVRFDirect.sol +85 -0
  358. package/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol +45 -0
  359. package/contracts/prebuilts/interface/airdrop/IAirdropERC1155Claimable.sol +40 -0
  360. package/contracts/prebuilts/interface/airdrop/IAirdropERC20.sol +46 -0
  361. package/contracts/prebuilts/interface/airdrop/IAirdropERC20Claimable.sol +33 -0
  362. package/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol +42 -0
  363. package/contracts/prebuilts/interface/airdrop/IAirdropERC721Claimable.sol +33 -0
  364. package/contracts/prebuilts/interface/drop/IDropClaimCondition.sol +82 -0
  365. package/contracts/prebuilts/interface/drop/IDropERC1155.sol +92 -0
  366. package/contracts/prebuilts/interface/drop/IDropERC20.sol +68 -0
  367. package/contracts/prebuilts/interface/drop/IDropERC721.sol +94 -0
  368. package/contracts/prebuilts/interface/marketplace/IMarketplace.sol +329 -0
  369. package/contracts/prebuilts/interface/staking/IEditionStake.sol +45 -0
  370. package/contracts/prebuilts/interface/staking/INFTStake.sol +45 -0
  371. package/contracts/prebuilts/interface/staking/ITokenStake.sol +46 -0
  372. package/contracts/prebuilts/interface/token/ITokenERC1155.sol +84 -0
  373. package/contracts/prebuilts/interface/token/ITokenERC20.sol +68 -0
  374. package/contracts/prebuilts/interface/token/ITokenERC721.sol +77 -0
  375. package/contracts/prebuilts/loyalty/LoyaltyCard.sol +339 -0
  376. package/contracts/prebuilts/marketplace/IMarketplace.sol +512 -0
  377. package/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol +579 -0
  378. package/contracts/prebuilts/marketplace/direct-listings/DirectListingsStorage.sol +30 -0
  379. package/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol +546 -0
  380. package/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsStorage.sol +30 -0
  381. package/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol +184 -0
  382. package/contracts/prebuilts/marketplace/offers/OffersLogic.sol +358 -0
  383. package/contracts/prebuilts/marketplace/offers/OffersStorage.sol +28 -0
  384. package/contracts/prebuilts/marketplace-legacy/Marketplace.sol +907 -0
  385. package/contracts/prebuilts/multiwrap/Multiwrap.sol +264 -0
  386. package/contracts/prebuilts/open-edition/OpenEditionERC721.sol +268 -0
  387. package/contracts/prebuilts/open-edition/OpenEditionERC721FlatFee.sol +298 -0
  388. package/contracts/prebuilts/pack/Pack.sol +463 -0
  389. package/contracts/prebuilts/pack/PackVRFDirect.sol +516 -0
  390. package/contracts/prebuilts/signature-drop/SignatureDrop.sol +371 -0
  391. package/contracts/prebuilts/split/Split.sol +182 -0
  392. package/contracts/prebuilts/staking/EditionStake.sol +211 -0
  393. package/contracts/prebuilts/staking/NFTStake.sol +201 -0
  394. package/contracts/prebuilts/staking/TokenStake.sol +197 -0
  395. package/contracts/prebuilts/tiered-drop/TieredDrop.sol +607 -0
  396. package/contracts/prebuilts/token/TokenERC1155.sol +576 -0
  397. package/contracts/prebuilts/token/TokenERC20.sol +312 -0
  398. package/contracts/prebuilts/token/TokenERC721.sol +469 -0
  399. package/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol +154 -0
  400. package/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol +199 -0
  401. package/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol +194 -0
  402. package/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol +180 -0
  403. package/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol +143 -0
  404. package/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol +197 -0
  405. package/contracts/prebuilts/unaudited/burn-to-claim-drop/BurnToClaimDropERC721.sol +137 -0
  406. package/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol +362 -0
  407. package/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Storage.sol +21 -0
  408. package/contracts/prebuilts/unaudited/contract-builder/CoreRouter.sol +60 -0
  409. package/contracts/prebuilts/unaudited/contract-builder/extension/PermissionOverride.sol +52 -0
  410. package/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol +249 -0
  411. package/contracts/prebuilts/vote/VoteERC20.sol +167 -0
  412. package/js/DropERC1155.d.ts +1198 -0
  413. package/js/DropERC1155.js +2 -0
  414. package/js/DropERC1155.js.map +1 -0
  415. package/js/DropERC721.d.ts +1247 -0
  416. package/js/DropERC721.js +2 -0
  417. package/js/DropERC721.js.map +1 -0
  418. package/js/OpenEditionERC721FlatFee.d.ts +1207 -0
  419. package/js/OpenEditionERC721FlatFee.js +2 -0
  420. package/js/OpenEditionERC721FlatFee.js.map +1 -0
  421. package/js/common.d.ts +22 -0
  422. package/js/common.js +2 -0
  423. package/js/common.js.map +1 -0
  424. package/js/factories/DropERC1155__factory.d.ts +1751 -0
  425. package/js/factories/DropERC1155__factory.js +2279 -0
  426. package/js/factories/DropERC1155__factory.js.map +1 -0
  427. package/js/factories/DropERC721__factory.d.ts +1826 -0
  428. package/js/factories/DropERC721__factory.js +2380 -0
  429. package/js/factories/DropERC721__factory.js.map +1 -0
  430. package/js/factories/OpenEditionERC721FlatFee__factory.d.ts +1707 -0
  431. package/js/factories/OpenEditionERC721FlatFee__factory.js +2219 -0
  432. package/js/factories/OpenEditionERC721FlatFee__factory.js.map +1 -0
  433. package/js/factories/index.d.ts +1 -0
  434. package/js/factories/index.js +5 -0
  435. package/js/factories/index.js.map +1 -0
  436. package/js/index.d.ts +3 -0
  437. package/js/index.js +3 -0
  438. package/js/index.js.map +1 -0
  439. package/package.json +74 -0
@@ -0,0 +1,114 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IAccountPermissions {
7
+ /*///////////////////////////////////////////////////////////////
8
+ Types
9
+ //////////////////////////////////////////////////////////////*/
10
+
11
+ /**
12
+ * @notice The payload that must be signed by an authorized wallet to set permissions for a signer to use the smart wallet.
13
+ *
14
+ * @param signer The addres of the signer to give permissions.
15
+ * @param approvedTargets The list of approved targets that a role holder can call using the smart wallet.
16
+ * @param nativeTokenLimitPerTransaction The maximum value that can be transferred by a role holder in a single transaction.
17
+ * @param permissionStartTimestamp The UNIX timestamp at and after which a signer has permission to use the smart wallet.
18
+ * @param permissionEndTimestamp The UNIX timestamp at and after which a signer no longer has permission to use the smart wallet.
19
+ * @param reqValidityStartTimestamp The UNIX timestamp at and after which a signature is valid.
20
+ * @param reqValidityEndTimestamp The UNIX timestamp at and after which a signature is invalid/expired.
21
+ * @param uid A unique non-repeatable ID for the payload.
22
+ * @param isAdmin Whether the signer should be an admin.
23
+ */
24
+ struct SignerPermissionRequest {
25
+ address signer;
26
+ uint8 isAdmin;
27
+ address[] approvedTargets;
28
+ uint256 nativeTokenLimitPerTransaction;
29
+ uint128 permissionStartTimestamp;
30
+ uint128 permissionEndTimestamp;
31
+ uint128 reqValidityStartTimestamp;
32
+ uint128 reqValidityEndTimestamp;
33
+ bytes32 uid;
34
+ }
35
+
36
+ /**
37
+ * @notice The permissions that a signer has to use the smart wallet.
38
+ *
39
+ * @param signer The address of the signer.
40
+ * @param approvedTargets The list of approved targets that a role holder can call using the smart wallet.
41
+ * @param nativeTokenLimitPerTransaction The maximum value that can be transferred by a role holder in a single transaction.
42
+ * @param startTimestamp The UNIX timestamp at and after which a signer has permission to use the smart wallet.
43
+ * @param endTimestamp The UNIX timestamp at and after which a signer no longer has permission to use the smart wallet.
44
+ */
45
+ struct SignerPermissions {
46
+ address signer;
47
+ address[] approvedTargets;
48
+ uint256 nativeTokenLimitPerTransaction;
49
+ uint128 startTimestamp;
50
+ uint128 endTimestamp;
51
+ }
52
+
53
+ /**
54
+ * @notice Internal struct for storing permissions for a signer (without approved targets).
55
+ *
56
+ * @param nativeTokenLimitPerTransaction The maximum value that can be transferred by a role holder in a single transaction.
57
+ * @param startTimestamp The UNIX timestamp at and after which a signer has permission to use the smart wallet.
58
+ * @param endTimestamp The UNIX timestamp at and after which a signer no longer has permission to use the smart wallet.
59
+ */
60
+ struct SignerPermissionsStatic {
61
+ uint256 nativeTokenLimitPerTransaction;
62
+ uint128 startTimestamp;
63
+ uint128 endTimestamp;
64
+ }
65
+
66
+ /*///////////////////////////////////////////////////////////////
67
+ Events
68
+ //////////////////////////////////////////////////////////////*/
69
+
70
+ /// @notice Emitted when permissions for a signer are updated.
71
+ event SignerPermissionsUpdated(
72
+ address indexed authorizingSigner,
73
+ address indexed targetSigner,
74
+ SignerPermissionRequest permissions
75
+ );
76
+
77
+ /// @notice Emitted when an admin is set or removed.
78
+ event AdminUpdated(address indexed signer, bool isAdmin);
79
+
80
+ /*///////////////////////////////////////////////////////////////
81
+ View functions
82
+ //////////////////////////////////////////////////////////////*/
83
+
84
+ /// @notice Returns whether the given account is an admin.
85
+ function isAdmin(address signer) external view returns (bool);
86
+
87
+ /// @notice Returns whether the given account is an active signer on the account.
88
+ function isActiveSigner(address signer) external view returns (bool);
89
+
90
+ /// @notice Returns the restrictions under which a signer can use the smart wallet.
91
+ function getPermissionsForSigner(address signer) external view returns (SignerPermissions memory permissions);
92
+
93
+ /// @notice Returns all active and inactive signers of the account.
94
+ function getAllSigners() external view returns (SignerPermissions[] memory signers);
95
+
96
+ /// @notice Returns all signers with active permissions to use the account.
97
+ function getAllActiveSigners() external view returns (SignerPermissions[] memory signers);
98
+
99
+ /// @notice Returns all admins of the account.
100
+ function getAllAdmins() external view returns (address[] memory admins);
101
+
102
+ /// @dev Verifies that a request is signed by an authorized account.
103
+ function verifySignerPermissionRequest(
104
+ SignerPermissionRequest calldata req,
105
+ bytes calldata signature
106
+ ) external view returns (bool success, address signer);
107
+
108
+ /*///////////////////////////////////////////////////////////////
109
+ External functions
110
+ //////////////////////////////////////////////////////////////*/
111
+
112
+ /// @notice Sets the permissions for a given signer.
113
+ function setPermissionsForSigner(SignerPermissionRequest calldata req, bytes calldata signature) external;
114
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ /**
7
+ * Thirdweb's `AppURI` is a contract extension for any base contracts. It lets you set a metadata URI
8
+ * for you contract.
9
+ *
10
+ */
11
+
12
+ interface IAppURI {
13
+ /// @dev Returns the metadata URI of the contract.
14
+ function appURI() external view returns (string memory);
15
+
16
+ /**
17
+ * @dev Sets contract URI for the storefront-level metadata of the contract.
18
+ * Only module admin can call this function.
19
+ */
20
+ function setAppURI(string calldata _uri) external;
21
+
22
+ /// @dev Emitted when the contract URI is updated.
23
+ event AppURIUpdated(string prevURI, string newURI);
24
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IBurnToClaim {
7
+ /// @notice The type of assets that can be burned.
8
+ enum TokenType {
9
+ ERC721,
10
+ ERC1155
11
+ }
12
+
13
+ /**
14
+ * @notice Configuration for burning tokens to claim new tokens.
15
+ *
16
+ * @param originContractAddress The address of the contract that the tokens are burned from.
17
+ * @param tokenType The type of token to burn.
18
+ * @param tokenId The token ID of the token to burn. Only used if tokenType is ERC1155.
19
+ * @param mintPriceForNewToken The price to mint a new token.
20
+ * @param currency The currency to pay the mint price in.
21
+ */
22
+ struct BurnToClaimInfo {
23
+ address originContractAddress;
24
+ TokenType tokenType;
25
+ uint256 tokenId; // used only if tokenType is ERC1155
26
+ uint256 mintPriceForNewToken;
27
+ address currency;
28
+ }
29
+
30
+ /// @notice Emitted when tokens are burned to claim new tokens
31
+ event TokensBurnedAndClaimed(
32
+ address indexed originContract,
33
+ address indexed tokenOwner,
34
+ uint256 indexed burnTokenId,
35
+ uint256 quantity
36
+ );
37
+
38
+ /**
39
+ * @notice Sets the configuration for burning tokens to claim new tokens.
40
+ * @param burnToClaimInfo The configuration for burning tokens to claim new tokens.
41
+ */
42
+ function setBurnToClaimInfo(BurnToClaimInfo calldata burnToClaimInfo) external;
43
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ /**
7
+ * `SignatureMint1155` is an ERC 1155 contract. It lets anyone mint NFTs by producing a mint request
8
+ * and a signature (produced by an account with MINTER_ROLE, signing the mint request).
9
+ */
10
+ interface IBurnableERC1155 {
11
+ /// @dev Lets a token owner burn the tokens they own (i.e. destroy for good)
12
+ function burn(address account, uint256 id, uint256 value) external;
13
+
14
+ /// @dev Lets a token owner burn multiple tokens they own at once (i.e. destroy for good)
15
+ function burnBatch(address account, uint256[] memory ids, uint256[] memory values) external;
16
+ }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IBurnableERC20 {
7
+ /**
8
+ * @dev Destroys `amount` tokens from the caller.
9
+ *
10
+ * See {ERC20-_burn}.
11
+ */
12
+ function burn(uint256 amount) external;
13
+
14
+ /**
15
+ * @dev Destroys `amount` tokens from `account`, deducting from the caller's
16
+ * allowance.
17
+ *
18
+ * See {ERC20-_burn} and {ERC20-allowance}.
19
+ *
20
+ * Requirements:
21
+ *
22
+ * - the caller must have allowance for ``accounts``'s tokens of at least
23
+ * `amount`.
24
+ */
25
+ function burnFrom(address account, uint256 amount) external;
26
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IBurnableERC721 {
7
+ /**
8
+ * @dev Burns `tokenId`. See {ERC721-_burn}.
9
+ *
10
+ * Requirements:
11
+ *
12
+ * - The caller must own `tokenId` or be an approved operator.
13
+ */
14
+ function burn(uint256 tokenId) external;
15
+ }
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ /**
7
+ * The interface `IClaimCondition` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.
8
+ *
9
+ * A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten
10
+ * or added to by the contract admin. At any moment, there is only one active claim condition.
11
+ */
12
+
13
+ interface IClaimCondition {
14
+ /**
15
+ * @notice The criteria that make up a claim condition.
16
+ *
17
+ * @param startTimestamp The unix timestamp after which the claim condition applies.
18
+ * The same claim condition applies until the `startTimestamp`
19
+ * of the next claim condition.
20
+ *
21
+ * @param maxClaimableSupply The maximum total number of tokens that can be claimed under
22
+ * the claim condition.
23
+ *
24
+ * @param supplyClaimed At any given point, the number of tokens that have been claimed
25
+ * under the claim condition.
26
+ *
27
+ * @param quantityLimitPerWallet The maximum number of tokens that can be claimed by a wallet.
28
+ *
29
+ * @param merkleRoot The allowlist of addresses that can claim tokens under the claim
30
+ * condition.
31
+ *
32
+ * @param pricePerToken The price required to pay per token claimed.
33
+ *
34
+ * @param currency The currency in which the `pricePerToken` must be paid.
35
+ *
36
+ * @param metadata Claim condition metadata.
37
+ */
38
+ struct ClaimCondition {
39
+ uint256 startTimestamp;
40
+ uint256 maxClaimableSupply;
41
+ uint256 supplyClaimed;
42
+ uint256 quantityLimitPerWallet;
43
+ bytes32 merkleRoot;
44
+ uint256 pricePerToken;
45
+ address currency;
46
+ string metadata;
47
+ }
48
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ import "./IClaimCondition.sol";
7
+
8
+ /**
9
+ * The interface `IClaimConditionMultiPhase` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.
10
+ *
11
+ * An authorized wallet can set a series of claim conditions, ordered by their respective `startTimestamp`.
12
+ * A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten
13
+ * or added to by the contract admin. At any moment, there is only one active claim condition.
14
+ */
15
+
16
+ interface IClaimConditionMultiPhase is IClaimCondition {
17
+ /**
18
+ * @notice The set of all claim conditions, at any given moment.
19
+ * Claim Phase ID = [currentStartId, currentStartId + length - 1];
20
+ *
21
+ * @param currentStartId The uid for the first claim condition amongst the current set of
22
+ * claim conditions. The uid for each next claim condition is one
23
+ * more than the previous claim condition's uid.
24
+ *
25
+ * @param count The total number of phases / claim conditions in the list
26
+ * of claim conditions.
27
+ *
28
+ * @param conditions The claim conditions at a given uid. Claim conditions
29
+ * are ordered in an ascending order by their `startTimestamp`.
30
+ *
31
+ * @param supplyClaimedByWallet Map from a claim condition uid and account to supply claimed by account.
32
+ */
33
+ struct ClaimConditionList {
34
+ uint256 currentStartId;
35
+ uint256 count;
36
+ mapping(uint256 => ClaimCondition) conditions;
37
+ mapping(uint256 => mapping(address => uint256)) supplyClaimedByWallet;
38
+ }
39
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ import "../../lib/BitMaps.sol";
7
+ import "./IClaimCondition.sol";
8
+
9
+ /**
10
+ * Thirdweb's 'Drop' contracts are distribution mechanisms for tokens.
11
+ *
12
+ * A contract admin (i.e. a holder of `DEFAULT_ADMIN_ROLE`) can set a series of claim conditions,
13
+ * ordered by their respective `startTimestamp`. A claim condition defines criteria under which
14
+ * accounts can mint tokens. Claim conditions can be overwritten or added to by the contract admin.
15
+ * At any moment, there is only one active claim condition.
16
+ */
17
+
18
+ interface IClaimConditionsSinglePhase is IClaimCondition {
19
+ event ClaimConditionUpdated(ClaimCondition claimConditions, bool resetClaimEligibility);
20
+
21
+ /**
22
+ * @notice Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions.
23
+ *
24
+ * @param phase Claim conditions in ascending order by `startTimestamp`.
25
+ *
26
+ * @param resetClaimEligibility Whether to reset `limitLastClaimTimestamp` and `limitMerkleProofClaim` values when setting new
27
+ * claim conditions.
28
+ *
29
+ */
30
+ function setClaimConditions(ClaimCondition calldata phase, bool resetClaimEligibility) external;
31
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IClaimableERC1155 {
7
+ /// @dev Emitted when tokens are claimed
8
+ event TokensClaimed(
9
+ address indexed claimer,
10
+ address indexed receiver,
11
+ uint256 indexed tokenId,
12
+ uint256 quantityClaimed
13
+ );
14
+
15
+ /**
16
+ * @notice Lets an address claim multiple lazy minted NFTs at once to a recipient.
17
+ * Contract creators should override this function to create custom logic for claiming,
18
+ * for e.g. price collection, allowlist, max quantity, etc.
19
+ *
20
+ * @dev The logic in the `verifyClaim` function determines whether the caller is authorized to mint NFTs.
21
+ *
22
+ * @param _receiver The recipient of the tokens to mint.
23
+ * @param _tokenId The tokenId of the lazy minted NFT to mint.
24
+ * @param _quantity The number of tokens to mint.
25
+ */
26
+ function claim(address _receiver, uint256 _tokenId, uint256 _quantity) external payable;
27
+
28
+ /**
29
+ * @notice Override this function to add logic for claim verification, based on conditions
30
+ * such as allowlist, price, max quantity etc.
31
+ *
32
+ * @dev Checks a request to claim NFTs against a custom condition.
33
+ *
34
+ * @param _claimer Caller of the claim function.
35
+ * @param _tokenId The tokenId of the lazy minted NFT to mint.
36
+ * @param _quantity The number of NFTs being claimed.
37
+ */
38
+ function verifyClaim(address _claimer, uint256 _tokenId, uint256 _quantity) external view;
39
+ }
@@ -0,0 +1,37 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IClaimableERC721 {
7
+ /// @dev Emitted when tokens are claimed
8
+ event TokensClaimed(
9
+ address indexed claimer,
10
+ address indexed receiver,
11
+ uint256 indexed startTokenId,
12
+ uint256 quantityClaimed
13
+ );
14
+
15
+ /**
16
+ * @notice Lets an address claim multiple lazy minted NFTs at once to a recipient.
17
+ * Contract creators should override this function to create custom logic for claiming,
18
+ * for e.g. price collection, allowlist, max quantity, etc.
19
+ *
20
+ * @dev The logic in the `verifyClaim` function determines whether the caller is authorized to mint NFTs.
21
+ *
22
+ * @param _receiver The recipient of the NFT to mint.
23
+ * @param _quantity The number of NFTs to mint.
24
+ */
25
+ function claim(address _receiver, uint256 _quantity) external payable;
26
+
27
+ /**
28
+ * @notice Override this function to add logic for claim verification, based on conditions
29
+ * such as allowlist, price, max quantity etc.
30
+ *
31
+ * @dev Checks a request to claim NFTs against a custom condition.
32
+ *
33
+ * @param _claimer Caller of the claim function.
34
+ * @param _quantity The number of NFTs being claimed.
35
+ */
36
+ function verifyClaim(address _claimer, uint256 _quantity) external view;
37
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ interface IContractFactory {
7
+ /**
8
+ * @notice Deploys a proxy that points to that points to the given implementation.
9
+ *
10
+ * @param implementation Address of the implementation to point to.
11
+ *
12
+ * @param data Additional data to pass to the proxy constructor or any other data useful during deployement.
13
+ * @param salt Salt to use for the deterministic address generation.
14
+ */
15
+ function deployProxyByImplementation(
16
+ address implementation,
17
+ bytes memory data,
18
+ bytes32 salt
19
+ ) external returns (address);
20
+ }
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ /**
7
+ * Thirdweb's `ContractMetadata` is a contract extension for any base contracts. It lets you set a metadata URI
8
+ * for you contract.
9
+ *
10
+ * Additionally, `ContractMetadata` is necessary for NFT contracts that want royalties to get distributed on OpenSea.
11
+ */
12
+
13
+ interface IContractMetadata {
14
+ /// @dev Returns the metadata URI of the contract.
15
+ function contractURI() external view returns (string memory);
16
+
17
+ /**
18
+ * @dev Sets contract URI for the storefront-level metadata of the contract.
19
+ * Only module admin can call this function.
20
+ */
21
+ function setContractURI(string calldata _uri) external;
22
+
23
+ /// @dev Emitted when the contract URI is updated.
24
+ event ContractURIUpdated(string prevURI, string newURI);
25
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ /**
7
+ * Thirdweb's `DelayedReveal` is a contract extension for base NFT contracts. It lets you create batches of
8
+ * 'delayed-reveal' NFTs. You can learn more about the usage of delayed reveal NFTs here - https://blog.thirdweb.com/delayed-reveal-nfts
9
+ */
10
+
11
+ interface IDelayedReveal {
12
+ /// @dev Emitted when tokens are revealed.
13
+ event TokenURIRevealed(uint256 indexed index, string revealedURI);
14
+
15
+ /**
16
+ * @notice Reveals a batch of delayed reveal NFTs.
17
+ *
18
+ * @param identifier The ID for the batch of delayed-reveal NFTs to reveal.
19
+ *
20
+ * @param key The key with which the base URI for the relevant batch of NFTs was encrypted.
21
+ */
22
+ function reveal(uint256 identifier, bytes calldata key) external returns (string memory revealedURI);
23
+
24
+ /**
25
+ * @notice Performs XOR encryption/decryption.
26
+ *
27
+ * @param data The data to encrypt. In the case of delayed-reveal NFTs, this is the "revealed" state
28
+ * base URI of the relevant batch of NFTs.
29
+ *
30
+ * @param key The key with which to encrypt data
31
+ */
32
+ function encryptDecrypt(bytes memory data, bytes calldata key) external pure returns (bytes memory result);
33
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ // [ DEPRECATED CONTRACT: use `contracts/extension/interface/IDelayedReveal.sol` instead ]
7
+
8
+ /**
9
+ * Thirdweb's `DelayedReveal` is a contract extension for base NFT contracts. It lets you create batches of
10
+ * 'delayed-reveal' NFTs. You can learn more about the usage of delayed reveal NFTs here - https://blog.thirdweb.com/delayed-reveal-nfts
11
+ */
12
+
13
+ interface IDelayedRevealDeprecated {
14
+ /// @dev Emitted when tokens are revealed.
15
+ event TokenURIRevealed(uint256 indexed index, string revealedURI);
16
+
17
+ /// @dev Returns the encrypted base URI associated with the given identifier.
18
+ function encryptedBaseURI(uint256 identifier) external view returns (bytes memory);
19
+
20
+ /**
21
+ * @notice Reveals a batch of delayed reveal NFTs.
22
+ *
23
+ * @param identifier The ID for the batch of delayed-reveal NFTs to reveal.
24
+ *
25
+ * @param key The key with which the base URI for the relevant batch of NFTs was encrypted.
26
+ */
27
+ function reveal(uint256 identifier, bytes calldata key) external returns (string memory revealedURI);
28
+
29
+ /**
30
+ * @notice Performs XOR encryption/decryption.
31
+ *
32
+ * @param data The data to encrypt. In the case of delayed-reveal NFTs, this is the "revealed" state
33
+ * base URI of the relevant batch of NFTs.
34
+ *
35
+ * @param key The key with which to encrypt data
36
+ */
37
+ function encryptDecrypt(bytes memory data, bytes calldata key) external pure returns (bytes memory result);
38
+ }
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.0;
3
+
4
+ /// @author thirdweb
5
+
6
+ import "./IClaimConditionMultiPhase.sol";
7
+
8
+ /**
9
+ * The interface `IDrop` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.
10
+ *
11
+ * An authorized wallet can set a series of claim conditions, ordered by their respective `startTimestamp`.
12
+ * A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten
13
+ * or added to by the contract admin. At any moment, there is only one active claim condition.
14
+ */
15
+
16
+ interface IDrop is IClaimConditionMultiPhase {
17
+ /**
18
+ * @param proof Proof of concerned wallet's inclusion in an allowlist.
19
+ * @param quantityLimitPerWallet The total quantity of tokens the allowlisted wallet is eligible to claim over time.
20
+ * @param pricePerToken The price per token the allowlisted wallet must pay to claim tokens.
21
+ * @param currency The currency in which the allowlisted wallet must pay the price for claiming tokens.
22
+ */
23
+ struct AllowlistProof {
24
+ bytes32[] proof;
25
+ uint256 quantityLimitPerWallet;
26
+ uint256 pricePerToken;
27
+ address currency;
28
+ }
29
+
30
+ /// @notice Emitted when tokens are claimed via `claim`.
31
+ event TokensClaimed(
32
+ uint256 indexed claimConditionIndex,
33
+ address indexed claimer,
34
+ address indexed receiver,
35
+ uint256 startTokenId,
36
+ uint256 quantityClaimed
37
+ );
38
+
39
+ /// @notice Emitted when the contract's claim conditions are updated.
40
+ event ClaimConditionsUpdated(ClaimCondition[] claimConditions, bool resetEligibility);
41
+
42
+ /**
43
+ * @notice Lets an account claim a given quantity of NFTs.
44
+ *
45
+ * @param receiver The receiver of the NFTs to claim.
46
+ * @param quantity The quantity of NFTs to claim.
47
+ * @param currency The currency in which to pay for the claim.
48
+ * @param pricePerToken The price per token to pay for the claim.
49
+ * @param allowlistProof The proof of the claimer's inclusion in the merkle root allowlist
50
+ * of the claim conditions that apply.
51
+ * @param data Arbitrary bytes data that can be leveraged in the implementation of this interface.
52
+ */
53
+ function claim(
54
+ address receiver,
55
+ uint256 quantity,
56
+ address currency,
57
+ uint256 pricePerToken,
58
+ AllowlistProof calldata allowlistProof,
59
+ bytes memory data
60
+ ) external payable;
61
+
62
+ /**
63
+ * @notice Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions.
64
+ *
65
+ * @param phases Claim conditions in ascending order by `startTimestamp`.
66
+ *
67
+ * @param resetClaimEligibility Whether to honor the restrictions applied to wallets who have claimed tokens in the current conditions,
68
+ * in the new claim conditions being set.
69
+ *
70
+ */
71
+ function setClaimConditions(ClaimCondition[] calldata phases, bool resetClaimEligibility) external;
72
+ }