// @generated
// This file is @generated by prost-build.
/// ETF 가격 산출 방식
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EtfPricing {
    #[prost(oneof="etf_pricing::Method", tags="1, 2, 3, 4")]
    pub method: ::core::option::Option<etf_pricing::Method>,
}
/// Nested message and enum types in `EtfPricing`.
pub mod etf_pricing {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Method {
        /// 분해 헷지 방식
        #[prost(message, tag="1")]
        PdfNavHedge(super::PdfNavHedgePricing),
        /// 선물 헷지 방식
        #[prost(message, tag="2")]
        IndexTrackingHedge(super::IndexTrackingHedgePricing),
        #[prost(message, tag="3")]
        FutureBasis(super::FutureBasis),
        /// 레버리지 선물 방식
        #[prost(message, tag="4")]
        LeverageFuture(super::LeverageFuturePricing),
    }
}
/// 분해 헷지 가격 산출 (추가 파라미터 없음)
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PdfNavHedgePricing {
}
/// 선물 헷지 가격 산출
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IndexTrackingHedgePricing {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FutureBasis {
    #[prost(string, tag="1")]
    pub prev_index: ::prost::alloc::string::String,
}
/// 레버리지 선물 가격 산출
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct LeverageFuturePricing {
    /// 기초지수 전일종가
    #[prost(double, tag="1")]
    pub prev_index: f64,
    /// 선물 전일종가
    #[prost(double, tag="2")]
    pub prev_future: f64,
}
/// 주문 방향
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OrderSide {
    Unspecified = 0,
    /// 매수
    Bid = 1,
    /// 매도
    Ask = 2,
}
impl OrderSide {
    /// 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 {
            OrderSide::Unspecified => "ORDER_SIDE_UNSPECIFIED",
            OrderSide::Bid => "ORDER_SIDE_BID",
            OrderSide::Ask => "ORDER_SIDE_ASK",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ORDER_SIDE_UNSPECIFIED" => Some(Self::Unspecified),
            "ORDER_SIDE_BID" => Some(Self::Bid),
            "ORDER_SIDE_ASK" => Some(Self::Ask),
            _ => None,
        }
    }
}
/// 시장 유형
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MarketType {
    Unspecified = 0,
    /// KOSPI
    Kospi = 1,
    /// KOSDAQ
    Kosdaq = 2,
    /// 파생상품
    Derivative = 3,
}
impl MarketType {
    /// 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 {
            MarketType::Unspecified => "MARKET_TYPE_UNSPECIFIED",
            MarketType::Kospi => "MARKET_TYPE_KOSPI",
            MarketType::Kosdaq => "MARKET_TYPE_KOSDAQ",
            MarketType::Derivative => "MARKET_TYPE_DERIVATIVE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "MARKET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "MARKET_TYPE_KOSPI" => Some(Self::Kospi),
            "MARKET_TYPE_KOSDAQ" => Some(Self::Kosdaq),
            "MARKET_TYPE_DERIVATIVE" => Some(Self::Derivative),
            _ => None,
        }
    }
}
/// 상품 타입
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProductType {
    Unspecified = 0,
    Stock = 1,
    Futures = 2,
    Etf = 3,
    Cash = 4,
}
impl ProductType {
    /// 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 {
            ProductType::Unspecified => "PRODUCT_TYPE_UNSPECIFIED",
            ProductType::Stock => "PRODUCT_TYPE_STOCK",
            ProductType::Futures => "PRODUCT_TYPE_FUTURES",
            ProductType::Etf => "PRODUCT_TYPE_ETF",
            ProductType::Cash => "PRODUCT_TYPE_CASH",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "PRODUCT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "PRODUCT_TYPE_STOCK" => Some(Self::Stock),
            "PRODUCT_TYPE_FUTURES" => Some(Self::Futures),
            "PRODUCT_TYPE_ETF" => Some(Self::Etf),
            "PRODUCT_TYPE_CASH" => Some(Self::Cash),
            _ => None,
        }
    }
}
/// 거래 세션 타입
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TradingSession {
    Unspecified = 0,
    /// 장 시작 전
    PreMarket = 1,
    /// 시가 동시호가 (08:30 ~ 09:00)
    OpeningAuction = 2,
    /// 장중 (09:00 ~ 15:20)
    Regular = 3,
    /// 종가 동시호가 (15:20 ~ 15:30)
    ClosingAuction = 4,
    /// 장 종료
    Closed = 5,
}
impl TradingSession {
    /// 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 {
            TradingSession::Unspecified => "TRADING_SESSION_UNSPECIFIED",
            TradingSession::PreMarket => "TRADING_SESSION_PRE_MARKET",
            TradingSession::OpeningAuction => "TRADING_SESSION_OPENING_AUCTION",
            TradingSession::Regular => "TRADING_SESSION_REGULAR",
            TradingSession::ClosingAuction => "TRADING_SESSION_CLOSING_AUCTION",
            TradingSession::Closed => "TRADING_SESSION_CLOSED",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "TRADING_SESSION_UNSPECIFIED" => Some(Self::Unspecified),
            "TRADING_SESSION_PRE_MARKET" => Some(Self::PreMarket),
            "TRADING_SESSION_OPENING_AUCTION" => Some(Self::OpeningAuction),
            "TRADING_SESSION_REGULAR" => Some(Self::Regular),
            "TRADING_SESSION_CLOSING_AUCTION" => Some(Self::ClosingAuction),
            "TRADING_SESSION_CLOSED" => Some(Self::Closed),
            _ => None,
        }
    }
}
/// 호가조건코드 (KRX)
/// 주문 체결 방식을 지정하는 조건
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OrderConditionType {
    /// 미지정 (기본값: FAS로 처리, 하위 호환)
    Unspecified = 0,
    /// Fill-and-Store: 체결 후 잔량은 호가창에 유지 (일반 지정가) — KRX code "0"
    Fas = 1,
    /// Fill-and-Kill (IOC): 체결 후 잔량 즉시 취소 — KRX code "3"
    Fak = 2,
    /// Fill-or-Kill: 전량 체결 아니면 전량 취소 — KRX code "4"
    Fok = 3,
}
impl OrderConditionType {
    /// 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 {
            OrderConditionType::Unspecified => "ORDER_CONDITION_TYPE_UNSPECIFIED",
            OrderConditionType::Fas => "ORDER_CONDITION_TYPE_FAS",
            OrderConditionType::Fak => "ORDER_CONDITION_TYPE_FAK",
            OrderConditionType::Fok => "ORDER_CONDITION_TYPE_FOK",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ORDER_CONDITION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "ORDER_CONDITION_TYPE_FAS" => Some(Self::Fas),
            "ORDER_CONDITION_TYPE_FAK" => Some(Self::Fak),
            "ORDER_CONDITION_TYPE_FOK" => Some(Self::Fok),
            _ => None,
        }
    }
}
/// 자동정정 전략 유형
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum AmendMethodType {
    /// 미지정 (기본값: TIMED_MARKET으로 처리)
    Unspecified = 0,
    /// 적극적 정정: 반대편 잔량 비율이 임계값 이상이면 즉시 체결 시도
    Aggressive = 1,
    /// 회피적 정정: tick_offset 만큼 가격을 조정하여 미체결 유지
    Evasive = 2,
    /// 최우선 호가: 상대방 최우선 호가로 정정
    BestPrice = 3,
    /// 손절 정정: tick_threshold 이상 불리해지면 시장가로 전환
    StopLoss = 4,
    /// 시간 제한 시장가: timeout 후 시장가로 전환
    TimedMarket = 5,
}
impl AmendMethodType {
    /// 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 {
            AmendMethodType::Unspecified => "AMEND_METHOD_TYPE_UNSPECIFIED",
            AmendMethodType::Aggressive => "AMEND_METHOD_TYPE_AGGRESSIVE",
            AmendMethodType::Evasive => "AMEND_METHOD_TYPE_EVASIVE",
            AmendMethodType::BestPrice => "AMEND_METHOD_TYPE_BEST_PRICE",
            AmendMethodType::StopLoss => "AMEND_METHOD_TYPE_STOP_LOSS",
            AmendMethodType::TimedMarket => "AMEND_METHOD_TYPE_TIMED_MARKET",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "AMEND_METHOD_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "AMEND_METHOD_TYPE_AGGRESSIVE" => Some(Self::Aggressive),
            "AMEND_METHOD_TYPE_EVASIVE" => Some(Self::Evasive),
            "AMEND_METHOD_TYPE_BEST_PRICE" => Some(Self::BestPrice),
            "AMEND_METHOD_TYPE_STOP_LOSS" => Some(Self::StopLoss),
            "AMEND_METHOD_TYPE_TIMED_MARKET" => Some(Self::TimedMarket),
            _ => None,
        }
    }
}
include!("kdo.v1.common.serde.rs");
// @@protoc_insertion_point(module)