use ockam_core::compat::boxed::Box;
use ockam_core::compat::sync::Arc;
use ockam_core::{async_trait, Address, Result};
use crate::models::CredentialAndPurposeKey;
use crate::Identifier;
#[async_trait]
pub trait CredentialRetriever: Send + Sync + 'static {
async fn initialize(&self) -> Result<()>;
async fn retrieve(&self) -> Result<CredentialAndPurposeKey>;
fn subscribe(&self, address: &Address) -> Result<()>;
fn unsubscribe(&self, address: &Address) -> Result<()>;
}
#[async_trait]
pub trait CredentialRetrieverCreator: Send + Sync + 'static {
async fn create(&self, subject: &Identifier) -> Result<Arc<dyn CredentialRetriever>>;
}