use crate::session::model_v2::SessionV2;
use crate::utils::error::ChainError;
use async_trait::async_trait;
use uuid::Uuid;
#[async_trait]
pub trait SimulationStore: Send + Sync {
async fn get(&self, id: Uuid) -> Result<SessionV2, ChainError>;
async fn create(&self, simulation: SessionV2) -> Result<(), ChainError>;
async fn save_cas(
&self,
simulation: SessionV2,
expected_version: u64,
) -> Result<(), ChainError>;
async fn delete(&self, id: Uuid) -> Result<bool, ChainError>;
async fn cleanup(&self) -> Result<Vec<Uuid>, ChainError>;
}