thirdweb 5.50.1-nightly-b407bc9fd8379bf304ffb963f8cb8e64493914b5-20240904000351 → 5.51.0-nightly-f9c351c22d9c869770dad13332f9c23d8cb84ed7-20240905000555

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 (388) hide show
  1. package/dist/cjs/contract/deployment/deploy-via-autofactory.js +11 -0
  2. package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
  3. package/dist/cjs/contract/deployment/publisher.js +3 -0
  4. package/dist/cjs/contract/deployment/publisher.js.map +1 -1
  5. package/dist/cjs/contract/deployment/utils/bootstrap.js +41 -1
  6. package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
  7. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js +43 -0
  8. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js.map +1 -0
  9. package/dist/cjs/contract/deployment/zksync/zkDeployCreate2Factory.js +55 -0
  10. package/dist/cjs/contract/deployment/zksync/zkDeployCreate2Factory.js.map +1 -0
  11. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js +86 -0
  12. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -0
  13. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js +41 -0
  14. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js.map +1 -0
  15. package/dist/cjs/exports/extensions/erc4337.js +16 -1
  16. package/dist/cjs/exports/extensions/erc4337.js.map +1 -1
  17. package/dist/cjs/exports/extensions/erc721.js +25 -1
  18. package/dist/cjs/exports/extensions/erc721.js.map +1 -1
  19. package/dist/cjs/exports/extensions/permissions.js +11 -3
  20. package/dist/cjs/exports/extensions/permissions.js.map +1 -1
  21. package/dist/cjs/exports/extensions/thirdweb.js +9 -2
  22. package/dist/cjs/exports/extensions/thirdweb.js.map +1 -1
  23. package/dist/cjs/extensions/erc4337/account/addAdmin.js +16 -0
  24. package/dist/cjs/extensions/erc4337/account/addAdmin.js.map +1 -1
  25. package/dist/cjs/extensions/erc4337/account/addSessionKey.js +16 -0
  26. package/dist/cjs/extensions/erc4337/account/addSessionKey.js.map +1 -1
  27. package/dist/cjs/extensions/erc4337/account/removeAdmin.js +16 -0
  28. package/dist/cjs/extensions/erc4337/account/removeAdmin.js.map +1 -1
  29. package/dist/cjs/extensions/erc4337/account/removeSessionKey.js +16 -0
  30. package/dist/cjs/extensions/erc4337/account/removeSessionKey.js.map +1 -1
  31. package/dist/cjs/extensions/erc721/__generated__/IDrop/read/claimCondition.js +76 -0
  32. package/dist/cjs/extensions/erc721/__generated__/IDrop/read/claimCondition.js.map +1 -0
  33. package/dist/cjs/extensions/erc721/drops/read/getActiveClaimCondition.js +28 -6
  34. package/dist/cjs/extensions/erc721/drops/read/getActiveClaimCondition.js.map +1 -1
  35. package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js +73 -0
  36. package/dist/cjs/extensions/erc721/drops/read/getClaimConditions.js.map +1 -0
  37. package/dist/cjs/extensions/erc721/drops/write/claimTo.js +19 -0
  38. package/dist/cjs/extensions/erc721/drops/write/claimTo.js.map +1 -1
  39. package/dist/cjs/extensions/erc721/drops/write/resetClaimEligibility.js +56 -0
  40. package/dist/cjs/extensions/erc721/drops/write/resetClaimEligibility.js.map +1 -0
  41. package/dist/cjs/extensions/erc721/drops/write/setClaimConditions.js +24 -0
  42. package/dist/cjs/extensions/erc721/drops/write/setClaimConditions.js.map +1 -1
  43. package/dist/cjs/extensions/erc721/write/lazyMint.js +20 -2
  44. package/dist/cjs/extensions/erc721/write/lazyMint.js.map +1 -1
  45. package/dist/cjs/extensions/permissions/read/getAllMembers.js +18 -0
  46. package/dist/cjs/extensions/permissions/read/getAllMembers.js.map +1 -1
  47. package/dist/cjs/extensions/permissions/read/getRoleAdmin.js +3 -0
  48. package/dist/cjs/extensions/permissions/read/getRoleAdmin.js.map +1 -1
  49. package/dist/cjs/extensions/permissions/read/getRoleMember.js +3 -0
  50. package/dist/cjs/extensions/permissions/read/getRoleMember.js.map +1 -1
  51. package/dist/cjs/extensions/permissions/read/getRoleMemberCount.js +3 -0
  52. package/dist/cjs/extensions/permissions/read/getRoleMemberCount.js.map +1 -1
  53. package/dist/cjs/extensions/permissions/read/hasRole.js +3 -0
  54. package/dist/cjs/extensions/permissions/read/hasRole.js.map +1 -1
  55. package/dist/cjs/extensions/permissions/write/{grant.js → grantRole.js} +4 -1
  56. package/dist/cjs/extensions/permissions/write/grantRole.js.map +1 -0
  57. package/dist/cjs/extensions/permissions/write/renounceRole.js +3 -0
  58. package/dist/cjs/extensions/permissions/write/renounceRole.js.map +1 -1
  59. package/dist/cjs/extensions/permissions/write/revokeRole.js +3 -0
  60. package/dist/cjs/extensions/permissions/write/revokeRole.js.map +1 -1
  61. package/dist/cjs/extensions/prebuilts/deploy-published.js +39 -13
  62. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  63. package/dist/cjs/extensions/thirdweb/read/contractType.js +49 -0
  64. package/dist/cjs/extensions/thirdweb/read/contractType.js.map +1 -0
  65. package/dist/cjs/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js +33 -0
  66. package/dist/cjs/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js.map +1 -0
  67. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +6 -5
  68. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  69. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +3 -0
  70. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  71. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +37 -30
  72. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  73. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +22 -17
  74. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  75. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +44 -25
  76. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  77. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +13 -2
  78. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  79. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +2 -2
  80. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  81. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +16 -11
  82. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  83. package/dist/cjs/stories/ConnectButton/hideButtons.stories.js +74 -0
  84. package/dist/cjs/stories/ConnectButton/hideButtons.stories.js.map +1 -0
  85. package/dist/cjs/stories/{ConnectButton.stories.js → ConnectButton/themes.stories.js} +4 -5
  86. package/dist/cjs/stories/ConnectButton/themes.stories.js.map +1 -0
  87. package/dist/cjs/transaction/actions/send-transaction.js +8 -0
  88. package/dist/cjs/transaction/actions/send-transaction.js.map +1 -1
  89. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js +4 -3
  90. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  91. package/dist/cjs/transaction/extract-error.js +4 -2
  92. package/dist/cjs/transaction/extract-error.js.map +1 -1
  93. package/dist/cjs/utils/abi/encodeAbiParameters.js +1 -1
  94. package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
  95. package/dist/cjs/utils/any-evm/deploy-metadata.js +9 -2
  96. package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
  97. package/dist/cjs/utils/any-evm/zksync/computeDeploymentAddress.js +15 -0
  98. package/dist/cjs/utils/any-evm/zksync/computeDeploymentAddress.js.map +1 -0
  99. package/dist/cjs/utils/any-evm/zksync/constants.js +43 -0
  100. package/dist/cjs/utils/any-evm/zksync/constants.js.map +1 -0
  101. package/dist/cjs/utils/any-evm/zksync/create2Address.js +21 -0
  102. package/dist/cjs/utils/any-evm/zksync/create2Address.js.map +1 -0
  103. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +10 -0
  104. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -0
  105. package/dist/cjs/utils/extensions/drops/get-claim-params.js +3 -3
  106. package/dist/cjs/version.js +1 -1
  107. package/dist/cjs/wallets/smart/index.js +2 -2
  108. package/dist/cjs/wallets/smart/index.js.map +1 -1
  109. package/dist/cjs/wallets/smart/lib/utils.js +0 -7
  110. package/dist/cjs/wallets/smart/lib/utils.js.map +1 -1
  111. package/dist/esm/contract/deployment/deploy-via-autofactory.js +11 -0
  112. package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
  113. package/dist/esm/contract/deployment/publisher.js +3 -0
  114. package/dist/esm/contract/deployment/publisher.js.map +1 -1
  115. package/dist/esm/contract/deployment/utils/bootstrap.js +41 -1
  116. package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
  117. package/dist/esm/contract/deployment/zksync/zkDeployContract.js +40 -0
  118. package/dist/esm/contract/deployment/zksync/zkDeployContract.js.map +1 -0
  119. package/dist/esm/contract/deployment/zksync/zkDeployCreate2Factory.js +52 -0
  120. package/dist/esm/contract/deployment/zksync/zkDeployCreate2Factory.js.map +1 -0
  121. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js +83 -0
  122. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -0
  123. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js +38 -0
  124. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js.map +1 -0
  125. package/dist/esm/exports/extensions/erc4337.js +14 -13
  126. package/dist/esm/exports/extensions/erc4337.js.map +1 -1
  127. package/dist/esm/exports/extensions/erc721.js +17 -6
  128. package/dist/esm/exports/extensions/erc721.js.map +1 -1
  129. package/dist/esm/exports/extensions/permissions.js +8 -8
  130. package/dist/esm/exports/extensions/permissions.js.map +1 -1
  131. package/dist/esm/exports/extensions/thirdweb.js +5 -0
  132. package/dist/esm/exports/extensions/thirdweb.js.map +1 -1
  133. package/dist/esm/extensions/erc4337/account/addAdmin.js +16 -1
  134. package/dist/esm/extensions/erc4337/account/addAdmin.js.map +1 -1
  135. package/dist/esm/extensions/erc4337/account/addSessionKey.js +16 -1
  136. package/dist/esm/extensions/erc4337/account/addSessionKey.js.map +1 -1
  137. package/dist/esm/extensions/erc4337/account/removeAdmin.js +16 -1
  138. package/dist/esm/extensions/erc4337/account/removeAdmin.js.map +1 -1
  139. package/dist/esm/extensions/erc4337/account/removeSessionKey.js +16 -1
  140. package/dist/esm/extensions/erc4337/account/removeSessionKey.js.map +1 -1
  141. package/dist/esm/extensions/erc721/__generated__/IDrop/read/claimCondition.js +70 -0
  142. package/dist/esm/extensions/erc721/__generated__/IDrop/read/claimCondition.js.map +1 -0
  143. package/dist/esm/extensions/erc721/drops/read/getActiveClaimCondition.js +27 -6
  144. package/dist/esm/extensions/erc721/drops/read/getActiveClaimCondition.js.map +1 -1
  145. package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js +69 -0
  146. package/dist/esm/extensions/erc721/drops/read/getClaimConditions.js.map +1 -0
  147. package/dist/esm/extensions/erc721/drops/write/claimTo.js +19 -1
  148. package/dist/esm/extensions/erc721/drops/write/claimTo.js.map +1 -1
  149. package/dist/esm/extensions/erc721/drops/write/resetClaimEligibility.js +52 -0
  150. package/dist/esm/extensions/erc721/drops/write/resetClaimEligibility.js.map +1 -0
  151. package/dist/esm/extensions/erc721/drops/write/setClaimConditions.js +24 -1
  152. package/dist/esm/extensions/erc721/drops/write/setClaimConditions.js.map +1 -1
  153. package/dist/esm/extensions/erc721/write/lazyMint.js +20 -3
  154. package/dist/esm/extensions/erc721/write/lazyMint.js.map +1 -1
  155. package/dist/esm/extensions/permissions/read/getAllMembers.js +19 -2
  156. package/dist/esm/extensions/permissions/read/getAllMembers.js.map +1 -1
  157. package/dist/esm/extensions/permissions/read/getRoleAdmin.js +1 -0
  158. package/dist/esm/extensions/permissions/read/getRoleAdmin.js.map +1 -1
  159. package/dist/esm/extensions/permissions/read/getRoleMember.js +1 -0
  160. package/dist/esm/extensions/permissions/read/getRoleMember.js.map +1 -1
  161. package/dist/esm/extensions/permissions/read/getRoleMemberCount.js +1 -0
  162. package/dist/esm/extensions/permissions/read/getRoleMemberCount.js.map +1 -1
  163. package/dist/esm/extensions/permissions/read/hasRole.js +1 -0
  164. package/dist/esm/extensions/permissions/read/hasRole.js.map +1 -1
  165. package/dist/esm/extensions/permissions/write/{grant.js → grantRole.js} +2 -1
  166. package/dist/esm/extensions/permissions/write/grantRole.js.map +1 -0
  167. package/dist/esm/extensions/permissions/write/renounceRole.js +1 -0
  168. package/dist/esm/extensions/permissions/write/renounceRole.js.map +1 -1
  169. package/dist/esm/extensions/permissions/write/revokeRole.js +1 -0
  170. package/dist/esm/extensions/permissions/write/revokeRole.js.map +1 -1
  171. package/dist/esm/extensions/prebuilts/deploy-published.js +39 -13
  172. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  173. package/dist/esm/extensions/thirdweb/read/contractType.js +45 -0
  174. package/dist/esm/extensions/thirdweb/read/contractType.js.map +1 -0
  175. package/dist/esm/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js +30 -0
  176. package/dist/esm/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.js.map +1 -0
  177. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +6 -5
  178. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  179. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +3 -0
  180. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  181. package/dist/esm/react/web/ui/ConnectWallet/Details.js +37 -30
  182. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  183. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +23 -18
  184. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  185. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +41 -24
  186. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  187. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +12 -2
  188. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  189. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +2 -2
  190. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  191. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +17 -12
  192. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  193. package/dist/esm/stories/ConnectButton/hideButtons.stories.js +71 -0
  194. package/dist/esm/stories/ConnectButton/hideButtons.stories.js.map +1 -0
  195. package/dist/esm/stories/{ConnectButton.stories.js → ConnectButton/themes.stories.js} +4 -5
  196. package/dist/esm/stories/ConnectButton/themes.stories.js.map +1 -0
  197. package/dist/esm/transaction/actions/send-transaction.js +8 -0
  198. package/dist/esm/transaction/actions/send-transaction.js.map +1 -1
  199. package/dist/esm/transaction/actions/zksync/getEip721Domain.js +4 -3
  200. package/dist/esm/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  201. package/dist/esm/transaction/extract-error.js +4 -2
  202. package/dist/esm/transaction/extract-error.js.map +1 -1
  203. package/dist/esm/utils/abi/encodeAbiParameters.js +1 -1
  204. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  205. package/dist/esm/utils/any-evm/deploy-metadata.js +9 -2
  206. package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
  207. package/dist/esm/utils/any-evm/zksync/computeDeploymentAddress.js +12 -0
  208. package/dist/esm/utils/any-evm/zksync/computeDeploymentAddress.js.map +1 -0
  209. package/dist/esm/utils/any-evm/zksync/constants.js +40 -0
  210. package/dist/esm/utils/any-evm/zksync/constants.js.map +1 -0
  211. package/dist/esm/utils/any-evm/zksync/create2Address.js +18 -0
  212. package/dist/esm/utils/any-evm/zksync/create2Address.js.map +1 -0
  213. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +7 -0
  214. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -0
  215. package/dist/esm/utils/extensions/drops/get-claim-params.js +4 -4
  216. package/dist/esm/version.js +1 -1
  217. package/dist/esm/wallets/smart/index.js +2 -2
  218. package/dist/esm/wallets/smart/index.js.map +1 -1
  219. package/dist/esm/wallets/smart/lib/utils.js +0 -6
  220. package/dist/esm/wallets/smart/lib/utils.js.map +1 -1
  221. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
  222. package/dist/types/contract/deployment/publisher.d.ts.map +1 -1
  223. package/dist/types/contract/deployment/utils/bootstrap.d.ts +4 -2
  224. package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
  225. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts +12 -0
  226. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts.map +1 -0
  227. package/dist/types/contract/deployment/zksync/zkDeployCreate2Factory.d.ts +6 -0
  228. package/dist/types/contract/deployment/zksync/zkDeployCreate2Factory.d.ts.map +1 -0
  229. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts +13 -0
  230. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts.map +1 -0
  231. package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts +12 -0
  232. package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts.map +1 -0
  233. package/dist/types/exports/extensions/erc4337.d.ts +14 -13
  234. package/dist/types/exports/extensions/erc4337.d.ts.map +1 -1
  235. package/dist/types/exports/extensions/erc721.d.ts +9 -6
  236. package/dist/types/exports/extensions/erc721.d.ts.map +1 -1
  237. package/dist/types/exports/extensions/permissions.d.ts +8 -8
  238. package/dist/types/exports/extensions/permissions.d.ts.map +1 -1
  239. package/dist/types/exports/extensions/thirdweb.d.ts +1 -0
  240. package/dist/types/exports/extensions/thirdweb.d.ts.map +1 -1
  241. package/dist/types/extensions/erc4337/account/addAdmin.d.ts +13 -0
  242. package/dist/types/extensions/erc4337/account/addAdmin.d.ts.map +1 -1
  243. package/dist/types/extensions/erc4337/account/addSessionKey.d.ts +13 -0
  244. package/dist/types/extensions/erc4337/account/addSessionKey.d.ts.map +1 -1
  245. package/dist/types/extensions/erc4337/account/removeAdmin.d.ts +13 -0
  246. package/dist/types/extensions/erc4337/account/removeAdmin.d.ts.map +1 -1
  247. package/dist/types/extensions/erc4337/account/removeSessionKey.d.ts +13 -0
  248. package/dist/types/extensions/erc4337/account/removeSessionKey.d.ts.map +1 -1
  249. package/dist/types/extensions/erc721/__generated__/IDrop/read/claimCondition.d.ts +45 -0
  250. package/dist/types/extensions/erc721/__generated__/IDrop/read/claimCondition.d.ts.map +1 -0
  251. package/dist/types/extensions/erc721/drops/read/getActiveClaimCondition.d.ts +13 -0
  252. package/dist/types/extensions/erc721/drops/read/getActiveClaimCondition.d.ts.map +1 -1
  253. package/dist/types/extensions/erc721/drops/read/getClaimConditions.d.ts +29 -0
  254. package/dist/types/extensions/erc721/drops/read/getClaimConditions.d.ts.map +1 -0
  255. package/dist/types/extensions/erc721/drops/write/claimTo.d.ts +13 -0
  256. package/dist/types/extensions/erc721/drops/write/claimTo.d.ts.map +1 -1
  257. package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts +33 -0
  258. package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts.map +1 -0
  259. package/dist/types/extensions/erc721/drops/write/setClaimConditions.d.ts +13 -0
  260. package/dist/types/extensions/erc721/drops/write/setClaimConditions.d.ts.map +1 -1
  261. package/dist/types/extensions/erc721/write/lazyMint.d.ts +13 -0
  262. package/dist/types/extensions/erc721/write/lazyMint.d.ts.map +1 -1
  263. package/dist/types/extensions/permissions/read/getAllMembers.d.ts +13 -0
  264. package/dist/types/extensions/permissions/read/getAllMembers.d.ts.map +1 -1
  265. package/dist/types/extensions/permissions/read/getRoleAdmin.d.ts +1 -0
  266. package/dist/types/extensions/permissions/read/getRoleAdmin.d.ts.map +1 -1
  267. package/dist/types/extensions/permissions/read/getRoleMember.d.ts +1 -0
  268. package/dist/types/extensions/permissions/read/getRoleMember.d.ts.map +1 -1
  269. package/dist/types/extensions/permissions/read/getRoleMemberCount.d.ts +1 -0
  270. package/dist/types/extensions/permissions/read/getRoleMemberCount.d.ts.map +1 -1
  271. package/dist/types/extensions/permissions/read/hasRole.d.ts +1 -0
  272. package/dist/types/extensions/permissions/read/hasRole.d.ts.map +1 -1
  273. package/dist/types/extensions/permissions/write/{grant.d.ts → grantRole.d.ts} +2 -1
  274. package/dist/types/extensions/permissions/write/grantRole.d.ts.map +1 -0
  275. package/dist/types/extensions/permissions/write/renounceRole.d.ts +1 -0
  276. package/dist/types/extensions/permissions/write/renounceRole.d.ts.map +1 -1
  277. package/dist/types/extensions/permissions/write/revokeRole.d.ts +1 -0
  278. package/dist/types/extensions/permissions/write/revokeRole.d.ts.map +1 -1
  279. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  280. package/dist/types/extensions/thirdweb/read/contractType.d.ts +31 -0
  281. package/dist/types/extensions/thirdweb/read/contractType.d.ts.map +1 -0
  282. package/dist/types/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.d.ts +61 -0
  283. package/dist/types/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.d.ts.map +1 -0
  284. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +18 -0
  285. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
  286. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts +6 -5
  287. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  288. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +3 -0
  289. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  290. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  291. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts +28 -7
  292. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  293. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +6 -0
  294. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  295. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts +0 -1
  296. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts.map +1 -1
  297. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  298. package/dist/types/stories/ConnectButton/hideButtons.stories.d.ts +23 -0
  299. package/dist/types/stories/ConnectButton/hideButtons.stories.d.ts.map +1 -0
  300. package/dist/types/stories/{ConnectButton.stories.d.ts → ConnectButton/themes.stories.d.ts} +3 -4
  301. package/dist/types/stories/ConnectButton/themes.stories.d.ts.map +1 -0
  302. package/dist/types/transaction/actions/send-transaction.d.ts.map +1 -1
  303. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
  304. package/dist/types/transaction/extract-error.d.ts.map +1 -1
  305. package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
  306. package/dist/types/utils/any-evm/zksync/computeDeploymentAddress.d.ts +11 -0
  307. package/dist/types/utils/any-evm/zksync/computeDeploymentAddress.d.ts.map +1 -0
  308. package/dist/types/utils/any-evm/zksync/constants.d.ts +29 -0
  309. package/dist/types/utils/any-evm/zksync/constants.d.ts.map +1 -0
  310. package/dist/types/utils/any-evm/zksync/create2Address.d.ts +9 -0
  311. package/dist/types/utils/any-evm/zksync/create2Address.d.ts.map +1 -0
  312. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts +3 -0
  313. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -0
  314. package/dist/types/utils/domains.d.ts +1 -1
  315. package/dist/types/version.d.ts +1 -1
  316. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  317. package/dist/types/wallets/smart/lib/utils.d.ts +0 -2
  318. package/dist/types/wallets/smart/lib/utils.d.ts.map +1 -1
  319. package/package.json +1 -1
  320. package/src/contract/deployment/deploy-via-autofactory.ts +13 -0
  321. package/src/contract/deployment/publisher.ts +5 -0
  322. package/src/contract/deployment/utils/bootstrap.ts +56 -3
  323. package/src/contract/deployment/zksync/zkDeployContract.ts +52 -0
  324. package/src/contract/deployment/zksync/zkDeployCreate2Factory.ts +65 -0
  325. package/src/contract/deployment/zksync/zkDeployDeterministic.ts +106 -0
  326. package/src/contract/deployment/zksync/zkDeployProxy.ts +55 -0
  327. package/src/exports/extensions/erc4337.ts +35 -7
  328. package/src/exports/extensions/erc721.ts +36 -3
  329. package/src/exports/extensions/permissions.ts +9 -1
  330. package/src/exports/extensions/thirdweb.ts +10 -0
  331. package/src/extensions/erc4337/account/addAdmin.ts +20 -1
  332. package/src/extensions/erc4337/account/addSessionKey.ts +20 -1
  333. package/src/extensions/erc4337/account/removeAdmin.ts +20 -1
  334. package/src/extensions/erc4337/account/removeSessionKey.ts +20 -1
  335. package/src/extensions/erc721/__generated__/IDrop/read/claimCondition.ts +76 -0
  336. package/src/extensions/erc721/drop721.test.ts +102 -2
  337. package/src/extensions/erc721/drops/read/getActiveClaimCondition.ts +32 -6
  338. package/src/extensions/erc721/drops/read/getClaimConditions.ts +93 -0
  339. package/src/extensions/erc721/drops/write/claimTo.ts +25 -1
  340. package/src/extensions/erc721/drops/write/resetClaimEligibility.ts +70 -0
  341. package/src/extensions/erc721/drops/write/setClaimConditions.ts +30 -1
  342. package/src/extensions/erc721/write/lazyMint.ts +26 -3
  343. package/src/extensions/permissions/permissions.test.ts +1 -1
  344. package/src/extensions/permissions/read/getAllMembers.ts +30 -2
  345. package/src/extensions/permissions/read/getRoleAdmin.ts +2 -0
  346. package/src/extensions/permissions/read/getRoleMember.ts +2 -0
  347. package/src/extensions/permissions/read/getRoleMemberCount.ts +2 -0
  348. package/src/extensions/permissions/read/hasRole.ts +2 -0
  349. package/src/extensions/permissions/write/{grant.ts → grantRole.ts} +2 -0
  350. package/src/extensions/permissions/write/renounceRole.ts +2 -0
  351. package/src/extensions/permissions/write/revokeRole.ts +2 -0
  352. package/src/extensions/prebuilts/deploy-published.ts +58 -26
  353. package/src/extensions/thirdweb/read/contractType.ts +46 -0
  354. package/src/extensions/zksync/__generated__/ContractDeployer/events/ContractDeployed.ts +55 -0
  355. package/src/react/core/hooks/connection/ConnectButtonProps.ts +21 -0
  356. package/src/react/web/hooks/transaction/useSendTransaction.tsx +6 -5
  357. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +3 -0
  358. package/src/react/web/ui/ConnectWallet/Details.tsx +108 -73
  359. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +37 -29
  360. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +73 -33
  361. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +37 -2
  362. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +5 -10
  363. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +27 -20
  364. package/src/stories/ConnectButton/hideButtons.stories.tsx +83 -0
  365. package/src/stories/{ConnectButton.stories.ts → ConnectButton/themes.stories.tsx} +3 -4
  366. package/src/transaction/actions/send-transaction.ts +11 -0
  367. package/src/transaction/actions/to-serializable-transaction.test.ts +3 -4
  368. package/src/transaction/actions/zksync/getEip721Domain.ts +4 -2
  369. package/src/transaction/actions/zksync/send-eip712-transaction.test.ts +27 -2
  370. package/src/transaction/extract-error.ts +7 -2
  371. package/src/utils/abi/encode-abi-parameters.test.ts +1 -1
  372. package/src/utils/abi/encodeAbiParameters.ts +1 -1
  373. package/src/utils/any-evm/deploy-metadata.ts +11 -2
  374. package/src/utils/any-evm/zksync/computeDeploymentAddress.ts +24 -0
  375. package/src/utils/any-evm/zksync/constants.ts +49 -0
  376. package/src/utils/any-evm/zksync/create2Address.ts +26 -0
  377. package/src/utils/any-evm/zksync/isZkSyncChain.ts +10 -0
  378. package/src/utils/domains.ts +1 -1
  379. package/src/utils/extensions/drops/get-claim-params.ts +4 -4
  380. package/src/version.ts +1 -1
  381. package/src/wallets/smart/index.ts +2 -3
  382. package/src/wallets/smart/lib/utils.ts +0 -10
  383. package/dist/cjs/extensions/permissions/write/grant.js.map +0 -1
  384. package/dist/cjs/stories/ConnectButton.stories.js.map +0 -1
  385. package/dist/esm/extensions/permissions/write/grant.js.map +0 -1
  386. package/dist/esm/stories/ConnectButton.stories.js.map +0 -1
  387. package/dist/types/extensions/permissions/write/grant.d.ts.map +0 -1
  388. package/dist/types/stories/ConnectButton.stories.d.ts.map +0 -1
