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.
Files changed (74) hide show
  1. package/README.md +22 -4
  2. package/README_CN.md +22 -4
  3. package/dist/accounts/mod.d.ts +1 -0
  4. package/dist/accounts/mod.js +53 -6
  5. package/dist/accounts/pumpfun.d.ts +16 -0
  6. package/dist/accounts/pumpfun.js +538 -0
  7. package/dist/accounts/rust_aliases.d.ts +1 -0
  8. package/dist/accounts/rust_aliases.js +3 -1
  9. package/dist/core/account_dispatcher_rpc.js +5 -26
  10. package/dist/core/account_fill_meteora.d.ts +1 -2
  11. package/dist/core/account_fill_meteora.js +0 -2
  12. package/dist/core/account_fill_pumpfun.js +92 -13
  13. package/dist/core/account_fill_pumpswap.js +50 -0
  14. package/dist/core/account_fill_raydium_launchlab.d.ts +4 -0
  15. package/dist/core/account_fill_raydium_launchlab.js +20 -0
  16. package/dist/core/dex_event.d.ts +283 -17
  17. package/dist/core/pumpfun_fee_enrich.d.ts +5 -0
  18. package/dist/core/pumpfun_fee_enrich.js +131 -0
  19. package/dist/core/unified_parser.js +2 -0
  20. package/dist/grpc/client.d.ts +26 -1
  21. package/dist/grpc/client.js +279 -0
  22. package/dist/grpc/log_instr_dedup.d.ts +2 -0
  23. package/dist/grpc/log_instr_dedup.js +378 -0
  24. package/dist/grpc/order_buffer.d.ts +27 -0
  25. package/dist/grpc/order_buffer.js +166 -0
  26. package/dist/grpc/program_ids.d.ts +5 -3
  27. package/dist/grpc/program_ids.js +12 -5
  28. package/dist/grpc/types.d.ts +17 -6
  29. package/dist/grpc/types.js +265 -153
  30. package/dist/grpc/yellowstone_parse.d.ts +3 -1
  31. package/dist/grpc/yellowstone_parse.js +13 -10
  32. package/dist/index.d.ts +9 -7
  33. package/dist/index.js +33 -7
  34. package/dist/instr/meteora_damm_ix.js +4 -1
  35. package/dist/instr/meteora_dlmm_ix.d.ts +2 -0
  36. package/dist/instr/meteora_dlmm_ix.js +134 -0
  37. package/dist/instr/meteora_pools_ix.d.ts +2 -0
  38. package/dist/instr/meteora_pools_ix.js +78 -0
  39. package/dist/instr/mod.d.ts +4 -1
  40. package/dist/instr/mod.js +45 -18
  41. package/dist/instr/program_ids.d.ts +1 -5
  42. package/dist/instr/program_ids.js +4 -6
  43. package/dist/instr/pump_fees_ix.d.ts +2 -0
  44. package/dist/instr/pump_fees_ix.js +166 -0
  45. package/dist/instr/pumpfun_ix.js +272 -1
  46. package/dist/instr/pumpswap_ix.js +36 -2
  47. package/dist/instr/raydium_clmm_ix.js +73 -52
  48. package/dist/instr/raydium_launchlab_ix.d.ts +8 -0
  49. package/dist/instr/raydium_launchlab_ix.js +125 -0
  50. package/dist/instr/rust_aliases.d.ts +3 -0
  51. package/dist/instr/rust_aliases.js +7 -1
  52. package/dist/logs/discriminator_lut.d.ts +1 -1
  53. package/dist/logs/discriminator_lut.js +2 -0
  54. package/dist/logs/optimized_matcher.js +130 -25
  55. package/dist/logs/program_log_discriminators.d.ts +10 -0
  56. package/dist/logs/program_log_discriminators.js +10 -0
  57. package/dist/logs/pump.d.ts +2 -0
  58. package/dist/logs/pump.js +122 -2
  59. package/dist/logs/pump_amm.js +1 -1
  60. package/dist/logs/pump_fees.d.ts +23 -0
  61. package/dist/logs/pump_fees.js +364 -0
  62. package/dist/logs/raydium_launchlab.d.ts +10 -0
  63. package/dist/logs/raydium_launchlab.js +84 -0
  64. package/dist/rpc_transaction.d.ts +2 -0
  65. package/dist/rpc_transaction.js +14 -6
  66. package/dist/shredstream/client.d.ts +4 -1
  67. package/dist/shredstream/client.js +18 -14
  68. package/dist/shredstream/index.d.ts +1 -1
  69. package/dist/shredstream/index.js +1 -1
  70. package/dist/shredstream/instruction_parse.d.ts +3 -3
  71. package/dist/shredstream/instruction_parse.js +38 -13
  72. package/dist/util/market.d.ts +18 -0
  73. package/dist/util/market.js +54 -0
  74. 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.PROGRAM_LOG_DISC.RAYDIUM_CLMM_SWAP,
