@talken/talkenkit 2.5.1 → 2.5.2

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.
@@ -56,7 +56,7 @@ import {
56
56
  validateEmail,
57
57
  validateMpcWallets,
58
58
  validatePin
59
- } from "./chunk-UHZL3WSM.js";
59
+ } from "./chunk-VCQZZ6SN.js";
60
60
  import {
61
61
  ABC_EVENTS,
62
62
  ABC_FEATURES,
@@ -2972,6 +2972,19 @@ var TalkenApiClient = class {
2972
2972
  };
2973
2973
  if (!skipAuth && this.accessToken) {
2974
2974
  headers.Authorization = `Bearer ${this.accessToken}`;
2975
+ } else if (!skipAuth) {
2976
+ const ak = loadToken("access_key_raw");
2977
+ const tgAk = !ak && typeof window !== "undefined" ? (() => {
2978
+ try {
2979
+ return localStorage.getItem("talken_ak");
2980
+ } catch {
2981
+ return null;
2982
+ }
2983
+ })() : null;
2984
+ const effectiveAk = ak || tgAk;
2985
+ if (effectiveAk) {
2986
+ headers["X-Access-Key"] = effectiveAk;
2987
+ }
2975
2988
  }
2976
2989
  if (this.config.debug) {
2977
2990
  console.log(`[TalkenApiClient] ${method} ${url}`);
package/dist/index.js CHANGED
@@ -5,12 +5,12 @@ import {
5
5
  import {
6
6
  darkTheme
7
7
  } from "./chunk-RZWDCITT.js";
8
- import {
9
- midnightTheme
10
- } from "./chunk-7ZP3ENJ2.js";
11
8
  import {
12
9
  lightTheme
13
10
  } from "./chunk-72HZGUJA.js";
11
+ import {
12
+ midnightTheme
13
+ } from "./chunk-7ZP3ENJ2.js";
14
14
  import "./chunk-DQLAW7KN.js";
15
15
  import {
16
16
  BitcoinNetwork,
@@ -53,7 +53,7 @@ import {
53
53
  networkToChainId,
54
54
  resolveTalkenApiUrl,
55
55
  setTalkenApiClient
56
- } from "./chunk-UHZL3WSM.js";
56
+ } from "./chunk-VCQZZ6SN.js";
57
57
  import {
58
58
  STORAGE_PREFIX,
59
59
  getCredentialManager
@@ -158,7 +158,7 @@ function useBitcoinWallet() {
158
158
  wallet: bitcoinWallet,
159
159
  emptyState: emptyWalletState,
160
160
  requestInterceptor,
161
- importProvider: async () => (await import("./abcWallet-O5IRLUXL.js")).AbcBitcoinProvider,
161
+ importProvider: async () => (await import("./abcWallet-HRNBHY5Q.js")).AbcBitcoinProvider,
162
162
  mapState: (nextWallet, provider) => ({
163
163
  address: nextWallet.address,
164
164
  publicKey: nextWallet.publicKey,
@@ -1329,7 +1329,7 @@ function useSolanaWallet() {
1329
1329
  wallet: solanaWallet,
1330
1330
  emptyState: emptyWalletState,
1331
1331
  requestInterceptor,
1332
- importProvider: async () => (await import("./abcWallet-O5IRLUXL.js")).AbcSolanaProvider,
1332
+ importProvider: async () => (await import("./abcWallet-HRNBHY5Q.js")).AbcSolanaProvider,
1333
1333
  mapState: (nextWallet, provider) => ({
1334
1334
  address: nextWallet.address,
1335
1335
  publicKey: nextWallet.publicKey,
@@ -8355,7 +8355,7 @@ function setRainbowKitVersion({ version }) {
8355
8355
  }
8356
8356
  function useFingerprint() {
8357
8357
  const fingerprint = useCallback16(() => {
8358
- setRainbowKitVersion({ version: "2.5.1" });
8358
+ setRainbowKitVersion({ version: "2.5.2" });
8359
8359
  }, []);
8360
8360
  useEffect21(() => {
8361
8361
  fingerprint();
@@ -18263,7 +18263,7 @@ function useTronWallet() {
18263
18263
  wallet: tronWallet,
18264
18264
  emptyState: emptyWalletState,
18265
18265
  requestInterceptor,
18266
- importProvider: async () => (await import("./abcWallet-O5IRLUXL.js")).AbcTronProvider,
18266
+ importProvider: async () => (await import("./abcWallet-HRNBHY5Q.js")).AbcTronProvider,
18267
18267
  mapState: (nextWallet, provider) => ({
18268
18268
  address: nextWallet.address,
18269
18269
  publicKey: nextWallet.publicKey,
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "../chunk-4YEALKXG.js";
4
+ } from "../chunk-2A5XTST5.js";
5
5
  import "../chunk-R6ZE7JAZ.js";
6
6
  import "../chunk-GFWUFYT2.js";
7
- import "../chunk-KIYXONNH.js";
8
7
  import "../chunk-4JZPP3S7.js";
9
8
  import "../chunk-O4AU63LK.js";
10
9
  import "../chunk-L6FCF3FH.js";
11
10
  import "../chunk-OASBABPG.js";
12
11
  import "../chunk-PF65YS3T.js";
12
+ import "../chunk-NP5PWUVU.js";
13
13
  import "../chunk-4P3SPC44.js";
14
14
  import "../chunk-QKK3OPQA.js";
15
15
  import "../chunk-RX2VOIUB.js";
@@ -9,7 +9,7 @@ import "../chunk-OTLZVWY7.js";
9
9
  import "../chunk-HWRZGGGN.js";
10
10
  import "../chunk-FKI5AZVH.js";
11
11
  import "../chunk-25ZDAJ3L.js";
12
- import "../chunk-KIYXONNH.js";
12
+ import "../chunk-NP5PWUVU.js";
13
13
  import "../chunk-4P3SPC44.js";
14
14
  import "../chunk-QKK3OPQA.js";
15
15
  import "../chunk-RX2VOIUB.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-GFWUFYT2.js";
5
5
  import {
6
6
  createTalkenApiClient
7
- } from "../chunk-KIYXONNH.js";
7
+ } from "../chunk-NP5PWUVU.js";
8
8
  import "../chunk-4P3SPC44.js";
9
9
  import {
10
10
  getCredentialManager
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import {
3
3
  abcWallet
4
- } from "../chunk-6TAU7OQK.js";
5
- import "../chunk-4YEALKXG.js";
4
+ } from "../chunk-WKP53WWR.js";
5
+ import "../chunk-2A5XTST5.js";
6
6
  import "../chunk-R6ZE7JAZ.js";
7
7
  import "../chunk-GFWUFYT2.js";
8
- import "../chunk-KIYXONNH.js";
9
8
  import "../chunk-4JZPP3S7.js";
10
9
  import "../chunk-O4AU63LK.js";
11
10
  import "../chunk-L6FCF3FH.js";
12
11
  import "../chunk-OASBABPG.js";
13
12
  import "../chunk-PF65YS3T.js";
13
+ import "../chunk-NP5PWUVU.js";
14
14
  import "../chunk-4P3SPC44.js";
15
15
  import "../chunk-QKK3OPQA.js";
16
16
  import "../chunk-RX2VOIUB.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  TalkenApiClient,
4
4
  createTalkenApiClient
5
- } from "../../chunk-KIYXONNH.js";
5
+ } from "../../chunk-NP5PWUVU.js";
6
6
  import "../../chunk-4P3SPC44.js";
7
7
  import "../../chunk-QKK3OPQA.js";
8
8
  import "../../chunk-RX2VOIUB.js";
@@ -18,7 +18,7 @@ import {
18
18
  import {
19
19
  TalkenApiClient,
20
20
  createTalkenApiClient
21
- } from "../../chunk-KIYXONNH.js";
21
+ } from "../../chunk-NP5PWUVU.js";
22
22
  import "../../chunk-4P3SPC44.js";
23
23
  import "../../chunk-QKK3OPQA.js";
24
24
  import "../../chunk-RX2VOIUB.js";
@@ -11,6 +11,20 @@ import {
11
11
  recoverMpcWallets,
12
12
  validateMpcWallets
13
13
  } from "../chunk-H2AZTZMM.js";
14
+ import {
15
+ AbcTronProvider,
16
+ TRON_NETWORKS,
17
+ TronProviderError
18
+ } from "../chunk-URS2KVYK.js";
19
+ import {
20
+ AbcBitcoinConnector,
21
+ createAbcBitcoinConnector
22
+ } from "../chunk-YKFI6ZGM.js";
23
+ import {
24
+ AbcBitcoinProvider,
25
+ BITCOIN_NETWORKS,
26
+ BitcoinProviderError
27
+ } from "../chunk-RGYZNNB6.js";
14
28
  import {
15
29
  AbcSolanaProvider,
16
30
  SolanaProviderError
@@ -31,32 +45,14 @@ import {
31
45
  import {
32
46
  ConfigApi
33
47
  } from "../chunk-25ZDAJ3L.js";
34
- import {
35
- AbcTronProvider,
36
- TRON_NETWORKS,
37
- TronProviderError
38
- } from "../chunk-URS2KVYK.js";
39
- import {
40
- AbcBitcoinConnector,
41
- createAbcBitcoinConnector
42
- } from "../chunk-YKFI6ZGM.js";
43
- import {
44
- AbcBitcoinProvider,
45
- BITCOIN_NETWORKS,
46
- BitcoinProviderError
47
- } from "../chunk-RGYZNNB6.js";
48
48
  import {
49
49
  abcWallet
50
- } from "../chunk-6TAU7OQK.js";
50
+ } from "../chunk-WKP53WWR.js";
51
51
  import {
52
52
  abcConnector
53
- } from "../chunk-4YEALKXG.js";
53
+ } from "../chunk-2A5XTST5.js";
54
54
  import "../chunk-R6ZE7JAZ.js";
55
55
  import "../chunk-GFWUFYT2.js";
56
- import {
57
- TalkenApiClient,
58
- createTalkenApiClient
59
- } from "../chunk-KIYXONNH.js";
60
56
  import "../chunk-4JZPP3S7.js";
61
57
  import {
62
58
  BitcoinNetwork,
@@ -91,6 +87,10 @@ import {
91
87
  validateEmail,
92
88
  validatePin
93
89
  } from "../chunk-PF65YS3T.js";
90
+ import {
91
+ TalkenApiClient,
92
+ createTalkenApiClient
93
+ } from "../chunk-NP5PWUVU.js";
94
94
  import {
95
95
  AbcError,
96
96
  AbcErrorCode,
@@ -5,9 +5,6 @@ import {
5
5
  import {
6
6
  resolveTalkenApiUrl
7
7
  } from "./chunk-GFWUFYT2.js";
8
- import {
9
- createTalkenApiClient
10
- } from "./chunk-KIYXONNH.js";
11
8
  import {
12
9
  AbcAccessKeyProvider
13
10
  } from "./chunk-4JZPP3S7.js";
@@ -26,6 +23,9 @@ import {
26
23
  loadFromStorage,
27
24
  saveAuthState
28
25
  } from "./chunk-PF65YS3T.js";
26
+ import {
27
+ createTalkenApiClient
28
+ } from "./chunk-NP5PWUVU.js";
29
29
  import {
30
30
  getCredentialManager
31
31
  } from "./chunk-QKK3OPQA.js";
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "./chunk-4YEALKXG.js";
4
+ } from "./chunk-BRXYKYKT.js";
5
5
  import {
6
6
  resolveTalkenApiUrl
7
7
  } from "./chunk-GFWUFYT2.js";
8
8
  import {
9
9
  createTalkenApiClient
10
- } from "./chunk-KIYXONNH.js";
10
+ } from "./chunk-NP5PWUVU.js";
11
11
  import {
12
12
  ABC_WALLET_METADATA
13
13
  } from "./chunk-RX2VOIUB.js";
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import {
3
- TalkenApiError
4
- } from "./chunk-4P3SPC44.js";
5
2
  import {
6
3
  getCredentialManager
7
4
  } from "./chunk-QKK3OPQA.js";
5
+ import {
6
+ TalkenApiError
7
+ } from "./chunk-4P3SPC44.js";
8
8
  import {
9
9
  DEFAULT_TALKEN_API_CONFIG,
10
10
  TALKEN_API_ENDPOINTS,
@@ -748,6 +748,19 @@ var TalkenApiClient = class {
748
748
  };
749
749
  if (!skipAuth && this.accessToken) {
750
750
  headers.Authorization = `Bearer ${this.accessToken}`;
751
+ } else if (!skipAuth) {
752
+ const ak = loadToken("access_key_raw");
753
+ const tgAk = !ak && typeof window !== "undefined" ? (() => {
754
+ try {
755
+ return localStorage.getItem("talken_ak");
756
+ } catch {
757
+ return null;
758
+ }
759
+ })() : null;
760
+ const effectiveAk = ak || tgAk;
761
+ if (effectiveAk) {
762
+ headers["X-Access-Key"] = effectiveAk;
763
+ }
751
764
  }
752
765
  if (this.config.debug) {
753
766
  console.log(`[TalkenApiClient] ${method} ${url}`);
@@ -0,0 +1,360 @@
1
+ "use client";
2
+ import {
3
+ setTalkenApiClient
4
+ } from "./chunk-R6ZE7JAZ.js";
5
+ import {
6
+ resolveTalkenApiUrl
7
+ } from "./chunk-GFWUFYT2.js";
8
+ import {
9
+ createTalkenApiClient
10
+ } from "./chunk-NP5PWUVU.js";
11
+ import {
12
+ AbcAccessKeyProvider
13
+ } from "./chunk-4JZPP3S7.js";
14
+ import {
15
+ setGlobalDefaultBitcoinNetwork,
16
+ setGlobalDefaultChainId,
17
+ setGlobalDefaultSolanaNetwork
18
+ } from "./chunk-O4AU63LK.js";
19
+ import {
20
+ createAbcEvmProvider
21
+ } from "./chunk-L6FCF3FH.js";
22
+ import {
23
+ clearAuthState,
24
+ clearStorage,
25
+ loadAuthState,
26
+ loadFromStorage,
27
+ saveAuthState
28
+ } from "./chunk-PF65YS3T.js";
29
+ import {
30
+ getCredentialManager
31
+ } from "./chunk-QKK3OPQA.js";
32
+
33
+ // src/wallets/walletConnectors/abcWallet/abcConnector.ts
34
+ import { getTalkenApiClient } from "@talken/talkenkit";
35
+ import { createConnector } from "wagmi";
36
+ function abcConnector(options) {
37
+ const { config } = options;
38
+ if (config.defaultChainId) {
39
+ setGlobalDefaultChainId(config.defaultChainId);
40
+ }
41
+ if (config.defaultSolanaNetwork) {
42
+ setGlobalDefaultSolanaNetwork(config.defaultSolanaNetwork);
43
+ }
44
+ if (config.defaultBitcoinNetwork) {
45
+ setGlobalDefaultBitcoinNetwork(config.defaultBitcoinNetwork);
46
+ }
47
+ return createConnector((wagmiConfig) => {
48
+ const talkenApi = getTalkenApiClient() || createTalkenApiClient({
49
+ baseUrl: resolveTalkenApiUrl(config.talkenApiUrl),
50
+ environment: config.environment,
51
+ debug: config.environment === "development",
52
+ defaultChainId: config.defaultChainId
53
+ });
54
+ setTalkenApiClient(talkenApi);
55
+ const isAccessKeyMode = !!config.accessKey;
56
+ const provider = isAccessKeyMode ? new AbcAccessKeyProvider(
57
+ config.accessKey,
58
+ resolveTalkenApiUrl(config.talkenApiUrl)
59
+ ) : createAbcEvmProvider(talkenApi);
60
+ let accountsChangedHandler;
61
+ let chainChangedHandler;
62
+ let disconnectHandler;
63
+ return {
64
+ id: "abc",
65
+ name: "ABC Wallet",
66
+ type: "abc",
67
+ /**
68
+ * Connect wallet
69
+ */
70
+ async connect() {
71
+ try {
72
+ const authState = loadAuthState();
73
+ if (!authState || !authState.isAuthenticated || !authState.wallet) {
74
+ throw new Error("ABC_LOGIN_REQUIRED");
75
+ }
76
+ if (isAccessKeyMode) {
77
+ let w = authState.wallet;
78
+ if (!w.uid || !w.sessionId) {
79
+ try {
80
+ const apiUrl = resolveTalkenApiUrl(config.talkenApiUrl);
81
+ const res = await fetch(`${apiUrl}/wallet/mpc`, {
82
+ method: "POST",
83
+ headers: {
84
+ "Content-Type": "application/json",
85
+ "X-Access-Key": config.accessKey
86
+ },
87
+ body: JSON.stringify({ action: "info" })
88
+ });
89
+ const data = await res.json();
90
+ const acct = data?.data?.accounts?.[0] || data?.data;
91
+ if (acct?.ethAddress || acct?.address) {
92
+ w = {
93
+ address: acct.ethAddress || acct.address || w.address,
94
+ chainId: w.chainId || config.defaultChainId || 1,
95
+ uid: acct.uid || data?.data?.uid || "",
96
+ sessionId: acct.sid || acct.sessionId || "",
97
+ keyId: acct.keyId || (acct.wid != null ? String(acct.wid) : "") || (data?.data?.wid != null ? String(data.data.wid) : ""),
98
+ encryptedShare: acct.encryptedShare || acct.pvencstr || "",
99
+ sid: acct.sid || "",
100
+ type: "evm",
101
+ email: authState.user?.email || acct.email || data?.data?.email || ""
102
+ };
103
+ saveAuthState({ ...authState, wallet: w });
104
+ }
105
+ } catch (_) {
106
+ }
107
+ }
108
+ const fullWallet = {
109
+ address: w.address,
110
+ chainId: w.chainId || config.defaultChainId || 1,
111
+ uid: w.uid || "",
112
+ sessionId: w.sessionId || "",
113
+ keyId: w.keyId || "",
114
+ encryptedShare: w.encryptedShare || "",
115
+ sid: w.sid || "",
116
+ type: "evm",
117
+ email: w.email || authState.user?.email || ""
118
+ };
119
+ provider.setWallet(fullWallet);
120
+ } else {
121
+ provider.setWallet(authState.wallet);
122
+ if (authState.accessToken && authState.refreshToken && authState.expiresAt) {
123
+ talkenApi.setTokens(
124
+ authState.accessToken,
125
+ authState.refreshToken,
126
+ authState.expiresAt
127
+ );
128
+ }
129
+ }
130
+ const accounts = await provider.request({
131
+ method: "eth_requestAccounts"
132
+ });
133
+ let currentChainId = await provider.request({
134
+ method: "eth_chainId"
135
+ });
136
+ const currentChainIdNumber = Number(currentChainId);
137
+ const isChainSupported = wagmiConfig.chains.some(
138
+ (c) => c.id === currentChainIdNumber
139
+ );
140
+ if (!isChainSupported && wagmiConfig.chains.length > 0) {
141
+ const fallbackChainId = wagmiConfig.chains[0].id;
142
+ await provider.request({
143
+ method: "wallet_switchEthereumChain",
144
+ params: [{ chainId: `0x${fallbackChainId.toString(16)}` }]
145
+ });
146
+ currentChainId = `0x${fallbackChainId.toString(16)}`;
147
+ if (authState.wallet) {
148
+ authState.wallet.chainId = fallbackChainId;
149
+ saveAuthState(authState);
150
+ }
151
+ }
152
+ if (accountsChangedHandler) {
153
+ provider.removeListener("accountsChanged", accountsChangedHandler);
154
+ }
155
+ accountsChangedHandler = (accounts2) => {
156
+ wagmiConfig.emitter.emit("change", {
157
+ accounts: accounts2
158
+ });
159
+ };
160
+ provider.on("accountsChanged", accountsChangedHandler);
161
+ if (chainChangedHandler) {
162
+ provider.removeListener("chainChanged", chainChangedHandler);
163
+ }
164
+ chainChangedHandler = (chainId) => {
165
+ wagmiConfig.emitter.emit("change", {
166
+ chainId: Number(chainId)
167
+ });
168
+ };
169
+ provider.on("chainChanged", chainChangedHandler);
170
+ if (disconnectHandler) {
171
+ provider.removeListener("disconnect", disconnectHandler);
172
+ }
173
+ disconnectHandler = () => {
174
+ wagmiConfig.emitter.emit("disconnect");
175
+ this.onDisconnect();
176
+ };
177
+ provider.on("disconnect", disconnectHandler);
178
+ wagmiConfig.emitter.emit("connect", {
179
+ accounts,
180
+ chainId: Number(currentChainId)
181
+ });
182
+ return {
183
+ accounts,
184
+ chainId: Number(currentChainId)
185
+ };
186
+ } catch (error) {
187
+ console.error("\u274C ABC Connector connect() failed:", {
188
+ message: error.message,
189
+ code: error.code,
190
+ error
191
+ });
192
+ if (error.message === "ABC_LOGIN_REQUIRED") {
193
+ throw error;
194
+ }
195
+ throw error;
196
+ }
197
+ },
198
+ /**
199
+ * Disconnect wallet
200
+ */
201
+ async disconnect() {
202
+ if (accountsChangedHandler) {
203
+ provider.removeListener("accountsChanged", accountsChangedHandler);
204
+ accountsChangedHandler = void 0;
205
+ }
206
+ if (chainChangedHandler) {
207
+ provider.removeListener("chainChanged", chainChangedHandler);
208
+ chainChangedHandler = void 0;
209
+ }
210
+ if (disconnectHandler) {
211
+ provider.removeListener("disconnect", disconnectHandler);
212
+ disconnectHandler = void 0;
213
+ }
214
+ provider.clearWallet();
215
+ talkenApi.auth.logout();
216
+ clearAuthState();
217
+ getCredentialManager().clear();
218
+ },
219
+ /**
220
+ * Get accounts
221
+ */
222
+ async getAccounts() {
223
+ const accounts = await provider.request({
224
+ method: "eth_accounts"
225
+ });
226
+ return accounts.map((account) => account);
227
+ },
228
+ /**
229
+ * Get chain ID
230
+ */
231
+ async getChainId() {
232
+ const chainId = await provider.request({
233
+ method: "eth_chainId"
234
+ });
235
+ return Number(chainId);
236
+ },
237
+ /**
238
+ * Get provider
239
+ */
240
+ async getProvider() {
241
+ return provider;
242
+ },
243
+ /**
244
+ * Check if authorized (has valid session)
245
+ * Auto-refreshes access token if expired but refresh token is valid
246
+ */
247
+ async isAuthorized() {
248
+ try {
249
+ if (isAccessKeyMode) {
250
+ if (provider.isConnected())
251
+ return true;
252
+ const hasKey = !!config.accessKey || typeof localStorage !== "undefined" && !!localStorage.getItem("talken_ak");
253
+ const authState2 = loadAuthState();
254
+ return hasKey && !!authState2?.wallet?.address;
255
+ }
256
+ const authState = loadAuthState();
257
+ if (!authState || !authState.isAuthenticated) {
258
+ return false;
259
+ }
260
+ if (!authState.wallet) {
261
+ return false;
262
+ }
263
+ if (talkenApi.isAuthenticated()) {
264
+ return true;
265
+ }
266
+ const refreshToken = loadFromStorage(
267
+ "refresh_token" /* REFRESH_TOKEN */
268
+ );
269
+ if (!refreshToken) {
270
+ clearStorage();
271
+ return false;
272
+ }
273
+ try {
274
+ const api = getTalkenApiClient();
275
+ if (!api) {
276
+ clearStorage();
277
+ return false;
278
+ }
279
+ const res = await api.auth.refresh();
280
+ talkenApi.setTokens(
281
+ res.accessToken,
282
+ res.refreshToken,
283
+ Date.now() + res.expiresIn * 1e3
284
+ );
285
+ const updatedState = loadAuthState();
286
+ return updatedState?.isAuthenticated ?? false;
287
+ } catch (error) {
288
+ console.error("[AbcConnector] Token refresh failed:", error);
289
+ clearStorage();
290
+ return false;
291
+ }
292
+ } catch (error) {
293
+ console.error(
294
+ "[AbcConnector] Unexpected error in isAuthorized:",
295
+ error
296
+ );
297
+ return false;
298
+ }
299
+ },
300
+ /**
301
+ * Switch chain
302
+ */
303
+ async switchChain({ chainId }) {
304
+ await provider.request({
305
+ method: "wallet_switchEthereumChain",
306
+ params: [{ chainId: `0x${chainId.toString(16)}` }]
307
+ });
308
+ const newChainId = await this.getChainId();
309
+ const authState = loadAuthState();
310
+ if (authState?.wallet) {
311
+ authState.wallet.chainId = newChainId;
312
+ saveAuthState(authState);
313
+ }
314
+ return wagmiConfig.chains.find((x) => x.id === chainId) ?? {
315
+ id: chainId,
316
+ name: `Chain ${chainId}`,
317
+ nativeCurrency: {
318
+ name: "Ether",
319
+ decimals: 18,
320
+ symbol: "ETH"
321
+ },
322
+ rpcUrls: {
323
+ default: { http: [""] }
324
+ }
325
+ };
326
+ },
327
+ /**
328
+ * Handle accounts changed
329
+ */
330
+ onAccountsChanged(accounts) {
331
+ if (accounts.length === 0) {
332
+ this.onDisconnect();
333
+ } else {
334
+ wagmiConfig.emitter.emit("change", {
335
+ accounts
336
+ });
337
+ }
338
+ },
339
+ /**
340
+ * Handle chain changed
341
+ */
342
+ onChainChanged(chain) {
343
+ const chainId = Number(chain);
344
+ wagmiConfig.emitter.emit("change", { chainId });
345
+ },
346
+ /**
347
+ * Handle disconnect
348
+ */
349
+ onDisconnect(_error) {
350
+ provider.clearWallet();
351
+ clearAuthState();
352
+ wagmiConfig.emitter.emit("disconnect");
353
+ }
354
+ };
355
+ });
356
+ }
357
+
358
+ export {
359
+ abcConnector
360
+ };