pub fn validate_and_subtract_fee(
amount: Amount,
fee: Amount,
) -> Result<Amount, FeeValidationError>Expand description
Validates fee amounts and calculates the resulting amount after fee.
This function ensures two critical conditions are met:
- Fee doesn’t exceed the original amount (prevents overflow)
- Amount after fee is > zero
§Returns
Ok(Amount)- The amount after subtracting the feeErr(FeeValidationError)- If any validation condition fails
§Example
use ark::fees::{validate_and_subtract_fee, FeeValidationError};
use bitcoin::Amount;
let amount = Amount::from_sat(10_000);
let fee = Amount::from_sat(100);
let result = validate_and_subtract_fee(amount, fee);
assert_eq!(result.unwrap(), Amount::from_sat(9_900));
let amount = Amount::from_sat(10_000);
let fee = Amount::from_sat(10_000);
let result = validate_and_subtract_fee(amount, fee);
assert_eq!(result.unwrap_err(), FeeValidationError::FeeExceedsAmount { amount, fee });
let amount = Amount::from_sat(10_000);
let fee = Amount::from_sat(11_000);
let result = validate_and_subtract_fee(amount, fee);
assert_eq!(result.unwrap_err(), FeeValidationError::FeeExceedsAmount { amount, fee });