@deserialize/multi-vm-wallet 1.0.0 → 1.0.2

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.
@@ -1,161 +0,0 @@
1
- "use strict";
2
- //we will write all the svm utils function here
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.signAndSendTransaction = exports.getTransferTokenTransaction = exports.getTransferTokenInx = exports.getTransferNativeTransaction = exports.getTransferNativeInx = exports.getTokenAccountAccount = exports.getTokenBalance = exports.getSvmNativeBalance = exports.getProgramIdOfToken = exports.getSureAssociatedTokenAddressAndAccount = exports.createAtaAndIx = exports.createV0Transaction = void 0;
5
- const spl_token_1 = require("@solana/spl-token");
6
- const web3_js_1 = require("@solana/web3.js");
7
- const transactionSender_1 = require("./transactionSender");
8
- const bn_js_1 = require("bn.js");
9
- const createV0Transaction = async (connection, inX, signers, payerPubKey, blockHash) => {
10
- const blockhash = blockHash || (await connection.getLatestBlockhash()).blockhash;
11
- const message = new web3_js_1.TransactionMessage({
12
- payerKey: payerPubKey,
13
- instructions: inX,
14
- recentBlockhash: blockhash,
15
- }).compileToV0Message();
16
- const transaction = new web3_js_1.VersionedTransaction(message);
17
- transaction.message.staticAccountKeys;
18
- if (signers.length < 1) {
19
- transaction.sign(signers);
20
- }
21
- return transaction;
22
- };
23
- exports.createV0Transaction = createV0Transaction;
24
- const createAtaAndIx = async (token, ownerPublicKey, tokenProgramId, connection) => {
25
- let AtaTokenIx;
26
- const associatedToken = (0, spl_token_1.getAssociatedTokenAddressSync)(token, ownerPublicKey, false, tokenProgramId);
27
- const accountExist = await connection.getAccountInfo(associatedToken);
28
- if (!accountExist) {
29
- AtaTokenIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(ownerPublicKey, associatedToken, ownerPublicKey, token, tokenProgramId);
30
- }
31
- return {
32
- AtaTokenIx,
33
- associatedToken,
34
- };
35
- };
36
- exports.createAtaAndIx = createAtaAndIx;
37
- const getSureAssociatedTokenAddressAndAccount = async (connection, token, owner) => {
38
- let ATA;
39
- let programId;
40
- let tokenAccount;
41
- try {
42
- programId = token.equals(spl_token_1.NATIVE_MINT)
43
- ? spl_token_1.TOKEN_PROGRAM_ID
44
- : spl_token_1.TOKEN_2022_PROGRAM_ID;
45
- ATA = (0, spl_token_1.getAssociatedTokenAddressSync)(token, owner, true, programId);
46
- tokenAccount = await (0, spl_token_1.getAccount)(connection, ATA, "confirmed", programId);
47
- return { ATA, programId, tokenAccount };
48
- }
49
- catch (error) {
50
- programId = spl_token_1.TOKEN_PROGRAM_ID;
51
- ATA = (0, spl_token_1.getAssociatedTokenAddressSync)(token, owner, true, programId);
52
- tokenAccount = await (0, spl_token_1.getAccount)(connection, ATA, "confirmed", programId);
53
- return { ATA, programId, tokenAccount };
54
- }
55
- };
56
- exports.getSureAssociatedTokenAddressAndAccount = getSureAssociatedTokenAddressAndAccount;
57
- const getProgramIdOfToken = async (owner, token, connection) => {
58
- if (token.equals(spl_token_1.NATIVE_MINT)) {
59
- return spl_token_1.TOKEN_PROGRAM_ID;
60
- }
61
- let ATA;
62
- let programId = spl_token_1.TOKEN_PROGRAM_ID;
63
- let tokenAccount;
64
- try {
65
- ATA = (0, spl_token_1.getAssociatedTokenAddressSync)(token, owner, true, programId);
66
- tokenAccount = await (0, spl_token_1.getAccount)(connection, ATA, "confirmed", programId);
67
- return spl_token_1.TOKEN_PROGRAM_ID;
68
- }
69
- catch (error) {
70
- return spl_token_1.TOKEN_2022_PROGRAM_ID;
71
- }
72
- };
73
- exports.getProgramIdOfToken = getProgramIdOfToken;
74
- //get native balance
75
- const getSvmNativeBalance = async (address, connection) => {
76
- const balance = await connection.getBalance(address);
77
- return { balance: new bn_js_1.BN(balance), formatted: balance / web3_js_1.LAMPORTS_PER_SOL, decimal: 9 };
78
- };
79
- exports.getSvmNativeBalance = getSvmNativeBalance;
80
- const getTokenBalance = async (address, token, connection) => {
81
- try {
82
- // Get the balance from the token account
83
- const tokenAccount = await (0, exports.getTokenAccountAccount)(token, address, connection);
84
- if (!tokenAccount) {
85
- console.error("Token account not found");
86
- return 0;
87
- }
88
- const tokenBalance = await connection.getTokenAccountBalance(tokenAccount.address);
89
- if (!tokenBalance) {
90
- console.error("Token balance not found");
91
- return 0;
92
- }
93
- return tokenBalance.value;
94
- }
95
- catch (error) {
96
- return 0;
97
- }
98
- };
99
- exports.getTokenBalance = getTokenBalance;
100
- const getTokenAccountAccount = async (token, address, connection) => {
101
- try {
102
- // Get the associated token account address for the user and the token mint
103
- const associatedTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(token, // The token mint address
104
- address // The user's public key
105
- );
106
- // Fetch the token account information
107
- const tokenAccount = await (0, spl_token_1.getAccount)(connection, associatedTokenAccount);
108
- return tokenAccount;
109
- }
110
- catch (error) {
111
- console.error("Error getting token balance:");
112
- return null;
113
- }
114
- };
115
- exports.getTokenAccountAccount = getTokenAccountAccount;
116
- const getTransferNativeInx = async (from, to, amount) => {
117
- return web3_js_1.SystemProgram.transfer({
118
- fromPubkey: from,
119
- toPubkey: to,
120
- lamports: amount * web3_js_1.LAMPORTS_PER_SOL, // Convert SOL to lamports
121
- });
122
- };
123
- exports.getTransferNativeInx = getTransferNativeInx;
124
- const getTransferNativeTransaction = async (from, to, amount, connection) => {
125
- const instruction = await (0, exports.getTransferNativeInx)(from.publicKey, to, amount);
126
- const transaction = await (0, exports.createV0Transaction)(connection, [instruction], [from], from.publicKey);
127
- return transaction;
128
- };
129
- exports.getTransferNativeTransaction = getTransferNativeTransaction;
130
- const getTransferTokenInx = async (from, to, token, amount, connection) => {
131
- const inx = [];
132
- const tokenToSend = new web3_js_1.PublicKey(token.address);
133
- const { ATA: source, programId, tokenAccount } = await (0, exports.getSureAssociatedTokenAddressAndAccount)(connection, from, tokenToSend);
134
- const { associatedToken: destination, AtaTokenIx } = await (0, exports.createAtaAndIx)(tokenToSend, to, programId, connection);
135
- if (!tokenAccount) {
136
- throw new Error("Token account not found");
137
- }
138
- if (AtaTokenIx) {
139
- inx.push(AtaTokenIx);
140
- }
141
- const tInx = (0, spl_token_1.createTransferCheckedInstruction)(source, tokenToSend, destination, from, amount, token.decimals, undefined, programId);
142
- inx.push(tInx);
143
- return inx;
144
- };
145
- exports.getTransferTokenInx = getTransferTokenInx;
146
- const getTransferTokenTransaction = async (from, to, token, amount, connection) => {
147
- const instruction = await (0, exports.getTransferTokenInx)(from.publicKey, to, token, amount, connection);
148
- const transaction = await (0, exports.createV0Transaction)(connection, instruction, [from], from.publicKey);
149
- return transaction;
150
- };
151
- exports.getTransferTokenTransaction = getTransferTokenTransaction;
152
- const signAndSendTransaction = async (transaction, connection, signers) => {
153
- transaction.sign(signers);
154
- const blockhash = await connection.getLatestBlockhash();
155
- const res = await (0, transactionSender_1.transactionSenderAndConfirmationWaiter)({ connection, serializedTransaction: Buffer.from(transaction.serialize()), blockhashWithExpiryBlockHeight: { blockhash: blockhash.blockhash, lastValidBlockHeight: blockhash.lastValidBlockHeight } });
156
- if (!res) {
157
- throw new Error("Transaction failed to send or confirm");
158
- }
159
- return res.transaction.signatures[0];
160
- };
161
- exports.signAndSendTransaction = signAndSendTransaction;