use nautilus_core::UnixNanos;
use nautilus_model::{
defi::{PoolIdentifier, SharedChain, SharedDex, data::PoolFeeProtocolUpdate},
identifiers::InstrumentId,
};
#[derive(Debug, Clone)]
pub struct FeeProtocolUpdateEvent {
pub dex: SharedDex,
pub pool_identifier: PoolIdentifier,
pub block_number: u64,
pub transaction_hash: String,
pub transaction_index: u32,
pub log_index: u32,
pub fee_protocol0_new: u8,
pub fee_protocol1_new: u8,
}
impl FeeProtocolUpdateEvent {
#[must_use]
#[expect(clippy::too_many_arguments)]
pub fn new(
dex: SharedDex,
pool_identifier: PoolIdentifier,
block_number: u64,
transaction_hash: String,
transaction_index: u32,
log_index: u32,
fee_protocol0_new: u8,
fee_protocol1_new: u8,
) -> Self {
Self {
dex,
pool_identifier,
block_number,
transaction_hash,
transaction_index,
log_index,
fee_protocol0_new,
fee_protocol1_new,
}
}
#[must_use]
pub fn to_pool_fee_protocol_update(
&self,
chain: SharedChain,
instrument_id: InstrumentId,
timestamp: UnixNanos,
) -> PoolFeeProtocolUpdate {
PoolFeeProtocolUpdate::new(
chain,
self.dex.clone(),
instrument_id,
self.pool_identifier,
self.block_number,
self.transaction_hash.clone(),
self.transaction_index,
self.log_index,
self.fee_protocol0_new,
self.fee_protocol1_new,
timestamp, timestamp, )
}
}