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}