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