@talken/talkenkit 2.4.23 → 2.4.24

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 (228) hide show
  1. package/dist/AbcCredentialManager-E723A55X.js +7 -0
  2. package/dist/AbcCredentialManager-GUV5JQ2V.js +7 -0
  3. package/dist/AbcCredentialManager-Z7GDJHYR.js +7 -0
  4. package/dist/abcWallet-3PWHJXWR.js +181 -0
  5. package/dist/abcWallet-3XPV7ATY.js +185 -0
  6. package/dist/abcWallet-3XSSUDLJ.js +155 -0
  7. package/dist/abcWallet-53HAU4MH.js +155 -0
  8. package/dist/abcWallet-5B2YHZGY.js +155 -0
  9. package/dist/abcWallet-664AHBNM.js +183 -0
  10. package/dist/abcWallet-BV7HK3OX.js +181 -0
  11. package/dist/abcWallet-CRKQ3O6J.js +155 -0
  12. package/dist/abcWallet-H4JOSC4N.js +155 -0
  13. package/dist/abcWallet-HM7KZIMP.js +155 -0
  14. package/dist/abcWallet-I5DVALAS.js +155 -0
  15. package/dist/abcWallet-IF3EOKHC.js +183 -0
  16. package/dist/abcWallet-IUG22ZE3.js +155 -0
  17. package/dist/abcWallet-IYC3CKEO.js +155 -0
  18. package/dist/abcWallet-JE6UR4QF.js +181 -0
  19. package/dist/abcWallet-KPKVEGNP.js +185 -0
  20. package/dist/abcWallet-MZAL5NXP.js +181 -0
  21. package/dist/abcWallet-N2UADRNR.js +155 -0
  22. package/dist/abcWallet-OGHORNUW.js +181 -0
  23. package/dist/abcWallet-QSK6VJFU.js +181 -0
  24. package/dist/abcWallet-RKT3W3FX.js +155 -0
  25. package/dist/abcWallet-VHXTAARP.js +155 -0
  26. package/dist/abcWallet-YFYTW2JH.js +155 -0
  27. package/dist/abcWallet-ZPVQY4XE.js +155 -0
  28. package/dist/chunk-3VPMUBCL.js +5196 -0
  29. package/dist/chunk-5SDWPKKX.js +5322 -0
  30. package/dist/chunk-6RBGFYAF.js +5076 -0
  31. package/dist/chunk-7L2ANWBB.js +5139 -0
  32. package/dist/chunk-7VIEAJAM.js +5172 -0
  33. package/dist/chunk-BY6GTSWI.js +5059 -0
  34. package/dist/chunk-DWE3CZEL.js +5171 -0
  35. package/dist/chunk-J6P2IT7Z.js +5465 -0
  36. package/dist/chunk-JIRBQUIB.js +5348 -0
  37. package/dist/chunk-K6CLOFGV.js +5129 -0
  38. package/dist/chunk-KYTIQ23P.js +5390 -0
  39. package/dist/chunk-MARFD3QV.js +5164 -0
  40. package/dist/chunk-MRRWKS2W.js +348 -0
  41. package/dist/chunk-PILL2YTG.js +5075 -0
  42. package/dist/chunk-QW7D53VM.js +5129 -0
  43. package/dist/chunk-RAWLCGOW.js +5058 -0
  44. package/dist/chunk-SHUPSYR2.js +5004 -0
  45. package/dist/chunk-UIGQOSRS.js +5174 -0
  46. package/dist/chunk-UINIIZCG.js +5098 -0
  47. package/dist/chunk-VOQSYTG3.js +5419 -0
  48. package/dist/chunk-VT5Q2XKZ.js +5193 -0
  49. package/dist/chunk-VXQYKPGQ.js +5476 -0
  50. package/dist/chunk-VYLJNEKY.js +5129 -0
  51. package/dist/chunk-X24B5DJR.js +323 -0
  52. package/dist/chunk-X3C73JWU.js +5370 -0
  53. package/dist/chunk-XIDK5P36.js +288 -0
  54. package/dist/chunk-ZHRI7SGC.js +5359 -0
  55. package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthFlow.d.ts +1 -2
  56. package/dist/components/RainbowKitProvider/InternalPinProvider.d.ts +1 -1
  57. package/dist/contexts/MultiChainContext.d.ts +2 -2
  58. package/dist/hooks/internal/abcEmbeddedWallet.d.ts +26 -0
  59. package/dist/hooks/useSolanaWallet.d.ts +4 -0
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +10379 -10417
  62. package/dist/providers/AbcAuthProvider.d.ts +3 -1
  63. package/dist/utils/encryption.d.ts +0 -4
  64. package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.d.ts +49 -0
  65. package/dist/wallets/walletConnectors/abcWallet/AbcCredentialManager.js +8 -0
  66. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.d.ts +4 -0
  67. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +12 -15
  68. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
  69. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +2 -0
  70. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +3 -1
  71. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +6 -5
  72. package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +25 -1
  73. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +4 -3
  74. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +3 -1
  75. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +12 -7
  76. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +3 -2
  77. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +3 -1
  78. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -6
  79. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +1 -0
  80. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +3 -2
  81. package/dist/wallets/walletConnectors/abcWallet/api/index.js +6 -5
  82. package/dist/wallets/walletConnectors/abcWallet/backfillMissingWallets.d.ts +3 -0
  83. package/dist/wallets/walletConnectors/abcWallet/backfillMissingWallets.js +16 -0
  84. package/dist/wallets/walletConnectors/abcWallet/index.d.ts +2 -1
  85. package/dist/wallets/walletConnectors/abcWallet/index.js +22 -48
  86. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +2 -1
  87. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +6 -9
  88. package/dist/wallets/walletConnectors/abcWallet/types.js +1 -1
  89. package/dist/wallets/walletConnectors/abcWallet/utils.d.ts +0 -83
  90. package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -40
  91. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.d.ts +9 -3
  92. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +5 -2
  93. package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
  94. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  95. package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
  96. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  97. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  98. package/dist/wallets/walletConnectors/chunk-2XX4LJSQ.js +1387 -0
  99. package/dist/wallets/walletConnectors/chunk-3BUGPUMD.js +151 -0
  100. package/dist/wallets/walletConnectors/chunk-3H7YKUJZ.js +1407 -0
  101. package/dist/wallets/walletConnectors/chunk-3OWQ6MEU.js +54 -0
  102. package/dist/wallets/walletConnectors/chunk-3VDYWOS4.js +300 -0
  103. package/dist/wallets/walletConnectors/chunk-3XOXT4AM.js +314 -0
  104. package/dist/wallets/walletConnectors/chunk-42D2UPKR.js +439 -0
  105. package/dist/wallets/walletConnectors/chunk-42MF6LUP.js +563 -0
  106. package/dist/wallets/walletConnectors/chunk-4LIJB776.js +273 -0
  107. package/dist/wallets/walletConnectors/chunk-4P3SPC44.js +51 -0
  108. package/dist/wallets/walletConnectors/chunk-4RZVAQQ4.js +574 -0
  109. package/dist/wallets/walletConnectors/chunk-53UTBIKF.js +209 -0
  110. package/dist/wallets/walletConnectors/chunk-54KVT46V.js +1477 -0
  111. package/dist/wallets/walletConnectors/chunk-5UBUX5BT.js +440 -0
  112. package/dist/wallets/walletConnectors/chunk-5ZBV5WE2.js +94 -0
  113. package/dist/wallets/walletConnectors/chunk-6EUOVOQK.js +151 -0
  114. package/dist/wallets/walletConnectors/chunk-6YUJPIJ5.js +351 -0
  115. package/dist/wallets/walletConnectors/chunk-77YYMCMD.js +273 -0
  116. package/dist/wallets/walletConnectors/chunk-7EQNUYV2.js +482 -0
  117. package/dist/wallets/walletConnectors/chunk-7K77YGQN.js +54 -0
  118. package/dist/wallets/walletConnectors/chunk-7MMVOEZF.js +393 -0
  119. package/dist/wallets/walletConnectors/chunk-7RDMH4SD.js +54 -0
  120. package/dist/wallets/walletConnectors/chunk-7S4N4DRT.js +306 -0
  121. package/dist/wallets/walletConnectors/chunk-7SWRH3EI.js +96 -0
  122. package/dist/wallets/walletConnectors/chunk-A3OJZTDV.js +54 -0
  123. package/dist/wallets/walletConnectors/chunk-AJBRO3VA.js +300 -0
  124. package/dist/wallets/walletConnectors/chunk-BKVGLYLI.js +194 -0
  125. package/dist/wallets/walletConnectors/chunk-C3FPON5L.js +213 -0
  126. package/dist/wallets/walletConnectors/chunk-CBIDNYV4.js +1407 -0
  127. package/dist/wallets/walletConnectors/chunk-DD6KK4BR.js +54 -0
  128. package/dist/wallets/walletConnectors/chunk-DSNVWCPD.js +131 -0
  129. package/dist/wallets/walletConnectors/chunk-DULGAYBU.js +785 -0
  130. package/dist/wallets/walletConnectors/chunk-DZUXOGSA.js +54 -0
  131. package/dist/wallets/walletConnectors/chunk-EVJIFLSY.js +93 -0
  132. package/dist/wallets/walletConnectors/chunk-EVW3ZB3Q.js +386 -0
  133. package/dist/wallets/walletConnectors/chunk-F2UWSAMX.js +54 -0
  134. package/dist/wallets/walletConnectors/chunk-FBVPR472.js +314 -0
  135. package/dist/wallets/walletConnectors/chunk-FKS2YLVW.js +273 -0
  136. package/dist/wallets/walletConnectors/chunk-FOGNJZPY.js +54 -0
  137. package/dist/wallets/walletConnectors/chunk-FSSV6JY3.js +54 -0
  138. package/dist/wallets/walletConnectors/chunk-GFLJ2MAG.js +54 -0
  139. package/dist/wallets/walletConnectors/chunk-GGPJJ6KS.js +1407 -0
  140. package/dist/wallets/walletConnectors/chunk-GMAYKJEI.js +508 -0
  141. package/dist/wallets/walletConnectors/chunk-H3OWNM73.js +300 -0
  142. package/dist/wallets/walletConnectors/chunk-INT6LGH7.js +180 -0
  143. package/dist/wallets/walletConnectors/chunk-ITZ42A33.js +273 -0
  144. package/dist/wallets/walletConnectors/chunk-J4IF6BFF.js +300 -0
  145. package/dist/wallets/walletConnectors/chunk-JAMJLNYQ.js +54 -0
  146. package/dist/wallets/walletConnectors/chunk-JDJUIRGF.js +439 -0
  147. package/dist/wallets/walletConnectors/chunk-JEWCPQJZ.js +300 -0
  148. package/dist/wallets/walletConnectors/chunk-JK7LJ4B6.js +1407 -0
  149. package/dist/wallets/walletConnectors/chunk-JPOSJU2D.js +594 -0
  150. package/dist/wallets/walletConnectors/chunk-JUFEPIO4.js +1479 -0
  151. package/dist/wallets/walletConnectors/chunk-JV4IC5Z7.js +54 -0
  152. package/dist/wallets/walletConnectors/chunk-MP3WVXPS.js +273 -0
  153. package/dist/wallets/walletConnectors/chunk-MTC2HJPF.js +96 -0
  154. package/dist/wallets/walletConnectors/chunk-MTJF3SVB.js +1487 -0
  155. package/dist/wallets/walletConnectors/chunk-NBVPVTJZ.js +192 -0
  156. package/dist/wallets/walletConnectors/chunk-NISMGNEE.js +223 -0
  157. package/dist/wallets/walletConnectors/chunk-NY5O2OBG.js +1477 -0
  158. package/dist/wallets/walletConnectors/chunk-OYF6AQOW.js +194 -0
  159. package/dist/wallets/walletConnectors/chunk-PBOCVGUC.js +782 -0
  160. package/dist/wallets/walletConnectors/chunk-PJSN4YRI.js +1387 -0
  161. package/dist/wallets/walletConnectors/chunk-PVIO7FM7.js +314 -0
  162. package/dist/wallets/walletConnectors/chunk-PWJOXYDF.js +54 -0
  163. package/dist/wallets/walletConnectors/chunk-PYBSONED.js +771 -0
  164. package/dist/wallets/walletConnectors/chunk-PYKECUZ3.js +54 -0
  165. package/dist/wallets/walletConnectors/chunk-Q42NO7WB.js +46 -0
  166. package/dist/wallets/walletConnectors/chunk-Q7XBI5F6.js +300 -0
  167. package/dist/wallets/walletConnectors/chunk-QHUBLT7N.js +156 -0
  168. package/dist/wallets/walletConnectors/chunk-RMV23JXO.js +300 -0
  169. package/dist/wallets/walletConnectors/chunk-S3L2SA4J.js +300 -0
  170. package/dist/wallets/walletConnectors/chunk-S466OQOC.js +393 -0
  171. package/dist/wallets/walletConnectors/chunk-SA7IXAFG.js +54 -0
  172. package/dist/wallets/walletConnectors/chunk-SDB6BBHX.js +585 -0
  173. package/dist/wallets/walletConnectors/chunk-SFGVPX2G.js +351 -0
  174. package/dist/wallets/walletConnectors/chunk-SFQKJ6X6.js +314 -0
  175. package/dist/wallets/walletConnectors/chunk-SKLRJRER.js +1464 -0
  176. package/dist/wallets/walletConnectors/chunk-SQVWIBWR.js +351 -0
  177. package/dist/wallets/walletConnectors/chunk-SSLHXCOX.js +439 -0
  178. package/dist/wallets/walletConnectors/chunk-SU6LV3EO.js +314 -0
  179. package/dist/wallets/walletConnectors/chunk-SU7IEZE2.js +300 -0
  180. package/dist/wallets/walletConnectors/chunk-TMRB5SCL.js +167 -0
  181. package/dist/wallets/walletConnectors/chunk-TMUPUOQR.js +54 -0
  182. package/dist/wallets/walletConnectors/chunk-TNZ7QKXH.js +771 -0
  183. package/dist/wallets/walletConnectors/chunk-TT2NLKIU.js +1465 -0
  184. package/dist/wallets/walletConnectors/chunk-U3WGMWTH.js +585 -0
  185. package/dist/wallets/walletConnectors/chunk-UAV4SI4Y.js +408 -0
  186. package/dist/wallets/walletConnectors/chunk-UAWWPNS7.js +54 -0
  187. package/dist/wallets/walletConnectors/chunk-UXRJASPW.js +785 -0
  188. package/dist/wallets/walletConnectors/chunk-UY5TAYLM.js +54 -0
  189. package/dist/wallets/walletConnectors/chunk-VB5IZDY7.js +300 -0
  190. package/dist/wallets/walletConnectors/chunk-VIKJNKJZ.js +219 -0
  191. package/dist/wallets/walletConnectors/chunk-VVEXF6KG.js +273 -0
  192. package/dist/wallets/walletConnectors/chunk-W2YIRNMB.js +300 -0
  193. package/dist/wallets/walletConnectors/chunk-W7L2SBIG.js +138 -0
  194. package/dist/wallets/walletConnectors/chunk-WS5FG53X.js +54 -0
  195. package/dist/wallets/walletConnectors/chunk-WVRGC2YL.js +300 -0
  196. package/dist/wallets/walletConnectors/chunk-X33WL7R7.js +300 -0
  197. package/dist/wallets/walletConnectors/chunk-XG2R64B7.js +785 -0
  198. package/dist/wallets/walletConnectors/chunk-Y2BWF42Z.js +54 -0
  199. package/dist/wallets/walletConnectors/chunk-Y446VZWI.js +585 -0
  200. package/dist/wallets/walletConnectors/chunk-YROAFC7Z.js +54 -0
  201. package/dist/wallets/walletConnectors/chunk-Z4WVT3G2.js +1416 -0
  202. package/dist/wallets/walletConnectors/chunk-ZK3PZIAH.js +300 -0
  203. package/dist/wallets/walletConnectors/chunk-ZPJLV3E7.js +151 -0
  204. package/dist/wallets/walletConnectors/chunk-ZQ3LCYGH.js +408 -0
  205. package/dist/wallets/walletConnectors/chunk-ZX6HMX7N.js +1468 -0
  206. package/dist/wallets/walletConnectors/chunk-ZXN465CA.js +209 -0
  207. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  208. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  209. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  210. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  211. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  212. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  213. package/dist/wallets/walletConnectors/index.js +89 -88
  214. package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
  215. package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
  216. package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
  217. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  218. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  219. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  220. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  221. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  222. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  223. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  224. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  225. package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
  226. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  227. package/package.json +12 -11
  228. package/LICENSE +0 -9