@@ -0,0 +1,93 @@
1
+ import type { BaseTransactionOptions } from "../../../../transaction/types.js";
2
+ import type { ClaimCondition } from "../../../../utils/extensions/drops/types.js";
3
+ import * as SinglePhase from "../../__generated__/DropSinglePhase/read/claimCondition.js";
4
+ import * as MultiPhase from "../../__generated__/IDrop/read/claimCondition.js";
5
+ import * as ById from "../../__generated__/IDrop/read/getClaimConditionById.js";
6
+
7
+ /**
8
+ * Retrieves all claim conditions.
9
+ * @param options - The transaction options.
10
+ * @returns A promise that resolves to all claim conditions.
11
+ * @throws An error if the claim conditions are unsupported by the contract.
12
+ * @extension ERC721
13
+ * @example
14
+ * ```ts
15
+ * import { getClaimConditions } from "thirdweb/extensions/erc721";
16
+ * const conditions = await getClaimConditions({ contract });
17
+ * ```
18
+ */
19
+ export async function getClaimConditions(
20
+ options: BaseTransactionOptions,
21
+ ): Promise<ClaimCondition[]> {
22
+ const [multi, single] = await Promise.allSettled([
23
+ (async () => {
24
+ const [startId, count] = await MultiPhase.claimCondition(options);
25
+
26
+ const conditionPromises: Array<
27
+ ReturnType<typeof ById.getClaimConditionById>
28
+ > = [];
29
+ for (let i = startId; i < count; i++) {
30
+ conditionPromises.push(
31
+ ById.getClaimConditionById({
32
+ ...options,
33
+ conditionId: i,
34
+ }),
35
+ );
36
+ }
37
+ return Promise.all(conditionPromises);
38
+ })(),
39
+ SinglePhase.claimCondition(options).then(
40
+ ([
41
+ startTimestamp,
42
+ maxClaimableSupply,
43
+ supplyClaimed,
44
+ quantityLimitPerWallet,
45
+ merkleRoot,
46
+ pricePerToken,
47
+ currency,
48
+ metadata,
49
+ ]) => ({
50
+ startTimestamp,
51
+ maxClaimableSupply,
52
+ supplyClaimed,
53
+ quantityLimitPerWallet,
54
+ merkleRoot,
55
+ pricePerToken,
56
+ currency,
57
+ metadata,
58
+ }),
59
+ ),
60
+ ]);
61
+ if (multi.status === "fulfilled") {
62
+ return multi.value;
63
+ }
64
+ if (single.status === "fulfilled") {
65
+ return [single.value];
66
+ }
67
+
68
+ throw new Error("Claim condition not found");
69
+ }
70
+
71
+ /**
72
+ * Checks if the `getClaimConditions` method is supported by the given contract.
73
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
74
+ * @returns A boolean indicating if the `getClaimConditions` method is supported.
75
+ * @extension ERC721
76
+ * @example
77
+ * ```ts
78
+ * import { isGetClaimConditionsSupported } from "thirdweb/extensions/erc721";
79
+ *
80
+ * const supported = isGetClaimConditionsSupported(["0x..."]);
81
+ * ```
82
+ */
83
+ export function isGetClaimConditionsSupported(availableSelectors: string[]) {
84
+ // if single phase is supported, return true
85
+ if (SinglePhase.isClaimConditionSupported(availableSelectors)) {
86
+ return true;
87
+ }
88
+ // if multi phase is supported, return true
89
+ return (
90
+ MultiPhase.isClaimConditionSupported(availableSelectors) &&
91
+ ById.isGetClaimConditionByIdSupported(availableSelectors)
92
+ );
93
+ }
@@ -1,7 +1,11 @@
1
1
  import type { Address } from "abitype";
