@deserialize/multi-vm-wallet 1.0.12 → 1.0.21

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 (48) hide show
  1. package/dist/IChainWallet.d.ts +17 -0
  2. package/dist/IChainWallet.js +23 -0
  3. package/dist/IChainWallet.js.map +1 -0
  4. package/dist/bip32.d.ts +11 -0
  5. package/dist/bip32.js +100 -0
  6. package/dist/bip32.js.map +1 -0
  7. package/dist/evm/evm.d.ts +39 -0
  8. package/dist/evm/evm.js +234 -0
  9. package/dist/evm/evm.js.map +1 -0
  10. package/dist/evm/index.d.ts +2 -0
  11. package/dist/evm/index.js +19 -0
  12. package/dist/evm/index.js.map +1 -0
  13. package/dist/evm/utils.d.ts +207 -0
  14. package/dist/evm/utils.js +538 -0
  15. package/dist/evm/utils.js.map +1 -0
  16. package/dist/index.d.ts +7 -0
  17. package/dist/index.js +24 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/svm/index.d.ts +1 -0
  20. package/dist/svm/index.js +18 -0
  21. package/dist/svm/index.js.map +1 -0
  22. package/dist/svm/svm.d.ts +36 -0
  23. package/dist/svm/svm.js +167 -0
  24. package/dist/svm/svm.js.map +1 -0
  25. package/dist/svm/transactionSender.d.ts +8 -0
  26. package/dist/svm/transactionSender.js +84 -0
  27. package/dist/svm/transactionSender.js.map +1 -0
  28. package/dist/svm/utils.d.ts +85 -0
  29. package/dist/svm/utils.js +305 -0
  30. package/dist/svm/utils.js.map +1 -0
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/dist/types.d.ts +44 -0
  33. package/dist/types.js +10 -0
  34. package/dist/types.js.map +1 -0
  35. package/dist/utils/evm/evm.d.ts +4 -3
  36. package/dist/utils/evm/evm.js +18 -6
  37. package/dist/utils/svm/svm.d.ts +3 -2
  38. package/dist/utils/svm/svm.js +17 -5
  39. package/dist/utils/vm.d.ts +2 -3
  40. package/dist/utils/vm.js +5 -6
  41. package/dist/vm.d.ts +12 -0
  42. package/dist/vm.js +49 -0
  43. package/dist/vm.js.map +1 -0
  44. package/package.json +1 -1
  45. package/tsconfig.json +11 -111
  46. package/utils/evm/evm.ts +22 -10
  47. package/utils/svm/svm.ts +17 -5
  48. package/utils/vm.ts +5 -5
