use bitcoin::Target;
use error::VardiffError;
use std::fmt::Debug;
pub mod classic;
pub mod error;
#[cfg(test)]
pub mod test;
pub trait Vardiff: Debug + Send + Sync {
fn last_update_timestamp(&self) -> u64;
fn shares_since_last_update(&self) -> u32;
fn set_timestamp_of_last_update(&mut self, timestamp: u64);
fn increment_shares_since_last_update(&mut self);
fn reset_counter(&mut self) -> Result<(), VardiffError>;
fn try_vardiff(
&mut self,
hashrate: f32,
target: &Target,
shares_per_minute: f32,
) -> Result<Option<f32>, VardiffError>;
fn min_allowed_hashrate(&self) -> f32;
}