thirdweb 5.90.1 → 5.90.3

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 (142) hide show
  1. package/dist/cjs/contract/deployment/zksync/implementations.js +2 -2
  2. package/dist/cjs/exports/wallets/smart.js +2 -1
  3. package/dist/cjs/exports/wallets/smart.js.map +1 -1
  4. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +91 -4
  5. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  6. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js +2 -2
  7. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  8. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +2 -1
  9. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  10. package/dist/cjs/utils/promise/resolve-promised-value.js +1 -0
  11. package/dist/cjs/utils/promise/resolve-promised-value.js.map +1 -1
  12. package/dist/cjs/version.js +1 -1
  13. package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js +3 -1
  14. package/dist/cjs/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
  15. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +4 -2
  16. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  17. package/dist/cjs/wallets/smart/lib/bundler.js +1 -0
  18. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  19. package/dist/cjs/wallets/smart/lib/userop.js +53 -16
  20. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  21. package/dist/esm/contract/deployment/zksync/implementations.js +2 -2
  22. package/dist/esm/exports/wallets/smart.js +1 -1
  23. package/dist/esm/exports/wallets/smart.js.map +1 -1
  24. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +91 -4
  25. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  26. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js +2 -2
  27. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  28. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +2 -1
  29. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  30. package/dist/esm/utils/promise/resolve-promised-value.js +1 -0
  31. package/dist/esm/utils/promise/resolve-promised-value.js.map +1 -1
  32. package/dist/esm/version.js +1 -1
  33. package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js +3 -1
  34. package/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js.map +1 -1
  35. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +4 -2
  36. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  37. package/dist/esm/wallets/smart/lib/bundler.js +1 -0
  38. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  39. package/dist/esm/wallets/smart/lib/userop.js +51 -15
  40. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  41. package/dist/types/auth/core/generate-jwt.d.ts.map +1 -1
  42. package/dist/types/auth/core/generate-login-payload.d.ts.map +1 -1
  43. package/dist/types/auth/core/verify-jwt.d.ts.map +1 -1
  44. package/dist/types/auth/core/verify-login-payload.d.ts.map +1 -1
  45. package/dist/types/exports/wallets/smart.d.ts +1 -1
  46. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  47. package/dist/types/extensions/erc721/lazyMinting/helpers/hashDelayedRevealBatch.d.ts.map +1 -1
  48. package/dist/types/extensions/modules/__generated__/BatchMetadataERC1155/module/install.d.ts.map +1 -1
  49. package/dist/types/extensions/modules/__generated__/BatchMetadataERC721/module/install.d.ts.map +1 -1
  50. package/dist/types/extensions/modules/__generated__/ClaimableERC1155/module/install.d.ts.map +1 -1
  51. package/dist/types/extensions/modules/__generated__/ClaimableERC20/module/install.d.ts.map +1 -1
  52. package/dist/types/extensions/modules/__generated__/ClaimableERC721/module/install.d.ts.map +1 -1
  53. package/dist/types/extensions/modules/__generated__/MintableERC1155/module/install.d.ts.map +1 -1
  54. package/dist/types/extensions/modules/__generated__/MintableERC20/module/install.d.ts.map +1 -1
  55. package/dist/types/extensions/modules/__generated__/MintableERC721/module/install.d.ts.map +1 -1
  56. package/dist/types/extensions/modules/__generated__/OpenEditionMetadataERC721/module/install.d.ts.map +1 -1
  57. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/module/install.d.ts.map +1 -1
  58. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/module/install.d.ts.map +1 -1
  59. package/dist/types/extensions/modules/__generated__/SequentialTokenIdERC1155/module/install.d.ts.map +1 -1
  60. package/dist/types/extensions/modules/__generated__/TransferableERC1155/module/install.d.ts.map +1 -1
  61. package/dist/types/extensions/modules/__generated__/TransferableERC20/module/install.d.ts.map +1 -1
  62. package/dist/types/extensions/modules/__generated__/TransferableERC721/module/install.d.ts.map +1 -1
  63. package/dist/types/react/core/hooks/others/useInvalidateQueries.d.ts.map +1 -1
  64. package/dist/types/react/core/hooks/transaction/transaction-button-utils.d.ts.map +1 -1
  65. package/dist/types/react/core/utils/wait.d.ts.map +1 -1
  66. package/dist/types/react/native/ui/components/Address.d.ts.map +1 -1
  67. package/dist/types/react/native/ui/components/ChainIcon.d.ts.map +1 -1
  68. package/dist/types/react/native/ui/components/RNImage.d.ts.map +1 -1
  69. package/dist/types/react/native/ui/components/WalletImage.d.ts.map +1 -1
  70. package/dist/types/react/native/ui/connect/ErrorView.d.ts.map +1 -1
  71. package/dist/types/react/native/ui/connect/LoadingView.d.ts.map +1 -1
  72. package/dist/types/react/native/ui/connect/ReceiveScreen.d.ts.map +1 -1
  73. package/dist/types/react/native/ui/connect/SendScreen.d.ts.map +1 -1
  74. package/dist/types/react/native/ui/connect/SuccessView.d.ts.map +1 -1
  75. package/dist/types/react/native/ui/connect/TokenListScreen.d.ts.map +1 -1
  76. package/dist/types/react/web/providers/wallet-ui-states-provider.d.ts.map +1 -1
  77. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModal.d.ts.map +1 -1
  78. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectModalContent.d.ts.map +1 -1
  79. package/dist/types/react/web/ui/ConnectWallet/Modal/DeepLinkConnectUI.d.ts.map +1 -1
  80. package/dist/types/react/web/ui/ConnectWallet/Modal/InjectedConnectUI.d.ts.map +1 -1
  81. package/dist/types/react/web/ui/ConnectWallet/icons/ThirdwebTextIcon.d.ts.map +1 -1
  82. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts +2 -0
  83. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  84. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.d.ts.map +1 -1
  85. package/dist/types/react/web/ui/components/ChainIcon.d.ts.map +1 -1
  86. package/dist/types/react/web/ui/components/QRCode.d.ts.map +1 -1
  87. package/dist/types/react/web/ui/components/TextDivider.d.ts.map +1 -1
  88. package/dist/types/react/web/wallets/injected/locale/br.d.ts.map +1 -1
  89. package/dist/types/react/web/wallets/injected/locale/de.d.ts.map +1 -1
  90. package/dist/types/react/web/wallets/injected/locale/en.d.ts.map +1 -1
  91. package/dist/types/react/web/wallets/injected/locale/es.d.ts.map +1 -1
  92. package/dist/types/react/web/wallets/injected/locale/fr.d.ts.map +1 -1
  93. package/dist/types/react/web/wallets/injected/locale/ja.d.ts.map +1 -1
  94. package/dist/types/react/web/wallets/injected/locale/kr.d.ts.map +1 -1
  95. package/dist/types/react/web/wallets/injected/locale/tl.d.ts.map +1 -1
  96. package/dist/types/react/web/wallets/injected/locale/vi.d.ts.map +1 -1
  97. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  98. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
  99. package/dist/types/transaction/resolve-method.d.ts.map +1 -1
  100. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -1
  101. package/dist/types/utils/bigint.d.ts.map +1 -1
  102. package/dist/types/utils/domains.d.ts.map +1 -1
  103. package/dist/types/utils/promise/resolve-promised-value.d.ts.map +1 -1
  104. package/dist/types/version.d.ts +1 -1
  105. package/dist/types/wallets/connection/autoConnectCore.d.ts.map +1 -1
  106. package/dist/types/wallets/in-app/core/actions/sign-message.enclave.d.ts +3 -1
  107. package/dist/types/wallets/in-app/core/actions/sign-message.enclave.d.ts.map +1 -1
  108. package/dist/types/wallets/in-app/core/authentication/getLoginPath.d.ts.map +1 -1
  109. package/dist/types/wallets/in-app/core/constants/settings.d.ts.map +1 -1
  110. package/dist/types/wallets/in-app/core/wallet/enclave-wallet.d.ts.map +1 -1
  111. package/dist/types/wallets/in-app/native/helpers/api/fetchers.d.ts.map +1 -1
  112. package/dist/types/wallets/in-app/native/helpers/errors.d.ts.map +1 -1
  113. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  114. package/dist/types/wallets/in-app/web/lib/auth/otp.d.ts.map +1 -1
  115. package/dist/types/wallets/interfaces/wallet.d.ts +3 -1
  116. package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
  117. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  118. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  119. package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
  120. package/dist/types/wallets/smart/lib/packUserOp.d.ts.map +1 -1
  121. package/dist/types/wallets/smart/lib/userop.d.ts +24 -1
  122. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  123. package/package.json +12 -12
  124. package/src/contract/deployment/zksync/implementations.ts +2 -2
  125. package/src/exports/wallets/smart.ts +1 -0
  126. package/src/extensions/erc1155/drop1155.test.ts +0 -59
  127. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +116 -4
  128. package/src/react/web/wallets/shared/OTPLoginUI.tsx +2 -2
  129. package/src/transaction/actions/gasless/providers/engine.test.ts +6 -10
  130. package/src/transaction/actions/gasless/providers/openzeppelin.test.ts +6 -10
  131. package/src/utils/any-evm/zksync/isZkSyncChain.ts +2 -1
  132. package/src/utils/bytecode/resolveImplementation.test.ts +48 -45
  133. package/src/utils/promise/resolve-promised-value.ts +1 -0
  134. package/src/version.ts +1 -1
  135. package/src/wallets/in-app/core/actions/sign-message.enclave.ts +5 -1
  136. package/src/wallets/in-app/core/wallet/enclave-wallet.ts +4 -2
  137. package/src/wallets/interfaces/wallet.ts +9 -1
  138. package/src/wallets/smart/lib/bundler.ts +1 -0
  139. package/src/wallets/smart/lib/userop.ts +59 -17
  140. package/src/wallets/smart/smart-wallet-integration-v07.test.ts +3 -2
  141. package/src/wallets/smart/smart-wallet-integration.test.ts +1 -0
  142. package/src/wallets/smart/smart-wallet-modular.test.ts +1 -1
