@talken/talkenkit 2.3.15 → 2.4.5

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.
Files changed (195) hide show
  1. package/dist/{chunk-UWHLB4MJ.js → chunk-RQ637EP3.js} +0 -2
  2. package/dist/components/ConnectOptions/ExternalWallets/EthereumWallet/EthereumWalletList.d.ts +4 -4
  3. package/dist/index.d.ts +6 -5
  4. package/dist/index.js +6783 -6571
  5. package/dist/{secure-SSSSQ4NA.js → secure-X6ZSGFOB.js} +1 -1
  6. package/dist/services/AbcAuthService.d.ts +1 -1
  7. package/dist/solana/AbcSolanaAutoConnector.d.ts +7 -0
  8. package/dist/solana/SolanaWalletProvider.d.ts +18 -2
  9. package/dist/solana/config.d.ts +26 -0
  10. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.d.ts +7 -0
  11. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +37 -0
  12. package/dist/wallets/walletConnectors/abcWallet/abcApi.js +4 -4
  13. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
  14. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  15. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +6 -6
  16. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +3 -3
  17. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +166 -0
  18. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +725 -0
  19. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -7
  20. package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +5 -5
  21. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.d.ts +5 -0
  22. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +4 -4
  23. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +5 -5
  24. package/dist/wallets/walletConnectors/abcWallet/api/SigningApi.js +5 -5
  25. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +16 -5
  26. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +5 -5
  27. package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +5 -5
  28. package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +5 -5
  29. package/dist/wallets/walletConnectors/abcWallet/api/index.js +13 -13
  30. package/dist/wallets/walletConnectors/abcWallet/googleAuth.d.ts +1 -1
  31. package/dist/wallets/walletConnectors/abcWallet/googleAuth.js +5 -7
  32. package/dist/wallets/walletConnectors/abcWallet/index.d.ts +3 -7
  33. package/dist/wallets/walletConnectors/abcWallet/index.js +36 -46
  34. package/dist/wallets/walletConnectors/abcWallet/secure.js +1 -1
  35. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.d.ts +38 -0
  36. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +15 -0
  37. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +34 -1
  38. package/dist/wallets/walletConnectors/abcWallet/types.js +1 -1
  39. package/dist/wallets/walletConnectors/abcWallet/utils.d.ts +1 -1
  40. package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
  41. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
  42. package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
  43. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  44. package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
  45. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  46. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  47. package/dist/wallets/walletConnectors/chunk-2GNL2GNB.js +154 -0
  48. package/dist/wallets/walletConnectors/{chunk-5DDAV4BZ.js → chunk-2NAY6X3G.js} +1 -1
  49. package/dist/wallets/walletConnectors/{chunk-ZIYAL44B.js → chunk-2NVHWZUE.js} +1 -1
  50. package/dist/wallets/walletConnectors/{chunk-LENPUTNQ.js → chunk-36J4NGMW.js} +12 -20
  51. package/dist/wallets/walletConnectors/{chunk-4MF5RSML.js → chunk-3CTIR723.js} +1 -1
  52. package/dist/wallets/walletConnectors/{chunk-AVPBPELO.js → chunk-3WLUH24A.js} +10 -10
  53. package/dist/wallets/walletConnectors/{chunk-YEHCPL4R.js → chunk-53LPTQ6J.js} +2 -2
  54. package/dist/wallets/walletConnectors/{chunk-GXGRTWJM.js → chunk-5CZGFT24.js} +10 -10
  55. package/dist/wallets/walletConnectors/{chunk-BJHGC546.js → chunk-5JIPWC5W.js} +12 -24
  56. package/dist/wallets/walletConnectors/{chunk-4N6JD6LY.js → chunk-5LPD35BU.js} +9 -9
  57. package/dist/wallets/walletConnectors/{chunk-UV5HHESJ.js → chunk-5RSS3SRV.js} +29 -12
  58. package/dist/wallets/walletConnectors/{chunk-3ZE57J3R.js → chunk-64TRAZ6V.js} +1 -1
  59. package/dist/wallets/walletConnectors/{chunk-KKPINUPY.js → chunk-6BAXMYSN.js} +2 -2
  60. package/dist/wallets/walletConnectors/{chunk-PPIFAF7N.js → chunk-7MOCKWA7.js} +65 -19
  61. package/dist/wallets/walletConnectors/{chunk-75RN2RLT.js → chunk-7TYZCXIR.js} +12 -12
  62. package/dist/wallets/walletConnectors/{chunk-HVPQO6ZG.js → chunk-7UIXGYOT.js} +5 -20
  63. package/dist/wallets/walletConnectors/{chunk-BL57XWJY.js → chunk-7UQQKSV7.js} +1 -1
  64. package/dist/wallets/walletConnectors/{chunk-FGBDWBWQ.js → chunk-AIKTQX6B.js} +2 -2
  65. package/dist/wallets/walletConnectors/chunk-AO24PU7X.js +104 -0
  66. package/dist/wallets/walletConnectors/{chunk-4YJWX7I3.js → chunk-APLOMU6R.js} +1 -1
  67. package/dist/wallets/walletConnectors/chunk-AZAV5URB.js +267 -0
  68. package/dist/wallets/walletConnectors/chunk-BO6OI7XU.js +63 -0
  69. package/dist/wallets/walletConnectors/{chunk-P2GV6NQG.js → chunk-BV3DCJXA.js} +12 -20
  70. package/dist/wallets/walletConnectors/{chunk-KJHOGJ3A.js → chunk-CNRPEVLV.js} +16 -4
  71. package/dist/wallets/walletConnectors/{chunk-OC2O4BHA.js → chunk-COPAK5YT.js} +2 -2
  72. package/dist/wallets/walletConnectors/chunk-CZVBS7QE.js +436 -0
  73. package/dist/wallets/walletConnectors/{chunk-QKUFFUM5.js → chunk-DA5J6GHZ.js} +14 -4
  74. package/dist/wallets/walletConnectors/chunk-FMDSZ2CE.js +63 -0
  75. package/dist/wallets/walletConnectors/{chunk-5CCU7PNU.js → chunk-FQTLYAWT.js} +2 -2
  76. package/dist/wallets/walletConnectors/chunk-FUOQBONI.js +47 -0
  77. package/dist/wallets/walletConnectors/chunk-FWCS4HBL.js +1695 -0
  78. package/dist/wallets/walletConnectors/chunk-FY7UDC3W.js +63 -0
  79. package/dist/wallets/walletConnectors/chunk-GZUP3M2X.js +63 -0
  80. package/dist/wallets/walletConnectors/chunk-H52W4ZFE.js +272 -0
  81. package/dist/wallets/walletConnectors/chunk-HEQZLRTH.js +309 -0
  82. package/dist/wallets/walletConnectors/{chunk-ISAMATTH.js → chunk-HFC4AK72.js} +2 -2
  83. package/dist/wallets/walletConnectors/chunk-HKIV22NT.js +63 -0
  84. package/dist/wallets/walletConnectors/chunk-HLC24OGS.js +63 -0
  85. package/dist/wallets/walletConnectors/{chunk-5TDZSXJ4.js → chunk-HTD7IRKM.js} +2 -2
  86. package/dist/wallets/walletConnectors/chunk-IQJWD4IN.js +269 -0
  87. package/dist/wallets/walletConnectors/chunk-IZUAJRJ4.js +311 -0
  88. package/dist/wallets/walletConnectors/{chunk-NX5MQHSQ.js → chunk-J6VUIOSE.js} +23 -2
  89. package/dist/wallets/walletConnectors/chunk-JH2SJPEY.js +63 -0
  90. package/dist/wallets/walletConnectors/chunk-JQ57SCY6.js +313 -0
  91. package/dist/wallets/walletConnectors/{chunk-F5P2INHS.js → chunk-KB7OGAUC.js} +14 -4
  92. package/dist/wallets/walletConnectors/chunk-KXEAFXAA.js +226 -0
  93. package/dist/wallets/walletConnectors/{chunk-JR2C4XXX.js → chunk-LLWI2QWC.js} +74 -18
  94. package/dist/wallets/walletConnectors/{chunk-H2MX4NAL.js → chunk-LQ2U33WM.js} +29 -16
  95. package/dist/wallets/walletConnectors/{chunk-BNSBK5PQ.js → chunk-M7KXDTM6.js} +14 -4
  96. package/dist/wallets/walletConnectors/{chunk-CYYBGUSO.js → chunk-MKAXMNZM.js} +4 -4
  97. package/dist/wallets/walletConnectors/chunk-MNRRJSFM.js +272 -0
  98. package/dist/wallets/walletConnectors/chunk-MPFE6GP2.js +306 -0
  99. package/dist/wallets/walletConnectors/{chunk-EEY5CXKO.js → chunk-MPNSYA4E.js} +2 -2
  100. package/dist/wallets/walletConnectors/chunk-NDLQSZ2F.js +63 -0
  101. package/dist/wallets/walletConnectors/{chunk-G2LI5MVX.js → chunk-NDYGTKP5.js} +0 -2
  102. package/dist/wallets/walletConnectors/chunk-NLBRSN6Q.js +63 -0
  103. package/dist/wallets/walletConnectors/{chunk-BSBRWKNG.js → chunk-NPF7NOA7.js} +69 -23
  104. package/dist/wallets/walletConnectors/{chunk-7DEZCGNV.js → chunk-NUJ6VD2U.js} +82 -16
  105. package/dist/wallets/walletConnectors/chunk-PSRATZTN.js +47 -0
  106. package/dist/wallets/walletConnectors/{chunk-MZOFZ2NQ.js → chunk-QCIIXMAZ.js} +2 -2
  107. package/dist/wallets/walletConnectors/{chunk-GHLLVM7O.js → chunk-RCI7QYCZ.js} +82 -18
  108. package/dist/wallets/walletConnectors/{chunk-QI2VB7LL.js → chunk-RHQXGWIW.js} +82 -16
  109. package/dist/wallets/walletConnectors/chunk-RPOLRZ4N.js +276 -0
  110. package/dist/wallets/walletConnectors/{chunk-5UEBEMEE.js → chunk-RQIUWXDF.js} +2 -1
  111. package/dist/wallets/walletConnectors/{chunk-RLR4Y5WO.js → chunk-SCD35IRD.js} +4 -0
  112. package/dist/wallets/walletConnectors/{chunk-EGOIRXTV.js → chunk-SOCVQ5N3.js} +2 -2
  113. package/dist/wallets/walletConnectors/chunk-TTRSCIGA.js +194 -0
  114. package/dist/wallets/walletConnectors/chunk-TYUEB4VT.js +477 -0
  115. package/dist/wallets/walletConnectors/{chunk-WTYSUOKN.js → chunk-UZXTNCDO.js} +17 -5
  116. package/dist/wallets/walletConnectors/chunk-V33I7JGZ.js +156 -0
  117. package/dist/wallets/walletConnectors/chunk-V4Q3GNBX.js +484 -0
  118. package/dist/wallets/walletConnectors/chunk-VCCTIYUJ.js +63 -0
  119. package/dist/wallets/walletConnectors/chunk-VGOISIH3.js +223 -0
  120. package/dist/wallets/walletConnectors/chunk-XFGVJOQL.js +223 -0
  121. package/dist/wallets/walletConnectors/chunk-XIOPKI2F.js +47 -0
  122. package/dist/wallets/walletConnectors/{chunk-O6EAIC4G.js → chunk-XJ4SP35I.js} +4 -1
  123. package/dist/wallets/walletConnectors/chunk-XKGUE56S.js +226 -0
  124. package/dist/wallets/walletConnectors/chunk-XQEAXENJ.js +63 -0
  125. package/dist/wallets/walletConnectors/{chunk-RY4RAB3D.js → chunk-YCZ4CZQ6.js} +106 -66
  126. package/dist/wallets/walletConnectors/chunk-Z2DC2J7S.js +345 -0
  127. package/dist/wallets/walletConnectors/chunk-Z2K3RHWK.js +47 -0
  128. package/dist/wallets/walletConnectors/chunk-ZASMSEC3.js +63 -0
  129. package/dist/wallets/walletConnectors/{chunk-G7PEFBL6.js → chunk-ZNBWRE3K.js} +2 -2
  130. package/dist/wallets/walletConnectors/chunk-ZNVFM2J2.js +156 -0
  131. package/dist/wallets/walletConnectors/chunk-ZQLQELFC.js +309 -0
  132. package/dist/wallets/walletConnectors/chunk-ZR7CEF64.js +63 -0
  133. package/dist/wallets/walletConnectors/chunk-ZSGFDK77.js +63 -0
  134. package/dist/wallets/walletConnectors/chunk-ZUIY2TRJ.js +1695 -0
  135. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  136. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  137. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  138. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  139. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  140. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  141. package/dist/wallets/walletConnectors/index.js +55 -55
  142. package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
  143. package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
  144. package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
  145. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  146. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  147. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  148. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  149. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  150. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  151. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  152. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  153. package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
  154. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  155. package/package.json +12 -11
  156. package/LICENSE +0 -9
  157. package/dist/solana/hooks/index.d.ts +0 -12
  158. package/dist/solana/hooks/useSolanaAccount.d.ts +0 -98
  159. package/dist/solana/hooks/useSolanaConnection.d.ts +0 -72
  160. package/dist/solana/hooks/useSolanaSendTransaction.d.ts +0 -98
  161. package/dist/solana/hooks/useSolanaSignMessage.d.ts +0 -82
  162. package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.d.ts +0 -45
  163. package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.js +0 -10
  164. package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.d.ts +0 -115
  165. package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.js +0 -12
  166. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +0 -143
  167. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +0 -13
  168. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.d.ts +0 -18
  169. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.js +0 -15
  170. package/dist/wallets/walletConnectors/chunk-2XZBPMQJ.js +0 -39
  171. package/dist/wallets/walletConnectors/chunk-3SVPZCA6.js +0 -71
  172. package/dist/wallets/walletConnectors/chunk-3ZZXE7EL.js +0 -39
  173. package/dist/wallets/walletConnectors/chunk-5QEUEPNY.js +0 -94
  174. package/dist/wallets/walletConnectors/chunk-75W4VLFA.js +0 -482
  175. package/dist/wallets/walletConnectors/chunk-B6JLYR3I.js +0 -66
  176. package/dist/wallets/walletConnectors/chunk-FROV5VDF.js +0 -346
  177. package/dist/wallets/walletConnectors/chunk-HKWBR5B7.js +0 -102
  178. package/dist/wallets/walletConnectors/chunk-K4APJ4PE.js +0 -96
  179. package/dist/wallets/walletConnectors/chunk-LJ2B47VF.js +0 -108
  180. package/dist/wallets/walletConnectors/chunk-LXINMUQC.js +0 -186
  181. package/dist/wallets/walletConnectors/chunk-MORUEOYX.js +0 -76
  182. package/dist/wallets/walletConnectors/chunk-MQTXA63X.js +0 -27
  183. package/dist/wallets/walletConnectors/chunk-N4FOYXQD.js +0 -63
  184. package/dist/wallets/walletConnectors/chunk-NEXFU6BZ.js +0 -39
  185. package/dist/wallets/walletConnectors/chunk-PMZJGS7X.js +0 -73
  186. package/dist/wallets/walletConnectors/chunk-QEHZXKRF.js +0 -39
  187. package/dist/wallets/walletConnectors/chunk-T6KJZAPR.js +0 -47
  188. package/dist/wallets/walletConnectors/chunk-UBCMBPX3.js +0 -58
  189. package/dist/wallets/walletConnectors/chunk-UGQXI3RN.js +0 -284
  190. package/dist/wallets/walletConnectors/chunk-WZZVA3LW.js +0 -101
  191. package/dist/wallets/walletConnectors/chunk-X4WUD7PF.js +0 -63
  192. package/dist/wallets/walletConnectors/chunk-XOQNQKZE.js +0 -98
  193. package/dist/wallets/walletConnectors/chunk-XPSCFUX6.js +0 -372
  194. package/dist/wallets/walletConnectors/chunk-Y3LWEDF6.js +0 -63
  195. package/dist/wallets/walletConnectors/chunk-ZJ6OFFD5.js +0 -95
