use serde::{Deserialize, Serialize};
use crate::models::common::{DealId, DealReference, Direction, Epic, OrderType, TimeInForce};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum DealStatus {
Accepted,
Rejected,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DealConfirmation {
pub deal_reference: DealReference,
pub deal_id: Option<DealId>,
pub deal_status: DealStatus,
pub reason: Option<String>,
pub direction: Option<Direction>,
pub epic: Option<Epic>,
pub expiry: Option<String>,
pub level: Option<f64>,
pub size: Option<f64>,
pub order_type: Option<OrderType>,
pub status: Option<String>,
pub guaranteed_stop: Option<bool>,
pub trailing_stop: Option<bool>,
pub profit: Option<f64>,
pub profit_currency: Option<String>,
pub date: Option<String>,
pub affected_deals: Option<Vec<serde_json::Value>>,
pub currency: Option<String>,
pub stop_distance: Option<f64>,
pub stop_level: Option<f64>,
pub limit_distance: Option<f64>,
pub limit_level: Option<f64>,
pub good_till_date: Option<String>,
pub good_till_date_iso: Option<String>,
pub time_in_force: Option<TimeInForce>,
}