@talken/talkenkit 2.3.7 → 2.3.9
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/Arc-ILTINY4C.js +8 -0
- package/dist/Brave-4L5B7JJR.js +8 -0
- package/dist/Browser-XMB4J5WD.js +8 -0
- package/dist/Chrome-6ZDQIHC5.js +8 -0
- package/dist/Edge-OAWCEU7H.js +8 -0
- package/dist/Firefox-O66FZK3V.js +8 -0
- package/dist/Linux-NUJF4EPC.js +8 -0
- package/dist/Macos-46EJ2NPK.js +8 -0
- package/dist/Opera-KTUB3UWN.js +8 -0
- package/dist/Safari-A3Q6PIT2.js +8 -0
- package/dist/Windows-NL32NG52.js +8 -0
- package/dist/abcWallet-ES4OPRSK.js +8 -0
- package/dist/ar_AR-YBBYUEGS.js +8 -0
- package/dist/arbitrum-D2TUFPZI.js +8 -0
- package/dist/argentWallet-A5HM5FRP.js +8 -0
- package/dist/assets-4NDWRKXE.js +8 -0
- package/dist/avalanche-BOOSH35S.js +8 -0
- package/dist/base-3JMRS35B.js +8 -0
- package/dist/berasigWallet-6IOU73YL.js +8 -0
- package/dist/bestWallet-6LJUU6OL.js +8 -0
- package/dist/bifrostWallet-SLPPXZ2K.js +8 -0
- package/dist/binanceWallet-Z67J7362.js +8 -0
- package/dist/bitgetWallet-DLLOWMCI.js +8 -0
- package/dist/bitskiWallet-CPOXGABT.js +8 -0
- package/dist/bitverseWallet-SAK4MIS6.js +8 -0
- package/dist/blast-4GF24NR7.js +8 -0
- package/dist/bloomWallet-YIRCNQZJ.js +8 -0
- package/dist/braveWallet-PNBKQKJC.js +8 -0
- package/dist/bsc-KU6MBOYR.js +8 -0
- package/dist/bybitWallet-GCDBAJKO.js +8 -0
- package/dist/celo-5A5VXMPX.js +8 -0
- package/dist/chunk-M2CMB5B2.js +93 -0
- package/dist/chunk-TJX4M23U.js +27 -0
- package/dist/clvWallet-R6YRCMZO.js +8 -0
- package/dist/coin98Wallet-4Y3ROAGP.js +8 -0
- package/dist/coinbaseWallet-L4QDZB5W.js +8 -0
- package/dist/compassWallet-NNBX35AV.js +8 -0
- package/dist/components/AbcLoginModal/AbcAuthModal.d.ts +11 -1
- package/dist/components/ConnectButton/ConnectButtonRenderer.d.ts +1 -1
- package/dist/components/ConnectOptions/CompactMobileOptions.css.d.ts +26 -0
- package/dist/components/ConnectOptions/CompactMobileOptions.d.ts +19 -0
- package/dist/components/ConnectOptions/DesktopOptions.d.ts +9 -2
- package/dist/components/RainbowKitProvider/RainbowKitConfigProvider.d.ts +20 -0
- package/dist/components/RainbowKitProvider/RainbowKitProvider.d.ts +17 -2
- package/dist/config/networks.d.ts +125 -0
- package/dist/connect-Q2RLUT5B.js +8 -0
- package/dist/contexts/index.d.ts +2 -2
- package/dist/coreWallet-PN2LMNGN.js +8 -0
- package/dist/create-HQ4QXTKY.js +8 -0
- package/dist/cronos-KZAB32FC.js +8 -0
- package/dist/dawnWallet-AMO43DL3.js +8 -0
- package/dist/de_DE-RUWMVYCQ.js +8 -0
- package/dist/desigWallet-AD335WX5.js +8 -0
- package/dist/en_US-NQ25CUR4.js +8 -0
- package/dist/encryption-3YHRI3PA.js +14 -0
- package/dist/enkryptWallet-OOP27GE2.js +8 -0
- package/dist/es_419-HKJPYJRI.js +8 -0
- package/dist/ethereum-WAFT6DML.js +8 -0
- package/dist/flow-XANNOAPJ.js +8 -0
- package/dist/foxWallet-UDUWOW52.js +8 -0
- package/dist/fr_FR-2O5ZDLPQ.js +1356 -0
- package/dist/frameWallet-BEABTFIT.js +8 -0
- package/dist/frontierWallet-RG47M3C5.js +8 -0
- package/dist/gateWallet-XOP74BMB.js +8 -0
- package/dist/gnosis-7GFI4V27.js +8 -0
- package/dist/hardhat-6HKZWC4T.js +8 -0
- package/dist/hi_IN-XRZ4YIUW.js +8 -0
- package/dist/hooks/useDeviceType.d.ts +9 -0
- package/dist/id_ID-REEY4CSS.js +8 -0
- package/dist/imTokenWallet-LTPKXYUD.js +8 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +1960 -1040
- package/dist/injectedWallet-YCFZTULL.js +8 -0
- package/dist/iopayWallet-XS37QAUO.js +8 -0
- package/dist/ja_JP-2OPCVN6X.js +8 -0
- package/dist/kaia-DQ3OSYXE.js +8 -0
- package/dist/kaiaWallet-2XZDQZ63.js +8 -0
- package/dist/kaikasWallet-V2GCFPEB.js +8 -0
- package/dist/ko_KR-DDXBZTYT.js +8 -0
- package/dist/krakenWallet-3VM7ZM2O.js +8 -0
- package/dist/kresusWallet-4MXFQP4P.js +8 -0
- package/dist/ledgerWallet-YC3HF3NJ.js +8 -0
- package/dist/login-DGIK764Z.js +8 -0
- package/dist/magicEden-BLYGUG47.js +8 -0
- package/dist/manta-OEF3QP66.js +8 -0
- package/dist/mantle-EYIH4GGM.js +8 -0
- package/dist/metaMaskWallet-ZZMFVM52.js +8 -0
- package/dist/mewWallet-D6JN37EZ.js +8 -0
- package/dist/ms_MY-PX7G4XTD.js +8 -0
- package/dist/nestWallet-X3CDHKNV.js +8 -0
- package/dist/oktoWallet-ZYLL2RLN.js +8 -0
- package/dist/okxWallet-FLICEG4S.js +8 -0
- package/dist/omniWallet-DAQHKHUN.js +8 -0
- package/dist/oneInchWallet-BRGGUXND.js +8 -0
- package/dist/oneKeyWallet-KDU2JIFD.js +8 -0
- package/dist/optimism-6GXRYJDW.js +8 -0
- package/dist/paraSwapWallet-7UHWT54G.js +8 -0
- package/dist/phantomWallet-BSCGZT6L.js +8 -0
- package/dist/polygon-YNJM552P.js +8 -0
- package/dist/pt_BR-A5R4SBSC.js +8 -0
- package/dist/rabbyWallet-RZIUL3YN.js +8 -0
- package/dist/rainbowWallet-4ALDT5ZL.js +8 -0
- package/dist/ramperWallet-IB3JRE2F.js +8 -0
- package/dist/refresh-R5NYTT3S.js +8 -0
- package/dist/ronin-LU7LZPWA.js +8 -0
- package/dist/roninWallet-BS7VDK7U.js +8 -0
- package/dist/ru_RU-4QDZLRSW.js +1356 -0
- package/dist/safeWallet-5NR62MJV.js +8 -0
- package/dist/safeheronWallet-7ELUSU44.js +8 -0
- package/dist/safepalWallet-CZJABQ5N.js +8 -0
- package/dist/scan-BVZ7DVJ4.js +8 -0
- package/dist/scroll-XRP46UTI.js +8 -0
- package/dist/secure-GEK7TTJY.js +8 -0
- package/dist/seifWallet-XLBMTX4R.js +8 -0
- package/dist/sign-PREOQ4RR.js +8 -0
- package/dist/solana/SolanaWalletProvider.d.ts +1 -1
- package/dist/subWallet-47USA4OE.js +8 -0
- package/dist/tahoWallet-N3XXJ3NW.js +8 -0
- package/dist/talismanWallet-SV3B42TQ.js +8 -0
- package/dist/th_TH-4TWPYDKX.js +1356 -0
- package/dist/themes/baseTheme.js +1 -0
- package/dist/themes/darkTheme.js +1 -0
- package/dist/themes/lightTheme.js +1 -0
- package/dist/themes/midnightTheme.js +1 -0
- package/dist/tokenPocketWallet-7IYW3MIL.js +8 -0
- package/dist/tokenaryWallet-7D2LN65X.js +8 -0
- package/dist/tr_TR-C37KIU7M.js +1356 -0
- package/dist/trustWallet-HJQBMBC6.js +8 -0
- package/dist/uk_UA-I77HS4GO.js +1356 -0
- package/dist/uniswapWallet-JZ2ULELN.js +8 -0
- package/dist/utils/abcWaasAdapter.d.ts +75 -0
- package/dist/valoraWallet-PCTL6UBB.js +8 -0
- package/dist/vi_VN-KVPDLW26.js +8 -0
- package/dist/walletConnectWallet-AJ36XVBT.js +8 -0
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.d.ts +11 -8
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +4 -11
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.d.ts +1 -19
- package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/index.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +2 -0
- package/dist/wallets/walletConnectors/chunk-2GIBC7XF.js +39 -0
- package/dist/wallets/walletConnectors/chunk-2J66VMY5.js +152 -0
- package/dist/wallets/walletConnectors/chunk-34WMJDUY.js +481 -0
- package/dist/wallets/walletConnectors/chunk-3J3XZMJ7.js +39 -0
- package/dist/wallets/walletConnectors/chunk-3WVSOTC4.js +63 -0
- package/dist/wallets/walletConnectors/chunk-43LOEA55.js +63 -0
- package/dist/wallets/walletConnectors/chunk-4IRVZPIN.js +63 -0
- package/dist/wallets/walletConnectors/chunk-4NLOE5S3.js +63 -0
- package/dist/wallets/walletConnectors/chunk-5MSMALF7.js +63 -0
- package/dist/wallets/walletConnectors/chunk-5OFAP55G.js +44 -0
- package/dist/wallets/walletConnectors/chunk-6KOHIL7T.js +63 -0
- package/dist/wallets/walletConnectors/chunk-6YPK343Z.js +63 -0
- package/dist/wallets/walletConnectors/chunk-7FFIZE76.js +63 -0
- package/dist/wallets/walletConnectors/chunk-7P5HZGEV.js +627 -0
- package/dist/wallets/walletConnectors/chunk-A6LBRVGP.js +63 -0
- package/dist/wallets/walletConnectors/chunk-BKXPGZMQ.js +228 -0
- package/dist/wallets/walletConnectors/chunk-CNHVIXPV.js +228 -0
- package/dist/wallets/walletConnectors/chunk-DAZZIITX.js +1678 -0
- package/dist/wallets/walletConnectors/chunk-ESRU5KCF.js +151 -0
- package/dist/wallets/walletConnectors/chunk-F4JFONDA.js +601 -0
- package/dist/wallets/walletConnectors/chunk-GXHCAEWR.js +63 -0
- package/dist/wallets/walletConnectors/chunk-HDYBRMYW.js +194 -0
- package/dist/wallets/walletConnectors/chunk-HOE4UOHR.js +514 -0
- package/dist/wallets/walletConnectors/chunk-HS2FAOAJ.js +63 -0
- package/dist/wallets/walletConnectors/chunk-IA4EQFSS.js +474 -0
- package/dist/wallets/walletConnectors/chunk-IHM7I7D5.js +63 -0
- package/dist/wallets/walletConnectors/chunk-JJAJOFZI.js +63 -0
- package/dist/wallets/walletConnectors/chunk-KFIUFVQH.js +624 -0
- package/dist/wallets/walletConnectors/chunk-KFROJI25.js +535 -0
- package/dist/wallets/walletConnectors/chunk-KHVILXGK.js +514 -0
- package/dist/wallets/walletConnectors/chunk-LGT7LQAJ.js +63 -0
- package/dist/wallets/walletConnectors/chunk-LHBQ2Z3Q.js +63 -0
- package/dist/wallets/walletConnectors/chunk-M76GLEFL.js +63 -0
- package/dist/wallets/walletConnectors/chunk-MFIE6UCG.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NA5G3LSC.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NASGGIUS.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NKJLO4QH.js +39 -0
- package/dist/wallets/walletConnectors/chunk-NURTFXQU.js +568 -0
- package/dist/wallets/walletConnectors/chunk-NVM3JZ4L.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NWDLOM7Q.js +646 -0
- package/dist/wallets/walletConnectors/chunk-OHRTTVNJ.js +44 -0
- package/dist/wallets/walletConnectors/chunk-OMYDLPUM.js +63 -0
- package/dist/wallets/walletConnectors/chunk-P2MTINFI.js +280 -0
- package/dist/wallets/walletConnectors/chunk-PLL7P7HY.js +63 -0
- package/dist/wallets/walletConnectors/chunk-PUFQKZA7.js +63 -0
- package/dist/wallets/walletConnectors/chunk-RLBGBBIO.js +309 -0
- package/dist/wallets/walletConnectors/chunk-RUZBOPMI.js +63 -0
- package/dist/wallets/walletConnectors/chunk-S2B56ZVJ.js +481 -0
- package/dist/wallets/walletConnectors/chunk-SFP47DS6.js +63 -0
- package/dist/wallets/walletConnectors/chunk-SNZL5LJ6.js +637 -0
- package/dist/wallets/walletConnectors/chunk-SPR4W5TG.js +474 -0
- package/dist/wallets/walletConnectors/chunk-SSDCG5BG.js +63 -0
- package/dist/wallets/walletConnectors/chunk-SUXK3JW6.js +280 -0
- package/dist/wallets/walletConnectors/chunk-TUUNSVKZ.js +345 -0
- package/dist/wallets/walletConnectors/chunk-U2CUEL35.js +240 -0
- package/dist/wallets/walletConnectors/chunk-VLEVJVJR.js +63 -0
- package/dist/wallets/walletConnectors/chunk-W2VDZD74.js +478 -0
- package/dist/wallets/walletConnectors/chunk-WAO3KL5U.js +285 -0
- package/dist/wallets/walletConnectors/chunk-WYSKBMHW.js +280 -0
- package/dist/wallets/walletConnectors/chunk-XDRZSWHB.js +63 -0
- package/dist/wallets/walletConnectors/chunk-XKVRDEDK.js +63 -0
- package/dist/wallets/walletConnectors/chunk-XYAAXWWU.js +63 -0
- package/dist/wallets/walletConnectors/chunk-XYPR4BAF.js +436 -0
- package/dist/wallets/walletConnectors/index.js +68 -68
- package/dist/wigwamWallet-D3MVGB5Z.js +8 -0
- package/dist/xdc-5NQHQJE5.js +8 -0
- package/dist/xdefiWallet-B4O6HAIP.js +8 -0
- package/dist/zealWallet-6SPNICRX.js +8 -0
- package/dist/zerionWallet-XZ3JCAOO.js +8 -0
- package/dist/zetachain-U6IILKZJ.js +8 -0
- package/dist/zh_CN-KGLAIP3N.js +8 -0
- package/dist/zh_HK-AEXEN6P6.js +8 -0
- package/dist/zh_TW-6C7R5V3K.js +8 -0
- package/dist/zkSync-TMPB52ZN.js +8 -0
- package/dist/zora-S46CHEOU.js +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
secure_default
|
|
4
|
+
} from "./chunk-G2LI5MVX.js";
|
|
5
|
+
import {
|
|
6
|
+
calculateExpiryTimestamp,
|
|
7
|
+
createAbcError,
|
|
8
|
+
isTokenExpired,
|
|
9
|
+
loadFromStorage,
|
|
10
|
+
parseApiError,
|
|
11
|
+
removeFromStorage,
|
|
12
|
+
saveToStorage
|
|
13
|
+
} from "./chunk-W2VDZD74.js";
|
|
14
|
+
import {
|
|
15
|
+
ABC_ENDPOINTS,
|
|
16
|
+
DEFAULT_HEADERS,
|
|
17
|
+
REQUEST_TIMEOUT
|
|
18
|
+
} from "./chunk-VETRBBA2.js";
|
|
19
|
+
|
|
20
|
+
// src/wallets/walletConnectors/abcWallet/api/BaseApiClient.ts
|
|
21
|
+
var BaseApiClient = class {
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.accessToken = null;
|
|
24
|
+
this.refreshToken = null;
|
|
25
|
+
this.expiresAt = null;
|
|
26
|
+
this.isRefreshing = false;
|
|
27
|
+
this.refreshPromise = null;
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.baseURL = config.waasUrl;
|
|
30
|
+
this.secure = new secure_default(this.baseURL);
|
|
31
|
+
this.loadTokens();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load tokens from storage
|
|
35
|
+
*/
|
|
36
|
+
loadTokens() {
|
|
37
|
+
this.accessToken = loadFromStorage("access_token" /* ACCESS_TOKEN */);
|
|
38
|
+
this.refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
|
|
39
|
+
this.expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Save tokens to storage
|
|
43
|
+
*/
|
|
44
|
+
saveTokens(accessToken, refreshToken, expiresIn) {
|
|
45
|
+
this.accessToken = accessToken;
|
|
46
|
+
this.refreshToken = refreshToken;
|
|
47
|
+
this.expiresAt = calculateExpiryTimestamp(expiresIn);
|
|
48
|
+
saveToStorage("access_token" /* ACCESS_TOKEN */, accessToken);
|
|
49
|
+
saveToStorage("refresh_token" /* REFRESH_TOKEN */, refreshToken);
|
|
50
|
+
saveToStorage("expires_at" /* EXPIRES_AT */, this.expiresAt);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clear tokens
|
|
54
|
+
*/
|
|
55
|
+
clearTokens() {
|
|
56
|
+
this.accessToken = null;
|
|
57
|
+
this.refreshToken = null;
|
|
58
|
+
this.expiresAt = null;
|
|
59
|
+
removeFromStorage("access_token" /* ACCESS_TOKEN */);
|
|
60
|
+
removeFromStorage("refresh_token" /* REFRESH_TOKEN */);
|
|
61
|
+
removeFromStorage("expires_at" /* EXPIRES_AT */);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if access token is expired
|
|
65
|
+
*/
|
|
66
|
+
isTokenExpired() {
|
|
67
|
+
return isTokenExpired(this.expiresAt);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get current access token
|
|
71
|
+
*/
|
|
72
|
+
getAccessToken() {
|
|
73
|
+
return this.accessToken;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set access token manually
|
|
77
|
+
*/
|
|
78
|
+
setAccessToken(token) {
|
|
79
|
+
this.accessToken = token;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get base URL
|
|
83
|
+
*/
|
|
84
|
+
getBaseURL() {
|
|
85
|
+
return this.baseURL;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get configuration
|
|
89
|
+
*/
|
|
90
|
+
getConfig() {
|
|
91
|
+
return this.config;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Refresh access token
|
|
95
|
+
*/
|
|
96
|
+
async refreshAccessToken() {
|
|
97
|
+
if (this.isRefreshing) {
|
|
98
|
+
if (this.refreshPromise) {
|
|
99
|
+
await this.refreshPromise;
|
|
100
|
+
}
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (!this.refreshToken) {
|
|
104
|
+
throw createAbcError(
|
|
105
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
106
|
+
"No refresh token available"
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
this.isRefreshing = true;
|
|
110
|
+
this.refreshPromise = (async () => {
|
|
111
|
+
try {
|
|
112
|
+
const isIframe = typeof window !== "undefined" && window.self !== window.top;
|
|
113
|
+
const talkenApiUrl = process.env.NEXT_PUBLIC_API_SERVER || "https://dev.walletapi.talken.io";
|
|
114
|
+
const response = await fetch(
|
|
115
|
+
`${talkenApiUrl}${ABC_ENDPOINTS.REFRESH_TOKEN}`,
|
|
116
|
+
{
|
|
117
|
+
method: "POST",
|
|
118
|
+
headers: DEFAULT_HEADERS,
|
|
119
|
+
credentials: "include",
|
|
120
|
+
body: new URLSearchParams({
|
|
121
|
+
refresh_token: this.refreshToken || "",
|
|
122
|
+
isIframe: String(isIframe)
|
|
123
|
+
}).toString()
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
const text = await response.text();
|
|
127
|
+
const data = text ? JSON.parse(text) : {};
|
|
128
|
+
if (response.ok && data.access_token) {
|
|
129
|
+
const expiresIn = data.expire_in || 3600;
|
|
130
|
+
this.saveTokens(
|
|
131
|
+
data.access_token,
|
|
132
|
+
data.refresh_token || this.refreshToken,
|
|
133
|
+
expiresIn
|
|
134
|
+
);
|
|
135
|
+
} else {
|
|
136
|
+
throw createAbcError(
|
|
137
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
138
|
+
"Failed to refresh token"
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
} finally {
|
|
142
|
+
this.isRefreshing = false;
|
|
143
|
+
this.refreshPromise = null;
|
|
144
|
+
}
|
|
145
|
+
})();
|
|
146
|
+
await this.refreshPromise;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Make HTTP request with automatic token refresh
|
|
150
|
+
*/
|
|
151
|
+
async request(endpoint, options = {}) {
|
|
152
|
+
const {
|
|
153
|
+
method = "GET",
|
|
154
|
+
body,
|
|
155
|
+
headers = {},
|
|
156
|
+
skipAuth = false,
|
|
157
|
+
isRetry = false,
|
|
158
|
+
contentType = "form"
|
|
159
|
+
// Default to form-encoded for backward compatibility
|
|
160
|
+
} = options;
|
|
161
|
+
if (!skipAuth && this.isTokenExpired() && this.refreshToken) {
|
|
162
|
+
await this.refreshAccessToken();
|
|
163
|
+
}
|
|
164
|
+
const url = `${this.baseURL}${endpoint}`;
|
|
165
|
+
const requestHeaders = {
|
|
166
|
+
...DEFAULT_HEADERS,
|
|
167
|
+
...headers
|
|
168
|
+
};
|
|
169
|
+
if (contentType === "json") {
|
|
170
|
+
requestHeaders["Content-Type"] = "application/json";
|
|
171
|
+
requestHeaders["Accept"] = "application/json";
|
|
172
|
+
}
|
|
173
|
+
if (!skipAuth && this.accessToken) {
|
|
174
|
+
requestHeaders.Authorization = `Bearer ${this.accessToken}`;
|
|
175
|
+
}
|
|
176
|
+
if (this.config.apiKey) {
|
|
177
|
+
requestHeaders["X-API-Key"] = this.config.apiKey;
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const controller = new AbortController();
|
|
181
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
182
|
+
const requestBody = body ? contentType === "json" ? JSON.stringify(body) : new URLSearchParams(body).toString() : void 0;
|
|
183
|
+
const response = await fetch(url, {
|
|
184
|
+
method,
|
|
185
|
+
headers: requestHeaders,
|
|
186
|
+
body: requestBody,
|
|
187
|
+
signal: controller.signal
|
|
188
|
+
});
|
|
189
|
+
clearTimeout(timeoutId);
|
|
190
|
+
const text = await response.text();
|
|
191
|
+
let data;
|
|
192
|
+
if (text) {
|
|
193
|
+
try {
|
|
194
|
+
data = JSON.parse(text);
|
|
195
|
+
} catch (parseError) {
|
|
196
|
+
console.error("[BaseApiClient] \u274C JSON parse error:", {
|
|
197
|
+
url,
|
|
198
|
+
method,
|
|
199
|
+
status: response.status,
|
|
200
|
+
responseText: text.substring(0, 200)
|
|
201
|
+
});
|
|
202
|
+
throw createAbcError(
|
|
203
|
+
"UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
|
|
204
|
+
"Invalid JSON response from server",
|
|
205
|
+
{ text, parseError }
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
} else {
|
|
209
|
+
data = { status: "success" };
|
|
210
|
+
}
|
|
211
|
+
if (response.status === 401 && !skipAuth && this.refreshToken && !isRetry) {
|
|
212
|
+
try {
|
|
213
|
+
await this.refreshAccessToken();
|
|
214
|
+
return await this.request(endpoint, {
|
|
215
|
+
...options,
|
|
216
|
+
isRetry: true
|
|
217
|
+
});
|
|
218
|
+
} catch (refreshError) {
|
|
219
|
+
console.error("Token refresh failed:", refreshError);
|
|
220
|
+
throw parseApiError({
|
|
221
|
+
response: {
|
|
222
|
+
status: response.status,
|
|
223
|
+
data
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (!response.ok) {
|
|
229
|
+
console.error("[BaseApiClient] \u274C API Error:", {
|
|
230
|
+
url,
|
|
231
|
+
method,
|
|
232
|
+
status: response.status,
|
|
233
|
+
statusText: response.statusText,
|
|
234
|
+
data
|
|
235
|
+
});
|
|
236
|
+
throw parseApiError({
|
|
237
|
+
response: {
|
|
238
|
+
status: response.status,
|
|
239
|
+
data
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
return data;
|
|
244
|
+
} catch (error) {
|
|
245
|
+
console.error("[BaseApiClient] \u274C Request failed:", {
|
|
246
|
+
url,
|
|
247
|
+
method,
|
|
248
|
+
error: error.message
|
|
249
|
+
});
|
|
250
|
+
if (error.name === "AbortError") {
|
|
251
|
+
throw createAbcError(
|
|
252
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
253
|
+
"Request timeout",
|
|
254
|
+
error
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
if (error.code && error.message) {
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
throw parseApiError(error);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Check if user is authenticated
|
|
265
|
+
*/
|
|
266
|
+
isAuthenticated() {
|
|
267
|
+
return !!this.accessToken && !this.isTokenExpired();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Logout (clear tokens)
|
|
271
|
+
*/
|
|
272
|
+
async logout() {
|
|
273
|
+
this.clearTokens();
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get secure service instance
|
|
277
|
+
*/
|
|
278
|
+
getSecureService() {
|
|
279
|
+
return this.secure;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
export {
|
|
284
|
+
BaseApiClient
|
|
285
|
+
};
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
loadAuthState,
|
|
4
|
+
saveAuthState
|
|
5
|
+
} from "./chunk-W23N7VC4.js";
|
|
6
|
+
|
|
7
|
+
// src/wallets/walletConnectors/abcWallet/abcBitcoinConnector.ts
|
|
8
|
+
var AbcBitcoinConnector = class {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.wallet = null;
|
|
11
|
+
this.connected = false;
|
|
12
|
+
// Event listeners
|
|
13
|
+
this.connectListeners = /* @__PURE__ */ new Set();
|
|
14
|
+
this.disconnectListeners = /* @__PURE__ */ new Set();
|
|
15
|
+
this.accountsChangedListeners = /* @__PURE__ */ new Set();
|
|
16
|
+
this.networkChangedListeners = /* @__PURE__ */ new Set();
|
|
17
|
+
this.client = config.client;
|
|
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
|
+
this.provider.setRequestPinCallback(async () => {
|
|
69
|
+
if (!authState.pin) {
|
|
70
|
+
console.error("[BitcoinConnector] \u274C PIN not available in authState");
|
|
71
|
+
throw new Error("PIN not available");
|
|
72
|
+
}
|
|
73
|
+
return authState.pin;
|
|
74
|
+
});
|
|
75
|
+
console.log("[BitcoinConnector] \u2705 Wallet and PIN callback set:", {
|
|
76
|
+
address: authState.bitcoinWallet.address,
|
|
77
|
+
publicKey: authState.bitcoinWallet.publicKey,
|
|
78
|
+
addressType: authState.bitcoinWallet.addressType,
|
|
79
|
+
network: authState.bitcoinWallet.network,
|
|
80
|
+
hasPIN: !!authState.pin
|
|
81
|
+
});
|
|
82
|
+
this.connected = true;
|
|
83
|
+
return {
|
|
84
|
+
address: authState.bitcoinWallet.address,
|
|
85
|
+
publicKey: authState.bitcoinWallet.publicKey,
|
|
86
|
+
network: authState.bitcoinWallet.network
|
|
87
|
+
};
|
|
88
|
+
} catch (error) {
|
|
89
|
+
if (error.message === "BITCOIN_LOGIN_REQUIRED") {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
console.error("[BitcoinConnector] \u274C connect error:", error);
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Disconnect Bitcoin wallet
|
|
98
|
+
*/
|
|
99
|
+
async disconnect() {
|
|
100
|
+
try {
|
|
101
|
+
this.provider.clearWallet();
|
|
102
|
+
this.wallet = null;
|
|
103
|
+
this.connected = false;
|
|
104
|
+
console.log("[BitcoinConnector] \u2705 Wallet disconnected");
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error("[BitcoinConnector] \u274C disconnect error:", error);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get Bitcoin address
|
|
112
|
+
*/
|
|
113
|
+
async getAddress() {
|
|
114
|
+
return this.provider.getAddress();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get compressed public key (33 bytes)
|
|
118
|
+
*/
|
|
119
|
+
async getPublicKey() {
|
|
120
|
+
return this.provider.getPublicKey();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get address type (bech32, p2pkh, etc.)
|
|
124
|
+
*/
|
|
125
|
+
getAddressType() {
|
|
126
|
+
return this.provider.getAddressType();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get UTXOs
|
|
130
|
+
*/
|
|
131
|
+
async getUtxos(forceRefresh = false) {
|
|
132
|
+
return this.provider.getUtxos(forceRefresh);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get balance (in satoshis)
|
|
136
|
+
*/
|
|
137
|
+
async getBalance(forceRefresh = false) {
|
|
138
|
+
return this.provider.getBalance(forceRefresh);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Estimate transaction fee
|
|
142
|
+
*/
|
|
143
|
+
async estimateFee(targetBlocks = 6) {
|
|
144
|
+
return this.provider.estimateFee(targetBlocks);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Sign Bitcoin message (BIP-322)
|
|
148
|
+
* NOTE: Currently not supported - Bitcoin uses v2 API which doesn't have message signing endpoint
|
|
149
|
+
*/
|
|
150
|
+
async signMessage(message) {
|
|
151
|
+
return this.provider.signMessage(message);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Send Bitcoin transaction (high-level API)
|
|
155
|
+
* Creates, signs, and broadcasts transaction
|
|
156
|
+
*/
|
|
157
|
+
async sendTransaction(params) {
|
|
158
|
+
return this.provider.sendTransaction(params);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Broadcast signed transaction to network (low-level API)
|
|
162
|
+
*/
|
|
163
|
+
async broadcastTransaction(rawTransaction, psbt) {
|
|
164
|
+
return this.provider.broadcastTransaction(rawTransaction, psbt);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if authorized (has valid session)
|
|
168
|
+
*/
|
|
169
|
+
async isAuthorized() {
|
|
170
|
+
try {
|
|
171
|
+
const authState = loadAuthState();
|
|
172
|
+
if (!authState || !authState.isAuthenticated) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
if (!authState.bitcoinWallet) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
return !this.client.auth.isTokenExpired();
|
|
179
|
+
} catch {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check if connected
|
|
185
|
+
*/
|
|
186
|
+
isConnected() {
|
|
187
|
+
return this.connected && this.provider.isConnected();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get current wallet
|
|
191
|
+
*/
|
|
192
|
+
getWallet() {
|
|
193
|
+
return this.wallet;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get provider
|
|
197
|
+
*/
|
|
198
|
+
getProvider() {
|
|
199
|
+
return this.provider;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get wallet info
|
|
203
|
+
*/
|
|
204
|
+
getWalletInfo() {
|
|
205
|
+
return this.provider.getWalletInfo();
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Switch network
|
|
209
|
+
*/
|
|
210
|
+
async switchNetwork(network) {
|
|
211
|
+
this.provider.setNetwork(network);
|
|
212
|
+
const authState = loadAuthState();
|
|
213
|
+
if (authState?.bitcoinWallet) {
|
|
214
|
+
authState.bitcoinWallet.network = network === "mainnet" ? "bitcoin" : "bitcoin_testnet";
|
|
215
|
+
saveAuthState(authState);
|
|
216
|
+
}
|
|
217
|
+
console.log("[BitcoinConnector] \u{1F504} Network switched to:", network);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get current network
|
|
221
|
+
*/
|
|
222
|
+
getNetwork() {
|
|
223
|
+
return this.provider.getNetwork().type;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Refresh UTXO cache
|
|
227
|
+
*/
|
|
228
|
+
async refreshUtxos() {
|
|
229
|
+
return this.provider.refreshUtxos();
|
|
230
|
+
}
|
|
231
|
+
on(event, listener) {
|
|
232
|
+
switch (event) {
|
|
233
|
+
case "connect":
|
|
234
|
+
this.connectListeners.add(listener);
|
|
235
|
+
break;
|
|
236
|
+
case "disconnect":
|
|
237
|
+
this.disconnectListeners.add(listener);
|
|
238
|
+
break;
|
|
239
|
+
case "accountsChanged":
|
|
240
|
+
this.accountsChangedListeners.add(listener);
|
|
241
|
+
break;
|
|
242
|
+
case "networkChanged":
|
|
243
|
+
this.networkChangedListeners.add(listener);
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
off(event, listener) {
|
|
248
|
+
switch (event) {
|
|
249
|
+
case "connect":
|
|
250
|
+
this.connectListeners.delete(listener);
|
|
251
|
+
break;
|
|
252
|
+
case "disconnect":
|
|
253
|
+
this.disconnectListeners.delete(listener);
|
|
254
|
+
break;
|
|
255
|
+
case "accountsChanged":
|
|
256
|
+
this.accountsChangedListeners.delete(listener);
|
|
257
|
+
break;
|
|
258
|
+
case "networkChanged":
|
|
259
|
+
this.networkChangedListeners.delete(listener);
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Remove all listeners
|
|
265
|
+
*/
|
|
266
|
+
removeAllListeners() {
|
|
267
|
+
this.connectListeners.clear();
|
|
268
|
+
this.disconnectListeners.clear();
|
|
269
|
+
this.accountsChangedListeners.clear();
|
|
270
|
+
this.networkChangedListeners.clear();
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
function createAbcBitcoinConnector(config) {
|
|
274
|
+
return new AbcBitcoinConnector(config);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export {
|
|
278
|
+
AbcBitcoinConnector,
|
|
279
|
+
createAbcBitcoinConnector
|
|
280
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
WalletApi
|
|
4
|
+
} from "./chunk-ESRU5KCF.js";
|
|
5
|
+
import {
|
|
6
|
+
AuthApi
|
|
7
|
+
} from "./chunk-RLBGBBIO.js";
|
|
8
|
+
import {
|
|
9
|
+
BitcoinApi
|
|
10
|
+
} from "./chunk-IA4EQFSS.js";
|
|
11
|
+
import {
|
|
12
|
+
SigningApi
|
|
13
|
+
} from "./chunk-TUUNSVKZ.js";
|
|
14
|
+
import {
|
|
15
|
+
SolanaApi
|
|
16
|
+
} from "./chunk-2J66VMY5.js";
|
|
17
|
+
import {
|
|
18
|
+
TransactionApi
|
|
19
|
+
} from "./chunk-HDYBRMYW.js";
|
|
20
|
+
|
|
21
|
+
// src/wallets/walletConnectors/abcWallet/api/index.ts
|
|
22
|
+
var AbcWaasApiClient = class {
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.auth = new AuthApi(config);
|
|
25
|
+
this.wallet = new WalletApi(config);
|
|
26
|
+
this.transaction = new TransactionApi(config);
|
|
27
|
+
this.signing = new SigningApi(config);
|
|
28
|
+
this.solana = new SolanaApi(config);
|
|
29
|
+
this.bitcoin = new BitcoinApi(config);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if user is authenticated
|
|
33
|
+
*/
|
|
34
|
+
isAuthenticated() {
|
|
35
|
+
return this.auth.isAuthenticated();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if access token is expired
|
|
39
|
+
*/
|
|
40
|
+
isTokenExpired() {
|
|
41
|
+
return this.auth.isTokenExpired();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get current access token
|
|
45
|
+
*/
|
|
46
|
+
getAccessToken() {
|
|
47
|
+
return this.auth.getAccessToken();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Logout (clear tokens)
|
|
51
|
+
*/
|
|
52
|
+
async logout() {
|
|
53
|
+
await this.auth.logout();
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
function createAbcWaasApiClient(config) {
|
|
57
|
+
return new AbcWaasApiClient(config);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
AbcWaasApiClient,
|
|
62
|
+
createAbcWaasApiClient
|
|
63
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
SolanaApi
|
|
4
|
+
} from "./chunk-DMRM7XAS.js";
|
|
5
|
+
import {
|
|
6
|
+
AuthApi
|
|
7
|
+
} from "./chunk-W7R3JGSC.js";
|
|
8
|
+
import {
|
|
9
|
+
SigningApi
|
|
10
|
+
} from "./chunk-4UGXLYKP.js";
|
|
11
|
+
import {
|
|
12
|
+
BitcoinApi
|
|
13
|
+
} from "./chunk-SPR4W5TG.js";
|
|
14
|
+
import {
|
|
15
|
+
TransactionApi
|
|
16
|
+
} from "./chunk-KD2OAMDA.js";
|
|
17
|
+
import {
|
|
18
|
+
WalletApi
|
|
19
|
+
} from "./chunk-JBRW4UTW.js";
|
|
20
|
+
|
|
21
|
+
// src/wallets/walletConnectors/abcWallet/api/index.ts
|
|
22
|
+
var AbcWaasApiClient = class {
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.auth = new AuthApi(config);
|
|
25
|
+
this.wallet = new WalletApi(config);
|
|
26
|
+
this.transaction = new TransactionApi(config);
|
|
27
|
+
this.signing = new SigningApi(config);
|
|
28
|
+
this.solana = new SolanaApi(config);
|
|
29
|
+
this.bitcoin = new BitcoinApi(config);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if user is authenticated
|
|
33
|
+
*/
|
|
34
|
+
isAuthenticated() {
|
|
35
|
+
return this.auth.isAuthenticated();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if access token is expired
|
|
39
|
+
*/
|
|
40
|
+
isTokenExpired() {
|
|
41
|
+
return this.auth.isTokenExpired();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get current access token
|
|
45
|
+
*/
|
|
46
|
+
getAccessToken() {
|
|
47
|
+
return this.auth.getAccessToken();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Logout (clear tokens)
|
|
51
|
+
*/
|
|
52
|
+
async logout() {
|
|
53
|
+
await this.auth.logout();
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
function createAbcWaasApiClient(config) {
|
|
57
|
+
return new AbcWaasApiClient(config);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
AbcWaasApiClient,
|
|
62
|
+
createAbcWaasApiClient
|
|
63
|
+
};
|