light_circuitlib_rs/gnark/
combined_json_formatter.rs

1use serde::Serialize;
2
3use crate::combined::merkle_combined_proof_inputs::CombinedProofInputs;
4use crate::gnark::inclusion_json_formatter::BatchInclusionJsonStruct;
5use crate::gnark::non_inclusion_json_formatter::BatchNonInclusionJsonStruct;
6
7use super::{
8    helpers::create_json_from_struct, inclusion_json_formatter::InclusionJsonStruct,
9    non_inclusion_json_formatter::NonInclusionJsonStruct,
10};
11
12#[derive(Serialize, Debug)]
13pub struct CombinedJsonStruct {
14    #[serde(rename(serialize = "input-compressed-accounts"))]
15    pub inclusion: Vec<InclusionJsonStruct>,
16
17    #[serde(rename(serialize = "new-addresses"))]
18    pub non_inclusion: Vec<NonInclusionJsonStruct>,
19}
20
21impl CombinedJsonStruct {
22    pub fn from_combined_inputs(inputs: &CombinedProofInputs) -> Self {
23        let inclusion_parameters =
24            BatchInclusionJsonStruct::from_inclusion_proof_inputs(&inputs.inclusion_parameters);
25        let non_inclusion_parameters = BatchNonInclusionJsonStruct::from_non_inclusion_proof_inputs(
26            &inputs.non_inclusion_parameters,
27        );
28        Self {
29            inclusion: inclusion_parameters.inputs,
30            non_inclusion: non_inclusion_parameters.inputs,
31        }
32    }
33    #[allow(clippy::inherent_to_string)]
34    pub fn to_string(&self) -> String {
35        create_json_from_struct(&self)
36    }
37}