sol-parser-sdk-nodejs 0.4.0 → 0.4.4

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 (50) hide show
  1. package/README.md +6 -0
  2. package/README_CN.md +6 -0
  3. package/dist/accounts/mod.d.ts +1 -0
  4. package/dist/accounts/mod.js +14 -1
  5. package/dist/accounts/pumpfun.d.ts +6 -0
  6. package/dist/accounts/pumpfun.js +157 -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_fill_pumpfun.js +17 -0
  10. package/dist/core/dex_event.d.ts +147 -0
  11. package/dist/core/pumpfun_fee_enrich.d.ts +4 -0
  12. package/dist/core/pumpfun_fee_enrich.js +80 -0
  13. package/dist/core/unified_parser.js +2 -0
  14. package/dist/grpc/client.d.ts +26 -1
  15. package/dist/grpc/client.js +279 -0
  16. package/dist/grpc/log_instr_dedup.d.ts +2 -0
  17. package/dist/grpc/log_instr_dedup.js +330 -0
  18. package/dist/grpc/order_buffer.d.ts +27 -0
  19. package/dist/grpc/order_buffer.js +166 -0
  20. package/dist/grpc/program_ids.d.ts +1 -0
  21. package/dist/grpc/program_ids.js +2 -1
  22. package/dist/grpc/types.d.ts +5 -1
  23. package/dist/grpc/types.js +101 -0
  24. package/dist/grpc/yellowstone_parse.d.ts +3 -1
  25. package/dist/grpc/yellowstone_parse.js +13 -10
  26. package/dist/index.d.ts +8 -7
  27. package/dist/index.js +16 -4
  28. package/dist/instr/mod.d.ts +1 -0
  29. package/dist/instr/mod.js +9 -1
  30. package/dist/instr/program_ids.d.ts +1 -1
  31. package/dist/instr/program_ids.js +2 -1
  32. package/dist/instr/pump_fees_ix.d.ts +2 -0
  33. package/dist/instr/pump_fees_ix.js +166 -0
  34. package/dist/instr/pumpfun_ix.js +57 -0
  35. package/dist/instr/raydium_clmm_ix.js +73 -52
  36. package/dist/instr/rust_aliases.d.ts +1 -0
  37. package/dist/instr/rust_aliases.js +3 -1
  38. package/dist/logs/discriminator_lut.d.ts +1 -1
  39. package/dist/logs/discriminator_lut.js +2 -0
  40. package/dist/logs/optimized_matcher.js +120 -20
  41. package/dist/logs/program_log_discriminators.d.ts +10 -0
  42. package/dist/logs/program_log_discriminators.js +10 -0
  43. package/dist/logs/pump.d.ts +2 -0
  44. package/dist/logs/pump.js +51 -4
  45. package/dist/logs/pump_fees.d.ts +23 -0
  46. package/dist/logs/pump_fees.js +364 -0
  47. package/dist/rpc_transaction.d.ts +2 -0
  48. package/dist/rpc_transaction.js +14 -6
  49. package/dist/shredstream/instruction_parse.js +2 -0
  50. package/package.json +1 -1
@@ -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"));
@@ -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,22 @@ function pumpfunTradeMatchesFilter(ev, includeOnly) {
72
143
  return includeOnly.includes("PumpFunCreateV2");
73
144
  return false;
74
145
  }
146
+ function eventTypeFromDexEvent(ev) {
147
+ const key = Object.keys(ev)[0];
148
+ return key ? key : null;
149
+ }
75
150
  function applyPumpfunSecondaryFilter(ev, filter) {
76
- if (!ev || !filter?.include_only?.length)
77
- return ev;
78
- const hasSpecific = filter.include_only.some((t) => ["PumpFunBuy", "PumpFunSell", "PumpFunBuyExactSolIn", "PumpFunCreate", "PumpFunCreateV2"].includes(t));
79
- if (!hasSpecific)
151
+ if (!ev || !filter)
80
152
  return ev;
81
- return pumpfunTradeMatchesFilter(ev, filter.include_only) ? ev : null;
153
+ if (filter.include_only?.length) {
154
+ const hasSpecific = filter.include_only.some((t) => ["PumpFunBuy", "PumpFunSell", "PumpFunBuyExactSolIn", "PumpFunCreate", "PumpFunCreateV2"].includes(t));
155
+ if (hasSpecific && !pumpfunTradeMatchesFilter(ev, filter.include_only))
156
+ return null;
157
+ }
158
+ const actual = eventTypeFromDexEvent(ev);
159
+ if (actual && !filter.shouldInclude(actual))
160
+ return null;
161
+ return ev;
82
162
  }
