thirdweb 5.73.1-nightly-33c23e789e577bd6463e135cec4e25cfcfc9964a-20241205000340 → 5.74.0

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 (85) hide show
  1. package/dist/cjs/exports/wallets/smart.js +2 -1
  2. package/dist/cjs/exports/wallets/smart.js.map +1 -1
  3. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -10
  4. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  5. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
  6. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  7. package/dist/cjs/version.js +1 -1
  8. package/dist/cjs/version.js.map +1 -1
  9. package/dist/cjs/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
  10. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +8 -4
  11. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  12. package/dist/cjs/wallets/in-app/web/ecosystem.js +1 -1
  13. package/dist/cjs/wallets/in-app/web/in-app.js +2 -2
  14. package/dist/cjs/wallets/smart/index.js +19 -12
  15. package/dist/cjs/wallets/smart/index.js.map +1 -1
  16. package/dist/cjs/wallets/smart/lib/bundler.js +2 -1
  17. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  18. package/dist/cjs/wallets/smart/lib/constants.js +21 -1
  19. package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
  20. package/dist/cjs/wallets/smart/lib/userop.js +19 -4
  21. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  22. package/dist/cjs/wallets/smart/smart-wallet.js +1 -1
  23. package/dist/cjs/wallets/smart/types.js.map +1 -1
  24. package/dist/esm/exports/wallets/smart.js +1 -1
  25. package/dist/esm/exports/wallets/smart.js.map +1 -1
  26. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -10
  27. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  28. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
  29. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  30. package/dist/esm/version.js +1 -1
  31. package/dist/esm/version.js.map +1 -1
  32. package/dist/esm/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
  33. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +9 -5
  34. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  35. package/dist/esm/wallets/in-app/web/ecosystem.js +1 -1
  36. package/dist/esm/wallets/in-app/web/in-app.js +2 -2
  37. package/dist/esm/wallets/smart/index.js +20 -13
  38. package/dist/esm/wallets/smart/index.js.map +1 -1
  39. package/dist/esm/wallets/smart/lib/bundler.js +2 -1
  40. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  41. package/dist/esm/wallets/smart/lib/constants.js +20 -0
  42. package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
  43. package/dist/esm/wallets/smart/lib/userop.js +20 -5
  44. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  45. package/dist/esm/wallets/smart/smart-wallet.js +1 -1
  46. package/dist/esm/wallets/smart/types.js.map +1 -1
  47. package/dist/types/exports/wallets/smart.d.ts +1 -1
  48. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  49. package/dist/types/react/web/ui/ConnectWallet/screens/SignatureScreen.d.ts.map +1 -1
  50. package/dist/types/version.d.ts +1 -1
  51. package/dist/types/version.d.ts.map +1 -1
  52. package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts +1 -1
  53. package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts.map +1 -1
  54. package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
  55. package/dist/types/wallets/in-app/web/ecosystem.d.ts +1 -1
  56. package/dist/types/wallets/in-app/web/in-app.d.ts +2 -2
  57. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  58. package/dist/types/wallets/smart/lib/bundler.d.ts +6 -0
  59. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  60. package/dist/types/wallets/smart/lib/constants.d.ts +4 -0
  61. package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
  62. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  63. package/dist/types/wallets/smart/smart-wallet.d.ts +1 -1
  64. package/dist/types/wallets/smart/types.d.ts +7 -4
  65. package/dist/types/wallets/smart/types.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/src/exports/wallets/smart.ts +1 -0
  68. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.test.tsx +287 -0
  69. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +13 -5
  70. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.test.tsx +87 -0
  71. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +1 -1
  72. package/src/version.ts +1 -1
  73. package/src/wallets/ecosystem/get-ecosystem-wallet-auth-options.ts +1 -1
  74. package/src/wallets/ecosystem/is-ecosystem-wallet.ts +1 -1
  75. package/src/wallets/in-app/core/wallet/in-app-core.test.ts +270 -0
  76. package/src/wallets/in-app/core/wallet/in-app-core.ts +16 -5
  77. package/src/wallets/in-app/web/ecosystem.ts +1 -1
  78. package/src/wallets/in-app/web/in-app.ts +2 -2
  79. package/src/wallets/smart/index.ts +37 -17
  80. package/src/wallets/smart/lib/bundler.ts +14 -4
  81. package/src/wallets/smart/lib/constants.ts +23 -0
  82. package/src/wallets/smart/lib/userop.ts +31 -8
  83. package/src/wallets/smart/smart-wallet-tokenpaymaster.test.ts +117 -0
  84. package/src/wallets/smart/smart-wallet.ts +1 -1
  85. package/src/wallets/smart/types.ts +8 -4
