@talken/talkenkit 2.3.15 → 2.4.4

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 (170) hide show
  1. package/dist/{chunk-UWHLB4MJ.js → chunk-RQ637EP3.js} +0 -2
  2. package/dist/components/ConnectOptions/ExternalWallets/EthereumWallet/EthereumWalletList.d.ts +4 -4
  3. package/dist/index.d.ts +6 -5
  4. package/dist/index.js +6783 -6571
  5. package/dist/{secure-SSSSQ4NA.js → secure-X6ZSGFOB.js} +1 -1
  6. package/dist/services/AbcAuthService.d.ts +1 -1
  7. package/dist/solana/AbcSolanaAutoConnector.d.ts +7 -0
  8. package/dist/solana/SolanaWalletProvider.d.ts +18 -2
  9. package/dist/solana/config.d.ts +26 -0
  10. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.d.ts +7 -0
  11. package/dist/wallets/walletConnectors/abcWallet/AbcEvmAutoConnector.js +37 -0
  12. package/dist/wallets/walletConnectors/abcWallet/abcApi.js +4 -4
  13. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
  14. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  15. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +6 -6
  16. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +3 -3
  17. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +166 -0
  18. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +725 -0
  19. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -7
  20. package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +5 -5
  21. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.d.ts +5 -0
  22. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +4 -4
  23. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +5 -5
  24. package/dist/wallets/walletConnectors/abcWallet/api/SigningApi.js +5 -5
  25. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +16 -5
  26. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +5 -5
  27. package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +5 -5
  28. package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +5 -5
  29. package/dist/wallets/walletConnectors/abcWallet/api/index.js +13 -13
  30. package/dist/wallets/walletConnectors/abcWallet/googleAuth.d.ts +1 -1
  31. package/dist/wallets/walletConnectors/abcWallet/googleAuth.js +5 -7
  32. package/dist/wallets/walletConnectors/abcWallet/index.d.ts +3 -7
  33. package/dist/wallets/walletConnectors/abcWallet/index.js +36 -46
  34. package/dist/wallets/walletConnectors/abcWallet/secure.js +1 -1
  35. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.d.ts +38 -0
  36. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +15 -0
  37. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +34 -1
  38. package/dist/wallets/walletConnectors/abcWallet/types.js +1 -1
  39. package/dist/wallets/walletConnectors/abcWallet/utils.d.ts +1 -1
  40. package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
  41. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
  42. package/dist/wallets/walletConnectors/chunk-2GNL2GNB.js +154 -0
  43. package/dist/wallets/walletConnectors/{chunk-5DDAV4BZ.js → chunk-2NAY6X3G.js} +1 -1
  44. package/dist/wallets/walletConnectors/{chunk-ZIYAL44B.js → chunk-2NVHWZUE.js} +1 -1
  45. package/dist/wallets/walletConnectors/{chunk-LENPUTNQ.js → chunk-36J4NGMW.js} +12 -20
  46. package/dist/wallets/walletConnectors/{chunk-4MF5RSML.js → chunk-3CTIR723.js} +1 -1
  47. package/dist/wallets/walletConnectors/{chunk-AVPBPELO.js → chunk-3WLUH24A.js} +10 -10
  48. package/dist/wallets/walletConnectors/{chunk-YEHCPL4R.js → chunk-53LPTQ6J.js} +2 -2
  49. package/dist/wallets/walletConnectors/{chunk-GXGRTWJM.js → chunk-5CZGFT24.js} +10 -10
  50. package/dist/wallets/walletConnectors/{chunk-BJHGC546.js → chunk-5JIPWC5W.js} +12 -24
  51. package/dist/wallets/walletConnectors/{chunk-4N6JD6LY.js → chunk-5LPD35BU.js} +9 -9
  52. package/dist/wallets/walletConnectors/{chunk-UV5HHESJ.js → chunk-5RSS3SRV.js} +29 -12
  53. package/dist/wallets/walletConnectors/{chunk-3ZE57J3R.js → chunk-64TRAZ6V.js} +1 -1
  54. package/dist/wallets/walletConnectors/{chunk-KKPINUPY.js → chunk-6BAXMYSN.js} +2 -2
  55. package/dist/wallets/walletConnectors/{chunk-PPIFAF7N.js → chunk-7MOCKWA7.js} +65 -19
  56. package/dist/wallets/walletConnectors/{chunk-75RN2RLT.js → chunk-7TYZCXIR.js} +12 -12
  57. package/dist/wallets/walletConnectors/{chunk-HVPQO6ZG.js → chunk-7UIXGYOT.js} +5 -20
  58. package/dist/wallets/walletConnectors/{chunk-BL57XWJY.js → chunk-7UQQKSV7.js} +1 -1
  59. package/dist/wallets/walletConnectors/{chunk-FGBDWBWQ.js → chunk-AIKTQX6B.js} +2 -2
  60. package/dist/wallets/walletConnectors/chunk-AO24PU7X.js +104 -0
  61. package/dist/wallets/walletConnectors/{chunk-4YJWX7I3.js → chunk-APLOMU6R.js} +1 -1
  62. package/dist/wallets/walletConnectors/chunk-AZAV5URB.js +267 -0
  63. package/dist/wallets/walletConnectors/chunk-BO6OI7XU.js +63 -0
  64. package/dist/wallets/walletConnectors/{chunk-P2GV6NQG.js → chunk-BV3DCJXA.js} +12 -20
  65. package/dist/wallets/walletConnectors/{chunk-KJHOGJ3A.js → chunk-CNRPEVLV.js} +16 -4
  66. package/dist/wallets/walletConnectors/{chunk-OC2O4BHA.js → chunk-COPAK5YT.js} +2 -2
  67. package/dist/wallets/walletConnectors/chunk-CZVBS7QE.js +436 -0
  68. package/dist/wallets/walletConnectors/{chunk-QKUFFUM5.js → chunk-DA5J6GHZ.js} +14 -4
  69. package/dist/wallets/walletConnectors/chunk-FMDSZ2CE.js +63 -0
  70. package/dist/wallets/walletConnectors/{chunk-5CCU7PNU.js → chunk-FQTLYAWT.js} +2 -2
  71. package/dist/wallets/walletConnectors/chunk-FUOQBONI.js +47 -0
  72. package/dist/wallets/walletConnectors/chunk-FWCS4HBL.js +1695 -0
  73. package/dist/wallets/walletConnectors/chunk-FY7UDC3W.js +63 -0
  74. package/dist/wallets/walletConnectors/chunk-GZUP3M2X.js +63 -0
  75. package/dist/wallets/walletConnectors/chunk-H52W4ZFE.js +272 -0
  76. package/dist/wallets/walletConnectors/chunk-HEQZLRTH.js +309 -0
  77. package/dist/wallets/walletConnectors/{chunk-ISAMATTH.js → chunk-HFC4AK72.js} +2 -2
  78. package/dist/wallets/walletConnectors/chunk-HKIV22NT.js +63 -0
  79. package/dist/wallets/walletConnectors/chunk-HLC24OGS.js +63 -0
  80. package/dist/wallets/walletConnectors/{chunk-5TDZSXJ4.js → chunk-HTD7IRKM.js} +2 -2
  81. package/dist/wallets/walletConnectors/chunk-IQJWD4IN.js +269 -0
  82. package/dist/wallets/walletConnectors/chunk-IZUAJRJ4.js +311 -0
  83. package/dist/wallets/walletConnectors/{chunk-NX5MQHSQ.js → chunk-J6VUIOSE.js} +23 -2
  84. package/dist/wallets/walletConnectors/chunk-JQ57SCY6.js +313 -0
  85. package/dist/wallets/walletConnectors/{chunk-F5P2INHS.js → chunk-KB7OGAUC.js} +14 -4
  86. package/dist/wallets/walletConnectors/chunk-KXEAFXAA.js +226 -0
  87. package/dist/wallets/walletConnectors/{chunk-JR2C4XXX.js → chunk-LLWI2QWC.js} +74 -18
  88. package/dist/wallets/walletConnectors/{chunk-H2MX4NAL.js → chunk-LQ2U33WM.js} +29 -16
  89. package/dist/wallets/walletConnectors/{chunk-BNSBK5PQ.js → chunk-M7KXDTM6.js} +14 -4
  90. package/dist/wallets/walletConnectors/{chunk-CYYBGUSO.js → chunk-MKAXMNZM.js} +4 -4
  91. package/dist/wallets/walletConnectors/chunk-MNRRJSFM.js +272 -0
  92. package/dist/wallets/walletConnectors/chunk-MPFE6GP2.js +306 -0
  93. package/dist/wallets/walletConnectors/{chunk-EEY5CXKO.js → chunk-MPNSYA4E.js} +2 -2
  94. package/dist/wallets/walletConnectors/chunk-NDLQSZ2F.js +63 -0
  95. package/dist/wallets/walletConnectors/{chunk-G2LI5MVX.js → chunk-NDYGTKP5.js} +0 -2
  96. package/dist/wallets/walletConnectors/chunk-NLBRSN6Q.js +63 -0
  97. package/dist/wallets/walletConnectors/{chunk-BSBRWKNG.js → chunk-NPF7NOA7.js} +69 -23
  98. package/dist/wallets/walletConnectors/{chunk-7DEZCGNV.js → chunk-NUJ6VD2U.js} +82 -16
  99. package/dist/wallets/walletConnectors/chunk-PSRATZTN.js +47 -0
  100. package/dist/wallets/walletConnectors/{chunk-MZOFZ2NQ.js → chunk-QCIIXMAZ.js} +2 -2
  101. package/dist/wallets/walletConnectors/{chunk-GHLLVM7O.js → chunk-RCI7QYCZ.js} +82 -18
  102. package/dist/wallets/walletConnectors/{chunk-QI2VB7LL.js → chunk-RHQXGWIW.js} +82 -16
  103. package/dist/wallets/walletConnectors/chunk-RPOLRZ4N.js +276 -0
  104. package/dist/wallets/walletConnectors/{chunk-5UEBEMEE.js → chunk-RQIUWXDF.js} +2 -1
  105. package/dist/wallets/walletConnectors/{chunk-RLR4Y5WO.js → chunk-SCD35IRD.js} +4 -0
  106. package/dist/wallets/walletConnectors/{chunk-EGOIRXTV.js → chunk-SOCVQ5N3.js} +2 -2
  107. package/dist/wallets/walletConnectors/chunk-TTRSCIGA.js +194 -0
  108. package/dist/wallets/walletConnectors/chunk-TYUEB4VT.js +477 -0
  109. package/dist/wallets/walletConnectors/{chunk-WTYSUOKN.js → chunk-UZXTNCDO.js} +17 -5
  110. package/dist/wallets/walletConnectors/chunk-V33I7JGZ.js +156 -0
  111. package/dist/wallets/walletConnectors/chunk-V4Q3GNBX.js +484 -0
  112. package/dist/wallets/walletConnectors/chunk-VCCTIYUJ.js +63 -0
  113. package/dist/wallets/walletConnectors/chunk-VGOISIH3.js +223 -0
  114. package/dist/wallets/walletConnectors/chunk-XFGVJOQL.js +223 -0
  115. package/dist/wallets/walletConnectors/chunk-XIOPKI2F.js +47 -0
  116. package/dist/wallets/walletConnectors/{chunk-O6EAIC4G.js → chunk-XJ4SP35I.js} +4 -1
  117. package/dist/wallets/walletConnectors/chunk-XKGUE56S.js +226 -0
  118. package/dist/wallets/walletConnectors/chunk-XQEAXENJ.js +63 -0
  119. package/dist/wallets/walletConnectors/{chunk-RY4RAB3D.js → chunk-YCZ4CZQ6.js} +106 -66
  120. package/dist/wallets/walletConnectors/chunk-Z2DC2J7S.js +345 -0
  121. package/dist/wallets/walletConnectors/chunk-Z2K3RHWK.js +47 -0
  122. package/dist/wallets/walletConnectors/chunk-ZASMSEC3.js +63 -0
  123. package/dist/wallets/walletConnectors/{chunk-G7PEFBL6.js → chunk-ZNBWRE3K.js} +2 -2
  124. package/dist/wallets/walletConnectors/chunk-ZNVFM2J2.js +156 -0
  125. package/dist/wallets/walletConnectors/chunk-ZQLQELFC.js +309 -0
  126. package/dist/wallets/walletConnectors/chunk-ZR7CEF64.js +63 -0
  127. package/dist/wallets/walletConnectors/chunk-ZSGFDK77.js +63 -0
  128. package/dist/wallets/walletConnectors/chunk-ZUIY2TRJ.js +1695 -0
  129. package/dist/wallets/walletConnectors/index.js +22 -22
  130. package/package.json +12 -11
  131. package/LICENSE +0 -9
  132. package/dist/solana/hooks/index.d.ts +0 -12
  133. package/dist/solana/hooks/useSolanaAccount.d.ts +0 -98
  134. package/dist/solana/hooks/useSolanaConnection.d.ts +0 -72
  135. package/dist/solana/hooks/useSolanaSendTransaction.d.ts +0 -98
  136. package/dist/solana/hooks/useSolanaSignMessage.d.ts +0 -82
  137. package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.d.ts +0 -45
  138. package/dist/wallets/walletConnectors/abcWallet/abcSolProvider.js +0 -10
  139. package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.d.ts +0 -115
  140. package/dist/wallets/walletConnectors/abcWallet/abcSolanaConnector.js +0 -12
  141. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +0 -143
  142. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +0 -13
  143. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.d.ts +0 -18
  144. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWallet.js +0 -15
  145. package/dist/wallets/walletConnectors/chunk-2XZBPMQJ.js +0 -39
  146. package/dist/wallets/walletConnectors/chunk-3SVPZCA6.js +0 -71
  147. package/dist/wallets/walletConnectors/chunk-3ZZXE7EL.js +0 -39
  148. package/dist/wallets/walletConnectors/chunk-5QEUEPNY.js +0 -94
  149. package/dist/wallets/walletConnectors/chunk-75W4VLFA.js +0 -482
  150. package/dist/wallets/walletConnectors/chunk-B6JLYR3I.js +0 -66
  151. package/dist/wallets/walletConnectors/chunk-FROV5VDF.js +0 -346
  152. package/dist/wallets/walletConnectors/chunk-HKWBR5B7.js +0 -102
  153. package/dist/wallets/walletConnectors/chunk-K4APJ4PE.js +0 -96
  154. package/dist/wallets/walletConnectors/chunk-LJ2B47VF.js +0 -108
  155. package/dist/wallets/walletConnectors/chunk-LXINMUQC.js +0 -186
  156. package/dist/wallets/walletConnectors/chunk-MORUEOYX.js +0 -76
  157. package/dist/wallets/walletConnectors/chunk-MQTXA63X.js +0 -27
  158. package/dist/wallets/walletConnectors/chunk-N4FOYXQD.js +0 -63
  159. package/dist/wallets/walletConnectors/chunk-NEXFU6BZ.js +0 -39
  160. package/dist/wallets/walletConnectors/chunk-PMZJGS7X.js +0 -73
  161. package/dist/wallets/walletConnectors/chunk-QEHZXKRF.js +0 -39
  162. package/dist/wallets/walletConnectors/chunk-T6KJZAPR.js +0 -47
  163. package/dist/wallets/walletConnectors/chunk-UBCMBPX3.js +0 -58
  164. package/dist/wallets/walletConnectors/chunk-UGQXI3RN.js +0 -284
  165. package/dist/wallets/walletConnectors/chunk-WZZVA3LW.js +0 -101
  166. package/dist/wallets/walletConnectors/chunk-X4WUD7PF.js +0 -63
  167. package/dist/wallets/walletConnectors/chunk-XOQNQKZE.js +0 -98
  168. package/dist/wallets/walletConnectors/chunk-XPSCFUX6.js +0 -372
  169. package/dist/wallets/walletConnectors/chunk-Y3LWEDF6.js +0 -63
  170. package/dist/wallets/walletConnectors/chunk-ZJ6OFFD5.js +0 -95
