thirdweb 5.53.0 → 5.54.0-nightly-c3800d6c0765a9a0b69ac0a4a390d20cec932419-20240912000413

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 (445) hide show
  1. package/dist/cjs/analytics/track.js +18 -0
  2. package/dist/cjs/analytics/track.js.map +1 -1
  3. package/dist/cjs/chains/chain-definitions/polygon.js +1 -1
  4. package/dist/cjs/chains/chain-definitions/polygon.js.map +1 -1
  5. package/dist/cjs/contract/deployment/deploy-deterministic.js +19 -0
  6. package/dist/cjs/contract/deployment/deploy-deterministic.js.map +1 -1
  7. package/dist/cjs/contract/deployment/deploy-via-autofactory.js +3 -1
  8. package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
  9. package/dist/cjs/contract/deployment/deploy-with-abi.js +50 -6
  10. package/dist/cjs/contract/deployment/deploy-with-abi.js.map +1 -1
  11. package/dist/cjs/contract/deployment/utils/bootstrap.js +23 -8
  12. package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
  13. package/dist/cjs/contract/deployment/utils/clone-factory.js +1 -2
  14. package/dist/cjs/contract/deployment/utils/clone-factory.js.map +1 -1
  15. package/dist/cjs/contract/deployment/utils/infra.js +38 -2
  16. package/dist/cjs/contract/deployment/utils/infra.js.map +1 -1
  17. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js +7 -1
  18. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js.map +1 -1
  19. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js +2 -1
  20. package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -1
  21. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js +5 -4
  22. package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js.map +1 -1
  23. package/dist/cjs/exports/contract.js +4 -1
  24. package/dist/cjs/exports/contract.js.map +1 -1
  25. package/dist/cjs/exports/deploys.js +8 -3
  26. package/dist/cjs/exports/deploys.js.map +1 -1
  27. package/dist/cjs/exports/extensions/erc721.js +4 -2
  28. package/dist/cjs/exports/extensions/erc721.js.map +1 -1
  29. package/dist/cjs/exports/utils.js +3 -1
  30. package/dist/cjs/exports/utils.js.map +1 -1
  31. package/dist/cjs/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +14 -16
  32. package/dist/cjs/extensions/erc721/lazyMinting/read/getBatchesToReveal.js.map +1 -1
  33. package/dist/cjs/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js +19 -0
  34. package/dist/cjs/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
  35. package/dist/cjs/extensions/erc721/lazyMinting/write/reveal.js +3 -20
  36. package/dist/cjs/extensions/erc721/lazyMinting/write/reveal.js.map +1 -1
  37. package/dist/cjs/extensions/erc721/write/updateTokenURI.js +3 -0
  38. package/dist/cjs/extensions/erc721/write/updateTokenURI.js.map +1 -1
  39. package/dist/cjs/extensions/marketplace/offers/write/makeOffer.js +0 -1
  40. package/dist/cjs/extensions/marketplace/offers/write/makeOffer.js.map +1 -1
  41. package/dist/cjs/extensions/modules/common/getOrDeployModule.js +2 -4
  42. package/dist/cjs/extensions/modules/common/getOrDeployModule.js.map +1 -1
  43. package/dist/cjs/extensions/modules/common/installPublishedModule.js +1 -1
  44. package/dist/cjs/extensions/modules/common/installPublishedModule.js.map +1 -1
  45. package/dist/cjs/extensions/modules/common/uninstallPublishedModule.js +1 -2
  46. package/dist/cjs/extensions/modules/common/uninstallPublishedModule.js.map +1 -1
  47. package/dist/cjs/extensions/prebuilts/deploy-erc1155.js +0 -1
  48. package/dist/cjs/extensions/prebuilts/deploy-erc1155.js.map +1 -1
  49. package/dist/cjs/extensions/prebuilts/deploy-erc20.js +0 -1
  50. package/dist/cjs/extensions/prebuilts/deploy-erc20.js.map +1 -1
  51. package/dist/cjs/extensions/prebuilts/deploy-erc721.js +0 -1
  52. package/dist/cjs/extensions/prebuilts/deploy-erc721.js.map +1 -1
  53. package/dist/cjs/extensions/prebuilts/deploy-marketplace.js +5 -7
  54. package/dist/cjs/extensions/prebuilts/deploy-marketplace.js.map +1 -1
  55. package/dist/cjs/extensions/prebuilts/deploy-modular.js +32 -27
  56. package/dist/cjs/extensions/prebuilts/deploy-modular.js.map +1 -1
  57. package/dist/cjs/extensions/prebuilts/deploy-published.js +121 -35
  58. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  59. package/dist/cjs/extensions/prebuilts/deploy-split.js +0 -1
  60. package/dist/cjs/extensions/prebuilts/deploy-split.js.map +1 -1
  61. package/dist/cjs/extensions/prebuilts/deploy-vote.js +0 -1
  62. package/dist/cjs/extensions/prebuilts/deploy-vote.js.map +1 -1
  63. package/dist/cjs/extensions/prebuilts/get-required-transactions.js +66 -0
  64. package/dist/cjs/extensions/prebuilts/get-required-transactions.js.map +1 -0
  65. package/dist/cjs/react/core/hooks/others/useProfiles.js +1 -1
  66. package/dist/cjs/react/core/social/useSocialProfiles.js +2 -0
  67. package/dist/cjs/react/core/social/useSocialProfiles.js.map +1 -1
  68. package/dist/cjs/react/core/utils/walletIcon.js +5 -1
  69. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  70. package/dist/cjs/react/native/ui/components/Address.js +1 -3
  71. package/dist/cjs/react/native/ui/components/Address.js.map +1 -1
  72. package/dist/cjs/react/native/ui/components/WalletImage.js +2 -0
  73. package/dist/cjs/react/native/ui/components/WalletImage.js.map +1 -1
  74. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js +1 -0
  75. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  76. package/dist/cjs/react/native/ui/icons/svgs.js +2 -1
  77. package/dist/cjs/react/native/ui/icons/svgs.js.map +1 -1
  78. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +7 -0
  79. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  80. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +20 -3
  81. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  82. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +7 -0
  83. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -1
  84. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +7 -0
  85. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  86. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +7 -0
  87. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  88. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +49 -0
  89. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  90. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +20 -0
  91. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  92. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -0
  93. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  94. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js +1 -0
  95. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  96. package/dist/cjs/social/profiles.js +2 -1
  97. package/dist/cjs/social/profiles.js.map +1 -1
  98. package/dist/cjs/utils/abi/normalizeFunctionParams.js +24 -0
  99. package/dist/cjs/utils/abi/normalizeFunctionParams.js.map +1 -0
  100. package/dist/cjs/utils/any-evm/compute-published-contract-address.js +14 -6
  101. package/dist/cjs/utils/any-evm/compute-published-contract-address.js.map +1 -1
  102. package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js +17 -5
  103. package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
  104. package/dist/cjs/utils/any-evm/deploy-metadata.js +0 -19
  105. package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
  106. package/dist/cjs/utils/caching/lru.js +15 -14
  107. package/dist/cjs/utils/caching/lru.js.map +1 -1
  108. package/dist/cjs/utils/domains.js +1 -1
  109. package/dist/cjs/utils/domains.js.map +1 -1
  110. package/dist/cjs/utils/ipfs.js +2 -0
  111. package/dist/cjs/utils/ipfs.js.map +1 -1
  112. package/dist/cjs/version.js +1 -1
  113. package/dist/cjs/version.js.map +1 -1
  114. package/dist/cjs/wallets/in-app/core/authentication/types.js +1 -0
  115. package/dist/cjs/wallets/in-app/core/authentication/types.js.map +1 -1
  116. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js +3 -13
  117. package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
  118. package/dist/cjs/wallets/in-app/native/native-connector.js +2 -0
  119. package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
  120. package/dist/cjs/wallets/in-app/web/in-app.js +2 -0
  121. package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
  122. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +2 -0
  123. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  124. package/dist/cjs/wallets/types.js +1 -0
  125. package/dist/cjs/wallets/types.js.map +1 -1
  126. package/dist/esm/analytics/track.js +17 -0
  127. package/dist/esm/analytics/track.js.map +1 -1
  128. package/dist/esm/chains/chain-definitions/polygon.js +1 -1
  129. package/dist/esm/chains/chain-definitions/polygon.js.map +1 -1
  130. package/dist/esm/contract/deployment/deploy-deterministic.js +19 -1
  131. package/dist/esm/contract/deployment/deploy-deterministic.js.map +1 -1
  132. package/dist/esm/contract/deployment/deploy-via-autofactory.js +3 -1
  133. package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
  134. package/dist/esm/contract/deployment/deploy-with-abi.js +50 -6
  135. package/dist/esm/contract/deployment/deploy-with-abi.js.map +1 -1
  136. package/dist/esm/contract/deployment/utils/bootstrap.js +23 -9
  137. package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
  138. package/dist/esm/contract/deployment/utils/clone-factory.js +1 -2
  139. package/dist/esm/contract/deployment/utils/clone-factory.js.map +1 -1
  140. package/dist/esm/contract/deployment/utils/infra.js +38 -4
  141. package/dist/esm/contract/deployment/utils/infra.js.map +1 -1
  142. package/dist/esm/contract/deployment/zksync/zkDeployContract.js +7 -1
  143. package/dist/esm/contract/deployment/zksync/zkDeployContract.js.map +1 -1
  144. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js +2 -1
  145. package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -1
  146. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js +5 -4
  147. package/dist/esm/contract/deployment/zksync/zkDeployProxy.js.map +1 -1
  148. package/dist/esm/exports/contract.js +2 -0
  149. package/dist/esm/exports/contract.js.map +1 -1
  150. package/dist/esm/exports/deploys.js +4 -2
  151. package/dist/esm/exports/deploys.js.map +1 -1
  152. package/dist/esm/exports/extensions/erc721.js +3 -3
  153. package/dist/esm/exports/extensions/erc721.js.map +1 -1
  154. package/dist/esm/exports/utils.js +1 -0
  155. package/dist/esm/exports/utils.js.map +1 -1
  156. package/dist/esm/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +13 -15
  157. package/dist/esm/extensions/erc721/lazyMinting/read/getBatchesToReveal.js.map +1 -1
  158. package/dist/esm/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js +21 -3
  159. package/dist/esm/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.js.map +1 -1
  160. package/dist/esm/extensions/erc721/lazyMinting/write/reveal.js +1 -20
  161. package/dist/esm/extensions/erc721/lazyMinting/write/reveal.js.map +1 -1
  162. package/dist/esm/extensions/erc721/write/updateTokenURI.js +3 -0
  163. package/dist/esm/extensions/erc721/write/updateTokenURI.js.map +1 -1
  164. package/dist/esm/extensions/marketplace/offers/write/makeOffer.js +0 -1
  165. package/dist/esm/extensions/marketplace/offers/write/makeOffer.js.map +1 -1
  166. package/dist/esm/extensions/modules/common/getOrDeployModule.js +2 -4
  167. package/dist/esm/extensions/modules/common/getOrDeployModule.js.map +1 -1
  168. package/dist/esm/extensions/modules/common/installPublishedModule.js +1 -1
  169. package/dist/esm/extensions/modules/common/installPublishedModule.js.map +1 -1
  170. package/dist/esm/extensions/modules/common/uninstallPublishedModule.js +1 -2
  171. package/dist/esm/extensions/modules/common/uninstallPublishedModule.js.map +1 -1
  172. package/dist/esm/extensions/prebuilts/deploy-erc1155.js +0 -1
  173. package/dist/esm/extensions/prebuilts/deploy-erc1155.js.map +1 -1
  174. package/dist/esm/extensions/prebuilts/deploy-erc20.js +0 -1
  175. package/dist/esm/extensions/prebuilts/deploy-erc20.js.map +1 -1
  176. package/dist/esm/extensions/prebuilts/deploy-erc721.js +0 -1
  177. package/dist/esm/extensions/prebuilts/deploy-erc721.js.map +1 -1
  178. package/dist/esm/extensions/prebuilts/deploy-marketplace.js +5 -7
  179. package/dist/esm/extensions/prebuilts/deploy-marketplace.js.map +1 -1
  180. package/dist/esm/extensions/prebuilts/deploy-modular.js +33 -28
  181. package/dist/esm/extensions/prebuilts/deploy-modular.js.map +1 -1
  182. package/dist/esm/extensions/prebuilts/deploy-published.js +121 -35
  183. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  184. package/dist/esm/extensions/prebuilts/deploy-split.js +0 -1
  185. package/dist/esm/extensions/prebuilts/deploy-split.js.map +1 -1
  186. package/dist/esm/extensions/prebuilts/deploy-vote.js +0 -1
  187. package/dist/esm/extensions/prebuilts/deploy-vote.js.map +1 -1
  188. package/dist/esm/extensions/prebuilts/get-required-transactions.js +63 -0
  189. package/dist/esm/extensions/prebuilts/get-required-transactions.js.map +1 -0
  190. package/dist/esm/react/core/hooks/others/useProfiles.js +1 -1
  191. package/dist/esm/react/core/social/useSocialProfiles.js +2 -0
  192. package/dist/esm/react/core/social/useSocialProfiles.js.map +1 -1
  193. package/dist/esm/react/core/utils/walletIcon.js +4 -0
  194. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  195. package/dist/esm/react/native/ui/components/Address.js +1 -3
  196. package/dist/esm/react/native/ui/components/Address.js.map +1 -1
  197. package/dist/esm/react/native/ui/components/WalletImage.js +3 -1
  198. package/dist/esm/react/native/ui/components/WalletImage.js.map +1 -1
  199. package/dist/esm/react/native/ui/connect/InAppWalletUI.js +2 -1
  200. package/dist/esm/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  201. package/dist/esm/react/native/ui/icons/svgs.js +1 -0
  202. package/dist/esm/react/native/ui/icons/svgs.js.map +1 -1
  203. package/dist/esm/react/web/ui/ConnectWallet/Details.js +7 -0
  204. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  205. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +20 -3
  206. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  207. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +7 -0
  208. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -1
  209. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +7 -0
  210. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  211. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +7 -0
  212. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  213. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +49 -0
  214. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  215. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +20 -0
  216. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
  217. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -0
  218. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  219. package/dist/esm/react/web/wallets/shared/oauthSignIn.js +1 -0
  220. package/dist/esm/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  221. package/dist/esm/social/profiles.js +2 -1
  222. package/dist/esm/social/profiles.js.map +1 -1
  223. package/dist/esm/utils/abi/normalizeFunctionParams.js +21 -0
  224. package/dist/esm/utils/abi/normalizeFunctionParams.js.map +1 -0
  225. package/dist/esm/utils/any-evm/compute-published-contract-address.js +15 -7
  226. package/dist/esm/utils/any-evm/compute-published-contract-address.js.map +1 -1
  227. package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js +16 -5
  228. package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
  229. package/dist/esm/utils/any-evm/deploy-metadata.js +0 -19
  230. package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
  231. package/dist/esm/utils/caching/lru.js +15 -14
  232. package/dist/esm/utils/caching/lru.js.map +1 -1
  233. package/dist/esm/utils/domains.js +1 -1
  234. package/dist/esm/utils/domains.js.map +1 -1
  235. package/dist/esm/utils/ipfs.js +2 -0
  236. package/dist/esm/utils/ipfs.js.map +1 -1
  237. package/dist/esm/version.js +1 -1
  238. package/dist/esm/version.js.map +1 -1
  239. package/dist/esm/wallets/in-app/core/authentication/types.js +1 -0
  240. package/dist/esm/wallets/in-app/core/authentication/types.js.map +1 -1
  241. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js +3 -13
  242. package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
  243. package/dist/esm/wallets/in-app/native/native-connector.js +2 -0
  244. package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
  245. package/dist/esm/wallets/in-app/web/in-app.js +2 -0
  246. package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
  247. package/dist/esm/wallets/in-app/web/lib/web-connector.js +2 -0
  248. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  249. package/dist/esm/wallets/types.js +1 -0
  250. package/dist/esm/wallets/types.js.map +1 -1
  251. package/dist/types/analytics/track.d.ts +15 -0
  252. package/dist/types/analytics/track.d.ts.map +1 -1
  253. package/dist/types/contract/actions/compiler-metadata.d.ts +2 -2
  254. package/dist/types/contract/actions/compiler-metadata.d.ts.map +1 -1
  255. package/dist/types/contract/actions/get-compiler-metadata.d.ts +1 -1
  256. package/dist/types/contract/actions/get-compiler-metadata.d.ts.map +1 -1
  257. package/dist/types/contract/deployment/deploy-deterministic.d.ts +12 -1
  258. package/dist/types/contract/deployment/deploy-deterministic.d.ts.map +1 -1
  259. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
  260. package/dist/types/contract/deployment/deploy-with-abi.d.ts +33 -10
  261. package/dist/types/contract/deployment/deploy-with-abi.d.ts.map +1 -1
  262. package/dist/types/contract/deployment/utils/bootstrap.d.ts +8 -3
  263. package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
  264. package/dist/types/contract/deployment/utils/clone-factory.d.ts.map +1 -1
  265. package/dist/types/contract/deployment/utils/infra.d.ts +24 -1
  266. package/dist/types/contract/deployment/utils/infra.d.ts.map +1 -1
  267. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts +2 -1
  268. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts.map +1 -1
  269. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts +1 -1
  270. package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts.map +1 -1
  271. package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts.map +1 -1
  272. package/dist/types/contract/verification/source-files.d.ts +2 -2
  273. package/dist/types/contract/verification/source-files.d.ts.map +1 -1
  274. package/dist/types/exports/contract.d.ts +1 -0
  275. package/dist/types/exports/contract.d.ts.map +1 -1
  276. package/dist/types/exports/deploys.d.ts +4 -2
  277. package/dist/types/exports/deploys.d.ts.map +1 -1
  278. package/dist/types/exports/extensions/erc721.d.ts +3 -3
  279. package/dist/types/exports/extensions/erc721.d.ts.map +1 -1
  280. package/dist/types/exports/utils.d.ts +1 -0
  281. package/dist/types/exports/utils.d.ts.map +1 -1
  282. package/dist/types/extensions/erc721/lazyMinting/read/getBatchesToReveal.d.ts +1 -1
  283. package/dist/types/extensions/erc721/lazyMinting/read/getBatchesToReveal.d.ts.map +1 -1
  284. package/dist/types/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.d.ts +12 -0
  285. package/dist/types/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.d.ts.map +1 -1
  286. package/dist/types/extensions/erc721/lazyMinting/write/reveal.d.ts +1 -0
  287. package/dist/types/extensions/erc721/lazyMinting/write/reveal.d.ts.map +1 -1
  288. package/dist/types/extensions/erc721/write/updateTokenURI.d.ts +3 -0
  289. package/dist/types/extensions/erc721/write/updateTokenURI.d.ts.map +1 -1
  290. package/dist/types/extensions/marketplace/offers/write/makeOffer.d.ts.map +1 -1
  291. package/dist/types/extensions/modules/common/getOrDeployModule.d.ts +0 -2
  292. package/dist/types/extensions/modules/common/getOrDeployModule.d.ts.map +1 -1
  293. package/dist/types/extensions/modules/common/installPublishedModule.d.ts +1 -1
  294. package/dist/types/extensions/modules/common/installPublishedModule.d.ts.map +1 -1
  295. package/dist/types/extensions/modules/common/uninstallPublishedModule.d.ts +0 -1
  296. package/dist/types/extensions/modules/common/uninstallPublishedModule.d.ts.map +1 -1
  297. package/dist/types/extensions/prebuilts/deploy-erc1155.d.ts.map +1 -1
  298. package/dist/types/extensions/prebuilts/deploy-erc20.d.ts.map +1 -1
  299. package/dist/types/extensions/prebuilts/deploy-erc721.d.ts.map +1 -1
  300. package/dist/types/extensions/prebuilts/deploy-marketplace.d.ts.map +1 -1
  301. package/dist/types/extensions/prebuilts/deploy-modular.d.ts +1 -0
  302. package/dist/types/extensions/prebuilts/deploy-modular.d.ts.map +1 -1
  303. package/dist/types/extensions/prebuilts/deploy-published.d.ts +50 -3
  304. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  305. package/dist/types/extensions/prebuilts/deploy-split.d.ts.map +1 -1
  306. package/dist/types/extensions/prebuilts/deploy-vote.d.ts.map +1 -1
  307. package/dist/types/extensions/prebuilts/get-required-transactions.d.ts +26 -0
  308. package/dist/types/extensions/prebuilts/get-required-transactions.d.ts.map +1 -0
  309. package/dist/types/react/core/hooks/others/useProfiles.d.ts +1 -1
  310. package/dist/types/react/core/social/useSocialProfiles.d.ts +2 -0
  311. package/dist/types/react/core/social/useSocialProfiles.d.ts.map +1 -1
  312. package/dist/types/react/core/utils/storage.d.ts +1 -1
  313. package/dist/types/react/core/utils/storage.d.ts.map +1 -1
  314. package/dist/types/react/core/utils/walletIcon.d.ts +3 -1
  315. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  316. package/dist/types/react/native/ui/components/Address.d.ts.map +1 -1
  317. package/dist/types/react/native/ui/components/WalletImage.d.ts.map +1 -1
  318. package/dist/types/react/native/ui/connect/InAppWalletUI.d.ts.map +1 -1
  319. package/dist/types/react/native/ui/icons/svgs.d.ts +1 -0
  320. package/dist/types/react/native/ui/icons/svgs.d.ts.map +1 -1
  321. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  322. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  323. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts.map +1 -1
  324. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -1
  325. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts.map +1 -1
  326. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  327. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -1
  328. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  329. package/dist/types/react/web/wallets/shared/oauthSignIn.d.ts.map +1 -1
  330. package/dist/types/social/profiles.d.ts +2 -1
  331. package/dist/types/social/profiles.d.ts.map +1 -1
  332. package/dist/types/utils/abi/normalizeFunctionParams.d.ts +3 -0
  333. package/dist/types/utils/abi/normalizeFunctionParams.d.ts.map +1 -0
  334. package/dist/types/utils/any-evm/compute-published-contract-address.d.ts +2 -6
  335. package/dist/types/utils/any-evm/compute-published-contract-address.d.ts.map +1 -1
  336. package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts +17 -2
  337. package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts.map +1 -1
  338. package/dist/types/utils/any-evm/deploy-metadata.d.ts +3 -6
  339. package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
  340. package/dist/types/utils/caching/lru.d.ts +4 -13
  341. package/dist/types/utils/caching/lru.d.ts.map +1 -1
  342. package/dist/types/utils/ipfs.d.ts +1 -1
  343. package/dist/types/utils/ipfs.d.ts.map +1 -1
  344. package/dist/types/version.d.ts +1 -1
  345. package/dist/types/version.d.ts.map +1 -1
  346. package/dist/types/wallets/in-app/core/authentication/types.d.ts +1 -0
  347. package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
  348. package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +1 -1
  349. package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
  350. package/dist/types/wallets/in-app/web/in-app.d.ts +2 -0
  351. package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
  352. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  353. package/dist/types/wallets/types.d.ts +2 -2
  354. package/dist/types/wallets/types.d.ts.map +1 -1
  355. package/package.json +17 -22
  356. package/src/analytics/track.ts +29 -0
  357. package/src/chains/chain-definitions/polygon.ts +1 -1
  358. package/src/contract/actions/compiler-metadata.ts +2 -2
  359. package/src/contract/deployment/deploy-deterministic.test.ts +16 -5
  360. package/src/contract/deployment/deploy-deterministic.ts +35 -2
  361. package/src/contract/deployment/deploy-via-autofactory.test.ts +0 -2
  362. package/src/contract/deployment/deploy-via-autofactory.ts +3 -0
  363. package/src/contract/deployment/deploy-with-abi.ts +63 -24
  364. package/src/contract/deployment/publisher.test.ts +2 -2
  365. package/src/contract/deployment/utils/bootstrap.test.ts +3 -2
  366. package/src/contract/deployment/utils/bootstrap.ts +36 -12
  367. package/src/contract/deployment/utils/clone-factory.ts +1 -2
  368. package/src/contract/deployment/utils/infra.ts +61 -5
  369. package/src/contract/deployment/zksync/zkDeployContract.ts +13 -2
  370. package/src/contract/deployment/zksync/zkDeployDeterministic.ts +4 -3
  371. package/src/contract/deployment/zksync/zkDeployProxy.ts +5 -4
  372. package/src/contract/verification/source-files.ts +2 -2
  373. package/src/exports/contract.ts +6 -0
  374. package/src/exports/deploys.ts +14 -5
  375. package/src/exports/extensions/erc721.ts +3 -1
  376. package/src/exports/utils.ts +2 -0
  377. package/src/extensions/airdrop/write/airdropERC1155WithSignature.test.ts +4 -1
  378. package/src/extensions/airdrop/write/airdropERC20WithSignature.test.ts +4 -1
  379. package/src/extensions/airdrop/write/airdropERC721WithSignature.test.ts +4 -1
  380. package/src/extensions/airdrop/write/claimERC1155.test.ts +4 -1
  381. package/src/extensions/airdrop/write/claimERC20.test.ts +4 -1
  382. package/src/extensions/airdrop/write/claimERC721.test.ts +4 -1
  383. package/src/extensions/erc1155/write/updateTokenURI.test.ts +54 -0
  384. package/src/extensions/erc20/write/getApprovalForTransaction.test.ts +112 -0
  385. package/src/extensions/erc20/write/transferFrom.test.ts +104 -0
  386. package/src/extensions/erc4337/account/permissions.test.ts +4 -1
  387. package/src/extensions/erc721/drops/write/updateMetadata.test.ts +29 -0
  388. package/src/extensions/erc721/lazyMinting/read/getBatchesToReveal.ts +15 -15
  389. package/src/extensions/erc721/lazyMinting/write/createAndReveal.test.ts +84 -0
  390. package/src/extensions/erc721/lazyMinting/write/createDelayedRevealBatch.ts +33 -3
  391. package/src/extensions/erc721/lazyMinting/write/reveal.test.ts +1 -45
  392. package/src/extensions/erc721/lazyMinting/write/reveal.ts +2 -23
  393. package/src/extensions/erc721/write/updateTokenURI.test.ts +56 -0
  394. package/src/extensions/erc721/write/updateTokenURI.ts +3 -0
  395. package/src/extensions/marketplace/offers/offers.test.ts +0 -1
  396. package/src/extensions/marketplace/offers/write/makeOffer.ts +0 -1
  397. package/src/extensions/modules/common/getOrDeployModule.ts +2 -7
  398. package/src/extensions/modules/common/installPublishedModule.ts +2 -2
  399. package/src/extensions/modules/common/uninstallPublishedModule.ts +1 -9
  400. package/src/extensions/prebuilts/deploy-erc1155.ts +0 -1
  401. package/src/extensions/prebuilts/deploy-erc20.ts +0 -1
  402. package/src/extensions/prebuilts/deploy-erc721.ts +0 -1
  403. package/src/extensions/prebuilts/deploy-marketplace.ts +6 -8
  404. package/src/extensions/prebuilts/deploy-modular-core.test.ts +63 -2
  405. package/src/extensions/prebuilts/deploy-modular.ts +50 -38
  406. package/src/extensions/prebuilts/deploy-published.test.ts +61 -4
  407. package/src/extensions/prebuilts/deploy-published.ts +208 -55
  408. package/src/extensions/prebuilts/deploy-split.ts +0 -1
  409. package/src/extensions/prebuilts/deploy-vote.ts +0 -1
  410. package/src/extensions/prebuilts/get-required-transactions.test.ts +61 -0
  411. package/src/extensions/prebuilts/get-required-transactions.ts +110 -0
  412. package/src/react/core/hooks/others/useProfiles.ts +1 -1
  413. package/src/react/core/social/useSocialProfiles.ts +2 -0
  414. package/src/react/core/utils/walletIcon.ts +5 -0
  415. package/src/react/native/ui/components/Address.tsx +1 -3
  416. package/src/react/native/ui/components/WalletImage.tsx +3 -0
  417. package/src/react/native/ui/connect/InAppWalletUI.tsx +2 -0
  418. package/src/react/native/ui/icons/svgs.ts +2 -0
  419. package/src/react/web/ui/ConnectWallet/Details.tsx +7 -0
  420. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +31 -3
  421. package/src/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.tsx +7 -0
  422. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +7 -0
  423. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.tsx +7 -0
  424. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +53 -0
  425. package/src/react/web/ui/TransactionButton/TransactionModal.tsx +21 -0
  426. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +1 -0
  427. package/src/react/web/wallets/shared/oauthSignIn.ts +1 -0
  428. package/src/social/profiles.ts +2 -1
  429. package/src/transaction/actions/zksync/send-eip712-transaction.test.ts +13 -13
  430. package/src/utils/abi/normalizeFunctionParams.ts +29 -0
  431. package/src/utils/any-evm/compute-published-contract-address.ts +17 -12
  432. package/src/utils/any-evm/compute-published-contract-deploy-info.ts +31 -12
  433. package/src/utils/any-evm/deploy-metadata.ts +9 -34
  434. package/src/utils/bytecode/resolveImplementation.test.ts +7 -5
  435. package/src/utils/caching/lru.test.ts +38 -0
  436. package/src/utils/caching/lru.ts +18 -14
  437. package/src/utils/domains.ts +1 -1
  438. package/src/utils/ipfs.ts +3 -1
  439. package/src/version.ts +1 -1
  440. package/src/wallets/in-app/core/authentication/types.ts +1 -0
  441. package/src/wallets/in-app/core/eip5972/in-app-wallet-calls.ts +3 -14
  442. package/src/wallets/in-app/native/native-connector.ts +2 -0
  443. package/src/wallets/in-app/web/in-app.ts +2 -0
  444. package/src/wallets/in-app/web/lib/web-connector.ts +2 -0
  445. package/src/wallets/types.ts +1 -0
