use anyhow::Result;
pub type ProofResult = Option<(u64, [u8; 32])>;
pub trait Solver {
fn backend_name(&self) -> &'static str;
fn recommended_lanes(&mut self, requested: usize) -> usize;
fn find_proof_batch(
&mut self,
header_without_nonce: &[u8],
start_nonce: u64,
lanes: usize,
difficulty: u32,
) -> Result<ProofResult>;
fn benchmark_hashes(
&mut self,
header_without_nonce: &[u8],
start_nonce: u64,
lanes: usize,
) -> Result<usize>;
}