thirdweb 5.88.3 → 5.88.5-nightly-52cbcd2d57abf4d69ee417fe98fca815e19f2f34-20250216000400

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 (196) hide show
  1. package/dist/cjs/contract/deployment/deploy-via-autofactory.js +33 -9
  2. package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
  3. package/dist/cjs/exports/contract.js +3 -1
  4. package/dist/cjs/exports/contract.js.map +1 -1
  5. package/dist/cjs/exports/modules.js +3 -1
  6. package/dist/cjs/exports/modules.js.map +1 -1
  7. package/dist/cjs/extensions/modules/common/installPublishedModule.js +4 -1
  8. package/dist/cjs/extensions/modules/common/installPublishedModule.js.map +1 -1
  9. package/dist/cjs/extensions/prebuilts/deploy-published.js +14 -2
  10. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  11. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js +33 -0
  12. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js.map +1 -0
  13. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js +152 -0
  14. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js.map +1 -0
  15. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +66 -56
  16. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +3 -1
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +2 -2
  20. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +13 -13
  22. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -1
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js +6 -0
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js.map +1 -1
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +3 -1
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -26
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +6 -12
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +2 -2
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +198 -0
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -0
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +3 -3
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  41. package/dist/cjs/react/web/ui/components/buttons.js +11 -0
  42. package/dist/cjs/react/web/ui/components/buttons.js.map +1 -1
  43. package/dist/cjs/react/web/ui/components/token/TokenRow.js +36 -0
  44. package/dist/cjs/react/web/ui/components/token/TokenRow.js.map +1 -0
  45. package/dist/cjs/utils/abi/normalizeFunctionParams.js +6 -2
  46. package/dist/cjs/utils/abi/normalizeFunctionParams.js.map +1 -1
  47. package/dist/cjs/utils/ens/namehash.js.map +1 -1
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/cjs/version.js.map +1 -1
  50. package/dist/cjs/wallets/in-app/core/wallet/index.js +1 -1
  51. package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
  52. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js +7 -4
  53. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  54. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +2 -2
  55. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  56. package/dist/esm/contract/deployment/deploy-via-autofactory.js +33 -9
  57. package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
  58. package/dist/esm/exports/contract.js +1 -0
  59. package/dist/esm/exports/contract.js.map +1 -1
  60. package/dist/esm/exports/modules.js +1 -0
  61. package/dist/esm/exports/modules.js.map +1 -1
  62. package/dist/esm/extensions/modules/common/installPublishedModule.js +4 -1
  63. package/dist/esm/extensions/modules/common/installPublishedModule.js.map +1 -1
  64. package/dist/esm/extensions/prebuilts/deploy-published.js +14 -2
  65. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  66. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js +30 -0
  67. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js.map +1 -0
  68. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js +145 -0
  69. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js.map +1 -0
  70. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +68 -58
  71. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  72. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +3 -1
  73. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js.map +1 -1
  74. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +1 -1
  75. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  76. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +13 -13
  77. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js +6 -0
  79. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js.map +1 -1
  80. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +3 -1
  81. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  82. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +3 -27
  83. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  84. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -1
  85. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  86. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +6 -12
  87. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  88. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +2 -2
  89. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  90. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +194 -0
  91. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -0
  92. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +1 -1
  93. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  94. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +1 -1
  95. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  96. package/dist/esm/react/web/ui/components/buttons.js +11 -0
  97. package/dist/esm/react/web/ui/components/buttons.js.map +1 -1
  98. package/dist/esm/react/web/ui/components/token/TokenRow.js +33 -0
  99. package/dist/esm/react/web/ui/components/token/TokenRow.js.map +1 -0
  100. package/dist/esm/utils/abi/normalizeFunctionParams.js +6 -2
  101. package/dist/esm/utils/abi/normalizeFunctionParams.js.map +1 -1
  102. package/dist/esm/utils/ens/namehash.js.map +1 -1
  103. package/dist/esm/version.js +1 -1
  104. package/dist/esm/version.js.map +1 -1
  105. package/dist/esm/wallets/in-app/core/wallet/index.js +1 -1
  106. package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
  107. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js +5 -2
  108. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  109. package/dist/esm/wallets/in-app/web/lib/web-connector.js +2 -2
  110. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  111. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts +8 -2
  112. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
  113. package/dist/types/exports/contract.d.ts +1 -0
  114. package/dist/types/exports/contract.d.ts.map +1 -1
  115. package/dist/types/exports/modules.d.ts +1 -0
  116. package/dist/types/exports/modules.d.ts.map +1 -1
  117. package/dist/types/extensions/modules/common/installPublishedModule.d.ts +1 -0
  118. package/dist/types/extensions/modules/common/installPublishedModule.d.ts.map +1 -1
  119. package/dist/types/extensions/prebuilts/deploy-published.d.ts +2 -0
  120. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  121. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.d.ts +70 -0
  122. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.d.ts.map +1 -0
  123. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.d.ts +100 -0
  124. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.d.ts.map +1 -0
  125. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  126. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.d.ts.map +1 -1
  127. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.d.ts.map +1 -1
  128. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.d.ts +1 -0
  129. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.d.ts.map +1 -1
  130. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  131. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.d.ts.map +1 -1
  132. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.d.ts.map +1 -1
  133. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -0
  134. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
  135. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.d.ts.map +1 -1
  136. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/{PaymentSelectionScreen.d.ts → TokenSelectorScreen.d.ts} +19 -14
  137. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.d.ts.map +1 -0
  138. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  139. package/dist/types/react/web/ui/components/buttons.d.ts.map +1 -1
  140. package/dist/types/react/web/ui/components/token/TokenRow.d.ts +14 -0
  141. package/dist/types/react/web/ui/components/token/TokenRow.d.ts.map +1 -0
  142. package/dist/types/utils/abi/normalizeFunctionParams.d.ts.map +1 -1
  143. package/dist/types/utils/ens/namehash.d.ts.map +1 -1
  144. package/dist/types/version.d.ts +1 -1
  145. package/dist/types/version.d.ts.map +1 -1
  146. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts +1 -1
  147. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts.map +1 -1
  148. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +2 -2
  149. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  150. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +1 -1
  151. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  152. package/package.json +1 -1
  153. package/src/contract/deployment/deploy-via-autofactory.test.ts +166 -0
  154. package/src/contract/deployment/deploy-via-autofactory.ts +50 -10
  155. package/src/exports/contract.ts +1 -0
  156. package/src/exports/modules.ts +1 -0
  157. package/src/extensions/modules/common/installPublishedModule.ts +5 -0
  158. package/src/extensions/prebuilts/deploy-published.ts +18 -2
  159. package/src/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.ts +55 -0
  160. package/src/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.ts +184 -0
  161. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +132 -86
  162. package/src/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.tsx +6 -1
  163. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +1 -1
  164. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.tsx +67 -66
  165. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.tsx +7 -0
  166. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +3 -1
  167. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.tsx +9 -75
  168. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx +3 -1
  169. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +13 -41
  170. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx +59 -53
  171. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.tsx +437 -0
  172. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +1 -1
  173. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +1 -1
  174. package/src/react/web/ui/components/buttons.tsx +12 -0
  175. package/src/react/web/ui/components/token/TokenRow.tsx +111 -0
  176. package/src/utils/abi/normalizeFunctionParams.test.ts +26 -1
  177. package/src/utils/abi/normalizeFunctionParams.ts +9 -4
  178. package/src/utils/ens/namehash.ts +4 -1
  179. package/src/version.ts +1 -1
  180. package/src/wallets/in-app/core/interfaces/connector.ts +1 -1
  181. package/src/wallets/in-app/core/wallet/index.ts +1 -1
  182. package/src/wallets/in-app/web/lib/auth/oauth.ts +6 -3
  183. package/src/wallets/in-app/web/lib/web-connector.ts +3 -3
  184. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +0 -85
  185. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +0 -1
  186. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +0 -142
  187. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +0 -1
  188. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +0 -81
  189. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +0 -1
  190. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +0 -139
  191. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +0 -1
  192. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +0 -22
  193. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +0 -1
  194. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.d.ts.map +0 -1
  195. package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +0 -220
  196. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.tsx +0 -263