@@ -0,0 +1,194 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-LQ2U33WM.js";
5
+ import {
6
+ createAbcError
7
+ } from "./chunk-TYUEB4VT.js";
8
+
9
+ // src/wallets/walletConnectors/abcWallet/api/TransactionApi.ts
10
+ var TransactionApi = class extends BaseApiClient {
11
+ /**
12
+ * Send raw transaction
13
+ */
14
+ async sendRawTransaction(chainId, signedTransaction) {
15
+ const network = this.getNetworkName(chainId);
16
+ const secureChannelId = await this.secure.getSecureChannelId();
17
+ const bodyData = {
18
+ signedSerializeTx: signedTransaction,
19
+ network
20
+ };
21
+ const bodyString = new URLSearchParams(bodyData).toString();
22
+ const url = "${this.baseURL}${ABC_ENDPOINTS.SEND_RAW_TX}";
23
+ const response = await fetch(url, {
24
+ method: "POST",
25
+ headers: {
26
+ "Content-Type": "application/x-www-form-urlencoded",
27
+ "Secure-Channel": secureChannelId,
28
+ ...this.accessToken ? { Authorization: "Bearer ${this.accessToken}" } : {}
29
+ },
30
+ body: bodyString
31
+ });
32
+ const text = await response.text();
33
+ if (!text) {
34
+ throw createAbcError(
35
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
36
+ "Empty response from sendRawTx API (status: ${response.status})",
37
+ { status: response.status }
38
+ );
39
+ }
40
+ const res = JSON.parse(text);
41
+ if (response.status === 401 && this.refreshToken) {
42
+ try {
43
+ await this.refreshAccessToken();
44
+ const retryResponse = await fetch(url, {
45
+ method: "POST",
46
+ headers: {
47
+ "Content-Type": "application/x-www-form-urlencoded",
48
+ "Secure-Channel": secureChannelId,
49
+ ...this.accessToken ? { Authorization: "Bearer ${this.accessToken}" } : {}
50
+ },
51
+ body: bodyString
52
+ });
53
+ const retryText = await retryResponse.text();
54
+ if (!retryText) {
55
+ throw createAbcError(
56
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
57
+ "Empty response after retry (status: ${retryResponse.status})",
58
+ { status: retryResponse.status }
59
+ );
60
+ }
61
+ const retryRes = JSON.parse(retryText);
62
+ if (retryRes.item || retryRes.txHash || retryRes.result?.txHash) {
63
+ const txHash = retryRes.item || retryRes.txHash || retryRes.result.txHash;
64
+ return { txHash };
65
+ }
66
+ throw createAbcError(
67
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
68
+ "Failed to send transaction after token refresh",
69
+ retryRes
70
+ );
71
+ } catch (refreshError) {
72
+ console.error(
73
+ "Token refresh failed in sendRawTransaction:",
74
+ refreshError
75
+ );
76
+ throw refreshError;
77
+ }
78
+ }
79
+ if (res.result) {
80
+ if (typeof res.result === "string") {
81
+ return { txHash: res.result };
82
+ }
83
+ if (res.result.txHash) {
84
+ return { txHash: res.result.txHash };
85
+ }
86
+ }
87
+ if (res.item) {
88
+ return { txHash: res.item };
89
+ }
90
+ if (res.txHash) {
91
+ return { txHash: res.txHash };
92
+ }
93
+ throw createAbcError(
94
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
95
+ "Failed to send transaction",
96
+ res
97
+ );
98
+ }
99
+ /**
100
+ * Get transaction count (nonce)
101
+ */
102
+ async getTransactionCount(_address, _network, _block = "latest") {
103
+ const nonceUrl = "${this.baseURL}${ABC_ENDPOINTS.TRANSACTION_COUNT}?address=${address}&network=${network}&block=${block}";
104
+ const response = await fetch(nonceUrl, {
105
+ method: "GET",
106
+ headers: {
107
+ ...this.accessToken ? { Authorization: "Bearer ${this.accessToken}" } : {}
108
+ }
109
+ });
110
+ if (response.ok) {
111
+ const data = await response.json();
112
+ return Number.parseInt(data.result, 16);
113
+ }
114
+ throw createAbcError(
115
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
116
+ "Failed to get transaction count"
117
+ );
118
+ }
119
+ /**
120
+ * Get suggested gas fees for EIP-1559
121
+ */
122
+ async getSuggestedGasFees(_network) {
123
+ const url = "${this.baseURL}${ABC_ENDPOINTS.GAS_SUGGESTED_FEES}?network=${network}";
124
+ const response = await fetch(url, {
125
+ method: "GET",
126
+ headers: {
127
+ ...this.accessToken ? { Authorization: "Bearer ${this.accessToken}" } : {}
128
+ }
129
+ });
130
+ if (response.ok) {
131
+ const data = await response.json();
132
+ return data;
133
+ }
134
+ throw createAbcError(
135
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
136
+ "Failed to get suggested gas fees"
137
+ );
138
+ }
139
+ /**
140
+ * Estimate gas limit for EIP-1559 transaction
141
+ */
142
+ async estimateGas(params) {
143
+ const estimateBody = new URLSearchParams({
144
+ network: params.network,
145
+ to: params.to || "0x",
146
+ ...params.from ? { from: params.from } : {},
147
+ ...params.value ? { value: params.value } : {},
148
+ ...params.data && params.data !== "0x" ? { data: params.data } : {},
149
+ ...params.maxFeePerGas ? { maxFeePerGas: params.maxFeePerGas } : {},
150
+ ...params.maxPriorityFeePerGas ? { maxPriorityFeePerGas: params.maxPriorityFeePerGas } : {}
151
+ });
152
+ const url = "${this.baseURL}${ABC_ENDPOINTS.GAS_ESTIMATE_EIP1559}";
153
+ const response = await fetch(url, {
154
+ method: "POST",
155
+ headers: {
156
+ "Content-Type": "application/x-www-form-urlencoded",
157
+ ...this.accessToken ? { Authorization: "Bearer ${this.accessToken}" } : {}
158
+ },
159
+ body: estimateBody.toString()
160
+ });
161
+ const data = await response.json();
162
+ if (response.ok && data.result) {
163
+ return data.result;
164
+ }
165
+ const fallbackGasLimit = "0x2dc6c0";
166
+ console.warn("\u26A0\uFE0F Gas estimate failed, using fallback:", {
167
+ error: data.errorMessage || data.msg,
168
+ fallbackGasLimit
169
+ });
170
+ return fallbackGasLimit;
171
+ }
172
+ /**
173
+ * Convert chainId to network name
174
+ */
175
+ getNetworkName(chainId) {
176
+ const networkMap = {
177
+ 1: "ethereum",
178
+ 11155111: "ethereum_sepolia",
179
+ 8217: "klaytn",
180
+ 1001: "klaytn_baobab",
181
+ 137: "polygon",
182
+ 80002: "polygon_amoy",
183
+ 42161: "arbitrum",
184
+ 421614: "arbitrum_sepolia",
185
+ 5e3: "mantle",
186
+ 5003: "mantle_testnet"
187
+ };
188
+ return networkMap[chainId] || "ethereum";
189
+ }
190
+ };
191
+
192
+ export {
193
+ TransactionApi
194
+ };
@@ -0,0 +1,477 @@
1
+ "use client";
2
+ import {
3
+ PIN_CONFIG,
4
+ STORAGE_PREFIX,
5
+ TOKEN_EXPIRY
6
+ } from "./chunk-VETRBBA2.js";
7
+ import {
8
+ AbcError,
9
+ AbcStorageKey
10
+ } from "./chunk-RQIUWXDF.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/utils.ts
13
+ import CryptoJS from "crypto-js";
14
+ async function hashPin(pin) {
15
+ if (typeof window === "undefined" || !window.crypto?.subtle) {
16
+ return btoa(pin);
17
+ }
18
+ const encoder = new TextEncoder();
19
+ const data = encoder.encode(pin);
20
+ const hashBuffer = await window.crypto.subtle.digest("SHA-256", data);
21
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
22
+ const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
23
+ return hashHex;
24
+ }
25
+ function validatePin(pin) {
26
+ if (!pin || typeof pin !== "string") {
27
+ return false;
28
+ }
29
+ const pinLength = pin.length;
30
+ if (pinLength < PIN_CONFIG.MIN_LENGTH || pinLength > PIN_CONFIG.MAX_LENGTH) {
31
+ return false;
32
+ }
33
+ return /^\d+$/.test(pin);
34
+ }
35
+ function validateEmail(email) {
36
+ if (!email || typeof email !== "string") {
37
+ return false;
38
+ }
39
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
40
+ return emailRegex.test(email);
41
+ }
42
+ function getStorageKey(key) {
43
+ return `${STORAGE_PREFIX}${key}`;
44
+ }
45
+ function saveToStorage(key, value) {
46
+ if (typeof window === "undefined")
47
+ return;
48
+ try {
49
+ const storageKey = getStorageKey(key);
50
+ const serialized = JSON.stringify(value);
51
+ localStorage.setItem(storageKey, serialized);
52
+ } catch (error) {
53
+ console.error("Failed to save to storage:", error);
54
+ }
55
+ }
56
+ function loadFromStorage(key) {
57
+ if (typeof window === "undefined")
58
+ return null;
59
+ try {
60
+ const storageKey = getStorageKey(key);
61
+ const serialized = localStorage.getItem(storageKey);
62
+ if (!serialized)
63
+ return null;
64
+ try {
65
+ return JSON.parse(serialized);
66
+ } catch {
67
+ return serialized;
68
+ }
69
+ } catch (error) {
70
+ console.error("Failed to load from storage:", error);
71
+ return null;
72
+ }
73
+ }
74
+ function removeFromStorage(key) {
75
+ if (typeof window === "undefined")
76
+ return;
77
+ try {
78
+ const storageKey = getStorageKey(key);
79
+ localStorage.removeItem(storageKey);
80
+ } catch (error) {
81
+ console.error("Failed to remove from storage:", error);
82
+ }
83
+ }
84
+ function clearStorage() {
85
+ if (typeof window === "undefined")
86
+ return;
87
+ for (const key of Object.values(AbcStorageKey)) {
88
+ removeFromStorage(key);
89
+ }
90
+ }
91
+ function isTokenExpired(expiresAt) {
92
+ if (!expiresAt)
93
+ return true;
94
+ return Date.now() >= expiresAt - TOKEN_EXPIRY.REFRESH_BUFFER;
95
+ }
96
+ function calculateExpiryTimestamp(expiresIn) {
97
+ return Date.now() + expiresIn * 1e3;
98
+ }
99
+ function saveAuthState(state) {
100
+ saveToStorage("auth_state" /* AUTH_STATE */, state);
101
+ if (state.user) {
102
+ saveToStorage("user" /* USER */, state.user);
103
+ }
104
+ if (state.wallet) {
105
+ saveToStorage("wallet" /* WALLET */, state.wallet);
106
+ }
107
+ if (state.solanaWallet) {
108
+ saveToStorage("solana_wallet" /* SOLANA_WALLET */, state.solanaWallet);
109
+ }
110
+ if (state.bitcoinWallet) {
111
+ saveToStorage("bitcoin_wallet" /* BITCOIN_WALLET */, state.bitcoinWallet);
112
+ }
113
+ if (state.accessToken) {
114
+ saveToStorage("access_token" /* ACCESS_TOKEN */, state.accessToken);
115
+ }
116
+ if (state.refreshToken) {
117
+ saveToStorage("refresh_token" /* REFRESH_TOKEN */, state.refreshToken);
118
+ }
119
+ if (state.expiresAt) {
120
+ saveToStorage("expires_at" /* EXPIRES_AT */, state.expiresAt);
121
+ }
122
+ }
123
+ function loadAuthState() {
124
+ const state = loadFromStorage("auth_state" /* AUTH_STATE */);
125
+ if (state) {
126
+ if (state.accessToken && isTokenExpired(state.expiresAt)) {
127
+ clearStorage();
128
+ return null;
129
+ }
130
+ return state;
131
+ }
132
+ const user = loadFromStorage("user" /* USER */);
133
+ const wallet = loadFromStorage("wallet" /* WALLET */);
134
+ const solanaWallet = loadFromStorage("solana_wallet" /* SOLANA_WALLET */);
135
+ const accessToken = loadFromStorage("access_token" /* ACCESS_TOKEN */);
136
+ const refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
137
+ const expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
138
+ if (!user || !accessToken) {
139
+ return null;
140
+ }
141
+ const bitcoinWallet = loadFromStorage("bitcoin_wallet" /* BITCOIN_WALLET */);
142
+ return {
143
+ isAuthenticated: true,
144
+ user,
145
+ wallet,
146
+ solanaWallet,
147
+ bitcoinWallet,
148
+ accessToken,
149
+ refreshToken,
150
+ expiresAt
151
+ };
152
+ }
153
+ function clearAuthState() {
154
+ clearStorage();
155
+ }
156
+ function getChainType(chainId) {
157
+ if (chainId === 900)
158
+ return "solana";
159
+ if (chainId === 800)
160
+ return "bitcoin";
161
+ return "evm";
162
+ }
163
+ function formatAddress(address, startLength = 6, endLength = 4) {
164
+ if (!address || address.length <= startLength + endLength) {
165
+ return address;
166
+ }
167
+ const start = address.substring(0, startLength);
168
+ const end = address.substring(address.length - endLength);
169
+ return `${start}...${end}`;
170
+ }
171
+ function createAbcError(code, message, details, statusCode) {
172
+ return new AbcError(code, message, details, statusCode);
173
+ }
174
+ function sleep(ms) {
175
+ return new Promise((resolve) => setTimeout(resolve, ms));
176
+ }
177
+ async function retry(fn, maxRetries = 3, delay = 1e3, backoffMultiplier = 2) {
178
+ let lastError = null;
179
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
180
+ try {
181
+ return await fn();
182
+ } catch (error) {
183
+ lastError = error;
184
+ if (attempt < maxRetries - 1) {
185
+ const waitTime = delay * backoffMultiplier ** attempt;
186
+ await sleep(waitTime);
187
+ }
188
+ }
189
+ }
190
+ throw lastError || new Error("Retry failed");
191
+ }
192
+ function parseApiError(error) {
193
+ if (error instanceof AbcError) {
194
+ return error;
195
+ }
196
+ if (!error.response) {
197
+ return createAbcError(
198
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
199
+ "Network error occurred",
200
+ error
201
+ );
202
+ }
203
+ const response = error.response;
204
+ const data = response.data;
205
+ const statusCode = response.status;
206
+ if (statusCode === 401) {
207
+ return createAbcError(
208
+ "TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
209
+ "Authentication token expired",
210
+ data,
211
+ 401
212
+ );
213
+ }
214
+ if (statusCode === 409) {
215
+ return createAbcError(
216
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
217
+ // Will trigger recovery
218
+ data?.error || "Resource already exists",
219
+ data,
220
+ 409
221
+ );
222
+ }
223
+ if (typeof data === "object" && "iserr" in data) {
224
+ const bitcoinData = data;
225
+ if (bitcoinData.iserr === true) {
226
+ return createAbcError(
227
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
228
+ bitcoinData.errmsg || "Bitcoin signature failed",
229
+ data,
230
+ statusCode
231
+ );
232
+ }
233
+ if (!bitcoinData.signstr) {
234
+ return createAbcError(
235
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
236
+ "Bitcoin signature missing in response",
237
+ data,
238
+ statusCode
239
+ );
240
+ }
241
+ return createAbcError(
242
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
243
+ "Unexpected success response in error parser",
244
+ data,
245
+ statusCode
246
+ );
247
+ }
248
+ if (data?.error) {
249
+ return createAbcError(
250
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
251
+ data.error.message || data.error || "API error occurred",
252
+ data,
253
+ statusCode
254
+ );
255
+ }
256
+ if (data?.message) {
257
+ return createAbcError(
258
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
259
+ data.message.text || "API error occurred",
260
+ data,
261
+ statusCode
262
+ );
263
+ }
264
+ return createAbcError(
265
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
266
+ "An unknown error occurred",
267
+ error,
268
+ statusCode
269
+ );
270
+ }
271
+ function isBrowser() {
272
+ return typeof window !== "undefined";
273
+ }
274
+ function isWeb3Available() {
275
+ return isBrowser() && typeof window.ethereum !== "undefined";
276
+ }
277
+ function generateId() {
278
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
279
+ }
280
+ function deepClone(obj) {
281
+ return JSON.parse(JSON.stringify(obj));
282
+ }
283
+ function isEmpty(obj) {
284
+ if (obj == null)
285
+ return true;
286
+ if (Array.isArray(obj))
287
+ return obj.length === 0;
288
+ if (typeof obj === "object")
289
+ return Object.keys(obj).length === 0;
290
+ return false;
291
+ }
292
+ function debounce(func, wait) {
293
+ let timeout = null;
294
+ return function(...args) {
295
+ if (timeout) {
296
+ clearTimeout(timeout);
297
+ }
298
+ timeout = setTimeout(() => {
299
+ func.apply(this, args);
300
+ }, wait);
301
+ };
302
+ }
303
+ function throttle(func, limit) {
304
+ let inThrottle = false;
305
+ return function(...args) {
306
+ if (!inThrottle) {
307
+ func.apply(this, args);
308
+ inThrottle = true;
309
+ setTimeout(() => {
310
+ inThrottle = false;
311
+ }, limit);
312
+ }
313
+ };
314
+ }
315
+ function hexToNumber(hex) {
316
+ return Number.parseInt(hex, 16);
317
+ }
318
+ function numberToHex(num) {
319
+ return `0x${num.toString(16)}`;
320
+ }
321
+ function isValidEthereumAddress(address) {
322
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
323
+ }
324
+ function isValidSolanaAddress(address) {
325
+ return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
326
+ }
327
+ function getExplorerUrl(chainId, txHash) {
328
+ const explorers = {
329
+ 1: "https://etherscan.io/tx/",
330
+ 5: "https://goerli.etherscan.io/tx/",
331
+ 137: "https://polygonscan.com/tx/",
332
+ 56: "https://bscscan.com/tx/",
333
+ 900: "https://explorer.solana.com/tx/"
334
+ // Solana
335
+ };
336
+ const baseUrl = explorers[chainId];
337
+ return baseUrl ? `${baseUrl}${txHash}` : null;
338
+ }
339
+ function generateSalt() {
340
+ const array = new Uint8Array(16);
341
+ crypto.getRandomValues(array);
342
+ return Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join(
343
+ ""
344
+ );
345
+ }
346
+ function deriveKeyFromPin(pin, salt) {
347
+ return CryptoJS.PBKDF2(pin, salt, {
348
+ keySize: 256 / 32,
349
+ iterations: 1e5
350
+ }).toString();
351
+ }
352
+ function encryptWithPin(data, pin, salt) {
353
+ const key = deriveKeyFromPin(pin, salt);
354
+ const encrypted = CryptoJS.AES.encrypt(data, key).toString();
355
+ return encrypted;
356
+ }
357
+ function decryptWithPin(encrypted, pin, salt) {
358
+ try {
359
+ const key = deriveKeyFromPin(pin, salt);
360
+ const decrypted = CryptoJS.AES.decrypt(encrypted, key);
361
+ const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
362
+ if (!decryptedText) {
363
+ return null;
364
+ }
365
+ return decryptedText;
366
+ } catch (error) {
367
+ console.error("Decryption failed:", error);
368
+ return null;
369
+ }
370
+ }
371
+ function hasEncryptedTokens() {
372
+ if (typeof window === "undefined")
373
+ return false;
374
+ const encrypted = loadFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
375
+ const salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
376
+ return !!encrypted && !!salt;
377
+ }
378
+ function saveEncryptedTokens(accessToken, refreshToken, expiresIn, hashedPin) {
379
+ if (typeof window === "undefined")
380
+ return;
381
+ try {
382
+ let salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
383
+ if (!salt) {
384
+ salt = generateSalt();
385
+ saveToStorage("token_salt" /* TOKEN_SALT */, salt);
386
+ }
387
+ const expiresAt = Date.now() + expiresIn * 1e3;
388
+ const tokenData = {
389
+ accessToken,
390
+ refreshToken,
391
+ expiresAt
392
+ };
393
+ const encrypted = encryptWithPin(
394
+ JSON.stringify(tokenData),
395
+ hashedPin,
396
+ salt
397
+ );
398
+ saveToStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */, encrypted);
399
+ removeFromStorage("access_token" /* ACCESS_TOKEN */);
400
+ removeFromStorage("refresh_token" /* REFRESH_TOKEN */);
401
+ removeFromStorage("expires_at" /* EXPIRES_AT */);
402
+ } catch (error) {
403
+ console.error("Failed to save encrypted tokens:", error);
404
+ throw new AbcError(
405
+ "ENCRYPTION_FAILED" /* ENCRYPTION_FAILED */,
406
+ "Failed to encrypt tokens"
407
+ );
408
+ }
409
+ }
410
+ function loadEncryptedTokens(hashedPin) {
411
+ if (typeof window === "undefined")
412
+ return null;
413
+ try {
414
+ const encrypted = loadFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
415
+ const salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
416
+ if (!encrypted || !salt) {
417
+ return null;
418
+ }
419
+ const decrypted = decryptWithPin(encrypted, hashedPin, salt);
420
+ if (!decrypted) {
421
+ throw new AbcError("INVALID_PIN" /* INVALID_PIN */, "Incorrect PIN");
422
+ }
423
+ const tokenData = JSON.parse(decrypted);
424
+ return tokenData;
425
+ } catch (error) {
426
+ console.error("Failed to load encrypted tokens:", error);
427
+ if (error instanceof AbcError) {
428
+ throw error;
429
+ }
430
+ throw new AbcError(
431
+ "DECRYPTION_FAILED" /* DECRYPTION_FAILED */,
432
+ "Failed to decrypt tokens"
433
+ );
434
+ }
435
+ }
436
+ function clearEncryptedTokens() {
437
+ removeFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
438
+ removeFromStorage("token_salt" /* TOKEN_SALT */);
439
+ }
440
+
441
+ export {
442
+ hashPin,
443
+ validatePin,
444
+ validateEmail,
445
+ getStorageKey,
446
+ saveToStorage,
447
+ loadFromStorage,
448
+ removeFromStorage,
449
+ clearStorage,
450
+ isTokenExpired,
451
+ calculateExpiryTimestamp,
452
+ saveAuthState,
453
+ loadAuthState,
454
+ clearAuthState,
455
+ getChainType,
456
+ formatAddress,
457
+ createAbcError,
458
+ sleep,
459
+ retry,
460
+ parseApiError,
461
+ isBrowser,
462
+ isWeb3Available,
463
+ generateId,
464
+ deepClone,
465
+ isEmpty,
466
+ debounce,
467
+ throttle,
468
+ hexToNumber,
469
+ numberToHex,
470
+ isValidEthereumAddress,
471
+ isValidSolanaAddress,
472
+ getExplorerUrl,
473
+ hasEncryptedTokens,
474
+ saveEncryptedTokens,
475
+ loadEncryptedTokens,
476
+ clearEncryptedTokens
477
+ };