use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum IdlType {
#[serde(rename = "bool")]
Bool,
#[serde(rename = "u8")]
U8,
#[serde(rename = "i8")]
I8,
#[serde(rename = "u16")]
U16,
#[serde(rename = "i16")]
I16,
#[serde(rename = "u32")]
U32,
#[serde(rename = "i32")]
I32,
#[serde(rename = "f32")]
F32,
#[serde(rename = "u64")]
U64,
#[serde(rename = "i64")]
I64,
#[serde(rename = "f64")]
F64,
#[serde(rename = "u128")]
U128,
#[serde(rename = "i128")]
I128,
#[serde(rename = "u256")]
U256,
#[serde(rename = "i256")]
I256,
#[serde(rename = "bytes")]
Bytes,
#[serde(rename = "string")]
String,
#[serde(rename = "pubkey")]
Pubkey,
}
impl std::fmt::Display for IdlType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Bool => write!(f, "bool"),
Self::U8 => write!(f, "u8"),
Self::I8 => write!(f, "i8"),
Self::U16 => write!(f, "u16"),
Self::I16 => write!(f, "i16"),
Self::U32 => write!(f, "u32"),
Self::I32 => write!(f, "i32"),
Self::F32 => write!(f, "f32"),
Self::U64 => write!(f, "u64"),
Self::I64 => write!(f, "i64"),
Self::F64 => write!(f, "f64"),
Self::U128 => write!(f, "u128"),
Self::I128 => write!(f, "i128"),
Self::U256 => write!(f, "u256"),
Self::I256 => write!(f, "i256"),
Self::Bytes => write!(f, "bytes"),
Self::String => write!(f, "string"),
Self::Pubkey => write!(f, "pubkey"),
}
}
}
impl Default for IdlType {
fn default() -> IdlType {
Self::Bool
}
}