use nautilus_model::{
data::{Data, FundingRateUpdate, InstrumentStatus, option_chain::OptionGreeks},
events::{
AccountState, OrderAcceptedBatch, OrderCanceledBatch, OrderEventAny, OrderSubmittedBatch,
},
instruments::InstrumentAny,
};
use strum::Display;
pub mod data;
pub mod execution;
pub mod system;
#[cfg(feature = "defi")]
pub mod defi;
pub use data::{DataResponse, SubscribeCommand, UnsubscribeCommand};
pub use execution::ExecutionReport;
#[allow(clippy::large_enum_variant)]
#[derive(Debug, Display)]
pub enum DataEvent {
Response(DataResponse),
Data(Data),
Instrument(InstrumentAny), FundingRate(FundingRateUpdate),
InstrumentStatus(InstrumentStatus),
OptionGreeks(OptionGreeks),
#[cfg(feature = "defi")]
DeFi(nautilus_model::defi::data::DefiData),
}
#[expect(clippy::large_enum_variant)]
#[derive(Debug, Display)]
pub enum ExecutionEvent {
Order(OrderEventAny),
OrderSubmittedBatch(OrderSubmittedBatch),
OrderAcceptedBatch(OrderAcceptedBatch),
OrderCanceledBatch(OrderCanceledBatch),
Report(ExecutionReport),
Account(AccountState),
}