@talken/talkenkit 2.4.13 → 2.4.15
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.
- package/dist/abcWallet-25AKGPRG.js +184 -0
- package/dist/abcWallet-2SXWQ2M6.js +184 -0
- package/dist/abcWallet-3E6Y5QS4.js +184 -0
- package/dist/abcWallet-3HKYSDOS.js +184 -0
- package/dist/abcWallet-6VIUP4H3.js +184 -0
- package/dist/abcWallet-7CXDTXHX.js +184 -0
- package/dist/abcWallet-A3PX6AEW.js +184 -0
- package/dist/abcWallet-A6CRIFP2.js +184 -0
- package/dist/abcWallet-ACAOT2F3.js +184 -0
- package/dist/abcWallet-AWALYVJ7.js +184 -0
- package/dist/abcWallet-CEW3E2AX.js +184 -0
- package/dist/abcWallet-CEZAQ3ES.js +184 -0
- package/dist/abcWallet-CURD64AW.js +184 -0
- package/dist/abcWallet-E2A433S3.js +184 -0
- package/dist/abcWallet-ER37COEQ.js +184 -0
- package/dist/abcWallet-ETWMKZKD.js +184 -0
- package/dist/abcWallet-F6JAVHHQ.js +184 -0
- package/dist/abcWallet-GEHOIOZN.js +184 -0
- package/dist/abcWallet-H22OANDE.js +184 -0
- package/dist/abcWallet-H5BBPLGS.js +184 -0
- package/dist/abcWallet-I5BENZSH.js +184 -0
- package/dist/abcWallet-LABFRLNR.js +184 -0
- package/dist/abcWallet-MB2IAXV5.js +184 -0
- package/dist/abcWallet-MH6OGFBO.js +184 -0
- package/dist/abcWallet-NJGYOH52.js +184 -0
- package/dist/abcWallet-OG6ZQORS.js +184 -0
- package/dist/abcWallet-OJ7VCWHZ.js +184 -0
- package/dist/abcWallet-PBEQA5UT.js +184 -0
- package/dist/abcWallet-PMJEDGRW.js +184 -0
- package/dist/abcWallet-SX35BIXB.js +184 -0
- package/dist/abcWallet-TQTXUPJZ.js +184 -0
- package/dist/abcWallet-VKVKBQYN.js +184 -0
- package/dist/abcWallet-W6OZE7QD.js +184 -0
- package/dist/abcWallet-WH2J2YAV.js +184 -0
- package/dist/abcWallet-XA5DX7XK.js +184 -0
- package/dist/abcWallet-XANCTLMU.js +184 -0
- package/dist/abcWallet-XDP764EW.js +184 -0
- package/dist/abcWallet-Y3DONK5H.js +184 -0
- package/dist/abcWallet-YLBGJ5K6.js +184 -0
- package/dist/abcWallet-ZSL4HH7M.js +184 -0
- package/dist/chunk-2D6TXDN2.js +7450 -0
- package/dist/chunk-3K7INMEV.js +7470 -0
- package/dist/chunk-5FE4YAGR.js +7423 -0
- package/dist/chunk-5LD4QGWP.js +7423 -0
- package/dist/chunk-64RMUCRE.js +7447 -0
- package/dist/chunk-6KTOC6CY.js +7464 -0
- package/dist/chunk-6QW7GFF5.js +7450 -0
- package/dist/chunk-6RCVLZFG.js +7462 -0
- package/dist/chunk-7Y3M3LG3.js +7446 -0
- package/dist/chunk-A3EBU637.js +7441 -0
- package/dist/chunk-BVBWXZCX.js +7450 -0
- package/dist/chunk-CAXCHVY2.js +7469 -0
- package/dist/chunk-CBJW7X7O.js +7382 -0
- package/dist/chunk-CD36XA5S.js +7417 -0
- package/dist/chunk-EAKUQPJO.js +7463 -0
- package/dist/chunk-ER7H33CO.js +7450 -0
- package/dist/chunk-FCENPWP5.js +7452 -0
- package/dist/chunk-FPMB7NJE.js +7366 -0
- package/dist/chunk-GWIJVQBX.js +7420 -0
- package/dist/chunk-HGOFSTGT.js +7474 -0
- package/dist/chunk-JJ4CTD2J.js +7428 -0
- package/dist/chunk-JMBGLDYV.js +7368 -0
- package/dist/chunk-KBMHNBKL.js +7449 -0
- package/dist/chunk-KZRFIJW2.js +7452 -0
- package/dist/chunk-L6TCA4IF.js +7378 -0
- package/dist/chunk-LTRXFRER.js +7472 -0
- package/dist/chunk-MRLTYAPE.js +7451 -0
- package/dist/chunk-N3QOWEYR.js +7393 -0
- package/dist/chunk-NII34OZB.js +7442 -0
- package/dist/chunk-OAHLI7TU.js +7368 -0
- package/dist/chunk-RFJBWB7F.js +7467 -0
- package/dist/chunk-SBRDMKB6.js +7408 -0
- package/dist/chunk-SDRSLETV.js +7428 -0
- package/dist/chunk-SWO7BZQD.js +7463 -0
- package/dist/chunk-TR4Q6WOC.js +7427 -0
- package/dist/chunk-UBBAWTXE.js +7370 -0
- package/dist/chunk-VEOSJOVN.js +7377 -0
- package/dist/chunk-VGF34W25.js +7370 -0
- package/dist/chunk-VXSGQUAL.js +7458 -0
- package/dist/chunk-Z3FKXPV6.js +7430 -0
- package/dist/hooks/useSolanaWallet.d.ts +33 -1
- package/dist/index.css +24 -24
- package/dist/index.js +2610 -2445
- package/dist/solana/SolanaWalletProvider.d.ts +1 -1
- package/dist/solana/config.d.ts +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +52 -4
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +52 -1
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/index.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +2 -2
- package/dist/wallets/walletConnectors/chunk-2FUWP3CE.js +330 -0
- package/dist/wallets/walletConnectors/chunk-2HZI5GNW.js +422 -0
- package/dist/wallets/walletConnectors/chunk-2OTYM5YW.js +461 -0
- package/dist/wallets/walletConnectors/chunk-2PVZZB7V.js +179 -0
- package/dist/wallets/walletConnectors/chunk-2SKUK3XZ.js +336 -0
- package/dist/wallets/walletConnectors/chunk-2THGB26Q.js +483 -0
- package/dist/wallets/walletConnectors/chunk-353AHAZG.js +420 -0
- package/dist/wallets/walletConnectors/chunk-3AV4L2Z3.js +63 -0
- package/dist/wallets/walletConnectors/chunk-3DMYAF74.js +495 -0
- package/dist/wallets/walletConnectors/chunk-3EVUNPYA.js +63 -0
- package/dist/wallets/walletConnectors/chunk-45FLFWVV.js +473 -0
- package/dist/wallets/walletConnectors/chunk-4JRATGCT.js +484 -0
- package/dist/wallets/walletConnectors/chunk-5AL2CK6V.js +336 -0
- package/dist/wallets/walletConnectors/chunk-5FSXV7UD.js +63 -0
- package/dist/wallets/walletConnectors/chunk-5JHX6GDO.js +63 -0
- package/dist/wallets/walletConnectors/chunk-5QGNWYOO.js +63 -0
- package/dist/wallets/walletConnectors/chunk-6I7AIIUA.js +330 -0
- package/dist/wallets/walletConnectors/chunk-A2AVZXFM.js +467 -0
- package/dist/wallets/walletConnectors/chunk-AB6IIS4Y.js +359 -0
- package/dist/wallets/walletConnectors/chunk-AB6NV5DJ.js +469 -0
- package/dist/wallets/walletConnectors/chunk-AYAW5CRA.js +459 -0
- package/dist/wallets/walletConnectors/chunk-BCO6YLPB.js +505 -0
- package/dist/wallets/walletConnectors/chunk-BK65Y46D.js +494 -0
- package/dist/wallets/walletConnectors/chunk-BKJVG4GQ.js +463 -0
- package/dist/wallets/walletConnectors/chunk-BWVC6F6J.js +467 -0
- package/dist/wallets/walletConnectors/chunk-D3USECVX.js +333 -0
- package/dist/wallets/walletConnectors/chunk-DCBHTSF2.js +63 -0
- package/dist/wallets/walletConnectors/chunk-DNYWTUT5.js +63 -0
- package/dist/wallets/walletConnectors/chunk-DSTCYPGN.js +314 -0
- package/dist/wallets/walletConnectors/chunk-DWPUUKA4.js +63 -0
- package/dist/wallets/walletConnectors/chunk-E33VQYPO.js +302 -0
- package/dist/wallets/walletConnectors/chunk-EBBETASF.js +424 -0
- package/dist/wallets/walletConnectors/chunk-GMEXP6OH.js +314 -0
- package/dist/wallets/walletConnectors/chunk-HB7QT3ZB.js +332 -0
- package/dist/wallets/walletConnectors/chunk-HDXQ7BO6.js +314 -0
- package/dist/wallets/walletConnectors/chunk-HQQESMZJ.js +299 -0
- package/dist/wallets/walletConnectors/chunk-HWWFK52B.js +63 -0
- package/dist/wallets/walletConnectors/chunk-HYADQWNX.js +47 -0
- package/dist/wallets/walletConnectors/chunk-I56RJQOO.js +63 -0
- package/dist/wallets/walletConnectors/chunk-JY4WWUAC.js +503 -0
- package/dist/wallets/walletConnectors/chunk-KIKTI2QW.js +313 -0
- package/dist/wallets/walletConnectors/chunk-KPXEV65I.js +481 -0
- package/dist/wallets/walletConnectors/chunk-KXRUCXYG.js +63 -0
- package/dist/wallets/walletConnectors/chunk-L3ZUQ2FT.js +494 -0
- package/dist/wallets/walletConnectors/chunk-LKM4HFVX.js +63 -0
- package/dist/wallets/walletConnectors/chunk-LKSMH5O4.js +63 -0
- package/dist/wallets/walletConnectors/chunk-NSAHMWXK.js +468 -0
- package/dist/wallets/walletConnectors/chunk-NY3HZ7C7.js +428 -0
- package/dist/wallets/walletConnectors/chunk-OA6D52JF.js +303 -0
- package/dist/wallets/walletConnectors/chunk-OSJ2GO4U.js +63 -0
- package/dist/wallets/walletConnectors/chunk-OYDALF2T.js +63 -0
- package/dist/wallets/walletConnectors/chunk-P5CZ24LM.js +312 -0
- package/dist/wallets/walletConnectors/chunk-PER2ACFG.js +443 -0
- package/dist/wallets/walletConnectors/chunk-PGPH245S.js +63 -0
- package/dist/wallets/walletConnectors/chunk-PNE3IGZM.js +63 -0
- package/dist/wallets/walletConnectors/chunk-Q2WYW3LQ.js +63 -0
- package/dist/wallets/walletConnectors/chunk-Q3KCTIZB.js +458 -0
- package/dist/wallets/walletConnectors/chunk-Q3W2LKFS.js +498 -0
- package/dist/wallets/walletConnectors/chunk-QAD7DCJI.js +473 -0
- package/dist/wallets/walletConnectors/chunk-QG6HVKA7.js +458 -0
- package/dist/wallets/walletConnectors/chunk-QHCY3K35.js +466 -0
- package/dist/wallets/walletConnectors/chunk-QHRV2IC7.js +63 -0
- package/dist/wallets/walletConnectors/chunk-QWEA3UTQ.js +313 -0
- package/dist/wallets/walletConnectors/chunk-QYUVI6LM.js +500 -0
- package/dist/wallets/walletConnectors/chunk-RFNPDZJ5.js +299 -0
- package/dist/wallets/walletConnectors/chunk-SUBWGTWM.js +459 -0
- package/dist/wallets/walletConnectors/chunk-TASM5LUN.js +276 -0
- package/dist/wallets/walletConnectors/chunk-U4DSASHD.js +63 -0
- package/dist/wallets/walletConnectors/chunk-UCKLTSEQ.js +467 -0
- package/dist/wallets/walletConnectors/chunk-UWC6AXPI.js +63 -0
- package/dist/wallets/walletConnectors/chunk-V5LV4P2L.js +63 -0
- package/dist/wallets/walletConnectors/chunk-VP6SWGCN.js +63 -0
- package/dist/wallets/walletConnectors/chunk-W4MD4LZF.js +464 -0
- package/dist/wallets/walletConnectors/chunk-XHNXMXXX.js +493 -0
- package/dist/wallets/walletConnectors/chunk-XHOWI6QG.js +399 -0
- package/dist/wallets/walletConnectors/chunk-YDCQB2MV.js +309 -0
- package/dist/wallets/walletConnectors/chunk-Z4LE4R6P.js +63 -0
- package/dist/wallets/walletConnectors/chunk-ZE3USY6D.js +156 -0
- package/dist/wallets/walletConnectors/chunk-ZHHPZPSF.js +489 -0
- package/dist/wallets/walletConnectors/chunk-ZOJTTG4G.js +63 -0
- package/dist/wallets/walletConnectors/index.js +49 -49
- package/package.json +2 -1
|
@@ -20,7 +20,7 @@ export interface SolanaWalletProviderProps {
|
|
|
20
20
|
/**
|
|
21
21
|
* Auto-connect to previously connected external wallet (Phantom, Solflare, etc.)
|
|
22
22
|
* Note: ABC Wallet always auto-connects when session exists
|
|
23
|
-
* @default
|
|
23
|
+
* @default true
|
|
24
24
|
*/
|
|
25
25
|
autoConnect?: boolean;
|
|
26
26
|
/**
|
package/dist/solana/config.d.ts
CHANGED
|
@@ -67,11 +67,15 @@ export declare class AbcSolanaProvider extends EventEmitter {
|
|
|
67
67
|
signature: Uint8Array;
|
|
68
68
|
}>;
|
|
69
69
|
/**
|
|
70
|
-
* Sign Solana transaction (
|
|
71
|
-
*
|
|
72
|
-
*
|
|
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(
|
|
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 {};
|
|
@@ -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
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
AbcWaasApiClient,
|
|
4
4
|
createAbcWaasApiClient
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-DNYWTUT5.js";
|
|
6
6
|
import {
|
|
7
7
|
TransactionApi
|
|
8
8
|
} from "../../chunk-DJKN2MCI.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "../../chunk-7VZDITAJ.js";
|
|
21
21
|
import {
|
|
22
22
|
SolanaApi
|
|
23
|
-
} from "../../chunk-
|
|
23
|
+
} from "../../chunk-D3USECVX.js";
|
|
24
24
|
import {
|
|
25
25
|
BaseApiClient
|
|
26
26
|
} from "../../chunk-MPFE6GP2.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
AbcWaasApiClient,
|
|
4
4
|
createAbcWaasApiClient
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-DNYWTUT5.js";
|
|
6
6
|
import "../chunk-DJKN2MCI.js";
|
|
7
7
|
import "../chunk-V33I7JGZ.js";
|
|
8
8
|
import {
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
import {
|
|
35
35
|
AbcSolanaProvider,
|
|
36
36
|
SolanaProviderError
|
|
37
|
-
} from "../chunk-
|
|
38
|
-
import "../chunk-
|
|
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 (
|
|
293
|
+
/** Serialized transaction (base64 encoded) */
|
|
294
294
|
serializedTX: string;
|
|
295
|
-
/**
|
|
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
|
+
};
|