use crate::error::Result;
use crate::storage::save_data::{SaveData, SaveMetadata};
use async_trait::async_trait;
#[async_trait]
pub trait SaveRepository: Send + Sync {
async fn save(&self, data: &SaveData) -> Result<()>;
async fn load(&self, slot: &str) -> Result<SaveData>;
async fn list_saves(&self) -> Result<Vec<SaveMetadata>>;
async fn delete(&self, slot: &str) -> Result<()>;
async fn exists(&self, slot: &str) -> bool;
async fn get_metadata(&self, slot: &str) -> Result<SaveMetadata>;
}