sol-parser-sdk-nodejs 0.4.0 → 0.5.5
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 +22 -4
- package/README_CN.md +22 -4
- package/dist/accounts/mod.d.ts +1 -0
- package/dist/accounts/mod.js +53 -6
- package/dist/accounts/pumpfun.d.ts +16 -0
- package/dist/accounts/pumpfun.js +538 -0
- package/dist/accounts/rust_aliases.d.ts +1 -0
- package/dist/accounts/rust_aliases.js +3 -1
- package/dist/core/account_dispatcher_rpc.js +5 -26
- package/dist/core/account_fill_meteora.d.ts +1 -2
- package/dist/core/account_fill_meteora.js +0 -2
- package/dist/core/account_fill_pumpfun.js +92 -13
- package/dist/core/account_fill_pumpswap.js +50 -0
- package/dist/core/account_fill_raydium_launchlab.d.ts +4 -0
- package/dist/core/account_fill_raydium_launchlab.js +20 -0
- package/dist/core/dex_event.d.ts +283 -17
- package/dist/core/pumpfun_fee_enrich.d.ts +5 -0
- package/dist/core/pumpfun_fee_enrich.js +131 -0
- package/dist/core/unified_parser.js +2 -0
- package/dist/grpc/client.d.ts +26 -1
- package/dist/grpc/client.js +279 -0
- package/dist/grpc/log_instr_dedup.d.ts +2 -0
- package/dist/grpc/log_instr_dedup.js +378 -0
- package/dist/grpc/order_buffer.d.ts +27 -0
- package/dist/grpc/order_buffer.js +166 -0
- package/dist/grpc/program_ids.d.ts +5 -3
- package/dist/grpc/program_ids.js +12 -5
- package/dist/grpc/types.d.ts +17 -6
- package/dist/grpc/types.js +265 -153
- package/dist/grpc/yellowstone_parse.d.ts +3 -1
- package/dist/grpc/yellowstone_parse.js +13 -10
- package/dist/index.d.ts +9 -7
- package/dist/index.js +33 -7
- package/dist/instr/meteora_damm_ix.js +4 -1
- package/dist/instr/meteora_dlmm_ix.d.ts +2 -0
- package/dist/instr/meteora_dlmm_ix.js +134 -0
- package/dist/instr/meteora_pools_ix.d.ts +2 -0
- package/dist/instr/meteora_pools_ix.js +78 -0
- package/dist/instr/mod.d.ts +4 -1
- package/dist/instr/mod.js +45 -18
- package/dist/instr/program_ids.d.ts +1 -5
- package/dist/instr/program_ids.js +4 -6
- package/dist/instr/pump_fees_ix.d.ts +2 -0
- package/dist/instr/pump_fees_ix.js +166 -0
- package/dist/instr/pumpfun_ix.js +272 -1
- package/dist/instr/pumpswap_ix.js +36 -2
- package/dist/instr/raydium_clmm_ix.js +73 -52
- package/dist/instr/raydium_launchlab_ix.d.ts +8 -0
- package/dist/instr/raydium_launchlab_ix.js +125 -0
- package/dist/instr/rust_aliases.d.ts +3 -0
- package/dist/instr/rust_aliases.js +7 -1
- package/dist/logs/discriminator_lut.d.ts +1 -1
- package/dist/logs/discriminator_lut.js +2 -0
- package/dist/logs/optimized_matcher.js +130 -25
- package/dist/logs/program_log_discriminators.d.ts +10 -0
- package/dist/logs/program_log_discriminators.js +10 -0
- package/dist/logs/pump.d.ts +2 -0
- package/dist/logs/pump.js +122 -2
- package/dist/logs/pump_amm.js +1 -1
- package/dist/logs/pump_fees.d.ts +23 -0
- package/dist/logs/pump_fees.js +364 -0
- package/dist/logs/raydium_launchlab.d.ts +10 -0
- package/dist/logs/raydium_launchlab.js +84 -0
- package/dist/rpc_transaction.d.ts +2 -0
- package/dist/rpc_transaction.js +14 -6
- package/dist/shredstream/client.d.ts +4 -1
- package/dist/shredstream/client.js +18 -14
- package/dist/shredstream/index.d.ts +1 -1
- package/dist/shredstream/index.js +1 -1
- package/dist/shredstream/instruction_parse.d.ts +3 -3
- package/dist/shredstream/instruction_parse.js +38 -13
- package/dist/util/market.d.ts +18 -0
- package/dist/util/market.js +54 -0
- package/package.json +1 -1
|
@@ -6,10 +6,14 @@ const program_log_discriminators_js_1 = require("../logs/program_log_discriminat
|
|
|
6
6
|
const utils_js_1 = require("./utils.js");
|
|
7
7
|
const Z = (0, dex_event_js_1.defaultPubkey)();
|
|
8
8
|
const DISC = {
|
|
9
|
-
SWAP: program_log_discriminators_js_1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
SWAP: (0, program_log_discriminators_js_1.u64leDiscriminator)([248, 198, 158, 145, 225, 117, 135, 200]),
|
|
10
|
+
SWAP_V2: (0, program_log_discriminators_js_1.u64leDiscriminator)([43, 4, 237, 11, 26, 201, 30, 98]),
|
|
11
|
+
INCREASE_LIQUIDITY_V2: (0, program_log_discriminators_js_1.u64leDiscriminator)([133, 29, 89, 223, 69, 238, 176, 10]),
|
|
12
|
+
DECREASE_LIQUIDITY_V2: (0, program_log_discriminators_js_1.u64leDiscriminator)([58, 127, 188, 62, 79, 82, 196, 96]),
|
|
13
|
+
CREATE_POOL: (0, program_log_discriminators_js_1.u64leDiscriminator)([233, 146, 209, 142, 207, 104, 64, 188]),
|
|
14
|
+
OPEN_POSITION_V2: (0, program_log_discriminators_js_1.u64leDiscriminator)([77, 184, 74, 214, 112, 86, 241, 199]),
|
|
15
|
+
OPEN_POSITION_WITH_TOKEN_22_NFT: (0, program_log_discriminators_js_1.u64leDiscriminator)([77, 255, 174, 82, 125, 29, 201, 46]),
|
|
16
|
+
CLOSE_POSITION: (0, program_log_discriminators_js_1.u64leDiscriminator)([123, 134, 81, 0, 49, 68, 98, 98]),
|
|
13
17
|
};
|
|
14
18
|
function discEq(data, disc) {
|
|
15
19
|
if (data.length < 8)
|
|
@@ -17,38 +21,27 @@ function discEq(data, disc) {
|
|
|
17
21
|
const v = (0, utils_js_1.readU64LE)(data, 0);
|
|
18
22
|
return v === disc;
|
|
19
23
|
}
|
|
20
|
-
/** Whirlpool 系 swap 指令账户:0 program, 1 authority, 2 pool, 3 user_ata_a, 4 vault_a, 5 user_ata_b, … */
|
|
21
|
-
const SWAP_ACC = {
|
|
22
|
-
POOL: 2,
|
|
23
|
-
SENDER: 1,
|
|
24
|
-
TOKEN_A_USER: 3,
|
|
25
|
-
TOKEN_B_USER: 5,
|
|
26
|
-
};
|
|
27
24
|
function parseRaydiumClmmInstruction(instructionData, accounts, signature, slot, txIndex, blockTimeUs, grpcRecvUs) {
|
|
28
25
|
if (instructionData.length < 8)
|
|
29
26
|
return null;
|
|
30
27
|
const meta = (0, utils_js_1.ixMeta)(signature, slot, txIndex, blockTimeUs, grpcRecvUs);
|
|
31
|
-
if (discEq(instructionData, DISC.SWAP)) {
|
|
32
|
-
|
|
33
|
-
if (instructionData.length < 42)
|
|
28
|
+
if (discEq(instructionData, DISC.SWAP) || discEq(instructionData, DISC.SWAP_V2)) {
|
|
29
|
+
if (instructionData.length < 8 + 8 + 8 + 8 + 1)
|
|
34
30
|
return null;
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
const _amount_specified_is_input = (0, utils_js_1.readBool)(instructionData, 40);
|
|
39
|
-
const a_to_b = (0, utils_js_1.readBool)(instructionData, 41);
|
|
40
|
-
if (_amount_specified_is_input === null || a_to_b === null)
|
|
31
|
+
const sqrt_limit = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
|
|
32
|
+
const is_base_input = (0, utils_js_1.readBool)(instructionData, 32);
|
|
33
|
+
if (is_base_input === null)
|
|
41
34
|
return null;
|
|
42
35
|
return {
|
|
43
36
|
RaydiumClmmSwap: {
|
|
44
37
|
metadata: meta,
|
|
45
|
-
pool_state: (0, utils_js_1.getAccount)(accounts,
|
|
46
|
-
sender: (0, utils_js_1.getAccount)(accounts,
|
|
47
|
-
token_account_0:
|
|
48
|
-
token_account_1:
|
|
49
|
-
amount_0:
|
|
50
|
-
amount_1:
|
|
51
|
-
zero_for_one:
|
|
38
|
+
pool_state: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
39
|
+
sender: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
40
|
+
token_account_0: Z,
|
|
41
|
+
token_account_1: Z,
|
|
42
|
+
amount_0: 0n,
|
|
43
|
+
amount_1: 0n,
|
|
44
|
+
zero_for_one: is_base_input,
|
|
52
45
|
sqrt_price_x64: sqrt_limit,
|
|
53
46
|
liquidity: 0n,
|
|
54
47
|
transfer_fee_0: 0n,
|
|
@@ -57,38 +50,36 @@ function parseRaydiumClmmInstruction(instructionData, accounts, signature, slot,
|
|
|
57
50
|
},
|
|
58
51
|
};
|
|
59
52
|
}
|
|
60
|
-
if (discEq(instructionData, DISC.
|
|
61
|
-
|
|
62
|
-
if (instructionData.length < 8 + 16 + 8 + 8)
|
|
53
|
+
if (discEq(instructionData, DISC.INCREASE_LIQUIDITY_V2)) {
|
|
54
|
+
if (instructionData.length < 8 + 8 + 8 + 8)
|
|
63
55
|
return null;
|
|
64
|
-
const liquidity = (0, utils_js_1.
|
|
65
|
-
const amount0_max = (0, utils_js_1.readU64LE)(instructionData,
|
|
66
|
-
const amount1_max = (0, utils_js_1.readU64LE)(instructionData,
|
|
56
|
+
const liquidity = (0, utils_js_1.readU64LE)(instructionData, 8) ?? 0n;
|
|
57
|
+
const amount0_max = (0, utils_js_1.readU64LE)(instructionData, 16) ?? 0n;
|
|
58
|
+
const amount1_max = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
|
|
67
59
|
return {
|
|
68
60
|
RaydiumClmmIncreaseLiquidity: {
|
|
69
61
|
metadata: meta,
|
|
70
|
-
pool: (0, utils_js_1.getAccount)(accounts,
|
|
71
|
-
position_nft_mint: (0, utils_js_1.getAccount)(accounts,
|
|
72
|
-
user: (0, utils_js_1.getAccount)(accounts,
|
|
62
|
+
pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
63
|
+
position_nft_mint: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
64
|
+
user: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
|
|
73
65
|
liquidity,
|
|
74
66
|
amount0_max,
|
|
75
67
|
amount1_max,
|
|
76
68
|
},
|
|
77
69
|
};
|
|
78
70
|
}
|
|
79
|
-
if (discEq(instructionData, DISC.
|
|
80
|
-
|
|
81
|
-
if (instructionData.length < 8 + 16 + 8 + 8)
|
|
71
|
+
if (discEq(instructionData, DISC.DECREASE_LIQUIDITY_V2)) {
|
|
72
|
+
if (instructionData.length < 8 + 8 + 8 + 8)
|
|
82
73
|
return null;
|
|
83
|
-
const liquidity = (0, utils_js_1.
|
|
84
|
-
const amount0_min = (0, utils_js_1.readU64LE)(instructionData,
|
|
85
|
-
const amount1_min = (0, utils_js_1.readU64LE)(instructionData,
|
|
74
|
+
const liquidity = (0, utils_js_1.readU64LE)(instructionData, 8) ?? 0n;
|
|
75
|
+
const amount0_min = (0, utils_js_1.readU64LE)(instructionData, 16) ?? 0n;
|
|
76
|
+
const amount1_min = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
|
|
86
77
|
return {
|
|
87
78
|
RaydiumClmmDecreaseLiquidity: {
|
|
88
79
|
metadata: meta,
|
|
89
|
-
pool: (0, utils_js_1.getAccount)(accounts,
|
|
90
|
-
position_nft_mint: (0, utils_js_1.getAccount)(accounts,
|
|
91
|
-
user: (0, utils_js_1.getAccount)(accounts,
|
|
80
|
+
pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
81
|
+
position_nft_mint: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
82
|
+
user: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
|
|
92
83
|
liquidity,
|
|
93
84
|
amount0_min,
|
|
94
85
|
amount1_min,
|
|
@@ -96,23 +87,53 @@ function parseRaydiumClmmInstruction(instructionData, accounts, signature, slot,
|
|
|
96
87
|
};
|
|
97
88
|
}
|
|
98
89
|
if (discEq(instructionData, DISC.CREATE_POOL)) {
|
|
99
|
-
if (instructionData.length < 8 +
|
|
90
|
+
if (instructionData.length < 8 + 8 + 8)
|
|
100
91
|
return null;
|
|
101
|
-
const sqrt_price_x64 = (0, utils_js_1.
|
|
102
|
-
const open_time = (0, utils_js_1.readU64LE)(instructionData,
|
|
92
|
+
const sqrt_price_x64 = (0, utils_js_1.readU64LE)(instructionData, 8) ?? 0n;
|
|
93
|
+
const open_time = (0, utils_js_1.readU64LE)(instructionData, 16) ?? 0n;
|
|
103
94
|
return {
|
|
104
95
|
RaydiumClmmCreatePool: {
|
|
105
96
|
metadata: meta,
|
|
106
|
-
pool: (0, utils_js_1.getAccount)(accounts,
|
|
107
|
-
token_0_mint: Z,
|
|
108
|
-
token_1_mint: Z,
|
|
97
|
+
pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
98
|
+
token_0_mint: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
|
|
99
|
+
token_1_mint: (0, utils_js_1.getAccount)(accounts, 3) ?? Z,
|
|
109
100
|
tick_spacing: 0,
|
|
110
101
|
fee_rate: 0,
|
|
111
|
-
creator: (0, utils_js_1.getAccount)(accounts,
|
|
102
|
+
creator: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
112
103
|
sqrt_price_x64,
|
|
113
104
|
open_time,
|
|
114
105
|
},
|
|
115
106
|
};
|
|
116
107
|
}
|
|
108
|
+
if (discEq(instructionData, DISC.OPEN_POSITION_V2) || discEq(instructionData, DISC.OPEN_POSITION_WITH_TOKEN_22_NFT)) {
|
|
109
|
+
if (instructionData.length < 8 + 4 + 4 + 4 + 4 + 8 + 8 + 8)
|
|
110
|
+
return null;
|
|
111
|
+
const tick_lower_index = (0, utils_js_1.readI32LE)(instructionData, 8);
|
|
112
|
+
const tick_upper_index = (0, utils_js_1.readI32LE)(instructionData, 12);
|
|
113
|
+
const liquidity = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
|
|
114
|
+
if (tick_lower_index === null || tick_upper_index === null)
|
|
115
|
+
return null;
|
|
116
|
+
return {
|
|
117
|
+
RaydiumClmmOpenPosition: {
|
|
118
|
+
metadata: meta,
|
|
119
|
+
pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
120
|
+
user: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
121
|
+
position_nft_mint: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
|
|
122
|
+
tick_lower_index,
|
|
123
|
+
tick_upper_index,
|
|
124
|
+
liquidity,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (discEq(instructionData, DISC.CLOSE_POSITION)) {
|
|
129
|
+
return {
|
|
130
|
+
RaydiumClmmClosePosition: {
|
|
131
|
+
metadata: meta,
|
|
132
|
+
pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
|
|
133
|
+
user: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
134
|
+
position_nft_mint: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
117
138
|
return null;
|
|
118
139
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raydium LaunchLab 指令解析
|
|
3
|
+
*
|
|
4
|
+
* 1) **Program data 日志形载荷**(与 `logs/raydium_launchlab` 一致):前 8 字节为事件 disc,后跟 pool/user/金额…
|
|
5
|
+
* 2) **Anchor 外层指令**:`global:buy` / `sell` / `create_pool` / `migrate_to_amm` 等(sha256 前 8 字节),参数多为 Borsh u64。
|
|
6
|
+
*/
|
|
7
|
+
import type { DexEvent } from "../core/dex_event.js";
|
|
8
|
+
export declare function parseRaydiumLaunchlabInstruction(instructionData: Uint8Array, accounts: string[], signature: string, slot: number, txIndex: number, blockTimeUs: number | undefined, grpcRecvUs: number): DexEvent | null;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRaydiumLaunchlabInstruction = parseRaydiumLaunchlabInstruction;
|
|
4
|
+
const dex_event_js_1 = require("../core/dex_event.js");
|
|
5
|
+
const raydium_launchlab_js_1 = require("../logs/raydium_launchlab.js");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
const Z = (0, dex_event_js_1.defaultPubkey)();
|
|
8
|
+
/** Anchor `sha256("global:<name>")[0..8]`,与链上 LaunchLab / pAMM 系指令一致 */
|
|
9
|
+
const ANCHOR = {
|
|
10
|
+
BUY_EXACT_IN: [250, 234, 13, 123, 213, 156, 19, 236],
|
|
11
|
+
BUY_EXACT_OUT: [24, 211, 116, 40, 105, 3, 153, 56],
|
|
12
|
+
INITIALIZE: [175, 175, 109, 31, 13, 152, 155, 237],
|
|
13
|
+
INITIALIZE_V2: [67, 153, 175, 39, 218, 16, 38, 32],
|
|
14
|
+
INITIALIZE_WITH_TOKEN_2022: [37, 190, 126, 222, 44, 154, 171, 17],
|
|
15
|
+
SELL_EXACT_OUT: [95, 200, 71, 34, 8, 9, 11, 166],
|
|
16
|
+
SELL_EXACT_IN: [149, 39, 222, 155, 211, 124, 152, 26],
|
|
17
|
+
MIGRATE_TO_AMM: [207, 82, 192, 145, 254, 207, 145, 223],
|
|
18
|
+
MIGRATE_TO_CPSWAP: [136, 92, 200, 103, 28, 218, 144, 140],
|
|
19
|
+
};
|
|
20
|
+
function discEqU64(data, disc) {
|
|
21
|
+
if (data.length < 8)
|
|
22
|
+
return false;
|
|
23
|
+
const v = (0, utils_js_1.readU64LE)(data, 0);
|
|
24
|
+
return v === disc;
|
|
25
|
+
}
|
|
26
|
+
function headEq(data, bytes) {
|
|
27
|
+
if (data.length < 8)
|
|
28
|
+
return false;
|
|
29
|
+
for (let i = 0; i < 8; i++)
|
|
30
|
+
if (data[i] !== bytes[i])
|
|
31
|
+
return false;
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
/** 与 PumpSwap buy/sell 一致:两 u64(base / quote 侧限额) */
|
|
35
|
+
function parseMintParams(payload) {
|
|
36
|
+
const decimals = (0, utils_js_1.readU8)(payload, 0);
|
|
37
|
+
if (decimals === null)
|
|
38
|
+
return null;
|
|
39
|
+
let o = 1;
|
|
40
|
+
const name = (0, utils_js_1.readBorshStrAt)(payload, o);
|
|
41
|
+
if (!name)
|
|
42
|
+
return null;
|
|
43
|
+
o = name.next;
|
|
44
|
+
const symbol = (0, utils_js_1.readBorshStrAt)(payload, o);
|
|
45
|
+
if (!symbol)
|
|
46
|
+
return null;
|
|
47
|
+
o = symbol.next;
|
|
48
|
+
const uri = (0, utils_js_1.readBorshStrAt)(payload, o);
|
|
49
|
+
if (!uri)
|
|
50
|
+
return null;
|
|
51
|
+
return { symbol: symbol.s, name: name.s, uri: uri.s, decimals };
|
|
52
|
+
}
|
|
53
|
+
function tradeFromTwoU64(payload, accounts, meta, isBuy, exactIn) {
|
|
54
|
+
const first = (0, utils_js_1.readU64LE)(payload, 0) ?? 0n;
|
|
55
|
+
const second = (0, utils_js_1.readU64LE)(payload, 8) ?? 0n;
|
|
56
|
+
const amount_in = exactIn ? first : second;
|
|
57
|
+
const amount_out = exactIn ? second : first;
|
|
58
|
+
const pool = (0, utils_js_1.getAccount)(accounts, 4) ?? Z;
|
|
59
|
+
const user = (0, utils_js_1.getAccount)(accounts, 0) ?? Z;
|
|
60
|
+
return {
|
|
61
|
+
RaydiumLaunchlabTrade: {
|
|
62
|
+
metadata: meta,
|
|
63
|
+
pool_state: pool,
|
|
64
|
+
user,
|
|
65
|
+
amount_in,
|
|
66
|
+
amount_out,
|
|
67
|
+
is_buy: isBuy,
|
|
68
|
+
trade_direction: isBuy ? "Buy" : "Sell",
|
|
69
|
+
exact_in: exactIn,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function parseRaydiumLaunchlabInstruction(instructionData, accounts, signature, slot, txIndex, blockTimeUs, grpcRecvUs) {
|
|
74
|
+
if (instructionData.length < 8)
|
|
75
|
+
return null;
|
|
76
|
+
const meta = (0, utils_js_1.ixMeta)(signature, slot, txIndex, blockTimeUs, grpcRecvUs);
|
|
77
|
+
// --- Program data 事件形(与链上 emit 载荷一致,偶见于外层) ---
|
|
78
|
+
if (discEqU64(instructionData, raydium_launchlab_js_1.RAYDIUM_LAUNCHLAB_DISC.TRADE)) {
|
|
79
|
+
return (0, raydium_launchlab_js_1.parseRaydiumLaunchlabTradeFromData)(instructionData.subarray(8), meta);
|
|
80
|
+
}
|
|
81
|
+
if (discEqU64(instructionData, raydium_launchlab_js_1.RAYDIUM_LAUNCHLAB_DISC.POOL_CREATE)) {
|
|
82
|
+
return (0, raydium_launchlab_js_1.parseRaydiumLaunchlabPoolCreateFromData)(instructionData.subarray(8), meta);
|
|
83
|
+
}
|
|
84
|
+
const rest = instructionData.subarray(8);
|
|
85
|
+
// --- Anchor:买卖(两 u64) ---
|
|
86
|
+
if (headEq(instructionData, ANCHOR.BUY_EXACT_IN)) {
|
|
87
|
+
if (rest.length < 16)
|
|
88
|
+
return null;
|
|
89
|
+
return tradeFromTwoU64(rest, accounts, meta, true, true);
|
|
90
|
+
}
|
|
91
|
+
if (headEq(instructionData, ANCHOR.BUY_EXACT_OUT)) {
|
|
92
|
+
if (rest.length < 16)
|
|
93
|
+
return null;
|
|
94
|
+
return tradeFromTwoU64(rest, accounts, meta, true, false);
|
|
95
|
+
}
|
|
96
|
+
if (headEq(instructionData, ANCHOR.SELL_EXACT_IN)) {
|
|
97
|
+
if (rest.length < 16)
|
|
98
|
+
return null;
|
|
99
|
+
return tradeFromTwoU64(rest, accounts, meta, false, true);
|
|
100
|
+
}
|
|
101
|
+
if (headEq(instructionData, ANCHOR.SELL_EXACT_OUT)) {
|
|
102
|
+
if (rest.length < 16)
|
|
103
|
+
return null;
|
|
104
|
+
return tradeFromTwoU64(rest, accounts, meta, false, false);
|
|
105
|
+
}
|
|
106
|
+
if (headEq(instructionData, ANCHOR.INITIALIZE) ||
|
|
107
|
+
headEq(instructionData, ANCHOR.INITIALIZE_V2) ||
|
|
108
|
+
headEq(instructionData, ANCHOR.INITIALIZE_WITH_TOKEN_2022)) {
|
|
109
|
+
const base_mint_param = parseMintParams(rest);
|
|
110
|
+
if (!base_mint_param)
|
|
111
|
+
return null;
|
|
112
|
+
return {
|
|
113
|
+
RaydiumLaunchlabPoolCreate: {
|
|
114
|
+
metadata: meta,
|
|
115
|
+
base_mint_param,
|
|
116
|
+
pool_state: (0, utils_js_1.getAccount)(accounts, 5) ?? Z,
|
|
117
|
+
creator: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (headEq(instructionData, ANCHOR.MIGRATE_TO_AMM) || headEq(instructionData, ANCHOR.MIGRATE_TO_CPSWAP)) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
@@ -5,3 +5,6 @@ export { parseInstructionUnified as parse_instruction_unified } from "./mod.js";
|
|
|
5
5
|
export { parsePumpfunInstruction as parse_pumpfun_instruction } from "./pumpfun_ix.js";
|
|
6
6
|
export { parsePumpswapInstruction as parse_pumpswap_instruction } from "./pumpswap_ix.js";
|
|
7
7
|
export { parseMeteoraDammInstruction as parse_meteora_damm_instruction } from "./meteora_damm_ix.js";
|
|
8
|
+
export { parseMeteoraDlmmInstruction as parse_meteora_dlmm_instruction } from "./meteora_dlmm_ix.js";
|
|
9
|
+
export { parseMeteoraPoolsInstruction as parse_meteora_pools_instruction } from "./meteora_pools_ix.js";
|
|
10
|
+
export { parsePumpFeesInstruction as parse_pump_fees_instruction } from "./pump_fees_ix.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parse_meteora_damm_instruction = exports.parse_pumpswap_instruction = exports.parse_pumpfun_instruction = exports.parse_instruction_unified = void 0;
|
|
3
|
+
exports.parse_pump_fees_instruction = exports.parse_meteora_pools_instruction = exports.parse_meteora_dlmm_instruction = exports.parse_meteora_damm_instruction = exports.parse_pumpswap_instruction = exports.parse_pumpfun_instruction = exports.parse_instruction_unified = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Rust `instr` 根模块 re-export 的蛇形命名(与 `parse_pumpfun_instruction` 等对应)。
|
|
6
6
|
*/
|
|
@@ -12,3 +12,9 @@ var pumpswap_ix_js_1 = require("./pumpswap_ix.js");
|
|
|
12
12
|
Object.defineProperty(exports, "parse_pumpswap_instruction", { enumerable: true, get: function () { return pumpswap_ix_js_1.parsePumpswapInstruction; } });
|
|
13
13
|
var meteora_damm_ix_js_1 = require("./meteora_damm_ix.js");
|
|
14
14
|
Object.defineProperty(exports, "parse_meteora_damm_instruction", { enumerable: true, get: function () { return meteora_damm_ix_js_1.parseMeteoraDammInstruction; } });
|
|
15
|
+
var meteora_dlmm_ix_js_1 = require("./meteora_dlmm_ix.js");
|
|
16
|
+
Object.defineProperty(exports, "parse_meteora_dlmm_instruction", { enumerable: true, get: function () { return meteora_dlmm_ix_js_1.parseMeteoraDlmmInstruction; } });
|
|
17
|
+
var meteora_pools_ix_js_1 = require("./meteora_pools_ix.js");
|
|
18
|
+
Object.defineProperty(exports, "parse_meteora_pools_instruction", { enumerable: true, get: function () { return meteora_pools_ix_js_1.parseMeteoraPoolsInstruction; } });
|
|
19
|
+
var pump_fees_ix_js_1 = require("./pump_fees_ix.js");
|
|
20
|
+
Object.defineProperty(exports, "parse_pump_fees_instruction", { enumerable: true, get: function () { return pump_fees_ix_js_1.parsePumpFeesInstruction; } });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** 与 Rust `discriminator_lut::Protocol` 变体名一致(字符串联合,便于 JSON / 日志)。 */
|
|
2
|
-
export type LogProtocol = "PumpFun" | "PumpSwap" | "RaydiumClmm" | "RaydiumCpmm" | "RaydiumAmm" | "OrcaWhirlpool" | "MeteoraAmm" | "MeteoraDamm";
|
|
2
|
+
export type LogProtocol = "PumpFun" | "PumpFees" | "PumpSwap" | "RaydiumClmm" | "RaydiumCpmm" | "RaydiumAmm" | "OrcaWhirlpool" | "MeteoraAmm" | "MeteoraDamm";
|
|
3
3
|
/** Rust `discriminator_to_name` */
|
|
4
4
|
export declare function discriminatorToName(discriminator: bigint): string | undefined;
|
|
5
5
|
/** Rust `discriminator_to_protocol` */
|
|
@@ -12,6 +12,8 @@ const program_log_discriminators_js_1 = require("./program_log_discriminators.js
|
|
|
12
12
|
function protocolForProgramLogKey(key) {
|
|
13
13
|
if (key.startsWith("PUMPFUN_"))
|
|
14
14
|
return "PumpFun";
|
|
15
|
+
if (key.startsWith("PUMP_FEES_"))
|
|
16
|
+
return "PumpFees";
|
|
15
17
|
if (key.startsWith("PUMPSWAP_"))
|
|
16
18
|
return "PumpSwap";
|
|
17
19
|
if (key.startsWith("RAYDIUM_CLMM_"))
|
|
@@ -10,6 +10,7 @@ const program_data_js_1 = require("./program_data.js");
|
|
|
10
10
|
const clock_js_1 = require("../core/clock.js");
|
|
11
11
|
const pump_js_1 = require("./pump.js");
|
|
12
12
|
const pump_amm_js_1 = require("./pump_amm.js");
|
|
13
|
+
const pump_fees_js_1 = require("./pump_fees.js");
|
|
13
14
|
const raydium_clmm_js_1 = require("./raydium_clmm.js");
|
|
14
15
|
const raydium_cpmm_js_1 = require("./raydium_cpmm.js");
|
|
15
16
|
const bs58_1 = __importDefault(require("bs58"));
|
|
@@ -18,7 +19,7 @@ const orca_js_1 = require("./orca.js");
|
|
|
18
19
|
const meteora_amm_js_1 = require("./meteora_amm.js");
|
|
19
20
|
const meteora_damm_js_1 = require("./meteora_damm.js");
|
|
20
21
|
const meteora_dlmm_js_1 = require("./meteora_dlmm.js");
|
|
21
|
-
const
|
|
22
|
+
const raydium_launchlab_js_1 = require("./raydium_launchlab.js");
|
|
22
23
|
const binary_js_1 = require("../util/binary.js");
|
|
23
24
|
const program_log_discriminators_js_1 = require("./program_log_discriminators.js");
|
|
24
25
|
function discriminatorToEventType(disc) {
|
|
@@ -28,6 +29,26 @@ function discriminatorToEventType(disc) {
|
|
|
28
29
|
return "PumpFunTrade";
|
|
29
30
|
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE)
|
|
30
31
|
return "PumpFunMigrate";
|
|
32
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE_BONDING_CURVE_CREATOR)
|
|
33
|
+
return "PumpFunMigrateBondingCurveCreator";
|
|
34
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_CREATE_FEE_SHARING_CONFIG)
|
|
35
|
+
return "PumpFeesCreateFeeSharingConfig";
|
|
36
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_INITIALIZE_FEE_CONFIG)
|
|
37
|
+
return "PumpFeesInitializeFeeConfig";
|
|
38
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_RESET_FEE_SHARING_CONFIG)
|
|
39
|
+
return "PumpFeesResetFeeSharingConfig";
|
|
40
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY)
|
|
41
|
+
return "PumpFeesRevokeFeeSharingAuthority";
|
|
42
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY)
|
|
43
|
+
return "PumpFeesTransferFeeSharingAuthority";
|
|
44
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_ADMIN)
|
|
45
|
+
return "PumpFeesUpdateAdmin";
|
|
46
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_CONFIG)
|
|
47
|
+
return "PumpFeesUpdateFeeConfig";
|
|
48
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_SHARES)
|
|
49
|
+
return "PumpFeesUpdateFeeShares";
|
|
50
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPSERT_FEE_TIERS)
|
|
51
|
+
return "PumpFeesUpsertFeeTiers";
|
|
31
52
|
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_BUY)
|
|
32
53
|
return "PumpSwapBuy";
|
|
33
54
|
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_SELL)
|
|
@@ -38,24 +59,74 @@ function discriminatorToEventType(disc) {
|
|
|
38
59
|
return "PumpSwapLiquidityAdded";
|
|
39
60
|
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_REMOVE_LIQUIDITY)
|
|
40
61
|
return "PumpSwapLiquidityRemoved";
|
|
62
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_SWAP)
|
|
63
|
+
return "RaydiumClmmSwap";
|
|
64
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_INCREASE_LIQUIDITY)
|
|
65
|
+
return "RaydiumClmmIncreaseLiquidity";
|
|
66
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_DECREASE_LIQUIDITY)
|
|
67
|
+
return "RaydiumClmmDecreaseLiquidity";
|
|
68
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_CREATE_POOL)
|
|
69
|
+
return "RaydiumClmmCreatePool";
|
|
70
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_COLLECT_FEE)
|
|
71
|
+
return "RaydiumClmmCollectFee";
|
|
72
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_SWAP_BASE_IN)
|
|
73
|
+
return "RaydiumCpmmSwap";
|
|
74
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_SWAP_BASE_OUT)
|
|
75
|
+
return "RaydiumCpmmSwap";
|
|
76
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_DEPOSIT)
|
|
77
|
+
return "RaydiumCpmmDeposit";
|
|
78
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_WITHDRAW)
|
|
79
|
+
return "RaydiumCpmmWithdraw";
|
|
80
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_SWAP_BASE_IN)
|
|
81
|
+
return "RaydiumAmmV4Swap";
|
|
82
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_SWAP_BASE_OUT)
|
|
83
|
+
return "RaydiumAmmV4Swap";
|
|
84
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_DEPOSIT)
|
|
85
|
+
return "RaydiumAmmV4Deposit";
|
|
86
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_WITHDRAW)
|
|
87
|
+
return "RaydiumAmmV4Withdraw";
|
|
88
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_WITHDRAW_PNL)
|
|
89
|
+
return "RaydiumAmmV4WithdrawPnl";
|
|
90
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_INITIALIZE2)
|
|
91
|
+
return "RaydiumAmmV4Initialize2";
|
|
92
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_TRADED)
|
|
93
|
+
return "OrcaWhirlpoolSwap";
|
|
94
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_LIQUIDITY_INCREASED)
|
|
95
|
+
return "OrcaWhirlpoolLiquidityIncreased";
|
|
96
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_LIQUIDITY_DECREASED)
|
|
97
|
+
return "OrcaWhirlpoolLiquidityDecreased";
|
|
98
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_POOL_INITIALIZED)
|
|
99
|
+
return "OrcaWhirlpoolPoolInitialized";
|
|
100
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_SWAP)
|
|
101
|
+
return "MeteoraPoolsSwap";
|
|
102
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_ADD_LIQUIDITY)
|
|
103
|
+
return "MeteoraPoolsAddLiquidity";
|
|
104
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_REMOVE_LIQUIDITY)
|
|
105
|
+
return "MeteoraPoolsRemoveLiquidity";
|
|
106
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_BOOTSTRAP_LIQUIDITY)
|
|
107
|
+
return "MeteoraPoolsBootstrapLiquidity";
|
|
108
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_POOL_CREATED)
|
|
109
|
+
return "MeteoraPoolsPoolCreated";
|
|
110
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_SET_POOL_FEES)
|
|
111
|
+
return "MeteoraPoolsSetPoolFees";
|
|
112
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_SWAP)
|
|
113
|
+
return "MeteoraDammV2Swap";
|
|
114
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_SWAP2)
|
|
115
|
+
return "MeteoraDammV2Swap";
|
|
116
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_ADD_LIQUIDITY)
|
|
117
|
+
return "MeteoraDammV2AddLiquidity";
|
|
118
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_REMOVE_LIQUIDITY)
|
|
119
|
+
return "MeteoraDammV2RemoveLiquidity";
|
|
120
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_INITIALIZE_POOL)
|
|
121
|
+
return "MeteoraDammV2InitializePool";
|
|
122
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_CREATE_POSITION)
|
|
123
|
+
return "MeteoraDammV2CreatePosition";
|
|
124
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_CLOSE_POSITION)
|
|
125
|
+
return "MeteoraDammV2ClosePosition";
|
|
41
126
|
return null;
|
|
42
127
|
}
|
|
43
128
|
function filterAllowsUnknownSupported(filter) {
|
|
44
|
-
|
|
45
|
-
return true;
|
|
46
|
-
return filter.include_only.some((t) => [
|
|
47
|
-
"PumpFunTrade",
|
|
48
|
-
"PumpFunCreate",
|
|
49
|
-
"PumpFunMigrate",
|
|
50
|
-
"PumpFunBuy",
|
|
51
|
-
"PumpFunSell",
|
|
52
|
-
"PumpFunBuyExactSolIn",
|
|
53
|
-
"PumpSwapBuy",
|
|
54
|
-
"PumpSwapSell",
|
|
55
|
-
"PumpSwapCreatePool",
|
|
56
|
-
"PumpSwapLiquidityAdded",
|
|
57
|
-
"PumpSwapLiquidityRemoved",
|
|
58
|
-
].includes(t));
|
|
129
|
+
return !filter?.include_only;
|
|
59
130
|
}
|
|
60
131
|
function pumpfunTradeMatchesFilter(ev, includeOnly) {
|
|
61
132
|
if ("PumpFunBuy" in ev)
|
|
@@ -72,13 +143,27 @@ function pumpfunTradeMatchesFilter(ev, includeOnly) {
|
|
|
72
143
|
return includeOnly.includes("PumpFunCreateV2");
|
|
73
144
|
return false;
|
|
74
145
|
}
|
|
75
|
-
function
|
|
76
|
-
|
|
146
|
+
function eventTypeFromDexEvent(ev) {
|
|
147
|
+
const key = Object.keys(ev)[0];
|
|
148
|
+
return key ? key : null;
|
|
149
|
+
}
|
|
150
|
+
function applyActualEventTypeFilter(ev, filter) {
|
|
151
|
+
if (!ev || !filter)
|
|
77
152
|
return ev;
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
153
|
+
const actual = eventTypeFromDexEvent(ev);
|
|
154
|
+
if (actual && !filter.shouldInclude(actual))
|
|
155
|
+
return null;
|
|
156
|
+
return ev;
|
|
157
|
+
}
|
|
158
|
+
function applyPumpfunSecondaryFilter(ev, filter) {
|
|
159
|
+
if (!ev || !filter)
|
|
80
160
|
return ev;
|
|
81
|
-
|
|
161
|
+
if (filter.include_only?.length) {
|
|
162
|
+
const hasSpecific = filter.include_only.some((t) => ["PumpFunBuy", "PumpFunSell", "PumpFunBuyExactSolIn", "PumpFunCreate", "PumpFunCreateV2"].includes(t));
|
|
163
|
+
if (hasSpecific && !pumpfunTradeMatchesFilter(ev, filter.include_only))
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return applyActualEventTypeFilter(ev, filter);
|
|
82
167
|
}
|
|
83
168
|
function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs, eventTypeFilter, isCreatedBuy, recentBlockhash) {
|
|
84
169
|
const buf = (0, program_data_js_1.decodeProgramDataLine)(log);
|
|
@@ -116,6 +201,26 @@ function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvU
|
|
|
116
201
|
return (0, pump_js_1.parseCreateFromData)(data, metadata);
|
|
117
202
|
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE:
|
|
118
203
|
return (0, pump_js_1.parseMigrateFromData)(data, metadata);
|
|
204
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE_BONDING_CURVE_CREATOR:
|
|
205
|
+
return (0, pump_js_1.parseMigrateBondingCurveCreatorFromData)(data, metadata);
|
|
206
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_CREATE_FEE_SHARING_CONFIG:
|
|
207
|
+
return (0, pump_fees_js_1.parseCreateFeeSharingConfigFromData)(data, metadata);
|
|
208
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_INITIALIZE_FEE_CONFIG:
|
|
209
|
+
return (0, pump_fees_js_1.parseInitializeFeeConfigFromData)(data, metadata);
|
|
210
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_RESET_FEE_SHARING_CONFIG:
|
|
211
|
+
return (0, pump_fees_js_1.parseResetFeeSharingConfigFromData)(data, metadata);
|
|
212
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY:
|
|
213
|
+
return (0, pump_fees_js_1.parseRevokeFeeSharingAuthorityFromData)(data, metadata);
|
|
214
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY:
|
|
215
|
+
return (0, pump_fees_js_1.parseTransferFeeSharingAuthorityFromData)(data, metadata);
|
|
216
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_ADMIN:
|
|
217
|
+
return (0, pump_fees_js_1.parseUpdateAdminFromData)(data, metadata);
|
|
218
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_CONFIG:
|
|
219
|
+
return (0, pump_fees_js_1.parseUpdateFeeConfigFromData)(data, metadata);
|
|
220
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_SHARES:
|
|
221
|
+
return (0, pump_fees_js_1.parseUpdateFeeSharesFromData)(data, metadata);
|
|
222
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPSERT_FEE_TIERS:
|
|
223
|
+
return (0, pump_fees_js_1.parseUpsertFeeTiersFromData)(data, metadata);
|
|
119
224
|
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_CREATE_POOL:
|
|
120
225
|
return (0, pump_amm_js_1.parseCreatePoolFromData)(data, metadata);
|
|
121
226
|
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_ADD_LIQUIDITY:
|
|
@@ -177,12 +282,12 @@ function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvU
|
|
|
177
282
|
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_CLOSE_POSITION:
|
|
178
283
|
return (0, meteora_damm_js_1.parseMeteoraDammLog)(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs);
|
|
179
284
|
default: {
|
|
180
|
-
const
|
|
181
|
-
if (
|
|
182
|
-
return
|
|
285
|
+
const raydium_launchlab = (0, raydium_launchlab_js_1.parseRaydiumLaunchlabFromDiscriminator)(disc, data, metadata);
|
|
286
|
+
if (raydium_launchlab)
|
|
287
|
+
return applyActualEventTypeFilter(raydium_launchlab, eventTypeFilter);
|
|
183
288
|
const dlmm = (0, meteora_dlmm_js_1.parseDlmmFromDecoded)(buf, metadata);
|
|
184
289
|
if (dlmm)
|
|
185
|
-
return dlmm;
|
|
290
|
+
return applyActualEventTypeFilter(dlmm, eventTypeFilter);
|
|
186
291
|
return null;
|
|
187
292
|
}
|
|
188
293
|
}
|
|
@@ -18,6 +18,16 @@ export declare const PROGRAM_LOG_DISC: {
|
|
|
18
18
|
readonly PUMPFUN_CREATE: bigint;
|
|
19
19
|
readonly PUMPFUN_TRADE: bigint;
|
|
20
20
|
readonly PUMPFUN_MIGRATE: bigint;
|
|
21
|
+
readonly PUMPFUN_MIGRATE_BONDING_CURVE_CREATOR: bigint;
|
|
22
|
+
readonly PUMP_FEES_CREATE_FEE_SHARING_CONFIG: bigint;
|
|
23
|
+
readonly PUMP_FEES_INITIALIZE_FEE_CONFIG: bigint;
|
|
24
|
+
readonly PUMP_FEES_RESET_FEE_SHARING_CONFIG: bigint;
|
|
25
|
+
readonly PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY: bigint;
|
|
26
|
+
readonly PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY: bigint;
|
|
27
|
+
readonly PUMP_FEES_UPDATE_ADMIN: bigint;
|
|
28
|
+
readonly PUMP_FEES_UPDATE_FEE_CONFIG: bigint;
|
|
29
|
+
readonly PUMP_FEES_UPDATE_FEE_SHARES: bigint;
|
|
30
|
+
readonly PUMP_FEES_UPSERT_FEE_TIERS: bigint;
|
|
21
31
|
readonly PUMPSWAP_BUY: bigint;
|
|
22
32
|
readonly PUMPSWAP_SELL: bigint;
|
|
23
33
|
readonly PUMPSWAP_CREATE_POOL: bigint;
|
|
@@ -27,6 +27,16 @@ exports.PROGRAM_LOG_DISC = {
|
|
|
27
27
|
PUMPFUN_CREATE: u64leDiscriminator([27, 114, 169, 77, 222, 235, 99, 118]),
|
|
28
28
|
PUMPFUN_TRADE: u64leDiscriminator([189, 219, 127, 211, 78, 230, 97, 238]),
|
|
29
29
|
PUMPFUN_MIGRATE: u64leDiscriminator([189, 233, 93, 185, 92, 148, 234, 148]),
|
|
30
|
+
PUMPFUN_MIGRATE_BONDING_CURVE_CREATOR: u64leDiscriminator([155, 167, 104, 220, 213, 108, 243, 3]),
|
|
31
|
+
PUMP_FEES_CREATE_FEE_SHARING_CONFIG: u64leDiscriminator([133, 105, 170, 200, 184, 116, 251, 88]),
|
|
32
|
+
PUMP_FEES_INITIALIZE_FEE_CONFIG: u64leDiscriminator([89, 138, 244, 230, 10, 56, 226, 126]),
|
|
33
|
+
PUMP_FEES_RESET_FEE_SHARING_CONFIG: u64leDiscriminator([203, 204, 151, 226, 120, 55, 214, 243]),
|
|
34
|
+
PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY: u64leDiscriminator([114, 23, 101, 60, 14, 190, 153, 62]),
|
|
35
|
+
PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY: u64leDiscriminator([124, 143, 198, 245, 77, 184, 8, 236]),
|
|
36
|
+
PUMP_FEES_UPDATE_ADMIN: u64leDiscriminator([225, 152, 171, 87, 246, 63, 66, 234]),
|
|
37
|
+
PUMP_FEES_UPDATE_FEE_CONFIG: u64leDiscriminator([90, 23, 65, 35, 62, 244, 188, 208]),
|
|
38
|
+
PUMP_FEES_UPDATE_FEE_SHARES: u64leDiscriminator([21, 186, 196, 184, 91, 228, 225, 203]),
|
|
39
|
+
PUMP_FEES_UPSERT_FEE_TIERS: u64leDiscriminator([171, 89, 169, 187, 122, 186, 33, 204]),
|
|
30
40
|
PUMPSWAP_BUY: exports.PUMPSWAP_DISC.BUY,
|
|
31
41
|
PUMPSWAP_SELL: exports.PUMPSWAP_DISC.SELL,
|
|
32
42
|
PUMPSWAP_CREATE_POOL: exports.PUMPSWAP_DISC.CREATE_POOL,
|
package/dist/logs/pump.d.ts
CHANGED
|
@@ -4,9 +4,11 @@ export declare function parsePumpFunLogDecoded(programData: Uint8Array, metadata
|
|
|
4
4
|
export declare function parseTradeFromData(data: Uint8Array, metadata: EventMetadata, isCreatedBuy: boolean): DexEvent | null;
|
|
5
5
|
export declare function parseCreateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
6
6
|
export declare function parseMigrateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
7
|
+
export declare function parseMigrateBondingCurveCreatorFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
7
8
|
/** u64 discriminator little-endian */
|
|
8
9
|
export declare function pumpDiscriminators(): {
|
|
9
10
|
CREATE: bigint;
|
|
10
11
|
TRADE: bigint;
|
|
11
12
|
MIGRATE: bigint;
|
|
13
|
+
MIGRATE_BONDING_CURVE_CREATOR: bigint;
|
|
12
14
|
};
|