use tokio::time::Instant;
use rskit_errors::AppResult;
pub trait Store<V>: Send + Sync
where
V: Clone,
{
fn append(&self, value: V) -> AppResult<()>;
fn pop_oldest(&self) -> AppResult<Option<V>>;
fn snapshot(&self) -> AppResult<Vec<V>>;
fn flush(&self) -> AppResult<Vec<V>>;
fn size(&self) -> AppResult<usize>;
fn touch(&self) -> AppResult<()>;
fn last_activity(&self) -> AppResult<Instant>;
fn close(&self) -> AppResult<()>;
}