2
2
  import type { BaseTransactionOptions } from "../../../../transaction/types.js";
3
3
  import { getClaimParams } from "../../../../utils/extensions/drops/get-claim-params.js";
4
- import { claim } from "../../__generated__/IDrop/write/claim.js";
4
+ import {
5
+ claim,
6
+ isClaimSupported,
7
+ } from "../../__generated__/IDrop/write/claim.js";
8
+ import { isGetActiveClaimConditionSupported } from "../read/getActiveClaimCondition.js";
5
9
 
6
10
  /**
7
11
  * Represents the parameters for claiming an ERC721 token.
@@ -46,3 +50,23 @@ export function claimTo(options: BaseTransactionOptions<ClaimToParams>) {
46
50
  }),
47
51
  });
48
52
  }
53
+
54
+ /**
55
+ * Checks if the `claimTo` method is supported by the given contract.
56
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
57
+ * @returns A boolean indicating if the `claimTo` method is supported.
58
+ * @extension ERC721
59
+ * @example
60
+ * ```ts
61
+ * import { isClaimToSupported } from "thirdweb/extensions/erc721";
62
+ *
63
+ * const supported = isClaimToSupported(["0x..."]);
64
+ * ```
65
+ */
66
+ export function isClaimToSupported(availableSelectors: string[]) {
67
+ return (
68
+ isClaimSupported(availableSelectors) &&
69
+ // required to check if the contract supports the getActiveClaimCondition method
70
+ isGetActiveClaimConditionSupported(availableSelectors)
71
+ );
72
+ }
@@ -0,0 +1,70 @@
1
+ import type { Hex } from "viem";
2
+ import type { BaseTransactionOptions } from "../../../../transaction/types.js";
3
+ import type { ClaimCondition } from "../../../../utils/extensions/drops/types.js";
4
+ import {
5
+ isSetClaimConditionsSupported,
6
+ setClaimConditions,
7
+ } from "../../__generated__/IDrop/write/setClaimConditions.js";
8
+ import {
9
+ getClaimConditions,
10
+ isGetClaimConditionsSupported,
11
+ } from "../read/getClaimConditions.js";
12
+
13
+ /**
14
+ * Reset the claim eligibility for all users.
15
+ * @param options
16
+ * @returns the prepared transaction
17
+ * @extension ERC721
18
+ * @example
19
+ * ```ts
20
+ * import { resetClaimEligibility } from "thirdweb/extensions/erc721";
21
+ * import { sendTransaction } from "thirdweb";
22
+ *
23
+ * const transaction = resetClaimEligibility({
24
+ * contract,
25
+ * });
26
+ *
27
+ * await sendTransaction({ transaction, account });
28
+ * ```
29
+ */
30
+ export function resetClaimEligibility(options: BaseTransactionOptions) {
31
+ // download existing conditions
32
+ return setClaimConditions({
33
+ contract: options.contract,
34
+ asyncParams: async () => {
35
+ // get existing conditions
36
+ const existingConditions = await getClaimConditions(options);
37
+
38
+ // then simply return the exact same ones, but with the resetClaimEligibility flag set to true
39
+ return {
40
+ // type is necessary because of viem hex shenanigans (strict vs non-strict `0x` prefix string)
41
+ phases: existingConditions as Array<
42
+ ClaimCondition & {
43
+ currency: Hex;
44
+ merkleRoot: Hex;
45
+ }
46
+ >,
47
+ resetClaimEligibility: true,
48
+ };
49
+ },
50
+ });
51
+ }
52
+
53
+ /**
54
+ * Checks if the `resetClaimEligibility` method is supported by the given contract.
55
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
56
+ * @returns A boolean indicating if the `resetClaimEligibility` method is supported.
57
+ * @extension ERC721
58
+ * @example
59
+ * ```ts
60
+ * import { isResetClaimEligibilitySupported } from "thirdweb/extensions/erc721";
61
+ *
62
+ * const supported = isResetClaimEligibilitySupported(["0x..."]);
63
+ * ```
64
+ */
65
+ export function isResetClaimEligibilitySupported(availableSelectors: string[]) {
66
+ return (
67
+ isGetClaimConditionsSupported(availableSelectors) &&
68
+ isSetClaimConditionsSupported(availableSelectors)
69
+ );
70
+ }
@@ -1,7 +1,13 @@
1
1
  import type { BaseTransactionOptions } from "../../../../transaction/types.js";
