@talken/talkenkit 2.5.2 → 2.5.3

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 (111) hide show
  1. package/README.md +8 -28
  2. package/dist/{AbcCredentialManager-5W3B7GI4.js → AbcCredentialManager-DDHLW2IH.js} +1 -1
  3. package/dist/AbcCredentialManager-JV4ZBMKF.js +7 -0
  4. package/dist/TalkenApiSingleton-TECFDCT4.js +9 -0
  5. package/dist/{abcWallet-HRNBHY5Q.js → abcWallet-2BVT5XFX.js} +2 -2
  6. package/dist/abcWallet-BFCI4NEM.js +162 -0
  7. package/dist/{chunk-PN6K4CMZ.js → chunk-ALBABQ53.js} +1 -4
  8. package/dist/chunk-DNEDHHS4.js +379 -0
  9. package/dist/chunk-KOK5ZBR4.js +5447 -0
  10. package/dist/chunk-R6ZE7JAZ.js +15 -0
  11. package/dist/{chunk-VCQZZ6SN.js → chunk-WPRIYR63.js} +192 -80
  12. package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthFlow.d.ts +6 -32
  13. package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.d.ts +0 -9
  14. package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasAuth.d.ts +3 -12
  15. package/dist/components/ConnectOptions/AbcWaasAuth/types.d.ts +1 -8
  16. package/dist/components/ConnectOptions/PinAuth/PinAuthFlow.d.ts +6 -4
  17. package/dist/components/ProfileDetails/ProfileDetails.d.ts +5 -5
  18. package/dist/hooks/useMultiChainBalances.d.ts +9 -0
  19. package/dist/index.js +1344 -1423
  20. package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.js +2 -2
  21. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +2 -2
  22. package/dist/wallets/walletConnectors/abcWallet/abcAccessKeyProvider.js +3 -3
  23. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
  24. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +3 -3
  25. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +7 -7
  26. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +4 -4
  27. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +7 -7
  28. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +44 -44
  29. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +3 -3
  30. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +8 -8
  31. package/dist/wallets/walletConnectors/abcWallet/api/ConfigApi.js +2 -2
  32. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +44 -0
  33. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +3 -3
  34. package/dist/wallets/walletConnectors/abcWallet/api/TokenApi.js +2 -2
  35. package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +3 -3
  36. package/dist/wallets/walletConnectors/abcWallet/api/index.js +6 -6
  37. package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +3 -0
  38. package/dist/wallets/walletConnectors/abcWallet/constants.js +5 -3
  39. package/dist/wallets/walletConnectors/abcWallet/index.js +31 -31
  40. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +2 -2
  41. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +4 -0
  42. package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
  43. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +3 -3
  44. package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
  45. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  46. package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
  47. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  48. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  49. package/dist/wallets/walletConnectors/{chunk-4JZPP3S7.js → chunk-2N244XPQ.js} +1 -1
  50. package/dist/wallets/walletConnectors/{chunk-QKK3OPQA.js → chunk-36BJXEBA.js} +1 -1
  51. package/dist/wallets/walletConnectors/{chunk-FKI5AZVH.js → chunk-3K3KYVRN.js} +1 -1
  52. package/dist/wallets/walletConnectors/{chunk-URS2KVYK.js → chunk-5DK36WJ2.js} +1 -1
  53. package/dist/wallets/walletConnectors/chunk-5ERWBR7D.js +977 -0
  54. package/dist/wallets/walletConnectors/chunk-6KRX73ED.js +230 -0
  55. package/dist/wallets/walletConnectors/{chunk-H2AZTZMM.js → chunk-6L5G54IX.js} +1 -1
  56. package/dist/wallets/walletConnectors/chunk-6WF4SXLB.js +156 -0
  57. package/dist/wallets/walletConnectors/{chunk-PF65YS3T.js → chunk-A66MTFML.js} +1 -1
  58. package/dist/wallets/walletConnectors/{chunk-LIGH2LEU.js → chunk-ACLPF2UW.js} +1 -1
  59. package/dist/wallets/walletConnectors/{chunk-NP5PWUVU.js → chunk-BHEVY4QY.js} +2 -48
  60. package/dist/wallets/walletConnectors/{chunk-YKFI6ZGM.js → chunk-BXH3GDX5.js} +1 -1
  61. package/dist/wallets/walletConnectors/{chunk-RGYZNNB6.js → chunk-C4ADBB6M.js} +1 -1
  62. package/dist/wallets/walletConnectors/{chunk-MIX4TRKO.js → chunk-CABLJOMU.js} +1 -1
  63. package/dist/wallets/walletConnectors/{chunk-RX2VOIUB.js → chunk-DPTDOCWL.js} +1 -4
  64. package/dist/wallets/walletConnectors/{chunk-IPH3SIC3.js → chunk-DW36LXIV.js} +8 -7
  65. package/dist/wallets/walletConnectors/chunk-EBTKWCIS.js +224 -0
  66. package/dist/wallets/walletConnectors/{chunk-25ZDAJ3L.js → chunk-EZS3GXZN.js} +1 -1
  67. package/dist/wallets/walletConnectors/{chunk-JBOKTW2Q.js → chunk-FBJ5H6PM.js} +19 -79
  68. package/dist/wallets/walletConnectors/chunk-IM7DEERX.js +585 -0
  69. package/dist/wallets/walletConnectors/{chunk-ASYCOXE6.js → chunk-J3YPHDHM.js} +2 -48
  70. package/dist/wallets/walletConnectors/chunk-JADQLTFW.js +194 -0
  71. package/dist/wallets/walletConnectors/{chunk-L6FCF3FH.js → chunk-L3HWFGTN.js} +2 -2
  72. package/dist/wallets/walletConnectors/chunk-L6WDO3ZN.js +445 -0
  73. package/dist/wallets/walletConnectors/chunk-MO2AXXLI.js +30 -0
  74. package/dist/wallets/walletConnectors/{chunk-BRXYKYKT.js → chunk-NLA45GHJ.js} +17 -77
  75. package/dist/wallets/walletConnectors/{chunk-TVZHPWFR.js → chunk-NU3ITJNK.js} +736 -94
  76. package/dist/wallets/walletConnectors/{chunk-HWRZGGGN.js → chunk-NULM3THX.js} +1 -1
  77. package/dist/wallets/walletConnectors/chunk-OMOYFHBT.js +1485 -0
  78. package/dist/wallets/walletConnectors/{chunk-2A5XTST5.js → chunk-OOCL4OPQ.js} +29 -11
  79. package/dist/wallets/walletConnectors/chunk-PVPSVCVQ.js +96 -0
  80. package/dist/wallets/walletConnectors/chunk-VBNZ7HA3.js +241 -0
  81. package/dist/wallets/walletConnectors/chunk-VDWJ3NQ5.js +52 -0
  82. package/dist/wallets/walletConnectors/chunk-VLHDGDFH.js +273 -0
  83. package/dist/wallets/walletConnectors/{chunk-WKP53WWR.js → chunk-VMCIDCO5.js} +4 -7
  84. package/dist/wallets/walletConnectors/{chunk-4PDTJS5L.js → chunk-VNL7XEWF.js} +4 -7
  85. package/dist/wallets/walletConnectors/chunk-YV6IZWGE.js +393 -0
  86. package/dist/wallets/walletConnectors/{chunk-645DT4TS.js → chunk-ZLH3W5PQ.js} +2 -2
  87. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  88. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  89. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  90. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  91. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  92. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  93. package/dist/wallets/walletConnectors/index.js +61 -61
  94. package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
  95. package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
  96. package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
  97. package/dist/wallets/walletConnectors/klipWallet/klipWallet.js +2 -2
  98. package/dist/wallets/walletConnectors/klipWallet-TBZJ5GGT.js +7 -0
  99. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  100. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  101. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  102. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  103. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  104. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  105. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  106. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  107. package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
  108. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  109. package/package.json +12 -11
  110. package/LICENSE +0 -9
  111. package/dist/wallets/walletConnectors/klipWallet-PPTYYB5G.js +0 -7
