use super::tracker::ProgressTracker;
use commonware_cryptography::PublicKey;
use std::{future::Future, pin::Pin};
pub trait FinalizationProperty<S>: Send + Sync {
fn name(&self) -> &str;
fn check<'a>(
&'a self,
states: &'a [&'a S],
) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'a>>;
}
pub trait Property<P: PublicKey, S>: Send + Sync {
fn name(&self) -> &str;
fn check<'a>(
&'a self,
tracker: &'a ProgressTracker<P>,
states: &'a [&'a S],
) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'a>>;
}