use async_trait::async_trait;
use crate::error::WalletResult;
use crate::storage::traits::reader_writer::StorageReaderWriter;
use crate::storage::TrxToken;
use crate::tables::Settings;
use crate::types::Chain;
#[async_trait]
pub trait StorageProvider: StorageReaderWriter {
async fn migrate_database(&self) -> WalletResult<String>;
async fn get_settings(&self, trx: Option<&TrxToken>) -> WalletResult<Settings>;
async fn make_available(&self) -> WalletResult<Settings>;
async fn destroy(&self) -> WalletResult<()>;
async fn drop_all_data(&self) -> WalletResult<()>;
fn get_storage_identity_key(&self) -> WalletResult<String>;
fn is_available(&self) -> bool;
fn get_chain(&self) -> Chain;
fn set_active(&self, active: bool);
fn is_active(&self) -> bool;
}