kraken_sdk/
lib.rs

1//! High-level SDK for Kraken WebSocket API v2
2//!
3//! This crate provides an ergonomic, high-level API for connecting to Kraken's
4//! real-time market data feeds. It handles connection management, automatic
5//! reconnection, and orderbook state maintenance.
6//!
7//! # Quick Start
8//!
9//! ```no_run
10//! use kraken_sdk::prelude::*;
11//!
12//! #[tokio::main]
13//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
14//!     // Connect to Kraken
15//!     let mut client = KrakenClient::builder(["BTC/USD", "ETH/USD"])
16//!         .with_depth(Depth::D10)
17//!         .connect()
18//!         .await?;
19//!
20//!     // Get market data
21//!     if let Some(spread) = client.spread("BTC/USD") {
22//!         println!("BTC/USD spread: {}", spread);
23//!     }
24//!
25//!     // Process events
26//!     let mut events = client.events().unwrap();
27//!     while let Some(event) = events.recv().await {
28//!         match event {
29//!             Event::Market(MarketEvent::OrderbookUpdate { symbol, snapshot }) => {
30//!                 println!("{}: mid = {:?}", symbol, snapshot.mid_price());
31//!             }
32//!             _ => {}
33//!         }
34//!     }
35//!
36//!     Ok(())
37//! }
38//! ```
39//!
40//! # Features
41//!
42//! - **Simple API**: Builder pattern for configuration
43//! - **Automatic Reconnection**: Exponential backoff with jitter
44//! - **Orderbook Management**: State tracking with checksum validation
45//! - **Event-Driven**: Async event stream for all updates
46//! - **Type-Safe**: Full type safety with Rust's type system
47
48pub mod builder;
49pub mod client;
50pub mod filter;
51pub mod market;
52pub mod prelude;
53
54#[cfg(feature = "metrics")]
55pub mod metrics;
56
57#[cfg(feature = "auth")]
58pub mod auth;
59
60// Re-export main types
61pub use builder::KrakenClientBuilder;
62pub use client::KrakenClient;
63
64// Re-export commonly used types from dependencies
65pub use kraken_book::{Orderbook, OrderbookSnapshot, OrderbookState, L3Book};
66pub use kraken_types::{Depth, KrakenError, Level, Symbol, Side, Channel};
67pub use kraken_ws::{
68    ConnectionState, Endpoint, Event, ReconnectConfig,
69    TradingClient, L3Event,
70    PrivateEvent, MarketEvent, ConnectionEvent, SubscriptionEvent,
71};