@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,205 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/wallets/walletConnectors/abcWallet/api/WalletscanApi.ts
|
|
4
|
+
import { getTalkenApiClient, networkNameToChainKey } from "@talken/talkenkit";
|
|
5
|
+
var WalletscanApi = class {
|
|
6
|
+
/**
|
|
7
|
+
* Get all wallet tokens with balances via TalkenApiClient walletscan endpoint
|
|
8
|
+
*/
|
|
9
|
+
async getWalletTokens(params) {
|
|
10
|
+
const api = getTalkenApiClient();
|
|
11
|
+
if (!api)
|
|
12
|
+
throw new Error("TalkenApiClient not initialized");
|
|
13
|
+
try {
|
|
14
|
+
return await api.walletscan.getTokens({
|
|
15
|
+
walletAddress: params.walletAddress,
|
|
16
|
+
chainKeys: networkNameToChainKey(params.networks)
|
|
17
|
+
});
|
|
18
|
+
} catch (error) {
|
|
19
|
+
console.warn("[WalletscanApi] TalkenApi getTokens failed:", error);
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get all wallet tokens with balances with timeout
|
|
25
|
+
*/
|
|
26
|
+
async getWalletTokensWithTimeout(params, timeoutMs = 3e3) {
|
|
27
|
+
try {
|
|
28
|
+
return await Promise.race([
|
|
29
|
+
this.getWalletTokens(params),
|
|
30
|
+
new Promise(
|
|
31
|
+
(resolve) => setTimeout(() => resolve([]), timeoutMs)
|
|
32
|
+
)
|
|
33
|
+
]);
|
|
34
|
+
} catch (_error) {
|
|
35
|
+
console.warn("[WalletscanApi] Wallet token request timed out");
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get a specific wallet token balance by contract/mint address.
|
|
41
|
+
*/
|
|
42
|
+
async getWalletTokenBalance(params) {
|
|
43
|
+
const tokens = await this.getWalletTokens(params);
|
|
44
|
+
const target = params.contractAddress.toLowerCase();
|
|
45
|
+
return tokens.find(
|
|
46
|
+
(token) => token.contractAddress?.toLowerCase() === target
|
|
47
|
+
) ?? null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get a specific wallet token balance by contract/mint address with timeout.
|
|
51
|
+
*/
|
|
52
|
+
async getWalletTokenBalanceWithTimeout(params, timeoutMs = 3e3) {
|
|
53
|
+
try {
|
|
54
|
+
return await Promise.race([
|
|
55
|
+
this.getWalletTokenBalance(params),
|
|
56
|
+
new Promise((resolve) => setTimeout(() => resolve(null), timeoutMs))
|
|
57
|
+
]);
|
|
58
|
+
} catch (_error) {
|
|
59
|
+
console.warn("[WalletscanApi] Wallet token balance request timed out");
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get token metadata via TalkenApiClient walletscan endpoint
|
|
65
|
+
*
|
|
66
|
+
* @param params - Contract address and networks
|
|
67
|
+
* @returns Token metadata or null if not found/failed
|
|
68
|
+
*/
|
|
69
|
+
async getContractToken(params) {
|
|
70
|
+
const api = getTalkenApiClient();
|
|
71
|
+
if (!api)
|
|
72
|
+
throw new Error("TalkenApiClient not initialized");
|
|
73
|
+
try {
|
|
74
|
+
const tokens = await api.walletscan.getToken({
|
|
75
|
+
contractAddress: params.contractAddress,
|
|
76
|
+
chainKeys: networkNameToChainKey(params.networks)
|
|
77
|
+
});
|
|
78
|
+
return tokens.length > 0 ? tokens[0] : null;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.warn(
|
|
81
|
+
"[WalletscanApi] TalkenApi getToken failed:",
|
|
82
|
+
params.contractAddress,
|
|
83
|
+
error
|
|
84
|
+
);
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get token metadata with timeout
|
|
90
|
+
*
|
|
91
|
+
* @param params - Contract address and networks
|
|
92
|
+
* @param timeoutMs - Timeout in milliseconds (default: 3000)
|
|
93
|
+
* @returns Token metadata or null if timeout/failed
|
|
94
|
+
*/
|
|
95
|
+
async getContractTokenWithTimeout(params, timeoutMs = 3e3) {
|
|
96
|
+
try {
|
|
97
|
+
const result = await Promise.race([
|
|
98
|
+
this.getContractToken(params),
|
|
99
|
+
new Promise(
|
|
100
|
+
(resolve) => setTimeout(() => resolve(null), timeoutMs)
|
|
101
|
+
)
|
|
102
|
+
]);
|
|
103
|
+
return result;
|
|
104
|
+
} catch (_error) {
|
|
105
|
+
console.warn(
|
|
106
|
+
"[WalletscanApi] Token metadata request timed out:",
|
|
107
|
+
params.contractAddress
|
|
108
|
+
);
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get native coin info via TalkenApiClient walletscan endpoint
|
|
114
|
+
*
|
|
115
|
+
* @param params - Wallet address and networks
|
|
116
|
+
* @returns Array of native coins or empty array if failed
|
|
117
|
+
*/
|
|
118
|
+
async getNativeToken(params) {
|
|
119
|
+
const api = getTalkenApiClient();
|
|
120
|
+
if (!api)
|
|
121
|
+
throw new Error("TalkenApiClient not initialized");
|
|
122
|
+
try {
|
|
123
|
+
return await api.walletscan.getNativeTokens({
|
|
124
|
+
walletAddress: params.walletAddress,
|
|
125
|
+
chainKeys: networkNameToChainKey(params.networks)
|
|
126
|
+
});
|
|
127
|
+
} catch (error) {
|
|
128
|
+
console.warn("[WalletscanApi] TalkenApi getNativeTokens failed:", error);
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get native coin info with timeout
|
|
134
|
+
*
|
|
135
|
+
* @param params - Wallet address and networks
|
|
136
|
+
* @param timeoutMs - Timeout in milliseconds (default: 3000)
|
|
137
|
+
* @returns First native coin or null if timeout/failed
|
|
138
|
+
*/
|
|
139
|
+
async getNativeTokenWithTimeout(params, timeoutMs = 3e3) {
|
|
140
|
+
try {
|
|
141
|
+
const natives = await Promise.race([
|
|
142
|
+
this.getNativeToken(params),
|
|
143
|
+
new Promise(
|
|
144
|
+
(resolve) => setTimeout(() => resolve([]), timeoutMs)
|
|
145
|
+
)
|
|
146
|
+
]);
|
|
147
|
+
return natives.length > 0 ? natives[0] : null;
|
|
148
|
+
} catch (_error) {
|
|
149
|
+
console.warn("[WalletscanApi] Native coin request timed out");
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get NFT metadata via TalkenApiClient walletscan endpoint
|
|
155
|
+
*
|
|
156
|
+
* @param params - Contract address, wallet address, and networks
|
|
157
|
+
* @returns Array of NFT metadata or empty array if failed
|
|
158
|
+
*/
|
|
159
|
+
async getNFT(params) {
|
|
160
|
+
const api = getTalkenApiClient();
|
|
161
|
+
if (!api)
|
|
162
|
+
throw new Error("TalkenApiClient not initialized");
|
|
163
|
+
try {
|
|
164
|
+
return await api.walletscan.getNfts({
|
|
165
|
+
chainKeys: networkNameToChainKey(params.networks),
|
|
166
|
+
walletAddress: params.walletAddress
|
|
167
|
+
});
|
|
168
|
+
} catch (error) {
|
|
169
|
+
console.warn(
|
|
170
|
+
"[WalletscanApi] TalkenApi getNfts failed:",
|
|
171
|
+
params.contractAddress,
|
|
172
|
+
error
|
|
173
|
+
);
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get NFT metadata with timeout
|
|
179
|
+
*
|
|
180
|
+
* @param params - Contract address, wallet address, and networks
|
|
181
|
+
* @param timeoutMs - Timeout in milliseconds (default: 3000)
|
|
182
|
+
* @returns First NFT or null if timeout/failed/empty
|
|
183
|
+
*/
|
|
184
|
+
async getNFTWithTimeout(params, timeoutMs = 3e3) {
|
|
185
|
+
try {
|
|
186
|
+
const nfts = await Promise.race([
|
|
187
|
+
this.getNFT(params),
|
|
188
|
+
new Promise(
|
|
189
|
+
(resolve) => setTimeout(() => resolve([]), timeoutMs)
|
|
190
|
+
)
|
|
191
|
+
]);
|
|
192
|
+
return nfts.length > 0 ? nfts[0] : null;
|
|
193
|
+
} catch (_error) {
|
|
194
|
+
console.warn(
|
|
195
|
+
"[WalletscanApi] NFT metadata request timed out:",
|
|
196
|
+
params.contractAddress
|
|
197
|
+
);
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export {
|
|
204
|
+
WalletscanApi
|
|
205
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
TALKEN_API_ENDPOINTS
|
|
4
|
+
} from "./chunk-DPTDOCWL.js";
|
|
5
|
+
|
|
6
|
+
// src/wallets/walletConnectors/abcWallet/api/TokenApi.ts
|
|
7
|
+
import { getTalkenApiClient } from "@talken/talkenkit";
|
|
8
|
+
var TokenApi = class {
|
|
9
|
+
async getBalances(address, chainKey) {
|
|
10
|
+
const api = getTalkenApiClient();
|
|
11
|
+
if (!api)
|
|
12
|
+
throw new Error("TalkenApiClient not initialized");
|
|
13
|
+
const query = new URLSearchParams({ address, chainKey }).toString();
|
|
14
|
+
const response = await api.get(`${TALKEN_API_ENDPOINTS.TOKENS_BALANCES}?${query}`);
|
|
15
|
+
return Array.isArray(response) ? response : response.tokens ?? [];
|
|
16
|
+
}
|
|
17
|
+
async getTokenBalance(address, chainKey, tokenAddress) {
|
|
18
|
+
const balances = await this.getBalances(address, chainKey);
|
|
19
|
+
const matched = balances.find(
|
|
20
|
+
(token) => token.address?.toLowerCase() === tokenAddress.toLowerCase()
|
|
21
|
+
);
|
|
22
|
+
if (!matched?.balance)
|
|
23
|
+
return null;
|
|
24
|
+
return BigInt(matched.balance);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
TokenApi
|
|
30
|
+
};
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
loadAuthState,
|
|
4
|
+
saveAuthState
|
|
5
|
+
} from "./chunk-NISMGNEE.js";
|
|
6
|
+
|
|
7
|
+
// src/wallets/walletConnectors/abcWallet/abcBitcoinConnector.ts
|
|
8
|
+
import { getTalkenApiClient } from "@talken/talkenkit";
|
|
9
|
+
var AbcBitcoinConnector = class {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.wallet = null;
|
|
12
|
+
this.connected = false;
|
|
13
|
+
// Event listeners
|
|
14
|
+
this.connectListeners = /* @__PURE__ */ new Set();
|
|
15
|
+
this.disconnectListeners = /* @__PURE__ */ new Set();
|
|
16
|
+
this.accountsChangedListeners = /* @__PURE__ */ new Set();
|
|
17
|
+
this.networkChangedListeners = /* @__PURE__ */ new Set();
|
|
18
|
+
this.provider = config.provider;
|
|
19
|
+
this.setupProviderListeners();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Setup provider event listeners
|
|
23
|
+
*/
|
|
24
|
+
setupProviderListeners() {
|
|
25
|
+
this.provider.on("connect", () => {
|
|
26
|
+
this.connected = true;
|
|
27
|
+
if (this.wallet) {
|
|
28
|
+
for (const listener of this.connectListeners) {
|
|
29
|
+
listener(this.wallet);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
this.provider.on("disconnect", () => {
|
|
34
|
+
this.connected = false;
|
|
35
|
+
this.wallet = null;
|
|
36
|
+
for (const listener of this.disconnectListeners) {
|
|
37
|
+
listener();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
this.provider.on("accountsChanged", (accounts) => {
|
|
41
|
+
for (const listener of this.accountsChangedListeners) {
|
|
42
|
+
listener(accounts);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
this.provider.on("networkChanged", (network) => {
|
|
46
|
+
for (const listener of this.networkChangedListeners) {
|
|
47
|
+
listener(network);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Connect Bitcoin wallet
|
|
53
|
+
*/
|
|
54
|
+
async connect() {
|
|
55
|
+
try {
|
|
56
|
+
const authState = loadAuthState();
|
|
57
|
+
console.log("[BitcoinConnector] \u{1F527} connect() called:", {
|
|
58
|
+
hasAuthState: !!authState,
|
|
59
|
+
isAuthenticated: authState?.isAuthenticated,
|
|
60
|
+
hasBitcoinWallet: !!authState?.bitcoinWallet,
|
|
61
|
+
bitcoinAddress: authState?.bitcoinWallet?.address
|
|
62
|
+
});
|
|
63
|
+
if (!authState || !authState.isAuthenticated || !authState.bitcoinWallet) {
|
|
64
|
+
throw new Error("BITCOIN_LOGIN_REQUIRED");
|
|
65
|
+
}
|
|
66
|
+
this.wallet = authState.bitcoinWallet;
|
|
67
|
+
this.provider.setWallet(authState.bitcoinWallet);
|
|
68
|
+
console.log("[BitcoinConnector] \u2705 Wallet set:", {
|
|
69
|
+
address: authState.bitcoinWallet.address,
|
|
70
|
+
publicKey: authState.bitcoinWallet.publicKey,
|
|
71
|
+
addressType: authState.bitcoinWallet.addressType,
|
|
72
|
+
network: authState.bitcoinWallet.network
|
|
73
|
+
});
|
|
74
|
+
this.connected = true;
|
|
75
|
+
return {
|
|
76
|
+
address: authState.bitcoinWallet.address,
|
|
77
|
+
publicKey: authState.bitcoinWallet.publicKey,
|
|
78
|
+
network: authState.bitcoinWallet.network
|
|
79
|
+
};
|
|
80
|
+
} catch (error) {
|
|
81
|
+
if (error.message === "BITCOIN_LOGIN_REQUIRED") {
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
console.error("[BitcoinConnector] \u274C connect error:", error);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Disconnect Bitcoin wallet
|
|
90
|
+
*/
|
|
91
|
+
async disconnect() {
|
|
92
|
+
try {
|
|
93
|
+
this.provider.clearWallet();
|
|
94
|
+
this.wallet = null;
|
|
95
|
+
this.connected = false;
|
|
96
|
+
console.log("[BitcoinConnector] \u2705 Wallet disconnected");
|
|
97
|
+
} catch (error) {
|
|
98
|
+
console.error("[BitcoinConnector] \u274C disconnect error:", error);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get Bitcoin address
|
|
104
|
+
*/
|
|
105
|
+
async getAddress() {
|
|
106
|
+
return this.provider.getAddress();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get compressed public key (33 bytes)
|
|
110
|
+
*/
|
|
111
|
+
async getPublicKey() {
|
|
112
|
+
return this.provider.getPublicKey();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get address type (bech32, p2pkh, etc.)
|
|
116
|
+
*/
|
|
117
|
+
getAddressType() {
|
|
118
|
+
return this.provider.getAddressType();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get UTXOs
|
|
122
|
+
*/
|
|
123
|
+
async getUtxos(forceRefresh = false) {
|
|
124
|
+
return this.provider.getUtxos(forceRefresh);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get balance (in satoshis)
|
|
128
|
+
*/
|
|
129
|
+
async getBalance(forceRefresh = false) {
|
|
130
|
+
return this.provider.getBalance(forceRefresh);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Estimate transaction fee
|
|
134
|
+
*/
|
|
135
|
+
async estimateFee(targetBlocks = 6) {
|
|
136
|
+
return this.provider.estimateFee(targetBlocks);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Sign Bitcoin message (BIP-322)
|
|
140
|
+
* NOTE: Currently not supported - Bitcoin uses v2 API which doesn't have message signing endpoint
|
|
141
|
+
*/
|
|
142
|
+
async signMessage(message) {
|
|
143
|
+
return this.provider.signMessage(message);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Send Bitcoin transaction (high-level API)
|
|
147
|
+
* Creates, signs, and broadcasts transaction
|
|
148
|
+
*/
|
|
149
|
+
async sendTransaction(params) {
|
|
150
|
+
return this.provider.sendTransaction(params);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Broadcast signed transaction to network (low-level API)
|
|
154
|
+
*/
|
|
155
|
+
async broadcastTransaction(rawTransaction, psbt) {
|
|
156
|
+
return this.provider.broadcastTransaction(rawTransaction, psbt);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if authorized (has valid session)
|
|
160
|
+
*/
|
|
161
|
+
async isAuthorized() {
|
|
162
|
+
try {
|
|
163
|
+
const authState = loadAuthState();
|
|
164
|
+
if (!authState || !authState.isAuthenticated) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
if (!authState.bitcoinWallet) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
const api = getTalkenApiClient();
|
|
171
|
+
return !!api && !api.isTokenExpired();
|
|
172
|
+
} catch {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if connected
|
|
178
|
+
*/
|
|
179
|
+
isConnected() {
|
|
180
|
+
return this.connected && this.provider.isConnected();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get current wallet
|
|
184
|
+
*/
|
|
185
|
+
getWallet() {
|
|
186
|
+
return this.wallet;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get provider
|
|
190
|
+
*/
|
|
191
|
+
getProvider() {
|
|
192
|
+
return this.provider;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get wallet info
|
|
196
|
+
*/
|
|
197
|
+
getWalletInfo() {
|
|
198
|
+
return this.provider.getWalletInfo();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Switch network
|
|
202
|
+
*/
|
|
203
|
+
async switchNetwork(network) {
|
|
204
|
+
this.provider.setNetwork(network);
|
|
205
|
+
const authState = loadAuthState();
|
|
206
|
+
if (authState?.bitcoinWallet) {
|
|
207
|
+
authState.bitcoinWallet.network = network === "mainnet" ? "bitcoin" /* Mainnet */ : "bitcoin_testnet" /* Testnet */;
|
|
208
|
+
saveAuthState(authState);
|
|
209
|
+
}
|
|
210
|
+
console.log("[BitcoinConnector] \u{1F504} Network switched to:", network);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get current network
|
|
214
|
+
*/
|
|
215
|
+
getNetwork() {
|
|
216
|
+
return this.provider.getNetwork().type;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Refresh UTXO cache
|
|
220
|
+
*/
|
|
221
|
+
async refreshUtxos() {
|
|
222
|
+
return this.provider.refreshUtxos();
|
|
223
|
+
}
|
|
224
|
+
on(event, listener) {
|
|
225
|
+
switch (event) {
|
|
226
|
+
case "connect":
|
|
227
|
+
this.connectListeners.add(listener);
|
|
228
|
+
break;
|
|
229
|
+
case "disconnect":
|
|
230
|
+
this.disconnectListeners.add(listener);
|
|
231
|
+
break;
|
|
232
|
+
case "accountsChanged":
|
|
233
|
+
this.accountsChangedListeners.add(listener);
|
|
234
|
+
break;
|
|
235
|
+
case "networkChanged":
|
|
236
|
+
this.networkChangedListeners.add(listener);
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
off(event, listener) {
|
|
241
|
+
switch (event) {
|
|
242
|
+
case "connect":
|
|
243
|
+
this.connectListeners.delete(listener);
|
|
244
|
+
break;
|
|
245
|
+
case "disconnect":
|
|
246
|
+
this.disconnectListeners.delete(listener);
|
|
247
|
+
break;
|
|
248
|
+
case "accountsChanged":
|
|
249
|
+
this.accountsChangedListeners.delete(listener);
|
|
250
|
+
break;
|
|
251
|
+
case "networkChanged":
|
|
252
|
+
this.networkChangedListeners.delete(listener);
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Remove all listeners
|
|
258
|
+
*/
|
|
259
|
+
removeAllListeners() {
|
|
260
|
+
this.connectListeners.clear();
|
|
261
|
+
this.disconnectListeners.clear();
|
|
262
|
+
this.accountsChangedListeners.clear();
|
|
263
|
+
this.networkChangedListeners.clear();
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
function createAbcBitcoinConnector(config) {
|
|
267
|
+
return new AbcBitcoinConnector(config);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export {
|
|
271
|
+
AbcBitcoinConnector,
|
|
272
|
+
createAbcBitcoinConnector
|
|
273
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
STORAGE_PREFIX
|
|
4
|
+
} from "./chunk-TQXCRSMS.js";
|
|
5
|
+
|
|
6
|
+
// src/wallets/walletConnectors/abcWallet/AbcCredentialManager.ts
|
|
7
|
+
var EMAIL_STORAGE_KEY = `${STORAGE_PREFIX}saved_email`;
|
|
8
|
+
var AUTH_STATE_KEY = `${STORAGE_PREFIX}auth_state`;
|
|
9
|
+
var AbcCredentialManager = class _AbcCredentialManager {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.pinHash = null;
|
|
12
|
+
this.email_ = null;
|
|
13
|
+
this.restoreEmailFromStorage();
|
|
14
|
+
}
|
|
15
|
+
static getInstance() {
|
|
16
|
+
if (!_AbcCredentialManager.instance) {
|
|
17
|
+
_AbcCredentialManager.instance = new _AbcCredentialManager();
|
|
18
|
+
}
|
|
19
|
+
return _AbcCredentialManager.instance;
|
|
20
|
+
}
|
|
21
|
+
// ── PIN Hash (memory only) ────────────────────────────────────────
|
|
22
|
+
setPinHash(hash) {
|
|
23
|
+
this.pinHash = hash;
|
|
24
|
+
}
|
|
25
|
+
getPinHash() {
|
|
26
|
+
return this.pinHash;
|
|
27
|
+
}
|
|
28
|
+
clearPinHash() {
|
|
29
|
+
this.pinHash = null;
|
|
30
|
+
}
|
|
31
|
+
// ── Email ─────────────────────────────────────────────────────────
|
|
32
|
+
setEmail(email) {
|
|
33
|
+
this.email_ = email;
|
|
34
|
+
if (typeof window !== "undefined") {
|
|
35
|
+
try {
|
|
36
|
+
localStorage.setItem(EMAIL_STORAGE_KEY, email);
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get recovery email.
|
|
43
|
+
* Priority: in-memory → auth_state JSON → saved_email localStorage
|
|
44
|
+
*/
|
|
45
|
+
getEmail() {
|
|
46
|
+
if (this.email_)
|
|
47
|
+
return this.email_;
|
|
48
|
+
if (typeof window === "undefined")
|
|
49
|
+
return null;
|
|
50
|
+
try {
|
|
51
|
+
const authState = localStorage.getItem(AUTH_STATE_KEY);
|
|
52
|
+
if (authState) {
|
|
53
|
+
const data = JSON.parse(authState);
|
|
54
|
+
const email = data?.user?.email || data?.wallet?.email;
|
|
55
|
+
if (typeof email === "string" && email.trim()) {
|
|
56
|
+
this.email_ = email.trim();
|
|
57
|
+
return this.email_;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
} catch {
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const saved = localStorage.getItem(EMAIL_STORAGE_KEY);
|
|
64
|
+
if (saved?.trim()) {
|
|
65
|
+
this.email_ = saved.trim();
|
|
66
|
+
return this.email_;
|
|
67
|
+
}
|
|
68
|
+
} catch {
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// ── Lifecycle ─────────────────────────────────────────────────────
|
|
73
|
+
/**
|
|
74
|
+
* Restore email from localStorage on initialization.
|
|
75
|
+
* PIN hash is intentionally NOT restored (memory-only).
|
|
76
|
+
*/
|
|
77
|
+
restoreEmailFromStorage() {
|
|
78
|
+
if (typeof window === "undefined")
|
|
79
|
+
return;
|
|
80
|
+
this.getEmail();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clear all credentials (logout).
|
|
84
|
+
*/
|
|
85
|
+
clear() {
|
|
86
|
+
this.pinHash = null;
|
|
87
|
+
this.email_ = null;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
function getCredentialManager() {
|
|
91
|
+
return AbcCredentialManager.getInstance();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export {
|
|
95
|
+
getCredentialManager
|
|
96
|
+
};
|