use crate::crypto::merkle::SmtProof;
use crate::utils::serde::{
ByteReader,
ByteWriter,
Deserializable,
DeserializationError,
Serializable,
};
#[derive(Debug, Clone)]
pub struct NullifierWitness {
proof: SmtProof,
}
impl NullifierWitness {
pub fn new(proof: SmtProof) -> Self {
Self { proof }
}
pub fn proof(&self) -> &SmtProof {
&self.proof
}
pub fn into_proof(self) -> SmtProof {
self.proof
}
}
impl Serializable for NullifierWitness {
fn write_into<W: ByteWriter>(&self, target: &mut W) {
target.write(&self.proof);
}
}
impl Deserializable for NullifierWitness {
fn read_from<R: ByteReader>(source: &mut R) -> Result<Self, DeserializationError> {
let proof = source.read()?;
Ok(Self::new(proof))
}
}