@@ -6,13 +6,15 @@ import type { ClientScopedStorage } from "../authentication/client-scoped-storag
6
6
 
7
7
  export async function signMessage({
8
8
  client,
9
- payload: { message, isRaw },
9
+ payload: { message, isRaw, originalMessage, chainId },
10
10
  storage,
11
11
  }: {
12
12
  client: ThirdwebClient;
13
13
  payload: {
14
14
  message: string;
15
15
  isRaw: boolean;
16
+ originalMessage?: string;
17
+ chainId?: number;
16
18
  };
17
19
  storage: ClientScopedStorage;
18
20
  }) {
@@ -37,6 +39,8 @@ export async function signMessage({
37
39
  messagePayload: {
38
40
  message,
39
41
  isRaw,
42
+ originalMessage,
43
+ chainId,
40
44
  },
41
45
  }),
42
46
  },
@@ -217,10 +217,10 @@ export class EnclaveWallet implements IWebWallet {
217
217
 
218
218
  return { transactionHash };
219
219
  },
220
- async signMessage({ message }) {
220
+ async signMessage({ message, originalMessage, chainId }) {
221
221
  const messagePayload = (() => {
222
222
  if (typeof message === "string") {
223
- return { message, isRaw: false };
223
+ return { message, isRaw: false, originalMessage, chainId };
224
224
  }
225
225
  return {
226
226
  message:
@@ -228,6 +228,8 @@ export class EnclaveWallet implements IWebWallet {
228
228
  ? message.raw
229
229
  : bytesToHex(message.raw),
230
230
  isRaw: true,
231
+ originalMessage,
232
+ chainId,
231
233
  };
232
234
  })();
233
235
 
@@ -182,7 +182,15 @@ export type Account = {
182
182
  * const signature = await account.signMessage({ message: 'hello!' });
183
183
  * ```
184
184
  */
185
- signMessage: ({ message }: { message: SignableMessage }) => Promise<Hex>;
185
+ signMessage: ({
186
+ message,
187
+ originalMessage,
188
+ chainId,
189
+ }: {
190
+ message: SignableMessage;
191
+ originalMessage?: string;
192
+ chainId?: number;
193
+ }) => Promise<Hex>;
186
194
  /**
187
195
  * Sign the given typed data and return the signature
188
196
  * @example
@@ -179,6 +179,7 @@ export async function estimateUserOpGasCost(args: {
179
179
  client: args.client,
180
180
  }),
181
181
  ),
182
+ waitForDeployment: false,
182
183
  });
183
184
 
184
185
  let gasLimit = 0n;
@@ -1,5 +1,5 @@
1
1
  import { maxUint96 } from "ox/Solidity";
2
- import { concat, keccak256, toHex } from "viem";
2
+ import { concat } from "viem";
3
3
  import type { Chain } from "../../../chains/types.js";
4
4
  import type { ThirdwebClient } from "../../../client/client.js";
5
5
  import {
@@ -16,9 +16,11 @@ import type { PreparedTransaction } from "../../../transaction/prepare-transacti
16
16
  import type { TransactionReceipt } from "../../../transaction/types.js";
17
17
  import { encodeAbiParameters } from "../../../utils/abi/encodeAbiParameters.js";
18
18
  import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
19
- import type { Hex } from "../../../utils/encoding/hex.js";
19
+ import { type Hex, toHex } from "../../../utils/encoding/hex.js";
20
20
  import { hexToBytes } from "../../../utils/encoding/to-bytes.js";
21
21
  import { isThirdwebUrl } from "../../../utils/fetch.js";
22
+ import { keccak256 } from "../../../utils/hashing/keccak256.js";
23
+ import { stringify } from "../../../utils/json.js";
22
24
  import { resolvePromisedValue } from "../../../utils/promise/resolve-promised-value.js";
23
25
  import type { Account } from "../../interfaces/wallet.js";
24
26
  import type {
@@ -321,7 +323,9 @@ async function populateUserOp_v0_7(args: {
321
323
  createAccountOverride: overrides?.createAccount,
322
324
  }),
323
325
  );
324
- markAccountDeploying(accountContract);
326
+ if (waitForDeployment) {
327
+ markAccountDeploying(accountContract);
328
+ }
325
329
  }
326
330
 
327
331
  const partialOp: UserOperationV07 = {
@@ -481,7 +485,9 @@ async function populateUserOp_v0_6(args: {
481
485
  accountSalt: overrides?.accountSalt,
482
486
  createAccountOverride: overrides?.createAccount,
483
487
  });
484
- markAccountDeploying(accountContract);
488
+ if (waitForDeployment) {
489
+ markAccountDeploying(accountContract);
490
+ }
485
491
  }
486
492
 
487
493
  const partialOp: UserOperationV06 = {
@@ -593,6 +599,54 @@ export async function signUserOp(args: {
593
599
  }): Promise<UserOperationV06 | UserOperationV07> {
594
600
  const { userOp, chain, entrypointAddress, adminAccount } = args;
595
601
 
602
+ const userOpHash = await getUserOpHash({
603
+ client: args.client,
604
+ userOp,
605
+ chain,
606
+ entrypointAddress,
607
+ });
608
+
609
+ if (adminAccount.signMessage) {
610
+ const signature = await adminAccount.signMessage({
611
+ message: {
612
+ raw: hexToBytes(userOpHash),
613
+ },
614
+ originalMessage: stringify(userOp),
615
+ chainId: chain.id,
616
+ });
617
+ return {
618
+ ...userOp,
619
+ signature,
620
+ };
621
+ }
622
+ throw new Error("signMessage not implemented in signingAccount");
623
+ }
624
+
625
+ /**
626
+ * Get the hash of a user operation.
627
+ * @param args - The options for getting the user operation hash
628
+ * @returns - The user operation hash
629
+ * @example
630
+ * ```ts
631
+ * import { getUserOpHash } from "thirdweb/wallets/smart";
632
+ *
633
+ * const userOp = await createUnsignedUserOp(...);
634
+ * const userOpHash = await getUserOpHash({
635
+ * client,
636
+ * userOp,
637
+ * chain,
638
+ * });
639
+ * ```
640
+ * @walletUtils
641
+ */
642
+ export async function getUserOpHash(args: {
643
+ client: ThirdwebClient;
644
+ userOp: UserOperationV06 | UserOperationV07;
645
+ chain: Chain;
646
+ entrypointAddress?: string;
647
+ }): Promise<Hex> {
648
+ const { userOp, chain, entrypointAddress } = args;
649
+
596
650
  const entrypointVersion = getEntryPointVersion(
597
651
  entrypointAddress || ENTRYPOINT_ADDRESS_v0_6,
598
652
  );
@@ -619,19 +673,7 @@ export async function signUserOp(args: {
619
673
  userOp: userOp as UserOperationV06,
620
674
  });
621
675
  }
622
-
623
- if (adminAccount.signMessage) {
624
- const signature = await adminAccount.signMessage({
625
- message: {
626
- raw: hexToBytes(userOpHash),
627
- },
628
- });
629
- return {
630
- ...userOp,
631
- signature,
632
- };
633
- }
634
- throw new Error("signMessage not implemented in signingAccount");
676
+ return userOpHash;
635
677
  }
636
678
 
637
679
  async function getAccountInitCode(options: {
@@ -49,9 +49,10 @@ const contract = getContract({
49
49
  address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
50
50
  });
51
51
 
52
- describe.sequential(
52
+ describe.runIf(process.env.TW_SECRET_KEY).sequential(
53
53
  "SmartWallet 0.7 core tests",
54
54
  {
55
+ retry: 0,
55
56
  timeout: 240_000,
56
57
  },
57
58
  () => {
@@ -200,7 +201,7 @@ describe.sequential(
200
201
  });
201
202
 
202
203
  await expect(tx).rejects.toMatchInlineSnapshot(`
203
- [TransactionError: Error - Not authorized
204
+ [TransactionError: Execution Reverted: {"code":3,"message":"execution reverted: Not authorized"}
204
205
 
205
206
  contract: ${contract.address}
206
207
  chainId: 11155111]
@@ -52,6 +52,7 @@ const factoryAddress = "0x564cf6453a1b0FF8DB603E92EA4BbD410dea45F3"; // pre 712
52
52
  describe.runIf(process.env.TW_SECRET_KEY).sequential(
53
53
  "SmartWallet core tests",
54
54
  {
55
+ retry: 0,
55
56
  timeout: 240_000,
56
57
  },
57
58
  () => {
@@ -28,7 +28,7 @@ const client = TEST_CLIENT;
28
28
  const DEFAULT_FACTORY_ADDRESS = "0xB1846E893CA01c5Dcdaa40371C1e13f2e0Df5717";
29
29
  const DEFAULT_VALIDATOR_ADDRESS = "0x7D3631d823e0De311DC86f580946EeF2eEC81fba";
30
30
 
31
- describe.sequential(
31
+ describe.runIf(process.env.TW_SECRET_KEY).sequential(
32
32
  "SmartWallet modular tests",
33
33
  {
34
34
  retry: 0,