Skip to main content

Crate polyfill_rs

Crate polyfill_rs 

Source
Expand description

Polyfill-rs: High-performance Rust client for Polymarket

§Features

  • High-performance order book management with optimized data structures
  • Real-time market data streaming with WebSocket support
  • Trade execution simulation with slippage protection
  • Detailed error handling with specific error types
  • Rate limiting and retry logic for robust API interactions
  • Ethereum integration with EIP-712 signing support
  • Benchmarking tools for performance analysis

§Quick Start

use polyfill_rs::{ClobClient, OrderArgs, Side};
use rust_decimal::Decimal;
use std::str::FromStr;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create client (compatible with polymarket-rs-client)
    let mut client = ClobClient::with_l1_headers(
        "https://clob.polymarket.com",
        "your_private_key",
        137,
    );

    // Get API credentials
    let api_creds = client.create_or_derive_api_key(None).await.unwrap();
    client.set_api_creds(api_creds);

    // Create and post order
    let order_args = OrderArgs::new(
        "token_id",
        Decimal::from_str("0.75").unwrap(),
        Decimal::from_str("100.0").unwrap(),
        Side::BUY,
    );

    let result = client.create_and_post_order(&order_args).await.unwrap();
    println!("Order posted: {:?}", result);

    Ok(())
}

§Advanced Usage

use polyfill_rs::{ClobClient, OrderBookImpl};
use rust_decimal::Decimal;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a basic client
    let client = ClobClient::new("https://clob.polymarket.com");

    // Get market data
    let markets = client.get_sampling_markets(None).await.unwrap();
    println!("Found {} markets", markets.data.len());

    // Create an order book for high-performance operations
    let mut book = OrderBookImpl::new("token_id".to_string(), 100); // 100 levels depth
    println!("Order book created for token: {}", book.token_id);

    Ok(())
}

Re-exports§

pub use crate::types::ApiCredentials;
pub use crate::types::ApiKeysResponse;
pub use crate::types::AssetType;
pub use crate::types::Balance;
pub use crate::types::BalanceAllowance;
pub use crate::types::BalanceAllowanceParams;
pub use crate::types::BatchMidpointRequest;
pub use crate::types::BatchMidpointResponse;
pub use crate::types::BatchPriceRequest;
pub use crate::types::BatchPriceResponse;
pub use crate::types::BookParams;
pub use crate::types::ClientConfig;
pub use crate::types::ClientResult;
pub use crate::types::FeeRateResponse;
pub use crate::types::FillEvent;
pub use crate::types::Market;
pub use crate::types::MarketSnapshot;
pub use crate::types::MarketsResponse;
pub use crate::types::MidpointResponse;
pub use crate::types::NegRiskResponse;
pub use crate::types::NotificationParams;
pub use crate::types::OpenOrder;
pub use crate::types::OpenOrderParams;
pub use crate::types::Order;
pub use crate::types::OrderBook;
pub use crate::types::OrderBookSummary;
pub use crate::types::OrderDelta;
pub use crate::types::OrderRequest;
pub use crate::types::OrderStatus;
pub use crate::types::OrderSummary;
pub use crate::types::OrderType;
pub use crate::types::PriceResponse;
pub use crate::types::PricesHistoryInterval;
pub use crate::types::PricesHistoryResponse;
pub use crate::types::Rewards;
pub use crate::types::RfqApproveOrderResponse;
pub use crate::types::RfqCancelQuote;
pub use crate::types::RfqCancelRequest;
pub use crate::types::RfqCreateQuote;
pub use crate::types::RfqCreateQuoteResponse;
pub use crate::types::RfqCreateRequest;
pub use crate::types::RfqCreateRequestResponse;
pub use crate::types::RfqListResponse;
pub use crate::types::RfqOrderExecutionRequest;
pub use crate::types::RfqQuoteData;
pub use crate::types::RfqQuotesParams;
pub use crate::types::RfqRequestData;
pub use crate::types::RfqRequestsParams;
pub use crate::types::Side;
pub use crate::types::SimplifiedMarket;
pub use crate::types::SimplifiedMarketsResponse;
pub use crate::types::SpreadResponse;
pub use crate::types::StreamMessage;
pub use crate::types::TickSizeResponse;
pub use crate::types::Token;
pub use crate::types::TokenPrice;
pub use crate::types::TradeParams;
pub use crate::types::WssAuth;
pub use crate::types::WssChannelType;
pub use crate::types::WssSubscription;
pub use crate::client::ClobClient;
pub use crate::client::PolyfillClient;
pub use crate::client::OrderArgs;
pub use crate::errors::PolyfillError;
pub use crate::errors::Result;
pub use crate::book::OrderBook as OrderBookImpl;
pub use crate::book::OrderBookManager;
pub use crate::decode::Decoder;
pub use crate::fill::FillEngine;
pub use crate::fill::FillResult;
pub use crate::stream::MarketStream;
pub use crate::stream::StreamManager;
pub use crate::stream::WebSocketBookApplier;
pub use crate::stream::WebSocketStream;
pub use crate::ws_hot_path::WsBookApplyStats;
pub use crate::ws_hot_path::WsBookUpdateProcessor;
pub use crate::utils::crypto;
pub use crate::utils::math;
pub use crate::utils::rate_limit;
pub use crate::utils::retry;
pub use crate::utils::time;
pub use crate::utils::url;

Modules§

auth
Authentication and cryptographic utilities for Polymarket API
book
Order book management for Polymarket client
buffer_pool
Buffer pooling for reducing allocation overhead
client
High-performance Rust client for Polymarket
connection_manager
Connection management for maintaining warm HTTP connections
decode
Data decoding utilities for Polymarket client
dns_cache
DNS caching to reduce lookup latency
errors
Error types for the Polymarket client
fill
Trade execution and fill handling for Polymarket client
http_config
HTTP client optimization for low-latency trading
orders
Order creation and signing functionality
stream
Async streaming functionality for Polymarket client
types
Core types for the Polymarket client
utils
Utility functions for the Polymarket client
ws_hot_path
Zero-allocation-ish WebSocket hot-path processing.

Constants§

DEFAULT_BASE_URL
DEFAULT_CHAIN_ID
DEFAULT_MAX_RETRIES
DEFAULT_RATE_LIMIT_RPS
DEFAULT_TIMEOUT_SECS

Functions§

init