solana-meme-sdk 1.0.0
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/README.md +160 -0
- package/dist/batch-executor/accounts.d.ts +141 -0
- package/dist/batch-executor/accounts.d.ts.map +1 -0
- package/dist/batch-executor/accounts.js +98 -0
- package/dist/batch-executor/accounts.js.map +1 -0
- package/dist/batch-executor/batch-executor.d.ts +27 -0
- package/dist/batch-executor/batch-executor.d.ts.map +1 -0
- package/dist/batch-executor/batch-executor.js +286 -0
- package/dist/batch-executor/batch-executor.js.map +1 -0
- package/dist/batch-executor/index.d.ts +4 -0
- package/dist/batch-executor/index.d.ts.map +1 -0
- package/dist/batch-executor/index.js +6 -0
- package/dist/batch-executor/index.js.map +1 -0
- package/dist/batch-executor/types.d.ts +87 -0
- package/dist/batch-executor/types.d.ts.map +1 -0
- package/dist/batch-executor/types.js +42 -0
- package/dist/batch-executor/types.js.map +1 -0
- package/dist/constants.d.ts +151 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +189 -0
- package/dist/constants.js.map +1 -0
- package/dist/dex/blockrazor/client.d.ts +52 -0
- package/dist/dex/blockrazor/client.d.ts.map +1 -0
- package/dist/dex/blockrazor/client.js +97 -0
- package/dist/dex/blockrazor/client.js.map +1 -0
- package/dist/dex/blockrazor/constants.d.ts +35 -0
- package/dist/dex/blockrazor/constants.d.ts.map +1 -0
- package/dist/dex/blockrazor/constants.js +56 -0
- package/dist/dex/blockrazor/constants.js.map +1 -0
- package/dist/dex/blockrazor/geyser.d.ts +129 -0
- package/dist/dex/blockrazor/geyser.d.ts.map +1 -0
- package/dist/dex/blockrazor/geyser.js +531 -0
- package/dist/dex/blockrazor/geyser.js.map +1 -0
- package/dist/dex/blockrazor/index.d.ts +19 -0
- package/dist/dex/blockrazor/index.d.ts.map +1 -0
- package/dist/dex/blockrazor/index.js +24 -0
- package/dist/dex/blockrazor/index.js.map +1 -0
- package/dist/dex/blockrazor/send.d.ts +136 -0
- package/dist/dex/blockrazor/send.d.ts.map +1 -0
- package/dist/dex/blockrazor/send.js +255 -0
- package/dist/dex/blockrazor/send.js.map +1 -0
- package/dist/dex/blockrazor/types.d.ts +192 -0
- package/dist/dex/blockrazor/types.d.ts.map +1 -0
- package/dist/dex/blockrazor/types.js +6 -0
- package/dist/dex/blockrazor/types.js.map +1 -0
- package/dist/dex/index.d.ts +11 -0
- package/dist/dex/index.d.ts.map +1 -0
- package/dist/dex/index.js +17 -0
- package/dist/dex/index.js.map +1 -0
- package/dist/dex/jup/client.d.ts +34 -0
- package/dist/dex/jup/client.d.ts.map +1 -0
- package/dist/dex/jup/client.js +111 -0
- package/dist/dex/jup/client.js.map +1 -0
- package/dist/dex/jup/index.d.ts +17 -0
- package/dist/dex/jup/index.d.ts.map +1 -0
- package/dist/dex/jup/index.js +149 -0
- package/dist/dex/jup/index.js.map +1 -0
- package/dist/dex/jup/legacy.d.ts +624 -0
- package/dist/dex/jup/legacy.d.ts.map +1 -0
- package/dist/dex/jup/legacy.js +417 -0
- package/dist/dex/jup/legacy.js.map +1 -0
- package/dist/dex/jup/lend.d.ts +641 -0
- package/dist/dex/jup/lend.d.ts.map +1 -0
- package/dist/dex/jup/lend.js +604 -0
- package/dist/dex/jup/lend.js.map +1 -0
- package/dist/dex/jup/portfolio.d.ts +363 -0
- package/dist/dex/jup/portfolio.d.ts.map +1 -0
- package/dist/dex/jup/portfolio.js +368 -0
- package/dist/dex/jup/portfolio.js.map +1 -0
- package/dist/dex/jup/price.d.ts +174 -0
- package/dist/dex/jup/price.d.ts.map +1 -0
- package/dist/dex/jup/price.js +226 -0
- package/dist/dex/jup/price.js.map +1 -0
- package/dist/dex/jup/recurring.d.ts +438 -0
- package/dist/dex/jup/recurring.d.ts.map +1 -0
- package/dist/dex/jup/recurring.js +321 -0
- package/dist/dex/jup/recurring.js.map +1 -0
- package/dist/dex/jup/send.d.ts +283 -0
- package/dist/dex/jup/send.d.ts.map +1 -0
- package/dist/dex/jup/send.js +296 -0
- package/dist/dex/jup/send.js.map +1 -0
- package/dist/dex/jup/studio.d.ts +458 -0
- package/dist/dex/jup/studio.d.ts.map +1 -0
- package/dist/dex/jup/studio.js +489 -0
- package/dist/dex/jup/studio.js.map +1 -0
- package/dist/dex/jup/tokens.d.ts +768 -0
- package/dist/dex/jup/tokens.d.ts.map +1 -0
- package/dist/dex/jup/tokens.js +698 -0
- package/dist/dex/jup/tokens.js.map +1 -0
- package/dist/dex/jup/trigger.d.ts +512 -0
- package/dist/dex/jup/trigger.d.ts.map +1 -0
- package/dist/dex/jup/trigger.js +398 -0
- package/dist/dex/jup/trigger.js.map +1 -0
- package/dist/dex/jup/types.d.ts +434 -0
- package/dist/dex/jup/types.d.ts.map +1 -0
- package/dist/dex/jup/types.js +6 -0
- package/dist/dex/jup/types.js.map +1 -0
- package/dist/dex/jup/ultra.d.ts +647 -0
- package/dist/dex/jup/ultra.d.ts.map +1 -0
- package/dist/dex/jup/ultra.js +854 -0
- package/dist/dex/jup/ultra.js.map +1 -0
- package/dist/dex/meteora/client.d.ts +77 -0
- package/dist/dex/meteora/client.d.ts.map +1 -0
- package/dist/dex/meteora/client.js +220 -0
- package/dist/dex/meteora/client.js.map +1 -0
- package/dist/dex/meteora/damm-v1-bundle.d.ts +62 -0
- package/dist/dex/meteora/damm-v1-bundle.d.ts.map +1 -0
- package/dist/dex/meteora/damm-v1-bundle.js +113 -0
- package/dist/dex/meteora/damm-v1-bundle.js.map +1 -0
- package/dist/dex/meteora/damm-v1.d.ts +119 -0
- package/dist/dex/meteora/damm-v1.d.ts.map +1 -0
- package/dist/dex/meteora/damm-v1.js +316 -0
- package/dist/dex/meteora/damm-v1.js.map +1 -0
- package/dist/dex/meteora/damm-v2-bundle.d.ts +83 -0
- package/dist/dex/meteora/damm-v2-bundle.d.ts.map +1 -0
- package/dist/dex/meteora/damm-v2-bundle.js +243 -0
- package/dist/dex/meteora/damm-v2-bundle.js.map +1 -0
- package/dist/dex/meteora/damm-v2.d.ts +173 -0
- package/dist/dex/meteora/damm-v2.d.ts.map +1 -0
- package/dist/dex/meteora/damm-v2.js +633 -0
- package/dist/dex/meteora/damm-v2.js.map +1 -0
- package/dist/dex/meteora/dbc-bundle.d.ts +124 -0
- package/dist/dex/meteora/dbc-bundle.d.ts.map +1 -0
- package/dist/dex/meteora/dbc-bundle.js +305 -0
- package/dist/dex/meteora/dbc-bundle.js.map +1 -0
- package/dist/dex/meteora/dbc.d.ts +193 -0
- package/dist/dex/meteora/dbc.d.ts.map +1 -0
- package/dist/dex/meteora/dbc.js +620 -0
- package/dist/dex/meteora/dbc.js.map +1 -0
- package/dist/dex/meteora/dlmm-bundle.d.ts +40 -0
- package/dist/dex/meteora/dlmm-bundle.d.ts.map +1 -0
- package/dist/dex/meteora/dlmm-bundle.js +190 -0
- package/dist/dex/meteora/dlmm-bundle.js.map +1 -0
- package/dist/dex/meteora/dlmm.d.ts +158 -0
- package/dist/dex/meteora/dlmm.d.ts.map +1 -0
- package/dist/dex/meteora/dlmm.js +672 -0
- package/dist/dex/meteora/dlmm.js.map +1 -0
- package/dist/dex/meteora/index.d.ts +26 -0
- package/dist/dex/meteora/index.d.ts.map +1 -0
- package/dist/dex/meteora/index.js +66 -0
- package/dist/dex/meteora/index.js.map +1 -0
- package/dist/dex/meteora/types.d.ts +788 -0
- package/dist/dex/meteora/types.d.ts.map +1 -0
- package/dist/dex/meteora/types.js +111 -0
- package/dist/dex/meteora/types.js.map +1 -0
- package/dist/dex/orca/index.d.ts +11 -0
- package/dist/dex/orca/index.d.ts.map +1 -0
- package/dist/dex/orca/index.js +17 -0
- package/dist/dex/orca/index.js.map +1 -0
- package/dist/dex/orca/orca-bundle.d.ts +42 -0
- package/dist/dex/orca/orca-bundle.d.ts.map +1 -0
- package/dist/dex/orca/orca-bundle.js +174 -0
- package/dist/dex/orca/orca-bundle.js.map +1 -0
- package/dist/dex/orca/orca.d.ts +66 -0
- package/dist/dex/orca/orca.d.ts.map +1 -0
- package/dist/dex/orca/orca.js +475 -0
- package/dist/dex/orca/orca.js.map +1 -0
- package/dist/dex/orca/types.d.ts +264 -0
- package/dist/dex/orca/types.d.ts.map +1 -0
- package/dist/dex/orca/types.js +39 -0
- package/dist/dex/orca/types.js.map +1 -0
- package/dist/dex/orca/wavebreak-bundle.d.ts +35 -0
- package/dist/dex/orca/wavebreak-bundle.d.ts.map +1 -0
- package/dist/dex/orca/wavebreak-bundle.js +199 -0
- package/dist/dex/orca/wavebreak-bundle.js.map +1 -0
- package/dist/dex/orca/wavebreak-types.d.ts +228 -0
- package/dist/dex/orca/wavebreak-types.d.ts.map +1 -0
- package/dist/dex/orca/wavebreak-types.js +24 -0
- package/dist/dex/orca/wavebreak-types.js.map +1 -0
- package/dist/dex/orca/wavebreak.d.ts +79 -0
- package/dist/dex/orca/wavebreak.d.ts.map +1 -0
- package/dist/dex/orca/wavebreak.js +498 -0
- package/dist/dex/orca/wavebreak.js.map +1 -0
- package/dist/dex/pump/index.d.ts +10 -0
- package/dist/dex/pump/index.d.ts.map +1 -0
- package/dist/dex/pump/index.js +15 -0
- package/dist/dex/pump/index.js.map +1 -0
- package/dist/dex/pump/pump-bundle.d.ts +93 -0
- package/dist/dex/pump/pump-bundle.d.ts.map +1 -0
- package/dist/dex/pump/pump-bundle.js +384 -0
- package/dist/dex/pump/pump-bundle.js.map +1 -0
- package/dist/dex/pump/pump-swap-bundle.d.ts +104 -0
- package/dist/dex/pump/pump-swap-bundle.d.ts.map +1 -0
- package/dist/dex/pump/pump-swap-bundle.js +381 -0
- package/dist/dex/pump/pump-swap-bundle.js.map +1 -0
- package/dist/dex/pump/pump-swap.d.ts +47 -0
- package/dist/dex/pump/pump-swap.d.ts.map +1 -0
- package/dist/dex/pump/pump-swap.js +200 -0
- package/dist/dex/pump/pump-swap.js.map +1 -0
- package/dist/dex/pump/pump.d.ts +36 -0
- package/dist/dex/pump/pump.d.ts.map +1 -0
- package/dist/dex/pump/pump.js +353 -0
- package/dist/dex/pump/pump.js.map +1 -0
- package/dist/dex/pump/types.d.ts +216 -0
- package/dist/dex/pump/types.d.ts.map +1 -0
- package/dist/dex/pump/types.js +6 -0
- package/dist/dex/pump/types.js.map +1 -0
- package/dist/dex/raydium/index.d.ts +9 -0
- package/dist/dex/raydium/index.d.ts.map +1 -0
- package/dist/dex/raydium/index.js +13 -0
- package/dist/dex/raydium/index.js.map +1 -0
- package/dist/dex/raydium/launchlab.d.ts +69 -0
- package/dist/dex/raydium/launchlab.d.ts.map +1 -0
- package/dist/dex/raydium/launchlab.js +211 -0
- package/dist/dex/raydium/launchlab.js.map +1 -0
- package/dist/dex/raydium/raydium-bundle.d.ts +65 -0
- package/dist/dex/raydium/raydium-bundle.d.ts.map +1 -0
- package/dist/dex/raydium/raydium-bundle.js +325 -0
- package/dist/dex/raydium/raydium-bundle.js.map +1 -0
- package/dist/dex/raydium/raydium.d.ts +41 -0
- package/dist/dex/raydium/raydium.d.ts.map +1 -0
- package/dist/dex/raydium/raydium.js +367 -0
- package/dist/dex/raydium/raydium.js.map +1 -0
- package/dist/dex/raydium/types.d.ts +241 -0
- package/dist/dex/raydium/types.d.ts.map +1 -0
- package/dist/dex/raydium/types.js +6 -0
- package/dist/dex/raydium/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/jito/bundle.d.ts +91 -0
- package/dist/jito/bundle.d.ts.map +1 -0
- package/dist/jito/bundle.js +267 -0
- package/dist/jito/bundle.js.map +1 -0
- package/dist/jito/index.d.ts +8 -0
- package/dist/jito/index.d.ts.map +1 -0
- package/dist/jito/index.js +8 -0
- package/dist/jito/index.js.map +1 -0
- package/dist/jito/tip.d.ts +52 -0
- package/dist/jito/tip.d.ts.map +1 -0
- package/dist/jito/tip.js +84 -0
- package/dist/jito/tip.js.map +1 -0
- package/dist/jito/types.d.ts +101 -0
- package/dist/jito/types.d.ts.map +1 -0
- package/dist/jito/types.js +6 -0
- package/dist/jito/types.js.map +1 -0
- package/dist/nozomi/client.d.ts +64 -0
- package/dist/nozomi/client.d.ts.map +1 -0
- package/dist/nozomi/client.js +228 -0
- package/dist/nozomi/client.js.map +1 -0
- package/dist/nozomi/index.d.ts +9 -0
- package/dist/nozomi/index.d.ts.map +1 -0
- package/dist/nozomi/index.js +9 -0
- package/dist/nozomi/index.js.map +1 -0
- package/dist/nozomi/tip.d.ts +51 -0
- package/dist/nozomi/tip.d.ts.map +1 -0
- package/dist/nozomi/tip.js +81 -0
- package/dist/nozomi/tip.js.map +1 -0
- package/dist/nozomi/types.d.ts +97 -0
- package/dist/nozomi/types.d.ts.map +1 -0
- package/dist/nozomi/types.js +6 -0
- package/dist/nozomi/types.js.map +1 -0
- package/dist/token/create-complete.d.ts +116 -0
- package/dist/token/create-complete.d.ts.map +1 -0
- package/dist/token/create-complete.js +236 -0
- package/dist/token/create-complete.js.map +1 -0
- package/dist/token/create-token.d.ts +58 -0
- package/dist/token/create-token.d.ts.map +1 -0
- package/dist/token/create-token.js +231 -0
- package/dist/token/create-token.js.map +1 -0
- package/dist/token/index.d.ts +10 -0
- package/dist/token/index.d.ts.map +1 -0
- package/dist/token/index.js +15 -0
- package/dist/token/index.js.map +1 -0
- package/dist/token/metadata-upload.d.ts +87 -0
- package/dist/token/metadata-upload.d.ts.map +1 -0
- package/dist/token/metadata-upload.js +176 -0
- package/dist/token/metadata-upload.js.map +1 -0
- package/dist/token/metadata.d.ts +93 -0
- package/dist/token/metadata.d.ts.map +1 -0
- package/dist/token/metadata.js +275 -0
- package/dist/token/metadata.js.map +1 -0
- package/dist/token/types.d.ts +154 -0
- package/dist/token/types.d.ts.map +1 -0
- package/dist/token/types.js +6 -0
- package/dist/token/types.js.map +1 -0
- package/dist/types.d.ts +177 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/alt.d.ts +58 -0
- package/dist/utils/alt.d.ts.map +1 -0
- package/dist/utils/alt.js +125 -0
- package/dist/utils/alt.js.map +1 -0
- package/dist/utils/balance.d.ts +161 -0
- package/dist/utils/balance.d.ts.map +1 -0
- package/dist/utils/balance.js +639 -0
- package/dist/utils/balance.js.map +1 -0
- package/dist/utils/batch-swap.d.ts +52 -0
- package/dist/utils/batch-swap.d.ts.map +1 -0
- package/dist/utils/batch-swap.js +286 -0
- package/dist/utils/batch-swap.js.map +1 -0
- package/dist/utils/batch-types.d.ts +90 -0
- package/dist/utils/batch-types.d.ts.map +1 -0
- package/dist/utils/batch-types.js +7 -0
- package/dist/utils/batch-types.js.map +1 -0
- package/dist/utils/connection.d.ts +79 -0
- package/dist/utils/connection.d.ts.map +1 -0
- package/dist/utils/connection.js +169 -0
- package/dist/utils/connection.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +14 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lp-inspect.d.ts +81 -0
- package/dist/utils/lp-inspect.d.ts.map +1 -0
- package/dist/utils/lp-inspect.js +265 -0
- package/dist/utils/lp-inspect.js.map +1 -0
- package/dist/utils/transfer.d.ts +197 -0
- package/dist/utils/transfer.d.ts.map +1 -0
- package/dist/utils/transfer.js +308 -0
- package/dist/utils/transfer.js.map +1 -0
- package/dist/utils/wallet.d.ts +108 -0
- package/dist/utils/wallet.d.ts.map +1 -0
- package/dist/utils/wallet.js +211 -0
- package/dist/utils/wallet.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
2
|
+
import { getAssociatedTokenAddressSync } from '@solana/spl-token';
|
|
3
|
+
import { BATCH_EXECUTOR_PROGRAM_ID, serializeSwapInputs, } from './types.js';
|
|
4
|
+
import { getPumpBuyAccounts, getPumpSellAccounts, buildRemainingAccounts, } from './accounts.js';
|
|
5
|
+
// ==================== Anchor Discriminator ====================
|
|
6
|
+
/**
|
|
7
|
+
* 计算 Anchor 指令的 discriminator
|
|
8
|
+
* SHA256("global:<instruction_name>")[0..8]
|
|
9
|
+
*/
|
|
10
|
+
async function getDiscriminator(instructionName) {
|
|
11
|
+
const data = `global:${instructionName}`;
|
|
12
|
+
const encoder = new TextEncoder();
|
|
13
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', encoder.encode(data));
|
|
14
|
+
return Buffer.from(new Uint8Array(hashBuffer).slice(0, 8));
|
|
15
|
+
}
|
|
16
|
+
// ==================== BatchExecutor Class ====================
|
|
17
|
+
export class BatchExecutor {
|
|
18
|
+
connection;
|
|
19
|
+
payer;
|
|
20
|
+
constructor(connection, payer) {
|
|
21
|
+
this.connection = connection;
|
|
22
|
+
this.payer = payer;
|
|
23
|
+
}
|
|
24
|
+
async createVersionedTx(instructions, signers) {
|
|
25
|
+
const { blockhash } = await this.connection.getLatestBlockhash('confirmed');
|
|
26
|
+
const message = new TransactionMessage({
|
|
27
|
+
payerKey: this.payer.publicKey,
|
|
28
|
+
recentBlockhash: blockhash,
|
|
29
|
+
instructions,
|
|
30
|
+
}).compileToV0Message();
|
|
31
|
+
const tx = new VersionedTransaction(message);
|
|
32
|
+
tx.sign(signers);
|
|
33
|
+
return tx;
|
|
34
|
+
}
|
|
35
|
+
buildSwapInputs(wallets) {
|
|
36
|
+
return wallets.map((w, i) => ({
|
|
37
|
+
walletIndex: i,
|
|
38
|
+
amount: w.amount,
|
|
39
|
+
minAmountOut: w.minAmountOut,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
// ==================== Pump.fun Bonding Curve ====================
|
|
43
|
+
async buildBatchPumpBuyTx(params) {
|
|
44
|
+
const { tokenMint, wallets } = params;
|
|
45
|
+
const accounts = getPumpBuyAccounts(tokenMint);
|
|
46
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
47
|
+
const discriminator = await getDiscriminator('batch_pump_buy');
|
|
48
|
+
const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
|
|
49
|
+
const keys = [
|
|
50
|
+
{ pubkey: accounts.pumpGlobal, isSigner: false, isWritable: false },
|
|
51
|
+
{ pubkey: accounts.pumpFeeRecipient, isSigner: false, isWritable: true },
|
|
52
|
+
{ pubkey: accounts.tokenMint, isSigner: false, isWritable: false },
|
|
53
|
+
{ pubkey: accounts.bondingCurve, isSigner: false, isWritable: true },
|
|
54
|
+
{ pubkey: accounts.bondingCurveTokenAccount, isSigner: false, isWritable: true },
|
|
55
|
+
{ pubkey: accounts.pumpProgram, isSigner: false, isWritable: false },
|
|
56
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
57
|
+
{ pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
|
|
58
|
+
{ pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
|
|
59
|
+
{ pubkey: accounts.rent, isSigner: false, isWritable: false },
|
|
60
|
+
{ pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
|
|
61
|
+
];
|
|
62
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), tokenMint, null, 2);
|
|
63
|
+
keys.push(...remainingAccounts);
|
|
64
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
65
|
+
}
|
|
66
|
+
async buildBatchPumpSellTx(params) {
|
|
67
|
+
const { tokenMint, wallets } = params;
|
|
68
|
+
const accounts = getPumpSellAccounts(tokenMint);
|
|
69
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
70
|
+
const discriminator = await getDiscriminator('batch_pump_sell');
|
|
71
|
+
const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
|
|
72
|
+
const keys = [
|
|
73
|
+
{ pubkey: accounts.pumpGlobal, isSigner: false, isWritable: false },
|
|
74
|
+
{ pubkey: accounts.pumpFeeRecipient, isSigner: false, isWritable: true },
|
|
75
|
+
{ pubkey: accounts.tokenMint, isSigner: false, isWritable: false },
|
|
76
|
+
{ pubkey: accounts.bondingCurve, isSigner: false, isWritable: true },
|
|
77
|
+
{ pubkey: accounts.bondingCurveTokenAccount, isSigner: false, isWritable: true },
|
|
78
|
+
{ pubkey: accounts.pumpProgram, isSigner: false, isWritable: false },
|
|
79
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
80
|
+
{ pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
|
|
81
|
+
];
|
|
82
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), tokenMint, null, 2);
|
|
83
|
+
keys.push(...remainingAccounts);
|
|
84
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
85
|
+
}
|
|
86
|
+
// ==================== PumpSwap (AMM) ====================
|
|
87
|
+
async buildBatchPumpSwapBuyTx(params, accounts) {
|
|
88
|
+
const { wallets, tokenMint } = params;
|
|
89
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
90
|
+
const discriminator = await getDiscriminator('batch_pump_swap_buy');
|
|
91
|
+
const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
|
|
92
|
+
const keys = [
|
|
93
|
+
{ pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
|
|
94
|
+
{ pubkey: accounts.feeRecipient, isSigner: false, isWritable: true },
|
|
95
|
+
{ pubkey: accounts.pool, isSigner: false, isWritable: true },
|
|
96
|
+
{ pubkey: accounts.poolBaseVault, isSigner: false, isWritable: true },
|
|
97
|
+
{ pubkey: accounts.poolQuoteVault, isSigner: false, isWritable: true },
|
|
98
|
+
{ pubkey: accounts.baseMint, isSigner: false, isWritable: false },
|
|
99
|
+
{ pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
|
|
100
|
+
{ pubkey: accounts.pumpSwapProgram, isSigner: false, isWritable: false },
|
|
101
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
102
|
+
{ pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
|
|
103
|
+
{ pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
|
|
104
|
+
{ pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
|
|
105
|
+
];
|
|
106
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.baseMint, accounts.quoteMint, 3);
|
|
107
|
+
keys.push(...remainingAccounts);
|
|
108
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
109
|
+
}
|
|
110
|
+
async buildBatchPumpSwapSellTx(params, accounts) {
|
|
111
|
+
const { wallets, tokenMint } = params;
|
|
112
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
113
|
+
const discriminator = await getDiscriminator('batch_pump_swap_sell');
|
|
114
|
+
const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
|
|
115
|
+
const keys = [
|
|
116
|
+
{ pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
|
|
117
|
+
{ pubkey: accounts.feeRecipient, isSigner: false, isWritable: true },
|
|
118
|
+
{ pubkey: accounts.pool, isSigner: false, isWritable: true },
|
|
119
|
+
{ pubkey: accounts.poolBaseVault, isSigner: false, isWritable: true },
|
|
120
|
+
{ pubkey: accounts.poolQuoteVault, isSigner: false, isWritable: true },
|
|
121
|
+
{ pubkey: accounts.baseMint, isSigner: false, isWritable: false },
|
|
122
|
+
{ pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
|
|
123
|
+
{ pubkey: accounts.pumpSwapProgram, isSigner: false, isWritable: false },
|
|
124
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
125
|
+
{ pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
|
|
126
|
+
{ pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
|
|
127
|
+
{ pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
|
|
128
|
+
];
|
|
129
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.quoteMint, accounts.baseMint, 3);
|
|
130
|
+
keys.push(...remainingAccounts);
|
|
131
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
132
|
+
}
|
|
133
|
+
// ==================== Raydium AMM V4 ====================
|
|
134
|
+
async buildBatchRaydiumSwapTx(params, accounts) {
|
|
135
|
+
const { wallets, swapBaseIn } = params;
|
|
136
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
137
|
+
const discriminator = await getDiscriminator('batch_raydium_swap');
|
|
138
|
+
const swapBaseInBuf = Buffer.alloc(1);
|
|
139
|
+
swapBaseInBuf.writeUInt8(swapBaseIn ? 1 : 0, 0);
|
|
140
|
+
const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), swapBaseInBuf]);
|
|
141
|
+
const keys = [
|
|
142
|
+
{ pubkey: accounts.ammId, isSigner: false, isWritable: true },
|
|
143
|
+
{ pubkey: accounts.ammAuthority, isSigner: false, isWritable: false },
|
|
144
|
+
{ pubkey: accounts.ammOpenOrders, isSigner: false, isWritable: true },
|
|
145
|
+
{ pubkey: accounts.ammTargetOrders, isSigner: false, isWritable: true },
|
|
146
|
+
{ pubkey: accounts.poolCoinVault, isSigner: false, isWritable: true },
|
|
147
|
+
{ pubkey: accounts.poolPcVault, isSigner: false, isWritable: true },
|
|
148
|
+
{ pubkey: accounts.serumProgram, isSigner: false, isWritable: false },
|
|
149
|
+
{ pubkey: accounts.serumMarket, isSigner: false, isWritable: true },
|
|
150
|
+
{ pubkey: accounts.serumBids, isSigner: false, isWritable: true },
|
|
151
|
+
{ pubkey: accounts.serumAsks, isSigner: false, isWritable: true },
|
|
152
|
+
{ pubkey: accounts.serumEventQueue, isSigner: false, isWritable: true },
|
|
153
|
+
{ pubkey: accounts.serumCoinVault, isSigner: false, isWritable: true },
|
|
154
|
+
{ pubkey: accounts.serumPcVault, isSigner: false, isWritable: true },
|
|
155
|
+
{ pubkey: accounts.serumVaultSigner, isSigner: false, isWritable: false },
|
|
156
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
157
|
+
{ pubkey: accounts.raydiumProgram, isSigner: false, isWritable: false },
|
|
158
|
+
];
|
|
159
|
+
const sourceMint = swapBaseIn ? accounts.poolCoinVault : accounts.poolPcVault;
|
|
160
|
+
const destMint = swapBaseIn ? accounts.poolPcVault : accounts.poolCoinVault;
|
|
161
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), sourceMint, destMint, 3);
|
|
162
|
+
keys.push(...remainingAccounts);
|
|
163
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
164
|
+
}
|
|
165
|
+
// ==================== Meteora DLMM ====================
|
|
166
|
+
async buildBatchMeteoraSwapTx(params, accounts, binArrays) {
|
|
167
|
+
const { wallets, swapForY } = params;
|
|
168
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
169
|
+
const discriminator = await getDiscriminator('batch_meteora_swap');
|
|
170
|
+
const swapForYBuf = Buffer.alloc(1);
|
|
171
|
+
swapForYBuf.writeUInt8(swapForY ? 1 : 0, 0);
|
|
172
|
+
const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), swapForYBuf]);
|
|
173
|
+
const keys = [
|
|
174
|
+
{ pubkey: accounts.lbPair, isSigner: false, isWritable: true },
|
|
175
|
+
{ pubkey: accounts.binArrayBitmapExtension || accounts.meteoraProgram, isSigner: false, isWritable: false },
|
|
176
|
+
{ pubkey: accounts.reserveX, isSigner: false, isWritable: true },
|
|
177
|
+
{ pubkey: accounts.reserveY, isSigner: false, isWritable: true },
|
|
178
|
+
{ pubkey: accounts.tokenXMint, isSigner: false, isWritable: false },
|
|
179
|
+
{ pubkey: accounts.tokenYMint, isSigner: false, isWritable: false },
|
|
180
|
+
{ pubkey: accounts.oracle, isSigner: false, isWritable: true },
|
|
181
|
+
{ pubkey: accounts.hostFeeIn || accounts.meteoraProgram, isSigner: false, isWritable: true },
|
|
182
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
183
|
+
{ pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
|
|
184
|
+
{ pubkey: accounts.meteoraProgram, isSigner: false, isWritable: false },
|
|
185
|
+
];
|
|
186
|
+
const sourceMint = swapForY ? accounts.reserveX : accounts.reserveY; // Should be user token account mint
|
|
187
|
+
const destMint = swapForY ? accounts.reserveY : accounts.reserveX;
|
|
188
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.tokenXMint, // Actually we need to know if we're swapping X for Y
|
|
189
|
+
accounts.tokenYMint, 4, (wallet) => [
|
|
190
|
+
getAssociatedTokenAddressSync(swapForY ? accounts.tokenXMint : accounts.tokenYMint, wallet),
|
|
191
|
+
getAssociatedTokenAddressSync(swapForY ? accounts.tokenYMint : accounts.tokenXMint, wallet),
|
|
192
|
+
binArrays[0] // Simplified
|
|
193
|
+
]);
|
|
194
|
+
keys.push(...remainingAccounts);
|
|
195
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
196
|
+
}
|
|
197
|
+
// ==================== Orca Whirlpool ====================
|
|
198
|
+
async buildBatchOrcaSwapTx(params, accounts, aToB, sqrtPriceLimit) {
|
|
199
|
+
const { wallets } = params;
|
|
200
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
201
|
+
const discriminator = await getDiscriminator('batch_orca_swap');
|
|
202
|
+
const aToBBuf = Buffer.alloc(1);
|
|
203
|
+
aToBBuf.writeUInt8(aToB ? 1 : 0, 0);
|
|
204
|
+
const priceLimitBuf = Buffer.alloc(16); // u128
|
|
205
|
+
priceLimitBuf.writeBigUInt64LE(sqrtPriceLimit & BigInt('0xFFFFFFFFFFFFFFFF'), 0);
|
|
206
|
+
priceLimitBuf.writeBigUInt64LE(sqrtPriceLimit >> BigInt(64), 8);
|
|
207
|
+
const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), aToBBuf, priceLimitBuf]);
|
|
208
|
+
const keys = [
|
|
209
|
+
{ pubkey: accounts.whirlpool, isSigner: false, isWritable: true },
|
|
210
|
+
{ pubkey: accounts.tokenVaultA, isSigner: false, isWritable: true },
|
|
211
|
+
{ pubkey: accounts.tokenVaultB, isSigner: false, isWritable: true },
|
|
212
|
+
{ pubkey: accounts.tickArray0, isSigner: false, isWritable: true },
|
|
213
|
+
{ pubkey: accounts.tickArray1, isSigner: false, isWritable: true },
|
|
214
|
+
{ pubkey: accounts.tickArray2, isSigner: false, isWritable: true },
|
|
215
|
+
{ pubkey: accounts.oracle, isSigner: false, isWritable: false },
|
|
216
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
217
|
+
{ pubkey: accounts.orcaProgram, isSigner: false, isWritable: false },
|
|
218
|
+
];
|
|
219
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.tokenVaultA, accounts.tokenVaultB, 3);
|
|
220
|
+
keys.push(...remainingAccounts);
|
|
221
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
222
|
+
}
|
|
223
|
+
// ==================== Raydium LaunchLab ====================
|
|
224
|
+
async buildBatchLaunchLabBuyTx(params, accounts) {
|
|
225
|
+
const { wallets } = params;
|
|
226
|
+
const swapInputs = this.buildSwapInputs(wallets);
|
|
227
|
+
const discriminator = await getDiscriminator('batch_launchlab_buy');
|
|
228
|
+
const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs)]);
|
|
229
|
+
const keys = [
|
|
230
|
+
{ pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
|
|
231
|
+
{ pubkey: accounts.feeConfig || accounts.launchlabProgram, isSigner: false, isWritable: false },
|
|
232
|
+
{ pubkey: accounts.poolState, isSigner: false, isWritable: true },
|
|
233
|
+
{ pubkey: accounts.baseMint, isSigner: false, isWritable: false },
|
|
234
|
+
{ pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
|
|
235
|
+
{ pubkey: accounts.baseVault, isSigner: false, isWritable: true },
|
|
236
|
+
{ pubkey: accounts.quoteVault, isSigner: false, isWritable: true },
|
|
237
|
+
{ pubkey: accounts.protocolFeeRecipient, isSigner: false, isWritable: true },
|
|
238
|
+
{ pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
|
|
239
|
+
{ pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
|
|
240
|
+
{ pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
|
|
241
|
+
{ pubkey: accounts.launchlabProgram, isSigner: false, isWritable: false },
|
|
242
|
+
];
|
|
243
|
+
const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.baseMint, accounts.quoteMint, 3);
|
|
244
|
+
keys.push(...remainingAccounts);
|
|
245
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
246
|
+
}
|
|
247
|
+
// ==================== Jupiter Aggregator ====================
|
|
248
|
+
async buildBatchJupiterSwapTx(wallets, jupAccounts) {
|
|
249
|
+
const discriminator = await getDiscriminator('batch_jupiter_swap');
|
|
250
|
+
const buffers = [discriminator];
|
|
251
|
+
const countBuf = Buffer.alloc(4);
|
|
252
|
+
countBuf.writeUInt32LE(wallets.length, 0);
|
|
253
|
+
buffers.push(countBuf);
|
|
254
|
+
for (let i = 0; i < wallets.length; i++) {
|
|
255
|
+
const idxBuf = Buffer.alloc(1);
|
|
256
|
+
idxBuf.writeUInt8(i, 0);
|
|
257
|
+
const lenBuf = Buffer.alloc(4);
|
|
258
|
+
lenBuf.writeUInt32LE(wallets[i].instructionData.length, 0);
|
|
259
|
+
buffers.push(idxBuf, lenBuf, wallets[i].instructionData);
|
|
260
|
+
}
|
|
261
|
+
const data = Buffer.concat(buffers);
|
|
262
|
+
const keys = [
|
|
263
|
+
{ pubkey: new PublicKey('JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'), isSigner: false, isWritable: false },
|
|
264
|
+
...jupAccounts,
|
|
265
|
+
];
|
|
266
|
+
return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
|
|
267
|
+
}
|
|
268
|
+
// ==================== Shortcuts ====================
|
|
269
|
+
async executeBatchPumpBuy(params) {
|
|
270
|
+
return this.sendAndConfirm(await this.buildBatchPumpBuyTx(params));
|
|
271
|
+
}
|
|
272
|
+
async executeBatchPumpSell(params) {
|
|
273
|
+
return this.sendAndConfirm(await this.buildBatchPumpSellTx(params));
|
|
274
|
+
}
|
|
275
|
+
// ==================== Utility Methods ====================
|
|
276
|
+
async sendAndConfirm(tx) {
|
|
277
|
+
const signature = await this.connection.sendTransaction(tx, {
|
|
278
|
+
skipPreflight: false,
|
|
279
|
+
maxRetries: 3,
|
|
280
|
+
});
|
|
281
|
+
await this.connection.confirmTransaction(signature, 'confirmed');
|
|
282
|
+
return signature;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
export default BatchExecutor;
|
|
286
|
+
//# sourceMappingURL=batch-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-executor.js","sourceRoot":"","sources":["../../src/batch-executor/batch-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/batch-executor/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/batch-executor/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,iFAAiF;AAEjF,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
export declare const BATCH_EXECUTOR_PROGRAM_ID: PublicKey;
|
|
3
|
+
export declare const BATCH_PUMP_PROGRAM_ID: PublicKey;
|
|
4
|
+
export declare const BATCH_PUMP_SWAP_PROGRAM_ID: PublicKey;
|
|
5
|
+
export declare const BATCH_RAYDIUM_AMM_PROGRAM_ID: PublicKey;
|
|
6
|
+
export declare const BATCH_METEORA_DLMM_PROGRAM_ID: PublicKey;
|
|
7
|
+
export declare const BATCH_ORCA_WHIRLPOOL_PROGRAM_ID: PublicKey;
|
|
8
|
+
export declare const BATCH_JUPITER_PROGRAM_ID: PublicKey;
|
|
9
|
+
export declare const BATCH_RAYDIUM_LAUNCHLAB_PROGRAM_ID: PublicKey;
|
|
10
|
+
/**
|
|
11
|
+
* 紧凑的 Swap 输入结构 (17 bytes)
|
|
12
|
+
* 与链上 SwapInput 结构对应
|
|
13
|
+
*/
|
|
14
|
+
export interface SwapInput {
|
|
15
|
+
/** 钱包在 remaining_accounts 中的起始 index */
|
|
16
|
+
walletIndex: number;
|
|
17
|
+
/** 交易金额 (lamports for buy, token units for sell) */
|
|
18
|
+
amount: bigint;
|
|
19
|
+
/** 最小输出金额 (滑点保护) */
|
|
20
|
+
minAmountOut: bigint;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 序列化 SwapInput 为 17 bytes Buffer
|
|
24
|
+
*/
|
|
25
|
+
export declare function serializeSwapInput(input: SwapInput): Buffer;
|
|
26
|
+
/**
|
|
27
|
+
* 序列化 SwapInput 数组
|
|
28
|
+
* 格式: [len: u32 LE] + [SwapInput × N]
|
|
29
|
+
*/
|
|
30
|
+
export declare function serializeSwapInputs(inputs: SwapInput[]): Buffer;
|
|
31
|
+
export interface WalletSwapInfo {
|
|
32
|
+
/** 钱包 Keypair */
|
|
33
|
+
wallet: import('@solana/web3.js').Keypair;
|
|
34
|
+
/** 交易金额 */
|
|
35
|
+
amount: bigint;
|
|
36
|
+
/** 滑点保护 (最小输出) */
|
|
37
|
+
minAmountOut: bigint;
|
|
38
|
+
}
|
|
39
|
+
export interface BatchPumpBuyParams {
|
|
40
|
+
tokenMint: PublicKey;
|
|
41
|
+
wallets: WalletSwapInfo[];
|
|
42
|
+
}
|
|
43
|
+
export interface BatchPumpSellParams {
|
|
44
|
+
tokenMint: PublicKey;
|
|
45
|
+
wallets: WalletSwapInfo[];
|
|
46
|
+
}
|
|
47
|
+
export interface BatchPumpSwapBuyParams {
|
|
48
|
+
tokenMint: PublicKey;
|
|
49
|
+
poolAddress: PublicKey;
|
|
50
|
+
wallets: WalletSwapInfo[];
|
|
51
|
+
}
|
|
52
|
+
export interface BatchPumpSwapSellParams {
|
|
53
|
+
tokenMint: PublicKey;
|
|
54
|
+
poolAddress: PublicKey;
|
|
55
|
+
wallets: WalletSwapInfo[];
|
|
56
|
+
}
|
|
57
|
+
export interface BatchRaydiumSwapParams {
|
|
58
|
+
ammId: PublicKey;
|
|
59
|
+
swapBaseIn: boolean;
|
|
60
|
+
wallets: WalletSwapInfo[];
|
|
61
|
+
}
|
|
62
|
+
export interface BatchMeteoraSwapParams {
|
|
63
|
+
lbPair: PublicKey;
|
|
64
|
+
swapForY: boolean;
|
|
65
|
+
wallets: WalletSwapInfo[];
|
|
66
|
+
}
|
|
67
|
+
export interface BatchOrcaSwapParams {
|
|
68
|
+
whirlpool: PublicKey;
|
|
69
|
+
aToB: boolean;
|
|
70
|
+
wallets: WalletSwapInfo[];
|
|
71
|
+
}
|
|
72
|
+
export interface BatchLaunchLabBuyParams {
|
|
73
|
+
wallets: WalletSwapInfo[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Jupiter 专用的输入结构
|
|
77
|
+
*/
|
|
78
|
+
export interface JupiterSwapInputSnapshot {
|
|
79
|
+
walletIndex: number;
|
|
80
|
+
/** 预先构建好的 Jupiter 指令数据 (opaque buffer) */
|
|
81
|
+
instructionData: Buffer;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 序列化 JupiterSwapInputSnapshot
|
|
85
|
+
*/
|
|
86
|
+
export declare function serializeJupiterSwapInput(input: JupiterSwapInputSnapshot): Buffer;
|
|
87
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/batch-executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,eAAO,MAAM,yBAAyB,WAAgE,CAAC;AAGvG,eAAO,MAAM,qBAAqB,WAA+D,CAAC;AAClG,eAAO,MAAM,0BAA0B,WAA+D,CAAC;AACvG,eAAO,MAAM,4BAA4B,WAAgE,CAAC;AAC1G,eAAO,MAAM,6BAA6B,WAA+D,CAAC;AAC1G,eAAO,MAAM,+BAA+B,WAA+D,CAAC;AAC5G,eAAO,MAAM,wBAAwB,WAA+D,CAAC;AACrG,eAAO,MAAM,kCAAkC,WAA+D,CAAC;AAI/G;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAM/D;AAID,MAAM,WAAW,cAAc;IAC3B,iBAAiB;IACjB,MAAM,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;IAC1C,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAMjF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
// ==================== Program IDs ====================
|
|
3
|
+
export const BATCH_EXECUTOR_PROGRAM_ID = new PublicKey('7xVAbH6ooYpPyKWDpbggGYo6ngo9yK9tJnauGTofDU3H');
|
|
4
|
+
// DEX Program IDs used in CPI (with BATCH_ prefix to avoid conflicts)
|
|
5
|
+
export const BATCH_PUMP_PROGRAM_ID = new PublicKey('6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P');
|
|
6
|
+
export const BATCH_PUMP_SWAP_PROGRAM_ID = new PublicKey('pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA');
|
|
7
|
+
export const BATCH_RAYDIUM_AMM_PROGRAM_ID = new PublicKey('675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8');
|
|
8
|
+
export const BATCH_METEORA_DLMM_PROGRAM_ID = new PublicKey('LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo');
|
|
9
|
+
export const BATCH_ORCA_WHIRLPOOL_PROGRAM_ID = new PublicKey('whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc');
|
|
10
|
+
export const BATCH_JUPITER_PROGRAM_ID = new PublicKey('JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4');
|
|
11
|
+
export const BATCH_RAYDIUM_LAUNCHLAB_PROGRAM_ID = new PublicKey('LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj');
|
|
12
|
+
/**
|
|
13
|
+
* 序列化 SwapInput 为 17 bytes Buffer
|
|
14
|
+
*/
|
|
15
|
+
export function serializeSwapInput(input) {
|
|
16
|
+
const buffer = Buffer.alloc(17);
|
|
17
|
+
buffer.writeUInt8(input.walletIndex, 0);
|
|
18
|
+
buffer.writeBigUInt64LE(input.amount, 1);
|
|
19
|
+
buffer.writeBigUInt64LE(input.minAmountOut, 9);
|
|
20
|
+
return buffer;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 序列化 SwapInput 数组
|
|
24
|
+
* 格式: [len: u32 LE] + [SwapInput × N]
|
|
25
|
+
*/
|
|
26
|
+
export function serializeSwapInputs(inputs) {
|
|
27
|
+
const lenBuffer = Buffer.alloc(4);
|
|
28
|
+
lenBuffer.writeUInt32LE(inputs.length, 0);
|
|
29
|
+
const dataBuffers = inputs.map(serializeSwapInput);
|
|
30
|
+
return Buffer.concat([lenBuffer, ...dataBuffers]);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 序列化 JupiterSwapInputSnapshot
|
|
34
|
+
*/
|
|
35
|
+
export function serializeJupiterSwapInput(input) {
|
|
36
|
+
const idxBuf = Buffer.alloc(1);
|
|
37
|
+
idxBuf.writeUInt8(input.walletIndex, 0);
|
|
38
|
+
const lenBuf = Buffer.alloc(4);
|
|
39
|
+
lenBuf.writeUInt32LE(input.instructionData.length, 0);
|
|
40
|
+
return Buffer.concat([idxBuf, lenBuf, input.instructionData]);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/batch-executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wDAAwD;AAExD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAEvG,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AACvG,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC5G,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AACrG,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAiB/G;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AACtD,CAAC;AAoED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA+B;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana SDK 常量配置
|
|
3
|
+
* @module sol/constants
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Nozomi 配置
|
|
7
|
+
* Temporal Nozomi 交易加速服务
|
|
8
|
+
*/
|
|
9
|
+
export declare const NOZOMI_CONFIG: {
|
|
10
|
+
/** Tip 账户列表(随机选择一个) */
|
|
11
|
+
readonly TIP_ACCOUNTS: readonly ["TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq", "noz3jAjPiHuBPqiSPkkugaJDkJscPuRhYnSpbi8UvC4", "noz3str9KXfpKknefHji8L1mPgimezaiUyCHYMDv1GE", "noz6uoYCDijhu1V7cutCpwxNiSovEwLdRHPwmgCGDNo", "noz9EPNcT7WH6Sou3sr3GGjHQYVkN3DNirpbvDkv9YJ", "nozc5yT15LazbLTFVZzoNZCwjh3yUtW86LoUyqsBu4L", "nozFrhfnNGoyqwVuwPAW4aaGqempx4PU6g6D9CJMv7Z", "nozievPk7HyK1Rqy1MPJwVQ7qQg2QoJGyP71oeDwbsu", "noznbgwYnBLDHu8wcQVCEw6kDrXkPdKkydGJGNXGvL7", "nozNVWs5N8mgzuD3qigrCG2UoKxZttxzZ85pvAQVrbP", "nozpEGbwx4BcGp6pvEdAh1JoC2CQGZdU6HbNP1v2p6P", "nozrhjhkCr3zXT3BiT4WCodYCUFeQvcdUkM7MqhKqge", "nozrwQtWhEdrA6W8dkbt9gnUaMs52PdAv5byipnadq3", "nozUacTVWub3cL4mJmGCYjKZTnE9RbdY5AP46iQgbPJ", "nozWCyTPppJjRuw2fpzDhhWbW355fzosWSzrrMYB1Qk", "nozWNju6dY353eMkMqURqwQEoM3SFgEKC6psLCSfUne", "nozxNBgWohjR75vdspfxR5H9ceC7XXH99xpxhVGt3Bb"];
|
|
12
|
+
/** 最小 Tip(lamports)- 0.001 SOL */
|
|
13
|
+
readonly MIN_TIP_LAMPORTS: 1000000;
|
|
14
|
+
/** 默认 Tip(lamports)- 0.001 SOL */
|
|
15
|
+
readonly DEFAULT_TIP_LAMPORTS: 1000000;
|
|
16
|
+
/** 建议的 Priority Fee(microlamports) */
|
|
17
|
+
readonly RECOMMENDED_PRIORITY_FEE: 1000000;
|
|
18
|
+
/** 区域端点 */
|
|
19
|
+
readonly REGIONS: {
|
|
20
|
+
readonly auto: "nozomi.temporal.xyz";
|
|
21
|
+
readonly pit: "pit1.nozomi.temporal.xyz";
|
|
22
|
+
readonly tyo: "tyo1.nozomi.temporal.xyz";
|
|
23
|
+
readonly sgp: "sgp1.nozomi.temporal.xyz";
|
|
24
|
+
readonly ewr: "ewr1.nozomi.temporal.xyz";
|
|
25
|
+
readonly ams: "ams1.nozomi.temporal.xyz";
|
|
26
|
+
readonly fra: "fra2.nozomi.temporal.xyz";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Jito 配置
|
|
31
|
+
*
|
|
32
|
+
* 注意:BLOCK_ENGINE_URL 需要由前端传入,不在 SDK 中写死
|
|
33
|
+
*/
|
|
34
|
+
export declare const JITO_CONFIG: {
|
|
35
|
+
/** Tip 账户列表(随机选择一个)- 这些是 Jito 官方账户,固定不变 */
|
|
36
|
+
readonly TIP_ACCOUNTS: readonly ["96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5", "HFqU5x63VTqvQss8hp11i4bVmkzdNaVB6PYjYgNd4W5U", "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY", "ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49", "DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh", "ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt", "DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL", "3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT"];
|
|
37
|
+
/** 最小 Tip(lamports) */
|
|
38
|
+
readonly MIN_TIP_LAMPORTS: 1000;
|
|
39
|
+
/** 默认 Tip(lamports)- 0.00001 SOL */
|
|
40
|
+
readonly DEFAULT_TIP_LAMPORTS: 10000;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Solana 系统程序地址
|
|
44
|
+
*/
|
|
45
|
+
export declare const SYSTEM_PROGRAMS: {
|
|
46
|
+
/** Token Program */
|
|
47
|
+
readonly TOKEN_PROGRAM: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
48
|
+
/** Token-2022 Program */
|
|
49
|
+
readonly TOKEN_2022_PROGRAM: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
50
|
+
/** Associated Token Account Program */
|
|
51
|
+
readonly ATA_PROGRAM: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
|
|
52
|
+
/** Metaplex Token Metadata Program */
|
|
53
|
+
readonly METADATA_PROGRAM: "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s";
|
|
54
|
+
/** System Program */
|
|
55
|
+
readonly SYSTEM_PROGRAM: "11111111111111111111111111111111";
|
|
56
|
+
/** Rent Sysvar */
|
|
57
|
+
readonly RENT_SYSVAR: "SysvarRent111111111111111111111111111111111";
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Pump.fun 程序地址
|
|
61
|
+
*/
|
|
62
|
+
export declare const PUMP_PROGRAMS: {
|
|
63
|
+
/** Pump Program ID */
|
|
64
|
+
readonly PUMP_PROGRAM: "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";
|
|
65
|
+
/** Pump Swap Program ID */
|
|
66
|
+
readonly PUMP_SWAP_PROGRAM: "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA";
|
|
67
|
+
/** Global Config */
|
|
68
|
+
readonly GLOBAL_CONFIG: "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf";
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Raydium 程序地址
|
|
72
|
+
*/
|
|
73
|
+
export declare const RAYDIUM_PROGRAMS: {
|
|
74
|
+
/** AMM Program ID */
|
|
75
|
+
readonly AMM_PROGRAM: "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
|
|
76
|
+
/** CLMM Program ID */
|
|
77
|
+
readonly CLMM_PROGRAM: "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
|
|
78
|
+
/** LaunchLab Program ID */
|
|
79
|
+
readonly LAUNCHLAB_PROGRAM: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj";
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Orca 程序地址
|
|
83
|
+
*/
|
|
84
|
+
export declare const ORCA_PROGRAMS: {
|
|
85
|
+
/** Whirlpool Program ID */
|
|
86
|
+
readonly WHIRLPOOL_PROGRAM: "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Meteora 程序地址
|
|
90
|
+
*/
|
|
91
|
+
export declare const METEORA_PROGRAMS: {
|
|
92
|
+
/** DLMM Program ID */
|
|
93
|
+
readonly DLMM_PROGRAM: "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo";
|
|
94
|
+
/** DAMM v2 Program ID */
|
|
95
|
+
readonly DAMM_V2_PROGRAM: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG";
|
|
96
|
+
/** DBC Program ID */
|
|
97
|
+
readonly DBC_PROGRAM: "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN";
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* 常用代币地址
|
|
101
|
+
*/
|
|
102
|
+
export declare const TOKENS: {
|
|
103
|
+
/** Wrapped SOL */
|
|
104
|
+
readonly SOL: "So11111111111111111111111111111111111111112";
|
|
105
|
+
/** USDC */
|
|
106
|
+
readonly USDC: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
107
|
+
/** USDT */
|
|
108
|
+
readonly USDT: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB";
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* 交易默认配置
|
|
112
|
+
*/
|
|
113
|
+
export declare const TX_CONFIG: {
|
|
114
|
+
/** 默认滑点 1% */
|
|
115
|
+
readonly DEFAULT_SLIPPAGE: 1;
|
|
116
|
+
/** 最大滑点 50% */
|
|
117
|
+
readonly MAX_SLIPPAGE: 50;
|
|
118
|
+
/** 计算单元限制 */
|
|
119
|
+
readonly COMPUTE_UNIT_LIMIT: 200000;
|
|
120
|
+
/** 计算单元价格(microlamports) */
|
|
121
|
+
readonly COMPUTE_UNIT_PRICE: 50000;
|
|
122
|
+
/** 确认超时(毫秒) */
|
|
123
|
+
readonly CONFIRMATION_TIMEOUT: 60000;
|
|
124
|
+
/** 默认 commitment */
|
|
125
|
+
readonly DEFAULT_COMMITMENT: "confirmed";
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* 账户大小(用于计算租金)
|
|
129
|
+
*/
|
|
130
|
+
export declare const ACCOUNT_SIZE: {
|
|
131
|
+
/** Mint 账户大小 */
|
|
132
|
+
readonly MINT: 82;
|
|
133
|
+
/** Token 账户大小 */
|
|
134
|
+
readonly TOKEN_ACCOUNT: 165;
|
|
135
|
+
/** Metadata 账户大小(近似值) */
|
|
136
|
+
readonly METADATA: 679;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* SOL 单位换算
|
|
140
|
+
*/
|
|
141
|
+
export declare const SOL_DECIMALS = 9;
|
|
142
|
+
export declare const LAMPORTS_PER_SOL = 1000000000;
|
|
143
|
+
/**
|
|
144
|
+
* 将 SOL 转换为 lamports
|
|
145
|
+
*/
|
|
146
|
+
export declare function solToLamports(sol: number): bigint;
|
|
147
|
+
/**
|
|
148
|
+
* 将 lamports 转换为 SOL
|
|
149
|
+
*/
|
|
150
|
+
export declare function lamportsToSol(lamports: bigint): number;
|
|
151
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,eAAO,MAAM,aAAa;IACxB,uBAAuB;;IAqBvB,kCAAkC;;IAGlC,kCAAkC;;IAGlC,sCAAsC;;IAGtC,WAAW;;;;;;;;;;CAUH,CAAC;AAIX;;;;GAIG;AACH,eAAO,MAAM,WAAW;IACtB,2CAA2C;;IAY3C,uBAAuB;;IAGvB,oCAAoC;;CAE5B,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B,oBAAoB;;IAEpB,yBAAyB;;IAEzB,uCAAuC;;IAEvC,sCAAsC;;IAEtC,qBAAqB;;IAErB,kBAAkB;;CAEV,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,sBAAsB;;IAEtB,2BAA2B;;IAE3B,oBAAoB;;CAEZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,qBAAqB;;IAErB,sBAAsB;;IAEtB,2BAA2B;;CAEnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,2BAA2B;;CAEnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,sBAAsB;;IAEtB,yBAAyB;;IAEzB,qBAAqB;;CAEb,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,kBAAkB;;IAElB,WAAW;;IAEX,WAAW;;CAEH,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,cAAc;;IAEd,eAAe;;IAEf,aAAa;;IAEb,4BAA4B;;IAE5B,eAAe;;IAEf,oBAAoB;;CAEZ,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,gBAAgB;;IAEhB,iBAAiB;;IAEjB,yBAAyB;;CAEjB,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,gBAAgB,aAAgB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|