use nautilus_core::serialization::default_true;
use nautilus_model::identifiers::ClientId;
use serde::{Deserialize, Serialize};
#[cfg_attr(
feature = "python",
pyo3::pyclass(
module = "nautilus_trader.core.nautilus_pyo3.execution",
from_py_object
)
)]
#[cfg_attr(
feature = "python",
pyo3_stub_gen::derive::gen_stub_pyclass(module = "nautilus_trader.execution")
)]
#[derive(Debug, Clone, Serialize, Deserialize, bon::Builder)]
#[serde(deny_unknown_fields)]
pub struct ExecutionEngineConfig {
#[serde(default = "default_true")]
#[builder(default = true)]
pub load_cache: bool,
#[serde(default)]
#[builder(default)]
pub manage_own_order_books: bool,
#[serde(default)]
#[builder(default)]
pub snapshot_orders: bool,
#[serde(default)]
#[builder(default)]
pub snapshot_positions: bool,
#[serde(default)]
pub snapshot_positions_interval_secs: Option<f64>,
#[serde(default)]
#[builder(default)]
pub allow_overfills: bool,
#[serde(default)]
pub external_clients: Option<Vec<ClientId>>,
#[serde(default)]
pub purge_closed_orders_interval_mins: Option<u32>,
#[serde(default)]
pub purge_closed_orders_buffer_mins: Option<u32>,
#[serde(default)]
pub purge_closed_positions_interval_mins: Option<u32>,
#[serde(default)]
pub purge_closed_positions_buffer_mins: Option<u32>,
#[serde(default)]
pub purge_account_events_interval_mins: Option<u32>,
#[serde(default)]
pub purge_account_events_lookback_mins: Option<u32>,
#[serde(default)]
#[builder(default)]
pub purge_from_database: bool,
#[serde(default)]
#[builder(default)]
pub debug: bool,
}
impl Default for ExecutionEngineConfig {
fn default() -> Self {
Self::builder().build()
}
}