@deserialize/multi-vm-wallet 1.0.37 → 1.0.41

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.
@@ -12,6 +12,7 @@ const SEND_OPTIONS = {
12
12
  };
13
13
  async function transactionSenderAndConfirmationWaiter({ connection, serializedTransaction, blockhashWithExpiryBlockHeight, }) {
14
14
  const txid = await connection.sendRawTransaction(serializedTransaction, SEND_OPTIONS);
15
+ console.log('initial send txid: ', txid);
15
16
  const controller = new AbortController();
16
17
  const abortSignal = controller.signal;
17
18
  const abortableResender = async () => {
@@ -31,7 +32,8 @@ async function transactionSenderAndConfirmationWaiter({ connection, serializedTr
31
32
  abortableResender();
32
33
  const lastValidBlockHeight = blockhashWithExpiryBlockHeight.lastValidBlockHeight - 150;
33
34
  // this would throw TransactionExpiredBlockheightExceededError
34
- await Promise.race([
35
+ // console.log("conforming the transaction ....")
36
+ const res = await Promise.race([
35
37
  connection.confirmTransaction({
36
38
  ...blockhashWithExpiryBlockHeight,
37
39
  lastValidBlockHeight,
@@ -51,11 +53,13 @@ async function transactionSenderAndConfirmationWaiter({ connection, serializedTr
51
53
  }
52
54
  }),
53
55
  ]);
56
+ console.log('res: ', res);
54
57
  }
55
58
  catch (e) {
59
+ console.log('e: ', e);
56
60
  if (e instanceof web3_js_1.TransactionExpiredBlockheightExceededError) {
57
61
  // we consume this error and getTransaction would return null
58
- return null;
62
+ // return null;
59
63
  }
60
64
  else {
61
65
  // invalid state from web3.js
@@ -1 +1 @@
1
- {"version":3,"file":"transactionSender.js","sourceRoot":"","sources":["../../utils/svm/transactionSender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionSender.js","sourceRoot":"","sources":["../../utils/svm/transactionSender.ts"],"names":[],"mappings":"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"}
package/dist/svm/utils.js CHANGED
@@ -8,7 +8,12 @@ const transactionSender_1 = require("./transactionSender");
8
8
  const bn_js_1 = require("bn.js");
9
9
  const JUPITER_BASE_URL = 'https://lite-api.jup.ag';
10
10
  const createV0Transaction = async (connection, inX, signers, payerPubKey, blockHash) => {
11
+ console.log('createV0Transaction: Starting transaction creation');
12
+ console.log('Instructions count:', inX.length);
13
+ console.log('Signers count:', signers.length);
14
+ console.log('Payer public key:', payerPubKey.toString());
11
15
  const blockhash = blockHash || (await connection.getLatestBlockhash()).blockhash;
16
+ console.log('Using blockhash:', blockhash);
12
17
  const message = new web3_js_1.TransactionMessage({
13
18
  payerKey: payerPubKey,
14
19
  instructions: inX,
@@ -17,18 +22,30 @@ const createV0Transaction = async (connection, inX, signers, payerPubKey, blockH
17
22
  const transaction = new web3_js_1.VersionedTransaction(message);
18
23
  transaction.message.staticAccountKeys;
19
24
  if (signers.length < 1) {
25
+ console.log('Signing transaction with signers');
20
26
  transaction.sign(signers);
21
27
  }
28
+ console.log('createV0Transaction: Transaction created successfully');
22
29
  return transaction;
23
30
  };
24
31
  exports.createV0Transaction = createV0Transaction;
25
32
  const createAtaAndIx = async (token, ownerPublicKey, tokenProgramId, connection) => {
33
+ console.log('createAtaAndIx: Starting ATA creation');
34
+ console.log('Token:', token.toString());
35
+ console.log('Owner:', ownerPublicKey.toString());
36
+ console.log('Token Program ID:', tokenProgramId.toString());
26
37
  let AtaTokenIx;
27
38
  const associatedToken = (0, spl_token_1.getAssociatedTokenAddressSync)(token, ownerPublicKey, false, tokenProgramId);
39
+ console.log('Associated token address:', associatedToken.toString());
28
40
  const accountExist = await connection.getAccountInfo(associatedToken);
29
41
  if (!accountExist) {
42
+ console.log('Account does not exist, creating ATA instruction');
30
43
  AtaTokenIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(ownerPublicKey, associatedToken, ownerPublicKey, token, tokenProgramId);
31
44
  }
45
+ else {
46
+ console.log('Account already exists, no ATA instruction needed');
47
+ }
48
+ console.log('createAtaAndIx: Completed');
32
49
  return {
33
50
  AtaTokenIx,
34
51
  associatedToken,
@@ -36,6 +53,9 @@ const createAtaAndIx = async (token, ownerPublicKey, tokenProgramId, connection)
36
53
  };
37
54
  exports.createAtaAndIx = createAtaAndIx;
38
55
  const getSureAssociatedTokenAddressAndAccount = async (connection, token, owner) => {
56
+ console.log('getSureAssociatedTokenAddressAndAccount: Starting');
57
+ console.log('Token:', token.toString());
58
+ console.log('Owner:', owner.toString());
39
59
  let ATA;
40
60
  let programId;
41
61
  let tokenAccount;
@@ -43,14 +63,21 @@ const getSureAssociatedTokenAddressAndAccount = async (connection, token, owner)
43
63
  programId = token.equals(spl_token_1.NATIVE_MINT)
44
64
  ? spl_token_1.TOKEN_PROGRAM_ID
45
65
  : spl_token_1.TOKEN_2022_PROGRAM_ID;
66
+ console.log('Trying with program ID:', programId.toString());
46
67
  ATA = (0, spl_token_1.getAssociatedTokenAddressSync)(token, owner, true, programId);
68
+ console.log('ATA address:', ATA.toString());
47
69
  tokenAccount = await (0, spl_token_1.getAccount)(connection, ATA, "confirmed", programId);
70
+ console.log('Token account found with TOKEN_2022_PROGRAM_ID');
48
71
  return { ATA, programId, tokenAccount };
49
72
  }
50
73
  catch (error) {
74
+ console.log('Failed with TOKEN_2022_PROGRAM_ID, trying TOKEN_PROGRAM_ID');
75
+ console.log('Error:', error);
51
76
  programId = spl_token_1.TOKEN_PROGRAM_ID;
52
77
  ATA = (0, spl_token_1.getAssociatedTokenAddressSync)(token, owner, true, programId);
78
+ console.log('New ATA address:', ATA.toString());
53
79
  tokenAccount = await (0, spl_token_1.getAccount)(connection, ATA, "confirmed", programId);
80
+ console.log('Token account found with TOKEN_PROGRAM_ID');
54
81
  return { ATA, programId, tokenAccount };
55
82
  }
56
83
  };
@@ -68,6 +95,7 @@ const getProgramIdOfToken = async (owner, token, connection) => {
68
95
  return spl_token_1.TOKEN_PROGRAM_ID;
69
96
  }
70
97
  catch (error) {
98
+ console.log('Failed with TOKEN_PROGRAM_ID, returning TOKEN_2022_PROGRAM_ID');
71
99
  return spl_token_1.TOKEN_2022_PROGRAM_ID;
72
100
  }
73
101
  };
@@ -83,17 +111,20 @@ const getTokenBalance = async (address, token, connection) => {
83
111
  // Get the balance from the token account
84
112
  const tokenAccount = await (0, exports.getTokenAccountAccount)(token, address, connection);
85
113
  if (!tokenAccount) {
86
- console.error("Token account not found");
114
+ console.log("Token account not found");
87
115
  return 0;
88
116
  }
117
+ console.log('Token account found:', tokenAccount.address.toString());
89
118
  const tokenBalance = await connection.getTokenAccountBalance(tokenAccount.address);
90
119
  if (!tokenBalance) {
91
- console.error("Token balance not found");
120
+ console.log("Token balance not found");
92
121
  return 0;
93
122
  }
123
+ console.log('Token balance:', tokenBalance.value);
94
124
  return tokenBalance.value;
95
125
  }
96
126
  catch (error) {
127
+ console.log('Error in getTokenBalance:', error);
97
128
  return 0;
98
129
  }
99
130
  };
@@ -104,12 +135,14 @@ const getTokenAccountAccount = async (token, address, connection) => {
104
135
  const associatedTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(token, // The token mint address
105
136
  address // The user's public key
106
137
  );
138
+ console.log('Associated token account:', associatedTokenAccount.toString());
107
139
  // Fetch the token account information
108
140
  const tokenAccount = await (0, spl_token_1.getAccount)(connection, associatedTokenAccount);
141
+ console.log('Token account retrieved successfully');
109
142
  return tokenAccount;
110
143
  }
111
144
  catch (error) {
112
- console.error("Error getting token balance:");
145
+ console.log("Not token account for this");
113
146
  return null;
114
147
  }
115
148
  };
@@ -123,46 +156,77 @@ const getTransferNativeInx = async (from, to, amount) => {
123
156
  };
124
157
  exports.getTransferNativeInx = getTransferNativeInx;
125
158
  const getTransferNativeTransaction = async (from, to, amount, connection) => {
159
+ console.log('getTransferNativeTransaction: Starting');
126
160
  const instruction = await (0, exports.getTransferNativeInx)(from.publicKey, to, amount);
127
161
  const transaction = await (0, exports.createV0Transaction)(connection, [instruction], [from], from.publicKey);
162
+ console.log('getTransferNativeTransaction: Completed');
128
163
  return transaction;
129
164
  };
130
165
  exports.getTransferNativeTransaction = getTransferNativeTransaction;
131
166
  const getTransferTokenInx = async (from, to, token, amount, connection) => {
132
167
  const inx = [];
133
168
  const tokenToSend = new web3_js_1.PublicKey(token.address);
169
+ console.log('Token to send:', tokenToSend.toString());
134
170
  const { ATA: source, programId, tokenAccount } = await (0, exports.getSureAssociatedTokenAddressAndAccount)(connection, from, tokenToSend);
171
+ console.log('Source ATA:', source.toString());
135
172
  const { associatedToken: destination, AtaTokenIx } = await (0, exports.createAtaAndIx)(tokenToSend, to, programId, connection);
173
+ console.log('Destination ATA:', destination.toString());
136
174
  if (!tokenAccount) {
175
+ console.log('Token account not found, throwing error');
137
176
  throw new Error("Token account not found");
138
177
  }
139
178
  if (AtaTokenIx) {
179
+ console.log('Adding ATA creation instruction');
140
180
  inx.push(AtaTokenIx);
141
181
  }
182
+ console.log('Creating transfer instruction');
142
183
  const tInx = (0, spl_token_1.createTransferCheckedInstruction)(source, tokenToSend, destination, from, amount, token.decimals, undefined, programId);
143
184
  inx.push(tInx);
185
+ console.log('getTransferTokenInx: Completed with', inx.length, 'instructions');
144
186
  return inx;
145
187
  };
146
188
  exports.getTransferTokenInx = getTransferTokenInx;
147
189
  const getTransferTokenTransaction = async (from, to, token, amount, connection) => {
190
+ console.log('getTransferTokenTransaction: Starting');
148
191
  const instruction = await (0, exports.getTransferTokenInx)(from.publicKey, to, token, amount, connection);
149
192
  const transaction = await (0, exports.createV0Transaction)(connection, instruction, [from], from.publicKey);
193
+ console.log('getTransferTokenTransaction: Completed');
150
194
  return transaction;
151
195
  };
152
196
  exports.getTransferTokenTransaction = getTransferTokenTransaction;
153
197
  const signAndSendTransaction = async (transaction, connection, signers) => {
198
+ console.log('signAndSendTransaction: Starting');
199
+ console.log('Signers count:', signers.length);
154
200
  transaction.sign(signers);
201
+ console.log('Transaction signed');
155
202
  const blockhash = await connection.getLatestBlockhash();
156
- const res = await (0, transactionSender_1.transactionSenderAndConfirmationWaiter)({ connection, serializedTransaction: Buffer.from(transaction.serialize()), blockhashWithExpiryBlockHeight: { blockhash: blockhash.blockhash, lastValidBlockHeight: blockhash.lastValidBlockHeight } });
203
+ console.log('Got latest blockhash:', blockhash.blockhash);
204
+ console.log('Sending transaction...');
205
+ const res = await (0, transactionSender_1.transactionSenderAndConfirmationWaiter)({
206
+ connection,
207
+ serializedTransaction: Buffer.from(transaction.serialize()),
208
+ blockhashWithExpiryBlockHeight: {
209
+ blockhash: blockhash.blockhash,
210
+ lastValidBlockHeight: blockhash.lastValidBlockHeight
211
+ }
212
+ });
157
213
  if (!res) {
214
+ console.log('Transaction failed to send or confirm');
158
215
  throw new Error("Transaction failed to send or confirm");
159
216
  }
160
- return res.transaction.signatures[0];
217
+ const signature = res.transaction.signatures[0];
218
+ console.log('Transaction successful, signature:', signature);
219
+ return signature;
161
220
  };
162
221
  exports.signAndSendTransaction = signAndSendTransaction;
163
222
  //swap
164
223
  //you will. use jupiter for this
165
224
  const getJupiterQuote = async (inputMint, outputMint, amount, slippageBps = 50) => {
225
+ // console.log('getJupiterQuote: Starting');
226
+ // console.log('Input mint:', inputMint);
227
+ // console.log('Output mint:', outputMint);
228
+ // console.log('Amount:', amount);
229
+ // console.log('Slippage BPS:', slippageBps);
166
230
  const params = new URLSearchParams({
167
231
  inputMint,
168
232
  outputMint,
@@ -171,15 +235,37 @@ const getJupiterQuote = async (inputMint, outputMint, amount, slippageBps = 50)
171
235
  onlyDirectRoutes: 'false',
172
236
  asLegacyTransaction: 'false'
173
237
  });
174
- const response = await fetch(`${JUPITER_BASE_URL}/swap/v1/quote?${params}`);
238
+ const url = `${JUPITER_BASE_URL}/swap/v1/quote?${params}`;
239
+ console.log('Request URL:', url);
240
+ const response = await fetch(url);
241
+ console.log('Response status:', response.status);
242
+ console.log('Response status text:', response.statusText);
175
243
  if (!response.ok) {
176
- const error = await response.json();
177
- throw new Error(`Jupiter quote failed: ${error.message || response.statusText}`);
244
+ console.log('Jupiter quote request failed');
245
+ console.log('Status:', response.status);
246
+ console.log('Status Text:', response.statusText);
247
+ console.log('URL:', url);
248
+ try {
249
+ const error = await response.json();
250
+ console.log('Error details:', error);
251
+ }
252
+ catch {
253
+ const textError = await response.text();
254
+ console.log('Error text:', textError);
255
+ }
256
+ throw new Error(`Jupiter quote failed: ${response.statusText}`);
178
257
  }
179
- return await response.json();
258
+ const result = await response.json();
259
+ console.log('Jupiter quote successful');
260
+ console.log('Quote result:', result);
261
+ return result;
180
262
  };
181
263
  exports.getJupiterQuote = getJupiterQuote;
182
264
  const buildJupiterSwapTransaction = async (quote, userPublicKey, prioritizationFeeLamports) => {
265
+ console.log('buildJupiterSwapTransaction: Starting');
266
+ console.log('User public key:', userPublicKey);
267
+ const priorityFee = prioritizationFeeLamports || 5000;
268
+ console.log('Prioritization fee:', priorityFee);
183
269
  const body = {
184
270
  quoteResponse: quote,
185
271
  userPublicKey,
@@ -188,13 +274,14 @@ const buildJupiterSwapTransaction = async (quote, userPublicKey, prioritizationF
188
274
  feeAccount: undefined,
189
275
  trackingAccount: undefined,
190
276
  computeUnitPriceMicroLamports: undefined,
191
- prioritizationFeeLamports: prioritizationFeeLamports || 1000,
277
+ prioritizationFeeLamports: priorityFee,
192
278
  asLegacyTransaction: false,
193
279
  useTokenLedger: false,
194
280
  destinationTokenAccount: undefined,
195
281
  dynamicComputeUnitLimit: true,
196
282
  skipUserAccountsRpcCalls: false
197
283
  };
284
+ console.log('Request body:', body);
198
285
  const response = await fetch(`${JUPITER_BASE_URL}/swap/v1/swap`, {
199
286
  method: 'POST',
200
287
  headers: {
@@ -202,14 +289,35 @@ const buildJupiterSwapTransaction = async (quote, userPublicKey, prioritizationF
202
289
  },
203
290
  body: JSON.stringify(body),
204
291
  });
292
+ console.log('Swap transaction build response status:', response.status);
205
293
  if (!response.ok) {
206
- const error = await response.json();
207
- throw new Error(`Jupiter swap transaction build failed: ${error.message || response.statusText}`);
294
+ console.log('Jupiter swap transaction build failed');
295
+ console.log('Status:', response.status);
296
+ console.log('Status text:', response.statusText);
297
+ try {
298
+ const error = await response.json();
299
+ console.log('Swap build error details:', error);
300
+ throw new Error(`Jupiter swap transaction build failed: ${error.message || response.statusText}`);
301
+ }
302
+ catch (parseError) {
303
+ console.log('Failed to parse error response:', parseError);
304
+ throw new Error(`Jupiter swap transaction build failed: ${response.statusText}`);
305
+ }
208
306
  }
209
- return await response.json();
307
+ const result = await response.json();
308
+ console.log('Jupiter swap transaction built successfully');
309
+ return result;
210
310
  };
211
311
  exports.buildJupiterSwapTransaction = buildJupiterSwapTransaction;
212
312
  const executeJupiterSwap = async (swapParams, connection, payer) => {
313
+ console.log('executeJupiterSwap: Starting');
314
+ console.log('Swap params:', {
315
+ fromToken: swapParams.fromToken.toString(),
316
+ toToken: swapParams.toToken.toString(),
317
+ amount: swapParams.amount,
318
+ slippageBps: swapParams.slippageBps,
319
+ userPublicKey: swapParams.userPublicKey.toString()
320
+ });
213
321
  try {
214
322
  console.log('Getting Jupiter quote...');
215
323
  const quote = await (0, exports.getJupiterQuote)(swapParams.fromToken.toString(), swapParams.toToken.toString(), swapParams.amount, swapParams.slippageBps);
@@ -222,11 +330,15 @@ const executeJupiterSwap = async (swapParams, connection, payer) => {
222
330
  const swapResponse = await (0, exports.buildJupiterSwapTransaction)(quote, swapParams.userPublicKey.toString());
223
331
  console.log('Deserializing transaction...');
224
332
  const swapTransactionBuf = Buffer.from(swapResponse.swapTransaction, 'base64');
333
+ console.log('Transaction buffer length:', swapTransactionBuf.length);
225
334
  const transaction = web3_js_1.VersionedTransaction.deserialize(swapTransactionBuf);
335
+ console.log('Transaction deserialized successfully');
226
336
  console.log('Signing transaction...');
227
337
  transaction.sign([payer]);
338
+ console.log('Transaction signed');
228
339
  console.log('Sending transaction...');
229
340
  const blockhash = await connection.getLatestBlockhash();
341
+ console.log('Got latest blockhash for confirmation');
230
342
  const signature = await (0, transactionSender_1.transactionSenderAndConfirmationWaiter)({
231
343
  connection,
232
344
  serializedTransaction: Buffer.from(transaction.serialize()),
@@ -235,23 +347,29 @@ const executeJupiterSwap = async (swapParams, connection, payer) => {
235
347
  lastValidBlockHeight: blockhash.lastValidBlockHeight
236
348
  }
237
349
  });
350
+ // console.log('signature: ', signature);
238
351
  if (!signature) {
352
+ console.log('Transaction failed to confirm');
239
353
  return {
240
354
  success: false,
241
355
  error: 'Transaction failed to confirm'
242
356
  };
243
357
  }
244
- console.log('Swap successful! Signature:', signature.transaction.signatures[0]);
358
+ const txSignature = signature.transaction.signatures[0];
359
+ console.log('Swap successful! Signature:', txSignature);
245
360
  return {
246
361
  success: true,
247
- hash: signature.transaction.signatures[0],
362
+ hash: txSignature,
248
363
  inputAmount: quote.inAmount,
249
364
  outputAmount: quote.outAmount,
250
365
  priceImpact: quote.priceImpactPct
251
366
  };
252
367
  }
253
368
  catch (error) {
254
- console.error('Jupiter swap failed:', error);
369
+ console.log('Jupiter swap failed with error:', error);
370
+ console.log('Error type:', typeof error);
371
+ console.log('Error message:', error instanceof Error ? error.message : 'Unknown error');
372
+ console.log('Error stack:', error instanceof Error ? error.stack : 'No stack trace');
255
373
  return {
256
374
  success: false,
257
375
  error: error instanceof Error ? error.message : 'Unknown error occurred'
@@ -260,44 +378,65 @@ const executeJupiterSwap = async (swapParams, connection, payer) => {
260
378
  };
261
379
  exports.executeJupiterSwap = executeJupiterSwap;
262
380
  const uiAmountToBaseUnits = (uiAmount, decimals) => {
263
- return Math.floor(uiAmount * Math.pow(10, decimals));
381
+ console.log('uiAmountToBaseUnits: Converting', uiAmount, 'with', decimals, 'decimals');
382
+ const result = Math.floor(uiAmount * Math.pow(10, decimals));
383
+ console.log('Converted to base units:', result);
384
+ return result;
264
385
  };
265
386
  exports.uiAmountToBaseUnits = uiAmountToBaseUnits;
266
387
  const baseUnitsToUiAmount = (baseAmount, decimals) => {
267
- return Number(baseAmount) / Math.pow(10, decimals);
388
+ console.log('baseUnitsToUiAmount: Converting', baseAmount, 'with', decimals, 'decimals');
389
+ const result = Number(baseAmount) / Math.pow(10, decimals);
390
+ console.log('Converted to UI amount:', result);
391
+ return result;
268
392
  };
269
393
  exports.baseUnitsToUiAmount = baseUnitsToUiAmount;
270
394
  const getJupiterTokenList = async () => {
395
+ console.log('getJupiterTokenList: Fetching token list');
271
396
  try {
272
397
  const response = await fetch(`${JUPITER_BASE_URL}/tokens/v1/mints/tradable`);
398
+ console.log('Token list response status:', response.status);
273
399
  if (!response.ok) {
400
+ console.log('Failed to fetch token list:', response.statusText);
274
401
  throw new Error(`Failed to fetch token list: ${response.statusText}`);
275
402
  }
276
- return await response.json();
403
+ const result = await response.json();
404
+ console.log('Token list fetched, count:', result.length);
405
+ return result;
277
406
  }
278
407
  catch (error) {
279
- console.error('Failed to fetch Jupiter token list:', error);
408
+ console.log('Failed to fetch Jupiter token list:', error);
280
409
  return [];
281
410
  }
282
411
  };
283
412
  exports.getJupiterTokenList = getJupiterTokenList;
284
413
  const validateJupiterTokens = async (inputMint, outputMint) => {
414
+ console.log('validateJupiterTokens: Starting validation');
415
+ console.log('Input mint:', inputMint);
416
+ console.log('Output mint:', outputMint);
285
417
  try {
286
418
  const tokenList = await (0, exports.getJupiterTokenList)();
287
419
  const inputSupported = tokenList.includes(inputMint);
288
420
  const outputSupported = tokenList.includes(outputMint);
421
+ console.log('Input token supported:', inputSupported);
422
+ console.log('Output token supported:', outputSupported);
289
423
  if (!inputSupported && !outputSupported) {
424
+ console.log('Both tokens not supported');
290
425
  return { valid: false, message: 'Both input and output tokens are not supported' };
291
426
  }
292
427
  if (!inputSupported) {
428
+ console.log('Input token not supported');
293
429
  return { valid: false, message: 'Input token is not supported' };
294
430
  }
295
431
  if (!outputSupported) {
432
+ console.log('Output token not supported');
296
433
  return { valid: false, message: 'Output token is not supported' };
297
434
  }
435
+ console.log('Both tokens are supported');
298
436
  return { valid: true };
299
437
  }
300
438
  catch (error) {
439
+ console.log('Token validation failed:', error);
301
440
  return { valid: false, message: 'Failed to validate tokens' };
302
441
  }
303
442
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../utils/svm/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../utils/svm/utils.ts"],"names":[],"mappings":"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"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { Keypair } from "@solana/web3.js";
2
+ export declare const testUserKeyPair: Keypair;
package/dist/test.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.testUserKeyPair = void 0;
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const bs58_1 = __importDefault(require("bs58"));
9
+ const spl_token_1 = require("@solana/spl-token");
10
+ const bip32_1 = require("./bip32");
11
+ const svm_1 = require("./svm");
12
+ const vm_1 = require("./vm");
13
+ const mnemonic = (0, bip32_1.GenerateNewMnemonic)();
14
+ console.log('mnemonic: ', mnemonic);
15
+ const seed = vm_1.VM.mnemonicToSeed(mnemonic);
16
+ const pKey = "4QxETeX9pndiF1XNghUiDTnZnHq3cfjmuPLBJysrgocsLq1yb8w96aPWALa8ZnRZWmDU4wM8Tg8d1ZRVVByj7uXE";
17
+ exports.testUserKeyPair = web3_js_1.Keypair.fromSecretKey(bs58_1.default.decode(pKey));
18
+ const vm = new svm_1.SVMVM(seed);
19
+ // const vmFromMnemonic = SVMVM.fromMnemonic(mnemonic)
20
+ // const keyFromMnemonic = vmFromMnemonic.generatePrivateKey(0)
21
+ // console.log('keyFromMnemonic: ', keyFromMnemonic.privateKey.publicKey);
22
+ const key = vm.generatePrivateKey(0);
23
+ console.log('key: ', key.privateKey.publicKey);
24
+ const chainConfig = {
25
+ chainId: "solana-mainnet",
26
+ name: "Solana",
27
+ rpcUrl: "https://solana-mainnet.g.alchemy.com/v2/vB5mKztdJeFdz9RkW99Qf",
28
+ explorerUrl: "https://explorer.solana.com",
29
+ nativeToken: { name: "Solana", symbol: "SOL", decimals: 9 },
30
+ confirmationNo: 1,
31
+ };
32
+ const wallet = new svm_1.SVMChainWallet(chainConfig, exports.testUserKeyPair, key.index);
33
+ const toBuy = new web3_js_1.PublicKey("9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump");
34
+ wallet.swap({
35
+ name: spl_token_1.NATIVE_MINT.toBase58(),
36
+ address: spl_token_1.NATIVE_MINT.toBase58(),
37
+ symbol: spl_token_1.NATIVE_MINT.toBase58(),
38
+ decimals: 9
39
+ }, toBuy, 0.005).then(res => console.log(res));
40
+ // console.log('wal: ', wal.address);
41
+ // wal.getNativeBalance().then(e => console.log(e))
42
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../utils/test.ts"],"names":[],"mappings":";;;;;;AAEA,6CAAqD;AACrD,gDAA0B;AAC1B,iDAAgD;AAChD,mCAA8C;AAC9C,+BAA8C;AAC9C,6BAA0B;AAE1B,MAAM,QAAQ,GAAG,IAAA,2BAAmB,GAAE,CAAA;AAGtC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAEpC,MAAM,IAAI,GAAG,OAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AACxC,MAAM,IAAI,GAAG,0FAA0F,CAAA;AAE1F,QAAA,eAAe,GAAG,iBAAO,CAAC,aAAa,CAAC,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,MAAM,EAAE,GAAG,IAAI,WAAK,CAAC,IAAI,CAAC,CAAA;AAC1B,sDAAsD;AACtD,+DAA+D;AAC/D,0EAA0E;AAC1E,MAAM,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;AACpC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAsB;IACnC,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,+DAA+D;IACvE,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC3D,cAAc,EAAE,CAAC;CAEpB,CAAA;AAGD,MAAM,MAAM,GAAG,IAAI,oBAAc,CAAC,WAAW,EAAE,uBAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;AAC1E,MAAM,KAAK,GAAG,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAAA;AAC3E,MAAM,CAAC,IAAI,CAAC;IACR,IAAI,EAAE,uBAAW,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,uBAAW,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,uBAAW,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC;CACd,EAAE,KAAK,EAAE,KAAK,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAG/C,qCAAqC;AACrC,mDAAmD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deserialize/multi-vm-wallet",
3
- "version": "1.0.37",
3
+ "version": "1.0.41",
4
4
  "devDependencies": {
5
5
  "@types/bn.js": "^5.2.0",
6
6
  "@types/crypto-js": "^4.2.2",
@@ -26,6 +26,7 @@ export async function transactionSenderAndConfirmationWaiter({
26
26
  serializedTransaction,
27
27
  SEND_OPTIONS
28
28
  );
29
+ console.log('initial send txid: ', txid);
29
30
 
30
31
  const controller = new AbortController();
31
32
  const abortSignal = controller.signal;
@@ -51,7 +52,8 @@ export async function transactionSenderAndConfirmationWaiter({
51
52
  blockhashWithExpiryBlockHeight.lastValidBlockHeight - 150;
52
53
 
53
54
  // this would throw TransactionExpiredBlockheightExceededError
54
- await Promise.race([
55
+ // console.log("conforming the transaction ....")
56
+ const res = await Promise.race([
55
57
  connection.confirmTransaction(
56
58
  {
57
59
  ...blockhashWithExpiryBlockHeight,
@@ -74,10 +76,13 @@ export async function transactionSenderAndConfirmationWaiter({
74
76
  }
75
77
  }),
76
78
  ]);
79
+ console.log('res: ', res);
80
+
77
81
  } catch (e) {
82
+ console.log('e: ', e);
78
83
  if (e instanceof TransactionExpiredBlockheightExceededError) {
79
84
  // we consume this error and getTransaction would return null
80
- return null;
85
+ // return null;
81
86
  } else {
82
87
  // invalid state from web3.js
83
88
  throw e;
@@ -68,8 +68,15 @@ export const createV0Transaction = async (
68
68
  payerPubKey: PublicKey,
69
69
  blockHash?: string
70
70
  ) => {
71
+ console.log('createV0Transaction: Starting transaction creation');
72
+ console.log('Instructions count:', inX.length);
73
+ console.log('Signers count:', signers.length);
74
+ console.log('Payer public key:', payerPubKey.toString());
75
+
71
76
  const blockhash =
72
77
  blockHash || (await connection.getLatestBlockhash()).blockhash;
78
+ console.log('Using blockhash:', blockhash);
79
+
73
80
  const message = new TransactionMessage({
74
81
  payerKey: payerPubKey,
75
82
  instructions: inX,
@@ -79,9 +86,11 @@ export const createV0Transaction = async (
79
86
  const transaction = new VersionedTransaction(message);
80
87
  transaction.message.staticAccountKeys;
81
88
  if (signers.length < 1) {
89
+ console.log('Signing transaction with signers');
82
90
  transaction.sign(signers);
83
91
  }
84
92
 
93
+ console.log('createV0Transaction: Transaction created successfully');
85
94
  return transaction;
86
95
  };
87
96
 
@@ -91,6 +100,11 @@ export const createAtaAndIx = async (
91
100
  tokenProgramId: PublicKey,
92
101
  connection: Connection,
93
102
  ) => {
103
+ console.log('createAtaAndIx: Starting ATA creation');
104
+ console.log('Token:', token.toString());
105
+ console.log('Owner:', ownerPublicKey.toString());
106
+ console.log('Token Program ID:', tokenProgramId.toString());
107
+
94
108
  let AtaTokenIx;
95
109
  const associatedToken = getAssociatedTokenAddressSync(
96
110
  token,
@@ -98,9 +112,11 @@ export const createAtaAndIx = async (
98
112
  false,
99
113
  tokenProgramId
100
114
  );
115
+ console.log('Associated token address:', associatedToken.toString());
101
116
 
102
117
  const accountExist = await connection.getAccountInfo(associatedToken);
103
118
  if (!accountExist) {
119
+ console.log('Account does not exist, creating ATA instruction');
104
120
  AtaTokenIx = createAssociatedTokenAccountIdempotentInstruction(
105
121
  ownerPublicKey,
106
122
  associatedToken,
@@ -108,17 +124,26 @@ export const createAtaAndIx = async (
108
124
  token,
109
125
  tokenProgramId
110
126
  );
127
+ } else {
128
+ console.log('Account already exists, no ATA instruction needed');
111
129
  }
130
+
131
+ console.log('createAtaAndIx: Completed');
112
132
  return {
113
133
  AtaTokenIx,
114
134
  associatedToken,
115
135
  };
116
136
  };
137
+
117
138
  export const getSureAssociatedTokenAddressAndAccount = async (
118
139
  connection: Connection,
119
140
  token: PublicKey,
120
141
  owner: PublicKey,
121
142
  ) => {
143
+ console.log('getSureAssociatedTokenAddressAndAccount: Starting');
144
+ console.log('Token:', token.toString());
145
+ console.log('Owner:', owner.toString());
146
+
122
147
  let ATA: PublicKey;
123
148
  let programId: PublicKey;
124
149
  let tokenAccount: Account;
@@ -126,19 +151,32 @@ export const getSureAssociatedTokenAddressAndAccount = async (
126
151
  programId = token.equals(NATIVE_MINT)
127
152
  ? TOKEN_PROGRAM_ID
128
153
  : TOKEN_2022_PROGRAM_ID;
154
+ console.log('Trying with program ID:', programId.toString());
155
+
129
156
  ATA = getAssociatedTokenAddressSync(token, owner, true, programId);
157
+ console.log('ATA address:', ATA.toString());
158
+
130
159
  tokenAccount = await getAccount(connection, ATA, "confirmed", programId);
160
+ console.log('Token account found with TOKEN_2022_PROGRAM_ID');
131
161
  return { ATA, programId, tokenAccount };
132
162
  } catch (error) {
163
+ console.log('Failed with TOKEN_2022_PROGRAM_ID, trying TOKEN_PROGRAM_ID');
164
+ console.log('Error:', error);
165
+
133
166
  programId = TOKEN_PROGRAM_ID;
134
167
  ATA = getAssociatedTokenAddressSync(token, owner, true, programId);
168
+ console.log('New ATA address:', ATA.toString());
169
+
135
170
  tokenAccount = await getAccount(connection, ATA, "confirmed", programId);
171
+ console.log('Token account found with TOKEN_PROGRAM_ID');
136
172
  return { ATA, programId, tokenAccount };
137
173
  }
138
174
  };
139
175
 
140
176
  export const getProgramIdOfToken = async (owner: PublicKey, token: PublicKey, connection: Connection) => {
177
+
141
178
  if (token.equals(NATIVE_MINT)) {
179
+
142
180
  return TOKEN_PROGRAM_ID;
143
181
  }
144
182
  let ATA: PublicKey;
@@ -147,17 +185,15 @@ export const getProgramIdOfToken = async (owner: PublicKey, token: PublicKey, co
147
185
  try {
148
186
  ATA = getAssociatedTokenAddressSync(token, owner, true, programId);
149
187
  tokenAccount = await getAccount(connection, ATA, "confirmed", programId);
188
+
150
189
  return TOKEN_PROGRAM_ID
151
190
  } catch (error) {
191
+ console.log('Failed with TOKEN_PROGRAM_ID, returning TOKEN_2022_PROGRAM_ID');
152
192
  return TOKEN_2022_PROGRAM_ID;
153
-
154
193
  }
155
-
156
-
157
-
158
194
  }
159
- //get native balance
160
195
 
196
+ //get native balance
161
197
  export const getSvmNativeBalance = async (address: PublicKey, connection: Connection,) => {
162
198
  const balance = await connection.getBalance(address);
163
199
  return { balance: new BN(balance), formatted: balance / LAMPORTS_PER_SOL, decimal: 9 };
@@ -165,51 +201,61 @@ export const getSvmNativeBalance = async (address: PublicKey, connection: Connec
165
201
 
166
202
  export const getTokenBalance = async (address: PublicKey, token: PublicKey, connection: Connection) => {
167
203
 
204
+
168
205
  try {
169
206
  // Get the balance from the token account
170
207
  const tokenAccount = await getTokenAccountAccount(token, address, connection);
171
208
  if (!tokenAccount) {
172
- console.error("Token account not found");
209
+ console.log("Token account not found");
173
210
  return 0;
174
211
  }
212
+ console.log('Token account found:', tokenAccount.address.toString());
213
+
175
214
  const tokenBalance = await connection.getTokenAccountBalance(
176
215
  tokenAccount.address
177
216
  );
178
217
 
179
218
  if (!tokenBalance) {
180
- console.error("Token balance not found");
219
+ console.log("Token balance not found");
181
220
  return 0;
182
221
  }
183
222
 
223
+ console.log('Token balance:', tokenBalance.value);
184
224
  return tokenBalance.value;
185
225
 
186
226
  } catch (error) {
227
+ console.log('Error in getTokenBalance:', error);
187
228
  return 0;
188
229
  }
189
230
  }
190
231
 
191
232
  export const getTokenAccountAccount = async (token: PublicKey, address: PublicKey, connection: Connection): Promise<Account | null> => {
192
- try {
193
233
 
234
+ try {
194
235
  // Get the associated token account address for the user and the token mint
195
236
  const associatedTokenAccount = await getAssociatedTokenAddress(
196
237
  token, // The token mint address
197
238
  address // The user's public key
198
239
  );
240
+ console.log('Associated token account:', associatedTokenAccount.toString());
241
+
199
242
  // Fetch the token account information
200
243
  const tokenAccount = await getAccount(
201
244
  connection,
202
245
  associatedTokenAccount
203
246
  );
204
247
 
248
+ console.log('Token account retrieved successfully');
205
249
  return tokenAccount;
206
250
  } catch (error) {
207
- console.error("Error getting token balance:");
251
+ console.log("Not token account for this");
208
252
  return null;
209
253
  }
210
254
  };
211
255
 
212
256
  export const getTransferNativeInx = async (from: PublicKey, to: PublicKey, amount: number): Promise<TransactionInstruction> => {
257
+
258
+
213
259
  return SystemProgram.transfer({
214
260
  fromPubkey: from,
215
261
  toPubkey: to,
@@ -218,48 +264,82 @@ export const getTransferNativeInx = async (from: PublicKey, to: PublicKey, amoun
218
264
  }
219
265
 
220
266
  export const getTransferNativeTransaction = async (from: Keypair, to: PublicKey, amount: number, connection: Connection) => {
267
+ console.log('getTransferNativeTransaction: Starting');
221
268
  const instruction = await getTransferNativeInx(from.publicKey, to, amount);
222
269
  const transaction = await createV0Transaction(connection, [instruction], [from], from.publicKey);
270
+ console.log('getTransferNativeTransaction: Completed');
223
271
  return transaction;
224
272
  }
225
273
 
226
274
  export const getTransferTokenInx = async (from: PublicKey, to: PublicKey, token: TokenInfo, amount: number, connection: Connection): Promise<TransactionInstruction[]> => {
275
+
276
+
227
277
  const inx: TransactionInstruction[] = []
228
278
 
229
279
  const tokenToSend = new PublicKey(token.address);
280
+ console.log('Token to send:', tokenToSend.toString());
281
+
230
282
  const { ATA: source, programId, tokenAccount } = await getSureAssociatedTokenAddressAndAccount(connection, from, tokenToSend);
283
+ console.log('Source ATA:', source.toString());
284
+
231
285
  const { associatedToken: destination, AtaTokenIx } = await createAtaAndIx(tokenToSend, to, programId, connection);
286
+ console.log('Destination ATA:', destination.toString());
232
287
 
233
288
  if (!tokenAccount) {
289
+ console.log('Token account not found, throwing error');
234
290
  throw new Error("Token account not found");
235
291
  }
236
292
  if (AtaTokenIx) {
293
+ console.log('Adding ATA creation instruction');
237
294
  inx.push(AtaTokenIx);
238
295
  }
296
+
297
+ console.log('Creating transfer instruction');
239
298
  const tInx = createTransferCheckedInstruction(source, tokenToSend, destination, from, amount, token.decimals, undefined, programId)
240
299
  inx.push(tInx);
241
300
 
301
+ console.log('getTransferTokenInx: Completed with', inx.length, 'instructions');
242
302
  return inx;
243
-
244
303
  }
304
+
245
305
  export const getTransferTokenTransaction = async (from: Keypair, to: PublicKey, token: TokenInfo, amount: number, connection: Connection): Promise<VersionedTransaction> => {
306
+ console.log('getTransferTokenTransaction: Starting');
246
307
  const instruction = await getTransferTokenInx(from.publicKey, to, token, amount, connection);
247
308
  const transaction = await createV0Transaction(connection, instruction, [from], from.publicKey);
309
+ console.log('getTransferTokenTransaction: Completed');
248
310
  return transaction;
249
311
  }
312
+
250
313
  export const signAndSendTransaction = async (transaction: VersionedTransaction, connection: Connection, signers: Keypair[]) => {
314
+ console.log('signAndSendTransaction: Starting');
315
+ console.log('Signers count:', signers.length);
316
+
251
317
  transaction.sign(signers)
318
+ console.log('Transaction signed');
319
+
252
320
  const blockhash = await connection.getLatestBlockhash()
253
- const res = await transactionSenderAndConfirmationWaiter({ connection, serializedTransaction: Buffer.from(transaction.serialize()), blockhashWithExpiryBlockHeight: { blockhash: blockhash.blockhash, lastValidBlockHeight: blockhash.lastValidBlockHeight } })
321
+ console.log('Got latest blockhash:', blockhash.blockhash);
322
+
323
+ console.log('Sending transaction...');
324
+ const res = await transactionSenderAndConfirmationWaiter({
325
+ connection,
326
+ serializedTransaction: Buffer.from(transaction.serialize()),
327
+ blockhashWithExpiryBlockHeight: {
328
+ blockhash: blockhash.blockhash,
329
+ lastValidBlockHeight: blockhash.lastValidBlockHeight
330
+ }
331
+ });
332
+
254
333
  if (!res) {
334
+ console.log('Transaction failed to send or confirm');
255
335
  throw new Error("Transaction failed to send or confirm");
256
336
  }
257
- return res.transaction.signatures[0];
258
337
 
338
+ const signature = res.transaction.signatures[0];
339
+ console.log('Transaction successful, signature:', signature);
340
+ return signature;
259
341
  }
260
342
 
261
-
262
-
263
343
  //swap
264
344
  //you will. use jupiter for this
265
345
 
@@ -269,6 +349,12 @@ export const getJupiterQuote = async (
269
349
  amount: number,
270
350
  slippageBps: number = 50
271
351
  ): Promise<JupiterQuoteResponse> => {
352
+ // console.log('getJupiterQuote: Starting');
353
+ // console.log('Input mint:', inputMint);
354
+ // console.log('Output mint:', outputMint);
355
+ // console.log('Amount:', amount);
356
+ // console.log('Slippage BPS:', slippageBps);
357
+
272
358
  const params = new URLSearchParams({
273
359
  inputMint,
274
360
  outputMint,
@@ -278,14 +364,34 @@ export const getJupiterQuote = async (
278
364
  asLegacyTransaction: 'false'
279
365
  });
280
366
 
281
- const response = await fetch(`${JUPITER_BASE_URL}/swap/v1/quote?${params}`);
367
+ const url = `${JUPITER_BASE_URL}/swap/v1/quote?${params}`;
368
+ console.log('Request URL:', url);
369
+
370
+ const response = await fetch(url);
371
+ console.log('Response status:', response.status);
372
+ console.log('Response status text:', response.statusText);
282
373
 
283
374
  if (!response.ok) {
284
- const error = await response.json();
285
- throw new Error(`Jupiter quote failed: ${error.message || response.statusText}`);
375
+ console.log('Jupiter quote request failed');
376
+ console.log('Status:', response.status);
377
+ console.log('Status Text:', response.statusText);
378
+ console.log('URL:', url);
379
+
380
+ try {
381
+ const error = await response.json();
382
+ console.log('Error details:', error);
383
+ } catch {
384
+ const textError = await response.text();
385
+ console.log('Error text:', textError);
386
+ }
387
+
388
+ throw new Error(`Jupiter quote failed: ${response.statusText}`);
286
389
  }
287
390
 
288
- return await response.json();
391
+ const result = await response.json();
392
+ console.log('Jupiter quote successful');
393
+ console.log('Quote result:', result);
394
+ return result;
289
395
  };
290
396
 
291
397
  export const buildJupiterSwapTransaction = async (
@@ -293,6 +399,10 @@ export const buildJupiterSwapTransaction = async (
293
399
  userPublicKey: string,
294
400
  prioritizationFeeLamports?: number
295
401
  ): Promise<JupiterSwapResponse> => {
402
+ console.log('buildJupiterSwapTransaction: Starting');
403
+ console.log('User public key:', userPublicKey);
404
+ const priorityFee = prioritizationFeeLamports || 5000;
405
+ console.log('Prioritization fee:', priorityFee);
296
406
  const body = {
297
407
  quoteResponse: quote,
298
408
  userPublicKey,
@@ -301,7 +411,7 @@ export const buildJupiterSwapTransaction = async (
301
411
  feeAccount: undefined,
302
412
  trackingAccount: undefined,
303
413
  computeUnitPriceMicroLamports: undefined,
304
- prioritizationFeeLamports: prioritizationFeeLamports || 1000,
414
+ prioritizationFeeLamports: priorityFee,
305
415
  asLegacyTransaction: false,
306
416
  useTokenLedger: false,
307
417
  destinationTokenAccount: undefined,
@@ -309,6 +419,8 @@ export const buildJupiterSwapTransaction = async (
309
419
  skipUserAccountsRpcCalls: false
310
420
  };
311
421
 
422
+ console.log('Request body:', body);
423
+
312
424
  const response = await fetch(`${JUPITER_BASE_URL}/swap/v1/swap`, {
313
425
  method: 'POST',
314
426
  headers: {
@@ -317,12 +429,26 @@ export const buildJupiterSwapTransaction = async (
317
429
  body: JSON.stringify(body),
318
430
  });
319
431
 
432
+ console.log('Swap transaction build response status:', response.status);
433
+
320
434
  if (!response.ok) {
321
- const error = await response.json();
322
- throw new Error(`Jupiter swap transaction build failed: ${error.message || response.statusText}`);
435
+ console.log('Jupiter swap transaction build failed');
436
+ console.log('Status:', response.status);
437
+ console.log('Status text:', response.statusText);
438
+
439
+ try {
440
+ const error = await response.json();
441
+ console.log('Swap build error details:', error);
442
+ throw new Error(`Jupiter swap transaction build failed: ${error.message || response.statusText}`);
443
+ } catch (parseError) {
444
+ console.log('Failed to parse error response:', parseError);
445
+ throw new Error(`Jupiter swap transaction build failed: ${response.statusText}`);
446
+ }
323
447
  }
324
448
 
325
- return await response.json();
449
+ const result = await response.json();
450
+ console.log('Jupiter swap transaction built successfully');
451
+ return result;
326
452
  };
327
453
 
328
454
  export const executeJupiterSwap = async (
@@ -330,6 +456,15 @@ export const executeJupiterSwap = async (
330
456
  connection: Connection,
331
457
  payer: Keypair
332
458
  ): Promise<SwapResult> => {
459
+ console.log('executeJupiterSwap: Starting');
460
+ console.log('Swap params:', {
461
+ fromToken: swapParams.fromToken.toString(),
462
+ toToken: swapParams.toToken.toString(),
463
+ amount: swapParams.amount,
464
+ slippageBps: swapParams.slippageBps,
465
+ userPublicKey: swapParams.userPublicKey.toString()
466
+ });
467
+
333
468
  try {
334
469
  console.log('Getting Jupiter quote...');
335
470
  const quote = await getJupiterQuote(
@@ -353,13 +488,19 @@ export const executeJupiterSwap = async (
353
488
 
354
489
  console.log('Deserializing transaction...');
355
490
  const swapTransactionBuf = Buffer.from(swapResponse.swapTransaction, 'base64');
491
+ console.log('Transaction buffer length:', swapTransactionBuf.length);
492
+
356
493
  const transaction = VersionedTransaction.deserialize(swapTransactionBuf);
494
+ console.log('Transaction deserialized successfully');
357
495
 
358
496
  console.log('Signing transaction...');
359
497
  transaction.sign([payer]);
498
+ console.log('Transaction signed');
360
499
 
361
500
  console.log('Sending transaction...');
362
501
  const blockhash = await connection.getLatestBlockhash();
502
+ console.log('Got latest blockhash for confirmation');
503
+
363
504
  const signature = await transactionSenderAndConfirmationWaiter({
364
505
  connection,
365
506
  serializedTransaction: Buffer.from(transaction.serialize()),
@@ -369,25 +510,32 @@ export const executeJupiterSwap = async (
369
510
  }
370
511
  });
371
512
 
513
+ // console.log('signature: ', signature);
372
514
  if (!signature) {
515
+ console.log('Transaction failed to confirm');
373
516
  return {
374
517
  success: false,
375
518
  error: 'Transaction failed to confirm'
376
519
  };
377
520
  }
378
521
 
379
- console.log('Swap successful! Signature:', signature.transaction.signatures[0]);
522
+ const txSignature = signature.transaction.signatures[0];
523
+ console.log('Swap successful! Signature:', txSignature);
380
524
 
381
525
  return {
382
526
  success: true,
383
- hash: signature.transaction.signatures[0],
527
+ hash: txSignature,
384
528
  inputAmount: quote.inAmount,
385
529
  outputAmount: quote.outAmount,
386
530
  priceImpact: quote.priceImpactPct
387
531
  };
388
532
 
389
533
  } catch (error) {
390
- console.error('Jupiter swap failed:', error);
534
+ console.log('Jupiter swap failed with error:', error);
535
+ console.log('Error type:', typeof error);
536
+ console.log('Error message:', error instanceof Error ? error.message : 'Unknown error');
537
+ console.log('Error stack:', error instanceof Error ? error.stack : 'No stack trace');
538
+
391
539
  return {
392
540
  success: false,
393
541
  error: error instanceof Error ? error.message : 'Unknown error occurred'
@@ -396,22 +544,34 @@ export const executeJupiterSwap = async (
396
544
  };
397
545
 
398
546
  export const uiAmountToBaseUnits = (uiAmount: number, decimals: number): number => {
399
- return Math.floor(uiAmount * Math.pow(10, decimals));
547
+ console.log('uiAmountToBaseUnits: Converting', uiAmount, 'with', decimals, 'decimals');
548
+ const result = Math.floor(uiAmount * Math.pow(10, decimals));
549
+ console.log('Converted to base units:', result);
550
+ return result;
400
551
  };
401
552
 
402
553
  export const baseUnitsToUiAmount = (baseAmount: string | number, decimals: number): number => {
403
- return Number(baseAmount) / Math.pow(10, decimals);
554
+ console.log('baseUnitsToUiAmount: Converting', baseAmount, 'with', decimals, 'decimals');
555
+ const result = Number(baseAmount) / Math.pow(10, decimals);
556
+ console.log('Converted to UI amount:', result);
557
+ return result;
404
558
  };
405
559
 
406
560
  export const getJupiterTokenList = async (): Promise<any[]> => {
561
+ console.log('getJupiterTokenList: Fetching token list');
407
562
  try {
408
563
  const response = await fetch(`${JUPITER_BASE_URL}/tokens/v1/mints/tradable`);
564
+ console.log('Token list response status:', response.status);
565
+
409
566
  if (!response.ok) {
567
+ console.log('Failed to fetch token list:', response.statusText);
410
568
  throw new Error(`Failed to fetch token list: ${response.statusText}`);
411
569
  }
412
- return await response.json();
570
+ const result = await response.json();
571
+ console.log('Token list fetched, count:', result.length);
572
+ return result;
413
573
  } catch (error) {
414
- console.error('Failed to fetch Jupiter token list:', error);
574
+ console.log('Failed to fetch Jupiter token list:', error);
415
575
  return [];
416
576
  }
417
577
  };
@@ -420,23 +580,35 @@ export const validateJupiterTokens = async (
420
580
  inputMint: string,
421
581
  outputMint: string
422
582
  ): Promise<{ valid: boolean; message?: string }> => {
583
+ console.log('validateJupiterTokens: Starting validation');
584
+ console.log('Input mint:', inputMint);
585
+ console.log('Output mint:', outputMint);
586
+
423
587
  try {
424
588
  const tokenList = await getJupiterTokenList();
425
589
  const inputSupported = tokenList.includes(inputMint);
426
590
  const outputSupported = tokenList.includes(outputMint);
427
591
 
592
+ console.log('Input token supported:', inputSupported);
593
+ console.log('Output token supported:', outputSupported);
594
+
428
595
  if (!inputSupported && !outputSupported) {
596
+ console.log('Both tokens not supported');
429
597
  return { valid: false, message: 'Both input and output tokens are not supported' };
430
598
  }
431
599
  if (!inputSupported) {
600
+ console.log('Input token not supported');
432
601
  return { valid: false, message: 'Input token is not supported' };
433
602
  }
434
603
  if (!outputSupported) {
604
+ console.log('Output token not supported');
435
605
  return { valid: false, message: 'Output token is not supported' };
436
606
  }
437
607
 
608
+ console.log('Both tokens are supported');
438
609
  return { valid: true };
439
610
  } catch (error) {
611
+ console.log('Token validation failed:', error);
440
612
  return { valid: false, message: 'Failed to validate tokens' };
441
613
  }
442
614
  };
package/utils/test.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { generateKey } from "crypto";
2
+
3
+ import { Keypair, PublicKey } from "@solana/web3.js";
4
+ import base58 from "bs58";
5
+ import { NATIVE_MINT } from "@solana/spl-token";
6
+ import { GenerateNewMnemonic } from "./bip32";
7
+ import { SVMChainWallet, SVMVM } from "./svm";
8
+ import { VM } from "./vm";
9
+ import { ChainWalletConfig } from "./types";
10
+ const mnemonic = GenerateNewMnemonic()
11
+
12
+
13
+ console.log('mnemonic: ', mnemonic);
14
+
15
+ const seed = VM.mnemonicToSeed(mnemonic)
16
+ const pKey = "4QxETeX9pndiF1XNghUiDTnZnHq3cfjmuPLBJysrgocsLq1yb8w96aPWALa8ZnRZWmDU4wM8Tg8d1ZRVVByj7uXE"
17
+
18
+ export const testUserKeyPair = Keypair.fromSecretKey(base58.decode(pKey));
19
+ const vm = new SVMVM(seed)
20
+ // const vmFromMnemonic = SVMVM.fromMnemonic(mnemonic)
21
+ // const keyFromMnemonic = vmFromMnemonic.generatePrivateKey(0)
22
+ // console.log('keyFromMnemonic: ', keyFromMnemonic.privateKey.publicKey);
23
+ const key = vm.generatePrivateKey(0)
24
+ console.log('key: ', key.privateKey.publicKey);
25
+ const chainConfig: ChainWalletConfig = {
26
+ chainId: "solana-mainnet",
27
+ name: "Solana",
28
+ rpcUrl: "https://solana-mainnet.g.alchemy.com/v2/vB5mKztdJeFdz9RkW99Qf",
29
+ explorerUrl: "https://explorer.solana.com",
30
+ nativeToken: { name: "Solana", symbol: "SOL", decimals: 9 },
31
+ confirmationNo: 1,
32
+
33
+ }
34
+
35
+
36
+ const wallet = new SVMChainWallet(chainConfig, testUserKeyPair, key.index)
37
+ const toBuy = new PublicKey("9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump")
38
+ wallet.swap({
39
+ name: NATIVE_MINT.toBase58(),
40
+ address: NATIVE_MINT.toBase58(),
41
+ symbol: NATIVE_MINT.toBase58(),
42
+ decimals: 9
43
+ }, toBuy, 0.005,).then(res => console.log(res))
44
+
45
+
46
+ // console.log('wal: ', wal.address);
47
+ // wal.getNativeBalance().then(e => console.log(e))
48
+
49
+