eql_core 0.1.16

EVM Query Language core components
Documentation
use alloy::eips::BlockNumberOrTag;

#[derive(Debug, PartialEq, Eq, thiserror::Error)]
pub enum EntityIdError {
    #[error("Invalid address")]
    InvalidAddress,
    #[error("Invalid tx hash")]
    InvalidTxHash,
    #[error("Invalid block number or tag: {0}")]
    InvalidBlockNumberOrTag(String),
    #[error("Unable resolve ENS name")]
    EnsResolution,
}

pub fn parse_block_number_or_tag(id: &str) -> Result<BlockNumberOrTag, EntityIdError> {
    match id.trim().parse::<u64>() {
        Ok(id) => Ok(BlockNumberOrTag::Number(id)),
        Err(_) => id
            .parse::<BlockNumberOrTag>()
            .map_err(|_| EntityIdError::InvalidBlockNumberOrTag(id.to_string())),
    }
}