use polymarket_rs::client::ClobClient;
use polymarket_rs::types::TokenId;
use polymarket_rs::{Result, Side};
#[tokio::main]
async fn main() -> Result<()> {
let client = ClobClient::new("https://clob.polymarket.com");
println!("Checking server status...");
let status = client.get_ok().await?;
println!("Server status: {:?}\n", status);
let time = client.get_server_time().await?;
println!("Server time: {:?}\n", time);
let token_id = TokenId::new(
"7045107161367241233811523851106536676632348173555291268726302515224841822187",
);
println!("Getting midpoint price for token {}...", token_id);
match client.get_midpoint(&token_id).await {
Ok(midpoint) => println!("Midpoint price: {}\n", midpoint.mid),
Err(e) => println!("Error getting midpoint: {}\n", e),
}
println!("Getting current price...");
match client.get_price(&token_id, Side::Buy).await {
Ok(price) => println!("Current price: {}\n", price.price),
Err(e) => println!("Error getting price: {}\n", e),
}
println!("Getting spread...");
match client.get_spread(&token_id).await {
Ok(spread) => println!("Spread: {}\n", spread.spread),
Err(e) => println!("Error getting spread: {}\n", e),
}
println!("Getting tick size...");
match client.get_tick_size(&token_id).await {
Ok(tick_size) => println!("Minimum tick size: {}\n", tick_size.minimum_tick_size),
Err(e) => println!("Error getting tick size: {}\n", e),
}
println!("Getting order book...");
match client.get_order_book(&token_id).await {
Ok(book) => {
println!("Order book for market: {}", book.market);
println!(" Bids: {} levels", book.bids.len());
println!(" Asks: {} levels", book.asks.len());
if !book.bids.is_empty() {
println!(" Best bid: {} @ {}", book.bids[0].size, book.bids[0].price);
}
if !book.asks.is_empty() {
println!(" Best ask: {} @ {}", book.asks[0].size, book.asks[0].price);
}
println!();
}
Err(e) => println!("Error getting order book: {}\n", e),
}
println!("Getting sampling markets...");
match client.get_sampling_markets(None).await {
Ok(markets) => {
println!("Retrieved {} markets", markets.data.len());
if let Some(market) = markets.data.first() {
println!("First market condition ID: {}", market.condition_id);
println!("First market question ID: {}", market.question_id);
println!("First market question: {}", market.question);
}
}
Err(e) => println!("Error getting markets: {}", e),
}
println!("\nExample completed successfully!");
Ok(())
}