@talken/talkenkit 2.4.23 → 2.4.25
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/AbcCredentialManager-DDHLW2IH.js +7 -0
- package/dist/AbcCredentialManager-E723A55X.js +7 -0
- package/dist/AbcCredentialManager-GUV5JQ2V.js +7 -0
- package/dist/AbcCredentialManager-Z7GDJHYR.js +7 -0
- package/dist/abcWallet-3PWHJXWR.js +181 -0
- package/dist/abcWallet-3XPV7ATY.js +185 -0
- package/dist/abcWallet-3XSSUDLJ.js +155 -0
- package/dist/abcWallet-53HAU4MH.js +155 -0
- package/dist/abcWallet-5B2YHZGY.js +155 -0
- package/dist/abcWallet-664AHBNM.js +183 -0
- package/dist/abcWallet-BV7HK3OX.js +181 -0
- package/dist/abcWallet-CRKQ3O6J.js +155 -0
- package/dist/abcWallet-H4JOSC4N.js +155 -0
- package/dist/abcWallet-HM7KZIMP.js +155 -0
- package/dist/abcWallet-I5DVALAS.js +155 -0
- package/dist/abcWallet-IF3EOKHC.js +183 -0
- package/dist/abcWallet-IUG22ZE3.js +155 -0
- package/dist/abcWallet-IYC3CKEO.js +155 -0
- package/dist/abcWallet-JE6UR4QF.js +181 -0
- package/dist/abcWallet-KPKVEGNP.js +185 -0
- package/dist/abcWallet-MWUFO3JQ.js +161 -0
- package/dist/abcWallet-MZAL5NXP.js +181 -0
- package/dist/abcWallet-N2UADRNR.js +155 -0
- package/dist/abcWallet-OGHORNUW.js +181 -0
- package/dist/abcWallet-OL47MLVO.js +161 -0
- package/dist/abcWallet-QSK6VJFU.js +181 -0
- package/dist/abcWallet-RKT3W3FX.js +155 -0
- package/dist/abcWallet-VHXTAARP.js +155 -0
- package/dist/abcWallet-VYU3TEGJ.js +161 -0
- package/dist/abcWallet-WZGXGXUA.js +161 -0
- package/dist/abcWallet-YFYTW2JH.js +155 -0
- package/dist/abcWallet-ZPVQY4XE.js +155 -0
- package/dist/chunk-2OHX4KTB.js +5382 -0
- package/dist/chunk-3VPMUBCL.js +5196 -0
- package/dist/chunk-5SDWPKKX.js +5322 -0
- package/dist/chunk-6RBGFYAF.js +5076 -0
- package/dist/chunk-7L2ANWBB.js +5139 -0
- package/dist/chunk-7VIEAJAM.js +5172 -0
- package/dist/chunk-ALBABQ53.js +354 -0
- package/dist/chunk-BY6GTSWI.js +5059 -0
- package/dist/chunk-DWE3CZEL.js +5171 -0
- package/dist/chunk-J6P2IT7Z.js +5465 -0
- package/dist/chunk-JIRBQUIB.js +5348 -0
- package/dist/chunk-K6CLOFGV.js +5129 -0
- package/dist/chunk-KYTIQ23P.js +5390 -0
- package/dist/chunk-MARFD3QV.js +5164 -0
- package/dist/chunk-MRRWKS2W.js +348 -0
- package/dist/chunk-NQCUKFAV.js +5381 -0
- package/dist/chunk-PILL2YTG.js +5075 -0
- package/dist/chunk-QW7D53VM.js +5129 -0
- package/dist/chunk-RAWLCGOW.js +5058 -0
- package/dist/chunk-RIEG3EJO.js +5385 -0
- package/dist/chunk-SHUPSYR2.js +5004 -0
- package/dist/chunk-UIGQOSRS.js +5174 -0
- package/dist/chunk-UINIIZCG.js +5098 -0
- package/dist/chunk-UKIPSWEV.js +5386 -0
- package/dist/chunk-VOQSYTG3.js +5419 -0
- package/dist/chunk-VT5Q2XKZ.js +5193 -0
- package/dist/chunk-VXQYKPGQ.js +5476 -0
- package/dist/chunk-VYLJNEKY.js +5129 -0
- package/dist/chunk-X24B5DJR.js +323 -0
- package/dist/chunk-X3C73JWU.js +5370 -0
- package/dist/chunk-XIDK5P36.js +288 -0
- package/dist/chunk-ZHRI7SGC.js +5359 -0
- package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthFlow.d.ts +1 -2
- package/dist/components/RainbowKitProvider/InternalPinProvider.d.ts +1 -1
- package/dist/contexts/MultiChainContext.d.ts +2 -2
- package/dist/hooks/internal/abcEmbeddedWallet.d.ts +26 -0
- package/dist/hooks/useProfile.d.ts +13 -6
- package/dist/hooks/useSolanaWallet.d.ts +13 -8
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1211 -1158
- package/dist/providers/AbcAuthProvider.d.ts +3 -1
- package/dist/providers/SignConfirmationProvider/useApiClient.d.ts +3 -0
- package/dist/solana/ConfiguredWalletProvider.d.ts +10 -0
- package/dist/solana/LegacySolflareWalletAdapter.d.ts +32 -0
- package/dist/solana/connectExternalWallet.d.ts +9 -0
- package/dist/solana/isWalletReady.d.ts +2 -0
- package/dist/transactions/transactionStore.d.ts +2 -5
- package/dist/utils/apiClientFactory.d.ts +16 -1
- package/dist/utils/encryption.d.ts +0 -4
- package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.d.ts +49 -0
- package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.js +8 -0
- package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.d.ts +4 -0
- package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +12 -15
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +2 -0
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +3 -1
- package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +7 -6
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +25 -1
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +5 -4
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +0 -4
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +11 -1
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +14 -9
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +3 -2
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +3 -1
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +8 -7
- package/dist/wallets/walletConnectors/abcWallet/api/ConfigApi.d.ts +21 -0
- package/dist/wallets/walletConnectors/abcWallet/api/ConfigApi.js +8 -0
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +28 -115
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +1 -6
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +24 -1
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +4 -3
- package/dist/wallets/walletConnectors/abcWallet/api/TokenApi.d.ts +14 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TokenApi.js +8 -0
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.d.ts +20 -0
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/index.d.ts +3 -0
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +19 -6
- package/dist/wallets/walletConnectors/abcWallet/backfillMissingWallets.d.ts +3 -0
- package/dist/wallets/walletConnectors/abcWallet/backfillMissingWallets.js +16 -0
- package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +4 -0
- package/dist/wallets/walletConnectors/abcWallet/constants.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/index.d.ts +3 -2
- package/dist/wallets/walletConnectors/abcWallet/index.js +39 -53
- package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +2 -1
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +10 -9
- package/dist/wallets/walletConnectors/abcWallet/types.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/utils.d.ts +0 -83
- package/dist/wallets/walletConnectors/abcWallet/utils.js +3 -41
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.d.ts +9 -3
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +5 -2
- package/dist/wallets/walletConnectors/chunk-2XX4LJSQ.js +1387 -0
- package/dist/wallets/walletConnectors/chunk-3BUGPUMD.js +151 -0
- package/dist/wallets/walletConnectors/chunk-3H7YKUJZ.js +1407 -0
- package/dist/wallets/walletConnectors/chunk-3OWQ6MEU.js +54 -0
- package/dist/wallets/walletConnectors/chunk-3VDYWOS4.js +300 -0
- package/dist/wallets/walletConnectors/chunk-3XOXT4AM.js +314 -0
- package/dist/wallets/walletConnectors/chunk-42D2UPKR.js +439 -0
- package/dist/wallets/walletConnectors/chunk-42MF6LUP.js +563 -0
- package/dist/wallets/walletConnectors/chunk-4LIJB776.js +273 -0
- package/dist/wallets/walletConnectors/chunk-4P3SPC44.js +51 -0
- package/dist/wallets/walletConnectors/chunk-4RZVAQQ4.js +574 -0
- package/dist/wallets/walletConnectors/chunk-53UTBIKF.js +209 -0
- package/dist/wallets/walletConnectors/chunk-54KVT46V.js +1477 -0
- package/dist/wallets/walletConnectors/chunk-5UBUX5BT.js +440 -0
- package/dist/wallets/walletConnectors/chunk-5ZBV5WE2.js +94 -0
- package/dist/wallets/walletConnectors/chunk-6EUOVOQK.js +151 -0
- package/dist/wallets/walletConnectors/chunk-6WF4SXLB.js +156 -0
- package/dist/wallets/walletConnectors/chunk-6YUJPIJ5.js +351 -0
- package/dist/wallets/walletConnectors/chunk-77YYMCMD.js +273 -0
- package/dist/wallets/walletConnectors/chunk-7DM6H5BJ.js +54 -0
- package/dist/wallets/walletConnectors/chunk-7EQNUYV2.js +482 -0
- package/dist/wallets/walletConnectors/chunk-7K77YGQN.js +54 -0
- package/dist/wallets/walletConnectors/chunk-7MMVOEZF.js +393 -0
- package/dist/wallets/walletConnectors/chunk-7ORDZ6EQ.js +1479 -0
- package/dist/wallets/walletConnectors/chunk-7RDMH4SD.js +54 -0
- package/dist/wallets/walletConnectors/chunk-7S4N4DRT.js +306 -0
- package/dist/wallets/walletConnectors/chunk-7SWRH3EI.js +96 -0
- package/dist/wallets/walletConnectors/chunk-A3OJZTDV.js +54 -0
- package/dist/wallets/walletConnectors/chunk-A66MTFML.js +223 -0
- package/dist/wallets/walletConnectors/chunk-ACLPF2UW.js +96 -0
- package/dist/wallets/walletConnectors/chunk-AJBRO3VA.js +300 -0
- package/dist/wallets/walletConnectors/chunk-BKVGLYLI.js +194 -0
- package/dist/wallets/walletConnectors/chunk-BXH3GDX5.js +273 -0
- package/dist/wallets/walletConnectors/chunk-C3FPON5L.js +213 -0
- package/dist/wallets/walletConnectors/chunk-CABLJOMU.js +194 -0
- package/dist/wallets/walletConnectors/chunk-CBIDNYV4.js +1407 -0
- package/dist/wallets/walletConnectors/chunk-CE37VZAR.js +300 -0
- package/dist/wallets/walletConnectors/chunk-DD6KK4BR.js +54 -0
- package/dist/wallets/walletConnectors/chunk-DPTDOCWL.js +205 -0
- package/dist/wallets/walletConnectors/chunk-DSNVWCPD.js +131 -0
- package/dist/wallets/walletConnectors/chunk-DULGAYBU.js +785 -0
- package/dist/wallets/walletConnectors/chunk-DZUXOGSA.js +54 -0
- package/dist/wallets/walletConnectors/chunk-E7TDM6P6.js +205 -0
- package/dist/wallets/walletConnectors/chunk-EVJIFLSY.js +93 -0
- package/dist/wallets/walletConnectors/chunk-EVW3ZB3Q.js +386 -0
- package/dist/wallets/walletConnectors/chunk-F2UWSAMX.js +54 -0
- package/dist/wallets/walletConnectors/chunk-FBVPR472.js +314 -0
- package/dist/wallets/walletConnectors/chunk-FKS2YLVW.js +273 -0
- package/dist/wallets/walletConnectors/chunk-FOGNJZPY.js +54 -0
- package/dist/wallets/walletConnectors/chunk-FSSV6JY3.js +54 -0
- package/dist/wallets/walletConnectors/chunk-GBMOX5JN.js +54 -0
- package/dist/wallets/walletConnectors/chunk-GFLJ2MAG.js +54 -0
- package/dist/wallets/walletConnectors/chunk-GGPJJ6KS.js +1407 -0
- package/dist/wallets/walletConnectors/chunk-GMAYKJEI.js +508 -0
- package/dist/wallets/walletConnectors/chunk-GWYZ2IPP.js +1479 -0
- package/dist/wallets/walletConnectors/chunk-H3OWNM73.js +300 -0
- package/dist/wallets/walletConnectors/chunk-HF6GFAE5.js +54 -0
- package/dist/wallets/walletConnectors/chunk-IM7DEERX.js +585 -0
- package/dist/wallets/walletConnectors/chunk-INFMRNND.js +300 -0
- package/dist/wallets/walletConnectors/chunk-INT6LGH7.js +180 -0
- package/dist/wallets/walletConnectors/chunk-ITZ42A33.js +273 -0
- package/dist/wallets/walletConnectors/chunk-J4IF6BFF.js +300 -0
- package/dist/wallets/walletConnectors/chunk-JADQLTFW.js +194 -0
- package/dist/wallets/walletConnectors/chunk-JAMJLNYQ.js +54 -0
- package/dist/wallets/walletConnectors/chunk-JDJUIRGF.js +439 -0
- package/dist/wallets/walletConnectors/chunk-JEWCPQJZ.js +300 -0
- package/dist/wallets/walletConnectors/chunk-JGXJY3SB.js +1 -0
- package/dist/wallets/walletConnectors/chunk-JK7LJ4B6.js +1407 -0
- package/dist/wallets/walletConnectors/chunk-JPOSJU2D.js +594 -0
- package/dist/wallets/walletConnectors/chunk-JUFEPIO4.js +1479 -0
- package/dist/wallets/walletConnectors/chunk-JV4IC5Z7.js +54 -0
- package/dist/wallets/walletConnectors/chunk-K3VHBOXQ.js +32 -0
- package/dist/wallets/walletConnectors/chunk-KZS2C73S.js +814 -0
- package/dist/wallets/walletConnectors/chunk-LJNUFDGO.js +205 -0
- package/dist/wallets/walletConnectors/chunk-MO2AXXLI.js +30 -0
- package/dist/wallets/walletConnectors/chunk-MP3WVXPS.js +273 -0
- package/dist/wallets/walletConnectors/chunk-MTC2HJPF.js +96 -0
- package/dist/wallets/walletConnectors/chunk-MTJF3SVB.js +1487 -0
- package/dist/wallets/walletConnectors/chunk-NBVPVTJZ.js +192 -0
- package/dist/wallets/walletConnectors/chunk-NISMGNEE.js +223 -0
- package/dist/wallets/walletConnectors/chunk-NY5O2OBG.js +1477 -0
- package/dist/wallets/walletConnectors/chunk-NYDDRNUI.js +445 -0
- package/dist/wallets/walletConnectors/chunk-O4DNG6JJ.js +54 -0
- package/dist/wallets/walletConnectors/chunk-OTLZVWY7.js +39 -0
- package/dist/wallets/walletConnectors/chunk-OYF6AQOW.js +194 -0
- package/dist/wallets/walletConnectors/chunk-PBOCVGUC.js +782 -0
- package/dist/wallets/walletConnectors/chunk-PDXO6AOG.js +300 -0
- package/dist/wallets/walletConnectors/chunk-PJSN4YRI.js +1387 -0
- package/dist/wallets/walletConnectors/chunk-PVIO7FM7.js +314 -0
- package/dist/wallets/walletConnectors/chunk-PWJOXYDF.js +54 -0
- package/dist/wallets/walletConnectors/chunk-PYBSONED.js +771 -0
- package/dist/wallets/walletConnectors/chunk-PYKECUZ3.js +54 -0
- package/dist/wallets/walletConnectors/chunk-Q42NO7WB.js +46 -0
- package/dist/wallets/walletConnectors/chunk-Q7XBI5F6.js +300 -0
- package/dist/wallets/walletConnectors/chunk-QHUBLT7N.js +156 -0
- package/dist/wallets/walletConnectors/chunk-RMV23JXO.js +300 -0
- package/dist/wallets/walletConnectors/chunk-S3L2SA4J.js +300 -0
- package/dist/wallets/walletConnectors/chunk-S466OQOC.js +393 -0
- package/dist/wallets/walletConnectors/chunk-SA7IXAFG.js +54 -0
- package/dist/wallets/walletConnectors/chunk-SDB6BBHX.js +585 -0
- package/dist/wallets/walletConnectors/chunk-SFGVPX2G.js +351 -0
- package/dist/wallets/walletConnectors/chunk-SFQKJ6X6.js +314 -0
- package/dist/wallets/walletConnectors/chunk-SKLRJRER.js +1464 -0
- package/dist/wallets/walletConnectors/chunk-SQVWIBWR.js +351 -0
- package/dist/wallets/walletConnectors/chunk-SSLHXCOX.js +439 -0
- package/dist/wallets/walletConnectors/chunk-SU6LV3EO.js +314 -0
- package/dist/wallets/walletConnectors/chunk-SU7IEZE2.js +300 -0
- package/dist/wallets/walletConnectors/chunk-TMRB5SCL.js +167 -0
- package/dist/wallets/walletConnectors/chunk-TMUPUOQR.js +54 -0
- package/dist/wallets/walletConnectors/chunk-TNZ7QKXH.js +771 -0
- package/dist/wallets/walletConnectors/chunk-TT2NLKIU.js +1465 -0
- package/dist/wallets/walletConnectors/chunk-U3WGMWTH.js +585 -0
- package/dist/wallets/walletConnectors/chunk-UAV4SI4Y.js +408 -0
- package/dist/wallets/walletConnectors/chunk-UAWWPNS7.js +54 -0
- package/dist/wallets/walletConnectors/chunk-UXRJASPW.js +785 -0
- package/dist/wallets/walletConnectors/chunk-UY5TAYLM.js +54 -0
- package/dist/wallets/walletConnectors/chunk-VB5IZDY7.js +300 -0
- package/dist/wallets/walletConnectors/chunk-VDWJ3NQ5.js +52 -0
- package/dist/wallets/walletConnectors/chunk-VIKJNKJZ.js +219 -0
- package/dist/wallets/walletConnectors/chunk-VKOPUEQG.js +445 -0
- package/dist/wallets/walletConnectors/chunk-VTOD7PXP.js +817 -0
- package/dist/wallets/walletConnectors/chunk-VVEXF6KG.js +273 -0
- package/dist/wallets/walletConnectors/chunk-W2YIRNMB.js +300 -0
- package/dist/wallets/walletConnectors/chunk-W7L2SBIG.js +138 -0
- package/dist/wallets/walletConnectors/chunk-WC7BGU5Z.js +814 -0
- package/dist/wallets/walletConnectors/chunk-WS5FG53X.js +54 -0
- package/dist/wallets/walletConnectors/chunk-WVRGC2YL.js +300 -0
- package/dist/wallets/walletConnectors/chunk-X33WL7R7.js +300 -0
- package/dist/wallets/walletConnectors/chunk-XG2R64B7.js +785 -0
- package/dist/wallets/walletConnectors/chunk-Y2BWF42Z.js +54 -0
- package/dist/wallets/walletConnectors/chunk-Y446VZWI.js +585 -0
- package/dist/wallets/walletConnectors/chunk-YDSBY7NO.js +54 -0
- package/dist/wallets/walletConnectors/chunk-YROAFC7Z.js +54 -0
- package/dist/wallets/walletConnectors/chunk-YV6IZWGE.js +393 -0
- package/dist/wallets/walletConnectors/chunk-Z4WVT3G2.js +1416 -0
- package/dist/wallets/walletConnectors/chunk-Z5SBGIWT.js +300 -0
- package/dist/wallets/walletConnectors/chunk-ZK3PZIAH.js +300 -0
- package/dist/wallets/walletConnectors/chunk-ZKCUYHBK.js +300 -0
- package/dist/wallets/walletConnectors/chunk-ZPJLV3E7.js +151 -0
- package/dist/wallets/walletConnectors/chunk-ZQ3LCYGH.js +408 -0
- package/dist/wallets/walletConnectors/chunk-ZX6HMX7N.js +1468 -0
- package/dist/wallets/walletConnectors/chunk-ZXN465CA.js +209 -0
- package/dist/wallets/walletConnectors/index.js +73 -72
- package/package.json +12 -11
- package/LICENSE +0 -9
|
@@ -0,0 +1,814 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
TalkenApiError
|
|
4
|
+
} from "./chunk-4P3SPC44.js";
|
|
5
|
+
import {
|
|
6
|
+
getCredentialManager
|
|
7
|
+
} from "./chunk-6WF4SXLB.js";
|
|
8
|
+
import {
|
|
9
|
+
DEFAULT_TALKEN_API_CONFIG,
|
|
10
|
+
TALKEN_API_ENDPOINTS,
|
|
11
|
+
TOKEN_EXPIRY
|
|
12
|
+
} from "./chunk-DPTDOCWL.js";
|
|
13
|
+
|
|
14
|
+
// src/wallets/walletConnectors/abcWallet/api/TalkenApiClient.ts
|
|
15
|
+
var STORAGE_KEY_PREFIX = "talken_api_";
|
|
16
|
+
function loadToken(key) {
|
|
17
|
+
if (typeof window === "undefined")
|
|
18
|
+
return null;
|
|
19
|
+
try {
|
|
20
|
+
return localStorage.getItem(`${STORAGE_KEY_PREFIX}${key}`);
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function saveToken(key, value) {
|
|
26
|
+
if (typeof window === "undefined")
|
|
27
|
+
return;
|
|
28
|
+
try {
|
|
29
|
+
localStorage.setItem(`${STORAGE_KEY_PREFIX}${key}`, value);
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function removeToken(key) {
|
|
34
|
+
if (typeof window === "undefined")
|
|
35
|
+
return;
|
|
36
|
+
try {
|
|
37
|
+
localStorage.removeItem(`${STORAGE_KEY_PREFIX}${key}`);
|
|
38
|
+
} catch {
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function normalizeAuthResponse(raw) {
|
|
42
|
+
const d = raw.data || raw;
|
|
43
|
+
const loginData = d.login || d;
|
|
44
|
+
return {
|
|
45
|
+
accessToken: loginData.access_token || loginData.accessToken || "",
|
|
46
|
+
refreshToken: loginData.refresh_token || loginData.refreshToken || "",
|
|
47
|
+
expiresIn: loginData.expires_in || loginData.expire_in || loginData.expiresIn || 3600,
|
|
48
|
+
uid: d.uid || loginData.uid || "",
|
|
49
|
+
email: d.email || loginData.email || "",
|
|
50
|
+
isNewUser: d.isNewUser
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
var TalkenAuthModule = class {
|
|
54
|
+
constructor(client) {
|
|
55
|
+
this.client = client;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Login with email and password
|
|
59
|
+
* POST /wallet/auth { action: 'login', method: 'password', email, password }
|
|
60
|
+
*/
|
|
61
|
+
async loginWithPassword(email, password) {
|
|
62
|
+
const raw = await this.client.post(
|
|
63
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
64
|
+
{ action: "login", method: "password", email, password },
|
|
65
|
+
{ skipAuth: true }
|
|
66
|
+
);
|
|
67
|
+
const res = normalizeAuthResponse(raw);
|
|
68
|
+
this.client.handleAuthResponse(res);
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Send OTP code to email
|
|
73
|
+
* POST /wallet/auth { action: 'otp.send', email }
|
|
74
|
+
*/
|
|
75
|
+
async sendOtp(email) {
|
|
76
|
+
const raw = await this.client.post(
|
|
77
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
78
|
+
{ action: "otp.send", email },
|
|
79
|
+
{ skipAuth: true }
|
|
80
|
+
);
|
|
81
|
+
return raw.data || raw;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Verify OTP code
|
|
85
|
+
* POST /wallet/auth { action: 'otp.verify', email, otpCode }
|
|
86
|
+
*/
|
|
87
|
+
async verifyOtp(email, otpCode) {
|
|
88
|
+
const raw = await this.client.post(
|
|
89
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
90
|
+
{ action: "otp.verify", email, otpCode },
|
|
91
|
+
{ skipAuth: true }
|
|
92
|
+
);
|
|
93
|
+
return raw.data || raw;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if email is already registered
|
|
97
|
+
* POST /wallet/auth { action: 'email.check', email }
|
|
98
|
+
* Returns code 606 if email exists
|
|
99
|
+
*/
|
|
100
|
+
async checkEmail(email) {
|
|
101
|
+
const raw = await this.client.post(
|
|
102
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
103
|
+
{ action: "email.check", email },
|
|
104
|
+
{ skipAuth: true }
|
|
105
|
+
);
|
|
106
|
+
const d = raw.data || raw;
|
|
107
|
+
return {
|
|
108
|
+
code: d.code,
|
|
109
|
+
message: d.message,
|
|
110
|
+
exists: d.code === 606
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Register a new user (creates account + auto-login)
|
|
115
|
+
* POST /wallet/auth { action: 'register', email, otpCode, password, name? }
|
|
116
|
+
*/
|
|
117
|
+
async register(params) {
|
|
118
|
+
const raw = await this.client.post(
|
|
119
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
120
|
+
{ action: "register", ...params },
|
|
121
|
+
{ skipAuth: true }
|
|
122
|
+
);
|
|
123
|
+
const res = normalizeAuthResponse(raw);
|
|
124
|
+
this.client.handleAuthResponse(res);
|
|
125
|
+
return res;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Reset password for existing user
|
|
129
|
+
* POST /wallet/auth { action: 'password.reset', email, newPassword, emailCode }
|
|
130
|
+
*/
|
|
131
|
+
async resetPassword(email, newPassword, emailCode) {
|
|
132
|
+
const raw = await this.client.post(
|
|
133
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
134
|
+
{ action: "password.reset", email, newPassword, emailCode },
|
|
135
|
+
{ skipAuth: true }
|
|
136
|
+
);
|
|
137
|
+
return raw.data || raw;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Login with social provider (Google, Apple, Kakao, etc.)
|
|
141
|
+
* POST /wallet/auth { action: 'login', method: 'sns', token, service, audience? }
|
|
142
|
+
*/
|
|
143
|
+
async loginWithSns(params) {
|
|
144
|
+
const raw = await this.client.post(
|
|
145
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
146
|
+
{
|
|
147
|
+
action: "login",
|
|
148
|
+
method: "sns",
|
|
149
|
+
token: params.token,
|
|
150
|
+
service: params.service,
|
|
151
|
+
...params.audience && { audience: params.audience }
|
|
152
|
+
},
|
|
153
|
+
{ skipAuth: true }
|
|
154
|
+
);
|
|
155
|
+
const res = normalizeAuthResponse(raw);
|
|
156
|
+
this.client.handleAuthResponse(res);
|
|
157
|
+
return res;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Refresh access token
|
|
161
|
+
* POST /wallet/auth { action: 'token.refresh', refreshToken }
|
|
162
|
+
*/
|
|
163
|
+
async refresh() {
|
|
164
|
+
const refreshToken = this.client.getRefreshToken();
|
|
165
|
+
if (!refreshToken) {
|
|
166
|
+
throw new TalkenApiError(
|
|
167
|
+
"TOKEN_EXPIRED",
|
|
168
|
+
"No refresh token available",
|
|
169
|
+
401
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
const raw = await this.client.post(
|
|
173
|
+
TALKEN_API_ENDPOINTS.AUTH,
|
|
174
|
+
{ action: "token.refresh", refreshToken },
|
|
175
|
+
{ skipAuth: true }
|
|
176
|
+
);
|
|
177
|
+
const res = normalizeAuthResponse(raw);
|
|
178
|
+
this.client.handleAuthResponse(res);
|
|
179
|
+
return res;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Logout (clear local session only — no server endpoint)
|
|
183
|
+
*/
|
|
184
|
+
logout() {
|
|
185
|
+
this.client.clearSession();
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
var TalkenWalletModule = class {
|
|
189
|
+
constructor(client) {
|
|
190
|
+
this.client = client;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Generate/recover MPC wallets (create = idempotent generate/recover)
|
|
194
|
+
* POST /wallet/mpc { action: 'create', email?, pin }
|
|
195
|
+
*
|
|
196
|
+
* @param pin - SHA-256 hashed PIN
|
|
197
|
+
* @param email - User email (optional; server resolves from bearer token if omitted)
|
|
198
|
+
*/
|
|
199
|
+
async generate(pin, email) {
|
|
200
|
+
return this.client.post(TALKEN_API_ENDPOINTS.WALLET_MPC, {
|
|
201
|
+
action: "create",
|
|
202
|
+
...email && { email },
|
|
203
|
+
pin
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Recover is the same as generate (create is idempotent)
|
|
208
|
+
*/
|
|
209
|
+
async recover(pin, email) {
|
|
210
|
+
return this.generate(pin, email);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get wallet info
|
|
214
|
+
* POST /wallet/mpc { action: 'info' }
|
|
215
|
+
*/
|
|
216
|
+
async getInfo() {
|
|
217
|
+
return this.client.post(TALKEN_API_ENDPOINTS.WALLET_MPC, {
|
|
218
|
+
action: "info"
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get addresses for all chains
|
|
223
|
+
* POST /wallet/address { chain: 'all' }
|
|
224
|
+
*/
|
|
225
|
+
async getAddresses() {
|
|
226
|
+
return this.client.post(TALKEN_API_ENDPOINTS.WALLET_ADDRESS, {
|
|
227
|
+
chain: "all"
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get addresses for a specific chain
|
|
232
|
+
* POST /wallet/address { chain, publicKey?, pin? }
|
|
233
|
+
*/
|
|
234
|
+
async getAddressForChain(chain, publicKey, pin) {
|
|
235
|
+
return this.client.post(TALKEN_API_ENDPOINTS.WALLET_ADDRESS, {
|
|
236
|
+
chain,
|
|
237
|
+
...publicKey && { publicKey },
|
|
238
|
+
...pin && { pin }
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
function withCachedEvmCreds(params) {
|
|
243
|
+
if (typeof window === "undefined")
|
|
244
|
+
return params;
|
|
245
|
+
try {
|
|
246
|
+
const creds = getCredentialManager().getEvmSigningCredentials();
|
|
247
|
+
if (creds)
|
|
248
|
+
return { ...params, evmCreds: creds };
|
|
249
|
+
} catch {
|
|
250
|
+
}
|
|
251
|
+
return params;
|
|
252
|
+
}
|
|
253
|
+
var TalkenEvmModule = class {
|
|
254
|
+
constructor(client) {
|
|
255
|
+
this.client = client;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Sign EVM transaction (sign only, no broadcast)
|
|
259
|
+
* POST /wallet/sign/evm { network, to, from?, value?, data?, ... }
|
|
260
|
+
* Server handles SecureChannel internally
|
|
261
|
+
*/
|
|
262
|
+
async signTransaction(params) {
|
|
263
|
+
return this.client.post(
|
|
264
|
+
TALKEN_API_ENDPOINTS.SIGN_EVM,
|
|
265
|
+
withCachedEvmCreds(params)
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Sign EIP-712 typed data
|
|
270
|
+
* POST /wallet/sign/evm/typed { network, typedData }
|
|
271
|
+
*/
|
|
272
|
+
async signTypedData(params) {
|
|
273
|
+
return this.client.post(
|
|
274
|
+
TALKEN_API_ENDPOINTS.SIGN_TYPED,
|
|
275
|
+
withCachedEvmCreds(params)
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Sign personal message (EIP-191)
|
|
280
|
+
* POST /wallet/sign/evm/personal { network, message, address? }
|
|
281
|
+
*/
|
|
282
|
+
async signPersonal(params) {
|
|
283
|
+
const res = await this.client.post(
|
|
284
|
+
TALKEN_API_ENDPOINTS.SIGN_PERSONAL,
|
|
285
|
+
withCachedEvmCreds(params)
|
|
286
|
+
);
|
|
287
|
+
return {
|
|
288
|
+
signature: res?.signature ?? res?.serializedTx ?? "",
|
|
289
|
+
txHash: res?.txHash ?? res?.rawTx
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Sign EIP-7702 authorization payload
|
|
294
|
+
* POST /wallet/sign/authorization { network, authorization, pin? }
|
|
295
|
+
*/
|
|
296
|
+
async signAuthorization(params) {
|
|
297
|
+
return this.client.post(
|
|
298
|
+
TALKEN_API_ENDPOINTS.SIGN_AUTHORIZATION,
|
|
299
|
+
withCachedEvmCreds(params)
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Broadcast signed transaction
|
|
304
|
+
* POST /wallet/tx/raw { network, signedSerializeTx }
|
|
305
|
+
*/
|
|
306
|
+
async sendRawTransaction(params) {
|
|
307
|
+
return this.client.post(
|
|
308
|
+
TALKEN_API_ENDPOINTS.TX_RAW,
|
|
309
|
+
params
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Integrated EVM transfer (sign + broadcast)
|
|
314
|
+
* POST /wallet/tx/evm { chainKey, to, amountWei, pin, ... }
|
|
315
|
+
*/
|
|
316
|
+
async sendTransaction(params) {
|
|
317
|
+
return this.client.post(
|
|
318
|
+
TALKEN_API_ENDPOINTS.TX_EVM,
|
|
319
|
+
withCachedEvmCreds(params)
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Get gas price
|
|
324
|
+
* GET /wallet/gas/price?network=
|
|
325
|
+
*/
|
|
326
|
+
async getGasPrice(network) {
|
|
327
|
+
return this.client.get(
|
|
328
|
+
`${TALKEN_API_ENDPOINTS.GAS_PRICE}?network=${encodeURIComponent(network)}`
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Get suggested gas fees (EIP-1559)
|
|
333
|
+
* GET /wallet/gas/suggested?network=
|
|
334
|
+
*/
|
|
335
|
+
async getGasSuggested(network) {
|
|
336
|
+
return this.client.get(
|
|
337
|
+
`${TALKEN_API_ENDPOINTS.GAS_SUGGESTED}?network=${encodeURIComponent(network)}`
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Estimate gas
|
|
342
|
+
* POST /wallet/gas/estimate { network, from, to, value?, data? }
|
|
343
|
+
*/
|
|
344
|
+
async estimateGas(params) {
|
|
345
|
+
return this.client.post(
|
|
346
|
+
TALKEN_API_ENDPOINTS.GAS_ESTIMATE,
|
|
347
|
+
params
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Get nonce for address
|
|
352
|
+
* GET /wallet/nonce?network=&address=
|
|
353
|
+
*/
|
|
354
|
+
async getNonce(network, address) {
|
|
355
|
+
const qs = new URLSearchParams({ network, address }).toString();
|
|
356
|
+
return this.client.get(`${TALKEN_API_ENDPOINTS.NONCE}?${qs}`);
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
var TalkenSolanaModule = class {
|
|
360
|
+
constructor(client) {
|
|
361
|
+
this.client = client;
|
|
362
|
+
}
|
|
363
|
+
async getLatestBlockhash(network) {
|
|
364
|
+
const qs = new URLSearchParams({ network }).toString();
|
|
365
|
+
return this.client.get(`${TALKEN_API_ENDPOINTS.SOLANA_LATEST_BLOCKHASH}?${qs}`, {
|
|
366
|
+
skipAuth: true
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
async getTransactionStatus(params) {
|
|
370
|
+
const qs = new URLSearchParams({
|
|
371
|
+
network: params.network,
|
|
372
|
+
signature: params.signature
|
|
373
|
+
}).toString();
|
|
374
|
+
return this.client.get(`${TALKEN_API_ENDPOINTS.SOLANA_TX_STATUS}?${qs}`, {
|
|
375
|
+
skipAuth: true
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Transfer SOL or SPL token (integrated sign + broadcast)
|
|
380
|
+
* POST /wallet/tx/sol
|
|
381
|
+
* - kind='native': { toAddress, amountLamports, pin }
|
|
382
|
+
* - kind='spl': { toAddress, mintAddress, amount, decimals, network, pin }
|
|
383
|
+
*/
|
|
384
|
+
async transfer(params) {
|
|
385
|
+
return this.client.post(
|
|
386
|
+
TALKEN_API_ENDPOINTS.TX_SOL,
|
|
387
|
+
params
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Sign Solana transaction or message (sign-only, no broadcast)
|
|
392
|
+
* POST /wallet/sign/sol
|
|
393
|
+
*
|
|
394
|
+
* Two modes:
|
|
395
|
+
* - PIN mode: { message, pin } — server resolves signing material
|
|
396
|
+
* - Share mode: { message, keyId, encryptedShare } — no PIN required (for signMessage)
|
|
397
|
+
*
|
|
398
|
+
* @returns Ed25519 signature (hex) and optionally public key
|
|
399
|
+
*/
|
|
400
|
+
async sign(params) {
|
|
401
|
+
return this.client.post(
|
|
402
|
+
TALKEN_API_ENDPOINTS.SIGN_SVM,
|
|
403
|
+
params
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var TalkenBitcoinModule = class {
|
|
408
|
+
constructor(client) {
|
|
409
|
+
this.client = client;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* BTC fee rate lookup
|
|
413
|
+
* GET /wallet/btc?mode=fee&network=&blocks=
|
|
414
|
+
*/
|
|
415
|
+
async getFeeRate(network, blocks) {
|
|
416
|
+
const qs = new URLSearchParams({
|
|
417
|
+
mode: "fee",
|
|
418
|
+
network,
|
|
419
|
+
...typeof blocks === "number" ? { blocks: String(blocks) } : {}
|
|
420
|
+
}).toString();
|
|
421
|
+
return this.client.get(
|
|
422
|
+
`${TALKEN_API_ENDPOINTS.WALLET_BTC}?${qs}`
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* BTC tx status by hash
|
|
427
|
+
* GET /wallet/btc?mode=txHash&network=&txHash=
|
|
428
|
+
*/
|
|
429
|
+
async getTxByHash(txHash, network) {
|
|
430
|
+
const qs = new URLSearchParams({
|
|
431
|
+
mode: "txHash",
|
|
432
|
+
network,
|
|
433
|
+
txHash
|
|
434
|
+
}).toString();
|
|
435
|
+
return this.client.get(
|
|
436
|
+
`${TALKEN_API_ENDPOINTS.WALLET_BTC}?${qs}`
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* BTC UTXO list
|
|
441
|
+
* GET /wallet/btc?mode=utxos&network=&address=
|
|
442
|
+
*/
|
|
443
|
+
async getUtxos(network, address) {
|
|
444
|
+
const qs = new URLSearchParams({
|
|
445
|
+
mode: "utxos",
|
|
446
|
+
network,
|
|
447
|
+
...address ? { address } : {}
|
|
448
|
+
}).toString();
|
|
449
|
+
return this.client.get(
|
|
450
|
+
`${TALKEN_API_ENDPOINTS.WALLET_BTC}?${qs}`
|
|
451
|
+
);
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* BTC address validation
|
|
455
|
+
* GET /wallet/btc?mode=validateAddress&network=&address=
|
|
456
|
+
*/
|
|
457
|
+
async validateAddress(address, network) {
|
|
458
|
+
const qs = new URLSearchParams({
|
|
459
|
+
mode: "validateAddress",
|
|
460
|
+
network,
|
|
461
|
+
address
|
|
462
|
+
}).toString();
|
|
463
|
+
return this.client.get(
|
|
464
|
+
`${TALKEN_API_ENDPOINTS.WALLET_BTC}?${qs}`
|
|
465
|
+
);
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Send BTC (integrated sign + broadcast, action=transfer)
|
|
469
|
+
* POST /wallet/tx/btc
|
|
470
|
+
*/
|
|
471
|
+
async sendTransaction(params) {
|
|
472
|
+
const payload = { action: "transfer", ...params };
|
|
473
|
+
return this.client.post(
|
|
474
|
+
TALKEN_API_ENDPOINTS.TX_BTC,
|
|
475
|
+
withCachedEvmCreds(payload)
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Execute BTC action endpoint (transfer|generate|signHash|finalize)
|
|
480
|
+
* POST /wallet/tx/btc
|
|
481
|
+
*/
|
|
482
|
+
async execute(params) {
|
|
483
|
+
return this.client.post(
|
|
484
|
+
TALKEN_API_ENDPOINTS.TX_BTC,
|
|
485
|
+
withCachedEvmCreds(params)
|
|
486
|
+
);
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Sign raw hash via secp256k1 MPC (universal: EVM/BTC/TVM)
|
|
490
|
+
* POST /wallet/sign/hash { hash, pin, network? }
|
|
491
|
+
*/
|
|
492
|
+
async signHash(params) {
|
|
493
|
+
return this.client.post(
|
|
494
|
+
TALKEN_API_ENDPOINTS.SIGN_HASH,
|
|
495
|
+
withCachedEvmCreds(params)
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Broadcast raw BTC transaction
|
|
500
|
+
* POST /wallet/tx/raw { network, signedSerializeTx }
|
|
501
|
+
*/
|
|
502
|
+
async broadcastRawTransaction(params) {
|
|
503
|
+
return this.client.post(TALKEN_API_ENDPOINTS.TX_RAW, {
|
|
504
|
+
network: params.network,
|
|
505
|
+
signedSerializeTx: params.rawTransaction
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
var TalkenTronModule = class {
|
|
510
|
+
constructor(client) {
|
|
511
|
+
this.client = client;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Execute TVM(TRON) transfer/call (integrated sign + broadcast)
|
|
515
|
+
* POST /wallet/tx/tvm
|
|
516
|
+
* - kind=native: TRX transfer (amountSun)
|
|
517
|
+
* - kind=trc20: TRC-20 transfer (contractAddress + amount)
|
|
518
|
+
* - kind=contract: arbitrary contract call (contractAddress + data)
|
|
519
|
+
*/
|
|
520
|
+
async transferTrx(params) {
|
|
521
|
+
return this.client.post(
|
|
522
|
+
TALKEN_API_ENDPOINTS.TX_TVM,
|
|
523
|
+
params
|
|
524
|
+
);
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
var TalkenWalletscanModule = class {
|
|
528
|
+
constructor(client) {
|
|
529
|
+
this.client = client;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Get all wallet tokens with balances
|
|
533
|
+
* GET /wallet/scan?type=tokens&chainKeys=...&walletAddress=...
|
|
534
|
+
*/
|
|
535
|
+
async getTokens(params) {
|
|
536
|
+
const qs = new URLSearchParams({
|
|
537
|
+
type: "tokens",
|
|
538
|
+
chainKeys: params.chainKeys,
|
|
539
|
+
walletAddress: params.walletAddress
|
|
540
|
+
}).toString();
|
|
541
|
+
return this.client.get(
|
|
542
|
+
`${TALKEN_API_ENDPOINTS.WALLET_SCAN}?${qs}`
|
|
543
|
+
);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Get token metadata by contract address
|
|
547
|
+
* GET /wallet/scan?type=tokens&chainKeys=...&contractAddress=...
|
|
548
|
+
*/
|
|
549
|
+
async getToken(params) {
|
|
550
|
+
const qs = new URLSearchParams({
|
|
551
|
+
type: "tokens",
|
|
552
|
+
chainKeys: params.chainKeys,
|
|
553
|
+
contractAddress: params.contractAddress
|
|
554
|
+
}).toString();
|
|
555
|
+
return this.client.get(
|
|
556
|
+
`${TALKEN_API_ENDPOINTS.WALLET_SCAN}?${qs}`
|
|
557
|
+
);
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Get native coin balances
|
|
561
|
+
* GET /wallet/scan?type=natives&chainKeys=...&walletAddress=...
|
|
562
|
+
*/
|
|
563
|
+
async getNativeTokens(params) {
|
|
564
|
+
const qs = new URLSearchParams({
|
|
565
|
+
type: "natives",
|
|
566
|
+
chainKeys: params.chainKeys,
|
|
567
|
+
walletAddress: params.walletAddress
|
|
568
|
+
}).toString();
|
|
569
|
+
return this.client.get(
|
|
570
|
+
`${TALKEN_API_ENDPOINTS.WALLET_SCAN}?${qs}`
|
|
571
|
+
);
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Get NFT metadata
|
|
575
|
+
* GET /wallet/scan?type=nfts&chainKeys=...&walletAddress=...
|
|
576
|
+
*/
|
|
577
|
+
async getNfts(params) {
|
|
578
|
+
const qs = new URLSearchParams({
|
|
579
|
+
type: "nfts",
|
|
580
|
+
chainKeys: params.chainKeys,
|
|
581
|
+
walletAddress: params.walletAddress
|
|
582
|
+
}).toString();
|
|
583
|
+
return this.client.get(
|
|
584
|
+
`${TALKEN_API_ENDPOINTS.WALLET_SCAN}?${qs}`
|
|
585
|
+
);
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
var TalkenApiClient = class {
|
|
589
|
+
constructor(config) {
|
|
590
|
+
this.accessToken = null;
|
|
591
|
+
this.refreshToken_ = null;
|
|
592
|
+
this.expiresAt = null;
|
|
593
|
+
this.isRefreshing = false;
|
|
594
|
+
this.refreshPromise = null;
|
|
595
|
+
this.config = {
|
|
596
|
+
baseUrl: config?.baseUrl || DEFAULT_TALKEN_API_CONFIG.baseUrl || "",
|
|
597
|
+
timeout: config?.timeout || DEFAULT_TALKEN_API_CONFIG.timeout,
|
|
598
|
+
environment: config?.environment || "development",
|
|
599
|
+
defaultChainId: config?.defaultChainId,
|
|
600
|
+
debug: config?.debug || false
|
|
601
|
+
};
|
|
602
|
+
this.auth = new TalkenAuthModule(this);
|
|
603
|
+
this.wallet = new TalkenWalletModule(this);
|
|
604
|
+
this.evm = new TalkenEvmModule(this);
|
|
605
|
+
this.solana = new TalkenSolanaModule(this);
|
|
606
|
+
this.bitcoin = new TalkenBitcoinModule(this);
|
|
607
|
+
this.tron = new TalkenTronModule(this);
|
|
608
|
+
this.walletscan = new TalkenWalletscanModule(this);
|
|
609
|
+
this.restoreSession();
|
|
610
|
+
}
|
|
611
|
+
// ── Session Management ──────────────────────────────────────────────
|
|
612
|
+
restoreSession() {
|
|
613
|
+
this.accessToken = loadToken("access_token");
|
|
614
|
+
this.refreshToken_ = loadToken("refresh_token");
|
|
615
|
+
const expiresAtStr = loadToken("expires_at");
|
|
616
|
+
this.expiresAt = expiresAtStr ? Number(expiresAtStr) : null;
|
|
617
|
+
}
|
|
618
|
+
/** @internal Called by auth module after successful login/register */
|
|
619
|
+
handleAuthResponse(response) {
|
|
620
|
+
this.accessToken = response.accessToken;
|
|
621
|
+
this.refreshToken_ = response.refreshToken;
|
|
622
|
+
this.expiresAt = Date.now() + response.expiresIn * 1e3;
|
|
623
|
+
saveToken("access_token", response.accessToken);
|
|
624
|
+
saveToken("refresh_token", response.refreshToken);
|
|
625
|
+
saveToken("expires_at", String(this.expiresAt));
|
|
626
|
+
}
|
|
627
|
+
/** @internal Clear all session data */
|
|
628
|
+
clearSession() {
|
|
629
|
+
this.accessToken = null;
|
|
630
|
+
this.refreshToken_ = null;
|
|
631
|
+
this.expiresAt = null;
|
|
632
|
+
removeToken("access_token");
|
|
633
|
+
removeToken("refresh_token");
|
|
634
|
+
removeToken("expires_at");
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Check if user is authenticated (has valid access token)
|
|
638
|
+
*/
|
|
639
|
+
isAuthenticated() {
|
|
640
|
+
return !!this.accessToken && !this.isTokenExpired();
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Check if current access token is expired
|
|
644
|
+
*/
|
|
645
|
+
isTokenExpired() {
|
|
646
|
+
if (!this.expiresAt)
|
|
647
|
+
return true;
|
|
648
|
+
return Date.now() >= this.expiresAt - TOKEN_EXPIRY.REFRESH_BUFFER;
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Get current access token
|
|
652
|
+
*/
|
|
653
|
+
getAccessToken() {
|
|
654
|
+
return this.accessToken;
|
|
655
|
+
}
|
|
656
|
+
/**
|
|
657
|
+
* Get current refresh token
|
|
658
|
+
* @internal Used by auth module for token refresh
|
|
659
|
+
*/
|
|
660
|
+
getRefreshToken() {
|
|
661
|
+
return this.refreshToken_;
|
|
662
|
+
}
|
|
663
|
+
/**
|
|
664
|
+
* Get client configuration
|
|
665
|
+
*/
|
|
666
|
+
getConfig() {
|
|
667
|
+
return { ...this.config };
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Set tokens externally (useful for SSR or state management integration)
|
|
671
|
+
*/
|
|
672
|
+
setTokens(accessToken, refreshToken, expiresAt) {
|
|
673
|
+
this.accessToken = accessToken;
|
|
674
|
+
this.refreshToken_ = refreshToken;
|
|
675
|
+
this.expiresAt = expiresAt;
|
|
676
|
+
saveToken("access_token", accessToken);
|
|
677
|
+
saveToken("refresh_token", refreshToken);
|
|
678
|
+
saveToken("expires_at", String(expiresAt));
|
|
679
|
+
}
|
|
680
|
+
// ── HTTP Methods (Internal) ─────────────────────────────────────────
|
|
681
|
+
/** @internal Make a GET request */
|
|
682
|
+
async get(endpoint, options) {
|
|
683
|
+
return this.request(endpoint, { method: "GET", ...options });
|
|
684
|
+
}
|
|
685
|
+
/** @internal Make a POST request */
|
|
686
|
+
async post(endpoint, body, options) {
|
|
687
|
+
return this.request(endpoint, { method: "POST", body, ...options });
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Core HTTP request handler with automatic token refresh
|
|
691
|
+
* @internal
|
|
692
|
+
*/
|
|
693
|
+
async request(endpoint, options) {
|
|
694
|
+
const { method, body, skipAuth = false } = options;
|
|
695
|
+
if (!skipAuth && this.isTokenExpired() && this.refreshToken_) {
|
|
696
|
+
await this.ensureTokenRefreshed();
|
|
697
|
+
}
|
|
698
|
+
const url = `${this.config.baseUrl}${endpoint}`;
|
|
699
|
+
const headers = {
|
|
700
|
+
"Content-Type": "application/json",
|
|
701
|
+
Accept: "application/json"
|
|
702
|
+
};
|
|
703
|
+
if (!skipAuth && this.accessToken) {
|
|
704
|
+
headers.Authorization = `Bearer ${this.accessToken}`;
|
|
705
|
+
}
|
|
706
|
+
if (this.config.debug) {
|
|
707
|
+
console.log(`[TalkenApiClient] ${method} ${url}`);
|
|
708
|
+
}
|
|
709
|
+
try {
|
|
710
|
+
const controller = new AbortController();
|
|
711
|
+
const timeoutId = setTimeout(
|
|
712
|
+
() => controller.abort(),
|
|
713
|
+
this.config.timeout || 3e4
|
|
714
|
+
);
|
|
715
|
+
const response = await fetch(url, {
|
|
716
|
+
method,
|
|
717
|
+
headers,
|
|
718
|
+
body: body ? JSON.stringify(body) : void 0,
|
|
719
|
+
signal: controller.signal,
|
|
720
|
+
credentials: "include"
|
|
721
|
+
});
|
|
722
|
+
clearTimeout(timeoutId);
|
|
723
|
+
const text = await response.text();
|
|
724
|
+
let data;
|
|
725
|
+
if (text) {
|
|
726
|
+
try {
|
|
727
|
+
data = JSON.parse(text);
|
|
728
|
+
} catch {
|
|
729
|
+
throw new TalkenApiError(
|
|
730
|
+
"PARSE_ERROR",
|
|
731
|
+
"Invalid JSON response from server",
|
|
732
|
+
response.status,
|
|
733
|
+
{ text: text.substring(0, 200) }
|
|
734
|
+
);
|
|
735
|
+
}
|
|
736
|
+
} else {
|
|
737
|
+
data = { success: true };
|
|
738
|
+
}
|
|
739
|
+
if (response.status === 401 && !skipAuth && this.refreshToken_) {
|
|
740
|
+
try {
|
|
741
|
+
await this.forceTokenRefresh();
|
|
742
|
+
return this.request(endpoint, { ...options, skipAuth: true });
|
|
743
|
+
} catch {
|
|
744
|
+
this.clearSession();
|
|
745
|
+
throw new TalkenApiError(
|
|
746
|
+
"TOKEN_EXPIRED",
|
|
747
|
+
"Session expired. Please login again.",
|
|
748
|
+
401
|
|
749
|
+
);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
if (!response.ok) {
|
|
753
|
+
const errCode = data.error?.code || "UNKNOWN_ERROR";
|
|
754
|
+
const errMsg = data.error?.message || `Request failed with status ${response.status}`;
|
|
755
|
+
if (this.config.debug) {
|
|
756
|
+
console.error(`[TalkenApiClient] Error: ${errCode} - ${errMsg}`);
|
|
757
|
+
}
|
|
758
|
+
throw new TalkenApiError(
|
|
759
|
+
errCode,
|
|
760
|
+
errMsg,
|
|
761
|
+
response.status,
|
|
762
|
+
data.error?.details || data.details
|
|
763
|
+
);
|
|
764
|
+
}
|
|
765
|
+
return data.data ?? data;
|
|
766
|
+
} catch (error) {
|
|
767
|
+
if (error instanceof TalkenApiError) {
|
|
768
|
+
throw error;
|
|
769
|
+
}
|
|
770
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
771
|
+
throw new TalkenApiError("TIMEOUT", "Request timed out", 408);
|
|
772
|
+
}
|
|
773
|
+
const errorMessage = error instanceof Error ? error.message : "Network request failed";
|
|
774
|
+
throw new TalkenApiError("NETWORK_ERROR", errorMessage, 0);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
/**
|
|
778
|
+
* Ensure token is refreshed (handles concurrent requests)
|
|
779
|
+
*/
|
|
780
|
+
async ensureTokenRefreshed() {
|
|
781
|
+
if (this.isRefreshing && this.refreshPromise) {
|
|
782
|
+
await this.refreshPromise;
|
|
783
|
+
return;
|
|
784
|
+
}
|
|
785
|
+
await this.forceTokenRefresh();
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Force a token refresh
|
|
789
|
+
*/
|
|
790
|
+
async forceTokenRefresh() {
|
|
791
|
+
if (this.isRefreshing && this.refreshPromise) {
|
|
792
|
+
await this.refreshPromise;
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
this.isRefreshing = true;
|
|
796
|
+
this.refreshPromise = (async () => {
|
|
797
|
+
try {
|
|
798
|
+
await this.auth.refresh();
|
|
799
|
+
} finally {
|
|
800
|
+
this.isRefreshing = false;
|
|
801
|
+
this.refreshPromise = null;
|
|
802
|
+
}
|
|
803
|
+
})();
|
|
804
|
+
await this.refreshPromise;
|
|
805
|
+
}
|
|
806
|
+
};
|
|
807
|
+
function createTalkenApiClient(config) {
|
|
808
|
+
return new TalkenApiClient(config);
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
export {
|
|
812
|
+
TalkenApiClient,
|
|
813
|
+
createTalkenApiClient
|
|
814
|
+
};
|