use bevy::prelude::{Deref, DerefMut};
use crate::instrument::InstrumentSpec;
mod cancel;
mod submit;
pub use cancel::*;
pub use submit::*;
use super::{
OrderAction,
remote::{CancelRemoteOrder, SubmitRemoteOrder},
};
#[derive(Deref, DerefMut, Debug, Clone, PartialEq, Eq, Hash)]
pub struct ClientDeployedRemoteDependency<IS: InstrumentSpec>(SubmitRemoteOrder<IS>);
impl<IS: InstrumentSpec> ClientDeployedRemoteDependency<IS> {
pub fn new(submit_remote_order: SubmitRemoteOrder<IS>) -> Self {
Self(submit_remote_order)
}
pub(crate) fn into_order_action(self) -> OrderAction<IS> {
self.0.into_order_action()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ClientOrderAction<IS: InstrumentSpec> {
SubmitRemoteOrder(SubmitRemoteOrder<IS>),
SubmitClientOrder(SubmitClientOrder<IS>),
CancelRemoteOrder(CancelRemoteOrder),
CancelClientOrder(CancelClientOrder),
}
impl<IS: InstrumentSpec> ClientOrderAction<IS> {
pub fn into_order_action(self) -> OrderAction<IS> {
self.into()
}
}