use crate::model::membership::{MembershipObservation, MembershipObservationRequest};
use thiserror::Error;
pub trait MembershipProvider {
fn observe_membership(
&mut self,
request: &MembershipObservationRequest<'_>,
) -> Result<MembershipObservation, MembershipProviderError>;
}
#[derive(Clone, Copy, Debug, Eq, Error, PartialEq)]
pub enum MembershipProviderError {
#[error("membership provider unavailable")]
Unavailable,
#[error("membership observation contract unsupported")]
Unsupported,
#[error("membership observation indeterminate")]
Indeterminate,
}