use alloy::{network::Ethereum, primitives::Address, providers::DynProvider};
use tracing::{debug, instrument};
use uniswap_sdk_core::entities::BaseCurrency;
use crate::types::quickswap_pool_key::QuickswapPoolKey;
#[derive(Clone, Debug)]
pub struct QuickswapPoolInfuser {
pub pool_key: QuickswapPoolKey,
pub pool_address: Address,
pub position_manager_address: Address,
pub sender_address: Address,
pub provider: DynProvider<Ethereum>,
}
impl QuickswapPoolInfuser {
#[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(), deployer = ?pool_key.deployer, sender_address = ?sender_address))]
pub fn new(
pool_key: QuickswapPoolKey,
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 QuickswapPoolInfuser"
);
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) -> &QuickswapPoolKey { &self.pool_key }
}
use crate::impl_token_helper;
impl_token_helper!(QuickswapPoolInfuser);
use crate::{
impl_pool_base, impl_quickswap_pool_infuser, impl_quickswap_pool_state,
impl_quickswap_pool_viewer,
};
impl_quickswap_pool_viewer!(QuickswapPoolInfuser);
impl_quickswap_pool_state!(QuickswapPoolInfuser);
impl_quickswap_pool_infuser!(QuickswapPoolInfuser);
impl_pool_base!(QuickswapPoolInfuser);