#![allow(missing_docs)]
use serde::{Deserialize, Serialize};
use crate::types::enums::*;
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PlaceOrderRequest {
pub dhan_client_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub correlation_id: Option<String>,
pub transaction_type: TransactionType,
pub exchange_segment: ExchangeSegment,
pub product_type: ProductType,
pub order_type: OrderType,
pub validity: Validity,
pub security_id: String,
pub quantity: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub disclosed_quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_price: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after_market_order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amo_time: Option<AmoTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bo_profit_value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bo_stop_loss_value: Option<f64>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ModifyOrderRequest {
pub dhan_client_id: String,
pub order_id: String,
pub order_type: OrderType,
#[serde(skip_serializing_if = "Option::is_none")]
pub leg_name: Option<LegName>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disclosed_quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trigger_price: Option<f64>,
pub validity: Validity,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderResponse {
pub order_id: String,
pub order_status: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderDetail {
pub dhan_client_id: Option<String>,
pub order_id: Option<String>,
pub exchange_order_id: Option<String>,
pub correlation_id: Option<String>,
pub order_status: Option<String>,
pub transaction_type: Option<String>,
pub exchange_segment: Option<String>,
pub product_type: Option<String>,
pub order_type: Option<String>,
pub validity: Option<String>,
pub trading_symbol: Option<String>,
pub security_id: Option<String>,
#[serde(default)]
pub quantity: Option<u64>,
#[serde(default)]
pub disclosed_quantity: Option<u64>,
#[serde(default)]
pub price: Option<f64>,
#[serde(default)]
pub trigger_price: Option<f64>,
#[serde(default)]
pub after_market_order: Option<bool>,
#[serde(default)]
pub bo_profit_value: Option<f64>,
#[serde(default)]
pub bo_stop_loss_value: Option<f64>,
pub leg_name: Option<String>,
pub create_time: Option<String>,
pub update_time: Option<String>,
pub exchange_time: Option<String>,
pub drv_expiry_date: Option<String>,
pub drv_option_type: Option<String>,
#[serde(default)]
pub drv_strike_price: Option<f64>,
pub oms_error_code: Option<String>,
pub oms_error_description: Option<String>,
pub algo_id: Option<String>,
#[serde(default)]
pub remaining_quantity: Option<u64>,
#[serde(default)]
pub average_traded_price: Option<f64>,
#[serde(default)]
pub filled_qty: Option<u64>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TradeDetail {
pub dhan_client_id: Option<String>,
pub order_id: Option<String>,
pub exchange_order_id: Option<String>,
pub exchange_trade_id: Option<String>,
pub transaction_type: Option<String>,
pub exchange_segment: Option<String>,
pub product_type: Option<String>,
pub order_type: Option<String>,
pub trading_symbol: Option<String>,
pub custom_symbol: Option<String>,
pub security_id: Option<String>,
#[serde(default)]
pub traded_quantity: Option<u64>,
#[serde(default)]
pub traded_price: Option<f64>,
pub create_time: Option<String>,
pub update_time: Option<String>,
pub exchange_time: Option<String>,
pub drv_expiry_date: Option<String>,
pub drv_option_type: Option<String>,
#[serde(default)]
pub drv_strike_price: Option<f64>,
}