use rings_snark::prelude::nova::provider::Bn256EngineKZG;
use rings_snark::prelude::nova::provider::GrumpkinEngine;
use rings_snark::prelude::nova::provider::PallasEngine;
use rings_snark::prelude::nova::provider::VestaEngine;
use serde::Deserialize;
use serde::Serialize;
use crate::backend::snark::SNARKGenerator;
use crate::backend::BackendMessage;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct SNARKTaskMessage {
pub task_id: uuid::Uuid,
#[serde(
serialize_with = "crate::util::serialize_gzip",
deserialize_with = "crate::util::deserialize_gzip"
)]
pub task: SNARKTask,
}
#[cfg(feature = "snark")]
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum SNARKTask {
SNARKProof(SNARKProofTask),
SNARKVerify(SNARKVerifyTask),
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum SNARKProofTask {
PallasVasta(SNARKGenerator<PallasEngine, VestaEngine>),
VastaPallas(SNARKGenerator<VestaEngine, PallasEngine>),
Bn256KZGGrumpkin(SNARKGenerator<Bn256EngineKZG, GrumpkinEngine>),
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum SNARKVerifyTask {
PallasVasta(String),
VastaPallas(String),
Bn256KZGGrumpkin(String),
}
impl From<SNARKTaskMessage> for BackendMessage {
fn from(val: SNARKTaskMessage) -> Self {
BackendMessage::SNARKTaskMessage(val)
}
}