@@ -6,11 +6,15 @@ import { getOrDeployInfraForPublishedContract } from "../../contract/deployment/
6
6
  import { upload } from "../../storage/upload.js";
7
7
  import type { FileOrBufferOrString } from "../../storage/upload/types.js";
8
8
  import { type Address, getAddress } from "../../utils/address.js";
9
+ import type {} from "../../utils/any-evm/deploy-metadata.js";
9
10
  import type { Hex } from "../../utils/encoding/hex.js";
10
11
  import type { Prettify } from "../../utils/type-utils.js";
11
12
  import type { ClientAndChainAndAccount } from "../../utils/types.js";
12
13
  import type { Account } from "../../wallets/interfaces/wallet.js";
13
- import { initialize } from "../modules/__generated__/ERC20Core/write/initialize.js";
14
+ import {
15
+ type InitializeParams,
16
+ initialize,
17
+ } from "../modules/__generated__/ERC20Core/write/initialize.js";
14
18
 
15
19
  export type CoreType = "ERC20" | "ERC721" | "ERC1155";
16
20
 
@@ -48,6 +52,7 @@ export type DeployModularContractOptions = Prettify<
48
52
  params: ModularContractParams;
49
53
  modules?: ModuleInstaller[];
50
54
  publisher?: string;
55
+ salt?: string;
51
56
  }
