UniswapV3PoolContract

Struct UniswapV3PoolContract 

Source
pub struct UniswapV3PoolContract { /* private fields */ }
Expand description

Interface for interacting with UniswapV3Pool contracts on a blockchain.

This struct provides methods to query pool state including slot0, liquidity, fee growth, tick data, and position data. Supports both single calls and batch multicalls for efficiency.

Implementations§

Source§

impl UniswapV3PoolContract

Source

pub fn new(client: Arc<BlockchainHttpRpcClient>) -> Self

Creates a new UniswapV3Pool contract interface with the specified RPC client.

Source

pub async fn get_global_state( &self, pool_address: &Address, block: Option<u64>, ) -> Result<PoolState, UniswapV3PoolError>

Gets all global state in a single multicall.

§Errors

Returns an error if the multicall fails or any decoding fails.

Source

pub async fn get_tick( &self, pool_address: &Address, tick: i32, block: Option<u64>, ) -> Result<PoolTick, UniswapV3PoolError>

Gets tick data for a specific tick.

§Errors

Returns an error if the RPC call fails or decoding fails.

Source

pub async fn batch_get_ticks( &self, pool_address: &Address, ticks: &[i32], block: Option<u64>, ) -> Result<HashMap<i32, PoolTick>, UniswapV3PoolError>

Gets tick data for multiple ticks in a single multicall.

§Errors

Returns an error if the multicall fails or if any tick decoding fails. Uninitialized ticks are silently skipped (not included in the result HashMap).

Source

pub fn compute_position_key( owner: &Address, tick_lower: i32, tick_upper: i32, ) -> [u8; 32]

Computes the position key used by Uniswap V3.

The key is: keccak256(abi.encodePacked(owner, tickLower, tickUpper))

Source

pub async fn batch_get_positions( &self, pool_address: &Address, positions: &[(Address, i32, i32)], block: Option<u64>, ) -> Result<Vec<PoolPosition>, UniswapV3PoolError>

Gets position data for multiple positions in a single multicall.

§Errors

Returns an error if the multicall fails. Individual position failures are captured in the Result values of the returned Vec.

Source

pub async fn fetch_snapshot( &self, pool_address: &Address, instrument_id: InstrumentId, tick_values: &[i32], position_keys: &[(Address, i32, i32)], block_position: BlockPosition, ) -> Result<PoolSnapshot, UniswapV3PoolError>

Fetches a complete pool snapshot directly from on-chain state.

Retrieves global state, tick data, and position data from the blockchain and constructs a PoolSnapshot representing the current on-chain state. This snapshot can be compared against profiler state for validation.

§Errors

Returns error if any RPC calls fail or data cannot be decoded.

Trait Implementations§

Source§

impl Debug for UniswapV3PoolContract

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Ungil for T
where T: Send,