Skip to main content

apple_quant_algorithmic/order/dependency/
client.rs

1use bevy::prelude::{Deref, DerefMut};
2
3use crate::instrument::InstrumentSpec;
4
5mod cancel;
6mod submit;
7
8pub use cancel::*;
9pub use submit::*;
10
11use super::{
12	OrderAction,
13	remote::{CancelRemoteOrder, SubmitRemoteOrder},
14};
15
16#[derive(Deref, DerefMut, Debug, Clone, PartialEq, Eq, Hash)]
17pub struct ClientDeployedRemoteDependency<IS: InstrumentSpec>(SubmitRemoteOrder<IS>);
18
19impl<IS: InstrumentSpec> ClientDeployedRemoteDependency<IS> {
20	pub fn new(submit_remote_order: SubmitRemoteOrder<IS>) -> Self {
21		Self(submit_remote_order)
22	}
23
24	pub(crate) fn into_order_action(self) -> OrderAction<IS> {
25		self.0.into_order_action()
26	}
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Hash)]
30pub enum ClientOrderAction<IS: InstrumentSpec> {
31	SubmitRemoteOrder(SubmitRemoteOrder<IS>),
32	SubmitClientOrder(SubmitClientOrder<IS>),
33	CancelRemoteOrder(CancelRemoteOrder),
34	CancelClientOrder(CancelClientOrder),
35}
36
37impl<IS: InstrumentSpec> ClientOrderAction<IS> {
38	pub fn into_order_action(self) -> OrderAction<IS> {
39		self.into()
40	}
41}