hyperliquid_sdk/lib.rs
1//! Hyperliquid SDK for Rust
2//!
3//! A simple, performant SDK for trading on Hyperliquid.
4//!
5//! # Quick Start
6//!
7//! ```rust,no_run
8//! use hyperliquid_sdk::{HyperliquidSDK, Side, TIF};
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//! // Initialize with private key (or set PRIVATE_KEY env var)
13//! let sdk = HyperliquidSDK::new()
14//! .endpoint("https://your-endpoint.hype-mainnet.quiknode.pro/TOKEN")
15//! .private_key("0x...")
16//! .build()
17//! .await?;
18//!
19//! // Market buy $100 worth of BTC
20//! let order = sdk.market_buy("BTC").await.notional(100.0).await?;
21//! println!("Order placed: {:?}", order.oid);
22//!
23//! // Or use the fluent builder
24//! use hyperliquid_sdk::Order;
25//! let order = sdk.order(
26//! Order::buy("BTC").size(0.001).price(65000.0).gtc()
27//! ).await?;
28//!
29//! Ok(())
30//! }
31//! ```
32//!
33//! # Features
34//!
35//! - **Trading**: Market/limit orders, stop-loss, take-profit, TWAP
36//! - **Order Management**: Cancel, modify, batch operations
37//! - **Info API**: Market data, positions, open orders, account state
38//! - **HyperCore**: Real-time block data, trades, order book updates
39//! - **Streaming**: WebSocket and gRPC (optional) for real-time data
40//! - **HyperEVM**: Ethereum JSON-RPC compatibility
41
42pub mod types;
43pub mod signing;
44pub mod order;
45pub mod error;
46pub mod client;
47pub mod info;
48pub mod hypercore;
49pub mod evm;
50pub mod stream;
51pub mod evm_stream;
52
53pub mod grpc;
54
55// Re-export main types for convenience
56pub use types::{
57 Chain, Side, TIF, TpSl, OrderGrouping, Signature,
58 OrderRequest, OrderTypePlacement, TimeInForce,
59 Action, ActionRequest,
60};
61pub use order::{Order, TriggerOrder, PlacedOrder};
62pub use error::{Error, Result};
63pub use client::{HyperliquidSDK, HyperliquidSDKBuilder, EndpointInfo};
64pub use info::Info;
65pub use hypercore::HyperCore;
66pub use evm::EVM;
67pub use stream::Stream;
68pub use evm_stream::{EVMStream, EVMSubscriptionType, EVMConnectionState};
69
70pub use grpc::GRPCStream;
71
72// Re-export serde_json::Value for convenience since many API methods return it
73pub use serde_json::Value;