use ark_bn254::Bn254;
use ark_groth16::Proof;
use world_id_primitives::{FieldElement, ZeroKnowledgeProof};
pub trait ProofCompression {
fn from_groth16_proof(groth16_proof: &Proof<Bn254>, merkle_root: FieldElement) -> Self;
}
impl ProofCompression for ZeroKnowledgeProof {
fn from_groth16_proof(groth16_proof: &Proof<Bn254>, merkle_root: FieldElement) -> Self {
let compressed_proof = taceo_groth16_sol::prepare_compressed_proof(groth16_proof);
Self::from_ethereum_representation([
compressed_proof[0],
compressed_proof[1],
compressed_proof[2],
compressed_proof[3],
merkle_root.into(),
])
}
}