83
163
  function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs, eventTypeFilter, isCreatedBuy, recentBlockhash) {
84
164
  const buf = (0, program_data_js_1.decodeProgramDataLine)(log);
@@ -116,6 +196,26 @@ function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvU
116
196
  return (0, pump_js_1.parseCreateFromData)(data, metadata);
117
197
  case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE:
118
198
  return (0, pump_js_1.parseMigrateFromData)(data, metadata);
199
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE_BONDING_CURVE_CREATOR:
200
+ return (0, pump_js_1.parseMigrateBondingCurveCreatorFromData)(data, metadata);
201
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_CREATE_FEE_SHARING_CONFIG:
202
+ return (0, pump_fees_js_1.parseCreateFeeSharingConfigFromData)(data, metadata);
203
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_INITIALIZE_FEE_CONFIG:
204
+ return (0, pump_fees_js_1.parseInitializeFeeConfigFromData)(data, metadata);
205
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_RESET_FEE_SHARING_CONFIG:
206
+ return (0, pump_fees_js_1.parseResetFeeSharingConfigFromData)(data, metadata);
207
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY:
208
+ return (0, pump_fees_js_1.parseRevokeFeeSharingAuthorityFromData)(data, metadata);
209
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY:
210
+ return (0, pump_fees_js_1.parseTransferFeeSharingAuthorityFromData)(data, metadata);
211
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_ADMIN:
212
+ return (0, pump_fees_js_1.parseUpdateAdminFromData)(data, metadata);
213
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_CONFIG:
214
+ return (0, pump_fees_js_1.parseUpdateFeeConfigFromData)(data, metadata);
215
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPDATE_FEE_SHARES:
216
+ return (0, pump_fees_js_1.parseUpdateFeeSharesFromData)(data, metadata);
217
+ case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMP_FEES_UPSERT_FEE_TIERS:
218
+ return (0, pump_fees_js_1.parseUpsertFeeTiersFromData)(data, metadata);
119
219
  case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_CREATE_POOL:
120
220
  return (0, pump_amm_js_1.parseCreatePoolFromData)(data, metadata);
121
221
  case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_ADD_LIQUIDITY:
@@ -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
  };
package/dist/logs/pump.js CHANGED
@@ -4,6 +4,7 @@ exports.parsePumpFunLogDecoded = parsePumpFunLogDecoded;
4
4
  exports.parseTradeFromData = parseTradeFromData;
5
5
  exports.parseCreateFromData = parseCreateFromData;
6
6
  exports.parseMigrateFromData = parseMigrateFromData;
7
+ exports.parseMigrateBondingCurveCreatorFromData = parseMigrateBondingCurveCreatorFromData;
7
8
  exports.pumpDiscriminators = pumpDiscriminators;
8
9
  const dex_event_js_1 = require("../core/dex_event.js");
9
10
  const binary_js_1 = require("../util/binary.js");
