// This file is @generated by prost-build.
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiSecurityRequest {
    #[prost(string, repeated, tag = "1")]
    pub symbol: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityStaticInfoResponse {
    #[prost(message, repeated, tag = "1")]
    pub secu_static_info: ::prost::alloc::vec::Vec<StaticInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StaticInfo {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub name_cn: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub name_en: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub name_hk: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub listing_date: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub exchange: ::prost::alloc::string::String,
    #[prost(string, tag = "7")]
    pub currency: ::prost::alloc::string::String,
    #[prost(int32, tag = "8")]
    pub lot_size: i32,
    #[prost(int64, tag = "9")]
    pub total_shares: i64,
    #[prost(int64, tag = "10")]
    pub circulating_shares: i64,
    #[prost(int64, tag = "11")]
    pub hk_shares: i64,
    #[prost(string, tag = "12")]
    pub eps: ::prost::alloc::string::String,
    #[prost(string, tag = "13")]
    pub eps_ttm: ::prost::alloc::string::String,
    #[prost(string, tag = "14")]
    pub bps: ::prost::alloc::string::String,
    #[prost(string, tag = "15")]
    pub dividend_yield: ::prost::alloc::string::String,
    #[prost(int32, repeated, tag = "16")]
    pub stock_derivatives: ::prost::alloc::vec::Vec<i32>,
    #[prost(string, tag = "17")]
    pub board: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityQuoteResponse {
    #[prost(message, repeated, tag = "1")]
    pub secu_quote: ::prost::alloc::vec::Vec<SecurityQuote>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityQuote {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub prev_close: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub open: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub high: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub low: ::prost::alloc::string::String,
    #[prost(int64, tag = "7")]
    pub timestamp: i64,
    #[prost(int64, tag = "8")]
    pub volume: i64,
    #[prost(string, tag = "9")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(enumeration = "TradeStatus", tag = "10")]
    pub trade_status: i32,
    #[prost(message, optional, tag = "11")]
    pub pre_market_quote: ::core::option::Option<PrePostQuote>,
    #[prost(message, optional, tag = "12")]
    pub post_market_quote: ::core::option::Option<PrePostQuote>,
    #[prost(message, optional, tag = "13")]
    pub over_night_quote: ::core::option::Option<PrePostQuote>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PrePostQuote {
    #[prost(string, tag = "1")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub timestamp: i64,
    #[prost(int64, tag = "3")]
    pub volume: i64,
    #[prost(string, tag = "4")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub high: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub low: ::prost::alloc::string::String,
    #[prost(string, tag = "7")]
    pub prev_close: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionQuoteResponse {
    #[prost(message, repeated, tag = "1")]
    pub secu_quote: ::prost::alloc::vec::Vec<OptionQuote>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionQuote {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub prev_close: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub open: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub high: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub low: ::prost::alloc::string::String,
    #[prost(int64, tag = "7")]
    pub timestamp: i64,
    #[prost(int64, tag = "8")]
    pub volume: i64,
    #[prost(string, tag = "9")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(enumeration = "TradeStatus", tag = "10")]
    pub trade_status: i32,
    #[prost(message, optional, tag = "11")]
    pub option_extend: ::core::option::Option<OptionExtend>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionExtend {
    #[prost(string, tag = "1")]
    pub implied_volatility: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub open_interest: i64,
    #[prost(string, tag = "3")]
    pub expiry_date: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub contract_multiplier: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub contract_type: ::prost::alloc::string::String,
    #[prost(string, tag = "7")]
    pub contract_size: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub direction: ::prost::alloc::string::String,
    #[prost(string, tag = "9")]
    pub historical_volatility: ::prost::alloc::string::String,
    #[prost(string, tag = "10")]
    pub underlying_symbol: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WarrantQuoteResponse {
    #[prost(message, repeated, tag = "2")]
    pub secu_quote: ::prost::alloc::vec::Vec<WarrantQuote>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WarrantQuote {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub prev_close: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub open: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub high: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub low: ::prost::alloc::string::String,
    #[prost(int64, tag = "7")]
    pub timestamp: i64,
    #[prost(int64, tag = "8")]
    pub volume: i64,
    #[prost(string, tag = "9")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(enumeration = "TradeStatus", tag = "10")]
    pub trade_status: i32,
    #[prost(message, optional, tag = "11")]
    pub warrant_extend: ::core::option::Option<WarrantExtend>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WarrantExtend {
    #[prost(string, tag = "1")]
    pub implied_volatility: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub expiry_date: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub last_trade_date: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub outstanding_ratio: ::prost::alloc::string::String,
    #[prost(int64, tag = "5")]
    pub outstanding_qty: i64,
    #[prost(string, tag = "6")]
    pub conversion_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "7")]
    pub category: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "9")]
    pub upper_strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "10")]
    pub lower_strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "11")]
    pub call_price: ::prost::alloc::string::String,
    #[prost(string, tag = "12")]
    pub underlying_symbol: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityDepthResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub ask: ::prost::alloc::vec::Vec<Depth>,
    #[prost(message, repeated, tag = "3")]
    pub bid: ::prost::alloc::vec::Vec<Depth>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Depth {
    #[prost(int32, tag = "1")]
    pub position: i32,
    #[prost(string, tag = "2")]
    pub price: ::prost::alloc::string::String,
    #[prost(int64, tag = "3")]
    pub volume: i64,
    #[prost(int64, tag = "4")]
    pub order_num: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityBrokersResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub ask_brokers: ::prost::alloc::vec::Vec<Brokers>,
    #[prost(message, repeated, tag = "3")]
    pub bid_brokers: ::prost::alloc::vec::Vec<Brokers>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Brokers {
    #[prost(int32, tag = "1")]
    pub position: i32,
    #[prost(int32, repeated, tag = "2")]
    pub broker_ids: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParticipantBrokerIdsResponse {
    #[prost(message, repeated, tag = "1")]
    pub participant_broker_numbers: ::prost::alloc::vec::Vec<ParticipantInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParticipantInfo {
    #[prost(int32, repeated, tag = "1")]
    pub broker_ids: ::prost::alloc::vec::Vec<i32>,
    #[prost(string, tag = "2")]
    pub participant_name_cn: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub participant_name_en: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub participant_name_hk: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityTradeRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int32, tag = "2")]
    pub count: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityTradeResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub trades: ::prost::alloc::vec::Vec<Trade>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trade {
    #[prost(string, tag = "1")]
    pub price: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub volume: i64,
    #[prost(int64, tag = "3")]
    pub timestamp: i64,
    #[prost(string, tag = "4")]
    pub trade_type: ::prost::alloc::string::String,
    #[prost(int32, tag = "5")]
    pub direction: i32,
    #[prost(enumeration = "TradeSession", tag = "6")]
    pub trade_session: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityIntradayRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int32, tag = "2")]
    pub trade_session: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityIntradayResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub lines: ::prost::alloc::vec::Vec<Line>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Line {
    #[prost(string, tag = "1")]
    pub price: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub timestamp: i64,
    #[prost(int64, tag = "3")]
    pub volume: i64,
    #[prost(string, tag = "4")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub avg_price: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityCandlestickRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(enumeration = "Period", tag = "2")]
    pub period: i32,
    #[prost(int32, tag = "3")]
    pub count: i32,
    #[prost(enumeration = "AdjustType", tag = "4")]
    pub adjust_type: i32,
    #[prost(int32, tag = "5")]
    pub trade_session: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityCandlestickResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub candlesticks: ::prost::alloc::vec::Vec<Candlestick>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Candlestick {
    #[prost(string, tag = "1")]
    pub close: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub open: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub low: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub high: ::prost::alloc::string::String,
    #[prost(int64, tag = "5")]
    pub volume: i64,
    #[prost(string, tag = "6")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(int64, tag = "7")]
    pub timestamp: i64,
    #[prost(enumeration = "TradeSession", tag = "8")]
    pub trade_session: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionChainDateListResponse {
    #[prost(string, repeated, tag = "1")]
    pub expiry_date: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionChainDateStrikeInfoRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub expiry_date: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OptionChainDateStrikeInfoResponse {
    #[prost(message, repeated, tag = "1")]
    pub strike_price_info: ::prost::alloc::vec::Vec<StrikePriceInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StrikePriceInfo {
    #[prost(string, tag = "1")]
    pub price: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub call_symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub put_symbol: ::prost::alloc::string::String,
    #[prost(bool, tag = "4")]
    pub standard: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IssuerInfoResponse {
    #[prost(message, repeated, tag = "1")]
    pub issuer_info: ::prost::alloc::vec::Vec<IssuerInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IssuerInfo {
    #[prost(int32, tag = "1")]
    pub id: i32,
    #[prost(string, tag = "2")]
    pub name_cn: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub name_en: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub name_hk: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WarrantFilterListRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub filter_config: ::core::option::Option<FilterConfig>,
    #[prost(int32, tag = "3")]
    pub language: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilterConfig {
    #[prost(int32, tag = "1")]
    pub sort_by: i32,
    #[prost(int32, tag = "2")]
    pub sort_order: i32,
    #[prost(int32, tag = "3")]
    pub sort_offset: i32,
    #[prost(int32, tag = "4")]
    pub sort_count: i32,
    #[prost(int32, repeated, tag = "5")]
    pub r#type: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "6")]
    pub issuer: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "7")]
    pub expiry_date: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "8")]
    pub price_type: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "9")]
    pub status: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WarrantFilterListResponse {
    #[prost(message, repeated, tag = "1")]
    pub warrant_list: ::prost::alloc::vec::Vec<FilterWarrant>,
    #[prost(int32, tag = "2")]
    pub total_count: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilterWarrant {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub change_val: ::prost::alloc::string::String,
    #[prost(int64, tag = "6")]
    pub volume: i64,
    #[prost(string, tag = "7")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub expiry_date: ::prost::alloc::string::String,
    #[prost(string, tag = "9")]
    pub strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "10")]
    pub upper_strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "11")]
    pub lower_strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "12")]
    pub outstanding_qty: ::prost::alloc::string::String,
    #[prost(string, tag = "13")]
    pub outstanding_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "14")]
    pub premium: ::prost::alloc::string::String,
    #[prost(string, tag = "15")]
    pub itm_otm: ::prost::alloc::string::String,
    #[prost(string, tag = "16")]
    pub implied_volatility: ::prost::alloc::string::String,
    #[prost(string, tag = "17")]
    pub delta: ::prost::alloc::string::String,
    #[prost(string, tag = "18")]
    pub call_price: ::prost::alloc::string::String,
    #[prost(string, tag = "19")]
    pub to_call_price: ::prost::alloc::string::String,
    #[prost(string, tag = "20")]
    pub effective_leverage: ::prost::alloc::string::String,
    #[prost(string, tag = "21")]
    pub leverage_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "22")]
    pub conversion_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "23")]
    pub balance_point: ::prost::alloc::string::String,
    #[prost(int32, tag = "24")]
    pub status: i32,
    #[prost(int32, tag = "25")]
    pub r#type: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketTradePeriodResponse {
    #[prost(message, repeated, tag = "1")]
    pub market_trade_session: ::prost::alloc::vec::Vec<MarketTradePeriod>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketTradePeriod {
    #[prost(string, tag = "1")]
    pub market: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub trade_session: ::prost::alloc::vec::Vec<TradePeriod>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TradePeriod {
    #[prost(int32, tag = "1")]
    pub beg_time: i32,
    #[prost(int32, tag = "2")]
    pub end_time: i32,
    #[prost(enumeration = "TradeSession", tag = "3")]
    pub trade_session: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SubscriptionRequest {}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SubscriptionResponse {
    #[prost(message, repeated, tag = "1")]
    pub sub_list: ::prost::alloc::vec::Vec<SubTypeList>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SubTypeList {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(enumeration = "SubType", repeated, tag = "2")]
    pub sub_type: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SubscribeRequest {
    #[prost(string, repeated, tag = "1")]
    pub symbol: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(enumeration = "SubType", repeated, tag = "2")]
    pub sub_type: ::prost::alloc::vec::Vec<i32>,
    #[prost(bool, tag = "3")]
    pub is_first_push: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnsubscribeRequest {
    #[prost(string, repeated, tag = "1")]
    pub symbol: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(enumeration = "SubType", repeated, tag = "2")]
    pub sub_type: ::prost::alloc::vec::Vec<i32>,
    #[prost(bool, tag = "3")]
    pub unsub_all: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnsubscribeResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PushQuote {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub sequence: i64,
    #[prost(string, tag = "3")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub open: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub high: ::prost::alloc::string::String,
    #[prost(string, tag = "6")]
    pub low: ::prost::alloc::string::String,
    #[prost(int64, tag = "7")]
    pub timestamp: i64,
    #[prost(int64, tag = "8")]
    pub volume: i64,
    #[prost(string, tag = "9")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(enumeration = "TradeStatus", tag = "10")]
    pub trade_status: i32,
    #[prost(enumeration = "TradeSession", tag = "11")]
    pub trade_session: i32,
    #[prost(int64, tag = "12")]
    pub current_volume: i64,
    #[prost(string, tag = "13")]
    pub current_turnover: ::prost::alloc::string::String,
    #[prost(enumeration = "PushQuoteTag", tag = "14")]
    pub tag: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PushDepth {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub sequence: i64,
    #[prost(message, repeated, tag = "3")]
    pub ask: ::prost::alloc::vec::Vec<Depth>,
    #[prost(message, repeated, tag = "4")]
    pub bid: ::prost::alloc::vec::Vec<Depth>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PushBrokers {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub sequence: i64,
    #[prost(message, repeated, tag = "3")]
    pub ask_brokers: ::prost::alloc::vec::Vec<Brokers>,
    #[prost(message, repeated, tag = "4")]
    pub bid_brokers: ::prost::alloc::vec::Vec<Brokers>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PushTrade {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub sequence: i64,
    #[prost(message, repeated, tag = "3")]
    pub trade: ::prost::alloc::vec::Vec<Trade>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketTradeDayRequest {
    #[prost(string, tag = "1")]
    pub market: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub beg_day: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub end_day: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketTradeDayResponse {
    #[prost(string, repeated, tag = "1")]
    pub trade_day: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(string, repeated, tag = "2")]
    pub half_trade_day: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CapitalFlowIntradayRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CapitalFlowIntradayResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub capital_flow_lines: ::prost::alloc::vec::Vec<
        capital_flow_intraday_response::CapitalFlowLine,
    >,
}
/// Nested message and enum types in `CapitalFlowIntradayResponse`.
pub mod capital_flow_intraday_response {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct CapitalFlowLine {
        #[prost(string, tag = "1")]
        pub inflow: ::prost::alloc::string::String,
        #[prost(int64, tag = "2")]
        pub timestamp: i64,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CapitalDistributionResponse {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(int64, tag = "2")]
    pub timestamp: i64,
    #[prost(message, optional, tag = "3")]
    pub capital_in: ::core::option::Option<
        capital_distribution_response::CapitalDistribution,
    >,
    #[prost(message, optional, tag = "4")]
    pub capital_out: ::core::option::Option<
        capital_distribution_response::CapitalDistribution,
    >,
}
/// Nested message and enum types in `CapitalDistributionResponse`.
pub mod capital_distribution_response {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct CapitalDistribution {
        #[prost(string, tag = "1")]
        pub large: ::prost::alloc::string::String,
        #[prost(string, tag = "2")]
        pub medium: ::prost::alloc::string::String,
        #[prost(string, tag = "3")]
        pub small: ::prost::alloc::string::String,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityCalcQuoteRequest {
    #[prost(string, repeated, tag = "1")]
    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(enumeration = "CalcIndex", repeated, tag = "2")]
    pub calc_index: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityCalcIndex {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub last_done: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub change_val: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub change_rate: ::prost::alloc::string::String,
    #[prost(int64, tag = "5")]
    pub volume: i64,
    #[prost(string, tag = "6")]
    pub turnover: ::prost::alloc::string::String,
    #[prost(string, tag = "7")]
    pub ytd_change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub turnover_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "9")]
    pub total_market_value: ::prost::alloc::string::String,
    #[prost(string, tag = "10")]
    pub capital_flow: ::prost::alloc::string::String,
    #[prost(string, tag = "11")]
    pub amplitude: ::prost::alloc::string::String,
    #[prost(string, tag = "12")]
    pub volume_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "13")]
    pub pe_ttm_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "14")]
    pub pb_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "15")]
    pub dividend_ratio_ttm: ::prost::alloc::string::String,
    #[prost(string, tag = "16")]
    pub five_day_change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "17")]
    pub ten_day_change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "18")]
    pub half_year_change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "19")]
    pub five_minutes_change_rate: ::prost::alloc::string::String,
    #[prost(string, tag = "20")]
    pub expiry_date: ::prost::alloc::string::String,
    #[prost(string, tag = "21")]
    pub strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "22")]
    pub upper_strike_price: ::prost::alloc::string::String,
    #[prost(string, tag = "23")]
    pub lower_strike_price: ::prost::alloc::string::String,
    #[prost(int64, tag = "24")]
    pub outstanding_qty: i64,
    #[prost(string, tag = "25")]
    pub outstanding_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "26")]
    pub premium: ::prost::alloc::string::String,
    #[prost(string, tag = "27")]
    pub itm_otm: ::prost::alloc::string::String,
    #[prost(string, tag = "28")]
    pub implied_volatility: ::prost::alloc::string::String,
    #[prost(string, tag = "29")]
    pub warrant_delta: ::prost::alloc::string::String,
    #[prost(string, tag = "30")]
    pub call_price: ::prost::alloc::string::String,
    #[prost(string, tag = "31")]
    pub to_call_price: ::prost::alloc::string::String,
    #[prost(string, tag = "32")]
    pub effective_leverage: ::prost::alloc::string::String,
    #[prost(string, tag = "33")]
    pub leverage_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "34")]
    pub conversion_ratio: ::prost::alloc::string::String,
    #[prost(string, tag = "35")]
    pub balance_point: ::prost::alloc::string::String,
    #[prost(int64, tag = "36")]
    pub open_interest: i64,
    #[prost(string, tag = "37")]
    pub delta: ::prost::alloc::string::String,
    #[prost(string, tag = "38")]
    pub gamma: ::prost::alloc::string::String,
    #[prost(string, tag = "39")]
    pub theta: ::prost::alloc::string::String,
    #[prost(string, tag = "40")]
    pub vega: ::prost::alloc::string::String,
    #[prost(string, tag = "41")]
    pub rho: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityCalcQuoteResponse {
    #[prost(message, repeated, tag = "1")]
    pub security_calc_index: ::prost::alloc::vec::Vec<SecurityCalcIndex>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityHistoryCandlestickRequest {
    #[prost(string, tag = "1")]
    pub symbol: ::prost::alloc::string::String,
    #[prost(enumeration = "Period", tag = "2")]
    pub period: i32,
    #[prost(enumeration = "AdjustType", tag = "3")]
    pub adjust_type: i32,
    #[prost(enumeration = "HistoryCandlestickQueryType", tag = "4")]
    pub query_type: i32,
    #[prost(message, optional, tag = "5")]
    pub offset_request: ::core::option::Option<
        security_history_candlestick_request::OffsetQuery,
    >,
    #[prost(message, optional, tag = "6")]
    pub date_request: ::core::option::Option<
        security_history_candlestick_request::DateQuery,
    >,
    #[prost(int32, tag = "7")]
    pub trade_session: i32,
}
/// Nested message and enum types in `SecurityHistoryCandlestickRequest`.
pub mod security_history_candlestick_request {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct OffsetQuery {
        #[prost(enumeration = "super::Direction", tag = "1")]
        pub direction: i32,
        #[prost(string, tag = "2")]
        pub date: ::prost::alloc::string::String,
        #[prost(string, tag = "3")]
        pub minute: ::prost::alloc::string::String,
        #[prost(int32, tag = "4")]
        pub count: i32,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct DateQuery {
        #[prost(string, tag = "1")]
        pub start_date: ::prost::alloc::string::String,
        #[prost(string, tag = "2")]
        pub end_date: ::prost::alloc::string::String,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserQuoteProfileRequest {
    #[prost(string, tag = "1")]
    pub language: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RateLimit {
    #[prost(enumeration = "Command", tag = "1")]
    pub command: i32,
    #[prost(int32, tag = "2")]
    pub limit: i32,
    #[prost(int32, tag = "3")]
    pub burst: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserQuoteLevelDetail {
    /// 按行情包描述
    #[prost(map = "string, message", tag = "1")]
    pub by_package_key: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        user_quote_level_detail::PackageDetail,
    >,
    /// 按市场描述, 目前写死的, 仅有 US HK CN USOption(期权) 4个
    #[prost(map = "string, message", tag = "2")]
    pub by_market_code: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        user_quote_level_detail::MarketPackageDetail,
    >,
}
/// Nested message and enum types in `UserQuoteLevelDetail`.
pub mod user_quote_level_detail {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct PackageDetail {
        /// 行情包 Key
        #[prost(string, tag = "1")]
        pub key: ::prost::alloc::string::String,
        /// 行情包名称
        #[prost(string, tag = "2")]
        pub name: ::prost::alloc::string::String,
        /// 行情包描述, 根据入参 lang 适配多语言
        #[prost(string, tag = "4")]
        pub description: ::prost::alloc::string::String,
        /// 行情包生效开始时间 Unix 时间戳
        #[prost(int64, tag = "5")]
        pub start: i64,
        /// 行情包生效结束时间 Unix 时间戳
        #[prost(int64, tag = "6")]
        pub end: i64,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct MarketPackageDetail {
        #[prost(message, repeated, tag = "1")]
        pub packages: ::prost::alloc::vec::Vec<PackageDetail>,
        /// 当一个包也没有时, 会有如下, 多语言的文案
        /// `您没有访问该市场 Open API 行情的权限，如需请前往行情商店购买`
        #[prost(string, tag = "4")]
        pub warning_msg: ::prost::alloc::string::String,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserQuoteProfileResponse {
    #[prost(int64, tag = "1")]
    pub member_id: i64,
    /// 行情权限信息
    #[prost(string, tag = "2")]
    pub quote_level: ::prost::alloc::string::String,
    /// 订阅数量限制
    #[prost(int32, tag = "3")]
    pub subscribe_limit: i32,
    /// 历史 k 线限制
    #[prost(int32, tag = "4")]
    pub history_candlestick_limit: i32,
    /// command rate limit
    #[prost(message, repeated, tag = "5")]
    pub rate_limit: ::prost::alloc::vec::Vec<RateLimit>,
    /// 用户等级详情
    #[prost(message, optional, tag = "6")]
    pub quote_level_detail: ::core::option::Option<UserQuoteLevelDetail>,
}
/// 协议指令定义
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Command {
    UnknownCommand = 0,
    /// 心跳
    HeartBeat = 1,
    /// 鉴权
    Auth = 2,
    /// 重新连接
    Reconnect = 3,
    /// 查询用户行情信息
    QueryUserQuoteProfile = 4,
    /// 查询连接的已订阅数据
    Subscription = 5,
    /// 订阅行情数据
    Subscribe = 6,
    /// 取消订阅行情数据
    Unsubscribe = 7,
    /// 查询各市场的当日交易时段
    QueryMarketTradePeriod = 8,
    /// 查询交易日
    QueryMarketTradeDay = 9,
    /// 查询标的基础信息
    QuerySecurityStaticInfo = 10,
    /// 查询标的行情(所有标的通用行情)
    QuerySecurityQuote = 11,
    /// 查询期权行情(仅支持期权)
    QueryOptionQuote = 12,
    /// 查询轮证行情(仅支持轮证)
    QueryWarrantQuote = 13,
    /// 查询盘口
    QueryDepth = 14,
    /// 查询经纪队列
    QueryBrokers = 15,
    /// 查询券商经纪席位
    QueryParticipantBrokerIds = 16,
    /// 查询成交明细
    QueryTrade = 17,
    /// 查询当日分时
    QueryIntraday = 18,
    /// 查询k线
    QueryCandlestick = 19,
    /// 查询标的期权链日期列表
    QueryOptionChainDate = 20,
    /// 查询标的期权链某日的行权价信息
    QueryOptionChainDateStrikeInfo = 21,
    /// 查询轮证发行商对应Id
    QueryWarrantIssuerInfo = 22,
    /// 查询轮证筛选列表
    QueryWarrantFilterList = 23,
    /// 查询标的的资金流分时
    QueryCapitalFlowIntraday = 24,
    /// 查询标的资金流大小单
    QueryCapitalFlowDistribution = 25,
    /// 查询标的指标数据
    QuerySecurityCalcIndex = 26,
    /// 查询标的历史 k 线
    QueryHistoryCandlestick = 27,
    /// 推送行情
    PushQuoteData = 101,
    /// 推送盘口
    PushDepthData = 102,
    /// 推送经纪队列
    PushBrokersData = 103,
    /// 推送成交明细
    PushTradeData = 104,
}
impl Command {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::UnknownCommand => "UNKNOWN_COMMAND",
            Self::HeartBeat => "HEART_BEAT",
            Self::Auth => "AUTH",
            Self::Reconnect => "RECONNECT",
            Self::QueryUserQuoteProfile => "QueryUserQuoteProfile",
            Self::Subscription => "Subscription",
            Self::Subscribe => "Subscribe",
            Self::Unsubscribe => "Unsubscribe",
            Self::QueryMarketTradePeriod => "QueryMarketTradePeriod",
            Self::QueryMarketTradeDay => "QueryMarketTradeDay",
            Self::QuerySecurityStaticInfo => "QuerySecurityStaticInfo",
            Self::QuerySecurityQuote => "QuerySecurityQuote",
            Self::QueryOptionQuote => "QueryOptionQuote",
            Self::QueryWarrantQuote => "QueryWarrantQuote",
            Self::QueryDepth => "QueryDepth",
            Self::QueryBrokers => "QueryBrokers",
            Self::QueryParticipantBrokerIds => "QueryParticipantBrokerIds",
            Self::QueryTrade => "QueryTrade",
            Self::QueryIntraday => "QueryIntraday",
            Self::QueryCandlestick => "QueryCandlestick",
            Self::QueryOptionChainDate => "QueryOptionChainDate",
            Self::QueryOptionChainDateStrikeInfo => "QueryOptionChainDateStrikeInfo",
            Self::QueryWarrantIssuerInfo => "QueryWarrantIssuerInfo",
            Self::QueryWarrantFilterList => "QueryWarrantFilterList",
            Self::QueryCapitalFlowIntraday => "QueryCapitalFlowIntraday",
            Self::QueryCapitalFlowDistribution => "QueryCapitalFlowDistribution",
            Self::QuerySecurityCalcIndex => "QuerySecurityCalcIndex",
            Self::QueryHistoryCandlestick => "QueryHistoryCandlestick",
            Self::PushQuoteData => "PushQuoteData",
            Self::PushDepthData => "PushDepthData",
            Self::PushBrokersData => "PushBrokersData",
            Self::PushTradeData => "PushTradeData",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "UNKNOWN_COMMAND" => Some(Self::UnknownCommand),
            "HEART_BEAT" => Some(Self::HeartBeat),
            "AUTH" => Some(Self::Auth),
            "RECONNECT" => Some(Self::Reconnect),
            "QueryUserQuoteProfile" => Some(Self::QueryUserQuoteProfile),
            "Subscription" => Some(Self::Subscription),
            "Subscribe" => Some(Self::Subscribe),
            "Unsubscribe" => Some(Self::Unsubscribe),
            "QueryMarketTradePeriod" => Some(Self::QueryMarketTradePeriod),
            "QueryMarketTradeDay" => Some(Self::QueryMarketTradeDay),
            "QuerySecurityStaticInfo" => Some(Self::QuerySecurityStaticInfo),
            "QuerySecurityQuote" => Some(Self::QuerySecurityQuote),
            "QueryOptionQuote" => Some(Self::QueryOptionQuote),
            "QueryWarrantQuote" => Some(Self::QueryWarrantQuote),
            "QueryDepth" => Some(Self::QueryDepth),
            "QueryBrokers" => Some(Self::QueryBrokers),
            "QueryParticipantBrokerIds" => Some(Self::QueryParticipantBrokerIds),
            "QueryTrade" => Some(Self::QueryTrade),
            "QueryIntraday" => Some(Self::QueryIntraday),
            "QueryCandlestick" => Some(Self::QueryCandlestick),
            "QueryOptionChainDate" => Some(Self::QueryOptionChainDate),
            "QueryOptionChainDateStrikeInfo" => {
                Some(Self::QueryOptionChainDateStrikeInfo)
            }
            "QueryWarrantIssuerInfo" => Some(Self::QueryWarrantIssuerInfo),
            "QueryWarrantFilterList" => Some(Self::QueryWarrantFilterList),
            "QueryCapitalFlowIntraday" => Some(Self::QueryCapitalFlowIntraday),
            "QueryCapitalFlowDistribution" => Some(Self::QueryCapitalFlowDistribution),
            "QuerySecurityCalcIndex" => Some(Self::QuerySecurityCalcIndex),
            "QueryHistoryCandlestick" => Some(Self::QueryHistoryCandlestick),
            "PushQuoteData" => Some(Self::PushQuoteData),
            "PushDepthData" => Some(Self::PushDepthData),
            "PushBrokersData" => Some(Self::PushBrokersData),
            "PushTradeData" => Some(Self::PushTradeData),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TradeStatus {
    Normal = 0,
    Halted = 1,
    Delisted = 2,
    Fuse = 3,
    PrepareList = 4,
    CodeMoved = 5,
    ToBeOpened = 6,
    SplitStockHalts = 7,
    Expired = 8,
    WarrantPrepareList = 9,
    SuspendTrade = 10,
}
impl TradeStatus {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Normal => "NORMAL",
            Self::Halted => "HALTED",
            Self::Delisted => "DELISTED",
            Self::Fuse => "FUSE",
            Self::PrepareList => "PREPARE_LIST",
            Self::CodeMoved => "CODE_MOVED",
            Self::ToBeOpened => "TO_BE_OPENED",
            Self::SplitStockHalts => "SPLIT_STOCK_HALTS",
            Self::Expired => "EXPIRED",
            Self::WarrantPrepareList => "WARRANT_PREPARE_LIST",
            Self::SuspendTrade => "SUSPEND_TRADE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "NORMAL" => Some(Self::Normal),
            "HALTED" => Some(Self::Halted),
            "DELISTED" => Some(Self::Delisted),
            "FUSE" => Some(Self::Fuse),
            "PREPARE_LIST" => Some(Self::PrepareList),
            "CODE_MOVED" => Some(Self::CodeMoved),
            "TO_BE_OPENED" => Some(Self::ToBeOpened),
            "SPLIT_STOCK_HALTS" => Some(Self::SplitStockHalts),
            "EXPIRED" => Some(Self::Expired),
            "WARRANT_PREPARE_LIST" => Some(Self::WarrantPrepareList),
            "SUSPEND_TRADE" => Some(Self::SuspendTrade),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TradeSession {
    NormalTrade = 0,
    PreTrade = 1,
    PostTrade = 2,
    OvernightTrade = 3,
}
impl TradeSession {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::NormalTrade => "NORMAL_TRADE",
            Self::PreTrade => "PRE_TRADE",
            Self::PostTrade => "POST_TRADE",
            Self::OvernightTrade => "OVERNIGHT_TRADE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "NORMAL_TRADE" => Some(Self::NormalTrade),
            "PRE_TRADE" => Some(Self::PreTrade),
            "POST_TRADE" => Some(Self::PostTrade),
            "OVERNIGHT_TRADE" => Some(Self::OvernightTrade),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum AdjustType {
    NoAdjust = 0,
    ForwardAdjust = 1,
}
impl AdjustType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::NoAdjust => "NO_ADJUST",
            Self::ForwardAdjust => "FORWARD_ADJUST",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "NO_ADJUST" => Some(Self::NoAdjust),
            "FORWARD_ADJUST" => Some(Self::ForwardAdjust),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Period {
    UnknownPeriod = 0,
    OneMinute = 1,
    TwoMinute = 2,
    ThreeMinute = 3,
    FiveMinute = 5,
    TenMinute = 10,
    FifteenMinute = 15,
    TwentyMinute = 20,
    ThirtyMinute = 30,
    FortyFiveMinute = 45,
    SixtyMinute = 60,
    TwoHour = 120,
    ThreeHour = 180,
    FourHour = 240,
    Day = 1000,
    Week = 2000,
    Month = 3000,
    Quarter = 3500,
    Year = 4000,
}
impl Period {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::UnknownPeriod => "UNKNOWN_PERIOD",
            Self::OneMinute => "ONE_MINUTE",
            Self::TwoMinute => "TWO_MINUTE",
            Self::ThreeMinute => "THREE_MINUTE",
            Self::FiveMinute => "FIVE_MINUTE",
            Self::TenMinute => "TEN_MINUTE",
            Self::FifteenMinute => "FIFTEEN_MINUTE",
            Self::TwentyMinute => "TWENTY_MINUTE",
            Self::ThirtyMinute => "THIRTY_MINUTE",
            Self::FortyFiveMinute => "FORTY_FIVE_MINUTE",
            Self::SixtyMinute => "SIXTY_MINUTE",
            Self::TwoHour => "TWO_HOUR",
            Self::ThreeHour => "THREE_HOUR",
            Self::FourHour => "FOUR_HOUR",
            Self::Day => "DAY",
            Self::Week => "WEEK",
            Self::Month => "MONTH",
            Self::Quarter => "QUARTER",
            Self::Year => "YEAR",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "UNKNOWN_PERIOD" => Some(Self::UnknownPeriod),
            "ONE_MINUTE" => Some(Self::OneMinute),
            "TWO_MINUTE" => Some(Self::TwoMinute),
            "THREE_MINUTE" => Some(Self::ThreeMinute),
            "FIVE_MINUTE" => Some(Self::FiveMinute),
            "TEN_MINUTE" => Some(Self::TenMinute),
            "FIFTEEN_MINUTE" => Some(Self::FifteenMinute),
            "TWENTY_MINUTE" => Some(Self::TwentyMinute),
            "THIRTY_MINUTE" => Some(Self::ThirtyMinute),
            "FORTY_FIVE_MINUTE" => Some(Self::FortyFiveMinute),
            "SIXTY_MINUTE" => Some(Self::SixtyMinute),
            "TWO_HOUR" => Some(Self::TwoHour),
            "THREE_HOUR" => Some(Self::ThreeHour),
            "FOUR_HOUR" => Some(Self::FourHour),
            "DAY" => Some(Self::Day),
            "WEEK" => Some(Self::Week),
            "MONTH" => Some(Self::Month),
            "QUARTER" => Some(Self::Quarter),
            "YEAR" => Some(Self::Year),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum SubType {
    UnknownType = 0,
    Quote = 1,
    Depth = 2,
    Brokers = 3,
    Trade = 4,
}
impl SubType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::UnknownType => "UNKNOWN_TYPE",
            Self::Quote => "QUOTE",
            Self::Depth => "DEPTH",
            Self::Brokers => "BROKERS",
            Self::Trade => "TRADE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "UNKNOWN_TYPE" => Some(Self::UnknownType),
            "QUOTE" => Some(Self::Quote),
            "DEPTH" => Some(Self::Depth),
            "BROKERS" => Some(Self::Brokers),
            "TRADE" => Some(Self::Trade),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PushQuoteTag {
    Normal = 0,
    Eod = 1,
}
impl PushQuoteTag {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Normal => "Normal",
            Self::Eod => "Eod",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "Normal" => Some(Self::Normal),
            "Eod" => Some(Self::Eod),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum CalcIndex {
    CalcindexUnknown = 0,
    CalcindexLastDone = 1,
    CalcindexChangeVal = 2,
    CalcindexChangeRate = 3,
    CalcindexVolume = 4,
    CalcindexTurnover = 5,
    CalcindexYtdChangeRate = 6,
    CalcindexTurnoverRate = 7,
    CalcindexTotalMarketValue = 8,
    CalcindexCapitalFlow = 9,
    CalcindexAmplitude = 10,
    CalcindexVolumeRatio = 11,
    CalcindexPeTtmRatio = 12,
    CalcindexPbRatio = 13,
    CalcindexDividendRatioTtm = 14,
    CalcindexFiveDayChangeRate = 15,
    CalcindexTenDayChangeRate = 16,
    CalcindexHalfYearChangeRate = 17,
    CalcindexFiveMinutesChangeRate = 18,
    CalcindexExpiryDate = 19,
    CalcindexStrikePrice = 20,
    CalcindexUpperStrikePrice = 21,
    CalcindexLowerStrikePrice = 22,
    CalcindexOutstandingQty = 23,
    CalcindexOutstandingRatio = 24,
    CalcindexPremium = 25,
    CalcindexItmOtm = 26,
    CalcindexImpliedVolatility = 27,
    CalcindexWarrantDelta = 28,
    CalcindexCallPrice = 29,
    CalcindexToCallPrice = 30,
    CalcindexEffectiveLeverage = 31,
    CalcindexLeverageRatio = 32,
    CalcindexConversionRatio = 33,
    CalcindexBalancePoint = 34,
    CalcindexOpenInterest = 35,
    CalcindexDelta = 36,
    CalcindexGamma = 37,
    CalcindexTheta = 38,
    CalcindexVega = 39,
    CalcindexRho = 40,
}
impl CalcIndex {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::CalcindexUnknown => "CALCINDEX_UNKNOWN",
            Self::CalcindexLastDone => "CALCINDEX_LAST_DONE",
            Self::CalcindexChangeVal => "CALCINDEX_CHANGE_VAL",
            Self::CalcindexChangeRate => "CALCINDEX_CHANGE_RATE",
            Self::CalcindexVolume => "CALCINDEX_VOLUME",
            Self::CalcindexTurnover => "CALCINDEX_TURNOVER",
            Self::CalcindexYtdChangeRate => "CALCINDEX_YTD_CHANGE_RATE",
            Self::CalcindexTurnoverRate => "CALCINDEX_TURNOVER_RATE",
            Self::CalcindexTotalMarketValue => "CALCINDEX_TOTAL_MARKET_VALUE",
            Self::CalcindexCapitalFlow => "CALCINDEX_CAPITAL_FLOW",
            Self::CalcindexAmplitude => "CALCINDEX_AMPLITUDE",
            Self::CalcindexVolumeRatio => "CALCINDEX_VOLUME_RATIO",
            Self::CalcindexPeTtmRatio => "CALCINDEX_PE_TTM_RATIO",
            Self::CalcindexPbRatio => "CALCINDEX_PB_RATIO",
            Self::CalcindexDividendRatioTtm => "CALCINDEX_DIVIDEND_RATIO_TTM",
            Self::CalcindexFiveDayChangeRate => "CALCINDEX_FIVE_DAY_CHANGE_RATE",
            Self::CalcindexTenDayChangeRate => "CALCINDEX_TEN_DAY_CHANGE_RATE",
            Self::CalcindexHalfYearChangeRate => "CALCINDEX_HALF_YEAR_CHANGE_RATE",
            Self::CalcindexFiveMinutesChangeRate => "CALCINDEX_FIVE_MINUTES_CHANGE_RATE",
            Self::CalcindexExpiryDate => "CALCINDEX_EXPIRY_DATE",
            Self::CalcindexStrikePrice => "CALCINDEX_STRIKE_PRICE",
            Self::CalcindexUpperStrikePrice => "CALCINDEX_UPPER_STRIKE_PRICE",
            Self::CalcindexLowerStrikePrice => "CALCINDEX_LOWER_STRIKE_PRICE",
            Self::CalcindexOutstandingQty => "CALCINDEX_OUTSTANDING_QTY",
            Self::CalcindexOutstandingRatio => "CALCINDEX_OUTSTANDING_RATIO",
            Self::CalcindexPremium => "CALCINDEX_PREMIUM",
            Self::CalcindexItmOtm => "CALCINDEX_ITM_OTM",
            Self::CalcindexImpliedVolatility => "CALCINDEX_IMPLIED_VOLATILITY",
            Self::CalcindexWarrantDelta => "CALCINDEX_WARRANT_DELTA",
            Self::CalcindexCallPrice => "CALCINDEX_CALL_PRICE",
            Self::CalcindexToCallPrice => "CALCINDEX_TO_CALL_PRICE",
            Self::CalcindexEffectiveLeverage => "CALCINDEX_EFFECTIVE_LEVERAGE",
            Self::CalcindexLeverageRatio => "CALCINDEX_LEVERAGE_RATIO",
            Self::CalcindexConversionRatio => "CALCINDEX_CONVERSION_RATIO",
            Self::CalcindexBalancePoint => "CALCINDEX_BALANCE_POINT",
            Self::CalcindexOpenInterest => "CALCINDEX_OPEN_INTEREST",
            Self::CalcindexDelta => "CALCINDEX_DELTA",
            Self::CalcindexGamma => "CALCINDEX_GAMMA",
            Self::CalcindexTheta => "CALCINDEX_THETA",
            Self::CalcindexVega => "CALCINDEX_VEGA",
            Self::CalcindexRho => "CALCINDEX_RHO",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "CALCINDEX_UNKNOWN" => Some(Self::CalcindexUnknown),
            "CALCINDEX_LAST_DONE" => Some(Self::CalcindexLastDone),
            "CALCINDEX_CHANGE_VAL" => Some(Self::CalcindexChangeVal),
            "CALCINDEX_CHANGE_RATE" => Some(Self::CalcindexChangeRate),
            "CALCINDEX_VOLUME" => Some(Self::CalcindexVolume),
            "CALCINDEX_TURNOVER" => Some(Self::CalcindexTurnover),
            "CALCINDEX_YTD_CHANGE_RATE" => Some(Self::CalcindexYtdChangeRate),
            "CALCINDEX_TURNOVER_RATE" => Some(Self::CalcindexTurnoverRate),
            "CALCINDEX_TOTAL_MARKET_VALUE" => Some(Self::CalcindexTotalMarketValue),
            "CALCINDEX_CAPITAL_FLOW" => Some(Self::CalcindexCapitalFlow),
            "CALCINDEX_AMPLITUDE" => Some(Self::CalcindexAmplitude),
            "CALCINDEX_VOLUME_RATIO" => Some(Self::CalcindexVolumeRatio),
            "CALCINDEX_PE_TTM_RATIO" => Some(Self::CalcindexPeTtmRatio),
            "CALCINDEX_PB_RATIO" => Some(Self::CalcindexPbRatio),
            "CALCINDEX_DIVIDEND_RATIO_TTM" => Some(Self::CalcindexDividendRatioTtm),
            "CALCINDEX_FIVE_DAY_CHANGE_RATE" => Some(Self::CalcindexFiveDayChangeRate),
            "CALCINDEX_TEN_DAY_CHANGE_RATE" => Some(Self::CalcindexTenDayChangeRate),
            "CALCINDEX_HALF_YEAR_CHANGE_RATE" => Some(Self::CalcindexHalfYearChangeRate),
            "CALCINDEX_FIVE_MINUTES_CHANGE_RATE" => {
                Some(Self::CalcindexFiveMinutesChangeRate)
            }
            "CALCINDEX_EXPIRY_DATE" => Some(Self::CalcindexExpiryDate),
            "CALCINDEX_STRIKE_PRICE" => Some(Self::CalcindexStrikePrice),
            "CALCINDEX_UPPER_STRIKE_PRICE" => Some(Self::CalcindexUpperStrikePrice),
            "CALCINDEX_LOWER_STRIKE_PRICE" => Some(Self::CalcindexLowerStrikePrice),
            "CALCINDEX_OUTSTANDING_QTY" => Some(Self::CalcindexOutstandingQty),
            "CALCINDEX_OUTSTANDING_RATIO" => Some(Self::CalcindexOutstandingRatio),
            "CALCINDEX_PREMIUM" => Some(Self::CalcindexPremium),
            "CALCINDEX_ITM_OTM" => Some(Self::CalcindexItmOtm),
            "CALCINDEX_IMPLIED_VOLATILITY" => Some(Self::CalcindexImpliedVolatility),
            "CALCINDEX_WARRANT_DELTA" => Some(Self::CalcindexWarrantDelta),
            "CALCINDEX_CALL_PRICE" => Some(Self::CalcindexCallPrice),
            "CALCINDEX_TO_CALL_PRICE" => Some(Self::CalcindexToCallPrice),
            "CALCINDEX_EFFECTIVE_LEVERAGE" => Some(Self::CalcindexEffectiveLeverage),
            "CALCINDEX_LEVERAGE_RATIO" => Some(Self::CalcindexLeverageRatio),
            "CALCINDEX_CONVERSION_RATIO" => Some(Self::CalcindexConversionRatio),
            "CALCINDEX_BALANCE_POINT" => Some(Self::CalcindexBalancePoint),
            "CALCINDEX_OPEN_INTEREST" => Some(Self::CalcindexOpenInterest),
            "CALCINDEX_DELTA" => Some(Self::CalcindexDelta),
            "CALCINDEX_GAMMA" => Some(Self::CalcindexGamma),
            "CALCINDEX_THETA" => Some(Self::CalcindexTheta),
            "CALCINDEX_VEGA" => Some(Self::CalcindexVega),
            "CALCINDEX_RHO" => Some(Self::CalcindexRho),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum HistoryCandlestickQueryType {
    UnknownQueryType = 0,
    QueryByOffset = 1,
    QueryByDate = 2,
}
impl HistoryCandlestickQueryType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::UnknownQueryType => "UNKNOWN_QUERY_TYPE",
            Self::QueryByOffset => "QUERY_BY_OFFSET",
            Self::QueryByDate => "QUERY_BY_DATE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "UNKNOWN_QUERY_TYPE" => Some(Self::UnknownQueryType),
            "QUERY_BY_OFFSET" => Some(Self::QueryByOffset),
            "QUERY_BY_DATE" => Some(Self::QueryByDate),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Direction {
    /// 老数据, 从最新的数据往历史数据翻页
    Backward = 0,
    /// 新数据, 从当前数据往最新数据翻页
    Forward = 1,
}
impl Direction {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Backward => "BACKWARD",
            Self::Forward => "FORWARD",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "BACKWARD" => Some(Self::Backward),
            "FORWARD" => Some(Self::Forward),
            _ => None,
        }
    }
}
