use std::{collections::HashMap, time::Duration};
use nautilus_model::{
enums::{BarAggregation, BarIntervalType},
identifiers::ClientId,
};
use serde::{Deserialize, Serialize};
#[cfg_attr(
feature = "python",
pyo3::pyclass(module = "nautilus_trader.core.nautilus_pyo3.data", from_py_object)
)]
#[cfg_attr(
feature = "python",
pyo3_stub_gen::derive::gen_stub_pyclass(module = "nautilus_trader.data")
)]
#[derive(Clone, Debug, Deserialize, Serialize, bon::Builder)]
#[serde(default, deny_unknown_fields)]
pub struct DataEngineConfig {
#[builder(default = true)]
pub time_bars_build_with_no_updates: bool,
#[builder(default = true)]
pub time_bars_timestamp_on_close: bool,
#[builder(default)]
pub time_bars_skip_first_non_full_bar: bool,
#[builder(default = BarIntervalType::LeftOpen)]
pub time_bars_interval_type: BarIntervalType,
#[builder(default)]
pub time_bars_build_delay: u64,
#[builder(default)]
pub time_bars_origins: HashMap<BarAggregation, Duration>,
#[builder(default)]
pub validate_data_sequence: bool,
#[builder(default)]
pub buffer_deltas: bool,
#[builder(default)]
pub emit_quotes_from_book: bool,
#[builder(default)]
pub emit_quotes_from_book_depths: bool,
pub external_clients: Option<Vec<ClientId>>,
#[builder(default)]
pub debug: bool,
}
impl Default for DataEngineConfig {
fn default() -> Self {
Self::builder().build()
}
}