provekit_common/
prover.rs1use {
2 crate::{
3 noir_proof_scheme::NoirProofScheme,
4 whir_r1cs::WhirR1CSScheme,
5 witness::{NoirWitnessGenerator, SplitWitnessBuilders},
6 NoirElement, R1CS,
7 },
8 acir::circuit::Program,
9 serde::{Deserialize, Serialize},
10};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct Prover {
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
21impl Prover {
22 #[must_use]
23 pub fn from_noir_proof_scheme(scheme: NoirProofScheme) -> Self {
24 let NoirProofScheme {
25 program,
26 r1cs,
27 split_witness_builders,
28 witness_generator,
29 whir_for_witness,
30 } = scheme;
31
32 Self {
33 program,
34 r1cs,
35 split_witness_builders,
36 witness_generator,
37 whir_for_witness,
38 }
39 }
40
41 #[must_use]
42 pub const fn size(&self) -> (usize, usize) {
43 (self.r1cs.num_constraints(), self.r1cs.num_witnesses())
44 }
45}