@@ -16,6 +17,7 @@ function disc(bytes) {
16
17
  const DISC_CREATE = disc([27, 114, 169, 77, 222, 235, 99, 118]);
17
18
  const DISC_TRADE = disc([189, 219, 127, 211, 78, 230, 97, 238]);
18
19
  const DISC_MIGRATE = disc([189, 233, 93, 185, 92, 148, 234, 148]);
20
+ const DISC_MIGRATE_BONDING_CURVE_CREATOR = disc([155, 167, 104, 220, 213, 108, 243, 3]);
19
21
  function bnU64(v) {
20
22
  return v ?? 0n;
21
23
  }
@@ -33,6 +35,9 @@ function parsePumpFunLogDecoded(programData, metadata) {
33
35
  return parseTradeFromData(data, metadata, false);
34
36
  if (disc === DISC_MIGRATE)
35
37
  return parseMigrateFromData(data, metadata);
38
+ if (disc === DISC_MIGRATE_BONDING_CURVE_CREATOR) {
39
+ return parseMigrateBondingCurveCreatorFromData(data, metadata);
40
+ }
36
41
  return null;
37
42
  }
38
43
  function parseTradeFromData(data, metadata, isCreatedBuy) {
@@ -138,12 +143,13 @@ function parseTradeFromData(data, metadata, isCreatedBuy) {
138
143
  token_program: (0, dex_event_js_1.defaultPubkey)(),
139
144
  creator_vault: (0, dex_event_js_1.defaultPubkey)(),
140
145
  };
141
- if (ix_name === "buy")
146
+ if (ix_name === "buy" || ix_name === "buy_v2")
142
147
  return { PumpFunBuy: trade };
143
- if (ix_name === "sell")
148
+ if (ix_name === "sell" || ix_name === "sell_v2")
144
149
  return { PumpFunSell: trade };
145
- if (ix_name === "buy_exact_sol_in")
150
+ if (ix_name === "buy_exact_sol_in" || ix_name === "buy_exact_quote_in_v2") {
146
151
  return { PumpFunBuyExactSolIn: trade };
152
+ }
147
153
  return { PumpFunTrade: trade };
148
154
  }
149
155
  function parseCreateFromData(data, metadata) {
@@ -245,7 +251,48 @@ function parseMigrateFromData(data, metadata) {
245
251
  };
246
252
  return { PumpFunMigrate: ev };
247
253
  }
254
+ function parseMigrateBondingCurveCreatorFromData(data, metadata) {
255
+ if (data.length < 8 + 32 * 5)
256
+ return null;
257
+ let o = 0;
258
+ const timestamp = bnI64((0, binary_js_1.readI64LE)(data, o));
259
+ o += 8;
260
+ const mint = (0, binary_js_1.readPubkey)(data, o);
261
+ if (!mint)
262
+ return null;
263
+ o += 32;
264
+ const bonding_curve = (0, binary_js_1.readPubkey)(data, o);
265
+ if (!bonding_curve)
266
+ return null;
267
+ o += 32;
268
+ const sharing_config = (0, binary_js_1.readPubkey)(data, o);
269
+ if (!sharing_config)
270
+ return null;
271
+ o += 32;
272
+ const old_creator = (0, binary_js_1.readPubkey)(data, o);
273
+ if (!old_creator)
274
+ return null;
275
+ o += 32;
276
+ const new_creator = (0, binary_js_1.readPubkey)(data, o);
277
+ if (!new_creator)
278
+ return null;
279
+ const ev = {
280
+ metadata,
281
+ timestamp,
282
+ mint,
283
+ bonding_curve,
284
+ sharing_config,
285
+ old_creator,
286
+ new_creator,
287
+ };
288
+ return { PumpFunMigrateBondingCurveCreator: ev };
289
+ }
248
290
  /** u64 discriminator little-endian */
249
291
  function pumpDiscriminators() {
250
- return { CREATE: DISC_CREATE, TRADE: DISC_TRADE, MIGRATE: DISC_MIGRATE };
292
+ return {
293
+ CREATE: DISC_CREATE,
294
+ TRADE: DISC_TRADE,
295
+ MIGRATE: DISC_MIGRATE,
296
+ MIGRATE_BONDING_CURVE_CREATOR: DISC_MIGRATE_BONDING_CURVE_CREATOR,
297
+ };
251
298
  }
@@ -0,0 +1,23 @@
1
+ import type { EventMetadata } from "../core/metadata.js";
2
+ import type { DexEvent, PumpFeesFeeTier, PumpFeesFees, PumpFeesShareholder } from "../core/dex_event.js";
3
+ export declare function readFeesAt(data: Uint8Array, offset: number): {
4
+ value: PumpFeesFees;
5
+ next: number;
6
+ } | null;
7
+ export declare function readShareholdersVec(data: Uint8Array, offset: number): {
8
+ value: PumpFeesShareholder[];
9
+ next: number;
10
+ } | null;
11
+ export declare function readFeeTiersVec(data: Uint8Array, offset: number): {
12
+ value: PumpFeesFeeTier[];
13
+ next: number;
14
+ } | null;
15
+ export declare function parseCreateFeeSharingConfigFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
16
+ export declare function parseInitializeFeeConfigFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
17
+ export declare function parseResetFeeSharingConfigFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
18
+ export declare function parseRevokeFeeSharingAuthorityFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
19
+ export declare function parseTransferFeeSharingAuthorityFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
20
+ export declare function parseUpdateAdminFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
21
+ export declare function parseUpdateFeeConfigFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
22
+ export declare function parseUpdateFeeSharesFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
23
+ export declare function parseUpsertFeeTiersFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;