nado-sdk 0.3.5

Official Rust SDK for the Nado Protocol API
Documentation
use crate::indexer::Limit;
use crate::nado_client::NadoClient;
use crate::prelude::*;
use crate::print_json;
use crate::serialize_utils::WrappedU32;
use crate::utils::private_key::private_key;
use crate::utils::time::timestamp;
use eyre::Result;

pub async fn indexer_sanity_check() -> Result<()> {
    let client = NadoClient::new(ClientMode::Local)
        .with_signer(private_key())
        .await?;
    let funding_rate = client.get_funding_rate(1).await?;
    print_json!(funding_rate);

    let funding_rates = client.get_funding_rates(vec![1]).await?;
    print_json!(funding_rates);

    let liquidation_feed = client.get_liquidation_feed().await?;
    print_json!(liquidation_feed);

    let oracle_price = client.get_oracle_price(vec![1, 2]).await?;
    print_json!(oracle_price);

    let account_snapshots = client
        .get_account_snapshots_builder()
        .subaccounts(vec![[0; 32]])
        .timestamps(vec![timestamp()])
        .query()
        .await?;
    print_json!(account_snapshots);

    let linked_signer_rate_limit = client.get_linked_signer_rate_limit([0; 32]).await?;
    print_json!(linked_signer_rate_limit);

    let linked_signers = client.get_linked_signers(Some(100), Some(10)).await?;
    print_json!(linked_signers);

    let perp_prices = client.get_perp_prices(vec![2]).await?;
    print_json!(perp_prices);

    let trades = client
        .get_trades_builder()
        .ticker_id("BTC-PERP_USDC".to_string())
        .max_trade_id(0)
        .limit(10)
        .query()
        .await?;
    print_json!(trades);

    let tickers = client.get_tickers(None, None).await?;
    print_json!(tickers);

    let contracts = client.get_contracts_v2(None).await?;
    print_json!(contracts);

    let candlesticks = client
        .get_candlesticks_builder()
        .product_id(1)
        .granularity(60)
        .max_time(timestamp())
        .limit(3000)
        .query()
        .await?;
    print_json!(candlesticks);

    let product_snapshots = client
        .get_product_snapshots_builder()
        .product_id(1)
        .max_time(timestamp())
        .limit(10)
        .idx(1000)
        .query()
        .await?;
    print_json!(product_snapshots);

    let events = client
        .get_events_builder()
        .limit(Limit::Txs(WrappedU32(10)))
        .product_ids(vec![1, 4])
        .max_time(timestamp())
        .idx(10000)
        .desc(true)
        .query()
        .await?;
    print_json!(events);

    let historical_orders = client
        .get_historical_orders_builder()
        .subaccounts(vec![[0; 32]])
        .limit(20)
        .product_ids(vec![1, 4])
        .max_time(timestamp())
        .query()
        .await?;
    print_json!(historical_orders);

    let matches = client
        .get_matches_builder()
        .subaccounts(vec![[0; 32]])
        .product_ids(vec![1, 2, 3])
        .limit(100)
        .max_time(timestamp())
        .idx(1000)
        .query()
        .await?;
    print_json!(matches);

    let subaccounts = client
        .get_subaccounts_builder()
        .address([0; 20])
        .limit(10)
        .start(100)
        .query()
        .await?;
    print_json!(subaccounts);

    let interest_and_funding = client
        .get_interest_and_funding_builder()
        .subaccount(client.subaccount().unwrap())
        .product_ids(vec![1, 4])
        .limit(100)
        .query()
        .await?;
    print_json!(interest_and_funding);

    let market_snapshots = client
        .get_market_snapshots_builder()
        .granularity(84600)
        .count(2)
        .max_time(timestamp())
        .query()
        .await?;
    print_json!(market_snapshots);

    Ok(())
}