use async_trait::async_trait;
use super::receipt::BackupReceipt;
use super::verification::BackupVerification;
use crate::error::DppError;
use crate::passport::{Passport, PassportId};
#[async_trait]
pub trait BackupCopyPort: Send + Sync {
async fn store(
&self,
passport: &Passport,
retention_years: u32,
) -> Result<BackupReceipt, DppError>;
async fn update(&self, passport: &Passport) -> Result<BackupReceipt, DppError>;
async fn verify(
&self,
passport_id: PassportId,
expected_hash: &str,
) -> Result<BackupVerification, DppError>;
async fn retrieve(&self, passport_id: PassportId) -> Result<Option<Passport>, DppError>;
}