52
57
  >;
53
58
 
@@ -93,6 +98,7 @@ export async function deployModularContract(
93
98
  core,
94
99
  params: coreParams,
95
100
  modules = [],
101
+ salt,
96
102
  } = options;
97
103
  const contractId = getContractId(core);
98
104
  const { cloneFactoryContract, implementationContract } =
@@ -101,35 +107,59 @@ export async function deployModularContract(
101
107
  client,
102
108
  account,
103
109
  contractId,
104
- constructorParams: [],
105
110
  publisher,
106
111
  });
107
- const initializeTransaction = await getInitializeTransaction({
108
- client,
109
- chain,
110
- account,
111
- implementationContract,
112
- contractId,
113
- coreParams,
114
- accountAddress: getAddress(account.address),
115
- modules,
116
- });
112
+ const contractURI =
113
+ coreParams.contractURI ||
114
+ (await upload({
115
+ client,
116
+ files: [
117
+ {
118
+ name: coreParams.name,
119
+ description: coreParams.description,
120
+ symbol: coreParams.symbol,
121
+ image: coreParams.image,
122
+ external_link: coreParams.external_link,
123
+ social_urls: coreParams.social_urls,
124
+ },
125
+ ],
126
+ })) ||
127
+ "";
128
+ const initializeTransaction =
129
+ await getInitializeTransactionForModularContract({
130
+ client,
131
+ chain,
132
+ account,
133
+ implementationContract,
134
+ contractId,
135
+ initializeParams: {
136
+ name: coreParams.name || "",
137
+ symbol: coreParams.symbol || "",
138
+ contractURI,
139
+ owner: coreParams.defaultAdmin
140
+ ? getAddress(coreParams.defaultAdmin)
141
+ : account.address,
142
+ },
143
+ accountAddress: getAddress(account.address),
144
+ modules,
145
+ });
117
146
  return deployViaAutoFactory({
118
147
  client,
119
148
  chain,
120
149
  account,
121
150
  cloneFactoryContract,
122
151
  initializeTransaction,
152
+ salt,
123
153
  });
