use candid::{CandidType, Deserialize, Principal};
pub use ic_cycles_ledger_client::Account;
#[derive(Debug, CandidType, Deserialize, Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum PaymentType {
AttachedCycles,
CallerPaysIcrc2Cycles,
PatronPaysIcrc2Cycles(PatronPaysIcrc2Cycles),
CallerPaysIcrc2Tokens(CallerPaysIcrc2Tokens),
PatronPaysIcrc2Tokens(PatronPaysIcrc2Tokens),
}
pub type PatronPaysIcrc2Cycles = Account;
#[derive(Debug, CandidType, Deserialize, Copy, Clone, Eq, PartialEq)]
pub struct CallerPaysIcrc2Tokens {
pub ledger: Principal,
}
#[derive(Debug, CandidType, Deserialize, Clone, Eq, PartialEq)]
pub struct PatronPaysIcrc2Tokens {
pub ledger: Principal,
pub patron: Account,
}
pub type TokenAmount = u64;