use crate::{Actions, AlgoState, Fill, L2Book, NbboSnapshot, OnlineFeatures, Reject, VenueBooks};
pub trait Algo: Send {
fn on_book(
&mut self,
book: &L2Book,
state: &AlgoState,
features: &OnlineFeatures,
actions: &mut Actions,
);
fn on_fill(&mut self, _fill: &Fill, _state: &AlgoState) {}
fn on_reject(&mut self, _reject: &Reject) {}
fn on_shutdown(&mut self, _state: &AlgoState, _actions: &mut Actions) {}
fn on_heartbeat(
&mut self,
_state: &AlgoState,
_features: &OnlineFeatures,
_actions: &mut Actions,
) {
}
fn on_message(
&mut self,
_from: &str,
_payload: &[u8],
_state: &AlgoState,
_actions: &mut Actions,
) {
}
fn on_nbbo(
&mut self,
_nbbo: &NbboSnapshot,
_books: &VenueBooks,
_state: &AlgoState,
_features: &OnlineFeatures,
_actions: &mut Actions,
) {
}
}