@@ -0,0 +1,311 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-CNRPEVLV.js";
5
+ import {
6
+ getSolanaNetwork
7
+ } from "./chunk-A7FIBI6X.js";
8
+ import {
9
+ createAbcError
10
+ } from "./chunk-5RSS3SRV.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/api/SolanaApi.ts
13
+ import { PublicKey } from "@solana/web3.js";
14
+ var SolanaApi = class extends BaseApiClient {
15
+ /**
16
+ * Generate Solana wallet (Ed25519)
17
+ * Uses V3 API with Ed25519 curve
18
+ *
19
+ * @param pin - Hashed PIN (SHA-256)
20
+ * @param isRecover - Whether to recover existing wallet (default: false)
21
+ * @returns Solana wallet information
22
+ */
23
+ async generateSolanaWallet(pin, isRecover = false) {
24
+ const endpoint = `/v3/wallet/${isRecover ? "recover" : "generate"}`;
25
+ const network = getSolanaNetwork();
26
+ console.log(`[SolanaApi] ${isRecover ? "Recovering" : "Generating"} Solana wallet...`, {
27
+ endpoint,
28
+ network
29
+ });
30
+ const response = await this.request(endpoint, {
31
+ method: "POST",
32
+ contentType: "json",
33
+ body: {
34
+ curve: "ed25519",
35
+ password: pin,
36
+ network
37
+ }
38
+ });
39
+ console.log("[SolanaApi] API response received:", {
40
+ status: response.status,
41
+ hasResult: !!response.result,
42
+ resultKeys: response.result ? Object.keys(response.result) : []
43
+ });
44
+ let result;
45
+ if (response.status === "success" && response.result) {
46
+ result = response.result;
47
+ } else if (response.encrypted_share && response.key_id) {
48
+ result = response;
49
+ } else {
50
+ console.error("[SolanaApi] API returned error:", {
51
+ status: response.status,
52
+ result: response.result,
53
+ endpoint,
54
+ fullResponse: response
55
+ });
56
+ throw createAbcError(
57
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
58
+ `Failed to ${isRecover ? "recover" : "generate"} Solana wallet`,
59
+ response
60
+ );
61
+ }
62
+ console.log("[SolanaApi] generateSolanaWallet API response:", {
63
+ hasKeyId: "key_id" in result,
64
+ hasEncryptedShare: "encrypted_share" in result,
65
+ hasSecretStore: "secret_store" in result,
66
+ fields: Object.keys(result)
67
+ });
68
+ let address;
69
+ try {
70
+ address = this.deriveAddressFromPublicKey(result.public_key);
71
+ } catch (error) {
72
+ console.warn("[SolanaApi] Base58 conversion failed, using hex address:", error);
73
+ address = result.public_key.startsWith("0x") ? result.public_key.slice(2) : result.public_key;
74
+ }
75
+ return {
76
+ uid: result.uid || "",
77
+ sessionId: result.share_id,
78
+ shareId: result.share_id,
79
+ publicKey: result.public_key,
80
+ address,
81
+ keyId: result.key_id || result.share_id,
82
+ // API returns snake_case key_id
83
+ encryptedShare: result.encrypted_share || "",
84
+ // API returns snake_case encrypted_share
85
+ secretStore: result.secret_store || "",
86
+ // API returns snake_case secret_store
87
+ network
88
+ // Use network from request (already has correct value)
89
+ };
90
+ }
91
+ /**
92
+ * Recover Solana wallet (alias for generateSolanaWallet with isRecover=true)
93
+ *
94
+ * @param pin - Hashed PIN (SHA-256)
95
+ * @returns Recovered Solana wallet information
96
+ */
97
+ async recoverSolanaWallet(pin) {
98
+ return this.generateSolanaWallet(pin, true);
99
+ }
100
+ /**
101
+ * Derive Solana address from Ed25519 public key
102
+ * Converts hex public key to base58-encoded Solana address
103
+ *
104
+ * @param publicKey - Ed25519 public key (hex)
105
+ * @returns Solana address (base58)
106
+ */
107
+ deriveAddressFromPublicKey(publicKey) {
108
+ const cleanKey = publicKey.startsWith("0x") ? publicKey.slice(2) : publicKey;
109
+ const bytes = new Uint8Array(
110
+ cleanKey.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
111
+ );
112
+ try {
113
+ const pubkey = new PublicKey(bytes);
114
+ return pubkey.toBase58();
115
+ } catch (error) {
116
+ console.error("[SolanaApi] Failed to encode address:", error);
117
+ return cleanKey;
118
+ }
119
+ }
120
+ /**
121
+ * Sign Solana transaction with Ed25519
122
+ * Reference: /v3/wallet/sign API requires only 5 fields
123
+ */
124
+ async signSolanaTransaction(params) {
125
+ const network = getSolanaNetwork();
126
+ console.log("[SolanaApi] signSolanaTransaction - start:", {
127
+ network,
128
+ messageLength: params.message.length,
129
+ messagePreview: params.message.substring(0, 40) + "..."
130
+ });
131
+ const response = await this.request("/v3/wallet/sign", {
132
+ method: "POST",
133
+ contentType: "json",
134
+ body: {
135
+ curve: "ed25519",
136
+ network,
137
+ key_id: params.keyId,
138
+ encrypted_share: params.encryptedShare,
139
+ secret_store: params.secretStore || "",
140
+ message: params.message
141
+ }
142
+ });
143
+ console.log("[SolanaApi] signSolanaTransaction - response:", {
144
+ status: response.status,
145
+ hasResult: !!response.result,
146
+ hasDirectSignature: !!response.signature,
147
+ signature: response.signature || response.result?.signature
148
+ });
149
+ let signature;
150
+ if (response.status === "success" && response.result?.signature) {
151
+ signature = response.result.signature;
152
+ } else if (response.signature) {
153
+ signature = response.signature;
154
+ } else {
155
+ console.error("[SolanaApi] \u274C signSolanaTransaction failed:", response);
156
+ throw createAbcError(
157
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
158
+ "Failed to sign Solana transaction",
159
+ response
160
+ );
161
+ }
162
+ console.log("[SolanaApi] \u2705 signSolanaTransaction success:", {
163
+ signatureLength: signature.length,
164
+ signatureFormat: signature.length === 128 ? "hex" : signature.length === 88 ? "base64" : "unknown"
165
+ });
166
+ return {
167
+ signature
168
+ };
169
+ }
170
+ /**
171
+ * Sign Solana message with Ed25519
172
+ * Reference: /v3/wallet/sign API requires only 5 fields
173
+ */
174
+ async signSolanaMessage(params) {
175
+ console.log("[SolanaApi] signSolanaMessage params:", {
176
+ hasKeyId: !!params.keyId,
177
+ hasEncryptedShare: !!params.encryptedShare,
178
+ hasMessage: !!params.message,
179
+ keyId: params.keyId
180
+ });
181
+ const network = getSolanaNetwork();
182
+ console.log("[SolanaApi] Signing message with:", {
183
+ network,
184
+ messageLength: params.message.length,
185
+ messagePreview: params.message.substring(0, 20) + "..."
186
+ });
187
+ const response = await this.request("/v3/wallet/sign", {
188
+ method: "POST",
189
+ contentType: "json",
190
+ body: {
191
+ curve: "ed25519",
192
+ network,
193
+ key_id: params.keyId,
194
+ encrypted_share: params.encryptedShare,
195
+ secret_store: params.secretStore || "",
196
+ message: params.message
197
+ }
198
+ });
199
+ console.log("[SolanaApi] Sign response:", {
200
+ status: response.status,
201
+ hasResult: !!response.result,
202
+ hasSignature: !!response.result?.signature,
203
+ directSignature: !!response.signature,
204
+ error: response.error
205
+ });
206
+ let signature;
207
+ if (response.status === "success" && response.result?.signature) {
208
+ signature = response.result.signature;
209
+ } else if (response.signature) {
210
+ signature = response.signature;
211
+ } else {
212
+ console.error("[SolanaApi] \u274C Sign failed:", response);
213
+ throw createAbcError(
214
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
215
+ "Failed to sign Solana message",
216
+ response
217
+ );
218
+ }
219
+ return {
220
+ signature
221
+ };
222
+ }
223
+ /**
224
+ * Generate Solana transfer transaction via ABC WaaS API
225
+ * This ensures the transaction uses the same RPC and blockhash as the server
226
+ */
227
+ async generateTransferTransaction(params) {
228
+ console.log("[SolanaApi] generateTransferTransaction - request:", {
229
+ network: params.network,
230
+ amount: params.amount,
231
+ from: params.fromAddress,
232
+ to: params.toAddress
233
+ });
234
+ const response = await this.request("/wapi/v2/solana/tx/generateTransferSOLTransaction", {
235
+ method: "POST",
236
+ contentType: "json",
237
+ body: {
238
+ network: params.network,
239
+ amount: params.amount,
240
+ fromAddress: params.fromAddress,
241
+ toAddress: params.toAddress,
242
+ feePayerAddress: params.feePayerAddress
243
+ }
244
+ });
245
+ console.log("[SolanaApi] generateTransferTransaction - response:", {
246
+ status: response.status,
247
+ hasResult: !!response.result,
248
+ hasData: !!response.data,
249
+ hasSerializedTx: !!response.data?.serialized_tx
250
+ });
251
+ const serializedTx = response.data?.serialized_tx || response.result?.data?.serialized_tx;
252
+ if (!serializedTx) {
253
+ console.error("[SolanaApi] \u274C generateTransferTransaction failed:", response);
254
+ throw createAbcError(
255
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
256
+ "Failed to generate Solana transaction",
257
+ response
258
+ );
259
+ }
260
+ console.log("[SolanaApi] \u2705 generateTransferTransaction success:", {
261
+ serializedTxLength: serializedTx.length
262
+ });
263
+ return {
264
+ serialized_tx: serializedTx
265
+ };
266
+ }
267
+ /**
268
+ * Send Solana transaction
269
+ */
270
+ async sendSolanaTransaction(params) {
271
+ console.log("[SolanaApi] sendSolanaTransaction - request:", {
272
+ network: params.network,
273
+ serializedTXLength: params.serializedTX.length,
274
+ serializedTXPreview: params.serializedTX.substring(0, 40) + "...",
275
+ signaturesCount: params.signatures.length,
276
+ signaturesLengths: params.signatures.map((s) => s.length)
277
+ });
278
+ const response = await this.request("/wapi/v2/solana/tx/sendTransaction", {
279
+ method: "POST",
280
+ contentType: "json",
281
+ body: {
282
+ network: params.network,
283
+ serializedTX: params.serializedTX,
284
+ signatures: params.signatures
285
+ }
286
+ });
287
+ console.log("[SolanaApi] sendSolanaTransaction - response:", {
288
+ status: response.status,
289
+ hasResult: !!response.result,
290
+ resultData: response.result?.data
291
+ });
292
+ if (response.status !== "success" || !response.result?.data) {
293
+ console.error("[SolanaApi] \u274C sendSolanaTransaction failed:", response);
294
+ throw createAbcError(
295
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
296
+ "Failed to send Solana transaction",
297
+ response
298
+ );
299
+ }
300
+ console.log("[SolanaApi] \u2705 sendSolanaTransaction success:", {
301
+ txHash: response.result.data
302
+ });
303
+ return {
304
+ txHash: response.result.data
305
+ };
306
+ }
307
+ };
308
+
309
+ export {
310
+ SolanaApi
311
+ };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  secure_default
4
- } from "./chunk-G2LI5MVX.js";
4
+ } from "./chunk-NDYGTKP5.js";
5
5
  import {
6
6
  calculateExpiryTimestamp,
7
7
  createAbcError,
@@ -10,7 +10,7 @@ import {
10
10
  parseApiError,
11
11
  removeFromStorage,
12
12
  saveToStorage
13
- } from "./chunk-UV5HHESJ.js";
13
+ } from "./chunk-5RSS3SRV.js";
14
14
  import {
15
15
  ABC_ENDPOINTS,
16
16
  DEFAULT_HEADERS,
@@ -38,6 +38,15 @@ var BaseApiClient = class {
38
38
  this.refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
39
39
  this.expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
40
40
  }
41
+ /**
42
+ * Set tokens in client instance (useful when restoring from storage or state)
43
+ * Call this before making API requests if tokens are managed externally
44
+ */
45
+ setTokens(accessToken, refreshToken, expiresAt) {
46
+ this.accessToken = accessToken;
47
+ this.refreshToken = refreshToken;
48
+ this.expiresAt = expiresAt;
49
+ }
41
50
  /**
42
51
  * Save tokens to storage
43
52
  */
@@ -248,6 +257,18 @@ var BaseApiClient = class {
248
257
  }
249
258
  });
