use ahash::AHashMap;
use nautilus_common::throttler::RateLimit;
use nautilus_core::datetime::NANOSECONDS_IN_SECOND;
use nautilus_model::identifiers::InstrumentId;
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
#[cfg_attr(
feature = "python",
pyo3::pyclass(module = "nautilus_trader.core.nautilus_pyo3.risk", from_py_object)
)]
#[cfg_attr(
feature = "python",
pyo3_stub_gen::derive::gen_stub_pyclass(module = "nautilus_trader.risk")
)]
#[derive(Debug, Clone, Deserialize, Serialize, bon::Builder)]
#[serde(default, deny_unknown_fields)]
pub struct RiskEngineConfig {
#[builder(default)]
pub bypass: bool,
#[builder(default = RateLimit::new(100, NANOSECONDS_IN_SECOND))]
pub max_order_submit: RateLimit,
#[builder(default = RateLimit::new(100, NANOSECONDS_IN_SECOND))]
pub max_order_modify: RateLimit,
#[builder(default)]
pub max_notional_per_order: AHashMap<InstrumentId, Decimal>,
#[builder(default)]
pub debug: bool,
}
impl Default for RiskEngineConfig {
fn default() -> Self {
Self::builder().build()
}
}