node/external_snark_worker_effectful/
external_snark_worker_service.rs1use mina_p2p_messages::v2::{CurrencyFeeStableV1, NonZeroCurvePoint};
2use serde::{Deserialize, Serialize};
3use snark::TransactionVerifier;
4
5use crate::external_snark_worker::{
6 ExternalSnarkWorkerError, ExternalSnarkWorkerWorkError, SnarkWorkResult, SnarkWorkSpec,
7};
8
9#[derive(Serialize, Deserialize, Debug, Clone, derive_more::From)]
10pub enum ExternalSnarkWorkerEvent {
11 Started,
12 Killed,
13 WorkResult(SnarkWorkResult),
14 WorkError(ExternalSnarkWorkerWorkError),
15 WorkCancelled,
16 Error(ExternalSnarkWorkerError),
17}
18
19pub trait ExternalSnarkWorkerService {
20 fn start(
22 &mut self,
23 public_key: NonZeroCurvePoint,
24 fee: CurrencyFeeStableV1,
25 work_verifier: TransactionVerifier,
26 ) -> Result<(), ExternalSnarkWorkerError>;
27
28 fn submit(&mut self, spec: SnarkWorkSpec) -> Result<(), ExternalSnarkWorkerError>;
30
31 fn cancel(&mut self) -> Result<(), ExternalSnarkWorkerError>;
33
34 fn kill(&mut self) -> Result<(), ExternalSnarkWorkerError>;
36}