@@ -0,0 +1,192 @@
1
+ "use client";
2
+ import {
3
+ encryptWithPin
4
+ } from "./chunk-Q42NO7WB.js";
5
+ import {
6
+ getTalkenApiClient
7
+ } from "./chunk-R6ZE7JAZ.js";
8
+ import {
9
+ getBitcoinNetwork,
10
+ getEvmNetwork,
11
+ getSolanaNetwork,
12
+ getTronNetwork
13
+ } from "./chunk-O4AU63LK.js";
14
+ import {
15
+ saveAuthState
16
+ } from "./chunk-7EQNUYV2.js";
17
+
18
+ // src/wallets/walletConnectors/abcWallet/backfillMissingWallets.ts
19
+ var STORAGE_PREFIX = "talkenkit_abc_";
20
+ function writeBackfillDebug(payload) {
21
+ try {
22
+ localStorage.setItem(
23
+ `${STORAGE_PREFIX}backfill_debug`,
24
+ JSON.stringify({
25
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
26
+ ...payload
27
+ })
28
+ );
29
+ } catch {
30
+ }
31
+ }
32
+ function hasMissingBackfillableWallets(authState) {
33
+ if (!authState?.wallet?.address) {
34
+ return false;
35
+ }
36
+ return !authState.solanaWallet || !authState.bitcoinWallet || !authState.tronWallet;
37
+ }
38
+ async function backfillMissingWallets(authState) {
39
+ if (!hasMissingBackfillableWallets(authState)) {
40
+ writeBackfillDebug({
41
+ status: "skipped",
42
+ reason: "nothing-missing"
43
+ });
44
+ return authState;
45
+ }
46
+ const hashedPin = localStorage.getItem(`${STORAGE_PREFIX}pin_hash`);
47
+ const email = authState.user?.email || authState.wallet?.email || localStorage.getItem(`${STORAGE_PREFIX}saved_email`);
48
+ writeBackfillDebug({
49
+ status: "started",
50
+ hasHashedPin: !!hashedPin,
51
+ hasEmail: !!email,
52
+ hasWallet: !!authState.wallet?.address,
53
+ hasSolanaWallet: !!authState.solanaWallet,
54
+ hasBitcoinWallet: !!authState.bitcoinWallet,
55
+ hasTronWallet: !!authState.tronWallet
56
+ });
57
+ if (!hashedPin || !email) {
58
+ writeBackfillDebug({
59
+ status: "blocked",
60
+ reason: !hashedPin ? "missing-pin-hash" : "missing-email",
61
+ hasHashedPin: !!hashedPin,
62
+ hasEmail: !!email
63
+ });
64
+ return null;
65
+ }
66
+ const api = getTalkenApiClient();
67
+ if (!api) {
68
+ writeBackfillDebug({
69
+ status: "blocked",
70
+ reason: "missing-api-client",
71
+ hasHashedPin: true,
72
+ hasEmail: true
73
+ });
74
+ return null;
75
+ }
76
+ try {
77
+ api.setTokens(
78
+ authState.accessToken || "",
79
+ authState.refreshToken || "",
80
+ authState.expiresAt || 0
81
+ );
82
+ const genResponse = await api.wallet.generate(hashedPin, email);
83
+ const infoResponse = await api.wallet.getInfo();
84
+ const uid = authState.user?.uid || genResponse.uid;
85
+ const accounts = infoResponse?.accounts || [];
86
+ const evmAccount = accounts[0] || infoResponse || {};
87
+ const pubkey = authState.wallet?.pubkey || evmAccount.pubkey || genResponse.pubkey || "";
88
+ const sid = authState.wallet?.sid || evmAccount.sid || authState.wallet?.address;
89
+ const nextAuthState = {
90
+ ...authState,
91
+ isAuthenticated: true,
92
+ user: authState.user || {
93
+ uid,
94
+ email,
95
+ provider: "email"
96
+ },
97
+ wallet: authState.wallet || {
98
+ address: sid,
99
+ chainId: getEvmNetwork(),
100
+ uid,
101
+ sid,
102
+ type: "evm",
103
+ email,
104
+ encryptedShare: "",
105
+ keyId: "0",
106
+ sessionId: sid
107
+ },
108
+ solanaWallet: authState.solanaWallet || (genResponse.solAddress ? {
109
+ uid,
110
+ sessionId: genResponse.solana?.keyId || "",
111
+ shareId: genResponse.solana?.keyId || "",
112
+ publicKey: genResponse.solana?.publicKey || "",
113
+ address: genResponse.solAddress,
114
+ keyId: genResponse.solana?.keyId || "",
115
+ encryptedShare: genResponse.solana?.encryptedShare || "",
116
+ secretStore: genResponse.solana?.secretStore || "",
117
+ network: getSolanaNetwork()
118
+ } : null),
119
+ bitcoinWallet: authState.bitcoinWallet || (genResponse.btcAddress ? {
120
+ uid,
121
+ sessionId: "",
122
+ shareId: "",
123
+ publicKey: pubkey,
124
+ address: genResponse.btcAddress,
125
+ keyId: "",
126
+ encryptedShare: "",
127
+ addressType: "bech32",
128
+ network: getBitcoinNetwork()
129
+ } : null),
130
+ tronWallet: authState.tronWallet || (genResponse.trxAddress ? {
131
+ uid,
132
+ sessionId: "",
133
+ shareId: "",
134
+ publicKey: pubkey,
135
+ address: genResponse.trxAddress,
136
+ keyId: "",
137
+ encryptedShare: "",
138
+ network: getTronNetwork()
139
+ } : null)
140
+ };
141
+ saveAuthState(nextAuthState);
142
+ const saltHex = localStorage.getItem(`${STORAGE_PREFIX}enc_salt`);
143
+ const salt = saltHex ? new Uint8Array(
144
+ saltHex.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
145
+ ) : crypto.getRandomValues(new Uint8Array(16));
146
+ const encryptedSensitiveData = await encryptWithPin(
147
+ JSON.stringify({
148
+ accessToken: nextAuthState.accessToken,
149
+ refreshToken: nextAuthState.refreshToken,
150
+ expiresAt: nextAuthState.expiresAt,
151
+ solanaWallet: nextAuthState.solanaWallet,
152
+ bitcoinWallet: nextAuthState.bitcoinWallet,
153
+ tronWallet: nextAuthState.tronWallet
154
+ }),
155
+ hashedPin,
156
+ salt
157
+ );
158
+ localStorage.setItem(
159
+ `${STORAGE_PREFIX}enc_salt`,
160
+ Array.from(salt).map((byte) => byte.toString(16).padStart(2, "0")).join("")
161
+ );
162
+ localStorage.setItem(`${STORAGE_PREFIX}enc_tokens`, encryptedSensitiveData);
163
+ localStorage.setItem(`${STORAGE_PREFIX}saved_email`, email);
164
+ window.dispatchEvent(
165
+ new CustomEvent("talkenkit:token_updated", {
166
+ detail: { expiresAt: nextAuthState.expiresAt }
167
+ })
168
+ );
169
+ window.dispatchEvent(new Event("talkenkit_storage_update"));
170
+ writeBackfillDebug({
171
+ status: "completed",
172
+ hasSolanaWallet: !!nextAuthState.solanaWallet,
173
+ hasBitcoinWallet: !!nextAuthState.bitcoinWallet,
174
+ hasTronWallet: !!nextAuthState.tronWallet,
175
+ generatedSolAddress: genResponse.solAddress || null,
176
+ generatedBtcAddress: genResponse.btcAddress || null,
177
+ generatedTrxAddress: genResponse.trxAddress || null
178
+ });
179
+ return nextAuthState;
180
+ } catch (error) {
181
+ writeBackfillDebug({
182
+ status: "failed",
183
+ reason: error instanceof Error ? error.message : "unknown-error"
184
+ });
185
+ throw error;
186
+ }
187
+ }
188
+
189
+ export {
190
+ hasMissingBackfillableWallets,
191
+ backfillMissingWallets
192
+ };
@@ -0,0 +1,223 @@
1
+ "use client";
2
+ import {
3
+ AbcError
4
+ } from "./chunk-4P3SPC44.js";
5
+ import {
6
+ PIN_CONFIG,
7
+ STORAGE_PREFIX,
8
+ TOKEN_EXPIRY
9
+ } from "./chunk-TQXCRSMS.js";
10
+
11
+ // src/wallets/walletConnectors/abcWallet/utils.ts
12
+ async function hashPin(pin) {
13
+ if (typeof window === "undefined" || !window.crypto?.subtle) {
14
+ return btoa(pin);
15
+ }
16
+ const encoder = new TextEncoder();
17
+ const data = encoder.encode(pin);
18
+ const hashBuffer = await window.crypto.subtle.digest("SHA-256", data);
19
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
20
+ const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
21
+ return hashHex;
22
+ }
23
+ function validatePin(pin) {
24
+ if (!pin || typeof pin !== "string") {
25
+ return false;
26
+ }
27
+ const pinLength = pin.length;
28
+ if (pinLength < PIN_CONFIG.MIN_LENGTH || pinLength > PIN_CONFIG.MAX_LENGTH) {
29
+ return false;
30
+ }
31
+ return /^\d+$/.test(pin);
32
+ }
33
+ function validateEmail(email) {
34
+ if (!email || typeof email !== "string") {
35
+ return false;
36
+ }
37
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
38
+ return emailRegex.test(email);
39
+ }
40
+ function getStorageKey(key) {
41
+ return `${STORAGE_PREFIX}${key}`;
42
+ }
43
+ function saveToStorage(key, value) {
44
+ if (typeof window === "undefined")
45
+ return;
46
+ try {
47
+ const storageKey = getStorageKey(key);
48
+ const serialized = JSON.stringify(value);
49
+ localStorage.setItem(storageKey, serialized);
50
+ } catch (error) {
51
+ console.error("Failed to save to storage:", error);
52
+ }
53
+ }
54
+ function loadFromStorage(key) {
55
+ if (typeof window === "undefined")
56
+ return null;
57
+ try {
58
+ const storageKey = getStorageKey(key);
59
+ const serialized = localStorage.getItem(storageKey);
60
+ if (!serialized)
61
+ return null;
62
+ try {
63
+ return JSON.parse(serialized);
64
+ } catch {
65
+ return serialized;
66
+ }
67
+ } catch (error) {
68
+ console.error("Failed to load from storage:", error);
69
+ return null;
70
+ }
71
+ }
72
+ function removeFromStorage(key) {
73
+ if (typeof window === "undefined")
74
+ return;
75
+ try {
76
+ const storageKey = getStorageKey(key);
77
+ localStorage.removeItem(storageKey);
78
+ } catch (error) {
79
+ console.error("Failed to remove from storage:", error);
80
+ }
81
+ }
82
+ function clearStorage() {
83
+ if (typeof window === "undefined")
84
+ return;
85
+ const keysToRemove = [];
86
+ for (let i = 0; i < localStorage.length; i++) {
87
+ const key = localStorage.key(i);
88
+ if (key?.startsWith(STORAGE_PREFIX)) {
89
+ keysToRemove.push(key);
90
+ }
91
+ }
92
+ for (const key of keysToRemove) {
93
+ localStorage.removeItem(key);
94
+ }
95
+ }
96
+ function isTokenExpired(expiresAt) {
97
+ if (!expiresAt)
98
+ return true;
99
+ return Date.now() >= expiresAt - TOKEN_EXPIRY.REFRESH_BUFFER;
100
+ }
101
+ function calculateExpiryTimestamp(expiresIn) {
102
+ return Date.now() + expiresIn * 1e3;
103
+ }
104
+ function saveAuthState(state) {
105
+ saveToStorage("auth_state" /* AUTH_STATE */, state);
106
+ if (state.user) {
107
+ saveToStorage("user" /* USER */, state.user);
108
+ }
109
+ if (state.wallet) {
110
+ saveToStorage("wallet" /* WALLET */, state.wallet);
111
+ }
112
+ if (state.solanaWallet) {
113
+ saveToStorage("solana_wallet" /* SOLANA_WALLET */, state.solanaWallet);
114
+ }
115
+ if (state.bitcoinWallet) {
116
+ saveToStorage("bitcoin_wallet" /* BITCOIN_WALLET */, state.bitcoinWallet);
117
+ }
118
+ if (state.tronWallet) {
119
+ saveToStorage("tron_wallet" /* TRON_WALLET */, state.tronWallet);
120
+ }
121
+ if (state.accessToken) {
122
+ saveToStorage("access_token" /* ACCESS_TOKEN */, state.accessToken);
123
+ }
124
+ if (state.refreshToken) {
125
+ saveToStorage("refresh_token" /* REFRESH_TOKEN */, state.refreshToken);
126
+ }
127
+ if (state.expiresAt) {
128
+ saveToStorage("expires_at" /* EXPIRES_AT */, state.expiresAt);
129
+ }
130
+ }
131
+ function hydrateAuthStateFromIndividualStorage(state) {
132
+ const user = loadFromStorage("user" /* USER */);
133
+ const wallet = loadFromStorage("wallet" /* WALLET */);
134
+ const solanaWallet = loadFromStorage(
135
+ "solana_wallet" /* SOLANA_WALLET */
136
+ );
137
+ const bitcoinWallet = loadFromStorage(
138
+ "bitcoin_wallet" /* BITCOIN_WALLET */
139
+ );
140
+ const tronWallet = loadFromStorage("tron_wallet" /* TRON_WALLET */);
141
+ const accessToken = loadFromStorage("access_token" /* ACCESS_TOKEN */);
142
+ const refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
143
+ const expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
144
+ const nextState = {
145
+ ...state,
146
+ user: state.user || user || null,
147
+ wallet: state.wallet || wallet || null,
148
+ solanaWallet: state.solanaWallet || solanaWallet || null,
149
+ bitcoinWallet: state.bitcoinWallet || bitcoinWallet || null,
150
+ tronWallet: state.tronWallet || tronWallet || null,
151
+ accessToken: state.accessToken || accessToken || null,
152
+ refreshToken: state.refreshToken || refreshToken || null,
153
+ expiresAt: state.expiresAt || expiresAt || null
154
+ };
155
+ const wasHydrated = nextState.user !== state.user || nextState.wallet !== state.wallet || nextState.solanaWallet !== state.solanaWallet || nextState.bitcoinWallet !== state.bitcoinWallet || nextState.tronWallet !== state.tronWallet || nextState.accessToken !== state.accessToken || nextState.refreshToken !== state.refreshToken || nextState.expiresAt !== state.expiresAt;
156
+ if (wasHydrated) {
157
+ saveToStorage("auth_state" /* AUTH_STATE */, nextState);
158
+ }
159
+ return nextState;
160
+ }
161
+ function loadAuthState() {
162
+ const state = loadFromStorage("auth_state" /* AUTH_STATE */);
163
+ if (state) {
164
+ if (state.accessToken && isTokenExpired(state.expiresAt)) {
165
+ clearStorage();
166
+ return null;
167
+ }
168
+ return hydrateAuthStateFromIndividualStorage(state);
169
+ }
170
+ const user = loadFromStorage("user" /* USER */);
171
+ const wallet = loadFromStorage("wallet" /* WALLET */);
172
+ const solanaWallet = loadFromStorage("solana_wallet" /* SOLANA_WALLET */);
173
+ const accessToken = loadFromStorage("access_token" /* ACCESS_TOKEN */);
174
+ const refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
175
+ const expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
176
+ if (!user || !accessToken) {
177
+ return null;
178
+ }
179
+ const bitcoinWallet = loadFromStorage("bitcoin_wallet" /* BITCOIN_WALLET */);
180
+ const tronWallet = loadFromStorage("tron_wallet" /* TRON_WALLET */);
181
+ return {
182
+ isAuthenticated: true,
183
+ user,
184
+ wallet,
185
+ solanaWallet,
186
+ bitcoinWallet,
187
+ tronWallet,
188
+ accessToken,
189
+ refreshToken,
190
+ expiresAt
191
+ };
192
+ }
193
+ function clearAuthState() {
194
+ clearStorage();
195
+ }
196
+ function createAbcError(code, message, details, statusCode) {
197
+ return new AbcError(code, message, details, statusCode);
198
+ }
199
+ function hexToNumber(hex) {
200
+ return Number.parseInt(hex, 16);
201
+ }
202
+ function numberToHex(num) {
203
+ return `0x${num.toString(16)}`;
204
+ }
205
+
206
+ export {
207
+ hashPin,
208
+ validatePin,
209
+ validateEmail,
210
+ getStorageKey,
211
+ saveToStorage,
212
+ loadFromStorage,
213
+ removeFromStorage,
214
+ clearStorage,
215
+ isTokenExpired,
216
+ calculateExpiryTimestamp,
217
+ saveAuthState,
218
+ loadAuthState,
219
+ clearAuthState,
220
+ createAbcError,
221
+ hexToNumber,
222
+ numberToHex
223
+ };