use crate::WalletError;
#[derive(Debug, PartialEq, Eq, Default, PartialOrd, Ord, Clone, Copy, Hash)]
pub enum Commitment {
Processed,
Confirmed,
#[default]
Finalized,
}
impl Commitment {
pub fn as_str(&self) -> &str {
match self {
Self::Processed => "processed",
Self::Confirmed => "confirmed",
Self::Finalized => "finalized",
}
}
}
impl TryFrom<&str> for Commitment {
type Error = WalletError;
fn try_from(value: &str) -> Result<Self, Self::Error> {
let converted = match value {
"processed" | "recent" => Self::Processed,
"confirmed" | "single" | "singleGossip" => Self::Confirmed,
"finalized" | "root" | "max" => Self::Finalized,
_ => return Err(WalletError::UnsupportedCommitment(value.to_string())),
};
Ok(converted)
}
}