Release solana-streamer-sdk v1.5.4

This commit is contained in:
0xfnzero
2026-05-28 04:58:18 +08:00
parent 4cb22592e8
commit 5a282bd84d
8 changed files with 92 additions and 29 deletions
+7 -3
View File
@@ -187,7 +187,10 @@ fn push_streamer_event_sdk_grpc_types(
out.push(Sdk::PumpFunCreate);
out.push(Sdk::PumpFunCreateV2);
}
St::PumpFunCreateV2Token => out.push(Sdk::PumpFunCreateV2),
St::PumpFunCreateV2Token => {
out.push(Sdk::PumpFunCreate);
out.push(Sdk::PumpFunCreateV2);
}
St::PumpFunBuy => {
if matches!(mode, FilterMapMode::Include) {
out.push(Sdk::PumpFunTrade);
@@ -423,6 +426,7 @@ fn event_type_matches(filter_type: &EventType, event_type: &EventType) -> bool {
|| matches!(
(filter_type, event_type),
(EventType::PumpFunCreateToken, EventType::PumpFunCreateV2Token)
| (EventType::PumpFunCreateV2Token, EventType::PumpFunCreateToken)
| (EventType::PumpFunBuy, EventType::PumpFunBuyExactSolIn)
| (EventType::PumpFunBuyExactSolIn, EventType::PumpFunBuy)
| (EventType::TokenAccount, EventType::TokenInfo)
@@ -578,11 +582,11 @@ mod tests {
include: vec![EventType::PumpFunCreateV2Token],
..Default::default()
};
assert!(!f.passes_event_type(&EventType::PumpFunCreateToken));
assert!(f.passes_event_type(&EventType::PumpFunCreateToken));
assert!(f.passes_event_type(&EventType::PumpFunCreateV2Token));
let sdk_f = build_sdk_parse_event_filter(Some(&f)).expect("mapped");
assert!(!sdk_f.should_include(SdkGrpcEventType::PumpFunCreate));
assert!(sdk_f.should_include(SdkGrpcEventType::PumpFunCreate));
assert!(sdk_f.should_include(SdkGrpcEventType::PumpFunCreateV2));
}
@@ -52,6 +52,18 @@ pub struct PumpFunCreateTokenEvent {
pub event_authority: Pubkey,
#[borsh(skip)]
pub program: Pubkey,
#[borsh(skip)]
pub mayhem_program_id: Pubkey,
#[borsh(skip)]
pub global_params: Pubkey,
#[borsh(skip)]
pub sol_vault: Pubkey,
#[borsh(skip)]
pub mayhem_state: Pubkey,
#[borsh(skip)]
pub mayhem_token_vault: Pubkey,
#[borsh(skip)]
pub observed_fee_recipient: Pubkey,
}
/// CreateV2 事件:与 create_v2 指令 16 个账户一致(见 parser 注释)。
+2 -2
View File
@@ -60,10 +60,10 @@ pub(crate) fn convert_parser_event(
bt,
recv_wall_us,
ProtocolType::PumpFun,
EventType::PumpFunCreateV2Token,
EventType::PumpFunCreateToken,
pump_program(),
);
Some(DexEvent::PumpFunCreateV2TokenEvent(pumpfun_create_v2_from_parser(c, meta)))
Some(DexEvent::PumpFunCreateTokenEvent(pumpfun_create_token_from_parser_v2(c, meta)))
}
PbDexEvent::PumpFunMigrate(m) => {
let meta = adapt_pm(
+41 -2
View File
@@ -41,8 +41,9 @@ mod tests {
use crate::streaming::event_parser::{DexEvent, Protocol};
use sol_parser_sdk::core::events::{
BonkTradeEvent as PbBonkTrade, EventMetadata, MeteoraDlmmSwapEvent as PbDlmmSwap,
OrcaWhirlpoolSwapEvent as PbOrcaSwap, PumpFunTradeEvent as PbPumpTrade,
TokenInfoEvent as PbTokenInfo, TradeDirection as PbBonkDir,
OrcaWhirlpoolSwapEvent as PbOrcaSwap, PumpFunCreateV2TokenEvent as PbPumpCreateV2,
PumpFunTradeEvent as PbPumpTrade, TokenInfoEvent as PbTokenInfo,
TradeDirection as PbBonkDir,
};
use sol_parser_sdk::DexEvent as PbDexEvent;
use solana_sdk::{pubkey::Pubkey, signature::Signature};
@@ -141,6 +142,44 @@ mod tests {
}
}
#[test]
fn converts_pumpfun_create_v2_as_canonical_create() {
let mint = Pubkey::new_unique();
let global = Pubkey::new_unique();
let event_authority = Pubkey::new_unique();
let c = PbPumpCreateV2 {
metadata: EventMetadata {
signature: Signature::default(),
slot: 42,
tx_index: 7,
block_time_us: 1_000_000,
grpc_recv_us: 88,
recent_blockhash: None,
},
name: "Token".to_string(),
symbol: "TOK".to_string(),
mint,
global,
event_authority,
is_mayhem_mode: true,
is_cashback_enabled: true,
..Default::default()
};
let ev = convert_parser_event(PbDexEvent::PumpFunCreateV2(c), None, 999).expect("convert");
match ev {
DexEvent::PumpFunCreateTokenEvent(st) => {
assert_eq!(st.metadata.event_type, EventType::PumpFunCreateToken);
assert_eq!(st.mint, mint);
assert_eq!(st.global, global);
assert_eq!(st.event_authority, event_authority);
assert!(st.is_mayhem_mode);
assert!(st.is_cashback_enabled);
}
other => panic!("expected canonical PumpFunCreateTokenEvent, got {other:?}"),
}
}
#[test]
fn converts_pumpfun_buy_exact_quote_in_v2_as_buy_event() {
let mut t = PbPumpTrade::default();
@@ -7,12 +7,11 @@ use crate::streaming::event_parser::protocols::pumpfun::events::{
PumpFeesRevokeFeeSharingAuthorityEvent, PumpFeesShareholder,
PumpFeesTransferFeeSharingAuthorityEvent, PumpFeesUpdateAdminEvent,
PumpFeesUpdateFeeConfigEvent, PumpFeesUpdateFeeSharesEvent, PumpFeesUpsertFeeTiersEvent,
PumpFunBondingCurveAccountEvent, PumpFunCreateTokenEvent, PumpFunCreateV2TokenEvent,
PumpFunFeeConfig, PumpFunFeeConfigAccountEvent, PumpFunGlobalAccountEvent,
PumpFunGlobalVolumeAccumulator, PumpFunGlobalVolumeAccumulatorAccountEvent,
PumpFunMigrateBondingCurveCreatorEvent, PumpFunMigrateEvent, PumpFunSharingConfig,
PumpFunSharingConfigAccountEvent, PumpFunTradeEvent, PumpFunUserVolumeAccumulator,
PumpFunUserVolumeAccumulatorAccountEvent,
PumpFunBondingCurveAccountEvent, PumpFunCreateTokenEvent, PumpFunFeeConfig,
PumpFunFeeConfigAccountEvent, PumpFunGlobalAccountEvent, PumpFunGlobalVolumeAccumulator,
PumpFunGlobalVolumeAccumulatorAccountEvent, PumpFunMigrateBondingCurveCreatorEvent,
PumpFunMigrateEvent, PumpFunSharingConfig, PumpFunSharingConfigAccountEvent, PumpFunTradeEvent,
PumpFunUserVolumeAccumulator, PumpFunUserVolumeAccumulatorAccountEvent,
};
use crate::streaming::event_parser::protocols::pumpfun::types::{BondingCurve, Global};
use crate::streaming::event_parser::protocols::pumpswap::events::{
@@ -65,11 +64,11 @@ pub(crate) fn pumpfun_create_token_from_parser(
}
}
pub(crate) fn pumpfun_create_v2_from_parser(
pub(crate) fn pumpfun_create_token_from_parser_v2(
c: sol_parser_sdk::core::events::PumpFunCreateV2TokenEvent,
meta: EventMetadata,
) -> PumpFunCreateV2TokenEvent {
PumpFunCreateV2TokenEvent {
) -> PumpFunCreateTokenEvent {
PumpFunCreateTokenEvent {
metadata: meta,
name: c.name,
symbol: c.symbol,
@@ -100,6 +99,7 @@ pub(crate) fn pumpfun_create_v2_from_parser(
mayhem_token_vault: c.mayhem_token_vault,
event_authority: c.event_authority,
program: c.program,
..Default::default()
}
}