@talken/talkenkit 2.4.13 → 2.4.14

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 (172) hide show
  1. package/dist/abcWallet-25AKGPRG.js +184 -0
  2. package/dist/abcWallet-2SXWQ2M6.js +184 -0
  3. package/dist/abcWallet-3E6Y5QS4.js +184 -0
  4. package/dist/abcWallet-3HKYSDOS.js +184 -0
  5. package/dist/abcWallet-6VIUP4H3.js +184 -0
  6. package/dist/abcWallet-7CXDTXHX.js +184 -0
  7. package/dist/abcWallet-A3PX6AEW.js +184 -0
  8. package/dist/abcWallet-A6CRIFP2.js +184 -0
  9. package/dist/abcWallet-ACAOT2F3.js +184 -0
  10. package/dist/abcWallet-AWALYVJ7.js +184 -0
  11. package/dist/abcWallet-CEW3E2AX.js +184 -0
  12. package/dist/abcWallet-CEZAQ3ES.js +184 -0
  13. package/dist/abcWallet-CURD64AW.js +184 -0
  14. package/dist/abcWallet-E2A433S3.js +184 -0
  15. package/dist/abcWallet-ER37COEQ.js +184 -0
  16. package/dist/abcWallet-ETWMKZKD.js +184 -0
  17. package/dist/abcWallet-F6JAVHHQ.js +184 -0
  18. package/dist/abcWallet-GEHOIOZN.js +184 -0
  19. package/dist/abcWallet-H22OANDE.js +184 -0
  20. package/dist/abcWallet-H5BBPLGS.js +184 -0
  21. package/dist/abcWallet-I5BENZSH.js +184 -0
  22. package/dist/abcWallet-LABFRLNR.js +184 -0
  23. package/dist/abcWallet-MB2IAXV5.js +184 -0
  24. package/dist/abcWallet-MH6OGFBO.js +184 -0
  25. package/dist/abcWallet-NJGYOH52.js +184 -0
  26. package/dist/abcWallet-OG6ZQORS.js +184 -0
  27. package/dist/abcWallet-OJ7VCWHZ.js +184 -0
  28. package/dist/abcWallet-PBEQA5UT.js +184 -0
  29. package/dist/abcWallet-PMJEDGRW.js +184 -0
  30. package/dist/abcWallet-SX35BIXB.js +184 -0
  31. package/dist/abcWallet-TQTXUPJZ.js +184 -0
  32. package/dist/abcWallet-VKVKBQYN.js +184 -0
  33. package/dist/abcWallet-W6OZE7QD.js +184 -0
  34. package/dist/abcWallet-WH2J2YAV.js +184 -0
  35. package/dist/abcWallet-XA5DX7XK.js +184 -0
  36. package/dist/abcWallet-XANCTLMU.js +184 -0
  37. package/dist/abcWallet-XDP764EW.js +184 -0
  38. package/dist/abcWallet-Y3DONK5H.js +184 -0
  39. package/dist/abcWallet-YLBGJ5K6.js +184 -0
  40. package/dist/abcWallet-ZSL4HH7M.js +184 -0
  41. package/dist/chunk-2D6TXDN2.js +7450 -0
  42. package/dist/chunk-3K7INMEV.js +7470 -0
  43. package/dist/chunk-5FE4YAGR.js +7423 -0
  44. package/dist/chunk-5LD4QGWP.js +7423 -0
  45. package/dist/chunk-64RMUCRE.js +7447 -0
  46. package/dist/chunk-6KTOC6CY.js +7464 -0
  47. package/dist/chunk-6QW7GFF5.js +7450 -0
  48. package/dist/chunk-6RCVLZFG.js +7462 -0
  49. package/dist/chunk-7Y3M3LG3.js +7446 -0
  50. package/dist/chunk-A3EBU637.js +7441 -0
  51. package/dist/chunk-BVBWXZCX.js +7450 -0
  52. package/dist/chunk-CAXCHVY2.js +7469 -0
  53. package/dist/chunk-CBJW7X7O.js +7382 -0
  54. package/dist/chunk-CD36XA5S.js +7417 -0
  55. package/dist/chunk-EAKUQPJO.js +7463 -0
  56. package/dist/chunk-ER7H33CO.js +7450 -0
  57. package/dist/chunk-FCENPWP5.js +7452 -0
  58. package/dist/chunk-FPMB7NJE.js +7366 -0
  59. package/dist/chunk-GWIJVQBX.js +7420 -0
  60. package/dist/chunk-HGOFSTGT.js +7474 -0
  61. package/dist/chunk-JJ4CTD2J.js +7428 -0
  62. package/dist/chunk-JMBGLDYV.js +7368 -0
  63. package/dist/chunk-KBMHNBKL.js +7449 -0
  64. package/dist/chunk-KZRFIJW2.js +7452 -0
  65. package/dist/chunk-L6TCA4IF.js +7378 -0
  66. package/dist/chunk-LTRXFRER.js +7472 -0
  67. package/dist/chunk-MRLTYAPE.js +7451 -0
  68. package/dist/chunk-N3QOWEYR.js +7393 -0
  69. package/dist/chunk-NII34OZB.js +7442 -0
  70. package/dist/chunk-OAHLI7TU.js +7368 -0
  71. package/dist/chunk-RFJBWB7F.js +7467 -0
  72. package/dist/chunk-SBRDMKB6.js +7408 -0
  73. package/dist/chunk-SDRSLETV.js +7428 -0
  74. package/dist/chunk-SWO7BZQD.js +7463 -0
  75. package/dist/chunk-TR4Q6WOC.js +7427 -0
  76. package/dist/chunk-UBBAWTXE.js +7370 -0
  77. package/dist/chunk-VEOSJOVN.js +7377 -0
  78. package/dist/chunk-VGF34W25.js +7370 -0
  79. package/dist/chunk-VXSGQUAL.js +7458 -0
  80. package/dist/chunk-Z3FKXPV6.js +7430 -0
  81. package/dist/hooks/useSolanaWallet.d.ts +33 -1
  82. package/dist/index.css +24 -24
  83. package/dist/index.js +1809 -1578
  84. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +52 -4
  85. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
  86. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +1 -1
  87. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +52 -1
  88. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +1 -1
  89. package/dist/wallets/walletConnectors/abcWallet/api/index.js +5 -5
  90. package/dist/wallets/walletConnectors/abcWallet/index.js +4 -4
  91. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +2 -2
  92. package/dist/wallets/walletConnectors/chunk-2FUWP3CE.js +330 -0
  93. package/dist/wallets/walletConnectors/chunk-2HZI5GNW.js +422 -0
  94. package/dist/wallets/walletConnectors/chunk-2OTYM5YW.js +461 -0
  95. package/dist/wallets/walletConnectors/chunk-2PVZZB7V.js +179 -0
  96. package/dist/wallets/walletConnectors/chunk-2SKUK3XZ.js +336 -0
  97. package/dist/wallets/walletConnectors/chunk-2THGB26Q.js +483 -0
  98. package/dist/wallets/walletConnectors/chunk-353AHAZG.js +420 -0
  99. package/dist/wallets/walletConnectors/chunk-3AV4L2Z3.js +63 -0
  100. package/dist/wallets/walletConnectors/chunk-3DMYAF74.js +495 -0
  101. package/dist/wallets/walletConnectors/chunk-3EVUNPYA.js +63 -0
  102. package/dist/wallets/walletConnectors/chunk-45FLFWVV.js +473 -0
  103. package/dist/wallets/walletConnectors/chunk-4JRATGCT.js +484 -0
  104. package/dist/wallets/walletConnectors/chunk-5AL2CK6V.js +336 -0
  105. package/dist/wallets/walletConnectors/chunk-5FSXV7UD.js +63 -0
  106. package/dist/wallets/walletConnectors/chunk-5JHX6GDO.js +63 -0
  107. package/dist/wallets/walletConnectors/chunk-5QGNWYOO.js +63 -0
  108. package/dist/wallets/walletConnectors/chunk-6I7AIIUA.js +330 -0
  109. package/dist/wallets/walletConnectors/chunk-A2AVZXFM.js +467 -0
  110. package/dist/wallets/walletConnectors/chunk-AB6IIS4Y.js +359 -0
  111. package/dist/wallets/walletConnectors/chunk-AB6NV5DJ.js +469 -0
  112. package/dist/wallets/walletConnectors/chunk-AYAW5CRA.js +459 -0
  113. package/dist/wallets/walletConnectors/chunk-BCO6YLPB.js +505 -0
  114. package/dist/wallets/walletConnectors/chunk-BK65Y46D.js +494 -0
  115. package/dist/wallets/walletConnectors/chunk-BKJVG4GQ.js +463 -0
  116. package/dist/wallets/walletConnectors/chunk-BWVC6F6J.js +467 -0
  117. package/dist/wallets/walletConnectors/chunk-D3USECVX.js +333 -0
  118. package/dist/wallets/walletConnectors/chunk-DCBHTSF2.js +63 -0
  119. package/dist/wallets/walletConnectors/chunk-DSTCYPGN.js +314 -0
  120. package/dist/wallets/walletConnectors/chunk-DWPUUKA4.js +63 -0
  121. package/dist/wallets/walletConnectors/chunk-E33VQYPO.js +302 -0
  122. package/dist/wallets/walletConnectors/chunk-EBBETASF.js +424 -0
  123. package/dist/wallets/walletConnectors/chunk-GMEXP6OH.js +314 -0
  124. package/dist/wallets/walletConnectors/chunk-HB7QT3ZB.js +332 -0
  125. package/dist/wallets/walletConnectors/chunk-HDXQ7BO6.js +314 -0
  126. package/dist/wallets/walletConnectors/chunk-HQQESMZJ.js +299 -0
  127. package/dist/wallets/walletConnectors/chunk-HWWFK52B.js +63 -0
  128. package/dist/wallets/walletConnectors/chunk-HYADQWNX.js +47 -0
  129. package/dist/wallets/walletConnectors/chunk-I56RJQOO.js +63 -0
  130. package/dist/wallets/walletConnectors/chunk-JY4WWUAC.js +503 -0
  131. package/dist/wallets/walletConnectors/chunk-KIKTI2QW.js +313 -0
  132. package/dist/wallets/walletConnectors/chunk-KPXEV65I.js +481 -0
  133. package/dist/wallets/walletConnectors/chunk-KXRUCXYG.js +63 -0
  134. package/dist/wallets/walletConnectors/chunk-L3ZUQ2FT.js +494 -0
  135. package/dist/wallets/walletConnectors/chunk-LKM4HFVX.js +63 -0
  136. package/dist/wallets/walletConnectors/chunk-LKSMH5O4.js +63 -0
  137. package/dist/wallets/walletConnectors/chunk-NSAHMWXK.js +468 -0
  138. package/dist/wallets/walletConnectors/chunk-NY3HZ7C7.js +428 -0
  139. package/dist/wallets/walletConnectors/chunk-OA6D52JF.js +303 -0
  140. package/dist/wallets/walletConnectors/chunk-OSJ2GO4U.js +63 -0
  141. package/dist/wallets/walletConnectors/chunk-OYDALF2T.js +63 -0
  142. package/dist/wallets/walletConnectors/chunk-P5CZ24LM.js +312 -0
  143. package/dist/wallets/walletConnectors/chunk-PER2ACFG.js +443 -0
  144. package/dist/wallets/walletConnectors/chunk-PGPH245S.js +63 -0
  145. package/dist/wallets/walletConnectors/chunk-PNE3IGZM.js +63 -0
  146. package/dist/wallets/walletConnectors/chunk-Q2WYW3LQ.js +63 -0
  147. package/dist/wallets/walletConnectors/chunk-Q3KCTIZB.js +458 -0
  148. package/dist/wallets/walletConnectors/chunk-Q3W2LKFS.js +498 -0
  149. package/dist/wallets/walletConnectors/chunk-QAD7DCJI.js +473 -0
  150. package/dist/wallets/walletConnectors/chunk-QG6HVKA7.js +458 -0
  151. package/dist/wallets/walletConnectors/chunk-QHCY3K35.js +466 -0
  152. package/dist/wallets/walletConnectors/chunk-QHRV2IC7.js +63 -0
  153. package/dist/wallets/walletConnectors/chunk-QWEA3UTQ.js +313 -0
  154. package/dist/wallets/walletConnectors/chunk-QYUVI6LM.js +500 -0
  155. package/dist/wallets/walletConnectors/chunk-RFNPDZJ5.js +299 -0
  156. package/dist/wallets/walletConnectors/chunk-SUBWGTWM.js +459 -0
  157. package/dist/wallets/walletConnectors/chunk-TASM5LUN.js +276 -0
  158. package/dist/wallets/walletConnectors/chunk-U4DSASHD.js +63 -0
  159. package/dist/wallets/walletConnectors/chunk-UCKLTSEQ.js +467 -0
  160. package/dist/wallets/walletConnectors/chunk-UWC6AXPI.js +63 -0
  161. package/dist/wallets/walletConnectors/chunk-V5LV4P2L.js +63 -0
  162. package/dist/wallets/walletConnectors/chunk-VP6SWGCN.js +63 -0
  163. package/dist/wallets/walletConnectors/chunk-W4MD4LZF.js +464 -0
  164. package/dist/wallets/walletConnectors/chunk-XHNXMXXX.js +493 -0
  165. package/dist/wallets/walletConnectors/chunk-XHOWI6QG.js +399 -0
  166. package/dist/wallets/walletConnectors/chunk-YDCQB2MV.js +309 -0
  167. package/dist/wallets/walletConnectors/chunk-Z4LE4R6P.js +63 -0
  168. package/dist/wallets/walletConnectors/chunk-ZE3USY6D.js +156 -0
  169. package/dist/wallets/walletConnectors/chunk-ZHHPZPSF.js +489 -0
  170. package/dist/wallets/walletConnectors/chunk-ZOJTTG4G.js +63 -0
  171. package/dist/wallets/walletConnectors/index.js +45 -45
  172. package/package.json +2 -1