10
- INCREASE_LIQUIDITY: program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
11
- DECREASE_LIQUIDITY: program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
12
- CREATE_POOL: program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_CREATE_POOL,
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
- // Anchor swap:amount, other_amount_threshold, sqrt_price_limit(u128), amount_specified_is_input, a_to_b
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 amount = (0, utils_js_1.readU64LE)(instructionData, 8) ?? 0n;
36
- const other = (0, utils_js_1.readU64LE)(instructionData, 16) ?? 0n;
37
- const sqrt_limit = (0, utils_js_1.readU128LE)(instructionData, 24) ?? 0n;
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, SWAP_ACC.POOL) ?? Z,
46
- sender: (0, utils_js_1.getAccount)(accounts, SWAP_ACC.SENDER) ?? Z,
47
- token_account_0: (0, utils_js_1.getAccount)(accounts, SWAP_ACC.TOKEN_A_USER) ?? Z,
48
- token_account_1: (0, utils_js_1.getAccount)(accounts, SWAP_ACC.TOKEN_B_USER) ?? Z,
49
- amount_0: amount,
50
- amount_1: other,
51
- zero_for_one: a_to_b,
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.INCREASE_LIQUIDITY)) {
61
- // increase_liquidity_v2:liquidity (u128), token_max_a, token_max_b
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.readU128LE)(instructionData, 8) ?? 0n;
65
- const amount0_max = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
66
- const amount1_max = (0, utils_js_1.readU64LE)(instructionData, 32) ?? 0n;
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, 2) ?? Z,
71
- position_nft_mint: (0, utils_js_1.getAccount)(accounts, 3) ?? Z,
72
- user: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
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.DECREASE_LIQUIDITY)) {
80
- // decrease_liquidity:liquidity (u128), token_min_a, token_min_b
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.readU128LE)(instructionData, 8) ?? 0n;
84
- const amount0_min = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
85
- const amount1_min = (0, utils_js_1.readU64LE)(instructionData, 32) ?? 0n;
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, 2) ?? Z,
90
- position_nft_mint: (0, utils_js_1.getAccount)(accounts, 3) ?? Z,
91
- user: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
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 + 16 + 8)
90
+ if (instructionData.length < 8 + 8 + 8)
100
91
  return null;
101
- const sqrt_price_x64 = (0, utils_js_1.readU128LE)(instructionData, 8) ?? 0n;
102
- const open_time = (0, utils_js_1.readU64LE)(instructionData, 24) ?? 0n;
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, 4) ?? Z,
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, 0) ?? Z,
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 raydium_launchpad_js_1 = require("./raydium_launchpad.js");
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
- if (!filter?.include_only?.length)
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 applyPumpfunSecondaryFilter(ev, filter) {
76
- if (!ev || !filter?.include_only?.length)
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 hasSpecific = filter.include_only.some((t) => ["PumpFunBuy", "PumpFunSell", "PumpFunBuyExactSolIn", "PumpFunCreate", "PumpFunCreateV2"].includes(t));
79
- if (!hasSpecific)
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
- return pumpfunTradeMatchesFilter(ev, filter.include_only) ? ev : null;
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 bonk = (0, raydium_launchpad_js_1.parseBonkFromDiscriminator)(disc, data, metadata);
181
- if (bonk)
182
- return bonk;
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,
@@ -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
  };