use crate::types::{EquatableOperator, IntegerOperator};
use borsh::BorshDeserialize;
use borsh::BorshSerialize;
use solana_pubkey::Pubkey;
#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MetaAssertion {
RentExemptReserve {
value: u64,
operator: IntegerOperator,
},
AuthorizedStaker {
#[cfg_attr(
feature = "serde",
serde(with = "serde_with::As::<serde_with::DisplayFromStr>")
)]
value: Pubkey,
operator: EquatableOperator,
},
AuthorizedWithdrawer {
#[cfg_attr(
feature = "serde",
serde(with = "serde_with::As::<serde_with::DisplayFromStr>")
)]
value: Pubkey,
operator: EquatableOperator,
},
LockupUnixTimestamp {
value: i64,
operator: IntegerOperator,
},
LockupEpoch {
value: u64,
operator: IntegerOperator,
},
LockupCustodian {
#[cfg_attr(
feature = "serde",
serde(with = "serde_with::As::<serde_with::DisplayFromStr>")
)]
value: Pubkey,
operator: EquatableOperator,
},
}