use stratum_apps::{
stratum_core::{
bitcoin::Wtxid,
job_declaration_sv2::{DeclareMiningJob, ProvideMissingTransactionsSuccess, PushSolution},
mining_sv2::SetCustomMiningJob,
},
utils::types::JdToken,
};
pub mod bitcoin_core_ipc;
#[async_trait::async_trait]
pub trait JobValidationEngine: Send + Sync {
async fn handle_declare_mining_job(
&self,
declare_mining_job: DeclareMiningJob<'_>,
provide_missing_transactions_success: Option<ProvideMissingTransactionsSuccess<'_>>,
) -> DeclareMiningJobResult;
async fn handle_push_solution(&self, push_solution: PushSolution<'_>);
async fn handle_set_custom_mining_job(
&self,
set_custom_mining_job: SetCustomMiningJob<'_>,
allocated_token: JdToken,
) -> SetCustomMiningJobResult;
fn shutdown(&self) {}
}
pub enum DeclareMiningJobResult {
Success,
Error(&'static str),
MissingTransactions(Vec<Wtxid>),
}
pub enum SetCustomMiningJobResult {
Success,
Error(&'static str),
}