thirdweb 5.29.2-nightly-eff710738ce3d4341257e5912311c95b28a34b5d-20240614173600 → 5.29.3-nightly-ffaff744f72d2cb22896e7501677b48f76ea857a-20240614184424
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/react-native/wallets.js +34 -0
- package/dist/cjs/exports/react-native/wallets.js.map +1 -0
- package/dist/cjs/exports/wallets/smart.js +2 -2
- package/dist/cjs/exports/wallets/smart.js.map +1 -1
- package/dist/cjs/exports/wallets.js +3 -2
- package/dist/cjs/exports/wallets.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-wallet.js +87 -0
- package/dist/cjs/wallets/coinbase/coinbase-wallet.js.map +1 -0
- package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js +17 -2
- package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
- package/dist/cjs/wallets/coinbase/coinbaseSDKWallet.js +12 -20
- package/dist/cjs/wallets/coinbase/coinbaseSDKWallet.js.map +1 -1
- package/dist/cjs/wallets/create-wallet.js +10 -173
- package/dist/cjs/wallets/create-wallet.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/index.js +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
- package/dist/cjs/wallets/manager/index.js +2 -2
- package/dist/cjs/wallets/manager/index.js.map +1 -1
- package/dist/cjs/wallets/native/create-wallet.js +174 -0
- package/dist/cjs/wallets/native/create-wallet.js.map +1 -0
- package/dist/cjs/wallets/smart/smart-wallet.js +103 -0
- package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -0
- package/dist/esm/exports/react-native/wallets.js +23 -0
- package/dist/esm/exports/react-native/wallets.js.map +1 -0
- package/dist/esm/exports/wallets/smart.js +1 -1
- package/dist/esm/exports/wallets/smart.js.map +1 -1
- package/dist/esm/exports/wallets.js +2 -1
- package/dist/esm/exports/wallets.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/coinbase-wallet.js +83 -0
- package/dist/esm/wallets/coinbase/coinbase-wallet.js.map +1 -0
- package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js +16 -1
- package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
- package/dist/esm/wallets/coinbase/coinbaseSDKWallet.js +10 -19
- package/dist/esm/wallets/coinbase/coinbaseSDKWallet.js.map +1 -1
- package/dist/esm/wallets/create-wallet.js +8 -170
- package/dist/esm/wallets/create-wallet.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/index.js +1 -1
- package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
- package/dist/esm/wallets/manager/index.js +1 -1
- package/dist/esm/wallets/manager/index.js.map +1 -1
- package/dist/esm/wallets/native/create-wallet.js +169 -0
- package/dist/esm/wallets/native/create-wallet.js.map +1 -0
- package/dist/esm/wallets/smart/smart-wallet.js +99 -0
- package/dist/esm/wallets/smart/smart-wallet.js.map +1 -0
- package/dist/types/exports/react-native/wallets.d.ts +46 -0
- package/dist/types/exports/react-native/wallets.d.ts.map +1 -0
- package/dist/types/exports/wallets/smart.d.ts +1 -1
- package/dist/types/exports/wallets/smart.d.ts.map +1 -1
- package/dist/types/exports/wallets.d.ts +2 -1
- package/dist/types/exports/wallets.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/coinbase/coinbase-wallet.d.ts +15 -0
- package/dist/types/wallets/coinbase/coinbase-wallet.d.ts.map +1 -0
- package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts +7 -7
- package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +1 -1
- package/dist/types/wallets/coinbase/coinbaseSDKWallet.d.ts +6 -2
- package/dist/types/wallets/coinbase/coinbaseSDKWallet.d.ts.map +1 -1
- package/dist/types/wallets/create-wallet.d.ts +0 -21
- package/dist/types/wallets/create-wallet.d.ts.map +1 -1
- package/dist/types/wallets/manager/index.d.ts.map +1 -1
- package/dist/types/wallets/native/create-wallet.d.ts +36 -0
- package/dist/types/wallets/native/create-wallet.d.ts.map +1 -0
- package/dist/types/wallets/smart/smart-wallet.d.ts +24 -0
- package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/exports/react-native/wallets.ts +100 -0
- package/src/exports/wallets/smart.ts +1 -1
- package/src/exports/wallets.ts +1 -1
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-wallet.ts +108 -0
- package/src/wallets/coinbase/coinbaseMobileSDK.ts +23 -1
- package/src/wallets/coinbase/coinbaseSDKWallet.ts +10 -21
- package/src/wallets/create-wallet.ts +8 -213
- package/src/wallets/in-app/core/wallet/index.ts +1 -1
- package/src/wallets/manager/index.ts +1 -1
- package/src/wallets/native/create-wallet.ts +224 -0
- package/src/wallets/smart/smart-wallet-integration.test.ts +1 -1
- package/src/wallets/smart/smart-wallet-zksync.test.ts +1 -1
- package/src/wallets/smart/smart-wallet.ts +123 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
import { trackConnect } from "../../analytics/track.js";
|
2
|
+
import type { Chain } from "../../chains/types.js";
|
3
|
+
import { getContract } from "../../contract/contract.js";
|
4
|
+
import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
|
5
|
+
import type { Account, Wallet } from "../interfaces/wallet.js";
|
6
|
+
import { createWalletEmitter } from "../wallet-emitter.js";
|
7
|
+
import type {
|
8
|
+
CreateWalletArgs,
|
9
|
+
WalletConnectionOption,
|
10
|
+
} from "../wallet-types.js";
|
11
|
+
import { DEFAULT_ACCOUNT_FACTORY } from "./lib/constants.js";
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Creates a smart wallet.
|
15
|
+
* @param createOptions - The options for creating the wallet.
|
16
|
+
* @returns The created smart wallet.
|
17
|
+
* @example
|
18
|
+
* ```ts
|
19
|
+
* import { smartWallet } from "thirdweb/wallets";
|
20
|
+
*
|
21
|
+
* const wallet = smartWallet({
|
22
|
+
* chain: sepolia,
|
23
|
+
* gasless: true,
|
24
|
+
* });
|
25
|
+
*
|
26
|
+
* const account = await wallet.connect({
|
27
|
+
* client,
|
28
|
+
* personalAccount: account,
|
29
|
+
* });
|
30
|
+
* ```
|
31
|
+
* @wallet
|
32
|
+
*/
|
33
|
+
export function smartWallet(
|
34
|
+
createOptions: CreateWalletArgs<"smart">[1],
|
35
|
+
): Wallet<"smart"> {
|
36
|
+
const emitter = createWalletEmitter<"smart">();
|
37
|
+
let account: Account | undefined = undefined;
|
38
|
+
let chain: Chain | undefined = undefined;
|
39
|
+
let lastConnectOptions: WalletConnectionOption<"smart"> | undefined;
|
40
|
+
|
41
|
+
const _smartWallet: Wallet<"smart"> = {
|
42
|
+
id: "smart",
|
43
|
+
subscribe: emitter.subscribe,
|
44
|
+
getChain: () => chain,
|
45
|
+
getConfig: () => createOptions,
|
46
|
+
getAccount: () => account,
|
47
|
+
autoConnect: async (options) => {
|
48
|
+
const { connectSmartWallet } = await import("./index.js");
|
49
|
+
const [connectedAccount, connectedChain] = await connectSmartWallet(
|
50
|
+
_smartWallet,
|
51
|
+
options,
|
52
|
+
createOptions,
|
53
|
+
);
|
54
|
+
// set the states
|
55
|
+
lastConnectOptions = options;
|
56
|
+
account = connectedAccount;
|
57
|
+
chain = connectedChain;
|
58
|
+
trackConnect({
|
59
|
+
client: options.client,
|
60
|
+
walletType: "smart",
|
61
|
+
walletAddress: account.address,
|
62
|
+
});
|
63
|
+
// return account
|
64
|
+
return account;
|
65
|
+
},
|
66
|
+
connect: async (options) => {
|
67
|
+
const { connectSmartWallet } = await import("./index.js");
|
68
|
+
const [connectedAccount, connectedChain] = await connectSmartWallet(
|
69
|
+
_smartWallet,
|
70
|
+
options,
|
71
|
+
createOptions,
|
72
|
+
);
|
73
|
+
// set the states
|
74
|
+
lastConnectOptions = options;
|
75
|
+
account = connectedAccount;
|
76
|
+
chain = connectedChain;
|
77
|
+
trackConnect({
|
78
|
+
client: options.client,
|
79
|
+
walletType: "smart",
|
80
|
+
walletAddress: account.address,
|
81
|
+
});
|
82
|
+
// return account
|
83
|
+
emitter.emit("accountChanged", account);
|
84
|
+
return account;
|
85
|
+
},
|
86
|
+
disconnect: async () => {
|
87
|
+
account = undefined;
|
88
|
+
chain = undefined;
|
89
|
+
const { disconnectSmartWallet } = await import("./index.js");
|
90
|
+
await disconnectSmartWallet(_smartWallet);
|
91
|
+
emitter.emit("disconnect", undefined);
|
92
|
+
},
|
93
|
+
switchChain: async (newChain: Chain) => {
|
94
|
+
if (!lastConnectOptions) {
|
95
|
+
throw new Error("Cannot switch chain without a previous connection");
|
96
|
+
}
|
97
|
+
// check if factory is deployed
|
98
|
+
const factory = getContract({
|
99
|
+
address: createOptions.factoryAddress || DEFAULT_ACCOUNT_FACTORY,
|
100
|
+
chain: newChain,
|
101
|
+
client: lastConnectOptions.client,
|
102
|
+
});
|
103
|
+
const isDeployed = await isContractDeployed(factory);
|
104
|
+
if (!isDeployed) {
|
105
|
+
throw new Error(
|
106
|
+
`Factory contract not deployed on chain: ${newChain.id}`,
|
107
|
+
);
|
108
|
+
}
|
109
|
+
const { connectSmartWallet } = await import("./index.js");
|
110
|
+
const [connectedAccount, connectedChain] = await connectSmartWallet(
|
111
|
+
_smartWallet,
|
112
|
+
{ ...lastConnectOptions, chain: newChain },
|
113
|
+
createOptions,
|
114
|
+
);
|
115
|
+
// set the states
|
116
|
+
account = connectedAccount;
|
117
|
+
chain = connectedChain;
|
118
|
+
emitter.emit("chainChanged", newChain);
|
119
|
+
},
|
120
|
+
};
|
121
|
+
|
122
|
+
return _smartWallet;
|
123
|
+
}
|