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};