provekit_common/
noir_proof_scheme.rs1use {
2 crate::{
3 whir_r1cs::{WhirR1CSProof, WhirR1CSScheme},
4 witness::{NoirWitnessGenerator, SplitWitnessBuilders},
5 NoirElement, PublicInputs, R1CS,
6 },
7 acir::circuit::Program,
8 serde::{Deserialize, Serialize},
9};
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct NoirProofScheme {
14 pub program: Program<NoirElement>,
15 pub r1cs: R1CS,
16 pub split_witness_builders: SplitWitnessBuilders,
17 pub witness_generator: NoirWitnessGenerator,
18 pub whir_for_witness: WhirR1CSScheme,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct NoirProof {
23 pub public_inputs: PublicInputs,
24 pub whir_r1cs_proof: WhirR1CSProof,
25}
26
27impl NoirProofScheme {
28 #[must_use]
29 pub const fn size(&self) -> (usize, usize) {
30 (self.r1cs.num_constraints(), self.r1cs.num_witnesses())
31 }
32}