barter_execution/order/
request.rs1use 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}