use crate::messages::*;
use crate::primitives::arithmetic::Group;
#[derive(Clone, Debug, PartialEq)]
#[allow(missing_docs)]
pub struct DoryProof<G1: Group, G2, GT> {
pub vmv_message: VMVMessage<G1, GT>,
pub first_messages: Vec<FirstReduceMessage<G1, G2, GT>>,
pub second_messages: Vec<SecondReduceMessage<G1, G2, GT>>,
pub final_message: ScalarProductMessage<G1, G2>,
pub nu: usize,
pub sigma: usize,
#[cfg(feature = "zk")]
pub e2: Option<G2>,
#[cfg(feature = "zk")]
pub y_com: Option<G1>,
#[cfg(feature = "zk")]
pub sigma1_proof: Option<Sigma1Proof<G1, G2, G1::Scalar>>,
#[cfg(feature = "zk")]
pub sigma2_proof: Option<Sigma2Proof<G1::Scalar, GT>>,
#[cfg(feature = "zk")]
pub scalar_product_proof: Option<ScalarProductProof<G1, G2, G1::Scalar, GT>>,
}