@@ -67,11 +67,15 @@ export declare class AbcSolanaProvider extends EventEmitter {
67
67
  signature: Uint8Array;
68
68
  }>;
69
69
  /**
70
- * Sign Solana transaction (not used - ABC WaaS handles signing server-side)
71
- * This method is kept for compatibility but not recommended for direct use
72
- * Use the high-level sendTransaction() flow instead
70
+ * Sign arbitrary Solana transaction (requires PIN)
71
+ * Supports both Legacy Transaction and VersionedTransaction
72
+ * Used for custom transactions, dApp interactions, and protocol integrations
73
73
  */
74
- signTransaction(_transaction: any, _params?: any): Promise<any>;
74
+ signTransaction<T>(transaction: T): Promise<T>;
75
+ /**
76
+ * Sign multiple transactions (batch signing)
77
+ */
78
+ signAllTransactions<T>(transactions: T[]): Promise<T[]>;
75
79
  /**
76
80
  * Send Solana transaction (with PIN verification)
77
81
  */
@@ -90,5 +94,49 @@ export declare class AbcSolanaProvider extends EventEmitter {
90
94
  publicKey: string;
91
95
  network: string;
92
96
  } | null;
97
+ /**
98
+ * Transfer SPL token (requires PIN)
99
+ *
100
+ * @param params - Transfer parameters
101
+ * @returns Transaction signature and serialized transaction
102
+ */
103
+ transferSPL(params: {
104
+ mintAddress: string;
105
+ toAddress: string;
106
+ amount: number;
107
+ createAccountIfNeeded?: boolean;
108
+ }): Promise<{
109
+ signature: string;
110
+ serializedTx?: string;
111
+ }>;
112
+ /**
113
+ * Transfer NFT (Solana NFT = SPL token with decimals: 0, amount: 1)
114
+ *
115
+ * @param params - Transfer parameters
116
+ * @returns Transaction signature and serialized transaction
117
+ */
118
+ transferNFT(params: {
119
+ mintAddress: string;
120
+ toAddress: string;
121
+ createAccountIfNeeded?: boolean;
122
+ }): Promise<{
123
+ signature: string;
124
+ serializedTx?: string;
125
+ }>;
126
+ /**
127
+ * Get SPL token balance
128
+ *
129
+ * @param mintAddress - Token mint address
130
+ * @returns Token balance information
131
+ */
132
+ getTokenBalance(mintAddress: string): Promise<{
133
+ amount: string;
134
+ decimals: number;
135
+ uiAmount: number;
136
+ }>;
137
+ /**
138
+ * Get RPC URL based on network
139
+ */
140
+ private getRpcUrl;
93
141
  }
