ic_papi_guard/guards/
attached_cycles.rs1use super::{PaymentError, PaymentGuardTrait};
2use ic_cdk::api::call::{msg_cycles_accept, msg_cycles_available};
3use ic_papi_api::caller::TokenAmount;
4
5#[derive(Default, Debug, Eq, PartialEq)]
7pub struct AttachedCyclesPayment {}
8
9impl PaymentGuardTrait for AttachedCyclesPayment {
10 async fn deduct(&self, fee: TokenAmount) -> Result<(), PaymentError> {
11 let available = msg_cycles_available();
12 if available < fee {
13 return Err(PaymentError::InsufficientFunds {
14 needed: fee,
15 available,
16 });
17 }
18 msg_cycles_accept(fee);
19 Ok(())
20 }
21}