use crate::log::identity::Identity;
use crate::log::identity_provider::IdentityProvider;
pub trait LogEntry: Send + Sync {
fn get_payload(&self) -> &[u8];
fn get_identity(&self) -> &Identity;
}
pub trait CanAppendAdditionalContext: Send + Sync {
fn get_log_entries(&self) -> Vec<Box<dyn LogEntry>>;
}
pub trait CanAppend {
fn can_append(
&self,
entry: &dyn LogEntry,
identity_provider: &dyn IdentityProvider,
context: &dyn CanAppendAdditionalContext,
) -> Result<(), Box<dyn std::error::Error>>;
}