Skip to main content

hypercall_config/
lib.rs

1use serde::Deserialize;
2
3#[derive(Debug, Clone, Deserialize)]
4#[serde(default, deny_unknown_fields)]
5pub struct ApiRuntimeConfig {
6    pub max_open_orders_default: i32,
7    pub max_open_positions_default: i32,
8    pub global_trading_halted: bool,
9    pub halted_markets: Vec<String>,
10    pub trade_explorer_url_template: Option<String>,
11    pub ws_heartbeat_interval_ms: u64,
12    pub ws_pong_timeout_ms: u64,
13    pub markets_snapshot_refresh_ms: u64,
14    pub require_risk_vol_readiness: bool,
15}
16
17impl Default for ApiRuntimeConfig {
18    fn default() -> Self {
19        Self {
20            max_open_orders_default: 100,
21            max_open_positions_default: 50,
22            global_trading_halted: false,
23            halted_markets: Vec::new(),
24            trade_explorer_url_template: None,
25            ws_heartbeat_interval_ms: 20_000,
26            ws_pong_timeout_ms: 60_000,
27            markets_snapshot_refresh_ms: 1_000,
28            require_risk_vol_readiness: false,
29        }
30    }
31}
32
33#[derive(Debug, Clone, Deserialize)]
34#[serde(default, deny_unknown_fields)]
35pub struct PricingConfig {
36    pub hyperliquid_info_url: String,
37    pub hyperliquid_ws_url: String,
38    pub candle_ws_poll_interval_ms: u64,
39    pub min_settlement_samples: usize,
40    pub hypercore_info_url: String,
41    pub hypercore_update_interval_secs: u64,
42    pub oracle_symbol: String,
43}
44
45pub const DEFAULT_HYPERLIQUID_INFO_URL: &str = "https://api.hyperliquid.xyz/info";
46pub const DEFAULT_HYPERLIQUID_TESTNET_INFO_URL: &str = "https://api.hyperliquid-testnet.xyz/info";
47pub const DEFAULT_HYPERLIQUID_WS_URL: &str = "wss://api.hyperliquid.xyz/ws";
48pub const DEFAULT_HYPERLIQUID_TESTNET_WS_URL: &str = "wss://api.hyperliquid-testnet.xyz/ws";
49
50impl Default for PricingConfig {
51    fn default() -> Self {
52        Self {
53            hyperliquid_info_url: DEFAULT_HYPERLIQUID_INFO_URL.to_string(),
54            hyperliquid_ws_url: DEFAULT_HYPERLIQUID_WS_URL.to_string(),
55            candle_ws_poll_interval_ms: 2_000,
56            min_settlement_samples: 500,
57            hypercore_info_url: DEFAULT_HYPERLIQUID_INFO_URL.to_string(),
58            hypercore_update_interval_secs: 30,
59            oracle_symbol: "BTC".to_string(),
60        }
61    }
62}