polyte 0.1.0

Unified Rust client for Polymarket APIs (CLOB + Gamma)
Documentation

polyte

Unified Rust client for Polymarket APIs, combining both CLOB (trading) and Gamma (market data) APIs.

Features

  • Unified access to both CLOB and Gamma APIs
  • Type-safe API with idiomatic Rust patterns
  • EIP-712 order signing and HMAC authentication
  • Comprehensive market data and trading operations

Example

use polyte::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let private_key = "0x1234..."; // Load this from environment variables

    // Set up credentials
    let credentials = Credentials {
        key: "<api_key>".to_string(),
        secret: "<secret>".to_string(),
        passphrase: "<passphrase>".to_string(),
    };

    // Create unified client
    let polymarket = Polymarket::builder(private_key, credentials)
        .chain(Chain::PolygonMainnet)
        .build()?;

    // Use Gamma API to list markets
    let markets = polymarket.gamma.markets()
        .list()
        .active(true)
        .limit(10)
        .send()
        .await?;

    // Use CLOB API to place an order
    if let Some(first_market) = markets.first() {
        if let Some(token) = first_market.tokens.first() {
            let order_params = CreateOrderParams {
                token_id: token.token_id.clone(),
                price: 0.52,
                size: 100.0,
                side: OrderSide::Buy,
                expiration: None,
            };

            let response = polymarket.clob.place_order(&order_params).await?;
            println!("Order placed: {:?}", response.order_id);
        }
    }

    Ok(())
}