waterpump-evm-pool-sdk 0.1.0

EVM pool SDK — viewers, infusers, harvesters, swappers for Uniswap V3/V4, PancakeSwap, Slipstream, Shadow, Algebra
Documentation
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 }
    }

    /// Get the sender address
    pub fn sender_address(&self) -> Address { self.sender_address }

    /// Get the pool address
    pub fn pool_address(&self) -> Address { self.pool_address }

    /// Get the position manager address
    pub fn position_manager_address(&self) -> Address { self.position_manager_address }

    /// Get the pool key
    pub fn pool_key(&self) -> &V3PoolKey { &self.pool_key }
}

// Import macros from common module
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);