94
142
  export {};
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  AbcSolanaProvider,
4
4
  SolanaProviderError
5
- } from "../chunk-BH2VZAMQ.js";
5
+ } from "../chunk-UCKLTSEQ.js";
6
6
  export {
7
7
  AbcSolanaProvider,
8
8
  SolanaProviderError
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  SolanaApi
4
- } from "../chunk-KXEAFXAA.js";
4
+ } from "../chunk-D3USECVX.js";
5
5
  import "../chunk-MPFE6GP2.js";
6
6
  import {
7
7
  createAbcWaasClient
@@ -55,9 +55,60 @@ export declare class SolanaApi extends BaseApiClient {
55
55
  serialized_tx: string;
56
56
  }>;
57
57
  /**
58
- * Send Solana transaction
58
+ * Send Solana transaction (unsigned transaction + separate signatures)
59
+ * Used for server-generated transactions that need client signatures
59
60
  */
60
61
  sendSolanaTransaction(params: AbcSendSolanaTransactionParams): Promise<{
61
62
  txHash: string;
62
63
  }>;
64
+ /**
65
+ * Send fully signed Solana transaction (for client-built transactions)
66
+ * Sends a completely signed transaction directly to Solana network
67
+ */
68
+ sendSignedSolanaTransaction(params: {
69
+ network: string;
70
+ serializedTX: string;
71
+ }): Promise<{
72
+ txHash: string;
73
+ }>;
74
+ /**
75
+ * Generate SPL token transfer transaction via ABC WaaS API
76
+ * Uses wallet addresses (not token accounts) - API resolves ATAs internally
77
+ *
78
+ * @param params - SPL transfer parameters
79
+ * @returns Serialized transaction
80
+ */
81
+ generateSPLTransferTransaction(params: {
82
+ network: string;
83
+ mintAddress: string;
84
+ fromAddress: string;
85
+ toAddress: string;
86
+ amount: number;
87
+ decimals?: number;
88
+ feePayerAddress?: string;
89
+ latestBlockhash?: string;
90
+ }): Promise<{
91
+ serialized_tx: string;
92
+ estimated_fee: {
93
+ context: {
94
+ Slot: number;
95
+ };
96
+ value: number;
97
+ };
98
+ latest_blockhash: string;
99
+ }>;
100
+ /**
101
+ * Get SPL token supply information
102
+ *
103
+ * @param params - Token query parameters
104
+ * @returns Token supply information
105
+ */
106
+ getTokenInfo(params: {
107
+ network: string;
108
+ tokenAddress: string;
109
+ }): Promise<{
110
+ amount: string;
111
+ decimals: number;
112
+ uiAmountString: string;
113
+ }>;
63
114
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  SolanaApi
4
- } from "../../chunk-KXEAFXAA.js";
4
+ } from "../../chunk-D3USECVX.js";
5
5
  import "../../chunk-MPFE6GP2.js";
