use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::fmt;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum IncentivesIneligibilityReason {
#[serde(rename = "DISABLED")]
Disabled,
#[serde(rename = "SENDER_NOT_ELIGIBLE")]
SenderNotEligible,
#[serde(rename = "RECEIVER_NOT_ELIGIBLE")]
ReceiverNotEligible,
#[serde(rename = "SENDING_VASP_NOT_ELIGIBLE")]
SendingVaspNotEligible,
#[serde(rename = "RECEIVING_VASP_NOT_ELIGIBLE")]
ReceivingVaspNotEligible,
#[serde(rename = "NOT_CROSS_BORDER")]
NotCrossBorder,
}
impl From<IncentivesIneligibilityReason> for Value {
fn from(val: IncentivesIneligibilityReason) -> Self {
Value::from(val.to_string())
}
}
impl fmt::Display for IncentivesIneligibilityReason {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::Disabled => write!(f, "DISABLED"),
Self::SenderNotEligible => write!(f, "SENDER_NOT_ELIGIBLE"),
Self::ReceiverNotEligible => write!(f, "RECEIVER_NOT_ELIGIBLE"),
Self::SendingVaspNotEligible => write!(f, "SENDING_VASP_NOT_ELIGIBLE"),
Self::ReceivingVaspNotEligible => write!(f, "RECEIVING_VASP_NOT_ELIGIBLE"),
Self::NotCrossBorder => write!(f, "NOT_CROSS_BORDER"),
}
}
}