Skip to main content

Crate monaco_sdk

Crate monaco_sdk 

Source
Expand description

§Monaco SDK

Typed Rust client for the Monaco DEX REST API — auto-generated from the OpenAPI specification via progenitor.

§Quick start

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = monaco_sdk::Client::new("https://develop.apimonaco.xyz");

    // Public endpoints (no auth required)
    let health = client.health_check().await?.into_inner();
    println!("Status: {:?}", health.status);

    let pairs = client
        .list_trading_pairs(None, None, Some(true), None, None, None, None)
        .await?
        .into_inner();
    println!("Trading pairs: {:?}", pairs.trading_pairs);

    Ok(())
}

§Authentication

Monaco uses noncustodial session-key auth. At login the client generates a random ed25519 keypair locally and registers the public key through the challenge → wallet-sign → verify flow (the wallet signature authorizes the session public key). Every authenticated request is then signed with the session private key and carries X-Monaco-PublicKey, X-Monaco-Timestamp, and X-Monaco-Signature headers over METHOD\nPATH_WITH_QUERY\nTIMESTAMP_MS\nSHA256_BODY_HEX.

Per-request signing requires a request-signing layer that this generated client does not yet provide; until it lands, sign requests yourself (e.g. a reqwest layer that injects the headers above) when calling authenticated endpoints. The public challenge/verify endpoints work out of the box.

§API coverage

The client exposes every operation from the Monaco REST API:

CategoryMethods
Market datalist_trading_pairs, get_trading_pair_by_id, get_market_metadata, get_candles, get_screener, get_open_interest
Perp marketsget_perp_market_config, get_perp_market_summary, get_mark_price, get_index_price, get_funding_state, list_funding_history
Orderbookget_orderbook_snapshot
Tradesget_trades, get_trade_by_id, get_user_trades
Orderscreate_order, replace_order, cancel_order, get_orders, get_order_by_id
Conditional orderscancel_conditional_order, list_conditional_orders
Batch ordersbatch_create_orders, batch_replace_orders, batch_cancel_orders, batch_cancel_all, batch_cancel_all_by_pair
Accountsget_user_profile, get_user_balances, get_user_balance_by_asset, get_user_movements, list_funding_payments, get_portfolio_stats, get_portfolio_chart
Sub-accountslist_sub_accounts_with_balances, create_sub_account_limit, get_sub_account_limits, update_sub_account_limit, delete_sub_account_limit
Margin accountslist_margin_accounts, get_margin_account_summary, get_margin_account_movements, get_available_collateral, transfer_collateral_to_margin_account, transfer_collateral_from_margin_account, transfer_collateral_to_parent_margin_account, transfer_collateral_from_parent_margin_account, transfer_collateral_to_risk_bucket, simulate_order_risk, simulate_risk_bucket_order_risk
Positionslist_positions, get_position, close_position, get_position_risk, add_position_margin, reduce_position_margin, list_position_history, attach_position_tp_sl
Delegated agentsupsert_delegated_agent, list_delegated_agents, list_delegated_agent_owners, revoke_delegated_agent, create_delegated_session
Applicationsget_application_config, get_application_stats, list_application_orders, list_application_users, list_application_movements, list_application_balances
Authcreate_challenge, verify_signature, refresh_session, revoke_session, authenticate_backend
Feessimulate_fees
Whitelistsubmit_whitelist
Faucetmint_tokens
Healthhealth_check

All request/response types live in the types module.

Modules§

prelude
Items consumers will typically use such as the Client.
types
Types used as operation parameters and responses.

Structs§

ByteStream
Untyped byte stream used for both success and error responses.
Client
Client for Monaco Protocol API
ResponseValue
Typed value returned by generated client methods.

Enums§

Error
Error produced by generated client methods.

Traits§

ClientInfo
Interface for which an implementation is generated for all clients.