@@ -1,6 +1,6 @@
1
1
  import { parseEventLogs } from "../../event/actions/parse-logs.js";
2
- import { proxyDeployedEvent } from "../../extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployed.js";
3
- import { deployProxyByImplementation } from "../../extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementation.js";
2
+ import { proxyDeployedV2Event } from "../../extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js";
3
+ import { deployProxyByImplementationV2 } from "../../extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js";
4
4
  import { eth_blockNumber } from "../../rpc/actions/eth_blockNumber.js";
5
5
  import { getRpcClient } from "../../rpc/rpc.js";
6
6
  import { encode } from "../../transaction/actions/encode.js";
@@ -23,11 +23,14 @@ import { zkDeployProxy } from "./zksync/zkDeployProxy.js";
23
23
  export function prepareAutoFactoryDeployTransaction(
24
24
  args: ClientAndChain & {
25
25
  cloneFactoryContract: ThirdwebContract;
26
- initializeTransaction: PreparedTransaction;
26
+ initializeTransaction?: PreparedTransaction;
27
+ initializeData?: `0x${string}`;
28
+ implementationAddress?: string;
29
+ isCrosschain?: boolean;
27
30
  salt?: string;
28
31
  },
29
32
  ) {
30
- return deployProxyByImplementation({
33
+ return deployProxyByImplementationV2({
31
34
  contract: args.cloneFactoryContract,
32
35
  async asyncParams() {
33
36
  const rpcRequest = getRpcClient({
@@ -35,10 +38,32 @@ export function prepareAutoFactoryDeployTransaction(
35
38
  });
36
39
  const blockNumber = await eth_blockNumber(rpcRequest);
37
40
  const salt = args.salt
38
- ? keccakId(args.salt)
39
- : toHex(blockNumber, {
40
- size: 32,
41
- });
41
+ ? args.salt.startsWith("0x") && args.salt.length === 66
42
+ ? (args.salt as `0x${string}`)
43
+ : keccakId(args.salt)
44
+ : (`0x03${toHex(blockNumber, {
45
+ size: 31,
46
+ }).replace(/^0x/, "")}` as `0x${string}`);
47
+
48
+ if (args.isCrosschain) {
49
+ if (!args.initializeData || !args.implementationAddress) {
50
+ throw new Error(
51
+ "initializeData or implementationAddress can't be undefined",
52
+ );
53
+ }
54
+
55
+ return {
56
+ data: args.initializeData,
57
+ implementation: args.implementationAddress,
58
+ salt,
59
+ extraData: "0x",
60
+ } as const;
61
+ }
62
+
63
+ if (!args.initializeTransaction) {
64
+ throw new Error("initializeTransaction can't be undefined");
65
+ }
66
+
42
67
  const implementation = await resolvePromisedValue(
43
68
  args.initializeTransaction.to,
44
69
  );
@@ -49,6 +74,7 @@ export function prepareAutoFactoryDeployTransaction(
49
74
  data: await encode(args.initializeTransaction),
50
75
  implementation,
51
76
  salt,
77
+ extraData: "0x",
52
78
  } as const;
53
79
  },
54
80
  });
@@ -60,7 +86,10 @@ export function prepareAutoFactoryDeployTransaction(
60
86
  export async function deployViaAutoFactory(
61
87
  options: ClientAndChainAndAccount & {
62
88
  cloneFactoryContract: ThirdwebContract;
63
- initializeTransaction: PreparedTransaction;
89
+ initializeTransaction?: PreparedTransaction;
90
+ initializeData?: `0x${string}`;
91
+ implementationAddress?: string;
92
+ isCrosschain?: boolean;
64
93
  salt?: string;
65
94
  },
66
95
  ): Promise<string> {
@@ -70,10 +99,16 @@ export async function deployViaAutoFactory(
70
99
  account,
71
100
  cloneFactoryContract,
72
101
  initializeTransaction,
102
+ initializeData,
103
+ implementationAddress,
104
+ isCrosschain,
73
105
  salt,
74
106
  } = options;
75
107
 
76
108
  if (await isZkSyncChain(chain)) {
109
+ if (!initializeTransaction) {
110
+ throw new Error("initializeTransaction can't be undefined");
111
+ }
77
112
  return zkDeployProxy({
78
113
  chain,
79
114
  client,
@@ -89,14 +124,19 @@ export async function deployViaAutoFactory(
89
124
  client,
90
125
  cloneFactoryContract,
91
126
  initializeTransaction,
127
+ initializeData,
128
+ implementationAddress,
129
+ isCrosschain,
92
130
  salt,
93
131
  });
94
132
  const receipt = await sendAndConfirmTransaction({
95
133
  transaction: tx,
96
134
  account,
97
135
  });
136
+
137
+ const proxyEvent = proxyDeployedV2Event();
98
138
  const decodedEvent = parseEventLogs({
99
- events: [proxyDeployedEvent()],
139
+ events: [proxyEvent],
100
140
  logs: receipt.logs,
101
141
  });
102
142
  if (decodedEvent.length === 0 || !decodedEvent[0]) {
@@ -43,3 +43,4 @@ export { prepareAutoFactoryDeployTransaction } from "../contract/deployment/depl
43
43
  export { prepareMethod } from "../utils/abi/prepare-method.js";
44
44
 
45
45
  export { getCompilerMetadata } from "../contract/actions/get-compiler-metadata.js";
46
+ export { getDeployedCloneFactoryContract } from "../contract/deployment/utils/clone-factory.js";
@@ -178,3 +178,4 @@ export {
178
178
  uninstallModuleByProxy,
179
179
  type UninstallModuleByProxyOptions,
180
180
  } from "../extensions/modules/common/uninstallModuleByProxy.js";
181
+ export { moduleInstalledEvent } from "../extensions/modules/__generated__/IModularCore/events/ModuleInstalled.js";
@@ -14,6 +14,7 @@ export type InstallPublishedModuleOptions = {
14
14
  version?: string;
15
15
  constructorParams?: Record<string, unknown>;
16
16
  moduleData?: `0x${string}`;
17
+ nonce?: number;
17
18
  };
18
19
 
19
20
  /**
@@ -43,10 +44,14 @@ export function installPublishedModule(options: InstallPublishedModuleOptions) {
43
44
  constructorParams,
44
45
  publisher,
45
46
  moduleData,
47
+ nonce,
46
48
  } = options;
47
49
 
48
50
  return installModule({
49
51
  contract,
52
+ overrides: {
53
+ nonce,
54
+ },
50
55
  asyncParams: async () => {
51
56
  const deployedModule = await getOrDeployInfraForPublishedContract({
52
57
  chain: contract.chain,
@@ -125,7 +125,9 @@ export type DeployContractfromDeployMetadataOptions = {
125
125
  account: Account;
126
126
  deployMetadata: FetchDeployMetadataResult;
127
127
  initializeParams?: Record<string, unknown>;
128
+ initializeData?: `0x${string}`;
128
129
  implementationConstructorParams?: Record<string, unknown>;
130
+ isCrosschain?: boolean;
129
131
  modules?: {
130
132
  deployMetadata: FetchDeployMetadataResult;
131
133
  initializeParams?: Record<string, unknown>;
@@ -144,7 +146,9 @@ export async function deployContractfromDeployMetadata(
144
146
  account,
145
147
  chain,
146
148
  initializeParams,
149
+ initializeData,
147
150
  deployMetadata,
151
+ isCrosschain,
148
152
  implementationConstructorParams,
149
153
  modules,
150
154
  salt,
@@ -217,16 +221,28 @@ export async function deployContractfromDeployMetadata(
217
221
  version: deployMetadata.version,
218
222
  });
219
223
 
224
+ if (isCrosschain) {
225
+ return deployViaAutoFactory({
226
+ client,
227
+ chain,
228
+ account,
229
+ cloneFactoryContract,
230
+ implementationAddress: implementationContract.address,
231
+ initializeData,
232
+ salt,
233
+ isCrosschain,
234
+ });
235
+ }
236
+
220
237
  const initializeTransaction = await getInitializeTransaction({
221
238
  client,
222
239
  chain,
223
- deployMetadata: deployMetadata,
240
+ deployMetadata,
224
241
  implementationContract,
225
242
  initializeParams: processedInitializeParams,
226
243
  account,
227
244
  modules,
228
245
  });
229
-
230
246
  return deployViaAutoFactory({
231
247
  client,
232
248
  chain,
@@ -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 "ProxyDeployedV2" event.
6
+ */
7
+ export type ProxyDeployedV2EventFilters = Partial<{
8
+ implementation: AbiParameterToPrimitiveType<{
9
+ type: "address";
10
+ name: "implementation";
11
+ indexed: true;
12
+ }>;
13
+ proxy: AbiParameterToPrimitiveType<{
14
+ type: "address";
15
+ name: "proxy";
16
+ indexed: true;
17
+ }>;
18
+ deployer: AbiParameterToPrimitiveType<{
19
+ type: "address";
20
+ name: "deployer";
21
+ indexed: true;
22
+ }>;
23
+ }>;
24
+
25
+ /**
26
+ * Creates an event object for the ProxyDeployedV2 event.
27
+ * @param filters - Optional filters to apply to the event.
28
+ * @returns The prepared event object.
29
+ * @extension THIRDWEB
30
+ * @example
31
+ * ```ts
32
+ * import { getContractEvents } from "thirdweb";
33
+ * import { proxyDeployedV2Event } from "thirdweb/extensions/thirdweb";
34
+ *
35
+ * const events = await getContractEvents({
36
+ * contract,
37
+ * events: [
38
+ * proxyDeployedV2Event({
39
+ * implementation: ...,
40
+ * proxy: ...,
41
+ * deployer: ...,
42
+ * })
43
+ * ],
44
+ * });
45
+ * ```
46
+ */
47
+ export function proxyDeployedV2Event(
48
+ filters: ProxyDeployedV2EventFilters = {},
49
+ ) {
50
+ return prepareEvent({
51
+ signature:
52
+ "event ProxyDeployedV2(address indexed implementation, address indexed proxy, address indexed deployer, bytes32 inputSalt, bytes data, bytes extraData)",
53
+ filters,
54
+ });
55
+ }
@@ -0,0 +1,184 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import type {
3
+ BaseTransactionOptions,
4
+ WithOverrides,
5
+ } from "../../../../../transaction/types.js";
6
+ import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
7
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
8
+ import { once } from "../../../../../utils/promise/once.js";
9
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
10
+
11
+ /**
12
+ * Represents the parameters for the "deployProxyByImplementationV2" function.
13
+ */
14
+ export type DeployProxyByImplementationV2Params = WithOverrides<{
15
+ implementation: AbiParameterToPrimitiveType<{
16
+ type: "address";
17
+ name: "implementation";
18
+ }>;
19
+ data: AbiParameterToPrimitiveType<{ type: "bytes"; name: "data" }>;
20
+ salt: AbiParameterToPrimitiveType<{ type: "bytes32"; name: "salt" }>;
21
+ extraData: AbiParameterToPrimitiveType<{ type: "bytes"; name: "extraData" }>;
22
+ }>;
23
+
24
+ export const FN_SELECTOR = "0xd057c8b1" as const;
25
+ const FN_INPUTS = [
26
+ {
27
+ type: "address",
28
+ name: "implementation",
29
+ },
30
+ {
31
+ type: "bytes",
32
+ name: "data",
33
+ },
34
+ {
35
+ type: "bytes32",
36
+ name: "salt",
37
+ },
38
+ {
39
+ type: "bytes",
40
+ name: "extraData",
41
+ },
42
+ ] as const;
43
+ const FN_OUTPUTS = [
44
+ {
45
+ type: "address",
46
+ },
47
+ ] as const;
48
+
49
+ /**
50
+ * Checks if the `deployProxyByImplementationV2` method is supported by the given contract.
51
+ * @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.
52
+ * @returns A boolean indicating if the `deployProxyByImplementationV2` method is supported.
53
+ * @extension THIRDWEB
54
+ * @example
55
+ * ```ts
56
+ * import { isDeployProxyByImplementationV2Supported } from "thirdweb/extensions/thirdweb";
57
+ *
58
+ * const supported = isDeployProxyByImplementationV2Supported(["0x..."]);
59
+ * ```
60
+ */
61
+ export function isDeployProxyByImplementationV2Supported(
62
+ availableSelectors: string[],
63
+ ) {
64
+ return detectMethod({
65
+ availableSelectors,
66
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
67
+ });
68
+ }
69
+
70
+ /**
71
+ * Encodes the parameters for the "deployProxyByImplementationV2" function.
72
+ * @param options - The options for the deployProxyByImplementationV2 function.
73
+ * @returns The encoded ABI parameters.
74
+ * @extension THIRDWEB
75
+ * @example
76
+ * ```ts
77
+ * import { encodeDeployProxyByImplementationV2Params } from "thirdweb/extensions/thirdweb";
78
+ * const result = encodeDeployProxyByImplementationV2Params({
79
+ * implementation: ...,
80
+ * data: ...,
81
+ * salt: ...,
82
+ * extraData: ...,
83
+ * });
84
+ * ```
85
+ */
86
+ export function encodeDeployProxyByImplementationV2Params(
87
+ options: DeployProxyByImplementationV2Params,
88
+ ) {
89
+ return encodeAbiParameters(FN_INPUTS, [
90
+ options.implementation,
91
+ options.data,
92
+ options.salt,
93
+ options.extraData,
94
+ ]);
95
+ }
96
+
97
+ /**
98
+ * Encodes the "deployProxyByImplementationV2" function into a Hex string with its parameters.
99
+ * @param options - The options for the deployProxyByImplementationV2 function.
100
+ * @returns The encoded hexadecimal string.
101
+ * @extension THIRDWEB
102
+ * @example
103
+ * ```ts
104
+ * import { encodeDeployProxyByImplementationV2 } from "thirdweb/extensions/thirdweb";
105
+ * const result = encodeDeployProxyByImplementationV2({
106
+ * implementation: ...,
107
+ * data: ...,
108
+ * salt: ...,
109
+ * extraData: ...,
110
+ * });
111
+ * ```
112
+ */
113
+ export function encodeDeployProxyByImplementationV2(
114
+ options: DeployProxyByImplementationV2Params,
115
+ ) {
116
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
117
+ // we can do this because we know the specific formats of the values
118
+ return (FN_SELECTOR +
119
+ encodeDeployProxyByImplementationV2Params(options).slice(
120
+ 2,
121
+ )) as `${typeof FN_SELECTOR}${string}`;
122
+ }
123
+
124
+ /**
125
+ * Prepares a transaction to call the "deployProxyByImplementationV2" function on the contract.
126
+ * @param options - The options for the "deployProxyByImplementationV2" function.
127
+ * @returns A prepared transaction object.
128
+ * @extension THIRDWEB
129
+ * @example
130
+ * ```ts
131
+ * import { sendTransaction } from "thirdweb";
132
+ * import { deployProxyByImplementationV2 } from "thirdweb/extensions/thirdweb";
133
+ *
134
+ * const transaction = deployProxyByImplementationV2({
135
+ * contract,
136
+ * implementation: ...,
137
+ * data: ...,
138
+ * salt: ...,
139
+ * extraData: ...,
140
+ * overrides: {
141
+ * ...
142
+ * }
143
+ * });
144
+ *
145
+ * // Send the transaction
146
+ * await sendTransaction({ transaction, account });
147
+ * ```
148
+ */
149
+ export function deployProxyByImplementationV2(
150
+ options: BaseTransactionOptions<
151
+ | DeployProxyByImplementationV2Params
152
+ | {
153
+ asyncParams: () => Promise<DeployProxyByImplementationV2Params>;
154
+ }
155
+ >,
156
+ ) {
157
+ const asyncOptions = once(async () => {
158
+ return "asyncParams" in options ? await options.asyncParams() : options;
159
+ });
160
+
161
+ return prepareContractCall({
162
+ contract: options.contract,
163
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
164
+ params: async () => {
165
+ const resolvedOptions = await asyncOptions();
166
+ return [
167
+ resolvedOptions.implementation,
168
+ resolvedOptions.data,
169
+ resolvedOptions.salt,
170
+ resolvedOptions.extraData,
171
+ ] as const;
172
+ },
173
+ value: async () => (await asyncOptions()).overrides?.value,
174
+ accessList: async () => (await asyncOptions()).overrides?.accessList,
175
+ gas: async () => (await asyncOptions()).overrides?.gas,
176
+ gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
177
+ maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
178
+ maxPriorityFeePerGas: async () =>
179
+ (await asyncOptions()).overrides?.maxPriorityFeePerGas,
180
+ nonce: async () => (await asyncOptions()).overrides?.nonce,
181
+ extraGas: async () => (await asyncOptions()).overrides?.extraGas,
182
+ erc20Value: async () => (await asyncOptions()).overrides?.erc20Value,
183
+ });
184
+ }