starkli 0.1.8

Starkli (/ˈstɑːrklaɪ/), a blazing fast CLI tool for Starknet powered by starknet-rs
use anyhow::Result;
use async_trait::async_trait;
use starknet::{core::types::FieldElement, providers::Provider};

#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
pub trait ChainIdSource {
    async fn get_chain_id(&self) -> Result<FieldElement>;
}

#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
impl<T> ChainIdSource for T
where
    T: Provider + Send + Sync,
{
    async fn get_chain_id(&self) -> Result<FieldElement> {
        self.chain_id()
            .await
            .map_err(|err| anyhow::anyhow!("unable to get chain id: {err}"))
    }
}