124
154
  }
125
155
 
126
- async function getInitializeTransaction(options: {
156
+ async function getInitializeTransactionForModularContract(options: {
127
157
  client: ThirdwebClient;
128
158
  chain: Chain;
129
159
  account: Account;
130
160
  implementationContract: ThirdwebContract;
131
161
  contractId: string;
132
- coreParams: ModularContractParams;
162
+ initializeParams: Omit<InitializeParams, "modules" | "moduleInstallData">;
133
163
  accountAddress: Address;
134
164
  modules: ModuleInstaller[];
135
165
  }) {
@@ -137,28 +167,12 @@ async function getInitializeTransaction(options: {
137
167
  client,
138
168
  implementationContract,
139
169
  contractId,
140
- coreParams,
170
+ initializeParams,
141
171
  modules,
142
- accountAddress,
143
172
  chain,
144
173
  account,
145
174
  } = options;
146
- const contractURI =
147
- coreParams.contractURI ||
148
- (await upload({
149
- client,
150
- files: [
151
- {
152
- name: coreParams.name,
153
- description: coreParams.description,
154
- symbol: coreParams.symbol,
155
- image: coreParams.image,
156
- external_link: coreParams.external_link,
157
- social_urls: coreParams.social_urls,
158
- },
159
- ],
160
- })) ||
161
- "";
175
+
162
176
  switch (contractId) {
163
177
  case "ERC20CoreInitializable":
164
178
  case "ERC721CoreInitializable":
@@ -179,12 +193,10 @@ async function getInitializeTransaction(options: {
179
193
  // all 3 cores have the same initializer
180
194
  return initialize({
181
195
  contract: implementationContract,
182
- owner: coreParams.defaultAdmin
183
- ? getAddress(coreParams.defaultAdmin)
184
- : accountAddress,
185
- name: coreParams.name || "",
186
- symbol: coreParams.symbol || "",
187
- contractURI,
196
+ owner: initializeParams.owner,
197
+ name: initializeParams.name,
198
+ symbol: initializeParams.symbol,
199
+ contractURI: initializeParams.contractURI,
188
200
  modules: moduleAddresses,
189
201
  moduleInstallData,
190
202
  });
@@ -17,24 +17,60 @@ describe.runIf(process.env.TW_SECRET_KEY)(
17
17
  chain: ANVIL_CHAIN,
18
18
  account: TEST_ACCOUNT_A,
19
19
  contractId: "AccountFactory",
20
- contractParams: [TEST_ACCOUNT_A.address, ENTRYPOINT_ADDRESS_v0_6],
20
+ contractParams: {
21
+ defaultAdmin: TEST_ACCOUNT_A.address,
22
+ entrypoint: ENTRYPOINT_ADDRESS_v0_6,
23
+ },
21
24
  });
22
25
  expect(address).toBeDefined();
23
26
  expect(address.length).toBe(42);
24
27
  });
25
28
 
29
+ it("should deploy a published direct deploy contract deterministically", async () => {
30
+ const address = await deployPublishedContract({
31
+ client: TEST_CLIENT,
32
+ chain: ANVIL_CHAIN,
33
+ account: TEST_ACCOUNT_A,
34
+ contractId: "AccountFactory",
35
+ contractParams: {
36
+ defaultAdmin: TEST_ACCOUNT_A.address,
37
+ entrypoint: ENTRYPOINT_ADDRESS_v0_6,
38
+ },
39
+ salt: "test",
40
+ });
41
+ expect(address).toBe("0x75fc461544723c0dac7b46256027878e82ddc2cb");
42
+ });
43
+
26
44
  it("should deploy a published autofactory contract", async () => {
27
45
  const address = await deployPublishedContract({
28
46
  client: TEST_CLIENT,
29
47
  chain: ANVIL_CHAIN,
30
48
  account: TEST_ACCOUNT_A,
31
49
  contractId: "Airdrop",
32
- contractParams: [TEST_ACCOUNT_A.address, ""],
50
+ contractParams: {
51
+ defaultAdmin: TEST_ACCOUNT_A.address,
52
+ contractURI: "",
53
+ },
33
54
  });
34
55
  expect(address).toBeDefined();
35
56
  expect(address.length).toBe(42);
36
57
  });
37
58
 
59
+ it("should deploy a published autofactory contract deterministically", async () => {
60
+ const address = await deployPublishedContract({
61
+ client: TEST_CLIENT,
62
+ chain: ANVIL_CHAIN,
63
+ account: TEST_ACCOUNT_A,
64
+ contractId: "Airdrop",
65
+ contractParams: {
66
+ defaultAdmin: TEST_ACCOUNT_A.address,
67
+ contractURI: "",
68
+ },
69
+ salt: "test",
70
+ });
71
+ expect(address).toBe("0x777151741260F8d4098dD492e45FdB536F442672");
72
+ });
73
+
38
74
  // TODO: Replace these tests' live contracts with mocks
39
75
  it("should deploy a published contract with no constructor", async () => {
40
76
  const address = await deployPublishedContract({
@@ -43,7 +79,6 @@ describe.runIf(process.env.TW_SECRET_KEY)(
43
79
  account: TEST_ACCOUNT_A,
44
80
  contractId: "Counter",
45
81
  publisher: "0x4a706de5CE9bfe2f9C37BA945805e396d1810824",
46
- contractParams: [],
47
82
  });
48
83
  expect(address).toBeDefined();
49
84
  expect(address.length).toBe(42);
@@ -56,7 +91,29 @@ describe.runIf(process.env.TW_SECRET_KEY)(
56
91
  account: TEST_ACCOUNT_A,
57
92
  contractId: "MyToken",
58
93
  publisher: "0xc77e556cd96235A7B72d46EAAf13405d698CB2C0",
59
- contractParams: [],
94
+ });
95
+ expect(address).toBeDefined();
96
+ expect(address.length).toBe(42);
97
+ });
98
+
99
+ it("should deploy a published contract with no fuzzy params", async () => {
100
+ const address = await deployPublishedContract({
101
+ client: TEST_CLIENT,
102
+ chain: ANVIL_CHAIN,
103
+ account: TEST_ACCOUNT_A,
104
+ contractId: "DropERC1155",
105
+ contractParams: {
106
+ defaultAdmin: TEST_ACCOUNT_A.address, // defaultAdmin
107
+ name: "test", // name
108
+ symbol: "test", // symbol
109
+ contractURI: "", // contractURI
110
+ trustedForwarders: [], // trustedForwarders
111
+ saleRecipient: TEST_ACCOUNT_A.address, // saleRecipient
112
+ royaltyRecipient: TEST_ACCOUNT_A.address, // royaltyRecipient
113
+ royaltyBps: 0n, // royaltyBps
114
+ platformFeeBps: 0n, // platformFeeBps
115
+ platformFeeRecipient: TEST_ACCOUNT_A.address, // platformFeeRecipient
116
+ },
60
117
  });
61
118
  expect(address).toBeDefined();
62
119
  expect(address.length).toBe(42);
@@ -1,15 +1,22 @@
1
- import type { AbiConstructor, AbiFunction } from "abitype";
1
+ import type { AbiFunction } from "abitype";
2
2
  import type { Chain } from "../../chains/types.js";
3
3
  import type { ThirdwebClient } from "../../client/client.js";
4
- import { getContract } from "../../contract/contract.js";
4
+ import { type ThirdwebContract, getContract } from "../../contract/contract.js";
5
5
  import { fetchPublishedContractMetadata } from "../../contract/deployment/publisher.js";
6
+ import { getOrDeployInfraContractFromMetadata } from "../../contract/deployment/utils/bootstrap.js";
7
+ import {} from "../../contract/deployment/utils/infra.js";
6
8
  import { zkDeployContract } from "../../contract/deployment/zksync/zkDeployContract.js";
7
9
  import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
8
10
  import { simulateTransaction } from "../../transaction/actions/simulate.js";
9
11
  import { prepareContractCall } from "../../transaction/prepare-contract-call.js";
10
12
  import { resolveMethod } from "../../transaction/resolve-method.js";
13
+ import { encodeAbiParameters } from "../../utils/abi/encodeAbiParameters.js";
14
+ import { normalizeFunctionParams } from "../../utils/abi/normalizeFunctionParams.js";
15
+ import { getAddress } from "../../utils/address.js";
11
16
  import type { CompilerMetadata } from "../../utils/any-evm/deploy-metadata.js";
17
+ import type { FetchDeployMetadataResult } from "../../utils/any-evm/deploy-metadata.js";
12
18
  import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
19
+ import type { Hex } from "../../utils/encoding/hex.js";
13
20
  import type { Account } from "../../wallets/interfaces/wallet.js";
14
21
 
15
22
  /**
@@ -20,10 +27,11 @@ export type DeployPublishedContractOptions = {
20
27
  chain: Chain;
21
28
  account: Account;
22
29
  contractId: string;
23
- contractParams: unknown[];
30
+ contractParams?: Record<string, unknown>;
24
31
  publisher?: string;
25
32
  version?: string;
26
- implementationConstructorParams?: unknown[];
33
+ implementationConstructorParams?: Record<string, unknown>;
34
+ salt?: string;
27
35
  };
28
36
 
29
37
  /**
@@ -31,6 +39,27 @@ export type DeployPublishedContractOptions = {
31
39
  * @param options - the deploy options
32
40
  * @returns a promise that resolves to the deployed contract address
33
41
  * @example
42
+ *
43
+ * ## Deploying a published contract
44
+ *
45
+ * ```ts
46
+ * import { deployPublishedContract } from "thirdweb/deploys";
47
+ *
48
+ * const address = await deployedPublishedContract({
49
+ * client,
50
+ * chain,
51
+ * account,
52
+ * contractId: "MyPublishedContract",
53
+ * contractParams: {
54
+ * param1: "value1",
55
+ * param2: 123,
56
+ * },
57
+ * publisher: "0x...", // optional, defaults to the thirdweb deployer
58
+ * });
59
+ * ```
60
+ *
61
+ * ## Deploying a published contract deterministically
62
+ *
34
63
  * ```ts
35
64
  * import { deployPublishedContract } from "thirdweb/deploys";
36
65
  *
@@ -39,8 +68,12 @@ export type DeployPublishedContractOptions = {
39
68
  * chain,
40
69
  * account,
41
70
  * contractId: "MyPublishedContract",
42
- * contractParams: [...],
71
+ * contractParams: {
72
+ * param1: "value1",
73
+ * param2: 123,
74
+ * },
43
75
  * publisher: "0x...",
76
+ * salt: "your-salt", // this will deterministically deploy the contract at the same address on all chains
44
77
  * });
45
78
  * ```
46
79
  * @extension DEPLOY
@@ -57,23 +90,68 @@ export async function deployPublishedContract(
57
90
  publisher,
58
91
  version,
59
92
  implementationConstructorParams,
93
+ salt,
60
94
  } = options;
61
- const { compilerMetadata, extendedMetadata } =
62
- await fetchPublishedContractMetadata({
63
- client,
64
- contractId: isZkSyncChain(chain) ? `${contractId}_ZkSync` : contractId,
65
- publisher,
66
- version,
67
- });
95
+ const deployMetadata = await fetchPublishedContractMetadata({
96
+ client,
97
+ contractId: isZkSyncChain(chain) ? `${contractId}_ZkSync` : contractId,
98
+ publisher,
99
+ version,
100
+ });
68
101
 
69
- switch (extendedMetadata?.deployType) {
102
+ return deployContractfromDeployMetadata({
103
+ account,
104
+ chain,
105
+ deployMetadata,
106
+ client,
107
+ initializeParams: contractParams,
108
+ implementationConstructorParams,
109
+ salt,
110
+ });
111
+ }
112
+
113
+ /**
114
+ * @internal
115
+ */
116
+ export type DeployContractfromDeployMetadataOptions = {
117
+ client: ThirdwebClient;
118
+ chain: Chain;
119
+ account: Account;
120
+ deployMetadata: FetchDeployMetadataResult;
121
+ initializeParams?: Record<string, unknown>;
122
+ implementationConstructorParams?: Record<string, unknown>;
123
+ modules?: {
124
+ deployMetadata: FetchDeployMetadataResult;
125
+ initializeParams?: Record<string, unknown>;
126
+ }[];
127
+ salt?: string;
128
+ };
129
+
130
+ /**
131
+ * @internal
132
+ */
133
+ export async function deployContractfromDeployMetadata(
134
+ options: DeployContractfromDeployMetadataOptions,
135
+ ): Promise<string> {
136
+ const {
137
+ client,
138
+ account,
139
+ chain,
140
+ initializeParams,
141
+ deployMetadata,
142
+ implementationConstructorParams,
143
+ modules,
144
+ salt,
145
+ } = options;
146
+ switch (deployMetadata?.deployType) {
70
147
  case "standard": {
71
148
  return directDeploy({
72
149
  account,
73
150
  client,
74
151
  chain,
75
- compilerMetadata,
76
- contractParams,
152
+ compilerMetadata: deployMetadata,
153
+ contractParams: initializeParams,
154
+ salt,
77
155
  });
78
156
  }
79
157
  case "autoFactory": {
@@ -89,28 +167,19 @@ export async function deployPublishedContract(
89
167
  chain,
90
168
  client,
91
169
  account,
92
- contractId,
93
- constructorParams: implementationConstructorParams || [],
94
- publisher,
170
+ contractId: deployMetadata.name,
171
+ constructorParams: implementationConstructorParams,
172
+ publisher: deployMetadata.publisher,
95
173
  });
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
- }
106
- const initializeTransaction = prepareContractCall({
107
- contract: getContract({
108
- client,
109
- chain,
110
- address: implementationContract.address,
111
- }),
112
- method: initializeFunction,
113
- params: contractParams,
174
+
175
+ const initializeTransaction = await getInitializeTransaction({
176
+ client,
177
+ chain,
178
+ deployMetadata: deployMetadata,
179
+ implementationContract,
180
+ initializeParams,
181
+ account,
182
+ modules,
114
183
  });
115
184
 
116
185
  return deployViaAutoFactory({
@@ -119,17 +188,18 @@ export async function deployPublishedContract(
119
188
  account,
120
189
  cloneFactoryContract,
121
190
  initializeTransaction,
191
+ salt,
122
192
  });
123
193
  }
124
194
  case "customFactory": {
125
- if (!extendedMetadata?.factoryDeploymentData?.customFactoryInput) {
195
+ if (!deployMetadata?.factoryDeploymentData?.customFactoryInput) {
126
196
  throw new Error("No custom factory info found");
127
197
  }
128
198
  const factoryAddress =
129
- extendedMetadata?.factoryDeploymentData?.customFactoryInput
199
+ deployMetadata?.factoryDeploymentData?.customFactoryInput
130
200
  ?.customFactoryAddresses?.[chain.id];
131
201
  const factoryFunction =
132
- extendedMetadata.factoryDeploymentData?.customFactoryInput
202
+ deployMetadata.factoryDeploymentData?.customFactoryInput
133
203
  ?.factoryFunction;
134
204
  if (!factoryAddress || !factoryFunction) {
135
205
  throw new Error(`No factory address found on chain ${chain.id}`);
@@ -140,20 +210,21 @@ export async function deployPublishedContract(
140
210
  chain,
141
211
  address: factoryAddress,
142
212
  });
213
+ const method = await resolveMethod(factoryFunction)(factory);
143
214
  const deployTx = prepareContractCall({
144
215
  contract: factory,
145
- method: resolveMethod(factoryFunction),
146
- params: contractParams,
216
+ method,
217
+ params: normalizeFunctionParams(method, initializeParams),
147
218
  });
148
219
  // asumption here is that the factory address returns the deployed proxy address
149
- const address = simulateTransaction({
220
+ const address = await simulateTransaction({
150
221
  transaction: deployTx,
151
222
  });
152
223
  await sendAndConfirmTransaction({
153
224
  transaction: deployTx,
154
225
  account,
155
226
  });
156
- return address;
227
+ return address as string;
157
228
  }
158
229
  case undefined: {
159
230
  // Default to standard deployment if none was specified
@@ -161,15 +232,14 @@ export async function deployPublishedContract(
161
232
  account,
162
233
  client,
163
234
  chain,
164
- compilerMetadata,
165
- contractParams,
235
+ compilerMetadata: deployMetadata,
236
+ contractParams: initializeParams,
237
+ salt,
166
238
  });
167
239
  }
168
240
  default:
169
241
  // If a deployType was specified but we don't support it, throw an error
170
- throw new Error(
171
- `Unsupported deploy type: ${extendedMetadata?.deployType}`,
172
- );
242
+ throw new Error(`Unsupported deploy type: ${deployMetadata?.deployType}`);
173
243
  }
174
244
  }
175
245
 
@@ -178,9 +248,11 @@ async function directDeploy(options: {
178
248
  client: ThirdwebClient;
179
249
  chain: Chain;
180
250
  compilerMetadata: CompilerMetadata;
181
- contractParams: unknown[];
182
- }) {
183
- const { account, client, chain, compilerMetadata, contractParams } = options;
251
+ contractParams?: Record<string, unknown>;
252
+ salt?: string;
253
+ }): Promise<string> {
254
+ const { account, client, chain, compilerMetadata, contractParams, salt } =
255
+ options;
184
256
 
185
257
  if (isZkSyncChain(chain)) {
186
258
  return zkDeployContract({
@@ -190,6 +262,7 @@ async function directDeploy(options: {
190
262
  bytecode: compilerMetadata.bytecode,
191
263
  abi: compilerMetadata.abi,
192
264
  params: contractParams,
265
+ salt,
193
266
  });
194
267
  }
195
268
 
@@ -201,10 +274,90 @@ async function directDeploy(options: {
201
274
  client,
202
275
  chain,
203
276
  bytecode: compilerMetadata.bytecode,
204
- constructorAbi:
205
- (compilerMetadata.abi.find(
206
- (i) => i.type === "constructor",
207
- ) as AbiConstructor) || [],
277
+ abi: compilerMetadata.abi,
208
278
  constructorParams: contractParams,
279
+ salt,
280
+ });
281
+ }
282
+
283
+ async function getInitializeTransaction(options: {
284
+ client: ThirdwebClient;
285
+ chain: Chain;
286
+ account: Account;
287
+ implementationContract: ThirdwebContract;
288
+ deployMetadata: FetchDeployMetadataResult;
289
+ initializeParams?: Record<string, unknown>;
290
+ modules?: {
291
+ deployMetadata: FetchDeployMetadataResult;
292
+ initializeParams?: Record<string, unknown>;
293
+ }[];
294
+ }) {
295
+ const {
296
+ account,
297
+ client,
298
+ chain,
299
+ deployMetadata: metadata,
300
+ initializeParams = {},
301
+ implementationContract,
302
+ modules = [],
303
+ } = options;
304
+
305
+ const initializeFunction = metadata.abi.find(
306
+ (i) =>
307
+ i.type === "function" &&
308
+ i.name ===
309
+ (metadata.factoryDeploymentData?.implementationInitializerFunction ||
310
+ "initialize"),
311
+ ) as AbiFunction;
312
+ if (!initializeFunction) {
313
+ throw new Error(`Could not find initialize function for ${metadata.name}`);
314
+ }
315
+
316
+ const hasModules =
317
+ initializeFunction.inputs.find(
318
+ (i) => i.name === "modules" || i.name === "_modules",
319
+ ) &&
320
+ initializeFunction.inputs.find(
321
+ (i) => i.name === "moduleInstallData" || i.name === "_moduleInstallData",
322
+ );
323
+ if (hasModules) {
324
+ const moduleAddresses: Hex[] = [];
325
+ const moduleInstallData: Hex[] = [];
326
+ for (const module of modules) {
327
+ // deploy the module if not already deployed
328
+ const contract = await getOrDeployInfraContractFromMetadata({
329
+ client,
330
+ chain,
331
+ account,
332
+ contractMetadata: module.deployMetadata,
333
+ });
334
+
335
+ const installFunction = module.deployMetadata.abi.find(
336
+ (i) => i.type === "function" && i.name === "encodeBytesOnInstall",
337
+ ) as AbiFunction | undefined;
338
+
339
+ moduleAddresses.push(getAddress(contract.address));
340
+ moduleInstallData.push(
341
+ installFunction
342
+ ? encodeAbiParameters(
343
+ installFunction.inputs,
344
+ normalizeFunctionParams(installFunction, module.initializeParams),
345
+ )
346
+ : "0x",
347
+ );
348
+ }
349
+ initializeParams.modules = moduleAddresses;
350
+ initializeParams.moduleInstallData = moduleInstallData;
351
+ }
352
+
353
+ const initializeTransaction = prepareContractCall({
354
+ contract: getContract({
355
+ client,
356
+ chain,
357
+ address: implementationContract.address,
358
+ }),
359
+ method: initializeFunction,
360
+ params: normalizeFunctionParams(initializeFunction, initializeParams),
209
361
  });
362
+ return initializeTransaction;
210
363
  }
@@ -83,7 +83,6 @@ export async function deploySplitContract(options: DeploySplitContractOptions) {
83
83
  client,
84
84
  account,
85
85
  contractId: "Split",
86
- constructorParams: [],
87
86
  });
88
87
  const initializeTransaction = await getInitializeTransaction({
89
88
  client,
@@ -97,7 +97,6 @@ export async function deployVoteContract(options: DeployVoteContractOptions) {
97
97
  client,
98
98
  account,
99
99
  contractId: "VoteERC20",
100
- constructorParams: [],
101
100
  });
102
101
  const initializeTransaction = await getInitializeTransaction({
103
102
  client,