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.
- package/dist/cjs/exports/wallets/smart.js +2 -1
- package/dist/cjs/exports/wallets/smart.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -10
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +8 -4
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/ecosystem.js +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +2 -2
- package/dist/cjs/wallets/smart/index.js +19 -12
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/bundler.js +2 -1
- package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/constants.js +21 -1
- package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js +19 -4
- package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
- package/dist/cjs/wallets/smart/smart-wallet.js +1 -1
- package/dist/cjs/wallets/smart/types.js.map +1 -1
- package/dist/esm/exports/wallets/smart.js +1 -1
- package/dist/esm/exports/wallets/smart.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -10
- package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +9 -5
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/esm/wallets/in-app/web/ecosystem.js +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +2 -2
- package/dist/esm/wallets/smart/index.js +20 -13
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/smart/lib/bundler.js +2 -1
- package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/esm/wallets/smart/lib/constants.js +20 -0
- package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
- package/dist/esm/wallets/smart/lib/userop.js +20 -5
- package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
- package/dist/esm/wallets/smart/smart-wallet.js +1 -1
- package/dist/esm/wallets/smart/types.js.map +1 -1
- package/dist/types/exports/wallets/smart.d.ts +1 -1
- package/dist/types/exports/wallets/smart.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/SignatureScreen.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts +1 -1
- package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/ecosystem.d.ts +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +2 -2
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/bundler.d.ts +6 -0
- package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/constants.d.ts +4 -0
- package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
- package/dist/types/wallets/smart/smart-wallet.d.ts +1 -1
- package/dist/types/wallets/smart/types.d.ts +7 -4
- package/dist/types/wallets/smart/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/wallets/smart.ts +1 -0
- package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.test.tsx +287 -0
- package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +13 -5
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.test.tsx +87 -0
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +1 -1
- package/src/version.ts +1 -1
- package/src/wallets/ecosystem/get-ecosystem-wallet-auth-options.ts +1 -1
- package/src/wallets/ecosystem/is-ecosystem-wallet.ts +1 -1
- package/src/wallets/in-app/core/wallet/in-app-core.test.ts +270 -0
- package/src/wallets/in-app/core/wallet/in-app-core.ts +16 -5
- package/src/wallets/in-app/web/ecosystem.ts +1 -1
- package/src/wallets/in-app/web/in-app.ts +2 -2
- package/src/wallets/smart/index.ts +37 -17
- package/src/wallets/smart/lib/bundler.ts +14 -4
- package/src/wallets/smart/lib/constants.ts +23 -0
- package/src/wallets/smart/lib/userop.ts +31 -8
- package/src/wallets/smart/smart-wallet-tokenpaymaster.test.ts +117 -0
- package/src/wallets/smart/smart-wallet.ts +1 -1
- 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
|
-
*
|
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
|
-
|
21
|
-
address: string;
|
22
|
-
token: string;
|
23
|
-
};
|
27
|
+
tokenPaymaster?: TokenPaymasterConfig;
|
24
28
|
paymaster?: (
|
25
29
|
userOp: UserOperationV06 | UserOperationV07,
|
26
30
|
) => Promise<PaymasterResult>;
|