use std::sync::Arc;
use crate::error::DbResult;
use crate::fixed_replication::event::FixedReplicationEvent;
pub trait FixedEngineAccess: Send + Sync + 'static {
fn shard_count(&self) -> usize;
fn key_len(&self) -> usize;
fn value_len(&self) -> usize;
fn slot_size(&self) -> u16;
fn current_slot_count(&self, shard_id: usize) -> u32;
fn shard_prefix_bits(&self) -> u8;
fn read_shard_chunk(&self, shard_id: usize, start_slot: u32, count: usize)
-> DbResult<Vec<u8>>;
fn install_replication_producers(&self, producers: Vec<rtrb::Producer<FixedReplicationEvent>>);
fn update_min_replicated_version(&self, shard_id: usize, version: u32);
}
pub type ArcEngine = Arc<dyn FixedEngineAccess>;