@@ -1,4 +1,7 @@
1
1
  "use client";
2
+ import {
3
+ createTalkenApiClient
4
+ } from "./chunk-5ERWBR7D.js";
2
5
  import {
3
6
  setTalkenApiClient
4
7
  } from "./chunk-R6ZE7JAZ.js";
@@ -7,7 +10,7 @@ import {
7
10
  } from "./chunk-GFWUFYT2.js";
8
11
  import {
9
12
  AbcAccessKeyProvider
10
- } from "./chunk-4JZPP3S7.js";
13
+ } from "./chunk-2N244XPQ.js";
11
14
  import {
12
15
  setGlobalDefaultBitcoinNetwork,
13
16
  setGlobalDefaultChainId,
@@ -15,20 +18,20 @@ import {
15
18
  } from "./chunk-O4AU63LK.js";
16
19
  import {
17
20
  createAbcEvmProvider
18
- } from "./chunk-L6FCF3FH.js";
21
+ } from "./chunk-L3HWFGTN.js";
19
22
  import {
20
23
  clearAuthState,
21
24
  clearStorage,
22
25
  loadAuthState,
23
26
  loadFromStorage,
24
27
  saveAuthState
25
- } from "./chunk-PF65YS3T.js";
26
- import {
27
- createTalkenApiClient
28
- } from "./chunk-NP5PWUVU.js";
28
+ } from "./chunk-EBTKWCIS.js";
29
29
  import {
30
30
  getCredentialManager
31
- } from "./chunk-QKK3OPQA.js";
31
+ } from "./chunk-36BJXEBA.js";
32
+ import {
33
+ loadTgAccessKey
34
+ } from "./chunk-6KRX73ED.js";
32
35
 
