rhyperliquid 0.2.0

Rust SDK and client for the Hyperliquid exchange API
Documentation
#![allow(clippy::all)]
use rhyperliquid::{
    example_helpers::{builder, user},
    init_tracing::init_tracing,
    utils::current_time_millis,
    HyperliquidClientBuilder,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    init_tracing();

    let hyperliquid = HyperliquidClientBuilder::new().testnet().build()?;

    let user = user();
    let builder = builder();

    let rate_limits = hyperliquid.info().rate_limits(&user).await?;
    tracing::info!("Rate Limits: {:?}", rate_limits);

    let subaccounts = hyperliquid.info().subaccounts(&user).await?;
    tracing::info!("{:?}", subaccounts);

    let referral_information = hyperliquid.info().referral_information(&user).await?;
    tracing::info!("{:?}", referral_information);

    let fee_approval = hyperliquid
        .info()
        .check_builder_fee_approval(&user, &builder)
        .await?;
    tracing::info!("{:?}", fee_approval);

    let user_role = hyperliquid.info().role(&user).await?;
    tracing::info!("{:?}", user_role);

    let user_portfolio = hyperliquid.info().portfolio(&user).await?;
    tracing::info!("{:?}", user_portfolio);

    let historical_orders = hyperliquid.info().historical_orders(&user).await?;
    tracing::info!("{:?}", historical_orders);

    let open_orders = hyperliquid.info().open_orders(&user, None).await?;
    tracing::info!("{:?}", open_orders);

    let open_orders_with_additional_frontend_info = hyperliquid
        .info()
        .open_orders_with_additional_info(&user, None)
        .await?;
    tracing::info!("{:?}", open_orders_with_additional_frontend_info);

    let fees = hyperliquid.info().fees(&user).await?;
    tracing::info!("{:?}", fees);

    let fills = hyperliquid.info().fills(&user, Some(true)).await?;
    tracing::info!("Fills: {:?}", fills);

    let start_time = current_time_millis();

    let fills_by_time = hyperliquid
        .info()
        .fills_by_time(&user, start_time, None, None)
        .await?;
    tracing::info!("Fills by time: {:?}", fills_by_time);

    let twap_slice_fills = hyperliquid.info().twap_slice_fills(&user).await?;
    tracing::info!("{:?}", twap_slice_fills);

    let vault_deposits = hyperliquid.info().vault_deposits(&user).await?;
    tracing::info!("{:?}", vault_deposits);

    let state = hyperliquid.info().hip3_dex_abstraction_state(&user).await?;
    tracing::info!("{:?}", state);

    let history = hyperliquid.info().staking_history(&user).await?;

    tracing::info!("{:?}", history);

    let rewards = hyperliquid.info().staking_rewards(&user).await?;

    tracing::info!("{:?}", rewards);

    let delegations = hyperliquid.info().staking_delegations(&user).await?;
    tracing::info!("{:?}", delegations);

    let summary = hyperliquid.info().staking_summary(&user).await?;

    tracing::info!("{:?}", summary);

    Ok(())
}