@talken/talkenkit 2.4.21 → 2.4.22

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 (175) hide show
  1. package/LICENSE +9 -0
  2. package/dist/abcWallet-4RS3B4ZG.js +188 -0
  3. package/dist/abcWallet-EBOW2RJB.js +188 -0
  4. package/dist/abcWallet-RS4EOJ4I.js +188 -0
  5. package/dist/abcWallet-SNEZVK7V.js +188 -0
  6. package/dist/abcWallet-TC7M2JYX.js +188 -0
  7. package/dist/abcWallet-VZMW2DR3.js +188 -0
  8. package/dist/abcWallet-XJ3WSUVI.js +188 -0
  9. package/dist/abcWallet-XNCBZAIQ.js +188 -0
  10. package/dist/chunk-6FLQAAC4.js +7213 -0
  11. package/dist/chunk-7GIIMIPN.js +7213 -0
  12. package/dist/chunk-IBFA37SC.js +7228 -0
  13. package/dist/chunk-O5ZOC4NJ.js +7215 -0
  14. package/dist/chunk-OPOAKGEX.js +7216 -0
  15. package/dist/chunk-OTIHVCVR.js +7213 -0
  16. package/dist/chunk-P77BVZZF.js +7369 -0
  17. package/dist/chunk-RFLXXSQH.js +7139 -0
  18. package/dist/components/ConfirmationModal/NonEvmConfirmationModal.css.d.ts +11 -0
  19. package/dist/components/ConfirmationModal/NonEvmSignConfirmationModal.d.ts +9 -0
  20. package/dist/components/ConfirmationModal/NonEvmTransferConfirmationModal.d.ts +9 -0
  21. package/dist/components/ConfirmationModal/SignConfirmationModal.css.d.ts +1 -19
  22. package/dist/components/ConfirmationModal/TransactionConfirmationModal.css.d.ts +1 -20
  23. package/dist/components/ConfirmationModal/commonStyles.css.d.ts +19 -0
  24. package/dist/components/ConfirmationModal/index.d.ts +2 -0
  25. package/dist/components/ConfirmationModal/utils.d.ts +2 -1
  26. package/dist/hooks/useWalletCapabilities.d.ts +2 -0
  27. package/dist/index.css +227 -307
  28. package/dist/index.d.ts +4 -2
  29. package/dist/index.js +2004 -1064
  30. package/dist/providers/SignConfirmationProvider/NonEvmConfirmationContext.d.ts +6 -0
  31. package/dist/providers/SignConfirmationProvider/index.d.ts +2 -1
  32. package/dist/providers/SignConfirmationProvider/requestParsers.d.ts +6 -1
  33. package/dist/providers/SignConfirmationProvider/types.d.ts +35 -1
  34. package/dist/wallets/capabilities/detectCapabilities.d.ts +7 -0
  35. package/dist/wallets/capabilities/requestWalletAction.d.ts +8 -0
  36. package/dist/wallets/capabilities/types.d.ts +50 -0
  37. package/dist/wallets/walletConnectors/abcWallet/abcApi.js +3 -3
  38. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
  39. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +10 -0
  40. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  41. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +5 -5
  42. package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +9 -0
  43. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +3 -3
  44. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +10 -0
  45. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
  46. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +16 -0
  47. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +115 -33
  48. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +16 -0
  49. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +1 -1
  50. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -7
  51. package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +4 -4
  52. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +3 -3
  53. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +4 -4
  54. package/dist/wallets/walletConnectors/abcWallet/api/GasApi.js +4 -4
  55. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +4 -4
  56. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +9 -4
  57. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +2 -2
  58. package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +4 -4
  59. package/dist/wallets/walletConnectors/abcWallet/api/TronApi.js +4 -4
  60. package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +4 -4
  61. package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +4 -4
  62. package/dist/wallets/walletConnectors/abcWallet/api/index.js +13 -13
  63. package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +5 -4
  64. package/dist/wallets/walletConnectors/abcWallet/constants.js +1 -1
  65. package/dist/wallets/walletConnectors/abcWallet/index.js +21 -21
  66. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +31 -1
  67. package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
  68. package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
  69. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  70. package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
  71. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  72. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  73. package/dist/wallets/walletConnectors/chunk-2IZBLAHI.js +52 -0
  74. package/dist/wallets/walletConnectors/chunk-32IJ3ILH.js +71 -0
  75. package/dist/wallets/walletConnectors/chunk-3AX66UHT.js +479 -0
  76. package/dist/wallets/walletConnectors/chunk-3BVPV64G.js +36 -0
  77. package/dist/wallets/walletConnectors/chunk-3DGFHWI3.js +302 -0
  78. package/dist/wallets/walletConnectors/chunk-4FKUVQCM.js +655 -0
  79. package/dist/wallets/walletConnectors/chunk-56SF4VRC.js +640 -0
  80. package/dist/wallets/walletConnectors/chunk-5KOE7NJW.js +52 -0
  81. package/dist/wallets/walletConnectors/chunk-6CVXZ3ZW.js +771 -0
  82. package/dist/wallets/walletConnectors/chunk-6GCWEPU7.js +643 -0
  83. package/dist/wallets/walletConnectors/chunk-6YFP3Q2I.js +118 -0
  84. package/dist/wallets/walletConnectors/chunk-7EEPPULA.js +118 -0
  85. package/dist/wallets/walletConnectors/chunk-7QL42XTB.js +302 -0
  86. package/dist/wallets/walletConnectors/chunk-A7ZSPSFX.js +577 -0
  87. package/dist/wallets/walletConnectors/chunk-AI3CT254.js +302 -0
  88. package/dist/wallets/walletConnectors/chunk-AMNVH7CZ.js +151 -0
  89. package/dist/wallets/walletConnectors/chunk-AOREXGRM.js +350 -0
  90. package/dist/wallets/walletConnectors/chunk-BLO7E54F.js +302 -0
  91. package/dist/wallets/walletConnectors/chunk-BNRH5PYS.js +52 -0
  92. package/dist/wallets/walletConnectors/chunk-BOV5FXU6.js +151 -0
  93. package/dist/wallets/walletConnectors/chunk-BR25RFNF.js +260 -0
  94. package/dist/wallets/walletConnectors/chunk-BXQ2UWJ3.js +91 -0
  95. package/dist/wallets/walletConnectors/chunk-CAMPW7O2.js +874 -0
  96. package/dist/wallets/walletConnectors/chunk-CLMFCNP7.js +52 -0
  97. package/dist/wallets/walletConnectors/chunk-DSZOE65L.js +107 -0
  98. package/dist/wallets/walletConnectors/chunk-DU6RCLWT.js +272 -0
  99. package/dist/wallets/walletConnectors/chunk-ENN6UGGA.js +421 -0
  100. package/dist/wallets/walletConnectors/chunk-EXWDLN5V.js +204 -0
  101. package/dist/wallets/walletConnectors/chunk-FFU26Y5Y.js +272 -0
  102. package/dist/wallets/walletConnectors/chunk-FGS2WHVA.js +118 -0
  103. package/dist/wallets/walletConnectors/chunk-FJJ3QI4R.js +91 -0
  104. package/dist/wallets/walletConnectors/chunk-FS2OOQYF.js +204 -0
  105. package/dist/wallets/walletConnectors/chunk-G5X3COSW.js +205 -0
  106. package/dist/wallets/walletConnectors/chunk-H53R4SFZ.js +204 -0
  107. package/dist/wallets/walletConnectors/chunk-J4QGDATF.js +71 -0
  108. package/dist/wallets/walletConnectors/chunk-JIJNCMJR.js +874 -0
  109. package/dist/wallets/walletConnectors/chunk-JSGZYU4A.js +52 -0
  110. package/dist/wallets/walletConnectors/chunk-JVT7R2GZ.js +771 -0
  111. package/dist/wallets/walletConnectors/chunk-K3JNN5UK.js +71 -0
  112. package/dist/wallets/walletConnectors/chunk-KBHPY3NA.js +302 -0
  113. package/dist/wallets/walletConnectors/chunk-KEX6WS23.js +640 -0
  114. package/dist/wallets/walletConnectors/chunk-KHYKVVR7.js +52 -0
  115. package/dist/wallets/walletConnectors/chunk-LOL7ZZ3S.js +302 -0
  116. package/dist/wallets/walletConnectors/chunk-LOSXI36Y.js +479 -0
  117. package/dist/wallets/walletConnectors/chunk-M2U5QGM7.js +260 -0
  118. package/dist/wallets/walletConnectors/chunk-M73AWLIV.js +107 -0
  119. package/dist/wallets/walletConnectors/chunk-MAUC46AE.js +302 -0
  120. package/dist/wallets/walletConnectors/chunk-MBRXYEQC.js +272 -0
  121. package/dist/wallets/walletConnectors/chunk-MDDD4LG2.js +874 -0
  122. package/dist/wallets/walletConnectors/chunk-MMR2QAEU.js +642 -0
  123. package/dist/wallets/walletConnectors/chunk-MNZZRFUC.js +302 -0
  124. package/dist/wallets/walletConnectors/chunk-OIRY24PH.js +302 -0
  125. package/dist/wallets/walletConnectors/chunk-ORBX4JE2.js +52 -0
  126. package/dist/wallets/walletConnectors/chunk-OXJFFDW7.js +761 -0
  127. package/dist/wallets/walletConnectors/chunk-QD3PPWTN.js +272 -0
  128. package/dist/wallets/walletConnectors/chunk-RCIABMG5.js +259 -0
  129. package/dist/wallets/walletConnectors/chunk-RHC4SVLB.js +71 -0
  130. package/dist/wallets/walletConnectors/chunk-S2CB4KFC.js +71 -0
  131. package/dist/wallets/walletConnectors/chunk-S6HZD4XZ.js +302 -0
  132. package/dist/wallets/walletConnectors/chunk-S72LCNVX.js +272 -0
  133. package/dist/wallets/walletConnectors/chunk-SCWE5EEX.js +91 -0
  134. package/dist/wallets/walletConnectors/chunk-TKEL4D4E.js +151 -0
  135. package/dist/wallets/walletConnectors/chunk-TKJEMEBZ.js +71 -0
  136. package/dist/wallets/walletConnectors/chunk-TZ44ZREA.js +302 -0
  137. package/dist/wallets/walletConnectors/chunk-UGQSI3US.js +547 -0
  138. package/dist/wallets/walletConnectors/chunk-UU4JYY3C.js +205 -0
  139. package/dist/wallets/walletConnectors/chunk-V5P5BL6Z.js +302 -0
  140. package/dist/wallets/walletConnectors/chunk-VH6DIRPF.js +71 -0
  141. package/dist/wallets/walletConnectors/chunk-VPNZAMW5.js +205 -0
  142. package/dist/wallets/walletConnectors/chunk-W6QN6QXO.js +52 -0
  143. package/dist/wallets/walletConnectors/chunk-WDULICVN.js +302 -0
  144. package/dist/wallets/walletConnectors/chunk-WGGHGODM.js +272 -0
  145. package/dist/wallets/walletConnectors/chunk-XUCMTLM3.js +52 -0
  146. package/dist/wallets/walletConnectors/chunk-Y5WAX6WO.js +52 -0
  147. package/dist/wallets/walletConnectors/chunk-Y62PFBWE.js +640 -0
  148. package/dist/wallets/walletConnectors/chunk-Z6ABK6G6.js +107 -0
  149. package/dist/wallets/walletConnectors/chunk-ZCA5QSIM.js +71 -0
  150. package/dist/wallets/walletConnectors/chunk-ZJDZJW55.js +479 -0
  151. package/dist/wallets/walletConnectors/chunk-ZOF7ZDGU.js +52 -0
  152. package/dist/wallets/walletConnectors/chunk-ZUU57RHO.js +36 -0
  153. package/dist/wallets/walletConnectors/chunk-ZWFGRREM.js +36 -0
  154. package/dist/wallets/walletConnectors/chunk-ZY5BCHP2.js +302 -0
  155. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  156. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  157. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  158. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  159. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  160. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  161. package/dist/wallets/walletConnectors/index.js +91 -91
  162. package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
  163. package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
  164. package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
  165. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  166. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  167. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  168. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  169. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  170. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  171. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  172. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  173. package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
  174. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  175. package/package.json +11 -12
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-MBRXYEQC.js";
5
+
6
+ // src/wallets/walletConnectors/abcWallet/api/GasApi.ts
7
+ import { getTalkenApiClient } from "@talken/talkenkit";
8
+ var GasApi = class extends BaseApiClient {
9
+ parseGasFees(data) {
10
+ return {
11
+ ...data,
12
+ networkCongestion: data.networkCongestion != null ? Number(data.networkCongestion) : void 0
13
+ };
14
+ }
15
+ /**
16
+ * Get suggested gas fees for EIP-1559 transactions via TalkenApiClient
17
+ *
18
+ * @param network - Network name (ethereum, polygon, klaytn, etc.)
19
+ * @returns Suggested gas fees or null if failed
20
+ */
21
+ async getSuggestedGasFees(network) {
22
+ const api = getTalkenApiClient();
23
+ if (!api)
24
+ throw new Error("TalkenApiClient not initialized");
25
+ try {
26
+ const gasFees = await api.evm.getGasSuggested(network);
27
+ return this.parseGasFees(gasFees);
28
+ } catch (error) {
29
+ console.warn(
30
+ "[GasApi] TalkenApi getGasSuggested failed:",
31
+ network,
32
+ error
33
+ );
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Estimate gas limit for EIP-1559 transaction via TalkenApiClient
39
+ *
40
+ * @param params - Transaction parameters
41
+ * @returns Gas limit (hex string) or null if failed
42
+ */
43
+ async estimateGas(params) {
44
+ const api = getTalkenApiClient();
45
+ if (!api)
46
+ throw new Error("TalkenApiClient not initialized");
47
+ try {
48
+ const response = await api.evm.estimateGas({
49
+ network: params.network,
50
+ from: params.from || "",
51
+ to: params.to,
52
+ value: params.value || "0x0",
53
+ data: params.data || "0x"
54
+ });
55
+ return response.result ?? null;
56
+ } catch (error) {
57
+ console.warn("[GasApi] TalkenApi estimateGas failed:", error);
58
+ return null;
59
+ }
60
+ }
61
+ /**
62
+ * Get suggested gas fees with timeout
63
+ *
64
+ * @param network - Network name
65
+ * @param timeoutMs - Timeout in milliseconds (default: 5000)
66
+ * @returns Suggested gas fees or null if timeout/failed
67
+ */
68
+ async getSuggestedGasFeesWithTimeout(network, timeoutMs = 5e3) {
69
+ try {
70
+ const result = await Promise.race([
71
+ this.getSuggestedGasFees(network),
72
+ new Promise(
73
+ (resolve) => setTimeout(() => resolve(null), timeoutMs)
74
+ )
75
+ ]);
76
+ return result;
77
+ } catch (_error) {
78
+ console.warn("[GasApi] Gas fees request timed out:", network);
79
+ return null;
80
+ }
81
+ }
82
+ /**
83
+ * Estimate gas with timeout
84
+ *
85
+ * @param params - Transaction parameters
86
+ * @param timeoutMs - Timeout in milliseconds (default: 5000)
87
+ * @returns Gas limit (hex string) or null if timeout/failed
88
+ */
89
+ async estimateGasWithTimeout(params, timeoutMs = 5e3) {
90
+ try {
91
+ const result = await Promise.race([
92
+ this.estimateGas(params),
93
+ new Promise(
94
+ (resolve) => setTimeout(() => resolve(null), timeoutMs)
95
+ )
96
+ ]);
97
+ return result;
98
+ } catch (_error) {
99
+ console.warn("[GasApi] Gas estimate request timed out");
100
+ return null;
101
+ }
102
+ }
103
+ };
104
+
105
+ export {
106
+ GasApi
107
+ };
@@ -0,0 +1,71 @@
1
+ "use client";
2
+ import {
3
+ TransactionApi
4
+ } from "./chunk-SCWE5EEX.js";
5
+ import {
6
+ TronApi
7
+ } from "./chunk-ZWFGRREM.js";
8
+ import {
9
+ WalletApi
10
+ } from "./chunk-6YFP3Q2I.js";
11
+ import {
12
+ WalletscanApi
13
+ } from "./chunk-AMNVH7CZ.js";
14
+ import {
15
+ AuthApi
16
+ } from "./chunk-H53R4SFZ.js";
17
+ import {
18
+ BitcoinApi
19
+ } from "./chunk-UU4JYY3C.js";
20
+ import {
21
+ GasApi
22
+ } from "./chunk-DSZOE65L.js";
23
+ import {
24
+ SolanaApi
25
+ } from "./chunk-LOL7ZZ3S.js";
26
+
27
+ // src/wallets/walletConnectors/abcWallet/api/index.ts
28
+ var AbcWaasApiClient = class {
29
+ constructor(config) {
30
+ this.auth = new AuthApi(config);
31
+ this.wallet = new WalletApi(config);
32
+ this.transaction = new TransactionApi(config);
33
+ this.solana = new SolanaApi(config);
34
+ this.bitcoin = new BitcoinApi(config);
35
+ this.tron = new TronApi(config);
36
+ this.walletscan = new WalletscanApi(config);
37
+ this.gas = new GasApi(config);
38
+ }
39
+ /**
40
+ * Check if user is authenticated
41
+ */
42
+ isAuthenticated() {
43
+ return this.auth.isAuthenticated();
44
+ }
45
+ /**
46
+ * Check if access token is expired
47
+ */
48
+ isTokenExpired() {
49
+ return this.auth.isTokenExpired();
50
+ }
51
+ /**
52
+ * Get current access token
53
+ */
54
+ getAccessToken() {
55
+ return this.auth.getAccessToken();
56
+ }
57
+ /**
58
+ * Logout (clear tokens)
59
+ */
60
+ async logout() {
61
+ await this.auth.logout();
62
+ }
63
+ };
64
+ function createAbcWaasApiClient(config) {
65
+ return new AbcWaasApiClient(config);
66
+ }
67
+
68
+ export {
69
+ AbcWaasApiClient,
70
+ createAbcWaasApiClient
71
+ };
@@ -0,0 +1,479 @@
1
+ "use client";
2
+ import {
3
+ AbcError,
4
+ AbcStorageKey
5
+ } from "./chunk-D5EFTEOM.js";
6
+ import {
7
+ PIN_CONFIG,
8
+ STORAGE_PREFIX,
9
+ TOKEN_EXPIRY
10
+ } from "./chunk-M2U5QGM7.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
+ const tronWallet = loadFromStorage("tron_wallet" /* TRON_WALLET */);
143
+ return {
144
+ isAuthenticated: true,
145
+ user,
146
+ wallet,
147
+ solanaWallet,
148
+ bitcoinWallet,
149
+ tronWallet,
150
+ accessToken,
151
+ refreshToken,
152
+ expiresAt
153
+ };
154
+ }
155
+ function clearAuthState() {
156
+ clearStorage();
157
+ }
158
+ function getChainType(chainId) {
159
+ if (chainId === 900)
160
+ return "solana";
161
+ if (chainId === 800)
162
+ return "bitcoin";
163
+ return "evm";
164
+ }
165
+ function formatAddress(address, startLength = 6, endLength = 4) {
166
+ if (!address || address.length <= startLength + endLength) {
167
+ return address;
168
+ }
169
+ const start = address.substring(0, startLength);
170
+ const end = address.substring(address.length - endLength);
171
+ return `${start}...${end}`;
172
+ }
173
+ function createAbcError(code, message, details, statusCode) {
174
+ return new AbcError(code, message, details, statusCode);
175
+ }
176
+ function sleep(ms) {
177
+ return new Promise((resolve) => setTimeout(resolve, ms));
178
+ }
179
+ async function retry(fn, maxRetries = 3, delay = 1e3, backoffMultiplier = 2) {
180
+ let lastError = null;
181
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
182
+ try {
183
+ return await fn();
184
+ } catch (error) {
185
+ lastError = error;
186
+ if (attempt < maxRetries - 1) {
187
+ const waitTime = delay * backoffMultiplier ** attempt;
188
+ await sleep(waitTime);
189
+ }
190
+ }
191
+ }
192
+ throw lastError || new Error("Retry failed");
193
+ }
194
+ function parseApiError(error) {
195
+ if (error instanceof AbcError) {
196
+ return error;
197
+ }
198
+ if (!error.response) {
199
+ return createAbcError(
200
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
201
+ "Network error occurred",
202
+ error
203
+ );
204
+ }
205
+ const response = error.response;
206
+ const data = response.data;
207
+ const statusCode = response.status;
208
+ if (statusCode === 401) {
209
+ return createAbcError(
210
+ "TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
211
+ "Authentication token expired",
212
+ data,
213
+ 401
214
+ );
215
+ }
216
+ if (statusCode === 409) {
217
+ return createAbcError(
218
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
219
+ // Will trigger recovery
220
+ data?.error || "Resource already exists",
221
+ data,
222
+ 409
223
+ );
224
+ }
225
+ if (typeof data === "object" && "iserr" in data) {
226
+ const bitcoinData = data;
227
+ if (bitcoinData.iserr === true) {
228
+ return createAbcError(
229
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
230
+ bitcoinData.errmsg || "Bitcoin signature failed",
231
+ data,
232
+ statusCode
233
+ );
234
+ }
235
+ if (!bitcoinData.signstr) {
236
+ return createAbcError(
237
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
238
+ "Bitcoin signature missing in response",
239
+ data,
240
+ statusCode
241
+ );
242
+ }
243
+ return createAbcError(
244
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
245
+ "Unexpected success response in error parser",
246
+ data,
247
+ statusCode
248
+ );
249
+ }
250
+ if (data?.error) {
251
+ return createAbcError(
252
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
253
+ data.error.message || data.error || "API error occurred",
254
+ data,
255
+ statusCode
256
+ );
257
+ }
258
+ if (data?.message) {
259
+ return createAbcError(
260
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
261
+ data.message.text || "API error occurred",
262
+ data,
263
+ statusCode
264
+ );
265
+ }
266
+ return createAbcError(
267
+ "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
268
+ "An unknown error occurred",
269
+ error,
270
+ statusCode
271
+ );
272
+ }
273
+ function isBrowser() {
274
+ return typeof window !== "undefined";
275
+ }
276
+ function isWeb3Available() {
277
+ return isBrowser() && typeof window.ethereum !== "undefined";
278
+ }
279
+ function generateId() {
280
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
281
+ }
282
+ function deepClone(obj) {
283
+ return JSON.parse(JSON.stringify(obj));
284
+ }
285
+ function isEmpty(obj) {
286
+ if (obj == null)
287
+ return true;
288
+ if (Array.isArray(obj))
289
+ return obj.length === 0;
290
+ if (typeof obj === "object")
291
+ return Object.keys(obj).length === 0;
292
+ return false;
293
+ }
294
+ function debounce(func, wait) {
295
+ let timeout = null;
296
+ return function(...args) {
297
+ if (timeout) {
298
+ clearTimeout(timeout);
299
+ }
300
+ timeout = setTimeout(() => {
301
+ func.apply(this, args);
302
+ }, wait);
303
+ };
304
+ }
305
+ function throttle(func, limit) {
306
+ let inThrottle = false;
307
+ return function(...args) {
308
+ if (!inThrottle) {
309
+ func.apply(this, args);
310
+ inThrottle = true;
311
+ setTimeout(() => {
312
+ inThrottle = false;
313
+ }, limit);
314
+ }
315
+ };
316
+ }
317
+ function hexToNumber(hex) {
318
+ return Number.parseInt(hex, 16);
319
+ }
320
+ function numberToHex(num) {
321
+ return `0x${num.toString(16)}`;
322
+ }
323
+ function isValidEthereumAddress(address) {
324
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
325
+ }
326
+ function isValidSolanaAddress(address) {
327
+ return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
328
+ }
329
+ function getExplorerUrl(chainId, txHash) {
330
+ const explorers = {
331
+ 1: "https://etherscan.io/tx/",
332
+ 5: "https://goerli.etherscan.io/tx/",
333
+ 137: "https://polygonscan.com/tx/",
334
+ 56: "https://bscscan.com/tx/",
335
+ 900: "https://explorer.solana.com/tx/"
336
+ // Solana
337
+ };
338
+ const baseUrl = explorers[chainId];
339
+ return baseUrl ? `${baseUrl}${txHash}` : null;
340
+ }
341
+ function generateSalt() {
342
+ const array = new Uint8Array(16);
343
+ crypto.getRandomValues(array);
344
+ return Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join(
345
+ ""
346
+ );
347
+ }
348
+ function deriveKeyFromPin(pin, salt) {
349
+ return CryptoJS.PBKDF2(pin, salt, {
350
+ keySize: 256 / 32,
351
+ iterations: 1e5
352
+ }).toString();
353
+ }
354
+ function encryptWithPin(data, pin, salt) {
355
+ const key = deriveKeyFromPin(pin, salt);
356
+ const encrypted = CryptoJS.AES.encrypt(data, key).toString();
357
+ return encrypted;
358
+ }
359
+ function decryptWithPin(encrypted, pin, salt) {
360
+ try {
361
+ const key = deriveKeyFromPin(pin, salt);
362
+ const decrypted = CryptoJS.AES.decrypt(encrypted, key);
363
+ const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
364
+ if (!decryptedText) {
365
+ return null;
366
+ }
367
+ return decryptedText;
368
+ } catch (error) {
369
+ console.error("Decryption failed:", error);
370
+ return null;
371
+ }
372
+ }
373
+ function hasEncryptedTokens() {
374
+ if (typeof window === "undefined")
375
+ return false;
376
+ const encrypted = loadFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
377
+ const salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
378
+ return !!encrypted && !!salt;
379
+ }
380
+ function saveEncryptedTokens(accessToken, refreshToken, expiresIn, hashedPin) {
381
+ if (typeof window === "undefined")
382
+ return;
383
+ try {
384
+ let salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
385
+ if (!salt) {
386
+ salt = generateSalt();
387
+ saveToStorage("token_salt" /* TOKEN_SALT */, salt);
388
+ }
389
+ const expiresAt = Date.now() + expiresIn * 1e3;
390
+ const tokenData = {
391
+ accessToken,
392
+ refreshToken,
393
+ expiresAt
394
+ };
395
+ const encrypted = encryptWithPin(
396
+ JSON.stringify(tokenData),
397
+ hashedPin,
398
+ salt
399
+ );
400
+ saveToStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */, encrypted);
401
+ removeFromStorage("access_token" /* ACCESS_TOKEN */);
402
+ removeFromStorage("refresh_token" /* REFRESH_TOKEN */);
403
+ removeFromStorage("expires_at" /* EXPIRES_AT */);
404
+ } catch (error) {
405
+ console.error("Failed to save encrypted tokens:", error);
406
+ throw new AbcError(
407
+ "ENCRYPTION_FAILED" /* ENCRYPTION_FAILED */,
408
+ "Failed to encrypt tokens"
409
+ );
410
+ }
411
+ }
412
+ function loadEncryptedTokens(hashedPin) {
413
+ if (typeof window === "undefined")
414
+ return null;
415
+ try {
416
+ const encrypted = loadFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
417
+ const salt = loadFromStorage("token_salt" /* TOKEN_SALT */);
418
+ if (!encrypted || !salt) {
419
+ return null;
420
+ }
421
+ const decrypted = decryptWithPin(encrypted, hashedPin, salt);
422
+ if (!decrypted) {
423
+ throw new AbcError("INVALID_PIN" /* INVALID_PIN */, "Incorrect PIN");
424
+ }
425
+ const tokenData = JSON.parse(decrypted);
426
+ return tokenData;
427
+ } catch (error) {
428
+ console.error("Failed to load encrypted tokens:", error);
429
+ if (error instanceof AbcError) {
430
+ throw error;
431
+ }
432
+ throw new AbcError(
433
+ "DECRYPTION_FAILED" /* DECRYPTION_FAILED */,
434
+ "Failed to decrypt tokens"
435
+ );
436
+ }
437
+ }
438
+ function clearEncryptedTokens() {
439
+ removeFromStorage("encrypted_tokens" /* ENCRYPTED_TOKENS */);
440
+ removeFromStorage("token_salt" /* TOKEN_SALT */);
441
+ }
442
+
443
+ export {
444
+ hashPin,
445
+ validatePin,
446
+ validateEmail,
447
+ getStorageKey,
448
+ saveToStorage,
449
+ loadFromStorage,
450
+ removeFromStorage,
451
+ clearStorage,
452
+ isTokenExpired,
453
+ calculateExpiryTimestamp,
454
+ saveAuthState,
455
+ loadAuthState,
456
+ clearAuthState,
457
+ getChainType,
458
+ formatAddress,
459
+ createAbcError,
460
+ sleep,
461
+ retry,
462
+ parseApiError,
463
+ isBrowser,
464
+ isWeb3Available,
465
+ generateId,
466
+ deepClone,
467
+ isEmpty,
468
+ debounce,
469
+ throttle,
470
+ hexToNumber,
471
+ numberToHex,
472
+ isValidEthereumAddress,
473
+ isValidSolanaAddress,
474
+ getExplorerUrl,
475
+ hasEncryptedTokens,
476
+ saveEncryptedTokens,
477
+ loadEncryptedTokens,
478
+ clearEncryptedTokens
479
+ };
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import {
3
+ createTalkenApiClient
4
+ } from "./chunk-6CVXZ3ZW.js";
5
+ import {
6
+ abcConnector
7
+ } from "./chunk-WDULICVN.js";
8
+ import {
9
+ ABC_WALLET_METADATA
10
+ } from "./chunk-BR25RFNF.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/abcWallet.ts
13
+ import { setTalkenApiClient } from "@talken/talkenkit";
14
+ var abcWallet = (specificOptions) => ({ projectId }) => {
15
+ const talkenApiUrl = specificOptions?.talkenApiUrl || process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001/api/v1";
16
+ const talkenApi = createTalkenApiClient({
17
+ baseUrl: talkenApiUrl,
18
+ debug: specificOptions?.environment === "development"
19
+ });
20
+ setTalkenApiClient(talkenApi);
21
+ const waasUrl = specificOptions?.waasUrl || process.env.NEXT_PUBLIC_ABC_WAAS_URL || process.env.VITE_ABC_WAAS_URL || "";
22
+ const config = {
23
+ waasUrl,
24
+ apiKey: specificOptions?.apiKey,
25
+ plain: specificOptions?.plain || "",
26
+ // Deprecated - not used (secure.ts uses random generation)
27
+ environment: specificOptions?.environment || "development",
28
+ defaultChainId: specificOptions?.defaultChainId,
29
+ defaultSolanaNetwork: specificOptions?.defaultSolanaNetwork,
30
+ defaultBitcoinNetwork: specificOptions?.defaultBitcoinNetwork,
31
+ projectId
32
+ };
33
+ return {
34
+ id: ABC_WALLET_METADATA.id,
35
+ name: ABC_WALLET_METADATA.name,
36
+ rdns: ABC_WALLET_METADATA.rdns,
37
+ iconUrl: async () => (await import("./abcWallet-AYWSIGAG.js")).default,
38
+ iconBackground: ABC_WALLET_METADATA.iconBackground,
39
+ // Embedded wallet - no installation required
40
+ installed: void 0,
41
+ // No download URLs for embedded wallet
42
+ downloadUrls: void 0,
43
+ // Create connector - wrapper function required by Wallet type
44
+ createConnector: (_walletDetails) => abcConnector({ config }),
45
+ // Embedded wallet always available
46
+ hidden: () => false
47
+ };
48
+ };
49
+
50
+ export {
51
+ abcWallet
52
+ };