33
36
  // src/wallets/walletConnectors/abcWallet/abcConnector.ts
34
37
  import { getTalkenApiClient } from "@talken/talkenkit";
@@ -52,9 +55,17 @@ function abcConnector(options) {
52
55
  defaultChainId: config.defaultChainId
53
56
  });
54
57
  setTalkenApiClient(talkenApi);
55
- const isAccessKeyMode = !!config.accessKey;
58
+ const storedAccessKey = typeof window !== "undefined" ? (() => {
59
+ try {
60
+ return localStorage.getItem("talken_api_access_key_raw");
61
+ } catch {
62
+ return null;
63
+ }
64
+ })() : null;
65
+ const effectiveAccessKey = config.accessKey || storedAccessKey;
66
+ const isAccessKeyMode = !!effectiveAccessKey;
56
67
  const provider = isAccessKeyMode ? new AbcAccessKeyProvider(
57
- config.accessKey,
68
+ effectiveAccessKey,
58
69
  resolveTalkenApiUrl(config.talkenApiUrl)
59
70
  ) : createAbcEvmProvider(talkenApi);
60
71
  let accountsChangedHandler;
@@ -82,7 +93,7 @@ function abcConnector(options) {
82
93
  method: "POST",
83
94
  headers: {
84
95
  "Content-Type": "application/json",
85
- "X-Access-Key": config.accessKey
96
+ "X-Access-Key": effectiveAccessKey
86
97
  },
87
98
  body: JSON.stringify({ action: "info" })
88
99
  });
@@ -213,6 +224,10 @@ function abcConnector(options) {
213
224
  }
214
225
  provider.clearWallet();
215
226
  talkenApi.auth.logout();
227
+ try {
228
+ localStorage.removeItem("talken_api_access_key_raw");
229
+ } catch {
230
+ }
216
231
  clearAuthState();
217
232
  getCredentialManager().clear();
218
233
  },