2
2
  import { getMulticallSetClaimConditionTransactions } from "../../../../utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js";
3
3
  import type { ClaimConditionsInput } from "../../../../utils/extensions/drops/types.js";
4
- import { multicall } from "../../../common/__generated__/IMulticall/write/multicall.js";
4
+ import { isSetContractURISupported } from "../../../common/__generated__/IContractMetadata/write/setContractURI.js";
5
+ import {
6
+ isMulticallSupported,
7
+ multicall,
8
+ } from "../../../common/__generated__/IMulticall/write/multicall.js";
9
+ import { isGetContractMetadataSupported } from "../../../common/read/getContractMetadata.js";
10
+ import { isSetClaimConditionsSupported as isSetClaimConditionsSupportedGenerated } from "../../__generated__/IDrop/write/setClaimConditions.js";
5
11
 
6
12
  /**
7
13
  * @extension ERC721
@@ -54,3 +60,26 @@ export function setClaimConditions(
54
60
  },
55
61
  });
56
62
  }
63
+
64
+ /**
65
+ * Checks if the `setClaimConditions` method is supported by the given contract.
66
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
67
+ * @returns A boolean indicating if the `setClaimConditions` method is supported.
68
+ * @extension ERC721
69
+ * @example
70
+ * ```ts
71
+ * import { isSetClaimConditionsSupported } from "thirdweb/extensions/erc721";
72
+ *
73
+ * const supported = isSetClaimConditionsSupported(["0x..."]);
74
+ * ```
75
+ */
76
+ export function isSetClaimConditionsSupported(availableSelectors: string[]) {
77
+ return (
78
+ isMulticallSupported(availableSelectors) &&
79
+ // needed for setting contract metadata
80
+ isGetContractMetadataSupported(availableSelectors) &&
81
+ isSetContractURISupported(availableSelectors) &&
82
+ // needs to actually be able to set the claim Conditions
83
+ isSetClaimConditionsSupportedGenerated(availableSelectors)
84
+ );
85
+ }
@@ -5,8 +5,11 @@ import {
5
5
  uploadOrExtractURIs,
6
6
  } from "../../../utils/ipfs.js";
