@talken/talkenkit 2.4.23 → 2.4.25

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