mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-08-08 14:47:45 +00:00
227 lines
13 KiB
Rust
Executable File
227 lines
13 KiB
Rust
Executable File
use crate::streaming::event_parser::common::EventMetadata;
|
|
use crate::streaming::event_parser::core::account_event_parser::{
|
|
NonceAccountEvent, TokenAccountEvent, TokenInfoEvent,
|
|
};
|
|
use crate::streaming::event_parser::core::common_event_parser::{
|
|
SetComputeUnitLimitEvent, SetComputeUnitPriceEvent,
|
|
};
|
|
use crate::streaming::event_parser::protocols::block::block_meta_event::BlockMetaEvent;
|
|
use crate::streaming::event_parser::protocols::bonk::events::*;
|
|
use crate::streaming::event_parser::protocols::meteora_damm_v2::events::*;
|
|
use crate::streaming::event_parser::protocols::meteora_dlmm::events::*;
|
|
use crate::streaming::event_parser::protocols::pumpfun::events::*;
|
|
use crate::streaming::event_parser::protocols::pumpswap::events::*;
|
|
use crate::streaming::event_parser::protocols::raydium_amm_v4::events::*;
|
|
use crate::streaming::event_parser::protocols::raydium_clmm::events::*;
|
|
use crate::streaming::event_parser::protocols::raydium_cpmm::events::*;
|
|
use crate::streaming::event_parser::protocols::whirlpool::events::*;
|
|
use serde::{Deserialize, Serialize};
|
|
use std::fmt::Debug;
|
|
|
|
/// Unified Event Enum - Replaces the trait-based approach with a type-safe enum
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
pub enum DexEvent {
|
|
// Bonk events
|
|
BonkTradeEvent(BonkTradeEvent),
|
|
BonkPoolCreateEvent(BonkPoolCreateEvent),
|
|
BonkMigrateToAmmEvent(BonkMigrateToAmmEvent),
|
|
BonkMigrateToCpswapEvent(BonkMigrateToCpswapEvent),
|
|
BonkPoolStateAccountEvent(BonkPoolStateAccountEvent),
|
|
BonkGlobalConfigAccountEvent(BonkGlobalConfigAccountEvent),
|
|
BonkPlatformConfigAccountEvent(BonkPlatformConfigAccountEvent),
|
|
|
|
// PumpFun events
|
|
PumpFunCreateTokenEvent(PumpFunCreateTokenEvent),
|
|
PumpFunCreateV2TokenEvent(PumpFunCreateV2TokenEvent),
|
|
PumpFunTradeEvent(PumpFunTradeEvent),
|
|
PumpFunMigrateEvent(PumpFunMigrateEvent),
|
|
PumpFunBondingCurveAccountEvent(PumpFunBondingCurveAccountEvent),
|
|
PumpFunGlobalAccountEvent(PumpFunGlobalAccountEvent),
|
|
|
|
// PumpSwap events
|
|
PumpSwapBuyEvent(PumpSwapBuyEvent),
|
|
PumpSwapSellEvent(PumpSwapSellEvent),
|
|
PumpSwapCreatePoolEvent(PumpSwapCreatePoolEvent),
|
|
PumpSwapDepositEvent(PumpSwapDepositEvent),
|
|
PumpSwapWithdrawEvent(PumpSwapWithdrawEvent),
|
|
PumpSwapGlobalConfigAccountEvent(PumpSwapGlobalConfigAccountEvent),
|
|
PumpSwapPoolAccountEvent(PumpSwapPoolAccountEvent),
|
|
|
|
// Raydium AMM V4 events
|
|
RaydiumAmmV4SwapEvent(RaydiumAmmV4SwapEvent),
|
|
RaydiumAmmV4DepositEvent(RaydiumAmmV4DepositEvent),
|
|
RaydiumAmmV4WithdrawEvent(RaydiumAmmV4WithdrawEvent),
|
|
RaydiumAmmV4WithdrawPnlEvent(RaydiumAmmV4WithdrawPnlEvent),
|
|
RaydiumAmmV4Initialize2Event(RaydiumAmmV4Initialize2Event),
|
|
RaydiumAmmV4AmmInfoAccountEvent(RaydiumAmmV4AmmInfoAccountEvent),
|
|
|
|
// Raydium CLMM events
|
|
RaydiumClmmSwapEvent(RaydiumClmmSwapEvent),
|
|
RaydiumClmmSwapV2Event(RaydiumClmmSwapV2Event),
|
|
RaydiumClmmClosePositionEvent(RaydiumClmmClosePositionEvent),
|
|
RaydiumClmmIncreaseLiquidityV2Event(RaydiumClmmIncreaseLiquidityV2Event),
|
|
RaydiumClmmDecreaseLiquidityV2Event(RaydiumClmmDecreaseLiquidityV2Event),
|
|
RaydiumClmmCreatePoolEvent(RaydiumClmmCreatePoolEvent),
|
|
RaydiumClmmOpenPositionWithToken22NftEvent(RaydiumClmmOpenPositionWithToken22NftEvent),
|
|
RaydiumClmmOpenPositionV2Event(RaydiumClmmOpenPositionV2Event),
|
|
RaydiumClmmAmmConfigAccountEvent(RaydiumClmmAmmConfigAccountEvent),
|
|
RaydiumClmmPoolStateAccountEvent(RaydiumClmmPoolStateAccountEvent),
|
|
RaydiumClmmTickArrayStateAccountEvent(RaydiumClmmTickArrayStateAccountEvent),
|
|
RaydiumClmmTickArrayBitmapExtensionAccountEvent(RaydiumClmmTickArrayBitmapExtensionAccountEvent),
|
|
|
|
// Raydium CPMM events
|
|
RaydiumCpmmSwapEvent(RaydiumCpmmSwapEvent),
|
|
RaydiumCpmmDepositEvent(RaydiumCpmmDepositEvent),
|
|
RaydiumCpmmWithdrawEvent(RaydiumCpmmWithdrawEvent),
|
|
RaydiumCpmmInitializeEvent(RaydiumCpmmInitializeEvent),
|
|
RaydiumCpmmAmmConfigAccountEvent(RaydiumCpmmAmmConfigAccountEvent),
|
|
RaydiumCpmmPoolStateAccountEvent(RaydiumCpmmPoolStateAccountEvent),
|
|
|
|
// Meteora DAMM v2 events
|
|
MeteoraDammV2SwapEvent(MeteoraDammV2SwapEvent),
|
|
MeteoraDammV2Swap2Event(MeteoraDammV2Swap2Event),
|
|
MeteoraDammV2InitializePoolEvent(MeteoraDammV2InitializePoolEvent),
|
|
MeteoraDammV2InitializeCustomizablePoolEvent(MeteoraDammV2InitializeCustomizablePoolEvent),
|
|
MeteoraDammV2InitializePoolWithDynamicConfigEvent(MeteoraDammV2InitializePoolWithDynamicConfigEvent),
|
|
|
|
// Meteora DLMM events
|
|
MeteoraDlmmLbPairAccountEvent(MeteoraDlmmLbPairAccountEvent),
|
|
|
|
// Whirlpool events
|
|
WhirlpoolAccountEvent(WhirlpoolAccountEvent),
|
|
|
|
// Common events
|
|
TokenAccountEvent(TokenAccountEvent),
|
|
NonceAccountEvent(NonceAccountEvent),
|
|
TokenInfoEvent(TokenInfoEvent),
|
|
BlockMetaEvent(BlockMetaEvent),
|
|
SetComputeUnitLimitEvent(SetComputeUnitLimitEvent),
|
|
SetComputeUnitPriceEvent(SetComputeUnitPriceEvent),
|
|
}
|
|
|
|
impl DexEvent {
|
|
pub fn metadata(&self) -> &EventMetadata {
|
|
match self {
|
|
DexEvent::BonkTradeEvent(e) => &e.metadata,
|
|
DexEvent::BonkPoolCreateEvent(e) => &e.metadata,
|
|
DexEvent::BonkMigrateToAmmEvent(e) => &e.metadata,
|
|
DexEvent::BonkMigrateToCpswapEvent(e) => &e.metadata,
|
|
DexEvent::BonkPoolStateAccountEvent(e) => &e.metadata,
|
|
DexEvent::BonkGlobalConfigAccountEvent(e) => &e.metadata,
|
|
DexEvent::BonkPlatformConfigAccountEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunCreateTokenEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunCreateV2TokenEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunTradeEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunMigrateEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunBondingCurveAccountEvent(e) => &e.metadata,
|
|
DexEvent::PumpFunGlobalAccountEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapBuyEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapSellEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapCreatePoolEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapDepositEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapWithdrawEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapGlobalConfigAccountEvent(e) => &e.metadata,
|
|
DexEvent::PumpSwapPoolAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4SwapEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4DepositEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4WithdrawEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4WithdrawPnlEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4Initialize2Event(e) => &e.metadata,
|
|
DexEvent::RaydiumAmmV4AmmInfoAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmSwapEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmSwapV2Event(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmClosePositionEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmIncreaseLiquidityV2Event(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmDecreaseLiquidityV2Event(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmCreatePoolEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmOpenPositionWithToken22NftEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmOpenPositionV2Event(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmAmmConfigAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmPoolStateAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmTickArrayStateAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumClmmTickArrayBitmapExtensionAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmSwapEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmDepositEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmWithdrawEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmInitializeEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmAmmConfigAccountEvent(e) => &e.metadata,
|
|
DexEvent::RaydiumCpmmPoolStateAccountEvent(e) => &e.metadata,
|
|
DexEvent::MeteoraDammV2SwapEvent(e) => &e.metadata,
|
|
DexEvent::MeteoraDammV2Swap2Event(e) => &e.metadata,
|
|
DexEvent::MeteoraDammV2InitializePoolEvent(e) => &e.metadata,
|
|
DexEvent::MeteoraDammV2InitializeCustomizablePoolEvent(e) => &e.metadata,
|
|
DexEvent::MeteoraDammV2InitializePoolWithDynamicConfigEvent(e) => &e.metadata,
|
|
DexEvent::MeteoraDlmmLbPairAccountEvent(e) => &e.metadata,
|
|
DexEvent::WhirlpoolAccountEvent(e) => &e.metadata,
|
|
DexEvent::TokenAccountEvent(e) => &e.metadata,
|
|
DexEvent::NonceAccountEvent(e) => &e.metadata,
|
|
DexEvent::TokenInfoEvent(e) => &e.metadata,
|
|
DexEvent::BlockMetaEvent(e) => &e.metadata,
|
|
DexEvent::SetComputeUnitLimitEvent(e) => &e.metadata,
|
|
DexEvent::SetComputeUnitPriceEvent(e) => &e.metadata,
|
|
}
|
|
}
|
|
|
|
pub fn metadata_mut(&mut self) -> &mut EventMetadata {
|
|
match self {
|
|
DexEvent::BonkTradeEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkPoolCreateEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkMigrateToAmmEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkMigrateToCpswapEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkPoolStateAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkGlobalConfigAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::BonkPlatformConfigAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunCreateTokenEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunCreateV2TokenEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunTradeEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunMigrateEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunBondingCurveAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpFunGlobalAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapBuyEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapSellEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapCreatePoolEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapDepositEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapWithdrawEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapGlobalConfigAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::PumpSwapPoolAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4SwapEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4DepositEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4WithdrawEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4WithdrawPnlEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4Initialize2Event(e) => &mut e.metadata,
|
|
DexEvent::RaydiumAmmV4AmmInfoAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmSwapEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmSwapV2Event(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmClosePositionEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmIncreaseLiquidityV2Event(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmDecreaseLiquidityV2Event(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmCreatePoolEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmOpenPositionWithToken22NftEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmOpenPositionV2Event(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmAmmConfigAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmPoolStateAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmTickArrayStateAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumClmmTickArrayBitmapExtensionAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmSwapEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmDepositEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmWithdrawEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmInitializeEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmAmmConfigAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::RaydiumCpmmPoolStateAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDammV2SwapEvent(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDammV2Swap2Event(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDammV2InitializePoolEvent(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDammV2InitializeCustomizablePoolEvent(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDammV2InitializePoolWithDynamicConfigEvent(e) => &mut e.metadata,
|
|
DexEvent::MeteoraDlmmLbPairAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::WhirlpoolAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::TokenAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::NonceAccountEvent(e) => &mut e.metadata,
|
|
DexEvent::TokenInfoEvent(e) => &mut e.metadata,
|
|
DexEvent::BlockMetaEvent(e) => &mut e.metadata,
|
|
DexEvent::SetComputeUnitLimitEvent(e) => &mut e.metadata,
|
|
DexEvent::SetComputeUnitPriceEvent(e) => &mut e.metadata,
|
|
}
|
|
}
|
|
}
|