#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackRecord {
#[prost(int64, tag="1")]
pub id: i64,
#[prost(uint64, tag="2")]
pub quote_order_id: u64,
#[prost(string, tag="3")]
pub quote_symbol: ::prost::alloc::string::String,
#[prost(enumeration="super::common::OrderSide", tag="4")]
pub quote_side: i32,
#[prost(double, tag="5")]
pub quote_filled_price: f64,
#[prost(int64, tag="6")]
pub quote_filled_quantity: i64,
#[prost(double, tag="7")]
pub quote_filled_amount: f64,
#[prost(int32, tag="8")]
pub hedge_count: i32,
#[prost(string, optional, tag="9")]
pub hedge_symbol: ::core::option::Option<::prost::alloc::string::String>,
#[prost(double, optional, tag="10")]
pub hedge_filled_price: ::core::option::Option<f64>,
#[prost(int64, tag="11")]
pub hedge_filled_quantity: i64,
#[prost(double, tag="12")]
pub hedge_filled_amount: f64,
#[prost(double, optional, tag="13")]
pub expected_hedge_price: ::core::option::Option<f64>,
#[prost(double, optional, tag="24")]
pub quote_price_as_hedge: ::core::option::Option<f64>,
#[prost(double, optional, tag="25")]
pub sensitivity: ::core::option::Option<f64>,
#[prost(double, optional, tag="26")]
pub hedge_notional_amount: ::core::option::Option<f64>,
#[prost(double, tag="14")]
pub pnl_amount: f64,
#[prost(double, tag="15")]
pub pnl_bp: f64,
#[prost(double, optional, tag="16")]
pub slippage_bp: ::core::option::Option<f64>,
#[prost(string, tag="17")]
pub fund_code: ::prost::alloc::string::String,
#[prost(uint32, tag="18")]
pub date: u32,
#[prost(enumeration="super::common::MarketType", tag="19")]
pub market_type: i32,
#[prost(uint64, tag="20")]
pub quote_exchange_time: u64,
#[prost(uint64, optional, tag="21")]
pub last_hedge_time: ::core::option::Option<u64>,
#[prost(message, optional, tag="22")]
pub created_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(message, optional, tag="23")]
pub updated_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrackRecordSummary {
#[prost(int64, tag="1")]
pub total_count: i64,
#[prost(double, tag="2")]
pub total_pnl_amount: f64,
#[prost(double, tag="3")]
pub avg_pnl_bp: f64,
#[prost(double, tag="4")]
pub max_pnl_bp: f64,
#[prost(double, tag="5")]
pub min_pnl_bp: f64,
#[prost(int64, tag="6")]
pub win_count: i64,
#[prost(int64, tag="7")]
pub loss_count: i64,
#[prost(double, optional, tag="8")]
pub avg_slippage_bp: ::core::option::Option<f64>,
#[prost(double, tag="9")]
pub total_quote_amount: f64,
#[prost(double, tag="10")]
pub total_hedge_amount: f64,
#[prost(double, tag="11")]
pub total_hedge_notional_amount: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListTrackRecordsRequest {
#[prost(uint32, optional, tag="1")]
pub page_size: ::core::option::Option<u32>,
#[prost(string, optional, tag="2")]
pub page_token: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, tag="3")]
pub filter: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub order_by: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListTrackRecordsResponse {
#[prost(message, repeated, tag="1")]
pub track_records: ::prost::alloc::vec::Vec<TrackRecord>,
#[prost(string, tag="2")]
pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTrackRecordSummaryRequest {
#[prost(string, tag="1")]
pub filter: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RebuildTrackRecordsRequest {
#[prost(uint32, tag="1")]
pub date_from: u32,
#[prost(uint32, tag="2")]
pub date_to: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RebuildTrackRecordsResponse {
#[prost(int64, tag="1")]
pub total_quotes: i64,
#[prost(int64, tag="2")]
pub matched_count: i64,
#[prost(int64, tag="3")]
pub unmatched_count: i64,
#[prost(int64, tag="4")]
pub upserted_count: i64,
}
include!("kdo.v1.track_record.tonic.rs");
include!("kdo.v1.track_record.serde.rs");