use masp_primitives::asset_type::AssetType;
mod prover;
mod verifier;
pub use self::prover::SaplingProvingContext;
pub use self::verifier::{
BatchValidator, SaplingVerificationContext, SaplingVerificationContextInner,
};
fn masp_compute_value_balance(asset_type: AssetType, value: i128) -> Option<jubjub::ExtendedPoint> {
let abs = match value.checked_abs() {
Some(a) => a as u128,
None => return None,
};
let is_negative = value.is_negative();
let mut abs_bytes = [0u8; 32];
abs_bytes[0..16].copy_from_slice(&abs.to_le_bytes());
let mut value_balance =
asset_type.value_commitment_generator() * jubjub::Fr::from_bytes(&abs_bytes).unwrap();
if is_negative {
value_balance = -value_balance;
}
Some(value_balance.into())
}