7
7
  import type { Prettify } from "../../../utils/type-utils.js";
8
- import { nextTokenIdToMint } from "../__generated__/IERC721Enumerable/read/nextTokenIdToMint.js";
9
- import { lazyMint as generatedLazyMint } from "../__generated__/ILazyMint/write/lazyMint.js";
8
+ import {
9
+ isNextTokenIdToMintSupported,
10
+ nextTokenIdToMint,
11
+ } from "../__generated__/IERC721Enumerable/read/nextTokenIdToMint.js";
12
+ import * as LazyMint from "../__generated__/ILazyMint/write/lazyMint.js";
10
13
 
11
14
  /**
12
15
  * Represents the input data for creating an NFT (Non-Fungible Token).
@@ -57,7 +60,7 @@ export type LazyMintParams = {
57
60
  * ```
58
61
  */
59
62
  export function lazyMint(options: BaseTransactionOptions<LazyMintParams>) {
60
- return generatedLazyMint({
63
+ return LazyMint.lazyMint({
61
64
  contract: options.contract,
62
65
  asyncParams: async () => {
63
66
  const startFileNumber = await nextTokenIdToMint({
@@ -81,3 +84,23 @@ export function lazyMint(options: BaseTransactionOptions<LazyMintParams>) {
81
84
  },
82
85
  });
83
86
  }
87
+
88
+ /**
89
+ * Checks if the `lazyMint` method is supported by the given contract.
90
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
91
+ * @returns A boolean indicating if the `lazyMint` method is supported.
92
+ * @extension ERC721
93
+ * @example
94
+ * ```ts
95
+ * import { isLazyMintSupported } from "thirdweb/extensions/erc721";
96
+ *
97
+ * const supported = isLazyMintSupported(["0x..."]);
98
+ * ```
99
+ */
100
+ export function isLazyMintSupported(availableSelectors: string[]) {
101
+ return (
102
+ LazyMint.isLazyMintSupported(availableSelectors) &&
103
+ // required because we use it in the lazyMint function
104
+ isNextTokenIdToMintSupported(availableSelectors)
105
+ );
106
+ }
@@ -10,7 +10,7 @@ import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-co
10
10
  import { deployERC20Contract } from "../prebuilts/deploy-erc20.js";
11
11
  import { getAllRoleMembers } from "./read/getAllMembers.js";
12
12
  import { hasRole } from "./read/hasRole.js";
13
- import { grantRole } from "./write/grant.js";
13
+ import { grantRole } from "./write/grantRole.js";
14
14
  import { revokeRole } from "./write/revokeRole.js";
15
15
 
16
16
  describe.runIf(process.env.TW_SECRET_KEY)("Permissions", () => {
@@ -1,6 +1,12 @@
1
1
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
- import { getRoleMember } from "../__generated__/IPermissionsEnumerable/read/getRoleMember.js";
3
- import { getRoleMemberCount } from "../__generated__/IPermissionsEnumerable/read/getRoleMemberCount.js";
2
+ import {
3
+ getRoleMember,
4
+ isGetRoleMemberSupported,
5
+ } from "../__generated__/IPermissionsEnumerable/read/getRoleMember.js";
6
+ import {
7
+ getRoleMemberCount,
8
+ isGetRoleMemberCountSupported,
9
+ } from "../__generated__/IPermissionsEnumerable/read/getRoleMemberCount.js";
4
10
  import { type RoleInput, getRoleHash } from "../utils.js";
5
11
 
6
12
  /**
@@ -47,3 +53,25 @@ export async function getAllRoleMembers(
47
53
 
48
54
  return Promise.all(promises);
49
55
  }
56
+
57
+ /**
58
+ * Checks if the `getAllRoleMembers` method is supported by the given contract.
59
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
60
+ * @returns A boolean indicating if the `getAllRoleMembers` method is supported.
61
+ * @extension PERMISSIONS
62
+ * @example
63
+ * ```ts
64
+ * import { isGetAllRoleMembersSupported } from "thirdweb/extensions/permissions";
65
+ *
66
+ * const supported = isGetAllRoleMembersSupported(["0x..."]);
67
+ * ```
68
+ */
69
+ export function isGetAllRoleMembersSupported(
70
+ availableSelectors: string[],
71
+ ): boolean {
72
+ // both need to be supported to get all members
73
+ return (
74
+ isGetRoleMemberSupported(availableSelectors) &&
75
+ isGetRoleMemberCountSupported(availableSelectors)
76
+ );
77
+ }
@@ -2,6 +2,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
2
  import { getRoleAdmin as generatedGetRoleAdmin } from "../__generated__/IPermissions/read/getRoleAdmin.js";
3
3
  import { type RoleInput, getRoleHash } from "../utils.js";
4
4
 
5
+ export { isGetRoleAdminSupported } from "../__generated__/IPermissions/read/getRoleAdmin.js";
6
+
5
7
  /**
6
8
  * @extension PERMISSIONS
7
9
  */
@@ -2,6 +2,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
2
  import { getRoleMember as generatedGetRoleMember } from "../__generated__/IPermissionsEnumerable/read/getRoleMember.js";
3
3
  import { type RoleInput, getRoleHash } from "../utils.js";
4
4
 
5
+ export { isGetRoleMemberSupported } from "../__generated__/IPermissionsEnumerable/read/getRoleMember.js";
6
+
5
7
  /**
6
8
  * @extension PERMISSIONS
7
9
  */
@@ -2,6 +2,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
2
  import { getRoleMemberCount as generatedGetRoleMemberCount } from "../__generated__/IPermissionsEnumerable/read/getRoleMemberCount.js";
3
3
  import { type RoleInput, getRoleHash } from "../utils.js";
4
4
 
5
+ export { isGetRoleMemberCountSupported } from "../__generated__/IPermissionsEnumerable/read/getRoleMemberCount.js";
6
+
5
7
  /**
6
8
  * @extension PERMISSIONS
7
9
  */
@@ -2,6 +2,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
2
  import { hasRole as hasRoleGenerated } from "../__generated__/IPermissions/read/hasRole.js";
3
3
  import { type RoleInput, getRoleHash } from "../utils.js";
4
4
 
5
+ export { isHasRoleSupported } from "../__generated__/IPermissions/read/hasRole.js";
6
+
5
7
  /**
6
8
  * @extension PERMISSIONS
7
9
  */
@@ -3,6 +3,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
3
3
  import { grantRole as generatedGrantRole } from "../__generated__/IPermissions/write/grantRole.js";
4
4
  import { type RoleInput, getRoleHash } from "../utils.js";
5
5
 
6
+ export { isGrantRoleSupported } from "../__generated__/IPermissions/write/grantRole.js";
7
+
6
8
  /**
7
9
  * @extension PERMISSIONS
8
10
  */
@@ -3,6 +3,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
3
3
  import { renounceRole as generatedRenounceRole } from "../__generated__/IPermissions/write/renounceRole.js";
4
4
  import { type RoleInput, getRoleHash } from "../utils.js";
5
5
 
6
+ export { isRenounceRoleSupported } from "../__generated__/IPermissions/write/renounceRole.js";
7
+
6
8
  /**
7
9
  * @extension PERMISSIONS
8
10
  */
@@ -3,6 +3,8 @@ import type { BaseTransactionOptions } from "../../../transaction/types.js";
3
3
  import { revokeRole as generatedRevokeRole } from "../__generated__/IPermissions/write/revokeRole.js";
4
4
  import { type RoleInput, getRoleHash } from "../utils.js";
5
5
 
6
+ export { isRevokeRoleSupported } from "../__generated__/IPermissions/write/revokeRole.js";
7
+
6
8
  /**
7
9
  * @extension PERMISSIONS
8
10
  */
@@ -1,12 +1,15 @@
1
- import type { AbiConstructor } from "abitype";
1
+ import type { AbiConstructor, AbiFunction } from "abitype";
2
2
  import type { Chain } from "../../chains/types.js";
3
3
  import type { ThirdwebClient } from "../../client/client.js";
4
4
  import { getContract } from "../../contract/contract.js";
5
5
  import { fetchPublishedContractMetadata } from "../../contract/deployment/publisher.js";
6
+ import { zkDeployContract } from "../../contract/deployment/zksync/zkDeployContract.js";
6
7
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
7
8
  import { simulateTransaction } from "../../transaction/actions/simulate.js";
8
9
  import { prepareContractCall } from "../../transaction/prepare-contract-call.js";
9
10
  import { resolveMethod } from "../../transaction/resolve-method.js";
11
+ import type { CompilerMetadata } from "../../utils/any-evm/deploy-metadata.js";
12
+ import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
10
13
  import type { Account } from "../../wallets/interfaces/wallet.js";
11
14
 
12
15
  /**
@@ -58,26 +61,19 @@ export async function deployPublishedContract(
58
61
  const { compilerMetadata, extendedMetadata } =
59
62
  await fetchPublishedContractMetadata({
60
63
  client,
61
- contractId,
64
+ contractId: isZkSyncChain(chain) ? `${contractId}_ZkSync` : contractId,
62
65
  publisher,
63
66
  version,
64
67
  });
65
68
 
66
69
  switch (extendedMetadata?.deployType) {
67
70
  case "standard": {
68
- const { deployContract } = await import(
69
- "../../contract/deployment/deploy-with-abi.js"
70
- );
71
- return deployContract({
71
+ return directDeploy({
72
72
  account,
73
73
  client,
74
74
  chain,
75
- bytecode: compilerMetadata.bytecode,
76
- constructorAbi:
77
- (compilerMetadata.abi.find(
78
- (i) => i.type === "constructor",
79
- ) as AbiConstructor) || [],
80
- constructorParams: contractParams,
75
+ compilerMetadata,
76
+ contractParams,
81
77
  });
82
78
  }
83
79
  case "autoFactory": {
@@ -97,16 +93,23 @@ export async function deployPublishedContract(
97
93
  constructorParams: implementationConstructorParams || [],
98
94
  publisher,
99
95
  });
96
+ const initializeFunction = compilerMetadata.abi.find(
97
+ (i) =>
98
+ i.type === "function" &&
99
+ i.name ===
100
+ (extendedMetadata.factoryDeploymentData
101
+ ?.implementationInitializerFunction || "initialize"),
102
+ ) as AbiFunction;
103
+ if (!initializeFunction) {
104
+ throw new Error(`Could not find initialize function for ${contractId}`);
105
+ }
100
106
  const initializeTransaction = prepareContractCall({
101
107
  contract: getContract({
102
108
  client,
103
109
  chain,
104
110
  address: implementationContract.address,
105
111
  }),
106
- method: resolveMethod(
107
- extendedMetadata.factoryDeploymentData
108
- ?.implementationInitializerFunction || "initialize",
109
- ),
112
+ method: initializeFunction,
110
113
  params: contractParams,
111
114
  });
112
115
 
@@ -154,19 +157,12 @@ export async function deployPublishedContract(
154
157
  }
155
158
  case undefined: {
156
159
  // Default to standard deployment if none was specified
157
- const { deployContract } = await import(
158
- "../../contract/deployment/deploy-with-abi.js"
159
- );
160
- return deployContract({
160
+ return directDeploy({
161
161
  account,
162
162
  client,
163
163
  chain,
164
- bytecode: compilerMetadata.bytecode,
165
- constructorAbi:
166
- (compilerMetadata.abi.find(
167
- (i) => i.type === "constructor",
168
- ) as AbiConstructor) || [],
169
- constructorParams: contractParams,
164
+ compilerMetadata,
165
+ contractParams,
170
166
  });
171
167
  }
172
168
  default:
@@ -176,3 +172,39 @@ export async function deployPublishedContract(
176
172
  );
177
173
  }
178
174
  }
175
+
176
+ async function directDeploy(options: {
177
+ account: Account;
178
+ client: ThirdwebClient;
179
+ chain: Chain;
180
+ compilerMetadata: CompilerMetadata;
181
+ contractParams: unknown[];
182
+ }) {
183
+ const { account, client, chain, compilerMetadata, contractParams } = options;
184
+
185
+ if (isZkSyncChain(chain)) {
186
+ return zkDeployContract({
187
+ account,
188
+ client,
189
+ chain,
190
+ bytecode: compilerMetadata.bytecode,
191
+ abi: compilerMetadata.abi,
192
+ params: contractParams,
193
+ });
194
+ }
195
+
196
+ const { deployContract } = await import(
197
+ "../../contract/deployment/deploy-with-abi.js"
198
+ );
199
+ return deployContract({
200
+ account,
201
+ client,
202
+ chain,
203
+ bytecode: compilerMetadata.bytecode,
204
+ constructorAbi:
205
+ (compilerMetadata.abi.find(
206
+ (i) => i.type === "constructor",
207
+ ) as AbiConstructor) || [],
208
+ constructorParams: contractParams,
209
+ });
210
+ }
@@ -0,0 +1,46 @@
1
+ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
+ import { hexToString } from "../../../utils/encoding/hex.js";
3
+ import * as ContractTypeGenerated from "../__generated__/IThirdwebContract/read/contractType.js";
4
+
5
+ /**
6
+ * Checks if the `contractType` method is supported by the given contract.
7
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
8
+ * @returns A boolean indicating if the `contractType` method is supported.
9
+ * @extension THIRDWEB
10
+ * @example
11
+ * ```ts
12
+ * import { isContractTypeSupported } from "thirdweb/extensions/thirdweb";
13
+ *
14
+ * const supported = isContractTypeSupported(["0x..."]);
15
+ * ```
16
+ */
17
+ export function isContractTypeSupported(availableSelectors: string[]) {
18
+ return ContractTypeGenerated.isContractTypeSupported(availableSelectors);
19
+ }
20
+
21
+ /**
22
+ * Calls the "contractType" function on the contract.
23
+ * @param options - The options for the contractType function.
24
+ * @returns The parsed result of the function call.
25
+ * @extension THIRDWEB
26
+ * @example
27
+ * ```ts
28
+ * import { contractType } from "thirdweb/extensions/thirdweb";
29
+ *
30
+ * const result = await contractType({
31
+ * contract,
32
+ * });
33
+ *
34
+ * ```
35
+ */
36
+ export async function contractType(options: BaseTransactionOptions) {
37
+ try {
38
+ const rawContractType = await ContractTypeGenerated.contractType(options);
39
+ const utf8 = hexToString(rawContractType);
40
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: required here
41
+ return utf8.replace(/\x00/g, "") || "custom";
42
+ } catch {
43
+ // backwards compat, if this fails for any reason we assume it's a custom contract
44
+ return "custom";
45
+ }
46
+ }
@@ -0,0 +1,55 @@
1
+ import { prepareEvent } from "../../../../../event/prepare-event.js";
2
+ import type { AbiParameterToPrimitiveType } from "abitype";
3
+
4
+ /**
5
+ * Represents the filters for the "ContractDeployed" event.
6
+ */
7
+ export type ContractDeployedEventFilters = Partial<{
8
+ deployerAddress: AbiParameterToPrimitiveType<{
9
+ type: "address";
10
+ name: "deployerAddress";
11
+ indexed: true;
12
+ }>;
13
+ bytecodeHash: AbiParameterToPrimitiveType<{
14
+ type: "bytes32";
15
+ name: "bytecodeHash";
16
+ indexed: true;
17
+ }>;
18
+ contractAddress: AbiParameterToPrimitiveType<{
19
+ type: "address";
20
+ name: "contractAddress";
21
+ indexed: true;
22
+ }>;
23
+ }>;
24
+
25
+ /**
26
+ * Creates an event object for the ContractDeployed event.
27
+ * @param filters - Optional filters to apply to the event.
28
+ * @returns The prepared event object.
29
+ * @extension ZKSYNC
30
+ * @example
31
+ * ```ts
32
+ * import { getContractEvents } from "thirdweb";
33
+ * import { contractDeployedEvent } from "thirdweb/extensions/zksync";
34
+ *
35
+ * const events = await getContractEvents({
36
+ * contract,
37
+ * events: [
38
+ * contractDeployedEvent({
39
+ * deployerAddress: ...,
40
+ * bytecodeHash: ...,
41
+ * contractAddress: ...,
42
+ * })
43
+ * ],
44
+ * });
45
+ * ```
46
+ */
47
+ export function contractDeployedEvent(
48
+ filters: ContractDeployedEventFilters = {},
49
+ ) {
50
+ return prepareEvent({
51
+ signature:
52
+ "event ContractDeployed(address indexed deployerAddress, bytes32 indexed bytecodeHash, address indexed contractAddress)",
53
+ filters,
54
+ });
55
+ }