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::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}