Skip to main content

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;