use kaspa_utils::mem_size::MemSizeEstimator;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Debug)]
pub enum BlockStatus {
StatusInvalid,
StatusUTXOValid,
StatusUTXOPendingVerification,
StatusDisqualifiedFromChain,
StatusHeaderOnly,
}
impl MemSizeEstimator for BlockStatus {}
impl BlockStatus {
pub fn has_block_header(self) -> bool {
matches!(
self,
Self::StatusHeaderOnly | Self::StatusUTXOValid | Self::StatusUTXOPendingVerification | Self::StatusDisqualifiedFromChain
)
}
pub fn is_header_only(self) -> bool {
self == Self::StatusHeaderOnly
}
pub fn has_block_body(self) -> bool {
matches!(self, Self::StatusUTXOValid | Self::StatusUTXOPendingVerification | Self::StatusDisqualifiedFromChain)
}
pub fn is_utxo_valid_or_pending(self) -> bool {
matches!(self, Self::StatusUTXOValid | Self::StatusUTXOPendingVerification)
}
pub fn is_valid(self) -> bool {
self != BlockStatus::StatusInvalid
}
pub fn is_invalid(self) -> bool {
self == BlockStatus::StatusInvalid
}
}