use alloy::primitives::{Address, U160};
use nautilus_model::defi::PoolIdentifier;
#[derive(Debug, Clone)]
pub struct PoolCreatedEvent {
pub block_number: u64,
pub token0: Address,
pub token1: Address,
pub pool_address: Address,
pub pool_identifier: PoolIdentifier,
pub fee: Option<u32>,
pub tick_spacing: Option<u32>,
pub sqrt_price_x96: Option<U160>,
pub tick: Option<i32>,
pub hooks: Option<Address>,
}
impl PoolCreatedEvent {
#[must_use]
pub fn new(
block_number: u64,
token0: Address,
token1: Address,
pool_address: Address,
pool_identifier: PoolIdentifier,
fee: Option<u32>,
tick_spacing: Option<u32>,
) -> Self {
Self {
block_number,
token0,
token1,
pool_address,
pool_identifier,
fee,
tick_spacing,
sqrt_price_x96: None,
tick: None,
hooks: None,
}
}
pub fn set_initialize_params(&mut self, sqrt_price_x96: U160, tick: i32) {
self.sqrt_price_x96 = Some(sqrt_price_x96);
self.tick = Some(tick);
}
pub fn set_hooks(&mut self, hooks: Address) {
self.hooks = Some(hooks);
}
}