250
259
  }
260
+ if (endpoint.includes("/recover")) {
261
+ console.log("[BaseApiClient] \u2705 Successful response:", {
262
+ url,
263
+ method,
264
+ status: response.status,
265
+ dataKeys: Object.keys(data),
266
+ hasStatus: "status" in data,
267
+ hasResult: "result" in data,
268
+ dataStatus: data.status,
269
+ data
270
+ });
271
+ }
251
272
  return data;
252
273
  } catch (error) {
253
274
  console.error("[BaseApiClient] \u274C Request failed:", {
@@ -0,0 +1,313 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-CNRPEVLV.js";
5
+ import {
6
+ getSolanaNetwork
7
+ } from "./chunk-A7FIBI6X.js";
8
+ import {
9
+ createAbcError
10
+ } from "./chunk-5RSS3SRV.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/api/SolanaApi.ts
13
+ import { PublicKey } from "@solana/web3.js";
14
+ var SolanaApi = class extends BaseApiClient {
15
+ /**
16
+ * Generate Solana wallet (Ed25519)
17
+ * Uses V3 API with Ed25519 curve
18
+ *
19
+ * @param pin - Hashed PIN (SHA-256)
20
+ * @param isRecover - Whether to recover existing wallet (default: false)
21
+ * @returns Solana wallet information
22
+ */
23
+ async generateSolanaWallet(pin, isRecover = false) {
24
+ const endpoint = `/v3/wallet/${isRecover ? "recover" : "generate"}`;
25
+ const network = getSolanaNetwork();
26
+ console.log(`[SolanaApi] ${isRecover ? "Recovering" : "Generating"} Solana wallet...`, {
27
+ endpoint,
28
+ network
29
+ });
30
+ const response = await this.request(endpoint, {
31
+ method: "POST",
32
+ contentType: "json",
33
+ body: {
34
+ curve: "ed25519",
35
+ password: pin,
36
+ network
37
+ }
38
+ });
39
+ console.log("[SolanaApi] API response received:", {
40
+ status: response.status,
41
+ hasResult: !!response.result,
42
+ resultKeys: response.result ? Object.keys(response.result) : []
43
+ });
44
+ let result;
45
+ if (response.status === "success" && response.result) {
46
+ result = response.result;
47
+ } else if (response.encrypted_share && response.key_id) {
48
+ result = response;
49
+ } else {
50
+ console.error("[SolanaApi] API returned error:", {
51
+ status: response.status,
52
+ result: response.result,
53
+ endpoint,
54
+ fullResponse: response
55
+ });
56
+ throw createAbcError(
57
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
58
+ `Failed to ${isRecover ? "recover" : "generate"} Solana wallet`,
59
+ response
60
+ );
61
+ }
62
+ console.log("[SolanaApi] generateSolanaWallet API response:", {
63
+ hasKeyId: "key_id" in result,
64
+ hasEncryptedShare: "encrypted_share" in result,
65
+ hasSecretStore: "secret_store" in result,
66
+ fields: Object.keys(result)
67
+ });
68
+ let address;
69
+ try {
70
+ address = this.deriveAddressFromPublicKey(result.public_key);
71
+ } catch (error) {
72
+ console.warn("[SolanaApi] Base58 conversion failed, using hex address:", error);
73
+ address = result.public_key.startsWith("0x") ? result.public_key.slice(2) : result.public_key;
74
+ }
75
+ return {
76
+ uid: result.uid || "",
77
+ sessionId: result.share_id,
78
+ shareId: result.share_id,
79
+ publicKey: result.public_key,
80
+ address,
81
+ keyId: result.key_id || result.share_id,
82
+ // API returns snake_case key_id
83
+ encryptedShare: result.encrypted_share || "",
84
+ // API returns snake_case encrypted_share
85
+ secretStore: result.secret_store || "",
86
+ // API returns snake_case secret_store
87
+ network
88
+ // Use network from request (already has correct value)
89
+ };
90
+ }
91
+ /**
92
+ * Recover Solana wallet (alias for generateSolanaWallet with isRecover=true)
93
+ *
94
+ * @param pin - Hashed PIN (SHA-256)
95
+ * @returns Recovered Solana wallet information
96
+ */
97
+ async recoverSolanaWallet(pin) {
98
+ return this.generateSolanaWallet(pin, true);
99
+ }
100
+ /**
101
+ * Derive Solana address from Ed25519 public key
102
+ * Converts hex public key to base58-encoded Solana address
103
+ *
104
+ * @param publicKey - Ed25519 public key (hex)
105
+ * @returns Solana address (base58)
106
+ */
107
+ deriveAddressFromPublicKey(publicKey) {
108
+ const cleanKey = publicKey.startsWith("0x") ? publicKey.slice(2) : publicKey;
109
+ const bytes = new Uint8Array(
110
+ cleanKey.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
111
+ );
112
+ try {
113
+ const pubkey = new PublicKey(bytes);
114
+ return pubkey.toBase58();
115
+ } catch (error) {
116
+ console.error("[SolanaApi] Failed to encode address:", error);
117
+ return cleanKey;
118
+ }
119
+ }
120
+ /**
121
+ * Sign Solana transaction with Ed25519
122
+ * Reference: /v3/wallet/sign API requires only 5 fields
123
+ */
124
+ async signSolanaTransaction(params) {
125
+ const network = getSolanaNetwork();
126
+ console.log("[SolanaApi] signSolanaTransaction - start:", {
127
+ network,
128
+ messageLength: params.message.length,
129
+ messagePreview: params.message.substring(0, 40) + "..."
130
+ });
131
+ const response = await this.request("/v3/wallet/sign", {
132
+ method: "POST",
133
+ contentType: "json",
134
+ body: {
135
+ curve: "ed25519",
136
+ network,
137
+ key_id: params.keyId,
138
+ encrypted_share: params.encryptedShare,
139
+ secret_store: params.secretStore || "",
140
+ message: params.message
141
+ }
142
+ });
143
+ console.log("[SolanaApi] signSolanaTransaction - response:", {
144
+ status: response.status,
145
+ hasResult: !!response.result,
146
+ hasDirectSignature: !!response.signature,
147
+ signature: response.signature || response.result?.signature
148
+ });
149
+ let signature;
150
+ if (response.status === "success" && response.result?.signature) {
151
+ signature = response.result.signature;
152
+ } else if (response.signature) {
153
+ signature = response.signature;
154
+ } else {
155
+ console.error("[SolanaApi] \u274C signSolanaTransaction failed:", response);
156
+ throw createAbcError(
157
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
158
+ "Failed to sign Solana transaction",
159
+ response
160
+ );
161
+ }
162
+ console.log("[SolanaApi] \u2705 signSolanaTransaction success:", {
163
+ signatureLength: signature.length,
164
+ signatureFormat: signature.length === 128 ? "hex" : signature.length === 88 ? "base64" : "unknown"
165
+ });
166
+ return {
167
+ signature
168
+ };
169
+ }
170
+ /**
171
+ * Sign Solana message with Ed25519
172
+ * Reference: /v3/wallet/sign API requires only 5 fields
173
+ */
174
+ async signSolanaMessage(params) {
175
+ console.log("[SolanaApi] signSolanaMessage params:", {
176
+ hasKeyId: !!params.keyId,
177
+ hasEncryptedShare: !!params.encryptedShare,
178
+ hasMessage: !!params.message,
179
+ keyId: params.keyId
180
+ });
181
+ const network = getSolanaNetwork();
182
+ console.log("[SolanaApi] Signing message with:", {
183
+ network,
184
+ messageLength: params.message.length,
185
+ messagePreview: params.message.substring(0, 20) + "..."
186
+ });
187
+ const response = await this.request("/v3/wallet/sign", {
188
+ method: "POST",
189
+ contentType: "json",
190
+ body: {
191
+ curve: "ed25519",
192
+ network,
193
+ key_id: params.keyId,
194
+ encrypted_share: params.encryptedShare,
195
+ secret_store: params.secretStore || "",
196
+ message: params.message
197
+ }
198
+ });
199
+ console.log("[SolanaApi] Sign response:", {
200
+ status: response.status,
201
+ hasResult: !!response.result,
202
+ hasSignature: !!response.result?.signature,
203
+ directSignature: !!response.signature,
204
+ error: response.error
205
+ });
206
+ let signature;
207
+ if (response.status === "success" && response.result?.signature) {
208
+ signature = response.result.signature;
209
+ } else if (response.signature) {
210
+ signature = response.signature;
211
+ } else {
212
+ console.error("[SolanaApi] \u274C Sign failed:", response);
213
+ throw createAbcError(
214
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
215
+ "Failed to sign Solana message",
216
+ response
217
+ );
218
+ }
219
+ return {
220
+ signature
221
+ };
222
+ }
223
+ /**
224
+ * Generate Solana transfer transaction via ABC WaaS API
225
+ * This ensures the transaction uses the same RPC and blockhash as the server
226
+ */
227
+ async generateTransferTransaction(params) {
228
+ console.log("[SolanaApi] generateTransferTransaction - request:", {
229
+ network: params.network,
230
+ amount: params.amount,
231
+ from: params.fromAddress,
232
+ to: params.toAddress
233
+ });
234
+ const response = await this.request("/wapi/v2/solana/tx/generateTransferSOLTransaction", {
235
+ method: "POST",
236
+ contentType: "json",
237
+ body: {
238
+ network: params.network,
239
+ amount: params.amount,
240
+ fromAddress: params.fromAddress,
241
+ toAddress: params.toAddress,
242
+ feePayerAddress: params.feePayerAddress
243
+ }
244
+ });
245
+ console.log("[SolanaApi] generateTransferTransaction - response:", {
246
+ status: response.status,
247
+ hasResult: !!response.result,
248
+ hasData: !!response.data,
249
+ hasSerializedTx: !!response.data?.serialized_tx
250
+ });
251
+ const serializedTx = response.data?.serialized_tx || response.result?.data?.serialized_tx;
252
+ if (!serializedTx) {
253
+ console.error("[SolanaApi] \u274C generateTransferTransaction failed:", response);
254
+ throw createAbcError(
255
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
256
+ "Failed to generate Solana transaction",
257
+ response
258
+ );
259
+ }
260
+ console.log("[SolanaApi] \u2705 generateTransferTransaction success:", {
261
+ serializedTxLength: serializedTx.length
262
+ });
263
+ return {
264
+ serialized_tx: serializedTx
265
+ };
266
+ }
267
+ /**
268
+ * Send Solana transaction
269
+ */
270
+ async sendSolanaTransaction(params) {
271
+ console.log("[SolanaApi] sendSolanaTransaction - request:", {
272
+ network: params.network,
273
+ serializedTXLength: params.serializedTX.length,
274
+ serializedTXPreview: params.serializedTX.substring(0, 40) + "...",
275
+ signaturesCount: params.signatures.length,
276
+ signaturesLengths: params.signatures.map((s) => s.length)
277
+ });
278
+ const response = await this.request("/wapi/v2/solana/tx/sendTransaction", {
279
+ method: "POST",
280
+ contentType: "json",
281
+ body: {
282
+ network: params.network,
283
+ serializedTX: params.serializedTX,
284
+ signatures: params.signatures
285
+ }
286
+ });
287
+ console.log("[SolanaApi] sendSolanaTransaction - response:", {
288
+ status: response.status,
289
+ hasResult: !!response.result,
290
+ hasData: !!response.data,
291
+ directData: response.data
292
+ });
293
+ const txHash = response.data || response.result?.data;
294
+ if (!txHash || typeof txHash !== "string") {
295
+ console.error("[SolanaApi] \u274C sendSolanaTransaction failed:", response);
296
+ throw createAbcError(
297
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
298
+ "Failed to send Solana transaction",
299
+ response
300
+ );
301
+ }
302
+ console.log("[SolanaApi] \u2705 sendSolanaTransaction success:", {
303
+ txHash
304
+ });
305
+ return {
306
+ txHash
307
+ };
308
+ }
309
+ };
310
+
311
+ export {
312
+ SolanaApi
313
+ };