use crate::messages::{
FirstReduceChallenge, FirstReduceMessage, FoldScalarsChallenge, ScalarProductMessage,
SecondReduceChallenge, SecondReduceMessage,
};
pub trait ProofBuilder {
type G1;
type G2;
type GT;
type Scalar;
#[must_use]
fn append_first_reduce_message(
self,
message: FirstReduceMessage<Self::G1, Self::G2, Self::GT>,
) -> (FirstReduceChallenge<Self::Scalar>, Self);
#[must_use]
fn append_second_reduce_message(
self,
message: SecondReduceMessage<Self::G1, Self::G2, Self::GT>,
) -> (SecondReduceChallenge<Self::Scalar>, Self);
#[must_use]
fn challenge_fold_scalars(self) -> (FoldScalarsChallenge<Self::Scalar>, Self);
#[must_use]
fn append_scalar_product_message(
self,
message: ScalarProductMessage<Self::G1, Self::G2>,
) -> Self;
}