waterpump-evm-pool-sdk 0.1.0

EVM pool SDK — viewers, infusers, harvesters, swappers for Uniswap V3/V4, PancakeSwap, Slipstream, Shadow, Algebra
Documentation
// Re-export all traits from evm-base-lib
pub use pool_base::PoolBase;
pub use pool_harvester::{
    HarvestFeesAndRewardsParams, HarvestFeesAndRewardsResult, HarvestPositionResult,
    HarvestQuoteData, PoolHarvester,
};
pub use pool_infuser::{
    AddBatchLiquidityItem, AddBatchLiquidityParams, AddLiquidityOptions, AddLiquidityParams,
    AddLiquiditySpecificOptions, IncreaseSpecificOptions, MintSpecificOptions, PoolInfuser,
    RemoveBatchLiquidityItem, RemoveBatchLiquidityParams,
};
pub use pool_maker::{
    CancelBatchOrdersParams, CancelBatchOrdersResult, CancelOrderResult, FulfillBatchOrderItem,
    FulfillBatchOrdersParams, FulfillBatchOrdersResult, FulfillOrderOptions, FulfillOrderParams,
    FulfillOrderResult, OrderInfo, OrderMetadata, OrderSide, OrderStatus, PlaceBatchOrderItem,
    PlaceBatchOrdersParams, PlaceBatchOrdersResult, PlaceOrderOptions, PlaceOrderParams,
    PlaceOrderResult, PoolMaker, PositionInfo, RestrictedPriceRange,
};
pub use pool_state::PoolState;
pub use pool_swapper::PoolSwapper;
pub use pool_viewer::PoolViewer;
pub use position_viewer::{
    MultiPositionPredictor, MultiPositionViewer, PositionPredictor, PositionViewer,
};
pub use token_helper::TokenHelper;
pub use two_hop_swapper::TwoHopSwapper;
pub use waterpump_evm_core::traits::{
    pool_base, pool_harvester, pool_infuser, pool_maker, pool_state, pool_swapper, pool_viewer,
    position_viewer, token_helper, two_hop_swapper,
};

/// Combined trait for pool swappers that implement both PoolSwapper
/// and PoolViewer
pub trait PoolSwapperWithViewer:
    PoolSwapper + pool_viewer::PoolViewer + TokenHelper + Send + Sync + 'static
{
}

impl<T> PoolSwapperWithViewer for T where
    T: PoolSwapper + pool_viewer::PoolViewer + TokenHelper + Send + Sync + 'static
{
}

/// Combined trait for two-hop swappers that implement both
/// PoolSwapperWithViewer and TwoHopSwapper
pub trait TwoHopSwapperWithViewer:
    PoolSwapperWithViewer + TwoHopSwapper + TokenHelper + Send + Sync + 'static
{
}

impl<T> TwoHopSwapperWithViewer for T where
    T: TwoHopSwapper + pool_viewer::PoolViewer + TokenHelper + Send + Sync + 'static
{
}

/// Combined trait for position viewers that also implement pool
/// viewing and pool state
pub trait PositionViewerWithPoolViewer:
    PositionViewer + pool_viewer::PoolViewer + PoolState + Send + Sync + 'static
{
}

impl<T> PositionViewerWithPoolViewer for T where
    T: PositionViewer + pool_viewer::PoolViewer + PoolState + Send + Sync + 'static
{
}

/// Combined trait for multi position viewers
pub trait MultiPositionViewerWithPoolViewer:
    MultiPositionViewer + pool_viewer::PoolViewer + PoolState + Send + Sync + 'static
{
}

impl<T> MultiPositionViewerWithPoolViewer for T where
    T: MultiPositionViewer + pool_viewer::PoolViewer + PoolState + Send + Sync + 'static
{
}

/// Combined trait for pool infusers that also implement pool viewing
/// and pool state
pub trait PoolInfuserWithPoolViewer:
    PoolInfuser + pool_viewer::PoolViewer + PoolState + TokenHelper + Send + Sync + 'static
{
}

impl<T> PoolInfuserWithPoolViewer for T where
    T: PoolInfuser + pool_viewer::PoolViewer + PoolState + TokenHelper + Send + Sync + 'static
{
}

pub trait PoolMakerWithPoolViewer:
    PoolMaker + PoolInfuser + pool_viewer::PoolViewer + PoolState + TokenHelper + Send + Sync + 'static
{
}

impl<T> PoolMakerWithPoolViewer for T where
    T: PoolMaker
        + PoolInfuser
        + pool_viewer::PoolViewer
        + PoolState
        + TokenHelper
        + Send
        + Sync
        + 'static
{
}