@@ -0,0 +1,538 @@
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.safeApprove = exports.resetAllowance = exports.checkAndApprove = exports.approveTokenUnlimited = exports.approveToken = exports.isAllowanceSufficient = exports.checkAllowance = exports.estimateGas = exports.getGasPrices = exports.executeContractMethod = exports.sendERC20Token = exports.sendNativeToken = exports.signSendAndConfirm = exports.getTokenBalance = exports.getNativeBalance = void 0;
7
+ exports.getKyberSwapRoute = getKyberSwapRoute;
8
+ exports.buildKyberSwapTransaction = buildKyberSwapTransaction;
9
+ exports.performSwap = performSwap;
10
+ exports.getKyberSupportedChains = getKyberSupportedChains;
11
+ exports.isChainSupportedByKyber = isChainSupportedByKyber;
12
+ exports.getNativeTokenAddress = getNativeTokenAddress;
13
+ exports.formatAmountToWei = formatAmountToWei;
14
+ exports.formatAmountFromWei = formatAmountFromWei;
15
+ exports.prepareSwapParams = prepareSwapParams;
16
+ const ethers_1 = require("ethers");
17
+ const bn_js_1 = __importDefault(require("bn.js"));
18
+ const KYBER_BASE_URL = 'https://aggregator-api.kyberswap.com';
19
+ const KYBER_SUPPORTED_CHAINS = {
20
+ '1': 'ethereum',
21
+ '137': 'polygon',
22
+ '56': 'bsc',
23
+ '43114': 'avalanche',
24
+ '250': 'fantom',
25
+ '42161': 'arbitrum',
26
+ '10': 'optimism',
27
+ '8453': 'base',
28
+ '324': 'zksync',
29
+ '59144': 'linea'
30
+ };
31
+ // ERC-20 ABI
32
+ const ERC20_ABI = [
33
+ "function balanceOf(address owner) view returns (uint256)",
34
+ "function decimals() view returns (uint8)",
35
+ "function symbol() view returns (string)",
36
+ "function name() view returns (string)",
37
+ "function transfer(address to, uint256 amount) returns (bool)",
38
+ "function transferFrom(address from, address to, uint256 amount) returns (bool)",
39
+ "function approve(address spender, uint256 amount) returns (bool)",
40
+ "function allowance(address owner, address spender) view returns (uint256)"
41
+ ];
42
+ const getNativeBalance = async (address, provider) => {
43
+ const balance = await provider.getBalance(address);
44
+ return {
45
+ balance: new bn_js_1.default(balance),
46
+ formatted: Number(balance / 10n ** 18n),
47
+ decimal: 18
48
+ };
49
+ };
50
+ exports.getNativeBalance = getNativeBalance;
51
+ const getTokenBalance = async (tokenAddress, walletAddress, provider) => {
52
+ try {
53
+ // Create contract instance
54
+ const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_ABI, provider);
55
+ // Get balance (returns BigNumber)
56
+ const balance = await tokenContract.balanceOf(walletAddress);
57
+ // Get decimals to format the balance properly
58
+ const decimals = await tokenContract.decimals();
59
+ // Format balance by dividing by 10^decimals
60
+ const formattedBalance = balance / (10n ** BigInt(decimals));
61
+ return {
62
+ balance: new bn_js_1.default(balance.toString()), // Raw balance as BigNumber
63
+ formatted: Number(formattedBalance.toString()),
64
+ decimal: decimals
65
+ };
66
+ }
67
+ catch (error) {
68
+ console.error('Error fetching token balance:', error);
69
+ throw error;
70
+ }
71
+ };
72
+ exports.getTokenBalance = getTokenBalance;
73
+ /**
74
+ * Sign, send, and confirm any EVM transaction
75
+ */
76
+ const signSendAndConfirm = async (wallet, // Connected wallet (private key + provider)
77
+ transactionParams, confirmations = 1, // Number of confirmations to wait for
78
+ timeout = 300000 // 5 minutes timeout
79
+ ) => {
80
+ try {
81
+ // Prepare transaction object
82
+ const tx = {
83
+ to: transactionParams.to,
84
+ value: transactionParams.value || 0,
85
+ data: transactionParams.data || '0x',
86
+ };
87
+ // Set gas parameters
88
+ if (transactionParams.gasLimit) {
89
+ tx.gasLimit = transactionParams.gasLimit;
90
+ }
91
+ // Handle gas pricing (EIP-1559 vs legacy)
92
+ if (transactionParams.maxFeePerGas && transactionParams.maxPriorityFeePerGas) {
93
+ // EIP-1559 transaction
94
+ tx.maxFeePerGas = transactionParams.maxFeePerGas;
95
+ tx.maxPriorityFeePerGas = transactionParams.maxPriorityFeePerGas;
96
+ }
97
+ else if (transactionParams.gasPrice) {
98
+ // Legacy transaction
99
+ tx.gasPrice = transactionParams.gasPrice;
100
+ }
101
+ // Set nonce if provided
102
+ if (transactionParams.nonce !== undefined) {
103
+ tx.nonce = transactionParams.nonce;
104
+ }
105
+ // Estimate gas if not provided
106
+ if (!tx.gasLimit) {
107
+ tx.gasLimit = await wallet.estimateGas(tx);
108
+ }
109
+ console.log('Sending transaction:', tx);
110
+ // Sign and send transaction
111
+ const txResponse = await wallet.sendTransaction(tx);
112
+ console.log(`Transaction sent with hash: ${txResponse.hash}`);
113
+ // Wait for confirmation with timeout
114
+ const receipt = await Promise.race([
115
+ txResponse.wait(confirmations),
116
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Transaction confirmation timeout')), timeout))
117
+ ]);
118
+ const result = {
119
+ hash: txResponse.hash,
120
+ receipt: receipt,
121
+ success: receipt?.status === 1,
122
+ gasUsed: receipt?.gasUsed,
123
+ effectiveGasPrice: receipt?.gasPrice,
124
+ blockNumber: receipt?.blockNumber,
125
+ confirmations: confirmations
126
+ };
127
+ console.log(`Transaction ${result.success ? 'successful' : 'failed'}:`, result);
128
+ return result;
129
+ }
130
+ catch (error) {
131
+ console.error('Transaction failed:', error);
132
+ throw error;
133
+ }
134
+ };
135
+ exports.signSendAndConfirm = signSendAndConfirm;
136
+ /**
137
+ * Send native token (ETH, BNB, MATIC, etc.)
138
+ */
139
+ const sendNativeToken = async (wallet, to, amount, // Amount in wei
140
+ gasLimit, confirmations = 1) => {
141
+ return await (0, exports.signSendAndConfirm)(wallet, {
142
+ to,
143
+ value: (Number(amount) * 10 ** 18).toString(),
144
+ gasLimit
145
+ }, confirmations);
146
+ };
147
+ exports.sendNativeToken = sendNativeToken;
148
+ /**
149
+ * Send ERC-20 token
150
+ */
151
+ const sendERC20Token = async (wallet, tokenAddress, to, amount, // Amount in token's smallest unit
152
+ gasLimit, confirmations = 1) => {
153
+ try {
154
+ // Create contract instance
155
+ const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_ABI, wallet);
156
+ // Encode transfer function call
157
+ const data = tokenContract.interface.encodeFunctionData('transfer', [to, amount]);
158
+ return await (0, exports.signSendAndConfirm)(wallet, {
159
+ to: tokenAddress,
160
+ data,
161
+ gasLimit
162
+ }, confirmations);
163
+ }
164
+ catch (error) {
165
+ console.error('ERC-20 transfer failed:', error);
166
+ throw error;
167
+ }
168
+ };
169
+ exports.sendERC20Token = sendERC20Token;
170
+ /**
171
+ * Execute any contract method
172
+ */
173
+ const executeContractMethod = async (wallet, contractAddress, abi, methodName, methodParams = [], value, // For payable methods
174
+ gasLimit, confirmations = 1) => {
175
+ try {
176
+ // Create contract instance
177
+ const contract = new ethers_1.Contract(contractAddress, abi, wallet);
178
+ // Encode method call
179
+ const data = contract.interface.encodeFunctionData(methodName, methodParams);
180
+ return await (0, exports.signSendAndConfirm)(wallet, {
181
+ to: contractAddress,
182
+ data,
183
+ value,
184
+ gasLimit
185
+ }, confirmations);
186
+ }
187
+ catch (error) {
188
+ console.error('Contract method execution failed:', error);
189
+ throw error;
190
+ }
191
+ };
192
+ exports.executeContractMethod = executeContractMethod;
193
+ /**
194
+ * Get current gas prices (both legacy and EIP-1559)
195
+ */
196
+ const getGasPrices = async (provider) => {
197
+ try {
198
+ const feeData = await provider.getFeeData();
199
+ return {
200
+ // Legacy
201
+ gasPrice: feeData.gasPrice,
202
+ // EIP-1559
203
+ maxFeePerGas: feeData.maxFeePerGas,
204
+ maxPriorityFeePerGas: feeData.maxPriorityFeePerGas
205
+ };
206
+ }
207
+ catch (error) {
208
+ console.error('Error fetching gas prices:', error);
209
+ throw error;
210
+ }
211
+ };
212
+ exports.getGasPrices = getGasPrices;
213
+ /**
214
+ * Estimate gas for a transaction
215
+ */
216
+ const estimateGas = async (provider, transactionParams) => {
217
+ try {
218
+ const tx = {
219
+ to: transactionParams.to,
220
+ value: transactionParams.value || 0,
221
+ data: transactionParams.data || '0x'
222
+ };
223
+ return await provider.estimateGas(tx);
224
+ }
225
+ catch (error) {
226
+ console.error('Gas estimation failed:', error);
227
+ throw error;
228
+ }
229
+ };
230
+ exports.estimateGas = estimateGas;
231
+ /**
232
+ * Check ERC-20 token allowance
233
+ */
234
+ const checkAllowance = async (tokenAddress, owner, spender, provider) => {
235
+ try {
236
+ const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_ABI, provider);
237
+ // Get allowance and decimals
238
+ const [allowance, decimals] = await Promise.all([
239
+ tokenContract.allowance(owner, spender),
240
+ tokenContract.decimals()
241
+ ]);
242
+ // Format allowance for display
243
+ const formattedAllowance = allowance / (10n ** BigInt(decimals));
244
+ return {
245
+ allowance,
246
+ formatted: formattedAllowance.toString(),
247
+ decimals
248
+ };
249
+ }
250
+ catch (error) {
251
+ console.error('Error checking allowance:', error);
252
+ throw error;
253
+ }
254
+ };
255
+ exports.checkAllowance = checkAllowance;
256
+ /**
257
+ * Check if allowance is sufficient for a transaction
258
+ */
259
+ const isAllowanceSufficient = async (tokenAddress, owner, spender, requiredAmount, provider) => {
260
+ try {
261
+ const { allowance } = await (0, exports.checkAllowance)(tokenAddress, owner, spender, provider);
262
+ const required = typeof requiredAmount === 'string' ? BigInt(requiredAmount) : requiredAmount;
263
+ return allowance >= required;
264
+ }
265
+ catch (error) {
266
+ console.error('Error checking allowance sufficiency:', error);
267
+ throw error;
268
+ }
269
+ };
270
+ exports.isAllowanceSufficient = isAllowanceSufficient;
271
+ /**
272
+ * Approve ERC-20 token spending
273
+ */
274
+ const approveToken = async (wallet, tokenAddress, spender, amount, // Amount to approve, use MaxUint256 for unlimited
275
+ gasLimit, confirmations = 1) => {
276
+ try {
277
+ const tokenContract = new ethers_1.Contract(tokenAddress, ERC20_ABI, wallet);
278
+ // Encode approve function call
279
+ const data = tokenContract.interface.encodeFunctionData('approve', [spender, amount]);
280
+ return await (0, exports.signSendAndConfirm)(wallet, {
281
+ to: tokenAddress,
282
+ data,
283
+ gasLimit
284
+ }, confirmations);
285
+ }
286
+ catch (error) {
287
+ console.error('Token approval failed:', error);
288
+ throw error;
289
+ }
290
+ };
291
+ exports.approveToken = approveToken;
292
+ /**
293
+ * Approve unlimited token spending (MaxUint256)
294
+ */
295
+ const approveTokenUnlimited = async (wallet, tokenAddress, spender, gasLimit, confirmations = 1) => {
296
+ // MaxUint256 = 2^256 - 1
297
+ const MAX_UINT256 = "115792089237316195423570985008687907853269984665640564039457584007913129639935";
298
+ return await (0, exports.approveToken)(wallet, tokenAddress, spender, MAX_UINT256, gasLimit, confirmations);
299
+ };
300
+ exports.approveTokenUnlimited = approveTokenUnlimited;
301
+ /**
302
+ * Check allowance and approve if necessary
303
+ */
304
+ const checkAndApprove = async (wallet, tokenAddress, spender, requiredAmount, approvalAmount, // If not provided, will approve exactly the required amount
305
+ gasLimit, confirmations = 1) => {
306
+ try {
307
+ const owner = await wallet.getAddress();
308
+ const provider = wallet.provider;
309
+ // Check current allowance
310
+ const { allowance } = await (0, exports.checkAllowance)(tokenAddress, owner, spender, provider);
311
+ const required = typeof requiredAmount === 'string' ? BigInt(requiredAmount) : requiredAmount;
312
+ const approvalNeeded = allowance < required;
313
+ if (!approvalNeeded) {
314
+ return {
315
+ approvalNeeded: false,
316
+ currentAllowance: allowance
317
+ };
318
+ }
319
+ console.log(`Approval needed. Current: ${allowance}, Required: ${required}`);
320
+ // Determine approval amount
321
+ const amountToApprove = approvalAmount || required;
322
+ // Execute approval
323
+ const approvalResult = await (0, exports.approveToken)(wallet, tokenAddress, spender, amountToApprove, gasLimit, confirmations);
324
+ return {
325
+ approvalNeeded: true,
326
+ currentAllowance: allowance,
327
+ approvalResult
328
+ };
329
+ }
330
+ catch (error) {
331
+ console.error('Check and approve failed:', error);
332
+ throw error;
333
+ }
334
+ };
335
+ exports.checkAndApprove = checkAndApprove;
336
+ /**
337
+ * Reset token allowance to zero (security best practice before setting new allowance)
338
+ */
339
+ const resetAllowance = async (wallet, tokenAddress, spender, gasLimit, confirmations = 1) => {
340
+ return await (0, exports.approveToken)(wallet, tokenAddress, spender, "0", gasLimit, confirmations);
341
+ };
342
+ exports.resetAllowance = resetAllowance;
343
+ /**
344
+ * Safe approve: Reset to zero first, then approve the desired amount
345
+ * (Some tokens like USDT require this)
346
+ */
347
+ const safeApprove = async (wallet, tokenAddress, spender, amount, gasLimit, confirmations = 1) => {
348
+ try {
349
+ console.log('Performing safe approve: reset then approve');
350
+ // First reset to zero
351
+ const resetResult = await (0, exports.resetAllowance)(wallet, tokenAddress, spender, gasLimit, confirmations);
352
+ if (!resetResult.success) {
353
+ throw new Error('Failed to reset allowance to zero');
354
+ }
355
+ // Then approve the desired amount
356
+ const approveResult = await (0, exports.approveToken)(wallet, tokenAddress, spender, amount, gasLimit, confirmations);
357
+ return {
358
+ resetResult,
359
+ approveResult
360
+ };
361
+ }
362
+ catch (error) {
363
+ console.error('Safe approve failed:', error);
364
+ throw error;
365
+ }
366
+ };
367
+ exports.safeApprove = safeApprove;
368
+ //swaps
369
+ //kyber swap here
370
+ //docs -. https://docs.kyberswap.com/kyberswap-solutions/kyberswap-aggregator/developer-guides/execute-a-swap-with-the-aggregator-api
371
+ // the major constrain is that each function should return a transaction to sign, do not sign transaction or send transaction within util functions
372
+ // let the ChainWalletClass be the one to sign and send,
373
+ //so in you chainWallet.swap, you can have the futil swap function to get the transaction then another function to sign and send and confirm the transaction
374
+ async function getKyberSwapRoute(params) {
375
+ const chainName = KYBER_SUPPORTED_CHAINS[params.chainId];
376
+ if (!chainName) {
377
+ throw new Error(`Unsupported chain ID: ${params.chainId}`);
378
+ }
379
+ const queryParams = new URLSearchParams({
380
+ tokenIn: params.tokenIn,
381
+ tokenOut: params.tokenOut,
382
+ amountIn: params.amountIn,
383
+ });
384
+ if (params.feeAmount)
385
+ queryParams.append('feeAmount', params.feeAmount);
386
+ if (params.feeReceiver)
387
+ queryParams.append('feeReceiver', params.feeReceiver);
388
+ if (params.isInBps !== undefined)
389
+ queryParams.append('isInBps', params.isInBps.toString());
390
+ if (params.chargeFeeBy)
391
+ queryParams.append('chargeFeeBy', params.chargeFeeBy);
392
+ const url = `${KYBER_BASE_URL}/${chainName}/api/v1/routes?${queryParams}`;
393
+ const headers = {};
394
+ if (params.clientId) {
395
+ headers['x-client-id'] = params.clientId;
396
+ }
397
+ try {
398
+ const response = await fetch(url, { headers });
399
+ const data = await response.json();
400
+ if (!response.ok) {
401
+ throw new Error(`KyberSwap API error: ${data.message || response.statusText}`);
402
+ }
403
+ return data;
404
+ }
405
+ catch (error) {
406
+ console.error('Error fetching KyberSwap route:', error);
407
+ throw error;
408
+ }
409
+ }
410
+ async function buildKyberSwapTransaction(chainId, routeSummary, sender, recipient, slippageTolerance = 50, deadline, clientId) {
411
+ const chainName = KYBER_SUPPORTED_CHAINS[chainId];
412
+ if (!chainName) {
413
+ throw new Error(`Unsupported chain ID: ${chainId}`);
414
+ }
415
+ const url = `${KYBER_BASE_URL}/${chainName}/api/v1/route/build`;
416
+ const txDeadline = deadline || Math.floor(Date.now() / 1000) + 1200;
417
+ const body = {
418
+ routeSummary,
419
+ sender,
420
+ recipient,
421
+ slippageTolerance,
422
+ deadline: txDeadline,
423
+ source: clientId || 'MyWalletApp'
424
+ };
425
+ const headers = {
426
+ 'Content-Type': 'application/json',
427
+ };
428
+ if (clientId) {
429
+ headers['x-client-id'] = clientId;
430
+ }
431
+ try {
432
+ const response = await fetch(url, {
433
+ method: 'POST',
434
+ headers,
435
+ body: JSON.stringify(body)
436
+ });
437
+ const data = await response.json();
438
+ if (!response.ok) {
439
+ throw new Error(`KyberSwap build API error: ${data.message || response.statusText}`);
440
+ }
441
+ return data;
442
+ }
443
+ catch (error) {
444
+ console.error('Error building KyberSwap transaction:', error);
445
+ throw error;
446
+ }
447
+ }
448
+ async function performSwap(params) {
449
+ try {
450
+ console.log('Starting KyberSwap aggregation...', {
451
+ tokenIn: params.tokenIn,
452
+ tokenOut: params.tokenOut,
453
+ amountIn: params.amountIn,
454
+ chainId: params.chainId
455
+ });
456
+ console.log('Fetching best swap route across all DEXs...');
457
+ const routeResponse = await getKyberSwapRoute({
458
+ chainId: params.chainId,
459
+ tokenIn: params.tokenIn,
460
+ tokenOut: params.tokenOut,
461
+ amountIn: params.amountIn,
462
+ feeAmount: params.feeAmount,
463
+ feeReceiver: params.feeReceiver,
464
+ isInBps: params.isInBps,
465
+ chargeFeeBy: params.chargeFeeBy,
466
+ clientId: params.clientId || 'MyWalletApp'
467
+ });
468
+ if (!routeResponse.data || !routeResponse.data.routeSummary) {
469
+ throw new Error('No valid route found for the swap');
470
+ }
471
+ const { routeSummary, routerAddress } = routeResponse.data;
472
+ console.log('✅ Best route found:', {
473
+ tokenIn: routeSummary.tokenIn,
474
+ tokenOut: routeSummary.tokenOut,
475
+ amountIn: routeSummary.amountIn,
476
+ amountOut: routeSummary.amountOut,
477
+ gasEstimate: routeSummary.gas,
478
+ routerAddress,
479
+ dexSources: routeSummary.swaps.map(swap => swap.exchange)
480
+ });
481
+ console.log(' Building executable transaction...');
482
+ const buildResponse = await buildKyberSwapTransaction(params.chainId, routeSummary, params.sender, params.recipient || params.sender, params.slippageTolerance || 50, params.deadline, params.clientId || 'MyWalletApp');
483
+ if (!buildResponse.data || !buildResponse.data.data) {
484
+ throw new Error('Failed to build transaction data');
485
+ }
486
+ const { data: encodedData, gas, routerAddress: finalRouterAddress } = buildResponse.data;
487
+ console.log('✅ Transaction built successfully:', {
488
+ to: finalRouterAddress,
489
+ dataLength: encodedData.length,
490
+ gasEstimate: gas,
491
+ expectedOutput: buildResponse.data.amountOut
492
+ });
493
+ return {
494
+ to: finalRouterAddress,
495
+ data: encodedData,
496
+ gasLimit: gas,
497
+ value: params.tokenIn.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
498
+ ? params.amountIn
499
+ : '0'
500
+ };
501
+ }
502
+ catch (error) {
503
+ console.error('❌ KyberSwap aggregation failed:', error);
504
+ throw new Error(`Swap preparation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
505
+ }
506
+ }
507
+ function getKyberSupportedChains() {
508
+ return { ...KYBER_SUPPORTED_CHAINS };
509
+ }
510
+ function isChainSupportedByKyber(chainId) {
511
+ return chainId in KYBER_SUPPORTED_CHAINS;
512
+ }
513
+ function getNativeTokenAddress() {
514
+ return '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
515
+ }
516
+ function formatAmountToWei(amount, decimals) {
517
+ const amountBN = new bn_js_1.default(amount);
518
+ const multiplier = new bn_js_1.default(10).pow(new bn_js_1.default(decimals));
519
+ return amountBN.mul(multiplier).toString();
520
+ }
521
+ function formatAmountFromWei(amountWei, decimals) {
522
+ const amountBN = new bn_js_1.default(amountWei);
523
+ const divisor = new bn_js_1.default(10).pow(new bn_js_1.default(decimals));
524
+ return amountBN.div(divisor).toString();
525
+ }
526
+ function prepareSwapParams(tokenIn, tokenOut, amountIn, tokenInDecimals, isNativeIn = false, isNativeOut = false) {
527
+ const tokenInAddress = isNativeIn ? getNativeTokenAddress() : tokenIn;
528
+ const tokenOutAddress = isNativeOut ? getNativeTokenAddress() : tokenOut;
529
+ const formattedAmountIn = amountIn.includes('.')
530
+ ? formatAmountToWei(amountIn, tokenInDecimals)
531
+ : amountIn;
532
+ return {
533
+ tokenInAddress,
534
+ tokenOutAddress,
535
+ formattedAmountIn
536
+ };
537
+ }
538
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../utils/evm/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./bip32";
2
+ export * from "./evm/evm";
3
+ export * from "./types";
4
+ export * from "./vm";
5
+ export * from "./evm";
6
+ export * from "./svm";
7
+ export * from "./types";
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bip32"), exports);
18
+ __exportStar(require("./evm/evm"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ __exportStar(require("./vm"), exports);
21
+ __exportStar(require("./evm"), exports);
22
+ __exportStar(require("./svm"), exports);
23
+ __exportStar(require("./types"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,4CAAyB;AACzB,0CAAuB;AACvB,uCAAoB;AACpB,wCAAqB;AACrB,wCAAqB;AAErB,0CAAuB"}
@@ -0,0 +1 @@
1
+ export * from "./svm";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./svm"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/svm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB"}
@@ -0,0 +1,36 @@
1
+ import { Connection, Keypair, PublicKey } from "@solana/web3.js";
2
+ import { VM } from "../vm";
3
+ import { ChainWallet } from "../IChainWallet";
4
+ import { Balance, ChainWalletConfig, TokenInfo, TransactionResult } from "../types";
5
+ import { JupiterQuoteResponse } from "./utils";
6
+ export declare class SVMVM extends VM<PublicKey, Keypair, Connection> {
7
+ derivationPath: string;
8
+ constructor(seed: string);
9
+ static validateAddress(address: PublicKey): boolean;
10
+ static getNativeBalance(address: PublicKey, connection: Connection): Promise<Balance>;
11
+ static getTokenBalance(address: PublicKey, tokenAddress: PublicKey, connection: Connection): Promise<Balance>;
12
+ static signAndSendTransaction: (transaction: import("@solana/web3.js").VersionedTransaction, connection: Connection, signers: Keypair[]) => Promise<string>;
13
+ generatePrivateKey(index: number, seed?: string, mnemonic?: string, derivationPath?: string): {
14
+ privateKey: Keypair;
15
+ index: number;
16
+ };
17
+ static fromMnemonic(seed: string): VM<PublicKey, Keypair, Connection>;
18
+ }
19
+ export declare class SVMChainWallet extends ChainWallet<PublicKey, Keypair, Connection> {
20
+ constructor(config: ChainWalletConfig, privateKey: Keypair, index: number);
21
+ generateAddress(): PublicKey;
22
+ getNativeBalance(): Promise<Balance>;
23
+ getTokenBalance(tokenAddress: PublicKey): Promise<Balance>;
24
+ transferNative(to: PublicKey, amount: number): Promise<TransactionResult>;
25
+ transferToken(token: TokenInfo, to: PublicKey, amount: number): Promise<TransactionResult>;
26
+ swap(fromToken: TokenInfo, toToken: PublicKey, amount: number, slippage?: number): Promise<TransactionResult>;
27
+ getSwapQuote(fromToken: TokenInfo, toToken: PublicKey, amount: number, slippage?: number): Promise<{
28
+ success: boolean;
29
+ inputAmount?: string;
30
+ outputAmount?: string;
31
+ priceImpact?: string;
32
+ routePlan?: JupiterQuoteResponse['routePlan'];
33
+ slippageBps?: number;
34
+ error?: string;
35
+ }>;
36
+ }