use crate::NamedIdentity;
use ockam::identity::Identifier;
use ockam_core::async_trait;
use ockam_core::Result;
#[async_trait]
pub trait IdentitiesRepository: Send + Sync + 'static {
async fn store_named_identity(
&self,
identifier: &Identifier,
name: &str,
vault_name: &str,
) -> Result<NamedIdentity>;
async fn delete_identity(&self, name: &str) -> Result<Option<Identifier>>;
async fn delete_identity_by_identifier(
&self,
identifier: &Identifier,
) -> Result<Option<String>>;
async fn get_identifier(&self, name: &str) -> Result<Option<Identifier>>;
async fn get_identity_name_by_identifier(
&self,
identifier: &Identifier,
) -> Result<Option<String>>;
async fn get_named_identity(&self, name: &str) -> Result<Option<NamedIdentity>>;
async fn get_named_identity_by_identifier(
&self,
identifier: &Identifier,
) -> Result<Option<NamedIdentity>>;
async fn get_named_identities(&self) -> Result<Vec<NamedIdentity>>;
async fn set_as_default(&self, name: &str) -> Result<()>;
async fn set_as_default_by_identifier(&self, identifier: &Identifier) -> Result<()>;
async fn get_default_named_identity(&self) -> Result<Option<NamedIdentity>>;
}