@talken/talkenkit 2.5.1 → 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.
- package/README.md +8 -28
- package/dist/{AbcCredentialManager-5W3B7GI4.js → AbcCredentialManager-DDHLW2IH.js} +1 -1
- package/dist/AbcCredentialManager-JV4ZBMKF.js +7 -0
- package/dist/TalkenApiSingleton-TECFDCT4.js +9 -0
- package/dist/{abcWallet-O5IRLUXL.js → abcWallet-2BVT5XFX.js} +2 -2
- package/dist/abcWallet-BFCI4NEM.js +162 -0
- package/dist/{chunk-PN6K4CMZ.js → chunk-ALBABQ53.js} +1 -4
- package/dist/chunk-DNEDHHS4.js +379 -0
- package/dist/chunk-KOK5ZBR4.js +5447 -0
- package/dist/chunk-R6ZE7JAZ.js +15 -0
- package/dist/{chunk-UHZL3WSM.js → chunk-WPRIYR63.js} +194 -69
- package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthFlow.d.ts +6 -32
- package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.d.ts +0 -9
- package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasAuth.d.ts +3 -12
- package/dist/components/ConnectOptions/AbcWaasAuth/types.d.ts +1 -8
- package/dist/components/ConnectOptions/PinAuth/PinAuthFlow.d.ts +6 -4
- package/dist/components/ProfileDetails/ProfileDetails.d.ts +5 -5
- package/dist/hooks/useMultiChainBalances.d.ts +9 -0
- package/dist/index.js +1344 -1423
- package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/abcAccessKeyProvider.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +44 -44
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +8 -8
- package/dist/wallets/walletConnectors/abcWallet/api/ConfigApi.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +44 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/api/TokenApi.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +6 -6
- package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +3 -0
- package/dist/wallets/walletConnectors/abcWallet/constants.js +5 -3
- package/dist/wallets/walletConnectors/abcWallet/index.js +19 -19
- package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +4 -0
- package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +3 -3
- package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
- package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/{chunk-4JZPP3S7.js → chunk-2N244XPQ.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-QKK3OPQA.js → chunk-36BJXEBA.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-FKI5AZVH.js → chunk-3K3KYVRN.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-URS2KVYK.js → chunk-5DK36WJ2.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-5ERWBR7D.js +977 -0
- package/dist/wallets/walletConnectors/chunk-6KRX73ED.js +230 -0
- package/dist/wallets/walletConnectors/{chunk-H2AZTZMM.js → chunk-6L5G54IX.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-6WF4SXLB.js +156 -0
- package/dist/wallets/walletConnectors/{chunk-PF65YS3T.js → chunk-A66MTFML.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-LIGH2LEU.js → chunk-ACLPF2UW.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-KIYXONNH.js → chunk-BHEVY4QY.js} +2 -35
- package/dist/wallets/walletConnectors/{chunk-YKFI6ZGM.js → chunk-BXH3GDX5.js} +1 -1
- package/dist/wallets/walletConnectors/{chunk-RGYZNNB6.js → chunk-C4ADBB6M.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-CABLJOMU.js +194 -0
- package/dist/wallets/walletConnectors/{chunk-RX2VOIUB.js → chunk-DPTDOCWL.js} +1 -4
- package/dist/wallets/walletConnectors/{chunk-6TAU7OQK.js → chunk-DW36LXIV.js} +8 -7
- package/dist/wallets/walletConnectors/chunk-EBTKWCIS.js +224 -0
- package/dist/wallets/walletConnectors/{chunk-25ZDAJ3L.js → chunk-EZS3GXZN.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-FBJ5H6PM.js +300 -0
- package/dist/wallets/walletConnectors/chunk-IM7DEERX.js +585 -0
- package/dist/wallets/walletConnectors/chunk-J3YPHDHM.js +827 -0
- package/dist/wallets/walletConnectors/chunk-JADQLTFW.js +194 -0
- package/dist/wallets/walletConnectors/{chunk-L6FCF3FH.js → chunk-L3HWFGTN.js} +2 -2
- package/dist/wallets/walletConnectors/chunk-L6WDO3ZN.js +445 -0
- package/dist/wallets/walletConnectors/chunk-MO2AXXLI.js +30 -0
- package/dist/wallets/walletConnectors/chunk-NLA45GHJ.js +300 -0
- package/dist/wallets/walletConnectors/chunk-NU3ITJNK.js +1485 -0
- package/dist/wallets/walletConnectors/{chunk-HWRZGGGN.js → chunk-NULM3THX.js} +1 -1
- package/dist/wallets/walletConnectors/chunk-OMOYFHBT.js +1485 -0
- package/dist/wallets/walletConnectors/{chunk-4YEALKXG.js → chunk-OOCL4OPQ.js} +29 -11
- package/dist/wallets/walletConnectors/chunk-PVPSVCVQ.js +96 -0
- package/dist/wallets/walletConnectors/chunk-VBNZ7HA3.js +241 -0
- package/dist/wallets/walletConnectors/chunk-VDWJ3NQ5.js +52 -0
- package/dist/wallets/walletConnectors/chunk-VLHDGDFH.js +273 -0
- package/dist/wallets/walletConnectors/chunk-VMCIDCO5.js +54 -0
- package/dist/wallets/walletConnectors/chunk-VNL7XEWF.js +54 -0
- package/dist/wallets/walletConnectors/chunk-YV6IZWGE.js +393 -0
- package/dist/wallets/walletConnectors/{chunk-645DT4TS.js → chunk-ZLH3W5PQ.js} +2 -2
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
- package/dist/wallets/walletConnectors/index.js +67 -67
- package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
- package/dist/wallets/walletConnectors/klipWallet/klipWallet.js +2 -2
- package/dist/wallets/walletConnectors/klipWallet-TBZJ5GGT.js +7 -0
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
- package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
- package/package.json +12 -11
- package/LICENSE +0 -9
- package/dist/wallets/walletConnectors/klipWallet-PPTYYB5G.js +0 -7
|
@@ -1,16 +1,16 @@
|
|
|
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";
|
|
5
8
|
import {
|
|
6
9
|
resolveTalkenApiUrl
|
|
7
10
|
} from "./chunk-GFWUFYT2.js";
|
|
8
|
-
import {
|
|
9
|
-
createTalkenApiClient
|
|
10
|
-
} from "./chunk-KIYXONNH.js";
|
|
11
11
|
import {
|
|
12
12
|
AbcAccessKeyProvider
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2N244XPQ.js";
|
|
14
14
|
import {
|
|
15
15
|
setGlobalDefaultBitcoinNetwork,
|
|
16
16
|
setGlobalDefaultChainId,
|
|
@@ -18,17 +18,20 @@ import {
|
|
|
18
18
|
} from "./chunk-O4AU63LK.js";
|
|
19
19
|
import {
|
|
20
20
|
createAbcEvmProvider
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-L3HWFGTN.js";
|
|
22
22
|
import {
|
|
23
23
|
clearAuthState,
|
|
24
24
|
clearStorage,
|
|
25
25
|
loadAuthState,
|
|
26
26
|
loadFromStorage,
|
|
27
27
|
saveAuthState
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-EBTKWCIS.js";
|
|
29
29
|
import {
|
|
30
30
|
getCredentialManager
|
|
31
|
-
} from "./chunk-
|
|
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
|
|
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
|
-
|
|
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":
|
|
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 = !!
|
|
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
|
+
};
|