kraken_ws/lib.rs
1//! Native WebSocket client for Kraken WebSocket API v2
2//!
3//! This crate provides a production-ready WebSocket client for connecting
4//! to Kraken's public and private market data feeds.
5//!
6//! # Features
7//!
8//! - Automatic reconnection with exponential backoff
9//! - Subscription management with restoration after reconnect
10//! - Orderbook state maintenance with checksum validation
11//! - Event-driven architecture with async streams
12//!
13//! # Example
14//!
15//! ```no_run
16//! use kraken_ws::{KrakenConnection, ConnectionConfig, Endpoint};
17//! use kraken_types::Depth;
18//!
19//! #[tokio::main]
20//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
21//! let config = ConnectionConfig::new()
22//! .with_endpoint(Endpoint::Public)
23//! .with_depth(Depth::D10);
24//!
25//! let conn = KrakenConnection::new(config);
26//! conn.subscribe_orderbook(vec!["BTC/USD".to_string()]);
27//!
28//! let mut events = conn.take_event_receiver().unwrap();
29//!
30//! // Spawn connection task
31//! tokio::spawn(async move {
32//! conn.connect_and_run().await
33//! });
34//!
35//! // Process events
36//! while let Some(event) = events.recv().await {
37//! println!("{:?}", event);
38//! }
39//!
40//! Ok(())
41//! }
42//! ```
43
44pub mod circuit_breaker;
45pub mod connection;
46pub mod endpoint;
47pub mod events;
48pub mod hooks;
49pub mod order_tracker;
50pub mod rate_limiter;
51pub mod reconnect;
52pub mod subscription;
53pub mod trading;
54pub mod transport;
55
56// Re-export main types
57pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitState, CircuitBreakerStats};
58pub use connection::{ConnectionConfig, ConnectionState, KrakenConnection, BackpressurePolicy, EventReceiver};
59pub use endpoint::Endpoint;
60pub use events::{
61 ConnectionEvent, DisconnectReason, Event, MarketEvent, SubscriptionEvent,
62 PrivateEvent, OrderStatus, TrackedOrder, OrderFill, ExecutionType, OrderChange, BalanceInfo,
63 L3Event,
64};
65pub use order_tracker::{OrderTracker, LifecycleOrder, LifecycleState, Fill, TrackerConfig, TrackerStats};
66pub use rate_limiter::{KrakenRateLimiter, SharedRateLimiter};
67pub use reconnect::ReconnectConfig;
68pub use subscription::Subscription;
69pub use trading::TradingClient;
70pub use transport::{Transport, TransportError, WsTransport};
71pub use hooks::{Hooks, ConnectInfo, DisconnectInfo, SubscriptionInfo, ChecksumInfo};
72
73// Re-export MockTransport when test-utils feature is enabled
74#[cfg(any(test, feature = "test-utils"))]
75pub use transport::MockTransport;