mod transcript;
mod types;
pub mod fri;
pub use fri::fri_fold;
pub use strata_proof::Reduce;
pub use transcript::Transcript;
pub use types::{Commitment, Field, MultilinearPoly, Opening, Ring, Semiring};
pub trait Lens<F: Field> {
fn commit(poly: &MultilinearPoly<F>) -> Commitment;
fn open(poly: &MultilinearPoly<F>, point: &[F], transcript: &mut Transcript) -> Opening;
fn verify(
commitment: &Commitment,
point: &[F],
value: F,
proof: &Opening,
transcript: &mut Transcript,
) -> bool;
fn batch_open(
poly: &MultilinearPoly<F>,
points: &[(Vec<F>, F)],
transcript: &mut Transcript,
) -> Opening;
fn batch_verify(
commitment: &Commitment,
points: &[(Vec<F>, F)],
proof: &Opening,
transcript: &mut Transcript,
) -> bool;
}