add meteora dlmm account event

This commit is contained in:
zhaoguojie2010
2025-11-27 23:22:06 +08:00
parent 5e222bf38a
commit 511fea0499
10 changed files with 335 additions and 4 deletions
+19 -1
View File
@@ -11,7 +11,8 @@ 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,
},
@@ -54,6 +55,7 @@ impl EventDispatcher {
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
};
match protocol {
@@ -99,6 +101,10 @@ impl EventDispatcher {
accounts,
metadata,
),
Protocol::MeteoraDlmm => {
// Meteora DLMM 目前不需要解析指令数据,返回 None
None
}
}
}
@@ -129,6 +135,7 @@ impl EventDispatcher {
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
};
match protocol {
@@ -167,6 +174,10 @@ impl EventDispatcher {
inner_instruction_data,
metadata,
),
Protocol::MeteoraDlmm => {
// Meteora DLMM 目前不需要解析 inner instruction 数据,返回 None
None
}
}
}
@@ -187,6 +198,8 @@ 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 {
None
}
@@ -225,6 +238,7 @@ 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,
}
}
@@ -261,6 +275,7 @@ impl EventDispatcher {
Protocol::RaydiumClmm => ProtocolType::RaydiumClmm,
Protocol::RaydiumAmmV4 => ProtocolType::RaydiumAmmV4,
Protocol::MeteoraDammV2 => ProtocolType::MeteoraDammV2,
Protocol::MeteoraDlmm => ProtocolType::MeteoraDlmm,
};
match protocol {
@@ -284,6 +299,9 @@ impl EventDispatcher {
// Meteora DAMM 目前不需要解析账户数据,返回 None
None
}
Protocol::MeteoraDlmm => {
meteora_dlmm::parse_meteora_dlmm_account_data(discriminator, account, metadata)
}
}
}
}
@@ -8,6 +8,7 @@ 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::*;
@@ -81,6 +82,9 @@ pub enum DexEvent {
MeteoraDammV2InitializeCustomizablePoolEvent(MeteoraDammV2InitializeCustomizablePoolEvent),
MeteoraDammV2InitializePoolWithDynamicConfigEvent(MeteoraDammV2InitializePoolWithDynamicConfigEvent),
// Meteora DLMM events
MeteoraDlmmLbPairAccountEvent(MeteoraDlmmLbPairAccountEvent),
// Common events
TokenAccountEvent(TokenAccountEvent),
NonceAccountEvent(NonceAccountEvent),
@@ -141,6 +145,7 @@ impl DexEvent {
DexEvent::MeteoraDammV2InitializePoolEvent(e) => &e.metadata,
DexEvent::MeteoraDammV2InitializeCustomizablePoolEvent(e) => &e.metadata,
DexEvent::MeteoraDammV2InitializePoolWithDynamicConfigEvent(e) => &e.metadata,
DexEvent::MeteoraDlmmLbPairAccountEvent(e) => &e.metadata,
DexEvent::TokenAccountEvent(e) => &e.metadata,
DexEvent::NonceAccountEvent(e) => &e.metadata,
DexEvent::TokenInfoEvent(e) => &e.metadata,
@@ -200,6 +205,7 @@ 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::TokenAccountEvent(e) => &mut e.metadata,
DexEvent::NonceAccountEvent(e) => &mut e.metadata,
DexEvent::TokenInfoEvent(e) => &mut e.metadata,