Skip to main content

sandbox_quant/exchange/
types.rs

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