@@ -249,7 +264,7 @@ function abcConnector(options) {
249
264
  if (isAccessKeyMode) {
250
265
  if (provider.isConnected())
251
266
  return true;
252
- const hasKey = !!config.accessKey || typeof localStorage !== "undefined" && !!localStorage.getItem("talken_ak");
267
+ const hasKey = !!effectiveAccessKey || typeof localStorage !== "undefined" && (!!localStorage.getItem("talken_api_access_key_raw") || !!loadTgAccessKey());
253
268
  const authState2 = loadAuthState();
254
269
  return hasKey && !!authState2?.wallet?.address;
255
270
  }
@@ -263,6 +278,9 @@ function abcConnector(options) {
263
278
  if (talkenApi.isAuthenticated()) {
264
279
  return true;
265
280
  }
281
+ if (talkenApi.isAccessKeyMode()) {
282
+ return true;
283
+ }
266
284
  const refreshToken = loadFromStorage(
267
285
  "refresh_token" /* REFRESH_TOKEN */
268
286
  );
@@ -0,0 +1,96 @@
1
+ "use client";
2
+ import {
3
+ STORAGE_PREFIX
4
+ } from "./chunk-6KRX73ED.js";
5
+
6
+ // src/wallets/walletConnectors/abcWallet/sessionUtils.ts
7
+ import { getTalkenApiClient } from "@talken/talkenkit";
8
+ var SessionExpiredError = class extends Error {
9
+ constructor(message = "Session expired. Please reconnect your wallet.") {
10
+ super(message);
11
+ this.name = "SessionExpiredError";
12
+ }
13
+ };
14
+ function dispatchSessionExpired() {
15
+ if (typeof window !== "undefined") {
16
+ console.warn("[SessionUtils] \u{1F6A8} dispatchSessionExpired called from:");
17
+ console.trace();
18
+ window.dispatchEvent(new CustomEvent("talkenkit:session_expired"));
19
+ }
20
+ }
21
+ function handleUnauthorizedResponse(response) {
22
+ if (response.status === 401) {
23
+ dispatchSessionExpired();
24
+ throw new SessionExpiredError(
25
+ "Session expired. Please reconnect your wallet."
26
+ );
27
+ }
28
+ }
29
+ async function fetchWithSessionCheck(url, options) {
30
+ const response = await fetch(url, options);
31
+ if (!response.ok && response.status === 401) {
32
+ const errorText = await response.text();
33
+ console.error("[ABC WaaS] \u274C Unauthorized (401):", errorText);
34
+ dispatchSessionExpired();
35
+ throw new SessionExpiredError(
36
+ "Session expired. Please reconnect your wallet."
37
+ );
38
+ }
39
+ return response;
40
+ }
41
+ async function refreshAccessToken(pinCallback) {
42
+ if (pinCallback) {
43
+ await pinCallback();
44
+ }
45
+ const api = getTalkenApiClient();
46
+ if (!api) {
47
+ console.warn(
48
+ "[SessionUtils] TalkenApiClient not initialized - opening connect modal"
49
+ );
50
+ dispatchSessionExpired();
51
+ await new Promise((resolve) => setTimeout(resolve, 100));
52
+ throw new SessionExpiredError(
53
+ "Session expired. Please reconnect your wallet."
54
+ );
55
+ }
56
+ const refreshToken = api.getRefreshToken() || localStorage.getItem(`${STORAGE_PREFIX}refresh_token`);
57
+ if (!refreshToken) {
58
+ console.warn("[SessionUtils] No refresh token - opening connect modal");
59
+ dispatchSessionExpired();
60
+ await new Promise((resolve) => setTimeout(resolve, 100));
61
+ throw new SessionExpiredError(
62
+ "Session expired. Please reconnect your wallet."
63
+ );
64
+ }
65
+ try {
66
+ const res = await api.auth.refresh();
67
+ const expiresAt = Date.now() + res.expiresIn * 1e3;
68
+ api.setTokens(res.accessToken, res.refreshToken || refreshToken, expiresAt);
69
+ localStorage.setItem(`${STORAGE_PREFIX}access_token`, res.accessToken);
70
+ if (res.refreshToken) {
71
+ localStorage.setItem(`${STORAGE_PREFIX}refresh_token`, res.refreshToken);
72
+ }
73
+ localStorage.setItem(`${STORAGE_PREFIX}expires_at`, String(expiresAt));
74
+ console.log(
75
+ "[SessionUtils] \u2705 Token refreshed - expires in:",
76
+ (res.expiresIn / 60 / 60).toFixed(2),
77
+ "hours"
78
+ );
79
+ return res.accessToken;
80
+ } catch (error) {
81
+ console.error("[SessionUtils] Token refresh failed:", error);
82
+ dispatchSessionExpired();
83
+ await new Promise((resolve) => setTimeout(resolve, 100));
84
+ throw new SessionExpiredError(
85
+ "Session expired. Please reconnect your wallet."
86
+ );
87
+ }
88
+ }
89
+
90
+ export {
91
+ SessionExpiredError,
92
+ dispatchSessionExpired,
93
+ handleUnauthorizedResponse,
94
+ fetchWithSessionCheck,
95
+ refreshAccessToken
96
+ };
@@ -0,0 +1,241 @@
1
+ "use client";
2
+ import {
3
+ TokenApi
4
+ } from "./chunk-3K3KYVRN.js";
5
+
6
+ // src/wallets/walletConnectors/abcWallet/api/WalletscanApi.ts
7
+ import { getTalkenApiClient, networkNameToChainKey } from "@talken/talkenkit";
8
+ var WalletscanApi = class {
9
+ constructor() {
10
+ this.tokenApi = new TokenApi();
11
+ }
12
+ /**
13
+ * Get all wallet tokens with balances via TalkenApiClient walletscan endpoint
14
+ */
15
+ async getWalletTokens(params) {
16
+ const api = getTalkenApiClient();
17
+ if (!api)
18
+ throw new Error("TalkenApiClient not initialized");
19
+ try {
20
+ return await api.walletscan.getTokens({
21
+ walletAddress: params.walletAddress,
22
+ chainKeys: networkNameToChainKey(params.networks)
23
+ });
24
+ } catch (error) {
25
+ console.warn("[WalletscanApi] TalkenApi getTokens failed:", error);
26
+ return [];
27
+ }
28
+ }
29
+ /**
30
+ * Get all wallet tokens with balances with timeout
31
+ */
32
+ async getWalletTokensWithTimeout(params, timeoutMs = 3e3) {
33
+ try {
34
+ return await Promise.race([
35
+ this.getWalletTokens(params),
36
+ new Promise(
37
+ (resolve) => setTimeout(() => resolve([]), timeoutMs)
38
+ )
39
+ ]);
40
+ } catch (_error) {
41
+ console.warn("[WalletscanApi] Wallet token request timed out");
42
+ return [];
43
+ }
44
+ }
45
+ /**
46
+ * Get a specific wallet token balance by contract/mint address.
47
+ */
48
+ async getWalletTokenBalance(params) {
49
+ const tokens = await this.getWalletTokens(params);
50
+ const target = params.contractAddress.toLowerCase();
51
+ return tokens.find((token) => token.contractAddress?.toLowerCase() === target) ?? null;
52
+ }
53
+ /**
54
+ * Get a specific wallet token balance by contract/mint address with timeout.
55
+ */
56
+ async getWalletTokenBalanceWithTimeout(params, timeoutMs = 3e3) {
57
+ try {
58
+ return await Promise.race([
59
+ this.getWalletTokenBalance(params),
60
+ new Promise(
61
+ (resolve) => setTimeout(() => resolve(null), timeoutMs)
62
+ )
63
+ ]);
64
+ } catch (_error) {
65
+ console.warn("[WalletscanApi] Wallet token balance request timed out");
66
+ return null;
67
+ }
68
+ }
69
+ /**
70
+ * Get token metadata via TalkenApiClient walletscan endpoint
71
+ *
72
+ * @param params - Contract address and networks
73
+ * @returns Token metadata or null if not found/failed
74
+ */
75
+ async getContractToken(params) {
76
+ const api = getTalkenApiClient();
77
+ if (!api)
78
+ throw new Error("TalkenApiClient not initialized");
79
+ try {
80
+ const tokens = await api.walletscan.getToken({
81
+ contractAddress: params.contractAddress,
82
+ chainKeys: networkNameToChainKey(params.networks)
83
+ });
84
+ return tokens.length > 0 ? tokens[0] : null;
85
+ } catch (error) {
86
+ console.warn(
87
+ "[WalletscanApi] TalkenApi getToken failed:",
88
+ params.contractAddress,
89
+ error
90
+ );
91
+ return null;
92
+ }
93
+ }
94
+ /**
95
+ * Get token metadata with timeout
96
+ *
97
+ * @param params - Contract address and networks
98
+ * @param timeoutMs - Timeout in milliseconds (default: 3000)
99
+ * @returns Token metadata or null if timeout/failed
100
+ */
101
+ async getContractTokenWithTimeout(params, timeoutMs = 3e3) {
102
+ try {
103
+ const result = await Promise.race([
104
+ this.getContractToken(params),
105
+ new Promise(
106
+ (resolve) => setTimeout(() => resolve(null), timeoutMs)
107
+ )
108
+ ]);
109
+ return result;
110
+ } catch (_error) {
111
+ console.warn(
112
+ "[WalletscanApi] Token metadata request timed out:",
113
+ params.contractAddress
114
+ );
115
+ return null;
116
+ }
117
+ }
118
+ /**
119
+ * Get native coin info via TalkenApiClient walletscan endpoint
120
+ *
121
+ * @param params - Wallet address and networks
122
+ * @returns Array of native coins or empty array if failed
123
+ */
124
+ async getNativeToken(params) {
125
+ const api = getTalkenApiClient();
126
+ if (!api)
127
+ throw new Error("TalkenApiClient not initialized");
128
+ const chainKey = networkNameToChainKey(params.networks);
129
+ try {
130
+ return await api.walletscan.getNativeTokens({
131
+ walletAddress: params.walletAddress,
132
+ chainKeys: chainKey
133
+ });
134
+ } catch (error) {
135
+ console.warn("[WalletscanApi] TalkenApi getNativeTokens failed:", error);
136
+ try {
137
+ const balances = await this.tokenApi.getBalances(
138
+ params.walletAddress,
139
+ chainKey
140
+ );
141
+ const nativeToken = balances.find((token) => token?.isNative);
142
+ if (!nativeToken) {
143
+ return [];
144
+ }
145
+ const t = nativeToken;
146
+ return [
147
+ {
148
+ name: t.name,
149
+ symbol: t.symbol,
150
+ decimals: t.decimals ?? 18,
151
+ logo: t.logoUrl ?? void 0,
152
+ network: chainKey,
153
+ contractAddress: t.address ?? void 0,
154
+ isNative: true,
155
+ balance: t.balance,
156
+ hrBalance: t.balanceFormatted ? Number(t.balanceFormatted) : void 0
157
+ }
158
+ ];
159
+ } catch (fallbackError) {
160
+ console.warn(
161
+ "[WalletscanApi] TokenApi native fallback failed:",
162
+ fallbackError
163
+ );
164
+ return [];
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * Get native coin info with timeout
170
+ *
171
+ * @param params - Wallet address and networks
172
+ * @param timeoutMs - Timeout in milliseconds (default: 3000)
173
+ * @returns First native coin or null if timeout/failed
174
+ */
175
+ async getNativeTokenWithTimeout(params, timeoutMs = 3e3) {
176
+ try {
177
+ const natives = await Promise.race([
178
+ this.getNativeToken(params),
179
+ new Promise(
180
+ (resolve) => setTimeout(() => resolve([]), timeoutMs)
181
+ )
182
+ ]);
183
+ return natives.length > 0 ? natives[0] : null;
184
+ } catch (_error) {
185
+ console.warn("[WalletscanApi] Native coin request timed out");
186
+ return null;
187
+ }
188
+ }
189
+ /**
190
+ * Get NFT metadata via TalkenApiClient walletscan endpoint
191
+ *
192
+ * @param params - Contract address, wallet address, and networks
193
+ * @returns Array of NFT metadata or empty array if failed
194
+ */
195
+ async getNFT(params) {
196
+ const api = getTalkenApiClient();
197
+ if (!api)
198
+ throw new Error("TalkenApiClient not initialized");
199
+ try {
200
+ return await api.walletscan.getNfts({
201
+ chainKeys: networkNameToChainKey(params.networks),
202
+ walletAddress: params.walletAddress
203
+ });
204
+ } catch (error) {
205
+ console.warn(
206
+ "[WalletscanApi] TalkenApi getNfts failed:",
207
+ params.contractAddress,
208
+ error
209
+ );
210
+ return [];
211
+ }
212
+ }
213
+ /**
214
+ * Get NFT metadata with timeout
215
+ *
216
+ * @param params - Contract address, wallet address, and networks
217
+ * @param timeoutMs - Timeout in milliseconds (default: 3000)
218
+ * @returns First NFT or null if timeout/failed/empty
219
+ */
220
+ async getNFTWithTimeout(params, timeoutMs = 3e3) {
221
+ try {
222
+ const nfts = await Promise.race([
223
+ this.getNFT(params),
224
+ new Promise(
225
+ (resolve) => setTimeout(() => resolve([]), timeoutMs)
226
+ )
227
+ ]);
228
+ return nfts.length > 0 ? nfts[0] : null;
229
+ } catch (_error) {
230
+ console.warn(
231
+ "[WalletscanApi] NFT metadata request timed out:",
232
+ params.contractAddress
233
+ );
234
+ return null;
235
+ }
236
+ }
237
+ };
238
+
239
+ export {
240
+ WalletscanApi
241
+ };
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import {
3
+ TALKEN_API_ENDPOINTS
4
+ } from "./chunk-DPTDOCWL.js";
5
+
6
+ // src/wallets/walletConnectors/abcWallet/api/ConfigApi.ts
7
+ import { getTalkenApiClient } from "@talken/talkenkit";
8
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ var toStatusCode = (status) => {
10
+ if (typeof status === "number")
11
+ return status;
12
+ if (typeof status === "string") {
13
+ const normalized = status.trim().toLowerCase();
14
+ if (normalized === "success")
15
+ return 1;
16
+ if (normalized === "reverted" || normalized === "failed")
17
+ return 0;
18
+ const parsed = Number(status);
19
+ return Number.isFinite(parsed) ? parsed : null;
20
+ }
21
+ return null;
22
+ };
23
+ var ConfigApi = class {
24
+ async getTxStatus(chainKey, txHash) {
25
+ const api = getTalkenApiClient();
26
+ if (!api)
27
+ throw new Error("TalkenApiClient not initialized");
28
+ return api.get(
29
+ `${TALKEN_API_ENDPOINTS.CONFIG_TX_STATUS}/${encodeURIComponent(chainKey)}/${encodeURIComponent(txHash)}`
30
+ );
31
+ }
32
+ async waitForTxStatus(chainKey, txHash, options = {}) {
33
+ const { timeoutMs = 3e5, pollIntervalMs = 3e3 } = options;
34
+ const deadline = Date.now() + timeoutMs;
35
+ while (Date.now() < deadline) {
36
+ const status = await this.getTxStatus(chainKey, txHash);
37
+ if (status.found) {
38
+ const code = toStatusCode(status.status);
39
+ if (code !== null && code !== 1) {
40
+ throw new Error(status.message || "Transaction reverted on-chain");
41
+ }
42
+ return status;
43
+ }
44
+ await sleep(pollIntervalMs);
45
+ }
46
+ throw new Error("Transaction confirmation timed out");
47
+ }
48
+ };
49
+
50
+ export {
51
+ ConfigApi
52
+ };