use alloy::{network::Ethereum, primitives::Address, providers::DynProvider};
use tracing::{debug, instrument};
use uniswap_sdk_core::entities::BaseCurrency;
use crate::types::v3_pool_key::V3PoolKey;
#[derive(Clone, Debug)]
pub struct PancakeV3PoolInfuser {
pub pool_key: V3PoolKey,
pub pool_address: Address,
pub position_manager_address: Address,
pub sender_address: Address,
pub provider: DynProvider<Ethereum>,
}
impl PancakeV3PoolInfuser {
#[instrument(skip(pool_key), fields(pool_address = ?pool_address, position_manager_address = ?position_manager_address, token_a = ?pool_key.token_a.address(), token_b = ?pool_key.token_b.address(), fee = ?pool_key.fee, sender_address = ?sender_address))]
pub fn new(
pool_key: V3PoolKey,
pool_address: Address,
position_manager_address: Address,
sender_address: Address,
provider: DynProvider<Ethereum>,
) -> Self {
debug!(
pool_address = ?pool_address,
position_manager_address = ?position_manager_address,
"Creating PancakeV3PoolInfuser"
);
Self { pool_key, pool_address, position_manager_address, sender_address, provider }
}
pub fn sender_address(&self) -> Address { self.sender_address }
pub fn pool_address(&self) -> Address { self.pool_address }
pub fn position_manager_address(&self) -> Address { self.position_manager_address }
pub fn pool_key(&self) -> &V3PoolKey { &self.pool_key }
}
use crate::impl_token_helper;
impl_token_helper!(PancakeV3PoolInfuser);
use crate::{
impl_pancake_v3_pool_infuser, impl_pancake_v3_pool_state, impl_pancake_v3_pool_viewer,
impl_pool_base,
};
impl_pancake_v3_pool_viewer!(PancakeV3PoolInfuser);
impl_pancake_v3_pool_state!(PancakeV3PoolInfuser);
impl_pancake_v3_pool_infuser!(PancakeV3PoolInfuser);
impl_pool_base!(PancakeV3PoolInfuser);