barter_execution/order/
request.rs

1use crate::{
2    error::OrderError,
3    order::{OrderEvent, OrderKind, TimeInForce, id::OrderId, state::Cancelled},
4};
5use barter_instrument::{
6    Side,
7    asset::{AssetIndex, name::AssetNameExchange},
8    exchange::{ExchangeId, ExchangeIndex},
9    instrument::{InstrumentIndex, name::InstrumentNameExchange},
10};
11use derive_more::Constructor;
12use rust_decimal::Decimal;
13use serde::{Deserialize, Serialize};
14
15pub type OrderRequestOpen<ExchangeKey = ExchangeIndex, InstrumentKey = InstrumentIndex> =
16    OrderEvent<RequestOpen, ExchangeKey, InstrumentKey>;
17
18pub type OrderRequestCancel<ExchangeKey = ExchangeIndex, InstrumentKey = InstrumentIndex> =
19    OrderEvent<RequestCancel, ExchangeKey, InstrumentKey>;
20
21pub type OrderResponseCancel<
22    ExchangeKey = ExchangeIndex,
23    AssetKey = AssetIndex,
24    InstrumentKey = InstrumentIndex,
25> = OrderEvent<Result<Cancelled, OrderError<AssetKey, InstrumentKey>>, ExchangeKey, InstrumentKey>;
26
27pub type UnindexedOrderResponseCancel =
28    OrderResponseCancel<ExchangeId, AssetNameExchange, InstrumentNameExchange>;
29
30#[derive(
31    Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Deserialize, Serialize, Constructor,
32)]
33pub struct RequestOpen {
34    pub side: Side,
35    pub price: Decimal,
36    pub quantity: Decimal,
37    pub kind: OrderKind,
38    pub time_in_force: TimeInForce,
39}
40
41#[derive(
42    Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default, Deserialize, Serialize, Constructor,
43)]
44pub struct RequestCancel {
45    pub id: Option<OrderId>,
46}