@talken/talkenkit 2.4.15 → 2.4.17
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/abcWallet-54KUGWUZ.js +192 -0
- package/dist/abcWallet-KZHOADBJ.js +192 -0
- package/dist/abcWallet-NZAVB4PI.js +190 -0
- package/dist/chunk-5X3ROW3U.js +8777 -0
- package/dist/chunk-DKA3NVFM.js +8497 -0
- package/dist/chunk-QNZ5HSPM.js +8339 -0
- package/dist/chunk-VE53ZNZV.js +331 -0
- package/dist/components/ConfirmationModal/ApproveSection.css.d.ts +16 -0
- package/dist/components/ConfirmationModal/ApproveSection.d.ts +8 -0
- package/dist/components/ConfirmationModal/NFTPlaceholder.css.d.ts +7 -0
- package/dist/components/ConfirmationModal/NFTPlaceholder.d.ts +8 -0
- package/dist/components/ConfirmationModal/NftApprovalSection.css.d.ts +10 -0
- package/dist/components/ConfirmationModal/NftApprovalSection.d.ts +7 -0
- package/dist/components/ConfirmationModal/SignConfirmationModal.css.d.ts +35 -0
- package/dist/components/ConfirmationModal/SignConfirmationModal.d.ts +17 -0
- package/dist/components/ConfirmationModal/SwapSection.css.d.ts +17 -0
- package/dist/components/ConfirmationModal/SwapSection.d.ts +7 -0
- package/dist/components/ConfirmationModal/TransactionConfirmationModal.css.d.ts +49 -0
- package/dist/components/ConfirmationModal/TransactionConfirmationModal.d.ts +12 -0
- package/dist/components/ConfirmationModal/TransferSection.css.d.ts +17 -0
- package/dist/components/ConfirmationModal/TransferSection.d.ts +7 -0
- package/dist/components/ConfirmationModal/commonStyles.css.d.ts +37 -0
- package/dist/components/ConfirmationModal/constants.d.ts +16 -0
- package/dist/components/ConfirmationModal/index.d.ts +9 -0
- package/dist/components/ConfirmationModal/modalTheme.css.d.ts +20 -0
- package/dist/components/ConfirmationModal/transactionUIRegistry.d.ts +134 -0
- package/dist/components/ConfirmationModal/utils.d.ts +37 -0
- package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.css.d.ts +1 -0
- package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.d.ts +1 -1
- package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasAuth.d.ts +2 -25
- package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasSocial.d.ts +1 -47
- package/dist/components/ConnectOptions/PinAuth/hooks/useWalletGeneration.d.ts +4 -21
- package/dist/components/GasFeeModal/GasFeeEditModal.css.d.ts +32 -0
- package/dist/components/GasFeeModal/GasFeeEditModal.d.ts +21 -0
- package/dist/components/GasFeeModal/index.d.ts +3 -0
- package/dist/components/GasFeeModal/modalTheme.css.d.ts +19 -0
- package/dist/components/Icons/Close2.d.ts +7 -0
- package/dist/components/Icons/Copy2.d.ts +4 -0
- package/dist/components/Icons/Dropdown2.d.ts +4 -0
- package/dist/components/Icons/Edit.d.ts +4 -0
- package/dist/components/Icons/InfoCircle.d.ts +4 -0
- package/dist/components/Icons/Kakao.d.ts +2 -0
- package/dist/components/Icons/Minus.d.ts +4 -0
- package/dist/components/Icons/Plus.d.ts +4 -0
- package/dist/components/Icons/SettingsGear.d.ts +4 -0
- package/dist/components/Icons/SpeedHigh.d.ts +4 -0
- package/dist/components/Icons/SpeedLow.d.ts +4 -0
- package/dist/components/Icons/SpeedMedium.d.ts +4 -0
- package/dist/components/RainbowKitProvider/InternalPinProvider.d.ts +7 -9
- package/dist/components/RainbowKitProvider/RainbowKitConfigProvider.d.ts +1 -6
- package/dist/components/RainbowKitProvider/RainbowKitProvider.d.ts +7 -7
- package/dist/components/Toast/Toast.css.d.ts +2 -0
- package/dist/components/Toast/Toast.d.ts +6 -0
- package/dist/components/Toast/index.d.ts +4 -0
- package/dist/components/Toast/useToast.d.ts +10 -0
- package/dist/config/networks.d.ts +10 -0
- package/dist/css/sprinkles.css.d.ts +1 -1
- package/dist/hooks/useSolanaWallet.d.ts +5 -23
- package/dist/hooks/useTronWallet.d.ts +63 -0
- package/dist/index.css +1903 -236
- package/dist/index.d.ts +8 -3
- package/dist/index.js +7557 -3592
- package/dist/klipWallet-RD5Y4UEK.js +8 -0
- package/dist/providers/SignConfirmationProvider/SignConfirmationProvider.d.ts +22 -0
- package/dist/providers/SignConfirmationProvider/index.d.ts +6 -0
- package/dist/providers/SignConfirmationProvider/requestParsers.d.ts +24 -0
- package/dist/providers/SignConfirmationProvider/types.d.ts +91 -0
- package/dist/providers/SignConfirmationProvider/useApiClient.d.ts +15 -0
- package/dist/providers/SignConfirmationProvider/useTransactionResolver.d.ts +18 -0
- package/dist/secure-AEBFSVWE.js +8 -0
- package/dist/services/AbcAgenticWalletService.d.ts +111 -0
- package/dist/services/AbcAuthService.d.ts +26 -20
- package/dist/types/index.d.ts +3 -0
- package/dist/types/token.d.ts +82 -0
- package/dist/utils/abi/abiDecoder.d.ts +144 -0
- package/dist/utils/apiClientFactory.d.ts +21 -0
- package/dist/utils/blockies.d.ts +12 -0
- package/dist/utils/tokenMapper.d.ts +10 -0
- package/dist/wallets/walletConnectors/abcWallet/abcApi.d.ts +4 -1
- package/dist/wallets/walletConnectors/abcWallet/abcApi.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +6 -8
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +9 -9
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +17 -6
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +5 -4
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +11 -34
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +3 -11
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +17 -80
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +112 -0
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +11 -0
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.d.ts +2 -0
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +11 -10
- package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.d.ts +9 -11
- package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +6 -6
- package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.d.ts +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +6 -6
- package/dist/wallets/walletConnectors/abcWallet/api/GasApi.d.ts +45 -0
- package/dist/wallets/walletConnectors/abcWallet/api/GasApi.js +12 -0
- package/dist/wallets/walletConnectors/abcWallet/api/SigningApi.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +9 -1
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +333 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +11 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiSingleton.d.ts +18 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiSingleton.js +14 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.d.ts +2 -2
- package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/TronApi.d.ts +102 -0
- package/dist/wallets/walletConnectors/abcWallet/api/TronApi.js +12 -0
- package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.d.ts +4 -2
- package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.d.ts +60 -0
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +12 -0
- package/dist/wallets/walletConnectors/abcWallet/api/index.d.ts +24 -0
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +35 -17
- package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +39 -1
- package/dist/wallets/walletConnectors/abcWallet/constants.js +5 -1
- package/dist/wallets/walletConnectors/abcWallet/googleAuth.d.ts +6 -0
- package/dist/wallets/walletConnectors/abcWallet/googleAuth.js +37 -1
- package/dist/wallets/walletConnectors/abcWallet/index.d.ts +5 -3
- package/dist/wallets/walletConnectors/abcWallet/index.js +44 -31
- package/dist/wallets/walletConnectors/abcWallet/kakaoAuth.d.ts +27 -0
- package/dist/wallets/walletConnectors/abcWallet/kakaoAuth.js +290 -0
- package/dist/wallets/walletConnectors/abcWallet/networkConfig.d.ts +39 -3
- package/dist/wallets/walletConnectors/abcWallet/networkConfig.js +11 -3
- package/dist/wallets/walletConnectors/abcWallet/secure.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +369 -7
- package/dist/wallets/walletConnectors/abcWallet/types.js +5 -3
- package/dist/wallets/walletConnectors/abcWallet/utils.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.d.ts +10 -19
- package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
- package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
- package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/chunk-25V3FW3O.js +282 -0
- package/dist/wallets/walletConnectors/chunk-27346T3J.js +134 -0
- package/dist/wallets/walletConnectors/chunk-5CNLMOB2.js +75 -0
- package/dist/wallets/walletConnectors/chunk-5K45TCAM.js +333 -0
- package/dist/wallets/walletConnectors/chunk-5VDSMZC4.js +286 -0
- package/dist/wallets/walletConnectors/chunk-5W7RBMPH.js +351 -0
- package/dist/wallets/walletConnectors/chunk-5XORKEWE.js +326 -0
- package/dist/wallets/walletConnectors/chunk-63WBO52A.js +77 -0
- package/dist/wallets/walletConnectors/chunk-7IRF225N.js +75 -0
- package/dist/wallets/walletConnectors/chunk-7QHCSJDN.js +726 -0
- package/dist/wallets/walletConnectors/chunk-A27H6PEU.js +739 -0
- package/dist/wallets/walletConnectors/chunk-A4WR3CFN.js +130 -0
- package/dist/wallets/walletConnectors/chunk-A6FUNQWF.js +572 -0
- package/dist/wallets/walletConnectors/chunk-AF4OCS7N.js +46 -0
- package/dist/wallets/walletConnectors/chunk-AFWBXEEC.js +66 -0
- package/dist/wallets/walletConnectors/chunk-AUGP2LJR.js +182 -0
- package/dist/wallets/walletConnectors/chunk-AWLDVQXC.js +317 -0
- package/dist/wallets/walletConnectors/chunk-BLEKTKBN.js +479 -0
- package/dist/wallets/walletConnectors/chunk-BVL6G5HI.js +1757 -0
- package/dist/wallets/walletConnectors/chunk-CMTGEHDI.js +485 -0
- package/dist/wallets/walletConnectors/chunk-D5EFTEOM.js +56 -0
- package/dist/wallets/walletConnectors/chunk-DM5NLSWD.js +346 -0
- package/dist/wallets/walletConnectors/chunk-EBGI4D2T.js +69 -0
- package/dist/wallets/walletConnectors/chunk-EEH2HMFG.js +47 -0
- package/dist/wallets/walletConnectors/chunk-F5JWDBKK.js +47 -0
- package/dist/wallets/walletConnectors/chunk-FN67MIIH.js +75 -0
- package/dist/wallets/walletConnectors/chunk-FWYVBX5F.js +75 -0
- package/dist/wallets/walletConnectors/chunk-GH6ZDY4K.js +58 -0
- package/dist/wallets/walletConnectors/chunk-GIJZMIBD.js +63 -0
- package/dist/wallets/walletConnectors/chunk-GO6OLTNF.js +479 -0
- package/dist/wallets/walletConnectors/chunk-HKXBK3NY.js +75 -0
- package/dist/wallets/walletConnectors/chunk-HMD2WWFQ.js +75 -0
- package/dist/wallets/walletConnectors/chunk-HO5Z2CTL.js +280 -0
- package/dist/wallets/walletConnectors/chunk-I3GFVK5O.js +151 -0
- package/dist/wallets/walletConnectors/chunk-IUHZ5ZCE.js +121 -0
- package/dist/wallets/walletConnectors/chunk-JODNZWWG.js +330 -0
- package/dist/wallets/walletConnectors/chunk-JTST3KMW.js +75 -0
- package/dist/wallets/walletConnectors/chunk-KH2L3ONV.js +1599 -0
- package/dist/wallets/walletConnectors/chunk-LHV22375.js +182 -0
- package/dist/wallets/walletConnectors/chunk-LZZE462U.js +315 -0
- package/dist/wallets/walletConnectors/chunk-MGCRUAHX.js +276 -0
- package/dist/wallets/walletConnectors/chunk-MURSKRMJ.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NG7PSAPX.js +115 -0
- package/dist/wallets/walletConnectors/chunk-NHP6D6AH.js +204 -0
- package/dist/wallets/walletConnectors/chunk-O4AU63LK.js +181 -0
- package/dist/wallets/walletConnectors/chunk-OBS74J5N.js +221 -0
- package/dist/wallets/walletConnectors/chunk-ON4U54WO.js +115 -0
- package/dist/wallets/walletConnectors/chunk-PPYBE5TV.js +276 -0
- package/dist/wallets/walletConnectors/chunk-PWWSAM4G.js +309 -0
- package/dist/wallets/walletConnectors/chunk-QB5GDLRU.js +330 -0
- package/dist/wallets/walletConnectors/chunk-QMLG7MAP.js +107 -0
- package/dist/wallets/walletConnectors/chunk-RGIB7FFH.js +47 -0
- package/dist/wallets/walletConnectors/chunk-SHJBMDP4.js +278 -0
- package/dist/wallets/walletConnectors/chunk-SOBJYYIX.js +484 -0
- package/dist/wallets/walletConnectors/chunk-T66U3ADD.js +58 -0
- package/dist/wallets/walletConnectors/chunk-THCKLFSJ.js +75 -0
- package/dist/wallets/walletConnectors/chunk-TS466TDR.js +286 -0
- package/dist/wallets/walletConnectors/chunk-UJGFYQEV.js +459 -0
- package/dist/wallets/walletConnectors/chunk-UXNEBBUV.js +224 -0
- package/dist/wallets/walletConnectors/chunk-VRCNFVPM.js +276 -0
- package/dist/wallets/walletConnectors/chunk-WODNUC65.js +333 -0
- package/dist/wallets/walletConnectors/chunk-X6A2FSHK.js +484 -0
- package/dist/wallets/walletConnectors/chunk-XVRNEES5.js +1541 -0
- package/dist/wallets/walletConnectors/chunk-XWVM2Y5A.js +306 -0
- package/dist/wallets/walletConnectors/chunk-XXG7ABSJ.js +328 -0
- package/dist/wallets/walletConnectors/chunk-YJH4BHSB.js +254 -0
- package/dist/wallets/walletConnectors/chunk-YRDNIP2H.js +90 -0
- package/dist/wallets/walletConnectors/chunk-YTPAWPCA.js +156 -0
- package/dist/wallets/walletConnectors/chunk-ZCSHD7UG.js +562 -0
- package/dist/wallets/walletConnectors/chunk-ZZCZ3RJU.js +272 -0
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
- package/dist/wallets/walletConnectors/index.js +62 -61
- package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
- package/dist/wallets/walletConnectors/klipWallet/klipWallet.d.ts +3 -0
- package/dist/wallets/walletConnectors/klipWallet/klipWallet.js +8 -0
- package/dist/wallets/walletConnectors/klipWallet-PPTYYB5G.js +7 -0
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
- package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
- package/package.json +2 -1
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
secure_default
|
|
4
|
+
} from "./chunk-ON4U54WO.js";
|
|
5
|
+
import {
|
|
6
|
+
calculateExpiryTimestamp,
|
|
7
|
+
createAbcError,
|
|
8
|
+
isTokenExpired,
|
|
9
|
+
loadFromStorage,
|
|
10
|
+
parseApiError,
|
|
11
|
+
removeFromStorage,
|
|
12
|
+
saveToStorage
|
|
13
|
+
} from "./chunk-BLEKTKBN.js";
|
|
14
|
+
import {
|
|
15
|
+
ABC_ENDPOINTS,
|
|
16
|
+
DEFAULT_HEADERS,
|
|
17
|
+
REQUEST_TIMEOUT
|
|
18
|
+
} from "./chunk-OBS74J5N.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
|
+
* Set tokens in client instance (useful when restoring from storage or state)
|
|
43
|
+
* Call this before making API requests if tokens are managed externally
|
|
44
|
+
*/
|
|
45
|
+
setTokens(accessToken, refreshToken, expiresAt) {
|
|
46
|
+
this.accessToken = accessToken;
|
|
47
|
+
this.refreshToken = refreshToken;
|
|
48
|
+
this.expiresAt = expiresAt;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Save tokens to storage
|
|
52
|
+
*/
|
|
53
|
+
saveTokens(accessToken, refreshToken, expiresIn) {
|
|
54
|
+
this.accessToken = accessToken;
|
|
55
|
+
this.refreshToken = refreshToken;
|
|
56
|
+
this.expiresAt = calculateExpiryTimestamp(expiresIn);
|
|
57
|
+
saveToStorage("access_token" /* ACCESS_TOKEN */, accessToken);
|
|
58
|
+
saveToStorage("refresh_token" /* REFRESH_TOKEN */, refreshToken);
|
|
59
|
+
saveToStorage("expires_at" /* EXPIRES_AT */, this.expiresAt);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Clear tokens
|
|
63
|
+
*/
|
|
64
|
+
clearTokens() {
|
|
65
|
+
this.accessToken = null;
|
|
66
|
+
this.refreshToken = null;
|
|
67
|
+
this.expiresAt = null;
|
|
68
|
+
removeFromStorage("access_token" /* ACCESS_TOKEN */);
|
|
69
|
+
removeFromStorage("refresh_token" /* REFRESH_TOKEN */);
|
|
70
|
+
removeFromStorage("expires_at" /* EXPIRES_AT */);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if access token is expired
|
|
74
|
+
*/
|
|
75
|
+
isTokenExpired() {
|
|
76
|
+
return isTokenExpired(this.expiresAt);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get current access token
|
|
80
|
+
*/
|
|
81
|
+
getAccessToken() {
|
|
82
|
+
return this.accessToken;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Set access token manually
|
|
86
|
+
*/
|
|
87
|
+
setAccessToken(token) {
|
|
88
|
+
this.accessToken = token;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get base URL
|
|
92
|
+
*/
|
|
93
|
+
getBaseURL() {
|
|
94
|
+
return this.baseURL;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get configuration
|
|
98
|
+
*/
|
|
99
|
+
getConfig() {
|
|
100
|
+
return this.config;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Refresh access token
|
|
104
|
+
*/
|
|
105
|
+
async refreshAccessToken() {
|
|
106
|
+
if (this.isRefreshing) {
|
|
107
|
+
if (this.refreshPromise) {
|
|
108
|
+
await this.refreshPromise;
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (!this.refreshToken) {
|
|
113
|
+
throw createAbcError(
|
|
114
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
115
|
+
"No refresh token available"
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
this.isRefreshing = true;
|
|
119
|
+
this.refreshPromise = (async () => {
|
|
120
|
+
try {
|
|
121
|
+
const isIframe = typeof window !== "undefined" && window.self !== window.top;
|
|
122
|
+
const talkenApiUrl = process.env.NEXT_PUBLIC_API_SERVER || "https://dev.walletapi.talken.io";
|
|
123
|
+
const isProd = this.config.environment === "production";
|
|
124
|
+
const headers = { ...DEFAULT_HEADERS };
|
|
125
|
+
if (isProd) {
|
|
126
|
+
headers["User-Agent"] = "Android";
|
|
127
|
+
}
|
|
128
|
+
const response = await fetch(
|
|
129
|
+
`${talkenApiUrl}${ABC_ENDPOINTS.REFRESH_TOKEN}`,
|
|
130
|
+
{
|
|
131
|
+
method: "POST",
|
|
132
|
+
headers,
|
|
133
|
+
credentials: "include",
|
|
134
|
+
body: new URLSearchParams({
|
|
135
|
+
refresh_token: this.refreshToken || "",
|
|
136
|
+
isIframe: String(isIframe)
|
|
137
|
+
}).toString()
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
const text = await response.text();
|
|
141
|
+
const data = text ? JSON.parse(text) : {};
|
|
142
|
+
if (response.ok && data.access_token) {
|
|
143
|
+
const expiresIn = data.expire_in || 3600;
|
|
144
|
+
this.saveTokens(
|
|
145
|
+
data.access_token,
|
|
146
|
+
data.refresh_token || this.refreshToken,
|
|
147
|
+
expiresIn
|
|
148
|
+
);
|
|
149
|
+
} else {
|
|
150
|
+
throw createAbcError(
|
|
151
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
152
|
+
"Failed to refresh token"
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
} finally {
|
|
156
|
+
this.isRefreshing = false;
|
|
157
|
+
this.refreshPromise = null;
|
|
158
|
+
}
|
|
159
|
+
})();
|
|
160
|
+
await this.refreshPromise;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Make HTTP request with automatic token refresh
|
|
164
|
+
*/
|
|
165
|
+
async request(endpoint, options = {}) {
|
|
166
|
+
const {
|
|
167
|
+
method = "GET",
|
|
168
|
+
body,
|
|
169
|
+
headers = {},
|
|
170
|
+
skipAuth = false,
|
|
171
|
+
isRetry = false,
|
|
172
|
+
contentType = "form"
|
|
173
|
+
// Default to form-encoded for backward compatibility
|
|
174
|
+
} = options;
|
|
175
|
+
if (!skipAuth && this.isTokenExpired() && this.refreshToken) {
|
|
176
|
+
await this.refreshAccessToken();
|
|
177
|
+
}
|
|
178
|
+
const url = `${this.baseURL}${endpoint}`;
|
|
179
|
+
const requestHeaders = {
|
|
180
|
+
...DEFAULT_HEADERS,
|
|
181
|
+
...headers
|
|
182
|
+
};
|
|
183
|
+
if (contentType === "json") {
|
|
184
|
+
requestHeaders["Content-Type"] = "application/json";
|
|
185
|
+
requestHeaders["Accept"] = "application/json";
|
|
186
|
+
}
|
|
187
|
+
if (this.config.environment === "production") {
|
|
188
|
+
requestHeaders["User-Agent"] = "Android";
|
|
189
|
+
}
|
|
190
|
+
if (!skipAuth && this.accessToken) {
|
|
191
|
+
requestHeaders.Authorization = `Bearer ${this.accessToken}`;
|
|
192
|
+
}
|
|
193
|
+
if (this.config.apiKey) {
|
|
194
|
+
requestHeaders["X-API-Key"] = this.config.apiKey;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const controller = new AbortController();
|
|
198
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
199
|
+
const requestBody = body ? contentType === "json" ? JSON.stringify(body) : new URLSearchParams(body).toString() : void 0;
|
|
200
|
+
const response = await fetch(url, {
|
|
201
|
+
method,
|
|
202
|
+
headers: requestHeaders,
|
|
203
|
+
body: requestBody,
|
|
204
|
+
signal: controller.signal
|
|
205
|
+
});
|
|
206
|
+
clearTimeout(timeoutId);
|
|
207
|
+
const text = await response.text();
|
|
208
|
+
let data;
|
|
209
|
+
if (text) {
|
|
210
|
+
try {
|
|
211
|
+
data = JSON.parse(text);
|
|
212
|
+
} catch (parseError) {
|
|
213
|
+
console.error("[BaseApiClient] \u274C JSON parse error:", {
|
|
214
|
+
url,
|
|
215
|
+
method,
|
|
216
|
+
status: response.status,
|
|
217
|
+
responseText: text.substring(0, 200)
|
|
218
|
+
});
|
|
219
|
+
throw createAbcError(
|
|
220
|
+
"UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
|
|
221
|
+
"Invalid JSON response from server",
|
|
222
|
+
{ text, parseError }
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
data = { status: "success" };
|
|
227
|
+
}
|
|
228
|
+
if (response.status === 401 && !skipAuth && this.refreshToken && !isRetry) {
|
|
229
|
+
try {
|
|
230
|
+
await this.refreshAccessToken();
|
|
231
|
+
return await this.request(endpoint, {
|
|
232
|
+
...options,
|
|
233
|
+
isRetry: true
|
|
234
|
+
});
|
|
235
|
+
} catch (refreshError) {
|
|
236
|
+
console.error("Token refresh failed:", refreshError);
|
|
237
|
+
throw parseApiError({
|
|
238
|
+
response: {
|
|
239
|
+
status: response.status,
|
|
240
|
+
data
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (!response.ok) {
|
|
246
|
+
if (response.status !== 409) {
|
|
247
|
+
console.error("[BaseApiClient] \u274C API Error:", {
|
|
248
|
+
url,
|
|
249
|
+
method,
|
|
250
|
+
status: response.status,
|
|
251
|
+
statusText: response.statusText,
|
|
252
|
+
data
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
throw parseApiError({
|
|
256
|
+
response: {
|
|
257
|
+
status: response.status,
|
|
258
|
+
data
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
return data;
|
|
263
|
+
} catch (error) {
|
|
264
|
+
if (error.response?.status !== 409 && error.code !== "WALLET_ALREADY_EXISTS") {
|
|
265
|
+
console.error("[BaseApiClient] \u274C Request failed:", {
|
|
266
|
+
url,
|
|
267
|
+
method,
|
|
268
|
+
error: error.message
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
if (error.name === "AbortError") {
|
|
272
|
+
throw createAbcError(
|
|
273
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
274
|
+
"Request timeout",
|
|
275
|
+
error
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
if (error.code && error.message) {
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
281
|
+
throw parseApiError(error);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Check if user is authenticated
|
|
286
|
+
*/
|
|
287
|
+
isAuthenticated() {
|
|
288
|
+
return !!this.accessToken && !this.isTokenExpired();
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Logout (clear tokens)
|
|
292
|
+
*/
|
|
293
|
+
async logout() {
|
|
294
|
+
this.clearTokens();
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get secure service instance
|
|
298
|
+
*/
|
|
299
|
+
getSecureService() {
|
|
300
|
+
return this.secure;
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
export {
|
|
305
|
+
BaseApiClient
|
|
306
|
+
};
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
BaseApiClient
|
|
4
|
+
} from "./chunk-25V3FW3O.js";
|
|
5
|
+
import {
|
|
6
|
+
createAbcError
|
|
7
|
+
} from "./chunk-GO6OLTNF.js";
|
|
8
|
+
|
|
9
|
+
// src/wallets/walletConnectors/abcWallet/api/TronApi.ts
|
|
10
|
+
import { getTalkenApiClient } from "@talken/talkenkit";
|
|
11
|
+
var TronApi = class extends BaseApiClient {
|
|
12
|
+
/**
|
|
13
|
+
* Get TRON address from TalkenApiClient unified addresses endpoint.
|
|
14
|
+
*
|
|
15
|
+
* @param _publicKey - Compressed public key (unused, TalkenApiClient resolves internally)
|
|
16
|
+
* @param _network - TRON network (unused, TalkenApiClient resolves internally)
|
|
17
|
+
* @returns TRON address (starts with 'T')
|
|
18
|
+
*/
|
|
19
|
+
async getTronAddress(_publicKey, _network) {
|
|
20
|
+
const api = getTalkenApiClient();
|
|
21
|
+
if (!api)
|
|
22
|
+
throw new Error("TalkenApiClient not initialized");
|
|
23
|
+
const addresses = await api.wallet.getAddresses();
|
|
24
|
+
if (!addresses.tron) {
|
|
25
|
+
throw createAbcError(
|
|
26
|
+
"WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
|
|
27
|
+
"TRON address not found in TalkenApiClient response"
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return addresses.tron;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create unsigned TRX native transfer transaction
|
|
34
|
+
*
|
|
35
|
+
* @param params - Transfer parameters
|
|
36
|
+
* @returns Unsigned transaction with raw_data and txID
|
|
37
|
+
*/
|
|
38
|
+
async transfer(params) {
|
|
39
|
+
const url = `${this.baseURL}/wapi/v2/tron/transfer`;
|
|
40
|
+
console.log("[TronApi] \u{1F4B8} Creating TRX transfer...", {
|
|
41
|
+
from: `${params.fromAddress.substring(0, 6)}...`,
|
|
42
|
+
to: `${params.toAddress.substring(0, 6)}...`,
|
|
43
|
+
amount: params.amount
|
|
44
|
+
});
|
|
45
|
+
const response = await fetch(url, {
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers: {
|
|
48
|
+
"Content-Type": "application/json",
|
|
49
|
+
...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
|
|
50
|
+
},
|
|
51
|
+
body: JSON.stringify({
|
|
52
|
+
network: params.network,
|
|
53
|
+
from_address: params.fromAddress,
|
|
54
|
+
to_address: params.toAddress,
|
|
55
|
+
amount: params.amount
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
const data = await response.json();
|
|
59
|
+
if (!response.ok || data.status && data.status !== "success") {
|
|
60
|
+
console.error("[TronApi] \u274C Transfer creation failed:", data);
|
|
61
|
+
throw createAbcError(
|
|
62
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
63
|
+
"Failed to create TRX transfer",
|
|
64
|
+
data
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
const result = data.result || data;
|
|
68
|
+
const txData = result.transaction || result;
|
|
69
|
+
const rawData = txData.raw_data;
|
|
70
|
+
const txID = txData.txID;
|
|
71
|
+
if (!rawData || !txID) {
|
|
72
|
+
throw createAbcError(
|
|
73
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
74
|
+
"Invalid TRX transfer response: missing raw_data or txID",
|
|
75
|
+
data
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
console.log(
|
|
79
|
+
"[TronApi] \u2705 TRX transfer created:",
|
|
80
|
+
`${txID.substring(0, 16)}...`
|
|
81
|
+
);
|
|
82
|
+
return { txID, rawData };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create unsigned TRC20 token transfer transaction
|
|
86
|
+
*
|
|
87
|
+
* @param params - TRC20 transfer parameters
|
|
88
|
+
* @returns Unsigned transaction with raw_data and txID
|
|
89
|
+
*/
|
|
90
|
+
async trc20Transfer(params) {
|
|
91
|
+
const url = `${this.baseURL}/wapi/v2/tron/trc20/transfer`;
|
|
92
|
+
console.log("[TronApi] \u{1F4B8} Creating TRC20 transfer...", {
|
|
93
|
+
from: `${params.fromAddress.substring(0, 6)}...`,
|
|
94
|
+
to: `${params.toAddress.substring(0, 6)}...`,
|
|
95
|
+
contract: `${params.contractAddress.substring(0, 6)}...`
|
|
96
|
+
});
|
|
97
|
+
const response = await fetch(url, {
|
|
98
|
+
method: "POST",
|
|
99
|
+
headers: {
|
|
100
|
+
"Content-Type": "application/json",
|
|
101
|
+
...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
|
|
102
|
+
},
|
|
103
|
+
body: JSON.stringify({
|
|
104
|
+
network: params.network,
|
|
105
|
+
from_address: params.fromAddress,
|
|
106
|
+
to_address: params.toAddress,
|
|
107
|
+
amount: params.amount,
|
|
108
|
+
contract_address: params.contractAddress,
|
|
109
|
+
fee_limit: params.feeLimit || 1e8
|
|
110
|
+
})
|
|
111
|
+
});
|
|
112
|
+
const data = await response.json();
|
|
113
|
+
if (!response.ok || data.status && data.status !== "success") {
|
|
114
|
+
console.error("[TronApi] \u274C TRC20 transfer creation failed:", data);
|
|
115
|
+
throw createAbcError(
|
|
116
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
117
|
+
"Failed to create TRC20 transfer",
|
|
118
|
+
data
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const result = data.result || data;
|
|
122
|
+
const txData = result.transaction || result;
|
|
123
|
+
const rawData = txData.raw_data;
|
|
124
|
+
const txID = txData.txID;
|
|
125
|
+
if (!rawData || !txID) {
|
|
126
|
+
throw createAbcError(
|
|
127
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
128
|
+
"Invalid TRC20 transfer response: missing raw_data or txID",
|
|
129
|
+
data
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
console.log(
|
|
133
|
+
"[TronApi] \u2705 TRC20 transfer created:",
|
|
134
|
+
`${txID.substring(0, 16)}...`
|
|
135
|
+
);
|
|
136
|
+
return { txID, rawData };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Sign transaction hash using Secure Channel (V2 sign/hash API)
|
|
140
|
+
* Same signing flow as Bitcoin - uses EVM wallet credentials via Secure Channel encryption
|
|
141
|
+
*
|
|
142
|
+
* @param hash - Transaction hash (txID) to sign
|
|
143
|
+
* @param wallet - EVM wallet credentials (uid, sid, wid, pvencstr, encryptDevicePassword)
|
|
144
|
+
* @param pinHash - Hashed PIN (SHA-256)
|
|
145
|
+
* @param secureService - SecureService instance for ECDH encryption
|
|
146
|
+
* @returns Array of signature strings (r + s without 0x prefix)
|
|
147
|
+
*/
|
|
148
|
+
async signHash(hash, wallet, pinHash, secureService) {
|
|
149
|
+
console.log(
|
|
150
|
+
"[TronApi] \u{1F510} Signing hash:",
|
|
151
|
+
`${hash.substring(0, 20)}...`
|
|
152
|
+
);
|
|
153
|
+
if (!wallet.wid || !wallet.pvencstr) {
|
|
154
|
+
console.error("[TronApi] \u274C Missing signing fields:", {
|
|
155
|
+
hasWid: !!wallet.wid,
|
|
156
|
+
hasPvencstr: !!wallet.pvencstr,
|
|
157
|
+
hasSid: !!wallet.sid,
|
|
158
|
+
hasUid: !!wallet.uid
|
|
159
|
+
});
|
|
160
|
+
throw createAbcError(
|
|
161
|
+
"WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
|
|
162
|
+
"Wallet missing required fields for TRON signing (wid, pvencstr)",
|
|
163
|
+
{ hasWid: !!wallet.wid, hasPvencstr: !!wallet.pvencstr }
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
const encryptDevicePassword = await secureService.getEncryptPlain(
|
|
167
|
+
wallet.encryptDevicePassword || pinHash
|
|
168
|
+
);
|
|
169
|
+
const pvencstr = await secureService.getEncryptPlain(wallet.pvencstr);
|
|
170
|
+
const wid = await secureService.getEncryptPlain(wallet.wid);
|
|
171
|
+
const secureChannelId = await secureService.getSecureChannelId();
|
|
172
|
+
const params = new URLSearchParams({
|
|
173
|
+
uid: wallet.uid,
|
|
174
|
+
sid: wallet.sid || "",
|
|
175
|
+
hash,
|
|
176
|
+
pvencstr,
|
|
177
|
+
wid,
|
|
178
|
+
encryptDevicePassword,
|
|
179
|
+
network: "tron"
|
|
180
|
+
});
|
|
181
|
+
const url = `${this.baseURL}/wapi/v2/sign/hash`;
|
|
182
|
+
const response = await fetch(url, {
|
|
183
|
+
method: "POST",
|
|
184
|
+
headers: {
|
|
185
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
186
|
+
"Secure-Channel": secureChannelId,
|
|
187
|
+
...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
|
|
188
|
+
},
|
|
189
|
+
body: params.toString()
|
|
190
|
+
});
|
|
191
|
+
const responseText = await response.text();
|
|
192
|
+
if (!responseText) {
|
|
193
|
+
throw createAbcError(
|
|
194
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
195
|
+
"Empty response from sign hash API",
|
|
196
|
+
{ status: response.status }
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
let data;
|
|
200
|
+
try {
|
|
201
|
+
data = JSON.parse(responseText);
|
|
202
|
+
} catch (parseError) {
|
|
203
|
+
console.error("[TronApi] \u274C JSON parse error:", parseError);
|
|
204
|
+
throw createAbcError(
|
|
205
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
206
|
+
"Invalid JSON response from sign hash API",
|
|
207
|
+
{ responseText, parseError }
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
if (!response.ok || data.iserr === true || !data.signstr) {
|
|
211
|
+
const errorDetails = data.errmsg || data.errors?.[0] || data.message || data;
|
|
212
|
+
console.error("[TronApi] \u274C Sign failed:", errorDetails);
|
|
213
|
+
throw createAbcError(
|
|
214
|
+
"SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
|
|
215
|
+
`Failed to sign hash: ${JSON.stringify(errorDetails)}`,
|
|
216
|
+
data
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
const signstr = JSON.parse(data.signstr);
|
|
220
|
+
const sigList = signstr.sig_list;
|
|
221
|
+
const signatures = [];
|
|
222
|
+
for (const sig of sigList) {
|
|
223
|
+
const r = sig.r.startsWith("0x") ? sig.r.substring(2) : sig.r;
|
|
224
|
+
const s = sig.s.startsWith("0x") ? sig.s.substring(2) : sig.s;
|
|
225
|
+
const v = (27 + (sig.vsource || 0)).toString(16);
|
|
226
|
+
signatures.push(r + s + v);
|
|
227
|
+
}
|
|
228
|
+
console.log(
|
|
229
|
+
"[TronApi] \u2705 Signature generated:",
|
|
230
|
+
`${signatures[0].length / 2} bytes,`,
|
|
231
|
+
`${signatures[0].substring(0, 16)}...${signatures[0].substring(signatures[0].length - 4)}`
|
|
232
|
+
);
|
|
233
|
+
return signatures;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Broadcast signed TRON transaction
|
|
237
|
+
*
|
|
238
|
+
* @param rawData - Raw transaction data from transfer/trc20Transfer
|
|
239
|
+
* @param signatures - Signatures from signHash
|
|
240
|
+
* @param network - TRON network
|
|
241
|
+
* @returns Transaction hash (txid)
|
|
242
|
+
*/
|
|
243
|
+
async broadcast(rawData, signatures, network) {
|
|
244
|
+
const url = `${this.baseURL}/wapi/v2/tron/send/transaction`;
|
|
245
|
+
console.log("[TronApi] \u{1F4E1} Broadcasting TRON transaction...");
|
|
246
|
+
const response = await fetch(url, {
|
|
247
|
+
method: "POST",
|
|
248
|
+
headers: {
|
|
249
|
+
"Content-Type": "application/json",
|
|
250
|
+
...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
|
|
251
|
+
},
|
|
252
|
+
body: JSON.stringify({
|
|
253
|
+
network,
|
|
254
|
+
raw_data: rawData,
|
|
255
|
+
signature: signatures
|
|
256
|
+
})
|
|
257
|
+
});
|
|
258
|
+
const data = await response.json();
|
|
259
|
+
if (!response.ok || data.status && data.status !== "success") {
|
|
260
|
+
console.error("[TronApi] \u274C Broadcast failed:", data);
|
|
261
|
+
throw createAbcError(
|
|
262
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
263
|
+
"Failed to broadcast TRON transaction",
|
|
264
|
+
data
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
const txHash = data.txid || data.txID || data.tx_hash;
|
|
268
|
+
if (!txHash) {
|
|
269
|
+
console.error("[TronApi] \u274C No txid in response:", data);
|
|
270
|
+
throw createAbcError(
|
|
271
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
272
|
+
"Transaction hash not found in broadcast response",
|
|
273
|
+
data
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
console.log("[TronApi] \u2705 Transaction broadcasted:", txHash);
|
|
277
|
+
return txHash;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Send TRON transaction (Complete flow: transfer/trc20Transfer -> signHash -> broadcast)
|
|
281
|
+
* High-level API that handles all 3 steps
|
|
282
|
+
*
|
|
283
|
+
* @param params - Transaction parameters
|
|
284
|
+
* @param wallet - EVM wallet credentials
|
|
285
|
+
* @param pinHash - Hashed PIN
|
|
286
|
+
* @param secureService - SecureService instance
|
|
287
|
+
* @returns Transaction hash
|
|
288
|
+
*/
|
|
289
|
+
async sendTransaction(params, wallet, pinHash, secureService) {
|
|
290
|
+
console.log("[TronApi] \u{1F4B8} Starting TRON transaction flow...");
|
|
291
|
+
let txID;
|
|
292
|
+
let rawData;
|
|
293
|
+
if (params.type === "TRC20" && params.contractAddress) {
|
|
294
|
+
const result = await this.trc20Transfer({
|
|
295
|
+
fromAddress: params.fromAddress,
|
|
296
|
+
toAddress: params.toAddress,
|
|
297
|
+
amount: params.amount,
|
|
298
|
+
contractAddress: params.contractAddress,
|
|
299
|
+
feeLimit: params.feeLimit,
|
|
300
|
+
network: params.network
|
|
301
|
+
});
|
|
302
|
+
txID = result.txID;
|
|
303
|
+
rawData = result.rawData;
|
|
304
|
+
} else {
|
|
305
|
+
const result = await this.transfer({
|
|
306
|
+
fromAddress: params.fromAddress,
|
|
307
|
+
toAddress: params.toAddress,
|
|
308
|
+
amount: Number(params.amount),
|
|
309
|
+
network: params.network
|
|
310
|
+
});
|
|
311
|
+
txID = result.txID;
|
|
312
|
+
rawData = result.rawData;
|
|
313
|
+
}
|
|
314
|
+
const signatures = await this.signHash(
|
|
315
|
+
txID,
|
|
316
|
+
wallet,
|
|
317
|
+
pinHash,
|
|
318
|
+
secureService
|
|
319
|
+
);
|
|
320
|
+
const txHash = await this.broadcast(rawData, signatures, params.network);
|
|
321
|
+
console.log("[TronApi] \u2705 Transaction complete:", txHash);
|
|
322
|
+
return txHash;
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
export {
|
|
327
|
+
TronApi
|
|
328
|
+
};
|