@talken/talkenkit 2.4.20 → 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 +2007 -1067
  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 +17 -17
  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 +88 -88
  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,302 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-QD3PPWTN.js";
5
+ import {
6
+ getSolanaNetwork
7
+ } from "./chunk-O4AU63LK.js";
8
+ import {
9
+ createAbcError
10
+ } from "./chunk-ZJDZJW55.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/api/SolanaApi.ts
13
+ import { PublicKey } from "@solana/web3.js";
14
+ import { getTalkenApiClient } from "@talken/talkenkit";
15
+ var SolanaApi = class extends BaseApiClient {
16
+ /**
17
+ * Generate Solana wallet (Ed25519)
18
+ * Delegates to TalkenApiClient unified wallet endpoint.
19
+ *
20
+ * @param pin - Hashed PIN (SHA-256)
21
+ * @param isRecover - Whether to recover existing wallet (default: false)
22
+ * @returns Solana wallet information
23
+ */
24
+ async generateSolanaWallet(pin, isRecover = false) {
25
+ const api = getTalkenApiClient();
26
+ if (!api)
27
+ throw new Error("TalkenApiClient not initialized");
28
+ const response = isRecover ? await api.wallet.recover(pin) : await api.wallet.generate(pin);
29
+ if (!response.solana) {
30
+ throw createAbcError(
31
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
32
+ `Solana wallet not returned from TalkenApiClient ${isRecover ? "recovery" : "generation"}`
33
+ );
34
+ }
35
+ return response.solana;
36
+ }
37
+ /**
38
+ * Recover Solana wallet (alias for generateSolanaWallet with isRecover=true)
39
+ * When TalkenApiClient is available, delegates to the unified recovery endpoint.
40
+ *
41
+ * @param pin - Hashed PIN (SHA-256)
42
+ * @returns Recovered Solana wallet information
43
+ */
44
+ async recoverSolanaWallet(pin) {
45
+ return this.generateSolanaWallet(pin, true);
46
+ }
47
+ /**
48
+ * Get Solana address from wallet addresses endpoint
49
+ * Retrieves from TalkenApiClient unified addresses endpoint.
50
+ *
51
+ * @returns Solana address string or null if not available
52
+ */
53
+ async getSolanaAddress() {
54
+ const api = getTalkenApiClient();
55
+ if (!api)
56
+ throw new Error("TalkenApiClient not initialized");
57
+ const addresses = await api.wallet.getAddresses();
58
+ return addresses.solana || null;
59
+ }
60
+ /**
61
+ * Derive Solana address from Ed25519 public key
62
+ * @param publicKey - Ed25519 public key (hex)
63
+ * @returns Solana address (base58)
64
+ */
65
+ deriveAddressFromPublicKey(publicKey) {
66
+ const cleanKey = publicKey.startsWith("0x") ? publicKey.slice(2) : publicKey;
67
+ const bytes = new Uint8Array(
68
+ cleanKey.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
69
+ );
70
+ try {
71
+ const pubkey = new PublicKey(bytes);
72
+ return pubkey.toBase58();
73
+ } catch (error) {
74
+ console.error("[SolanaApi] Failed to encode address:", error);
75
+ return cleanKey;
76
+ }
77
+ }
78
+ /**
79
+ * Sign Solana transaction with Ed25519 (via talken-api proxy, PIN mode)
80
+ */
81
+ async signSolanaTransaction(params) {
82
+ const api = getTalkenApiClient();
83
+ if (!api) {
84
+ throw createAbcError(
85
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
86
+ "TalkenApiClient not initialized"
87
+ );
88
+ }
89
+ const network = getSolanaNetwork();
90
+ const result = await api.solana.sign({
91
+ message: params.message,
92
+ pin: params.pin,
93
+ keyId: params.keyId,
94
+ encryptedShare: params.encryptedShare,
95
+ secretStore: params.secretStore,
96
+ network
97
+ });
98
+ if (!result.signature) {
99
+ throw createAbcError(
100
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
101
+ "Failed to sign Solana transaction"
102
+ );
103
+ }
104
+ return { signature: result.signature };
105
+ }
106
+ /**
107
+ * Sign Solana message with Ed25519 (via talken-api proxy, Share mode — no PIN)
108
+ */
109
+ async signSolanaMessage(params) {
110
+ const api = getTalkenApiClient();
111
+ if (!api) {
112
+ throw createAbcError(
113
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
114
+ "TalkenApiClient not initialized"
115
+ );
116
+ }
117
+ const network = getSolanaNetwork();
118
+ const result = await api.solana.sign({
119
+ message: params.message,
120
+ keyId: params.keyId,
121
+ encryptedShare: params.encryptedShare,
122
+ secretStore: params.secretStore,
123
+ network
124
+ });
125
+ if (!result.signature) {
126
+ throw createAbcError(
127
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
128
+ "Failed to sign Solana message"
129
+ );
130
+ }
131
+ return { signature: result.signature };
132
+ }
133
+ /**
134
+ * Generate Solana transfer transaction via ABC WaaS API
135
+ * This ensures the transaction uses the same RPC and blockhash as the server
136
+ */
137
+ async generateTransferTransaction(params) {
138
+ const response = await this.request(
139
+ "/wapi/v2/solana/tx/generateTransferSOLTransaction",
140
+ {
141
+ method: "POST",
142
+ contentType: "json",
143
+ body: {
144
+ network: params.network,
145
+ amount: params.amount,
146
+ fromAddress: params.fromAddress,
147
+ toAddress: params.toAddress,
148
+ feePayerAddress: params.feePayerAddress
149
+ }
150
+ }
151
+ );
152
+ const responseData = response;
153
+ const serializedTx = responseData.data?.serialized_tx || response.status === "success" && response.result?.data?.serialized_tx;
154
+ if (!serializedTx) {
155
+ throw createAbcError(
156
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
157
+ "Failed to generate Solana transaction",
158
+ response
159
+ );
160
+ }
161
+ return {
162
+ serialized_tx: serializedTx
163
+ };
164
+ }
165
+ /**
166
+ * Send Solana transaction (unsigned transaction + separate signatures)
167
+ * Used for server-generated transactions that need client signatures
168
+ */
169
+ async sendSolanaTransaction(params) {
170
+ const response = await this.request("/wapi/v2/solana/tx/sendTransaction", {
171
+ method: "POST",
172
+ contentType: "json",
173
+ body: {
174
+ network: params.network,
175
+ serializedTX: params.serializedTX,
176
+ signatures: params.signatures
177
+ }
178
+ });
179
+ const responseData = response;
180
+ const txHash = responseData.data || response.status === "success" && response.result?.data;
181
+ if (!txHash || typeof txHash !== "string") {
182
+ throw createAbcError(
183
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
184
+ "Failed to send Solana transaction",
185
+ response
186
+ );
187
+ }
188
+ return {
189
+ txHash
190
+ };
191
+ }
192
+ /**
193
+ * Send fully signed Solana transaction (for client-built transactions)
194
+ * Sends a completely signed transaction directly to Solana network
195
+ */
196
+ async sendSignedSolanaTransaction(params) {
197
+ const response = await this.request(
198
+ "/wapi/v2/solana/tx/sendSignedTransaction",
199
+ {
200
+ method: "POST",
201
+ contentType: "json",
202
+ body: {
203
+ network: params.network,
204
+ serializedTX: params.serializedTX
205
+ }
206
+ }
207
+ );
208
+ const responseData = response;
209
+ const txHash = responseData.data?.transactionHash || response.status === "success" && response.result?.data?.transactionHash;
210
+ if (!txHash || typeof txHash !== "string") {
211
+ throw createAbcError(
212
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
213
+ "Failed to send signed Solana transaction",
214
+ response
215
+ );
216
+ }
217
+ return {
218
+ txHash
219
+ };
220
+ }
221
+ /**
222
+ * Generate SPL token transfer transaction via ABC WaaS API
223
+ * Uses wallet addresses (not token accounts) - API resolves ATAs internally
224
+ *
225
+ * @param params - SPL transfer parameters
226
+ * @returns Serialized transaction
227
+ */
228
+ async generateSPLTransferTransaction(params) {
229
+ const response = await this.request(
230
+ "/wapi/v2/solana/tx/generateTransferFTTransaction",
231
+ {
232
+ method: "POST",
233
+ contentType: "json",
234
+ body: {
235
+ network: params.network,
236
+ mintAddress: params.mintAddress,
237
+ fromAddress: params.fromAddress,
238
+ toAddress: params.toAddress,
239
+ amount: params.amount,
240
+ ...params.decimals !== void 0 && { decimals: params.decimals },
241
+ ...params.feePayerAddress && {
242
+ feePayerAddress: params.feePayerAddress
243
+ },
244
+ ...params.latestBlockhash && {
245
+ latestBlockhash: params.latestBlockhash
246
+ }
247
+ }
248
+ }
249
+ );
250
+ const responseData = response;
251
+ const data = responseData.data || response.status === "success" && response.result;
252
+ if (!data?.serialized_tx) {
253
+ throw createAbcError(
254
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
255
+ "Failed to generate SPL transfer transaction",
256
+ response
257
+ );
258
+ }
259
+ return {
260
+ serialized_tx: data.serialized_tx,
261
+ estimated_fee: data.estimated_fee || { context: { Slot: 0 }, value: 0 },
262
+ latest_blockhash: data.latest_blockhash || ""
263
+ };
264
+ }
265
+ /**
266
+ * Get SPL token supply information
267
+ *
268
+ * @param params - Token query parameters
269
+ * @returns Token supply information
270
+ */
271
+ async getTokenInfo(params) {
272
+ const response = await this.request(
273
+ "/wapi/v2/solana/token/getTokenSupply",
274
+ {
275
+ method: "POST",
276
+ contentType: "json",
277
+ body: {
278
+ network: params.network,
279
+ tokenAddress: params.tokenAddress
280
+ }
281
+ }
282
+ );
283
+ const responseData = response;
284
+ const value = responseData.data?.value || response.status === "success" && response.result?.data?.value;
285
+ if (!value || typeof value.decimals !== "number") {
286
+ throw createAbcError(
287
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
288
+ "Failed to get token info",
289
+ response
290
+ );
291
+ }
292
+ return {
293
+ amount: value.amount,
294
+ decimals: value.decimals,
295
+ uiAmountString: value.uiAmountString
296
+ };
297
+ }
298
+ };
299
+
300
+ export {
301
+ SolanaApi
302
+ };
@@ -0,0 +1,302 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-MBRXYEQC.js";
5
+ import {
6
+ getSolanaNetwork
7
+ } from "./chunk-O4AU63LK.js";
8
+ import {
9
+ createAbcError
10
+ } from "./chunk-LOSXI36Y.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/api/SolanaApi.ts
13
+ import { PublicKey } from "@solana/web3.js";
14
+ import { getTalkenApiClient } from "@talken/talkenkit";
15
+ var SolanaApi = class extends BaseApiClient {
16
+ /**
17
+ * Generate Solana wallet (Ed25519)
18
+ * Delegates to TalkenApiClient unified wallet endpoint.
19
+ *
20
+ * @param pin - Hashed PIN (SHA-256)
21
+ * @param isRecover - Whether to recover existing wallet (default: false)
22
+ * @returns Solana wallet information
23
+ */
24
+ async generateSolanaWallet(pin, isRecover = false) {
25
+ const api = getTalkenApiClient();
26
+ if (!api)
27
+ throw new Error("TalkenApiClient not initialized");
28
+ const response = isRecover ? await api.wallet.recover(pin) : await api.wallet.generate(pin);
29
+ if (!response.solana) {
30
+ throw createAbcError(
31
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
32
+ `Solana wallet not returned from TalkenApiClient ${isRecover ? "recovery" : "generation"}`
33
+ );
34
+ }
35
+ return response.solana;
36
+ }
37
+ /**
38
+ * Recover Solana wallet (alias for generateSolanaWallet with isRecover=true)
39
+ * When TalkenApiClient is available, delegates to the unified recovery endpoint.
40
+ *
41
+ * @param pin - Hashed PIN (SHA-256)
42
+ * @returns Recovered Solana wallet information
43
+ */
44
+ async recoverSolanaWallet(pin) {
45
+ return this.generateSolanaWallet(pin, true);
46
+ }
47
+ /**
48
+ * Get Solana address from wallet addresses endpoint
49
+ * Retrieves from TalkenApiClient unified addresses endpoint.
50
+ *
51
+ * @returns Solana address string or null if not available
52
+ */
53
+ async getSolanaAddress() {
54
+ const api = getTalkenApiClient();
55
+ if (!api)
56
+ throw new Error("TalkenApiClient not initialized");
57
+ const addresses = await api.wallet.getAddresses();
58
+ return addresses.solana || null;
59
+ }
60
+ /**
61
+ * Derive Solana address from Ed25519 public key
62
+ * @param publicKey - Ed25519 public key (hex)
63
+ * @returns Solana address (base58)
64
+ */
65
+ deriveAddressFromPublicKey(publicKey) {
66
+ const cleanKey = publicKey.startsWith("0x") ? publicKey.slice(2) : publicKey;
67
+ const bytes = new Uint8Array(
68
+ cleanKey.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
69
+ );
70
+ try {
71
+ const pubkey = new PublicKey(bytes);
72
+ return pubkey.toBase58();
73
+ } catch (error) {
74
+ console.error("[SolanaApi] Failed to encode address:", error);
75
+ return cleanKey;
76
+ }
77
+ }
78
+ /**
79
+ * Sign Solana transaction with Ed25519 (via talken-api proxy, PIN mode)
80
+ */
81
+ async signSolanaTransaction(params) {
82
+ const api = getTalkenApiClient();
83
+ if (!api) {
84
+ throw createAbcError(
85
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
86
+ "TalkenApiClient not initialized"
87
+ );
88
+ }
89
+ const network = getSolanaNetwork();
90
+ const result = await api.solana.sign({
91
+ message: params.message,
92
+ pin: params.pin,
93
+ keyId: params.keyId,
94
+ encryptedShare: params.encryptedShare,
95
+ secretStore: params.secretStore,
96
+ network
97
+ });
98
+ if (!result.signature) {
99
+ throw createAbcError(
100
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
101
+ "Failed to sign Solana transaction"
102
+ );
103
+ }
104
+ return { signature: result.signature };
105
+ }
106
+ /**
107
+ * Sign Solana message with Ed25519 (via talken-api proxy, Share mode — no PIN)
108
+ */
109
+ async signSolanaMessage(params) {
110
+ const api = getTalkenApiClient();
111
+ if (!api) {
112
+ throw createAbcError(
113
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
114
+ "TalkenApiClient not initialized"
115
+ );
116
+ }
117
+ const network = getSolanaNetwork();
118
+ const result = await api.solana.sign({
119
+ message: params.message,
120
+ keyId: params.keyId,
121
+ encryptedShare: params.encryptedShare,
122
+ secretStore: params.secretStore,
123
+ network
124
+ });
125
+ if (!result.signature) {
126
+ throw createAbcError(
127
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
128
+ "Failed to sign Solana message"
129
+ );
130
+ }
131
+ return { signature: result.signature };
132
+ }
133
+ /**
134
+ * Generate Solana transfer transaction via ABC WaaS API
135
+ * This ensures the transaction uses the same RPC and blockhash as the server
136
+ */
137
+ async generateTransferTransaction(params) {
138
+ const response = await this.request(
139
+ "/wapi/v2/solana/tx/generateTransferSOLTransaction",
140
+ {
141
+ method: "POST",
142
+ contentType: "json",
143
+ body: {
144
+ network: params.network,
145
+ amount: params.amount,
146
+ fromAddress: params.fromAddress,
147
+ toAddress: params.toAddress,
148
+ feePayerAddress: params.feePayerAddress
149
+ }
150
+ }
151
+ );
152
+ const responseData = response;
153
+ const serializedTx = responseData.data?.serialized_tx || response.status === "success" && response.result?.data?.serialized_tx;
154
+ if (!serializedTx) {
155
+ throw createAbcError(
156
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
157
+ "Failed to generate Solana transaction",
158
+ response
159
+ );
160
+ }
161
+ return {
162
+ serialized_tx: serializedTx
163
+ };
164
+ }
165
+ /**
166
+ * Send Solana transaction (unsigned transaction + separate signatures)
167
+ * Used for server-generated transactions that need client signatures
168
+ */
169
+ async sendSolanaTransaction(params) {
170
+ const response = await this.request("/wapi/v2/solana/tx/sendTransaction", {
171
+ method: "POST",
172
+ contentType: "json",
173
+ body: {
174
+ network: params.network,
175
+ serializedTX: params.serializedTX,
176
+ signatures: params.signatures
177
+ }
178
+ });
179
+ const responseData = response;
180
+ const txHash = responseData.data || response.status === "success" && response.result?.data;
181
+ if (!txHash || typeof txHash !== "string") {
182
+ throw createAbcError(
183
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
184
+ "Failed to send Solana transaction",
185
+ response
186
+ );
187
+ }
188
+ return {
189
+ txHash
190
+ };
191
+ }
192
+ /**
193
+ * Send fully signed Solana transaction (for client-built transactions)
194
+ * Sends a completely signed transaction directly to Solana network
195
+ */
196
+ async sendSignedSolanaTransaction(params) {
197
+ const response = await this.request(
198
+ "/wapi/v2/solana/tx/sendSignedTransaction",
199
+ {
200
+ method: "POST",
201
+ contentType: "json",
202
+ body: {
203
+ network: params.network,
204
+ serializedTX: params.serializedTX
205
+ }
206
+ }
207
+ );
208
+ const responseData = response;
209
+ const txHash = responseData.data?.transactionHash || response.status === "success" && response.result?.data?.transactionHash;
210
+ if (!txHash || typeof txHash !== "string") {
211
+ throw createAbcError(
212
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
213
+ "Failed to send signed Solana transaction",
214
+ response
215
+ );
216
+ }
217
+ return {
218
+ txHash
219
+ };
220
+ }
221
+ /**
222
+ * Generate SPL token transfer transaction via ABC WaaS API
223
+ * Uses wallet addresses (not token accounts) - API resolves ATAs internally
224
+ *
225
+ * @param params - SPL transfer parameters
226
+ * @returns Serialized transaction
227
+ */
228
+ async generateSPLTransferTransaction(params) {
229
+ const response = await this.request(
230
+ "/wapi/v2/solana/tx/generateTransferFTTransaction",
231
+ {
232
+ method: "POST",
233
+ contentType: "json",
234
+ body: {
235
+ network: params.network,
236
+ mintAddress: params.mintAddress,
237
+ fromAddress: params.fromAddress,
238
+ toAddress: params.toAddress,
239
+ amount: params.amount,
240
+ ...params.decimals !== void 0 && { decimals: params.decimals },
241
+ ...params.feePayerAddress && {
242
+ feePayerAddress: params.feePayerAddress
243
+ },
244
+ ...params.latestBlockhash && {
245
+ latestBlockhash: params.latestBlockhash
246
+ }
247
+ }
248
+ }
249
+ );
250
+ const responseData = response;
251
+ const data = responseData.data || response.status === "success" && response.result;
252
+ if (!data?.serialized_tx) {
253
+ throw createAbcError(
254
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
255
+ "Failed to generate SPL transfer transaction",
256
+ response
257
+ );
258
+ }
259
+ return {
260
+ serialized_tx: data.serialized_tx,
261
+ estimated_fee: data.estimated_fee || { context: { Slot: 0 }, value: 0 },
262
+ latest_blockhash: data.latest_blockhash || ""
263
+ };
264
+ }
265
+ /**
266
+ * Get SPL token supply information
267
+ *
268
+ * @param params - Token query parameters
269
+ * @returns Token supply information
270
+ */
271
+ async getTokenInfo(params) {
272
+ const response = await this.request(
273
+ "/wapi/v2/solana/token/getTokenSupply",
274
+ {
275
+ method: "POST",
276
+ contentType: "json",
277
+ body: {
278
+ network: params.network,
279
+ tokenAddress: params.tokenAddress
280
+ }
281
+ }
282
+ );
283
+ const responseData = response;
284
+ const value = responseData.data?.value || response.status === "success" && response.result?.data?.value;
285
+ if (!value || typeof value.decimals !== "number") {
286
+ throw createAbcError(
287
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
288
+ "Failed to get token info",
289
+ response
290
+ );
291
+ }
292
+ return {
293
+ amount: value.amount,
294
+ decimals: value.decimals,
295
+ uiAmountString: value.uiAmountString
296
+ };
297
+ }
298
+ };
299
+
300
+ export {
301
+ SolanaApi
302
+ };
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import {
3
+ createTalkenApiClient
4
+ } from "./chunk-6CVXZ3ZW.js";
5
+ import {
6
+ abcConnector
7
+ } from "./chunk-3DGFHWI3.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
+ };