kabu_defi_pools/virtual_impl/
tick_provider.rs

1use crate::db_reader::UniswapV3DbReader;
2use alloy::primitives::{Address, U256};
3use kabu_defi_uniswap_v3_math::tick_provider::TickProvider;
4use revm::DatabaseRef;
5
6pub struct TickProviderEVMDB<DB> {
7    pub db: DB,
8    pub pool_address: Address,
9}
10
11impl<DB> TickProviderEVMDB<DB>
12where
13    DB: DatabaseRef,
14{
15    pub fn new(db: DB, pool_address: Address) -> Self {
16        TickProviderEVMDB { db, pool_address }
17    }
18}
19
20impl<DB> TickProvider for TickProviderEVMDB<DB>
21where
22    DB: DatabaseRef,
23{
24    fn get_tick(&self, tick: i16) -> eyre::Result<U256> {
25        UniswapV3DbReader::tick_bitmap(&self.db, self.pool_address, tick)
26    }
27}