use std::path::Path;
use crate::Result;
use crate::config::Config;
use crate::stack::Stack;
use crate::state::{FoldState, RestackState, SplitState, SyncState};
#[allow(clippy::missing_errors_doc)]
pub trait StateStore {
fn is_initialized(&self) -> bool;
fn init(&self) -> Result<()>;
fn rung_dir(&self) -> &Path;
fn load_stack(&self) -> Result<Stack>;
fn save_stack(&self, stack: &Stack) -> Result<()>;
fn load_config(&self) -> Result<Config>;
fn save_config(&self, config: &Config) -> Result<()>;
fn default_branch(&self) -> Result<String>;
fn is_sync_in_progress(&self) -> bool;
fn load_sync_state(&self) -> Result<SyncState>;
fn save_sync_state(&self, state: &SyncState) -> Result<()>;
fn clear_sync_state(&self) -> Result<()>;
fn is_restack_in_progress(&self) -> bool;
fn load_restack_state(&self) -> Result<RestackState>;
fn save_restack_state(&self, state: &RestackState) -> Result<()>;
fn clear_restack_state(&self) -> Result<()>;
fn is_split_in_progress(&self) -> bool;
fn load_split_state(&self) -> Result<SplitState>;
fn save_split_state(&self, state: &SplitState) -> Result<()>;
fn clear_split_state(&self) -> Result<()>;
fn is_fold_in_progress(&self) -> bool;
fn load_fold_state(&self) -> Result<FoldState>;
fn save_fold_state(&self, state: &FoldState) -> Result<()>;
fn clear_fold_state(&self) -> Result<()>;
fn create_backup(&self, branches: &[(&str, &str)]) -> Result<String>;
fn latest_backup(&self) -> Result<String>;
fn load_backup(&self, backup_id: &str) -> Result<Vec<(String, String)>>;
fn delete_backup(&self, backup_id: &str) -> Result<()>;
fn cleanup_backups(&self, keep: usize) -> Result<()>;
}