kabu_defi_pools/virtual_impl/
tick_provider.rs1use 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}