polymarket-client-sdk 0.3.0

Polymarket CLOB (Central Limit Order Book) API client SDK
Documentation
#![allow(clippy::print_stdout, reason = "Examples are okay to print to stdout")]

use alloy::primitives::address;
use polymarket_client_sdk::data::Client;
use polymarket_client_sdk::data::types::request::{
    ActivityRequest, BuilderLeaderboardRequest, BuilderVolumeRequest, ClosedPositionsRequest,
    HoldersRequest, LiveVolumeRequest, OpenInterestRequest, PositionsRequest, TradedRequest,
    TraderLeaderboardRequest, TradesRequest, ValueRequest,
};
use polymarket_client_sdk::data::types::{LeaderboardCategory, TimePeriod};

const EXAMPLE_MARKET: &str = "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917";

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = Client::default();

    let user = address!("56687bf447db6ffa42ffe2204a05edaa20f55839");
    let market = EXAMPLE_MARKET.to_owned();

    println!("health -- {:?}", client.health().await);

    let request = PositionsRequest::builder().user(user).limit(5)?.build();
    println!("positions -- {:?}", client.positions(&request).await);

    println!(
        "trades default -- {:?}",
        client.trades(&TradesRequest::default()).await
    );

    let request = ActivityRequest::builder().user(user).limit(5)?.build();
    println!("activity -- {:?}", client.activity(&request).await);

    let request = HoldersRequest::builder()
        .markets(vec![market.clone()])
        .limit(5)?
        .build();
    println!("holders -- {:?}", client.holders(&request).await);

    let request = ValueRequest::builder().user(user).build();
    println!("value -- {:?}", client.value(&request).await);

    let request = ClosedPositionsRequest::builder()
        .user(user)
        .limit(5)?
        .build();
    println!(
        "closed_positions -- {:?}",
        client.closed_positions(&request).await
    );

    let request = TraderLeaderboardRequest::builder()
        .category(LeaderboardCategory::Overall)
        .time_period(TimePeriod::Week)
        .limit(5)?
        .build();
    println!("leaderboard -- {:?}", client.leaderboard(&request).await);

    let request = TradedRequest::builder().user(user).build();
    println!("traded -- {:?}", client.traded(&request).await);

    println!(
        "open_interest -- {:?}",
        client.open_interest(&OpenInterestRequest::default()).await
    );

    let request = LiveVolumeRequest::builder().id(1).build();
    println!("live_volume -- {:?}", client.live_volume(&request).await);

    let request = BuilderLeaderboardRequest::builder()
        .time_period(TimePeriod::Week)
        .limit(5)?
        .build();
    println!(
        "builder_leaderboard -- {:?}",
        client.builder_leaderboard(&request).await
    );

    let request = BuilderVolumeRequest::builder()
        .time_period(TimePeriod::Week)
        .build();
    println!(
        "builder_volume -- {:?}",
        client.builder_volume(&request).await
    );

    Ok(())
}