@@ -0,0 +1,117 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { TEST_CLIENT } from "../../../test/src/test-clients.js";
3
+ import { base } from "../../chains/chain-definitions/base.js";
4
+ import { celo } from "../../chains/chain-definitions/celo.js";
5
+ import { defineChain } from "../../chains/utils.js";
6
+ import { sendTransaction } from "../../transaction/actions/send-transaction.js";
7
+ import { prepareTransaction } from "../../transaction/prepare-transaction.js";
8
+ import { privateKeyToAccount } from "../private-key.js";
9
+ import { TokenPaymaster } from "./lib/constants.js";
10
+ import { smartWallet } from "./smart-wallet.js";
11
+
12
+ const client = TEST_CLIENT;
13
+
14
+ describe.runIf(process.env.TW_SECRET_KEY).skip.sequential(
15
+ "SmartWallet token paymaster tests",
16
+ {
17
+ retry: 0,
18
+ timeout: 240_000,
19
+ },
20
+ () => {
21
+ it.skip("should send a transaction with base usdc", async () => {
22
+ const chain = base;
23
+ const tokenPaymaster = TokenPaymaster.BASE_USDC;
24
+ const personalAccount = privateKeyToAccount({
25
+ client,
26
+ privateKey:
27
+ "edf401e8ddbb743f3353b055081cb220ce4c5c04e08da162d86e0dba7c6f0f01", // 0xa470E7c88611364f55B2d7912613e10AF2eA918D
28
+ });
29
+ const wallet = smartWallet({
30
+ chain,
31
+ gasless: true,
32
+ overrides: {
33
+ tokenPaymaster,
34
+ },
35
+ });
36
+ const smartAccount = await wallet.connect({
37
+ client: TEST_CLIENT,
38
+ personalAccount,
39
+ });
40
+ const tx = prepareTransaction({
41
+ client,
42
+ chain,
43
+ to: smartAccount.address,
44
+ value: 0n,
45
+ });
46
+ const receipt = await sendTransaction({
47
+ transaction: tx,
48
+ account: smartAccount,
49
+ });
50
+ expect(receipt.transactionHash).toBeDefined();
51
+ });
52
+
53
+ it.skip("should send a transaction with base celo", async () => {
54
+ const chain = celo;
55
+ const tokenPaymaster = TokenPaymaster.CELO_CUSD;
56
+ const personalAccount = privateKeyToAccount({
57
+ client,
58
+ privateKey:
59
+ "edf401e8ddbb743f3353b055081cb220ce4c5c04e08da162d86e0dba7c6f0f01", // 0xa470E7c88611364f55B2d7912613e10AF2eA918D
60
+ });
61
+ const wallet = smartWallet({
62
+ chain,
63
+ gasless: true,
64
+ overrides: {
65
+ tokenPaymaster,
66
+ },
67
+ });
68
+ const smartAccount = await wallet.connect({
69
+ client: TEST_CLIENT,
70
+ personalAccount,
71
+ });
72
+ const tx = prepareTransaction({
73
+ client,
74
+ chain,
75
+ to: smartAccount.address,
76
+ value: 0n,
77
+ });
78
+ const receipt = await sendTransaction({
79
+ transaction: tx,
80
+ account: smartAccount,
81
+ });
82
+ expect(receipt.transactionHash).toBeDefined();
83
+ });
84
+
85
+ it("should send a transaction with base lisk", async () => {
86
+ const chain = defineChain(1135);
87
+ const tokenPaymaster = TokenPaymaster.LISK_LSK;
88
+ const personalAccount = privateKeyToAccount({
89
+ client,
90
+ privateKey:
91
+ "edf401e8ddbb743f3353b055081cb220ce4c5c04e08da162d86e0dba7c6f0f01", // 0xa470E7c88611364f55B2d7912613e10AF2eA918D
92
+ });
93
+ const wallet = smartWallet({
94
+ chain,
95
+ gasless: true,
96
+ overrides: {
97
+ tokenPaymaster,
98
+ },
99
+ });
100
+ const smartAccount = await wallet.connect({
101
+ client: TEST_CLIENT,
102
+ personalAccount,
103
+ });
104
+ const tx = prepareTransaction({
105
+ client,
106
+ chain,
107
+ to: smartAccount.address,
108
+ value: 0n,
109
+ });
110
+ const receipt = await sendTransaction({
111
+ transaction: tx,
112
+ account: smartAccount,
113
+ });
114
+ expect(receipt.transactionHash).toBeDefined();
115
+ });
116
+ },
117
+ );
@@ -118,7 +118,7 @@ import { getDefaultAccountFactory } from "./lib/constants.js";
118
118
  * accountAddress: "0x...", // override account address
119
119
  * accountSalt: "0x...", // override account salt
120
120
  * entrypointAddress: "0x...", // override entrypoint address
121
- * erc20Paymaster: { ... }, // enable erc20 paymaster
121
+ * tokenPaymaster: TokenPaymaster.BASE_USDC, // enable erc20 paymaster
122
122
  * bundlerUrl: "https://...", // override bundler url
123
123
  * paymaster: (userOp) => { ... }, // override paymaster
124
124
  * ...
@@ -8,6 +8,13 @@ import type { Hex } from "../../utils/encoding/hex.js";
8
8
  import type { Prettify } from "../../utils/type-utils.js";
9
9
  import type { Account, SendTransactionOption } from "../interfaces/wallet.js";
10
10
 
11
+ export type TokenPaymasterConfig = {
12
+ chainId: number;
13
+ paymasterAddress: string;
14
+ tokenAddress: string;
15
+ balanceStorageSlot: bigint;
16
+ };
17
+
11
18
  export type SmartWalletOptions = Prettify<
12
19
  {
13
20
  chain: Chain; // TODO consider making default chain optional
@@ -17,10 +24,7 @@ export type SmartWalletOptions = Prettify<
17
24
  accountAddress?: string;
18
25
  accountSalt?: string;
19
26
  entrypointAddress?: string;
20
- erc20Paymaster?: {
21
- address: string;
22
- token: string;
23
- };
27
+ tokenPaymaster?: TokenPaymasterConfig;
24
28
  paymaster?: (
25
29
  userOp: UserOperationV06 | UserOperationV07,
26
30
  ) => Promise<PaymasterResult>;