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.
Files changed (81) hide show
  1. package/dist/cjs/exports/react-native/wallets.js +34 -0
  2. package/dist/cjs/exports/react-native/wallets.js.map +1 -0
  3. package/dist/cjs/exports/wallets/smart.js +2 -2
  4. package/dist/cjs/exports/wallets/smart.js.map +1 -1
  5. package/dist/cjs/exports/wallets.js +3 -2
  6. package/dist/cjs/exports/wallets.js.map +1 -1
  7. package/dist/cjs/version.js +1 -1
  8. package/dist/cjs/wallets/coinbase/coinbase-wallet.js +87 -0
  9. package/dist/cjs/wallets/coinbase/coinbase-wallet.js.map +1 -0
  10. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js +17 -2
  11. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
  12. package/dist/cjs/wallets/coinbase/coinbaseSDKWallet.js +12 -20
  13. package/dist/cjs/wallets/coinbase/coinbaseSDKWallet.js.map +1 -1
  14. package/dist/cjs/wallets/create-wallet.js +10 -173
  15. package/dist/cjs/wallets/create-wallet.js.map +1 -1
  16. package/dist/cjs/wallets/in-app/core/wallet/index.js +1 -1
  17. package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
  18. package/dist/cjs/wallets/manager/index.js +2 -2
  19. package/dist/cjs/wallets/manager/index.js.map +1 -1
  20. package/dist/cjs/wallets/native/create-wallet.js +174 -0
  21. package/dist/cjs/wallets/native/create-wallet.js.map +1 -0
  22. package/dist/cjs/wallets/smart/smart-wallet.js +103 -0
  23. package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -0
  24. package/dist/esm/exports/react-native/wallets.js +23 -0
  25. package/dist/esm/exports/react-native/wallets.js.map +1 -0
  26. package/dist/esm/exports/wallets/smart.js +1 -1
  27. package/dist/esm/exports/wallets/smart.js.map +1 -1
  28. package/dist/esm/exports/wallets.js +2 -1
  29. package/dist/esm/exports/wallets.js.map +1 -1
  30. package/dist/esm/version.js +1 -1
  31. package/dist/esm/wallets/coinbase/coinbase-wallet.js +83 -0
  32. package/dist/esm/wallets/coinbase/coinbase-wallet.js.map +1 -0
  33. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js +16 -1
  34. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +1 -1
  35. package/dist/esm/wallets/coinbase/coinbaseSDKWallet.js +10 -19
  36. package/dist/esm/wallets/coinbase/coinbaseSDKWallet.js.map +1 -1
  37. package/dist/esm/wallets/create-wallet.js +8 -170
  38. package/dist/esm/wallets/create-wallet.js.map +1 -1
  39. package/dist/esm/wallets/in-app/core/wallet/index.js +1 -1
  40. package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
  41. package/dist/esm/wallets/manager/index.js +1 -1
  42. package/dist/esm/wallets/manager/index.js.map +1 -1
  43. package/dist/esm/wallets/native/create-wallet.js +169 -0
  44. package/dist/esm/wallets/native/create-wallet.js.map +1 -0
  45. package/dist/esm/wallets/smart/smart-wallet.js +99 -0
  46. package/dist/esm/wallets/smart/smart-wallet.js.map +1 -0
  47. package/dist/types/exports/react-native/wallets.d.ts +46 -0
  48. package/dist/types/exports/react-native/wallets.d.ts.map +1 -0
  49. package/dist/types/exports/wallets/smart.d.ts +1 -1
  50. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  51. package/dist/types/exports/wallets.d.ts +2 -1
  52. package/dist/types/exports/wallets.d.ts.map +1 -1
  53. package/dist/types/version.d.ts +1 -1
  54. package/dist/types/wallets/coinbase/coinbase-wallet.d.ts +15 -0
  55. package/dist/types/wallets/coinbase/coinbase-wallet.d.ts.map +1 -0
  56. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts +7 -7
  57. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +1 -1
  58. package/dist/types/wallets/coinbase/coinbaseSDKWallet.d.ts +6 -2
  59. package/dist/types/wallets/coinbase/coinbaseSDKWallet.d.ts.map +1 -1
  60. package/dist/types/wallets/create-wallet.d.ts +0 -21
  61. package/dist/types/wallets/create-wallet.d.ts.map +1 -1
  62. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  63. package/dist/types/wallets/native/create-wallet.d.ts +36 -0
  64. package/dist/types/wallets/native/create-wallet.d.ts.map +1 -0
  65. package/dist/types/wallets/smart/smart-wallet.d.ts +24 -0
  66. package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -0
  67. package/package.json +2 -1
  68. package/src/exports/react-native/wallets.ts +100 -0
  69. package/src/exports/wallets/smart.ts +1 -1
  70. package/src/exports/wallets.ts +1 -1
  71. package/src/version.ts +1 -1
  72. package/src/wallets/coinbase/coinbase-wallet.ts +108 -0
  73. package/src/wallets/coinbase/coinbaseMobileSDK.ts +23 -1
  74. package/src/wallets/coinbase/coinbaseSDKWallet.ts +10 -21
  75. package/src/wallets/create-wallet.ts +8 -213
  76. package/src/wallets/in-app/core/wallet/index.ts +1 -1
  77. package/src/wallets/manager/index.ts +1 -1
  78. package/src/wallets/native/create-wallet.ts +224 -0
  79. package/src/wallets/smart/smart-wallet-integration.test.ts +1 -1
  80. package/src/wallets/smart/smart-wallet-zksync.test.ts +1 -1
  81. 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
+ }