sandbox_quant/exchange/
types.rs1use crate::domain::balance::BalanceSnapshot;
2use crate::domain::instrument::Instrument;
3use crate::domain::market::Market;
4use crate::domain::order::OpenOrder;
5use crate::domain::order_type::OrderType;
6use crate::domain::position::{PositionSnapshot, Side};
7use crate::execution::planner::ExecutionPlan;
8
9#[derive(Debug, Clone, Default, PartialEq)]
10pub struct AuthoritativeSnapshot {
11 pub balances: Vec<BalanceSnapshot>,
12 pub positions: Vec<PositionSnapshot>,
13 pub open_orders: Vec<OpenOrder>,
14}
15
16#[derive(Debug, Clone, PartialEq)]
17pub struct CloseOrderRequest {
18 pub instrument: Instrument,
19 pub market: Market,
20 pub side: Side,
21 pub qty: f64,
22 pub qty_text: String,
23 pub order_type: OrderType,
24 pub reduce_only: bool,
25}
26
27#[derive(Debug, Clone, PartialEq, Eq)]
28pub struct CloseOrderAccepted {
29 pub remote_order_id: String,
30}
31
32#[derive(Debug, Clone, PartialEq)]
33pub struct SubmitOrderAccepted {
34 pub remote_order_id: String,
35}
36
37impl From<ExecutionPlan> for CloseOrderRequest {
38 fn from(plan: ExecutionPlan) -> Self {
39 Self {
40 instrument: plan.instrument,
41 market: Market::Spot,
42 side: plan.side,
43 qty: plan.qty,
44 qty_text: plan.qty.to_string(),
45 order_type: OrderType::Market,
46 reduce_only: plan.reduce_only,
47 }
48 }
49}