fireblocks-sdk 2026.3.28

Rust implementation of the Fireblocks SDK
Documentation
#![doc = include_str!("../README.md")]
use {
    chrono::{DateTime, Utc},
    std::fmt::Display,
};
mod assets;
mod client;
pub mod error;
mod transaction_status;
use serde::de::DeserializeOwned;
pub use transaction_status::TransactionStatus;
pub(crate) mod jwt;
mod log;
#[cfg(feature = "page")]
mod paged_client;
mod wallet;
#[cfg(feature = "page")]
pub use paged_client::{PagedClient, TransactionStream, VaultStream};
pub use {
    crate::error::*,
    apis::{
        ApiClient,
        configuration::{ApiKey, Configuration},
    },
    assets::{
        ASSET_BTC,
        ASSET_BTC_TEST,
        ASSET_DOGE,
        ASSET_DOGE_TEST,
        ASSET_ETH,
        ASSET_ETH_TEST,
        ASSET_SOL,
        ASSET_SOL_TEST,
        Asset,
    },
    client::{Client, ClientBuilder},
    wallet::WalletContainer,
};

pub const FIREBLOCKS_API: &str = "https://api.fireblocks.io/v1";
pub const FIREBLOCKS_SANDBOX_API: &str = "https://sandbox-api.fireblocks.io/v1";
pub type Epoch = DateTime<Utc>;
pub type Result<T> = std::result::Result<T, FireblocksError>;
pub type QueryParams = Vec<(String, String)>;

#[derive(Debug, Clone, Copy)]
pub enum WalletType {
    Internal,
    External,
    Contract,
}

impl Display for WalletType {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", match &self {
            Self::Internal => "Internal",
            Self::External => "External",
            Self::Contract => "Contract",
        })
    }
}

#[allow(clippy::all, clippy::pedantic, clippy::nursery)]
pub mod apis;
#[allow(clippy::all, clippy::pedantic, clippy::nursery)]
pub mod models;

pub(crate) fn deserialize_wrapper<T: DeserializeOwned>(content: &str) -> serde_json::Result<T> {
    match serde_json::from_str(content) {
        Ok(value) => Ok(value),
        Err(err) => {
            tracing::error!("Failed to decode: {err}\n{content}");
            Err(err)
        }
    }
}