use std::fmt::Debug;
use async_trait::async_trait;
use serde::Serialize;
use crate::{
identity::{SignerPayload, ValidationError},
maybe_send_sync::MaybeSync,
status_tracker::StatusTracker,
};
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
pub trait SignatureVerifier: MaybeSync {
type Output: ToCredentialSummary + 'static;
type Error: Debug;
fn check_signature(
&self,
signer_payload: &SignerPayload,
signature: &[u8],
status_tracker: &mut StatusTracker,
) -> Result<Self::Output, ValidationError<Self::Error>>;
async fn check_signature_async(
&self,
signer_payload: &SignerPayload,
signature: &[u8],
status_tracker: &mut StatusTracker,
) -> Result<Self::Output, ValidationError<Self::Error>>;
}
pub trait ToCredentialSummary {
type CredentialSummary: Serialize;
fn to_summary(&self) -> Self::CredentialSummary;
}