6
6
  import "../../chunk-NDYGTKP5.js";
7
7
  import "../../chunk-A7FIBI6X.js";
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  AbcWaasApiClient,
4
4
  createAbcWaasApiClient
5
- } from "../../chunk-57YTMSPW.js";
6
- import {
7
- TransactionApi
8
- } from "../../chunk-DJKN2MCI.js";
5
+ } from "../../chunk-VP6SWGCN.js";
9
6
  import {
10
7
  WalletApi
11
8
  } from "../../chunk-V33I7JGZ.js";
9
+ import {
10
+ TransactionApi
11
+ } from "../../chunk-DJKN2MCI.js";
12
12
  import {
13
13
  AuthApi
14
14
  } from "../../chunk-ZNBWRE3K.js";
@@ -20,7 +20,7 @@ import {
20
20
  } from "../../chunk-7VZDITAJ.js";
21
21
  import {
22
22
  SolanaApi
23
- } from "../../chunk-KXEAFXAA.js";
23
+ } from "../../chunk-D3USECVX.js";
24
24
  import {
25
25
  BaseApiClient
26
26
  } from "../../chunk-MPFE6GP2.js";
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  AbcWaasApiClient,
4
4
  createAbcWaasApiClient
5
- } from "../chunk-57YTMSPW.js";
6
- import "../chunk-DJKN2MCI.js";
5
+ } from "../chunk-VP6SWGCN.js";
7
6
  import "../chunk-V33I7JGZ.js";
