feat: enhance protocol event parsers and bump to v0.3.5

- Add creator_fee support to Bonk events
- Improve PumpFun/PumpSwap event parsing
- Update documentation and common types
This commit is contained in:
ysq
2025-08-19 21:13:22 +08:00
parent 915209abd8
commit 372bb765af
11 changed files with 193 additions and 45 deletions
@@ -53,6 +53,15 @@ pub struct PumpSwapBuyEvent {
pub coin_creator_vault_authority: Pubkey,
}
pub const PUMP_SWAP_BUY_EVENT_LOG_SIZE: usize = 385;
pub fn pump_swap_buy_event_log_decode(data: &[u8]) -> Option<PumpSwapBuyEvent> {
if data.len() < PUMP_SWAP_BUY_EVENT_LOG_SIZE {
return None;
}
borsh::from_slice::<PumpSwapBuyEvent>(&data[..PUMP_SWAP_BUY_EVENT_LOG_SIZE]).ok()
}
// 使用宏生成UnifiedEvent实现,指定需要合并的字段
impl_unified_event!(
PumpSwapBuyEvent,
@@ -123,6 +132,15 @@ pub struct PumpSwapSellEvent {
pub coin_creator_vault_authority: Pubkey,
}
pub const PUMP_SWAP_SELL_EVENT_LOG_SIZE: usize = 352;
pub fn pump_swap_sell_event_log_decode(data: &[u8]) -> Option<PumpSwapSellEvent> {
if data.len() < PUMP_SWAP_SELL_EVENT_LOG_SIZE {
return None;
}
borsh::from_slice::<PumpSwapSellEvent>(&data[..PUMP_SWAP_SELL_EVENT_LOG_SIZE]).ok()
}
// 使用宏生成UnifiedEvent实现,指定需要合并的字段
impl_unified_event!(
PumpSwapSellEvent,
@@ -184,6 +202,15 @@ pub struct PumpSwapCreatePoolEvent {
pub pool_quote_token_account: Pubkey,
}
pub const PUMP_SWAP_CREATE_POOL_EVENT_LOG_SIZE: usize = 325;
pub fn pump_swap_create_pool_event_log_decode(data: &[u8]) -> Option<PumpSwapCreatePoolEvent> {
if data.len() < PUMP_SWAP_CREATE_POOL_EVENT_LOG_SIZE {
return None;
}
borsh::from_slice::<PumpSwapCreatePoolEvent>(&data[..PUMP_SWAP_CREATE_POOL_EVENT_LOG_SIZE]).ok()
}
impl_unified_event!(
PumpSwapCreatePoolEvent,
timestamp,
@@ -239,6 +266,15 @@ pub struct PumpSwapDepositEvent {
pub pool_quote_token_account: Pubkey,
}
pub const PUMP_SWAP_DEPOSIT_EVENT_LOG_SIZE: usize = 248;
pub fn pump_swap_deposit_event_log_decode(data: &[u8]) -> Option<PumpSwapDepositEvent> {
if data.len() < PUMP_SWAP_DEPOSIT_EVENT_LOG_SIZE {
return None;
}
borsh::from_slice::<PumpSwapDepositEvent>(&data[..PUMP_SWAP_DEPOSIT_EVENT_LOG_SIZE]).ok()
}
impl_unified_event!(
PumpSwapDepositEvent,
timestamp,
@@ -290,6 +326,15 @@ pub struct PumpSwapWithdrawEvent {
pub pool_quote_token_account: Pubkey,
}
pub const PUMP_SWAP_WITHDRAW_EVENT_LOG_SIZE: usize = 248;
pub fn pump_swap_withdraw_event_log_decode(data: &[u8]) -> Option<PumpSwapWithdrawEvent> {
if data.len() < PUMP_SWAP_WITHDRAW_EVENT_LOG_SIZE {
return None;
}
borsh::from_slice::<PumpSwapWithdrawEvent>(&data[..PUMP_SWAP_WITHDRAW_EVENT_LOG_SIZE]).ok()
}
impl_unified_event!(
PumpSwapWithdrawEvent,
timestamp,