use crate::model::snapshot_read::{SnapshotReadObservation, SnapshotReadRequest};
use thiserror::Error;
pub trait SnapshotReadProvider {
fn observe_snapshot_read(
&mut self,
request: &SnapshotReadRequest<'_>,
) -> Result<SnapshotReadObservation, SnapshotReadProviderError>;
}
#[derive(Clone, Copy, Debug, Eq, Error, PartialEq)]
pub enum SnapshotReadProviderError {
#[error("snapshot read provider unavailable")]
Unavailable,
#[error("snapshot read contract unsupported")]
Unsupported,
#[error("snapshot read observation indeterminate")]
Indeterminate,
}