7
+ import "../chunk-DJKN2MCI.js";
8
8
  import {
9
9
  generateMpcWallets,
10
10
  recoverMpcWallets,
@@ -34,8 +34,8 @@ import {
34
34
  import {
35
35
  AbcSolanaProvider,
36
36
  SolanaProviderError
37
- } from "../chunk-BH2VZAMQ.js";
38
- import "../chunk-KXEAFXAA.js";
37
+ } from "../chunk-UCKLTSEQ.js";
38
+ import "../chunk-D3USECVX.js";
39
39
  import "../chunk-MPFE6GP2.js";
40
40
  import {
41
41
  abcWallet
@@ -290,9 +290,9 @@ export interface AbcSignSolanaMessageParamsV3 {
290
290
  export interface AbcSendSolanaTransactionParams {
291
291
  /** Network (mainnet or devnet) */
292
292
  network: string;
293
- /** Serialized transaction (hex) */
293
+ /** Serialized transaction (base64 encoded) */
294
294
  serializedTX: string;
295
- /** Signatures array (hex) */
295
+ /** Signature array */
296
296
  signatures: string[];
297
297
  }
298
298
  /**
@@ -0,0 +1,330 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-MPFE6GP2.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
+ const response = await this.request(endpoint, {
27
+ method: "POST",
28
+ contentType: "json",
29
+ body: {
30
+ curve: "ed25519",
31
+ password: pin,
32
+ network
33
+ }
34
+ });
35
+ let result;
36
+ if (response.status === "success" && response.result) {
37
+ result = response.result;
38
+ } else if (response.encrypted_share && response.key_id) {
39
+ result = response;
40
+ } else {
41
+ throw createAbcError(
42
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
43
+ `Failed to ${isRecover ? "recover" : "generate"} Solana wallet`,
44
+ response
45
+ );
46
+ }
47
+ let address;
48
+ try {
49
+ address = this.deriveAddressFromPublicKey(result.public_key);
50
+ } catch (_error) {
51
+ address = result.public_key.startsWith("0x") ? result.public_key.slice(2) : result.public_key;
52
+ }
53
+ return {
54
+ uid: result.uid || "",
55
+ sessionId: result.share_id,
56
+ shareId: result.share_id,
57
+ publicKey: result.public_key,
58
+ address,
59
+ keyId: result.key_id || result.share_id,
60
+ // API returns snake_case key_id
61
+ encryptedShare: result.encrypted_share || "",
62
+ // API returns snake_case encrypted_share
63
+ secretStore: result.secret_store || "",
64
+ // API returns snake_case secret_store
65
+ network
66
+ // Use network from request (already has correct value)
67
+ };
68
+ }
69
+ /**
70
+ * Recover Solana wallet (alias for generateSolanaWallet with isRecover=true)
71
+ *
72
+ * @param pin - Hashed PIN (SHA-256)
73
+ * @returns Recovered Solana wallet information
74
+ */
75
+ async recoverSolanaWallet(pin) {
76
+ return this.generateSolanaWallet(pin, true);
77
+ }
78
+ /**
79
+ * Derive Solana address from Ed25519 public key
80
+ * @param publicKey - Ed25519 public key (hex)
81
+ * @returns Solana address (base58)
82
+ */
83
+ deriveAddressFromPublicKey(publicKey) {
84
+ const cleanKey = publicKey.startsWith("0x") ? publicKey.slice(2) : publicKey;
85
+ const bytes = new Uint8Array(
86
+ cleanKey.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
87
+ );
88
+ try {
89
+ const pubkey = new PublicKey(bytes);
90
+ return pubkey.toBase58();
91
+ } catch (error) {
92
+ console.error("[SolanaApi] Failed to encode address:", error);
93
+ return cleanKey;
94
+ }
95
+ }
96
+ /**
97
+ * Sign Solana transaction with Ed25519
98
+ * Reference: /v3/wallet/sign API requires only 5 fields
99
+ */
100
+ async signSolanaTransaction(params) {
101
+ const network = getSolanaNetwork();
102
+ const response = await this.request("/v3/wallet/sign", {
103
+ method: "POST",
104
+ contentType: "json",
105
+ body: {
106
+ curve: "ed25519",
107
+ network,
108
+ key_id: params.keyId,
109
+ encrypted_share: params.encryptedShare,
110
+ secret_store: params.secretStore || "",
111
+ message: params.message
112
+ }
113
+ });
114
+ let signature;
115
+ if (response.status === "success" && response.result?.signature) {
116
+ signature = response.result.signature;
117
+ } else if (response.signature) {
118
+ signature = response.signature;
119
+ } else {
120
+ throw createAbcError(
121
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
122
+ "Failed to sign Solana transaction",
123
+ response
124
+ );
125
+ }
126
+ return {
127
+ signature
128
+ };
129
+ }
130
+ /**
131
+ * Sign Solana message with Ed25519
132
+ * Reference: /v3/wallet/sign API requires only 5 fields
133
+ */
134
+ async signSolanaMessage(params) {
135
+ const network = getSolanaNetwork();
136
+ const response = await this.request("/v3/wallet/sign", {
137
+ method: "POST",
138
+ contentType: "json",
139
+ body: {
140
+ curve: "ed25519",
141
+ network,
142
+ key_id: params.keyId,
143
+ encrypted_share: params.encryptedShare,
144
+ secret_store: params.secretStore || "",
145
+ message: params.message
146
+ }
147
+ });
148
+ let signature;
149
+ if (response.status === "success" && response.result?.signature) {
150
+ signature = response.result.signature;
151
+ } else if (response.signature) {
152
+ signature = response.signature;
153
+ } else {
154
+ throw createAbcError(
155
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
156
+ "Failed to sign Solana message",
157
+ response
158
+ );
159
+ }
160
+ return {
161
+ signature
162
+ };
163
+ }
164
+ /**
165
+ * Generate Solana transfer transaction via ABC WaaS API
166
+ * This ensures the transaction uses the same RPC and blockhash as the server
167
+ */
168
+ async generateTransferTransaction(params) {
169
+ const response = await this.request(
170
+ "/wapi/v2/solana/tx/generateTransferSOLTransaction",
171
+ {
172
+ method: "POST",
173
+ contentType: "json",
174
+ body: {
175
+ network: params.network,
176
+ amount: params.amount,
177
+ fromAddress: params.fromAddress,
178
+ toAddress: params.toAddress,
179
+ feePayerAddress: params.feePayerAddress
180
+ }
181
+ }
182
+ );
183
+ const responseData = response;
184
+ const serializedTx = responseData.data?.serialized_tx || response.status === "success" && response.result?.data?.serialized_tx;
185
+ if (!serializedTx) {
186
+ throw createAbcError(
187
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
188
+ "Failed to generate Solana transaction",
189
+ response
190
+ );
191
+ }
192
+ return {
193
+ serialized_tx: serializedTx
194
+ };
195
+ }
196
+ /**
197
+ * Send Solana transaction (unsigned transaction + separate signatures)
198
+ * Standard ABC WaaS pattern: server generates unsigned tx → client signs → server broadcasts
199
+ */
200
+ async sendSolanaTransaction(params) {
201
+ const response = await this.request(
202
+ "/wapi/v2/solana/tx/sendTransaction",
203
+ {
204
+ method: "POST",
205
+ contentType: "json",
206
+ body: {
207
+ network: params.network,
208
+ serializedTX: params.serializedTX,
209
+ signatures: params.signatures
210
+ }
211
+ }
212
+ );
213
+ const responseData = response;
214
+ const txHash = responseData.data || response.status === "success" && response.result?.data;
215
+ if (!txHash || typeof txHash !== "string") {
216
+ throw createAbcError(
217
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
218
+ "Failed to send Solana transaction",
219
+ response
220
+ );
221
+ }
222
+ return {
223
+ txHash
224
+ };
225
+ }
226
+ /**
227
+ * Generate SPL token transfer transaction via ABC WaaS API
228
+ * Uses wallet addresses (not token accounts) - API resolves ATAs internally
229
+ *
230
+ * @param params - SPL transfer parameters
231
+ * @returns Serialized transaction
232
+ */
233
+ async generateSPLTransferTransaction(params) {
234
+ const response = await this.request(
235
+ "/wapi/v2/solana/tx/generateTransferFTTransaction",
236
+ {
237
+ method: "POST",
238
+ contentType: "json",
239
+ body: {
240
+ network: params.network,
241
+ mintAddress: params.mintAddress,
242
+ fromAddress: params.fromAddress,
243
+ toAddress: params.toAddress,
244
+ amount: params.amount,
245
+ ...params.decimals !== void 0 && { decimals: params.decimals },
246
+ ...params.feePayerAddress && {
247
+ feePayerAddress: params.feePayerAddress
248
+ },
249
+ ...params.latestBlockhash && {
250
+ latestBlockhash: params.latestBlockhash
251
+ }
252
+ }
253
+ }
254
+ );
255
+ const responseData = response;
256
+ const data = responseData.data || response.status === "success" && response.result;
257
+ if (!data?.serialized_tx) {
258
+ throw createAbcError(
259
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
260
+ "Failed to generate SPL transfer transaction",
261
+ response
262
+ );
263
+ }
264
+ return {
265
+ serialized_tx: data.serialized_tx,
266
+ estimated_fee: data.estimated_fee || { context: { Slot: 0 }, value: 0 },
267
+ latest_blockhash: data.latest_blockhash || ""
268
+ };
269
+ }
270
+ /**
271
+ * Generic RPC call to Solana network
272
+ *
273
+ * @param params - RPC call parameters
274
+ * @returns RPC response
275
+ */
276
+ async rpcCall(params) {
277
+ const response = await this.request("/wapi/v2/solana/rpc/call", {
278
+ method: "POST",
279
+ contentType: "json",
280
+ body: {
281
+ network: params.network,
282
+ request: {
283
+ jsonrpc: "2.0",
284
+ id: 1,
285
+ method: params.method,
286
+ params: params.params
287
+ }
288
+ }
289
+ });
290
+ const responseData = response;
291
+ return responseData.data || response;
292
+ }
293
+ /**
294
+ * Get SPL token supply information
295
+ *
296
+ * @param params - Token query parameters
297
+ * @returns Token supply information
298
+ */
299
+ async getTokenInfo(params) {
300
+ const response = await this.request(
301
+ "/wapi/v2/solana/token/getTokenSupply",
302
+ {
303
+ method: "POST",
304
+ contentType: "json",
305
+ body: {
306
+ network: params.network,
307
+ tokenAddress: params.tokenAddress
308
+ }
309
+ }
310
+ );
311
+ const responseData = response;
312
+ const value = responseData.data?.value || response.status === "success" && response.result?.data?.value;
313
+ if (!value || typeof value.decimals !== "number") {
314
+ throw createAbcError(
315
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
316
+ "Failed to get token info",
317
+ response
318
+ );
319
+ }
320
+ return {
321
+ amount: value.amount,
322
+ decimals: value.decimals,
323
+ uiAmountString: value.uiAmountString
324
+ };
325
+ }
326
+ };
327
+
328
+ export {
329
+ SolanaApi
330
+ };