use crate::model::control_authority::{ControlObservation, ControlObservationRequest};
use thiserror::Error;
pub trait ControlAuthorityProvider {
fn observe_control(
&mut self,
request: &ControlObservationRequest<'_>,
) -> Result<ControlObservation, ControlProviderError>;
}
#[derive(Clone, Copy, Debug, Eq, Error, PartialEq)]
pub enum ControlProviderError {
#[error("control authority provider unavailable")]
Unavailable,
#[error("control authority contract unsupported")]
Unsupported,
#[error("control authority observation indeterminate")]
Indeterminate,
}