mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-08-13 08:58:05 +00:00
Merge pull request #1 from 0xfnzero/feat/dlmm_account
Feat/dlmm account
This commit is contained in:
@@ -11,9 +11,11 @@ use crate::streaming::event_parser::{
|
||||
common::EventMetadata,
|
||||
core::common_event_parser::{CommonEventParser, COMPUTE_BUDGET_PROGRAM_ID},
|
||||
protocols::{
|
||||
bonk::parser as bonk, meteora_damm_v2::parser as meteora_damm_v2, pumpfun::parser as pumpfun,
|
||||
bonk::parser as bonk, meteora_damm_v2::parser as meteora_damm_v2,
|
||||
meteora_dlmm::parser as meteora_dlmm, pumpfun::parser as pumpfun,
|
||||
pumpswap::parser as pumpswap, raydium_amm_v4::parser as raydium_amm_v4,
|
||||
raydium_clmm::parser as raydium_clmm, raydium_cpmm::parser as raydium_cpmm,
|
||||
whirlpool::parser as whirlpool,
|
||||
},
|
||||
DexEvent, Protocol,
|
||||
};
|
||||
@@ -54,6 +56,8 @@ impl EventDispatcher {
|
||||
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
|
||||
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
|
||||
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
|
||||
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
|
||||
Protocol::Whirlpool => ProtocolType::Whirlpool,
|
||||
};
|
||||
|
||||
match protocol {
|
||||
@@ -99,6 +103,14 @@ impl EventDispatcher {
|
||||
accounts,
|
||||
metadata,
|
||||
),
|
||||
Protocol::MeteoraDlmm => {
|
||||
// Meteora DLMM 目前不需要解析指令数据,返回 None
|
||||
None
|
||||
}
|
||||
Protocol::Whirlpool => {
|
||||
// Whirlpool 目前不需要解析指令数据,返回 None
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +141,8 @@ impl EventDispatcher {
|
||||
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
|
||||
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
|
||||
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
|
||||
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
|
||||
Protocol::Whirlpool => ProtocolType::Whirlpool,
|
||||
};
|
||||
|
||||
match protocol {
|
||||
@@ -167,6 +181,14 @@ impl EventDispatcher {
|
||||
inner_instruction_data,
|
||||
metadata,
|
||||
),
|
||||
Protocol::MeteoraDlmm => {
|
||||
// Meteora DLMM 目前不需要解析 inner instruction 数据,返回 None
|
||||
None
|
||||
}
|
||||
Protocol::Whirlpool => {
|
||||
// Whirlpool 目前不需要解析 inner instruction 数据,返回 None
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,6 +209,10 @@ impl EventDispatcher {
|
||||
Some(Protocol::RaydiumAmmV4)
|
||||
} else if program_id == &meteora_damm_v2::METEORA_DAMM_V2_PROGRAM_ID {
|
||||
Some(Protocol::MeteoraDammV2)
|
||||
} else if program_id == &meteora_dlmm::METEORA_DLMM_PROGRAM_ID {
|
||||
Some(Protocol::MeteoraDlmm)
|
||||
} else if program_id == &whirlpool::WHIRLPOOL_PROGRAM_ID {
|
||||
Some(Protocol::Whirlpool)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
@@ -225,6 +251,8 @@ impl EventDispatcher {
|
||||
Protocol::RaydiumClmm => raydium_clmm::RAYDIUM_CLMM_PROGRAM_ID,
|
||||
Protocol::RaydiumAmmV4 => raydium_amm_v4::RAYDIUM_AMM_V4_PROGRAM_ID,
|
||||
Protocol::MeteoraDammV2 => meteora_damm_v2::METEORA_DAMM_V2_PROGRAM_ID,
|
||||
Protocol::MeteoraDlmm => meteora_dlmm::METEORA_DLMM_PROGRAM_ID,
|
||||
Protocol::Whirlpool => whirlpool::WHIRLPOOL_PROGRAM_ID,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,6 +289,8 @@ impl EventDispatcher {
|
||||
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
|
||||
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
|
||||
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
|
||||
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
|
||||
Protocol::Whirlpool => ProtocolType::Whirlpool,
|
||||
};
|
||||
|
||||
match protocol {
|
||||
@@ -284,6 +314,12 @@ impl EventDispatcher {
|
||||
// Meteora DAMM 目前不需要解析账户数据,返回 None
|
||||
None
|
||||
}
|
||||
Protocol::MeteoraDlmm => {
|
||||
meteora_dlmm::parse_meteora_dlmm_account_data(discriminator, account, metadata)
|
||||
}
|
||||
Protocol::Whirlpool => {
|
||||
whirlpool::parse_whirlpool_account_data(discriminator, account, metadata)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,11 +8,13 @@ use crate::streaming::event_parser::core::common_event_parser::{
|
||||
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;
|
||||
|
||||
@@ -65,6 +67,7 @@ pub enum DexEvent {
|
||||
RaydiumClmmAmmConfigAccountEvent(RaydiumClmmAmmConfigAccountEvent),
|
||||
RaydiumClmmPoolStateAccountEvent(RaydiumClmmPoolStateAccountEvent),
|
||||
RaydiumClmmTickArrayStateAccountEvent(RaydiumClmmTickArrayStateAccountEvent),
|
||||
RaydiumClmmTickArrayBitmapExtensionAccountEvent(RaydiumClmmTickArrayBitmapExtensionAccountEvent),
|
||||
|
||||
// Raydium CPMM events
|
||||
RaydiumCpmmSwapEvent(RaydiumCpmmSwapEvent),
|
||||
@@ -81,6 +84,12 @@ pub enum DexEvent {
|
||||
MeteoraDammV2InitializeCustomizablePoolEvent(MeteoraDammV2InitializeCustomizablePoolEvent),
|
||||
MeteoraDammV2InitializePoolWithDynamicConfigEvent(MeteoraDammV2InitializePoolWithDynamicConfigEvent),
|
||||
|
||||
// Meteora DLMM events
|
||||
MeteoraDlmmLbPairAccountEvent(MeteoraDlmmLbPairAccountEvent),
|
||||
|
||||
// Whirlpool events
|
||||
WhirlpoolAccountEvent(WhirlpoolAccountEvent),
|
||||
|
||||
// Common events
|
||||
TokenAccountEvent(TokenAccountEvent),
|
||||
NonceAccountEvent(NonceAccountEvent),
|
||||
@@ -130,6 +139,7 @@ impl DexEvent {
|
||||
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,
|
||||
@@ -141,6 +151,8 @@ impl DexEvent {
|
||||
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,
|
||||
@@ -189,6 +201,7 @@ impl DexEvent {
|
||||
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,
|
||||
@@ -200,6 +213,8 @@ impl DexEvent {
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user