1pub mod borsh_compat {
3 use crate::{AnchorDeserialize, AnchorSerialize};
4
5 #[derive(Debug, Clone, Copy, PartialEq, Eq, AnchorDeserialize, AnchorSerialize)]
6 pub struct CompressedProof {
7 pub a: [u8; 32],
8 pub b: [u8; 64],
9 pub c: [u8; 32],
10 }
11
12 impl Default for CompressedProof {
13 fn default() -> Self {
14 Self {
15 a: [0; 32],
16 b: [0; 64],
17 c: [0; 32],
18 }
19 }
20 }
21
22 #[derive(Debug, Default, Clone, Copy, PartialEq, Eq, AnchorDeserialize, AnchorSerialize)]
23 pub struct ValidityProof(pub Option<CompressedProof>);
26
27 impl ValidityProof {
28 pub fn new(proof: Option<CompressedProof>) -> Self {
29 Self(proof)
30 }
31 }
32
33 impl From<light_compressed_account::instruction_data::compressed_proof::CompressedProof>
34 for CompressedProof
35 {
36 fn from(
37 proof: light_compressed_account::instruction_data::compressed_proof::CompressedProof,
38 ) -> Self {
39 Self {
40 a: proof.a,
41 b: proof.b,
42 c: proof.c,
43 }
44 }
45 }
46
47 impl From<CompressedProof>
48 for light_compressed_account::instruction_data::compressed_proof::CompressedProof
49 {
50 fn from(proof: CompressedProof) -> Self {
51 Self {
52 a: proof.a,
53 b: proof.b,
54 c: proof.c,
55 }
56 }
57 }
58
59 impl From<light_compressed_account::instruction_data::compressed_proof::ValidityProof>
60 for ValidityProof
61 {
62 fn from(
63 proof: light_compressed_account::instruction_data::compressed_proof::ValidityProof,
64 ) -> Self {
65 Self(proof.0.map(|p| p.into()))
66 }
67 }
68
69 impl From<ValidityProof>
70 for light_compressed_account::instruction_data::compressed_proof::ValidityProof
71 {
72 fn from(proof: ValidityProof) -> Self {
73 Self(proof.0.map(|p| p.into()))
74 }
75 }
76
77 impl From<CompressedProof> for ValidityProof {
78 fn from(proof: CompressedProof) -> Self {
79 Self(Some(proof))
80 }
81 }
82
83 impl From<Option<CompressedProof>> for ValidityProof {
84 fn from(proof: Option<CompressedProof>) -> Self {
85 Self(proof)
86 }
87 }
88}