// @generated
// This file is @generated by prost-build.
// ========== Resource Messages ==========

/// Hedge: 펀드 단위 즉시 헷지 설정
/// 소스 종목의 체결에 대해 즉시 헷지 주문을 실행
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Hedge {
    /// 리소스 이름 (예: hedges/1)
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// Hedge ID
    #[prost(int32, tag="2")]
    pub id: i32,
    /// 소스(원주문) 펀드 코드
    #[prost(string, tag="3")]
    pub source_fund_code: ::prost::alloc::string::String,
    /// 소스 종목 심볼 (체결 감시 대상)
    #[prost(string, tag="4")]
    pub source_symbol: ::prost::alloc::string::String,
    /// 헷지 방식
    #[prost(message, optional, tag="5")]
    pub hedge_method: ::core::option::Option<HedgeMethod>,
    /// 활성화 여부
    #[prost(bool, tag="6")]
    pub is_active: bool,
    /// 생성 시간
    #[prost(message, optional, tag="7")]
    pub create_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
    /// 수정 시간
    #[prost(message, optional, tag="8")]
    pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
    /// 헷지 주문 체결 가격 유형
    #[prost(enumeration="ExecPriceType", tag="9")]
    pub exec_price_type: i32,
    /// 자동정정 활성화 여부
    #[prost(bool, tag="10")]
    pub auto_amend: bool,
    /// 자동정정 전략 유형 (auto_amend=true 일 때 유효)
    /// 미지정(UNSPECIFIED) 시 TIMED_MARKET으로 처리됨
    #[prost(enumeration="super::common::AmendMethodType", tag="11")]
    pub amend_method: i32,
    /// 헷지 1단위당 소스 종목 환산 수량 (정적 비율).
    /// key: 헷지 대상 심볼.
    /// value: 헷지 1단위당 소스 수량을 십진수 문자열로 인코딩한 값 (f64 정밀도 보존).
    /// 예) ratio=0.01 → "100", ratio=69.59 (leverage_future) → "0.01437..."
    #[prost(map="string, string", tag="12")]
    pub quantity_per_hedge: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
    /// 헷지 주문이 실행되는 펀드 코드
    #[prost(string, tag="13")]
    pub hedge_fund_code: ::prost::alloc::string::String,
    /// 상대호가/호가 가격에서의 틱 오프셋 (-30 ~ +30).
    /// 양수 = 공격적 (매수 더 비싸게 / 매도 더 싸게),
    /// 음수 = 방어적 (매수 더 싸게 / 매도 더 비싸게).
    /// ImmediateFill 일 때는 무시됨.
    #[prost(int32, tag="14")]
    pub tick_offset: i32,
    /// 헷지 주문 TP 코드 (호가 구분)
    #[prost(enumeration="OrderTpCode", tag="15")]
    pub tp_code: i32,
    /// 자동정정 시작 전 초기 대기 시간 (ms). auto_amend=true 일 때 유효, 등록 후 이 시간 동안 정정 보류 (0 = 즉시 정정 시작).
    #[prost(uint64, tag="16")]
    pub initial_wait_ms: u64,
}
/// 헷지 방식
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HedgeMethod {
    #[prost(oneof="hedge_method::Method", tags="1, 2, 3")]
    pub method: ::core::option::Option<hedge_method::Method>,
}
/// Nested message and enum types in `HedgeMethod`.
pub mod hedge_method {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Method {
        /// 직접 헷지 (비율 기반, instrument 종류 무관)
        #[prost(message, tag="1")]
        Direct(super::DirectHedge),
        /// ETF 분해 헷지 (CU 기반)
        #[prost(message, tag="2")]
        EtfDecomposition(super::EtfDecompositionHedge),
        /// ETF PDF 헷지 (master.etf_constituent PDF 재귀 분해, 네팅 없이 그대로 헷지 발사)
        #[prost(message, tag="3")]
        EtfPdf(super::EtfPdfHedge),
    }
}
/// 직접 헷지: 소스 종목 체결 시 헷지 종목을 ratio 비율로 반대 매매 (instrument 종류 무관)
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DirectHedge {
    /// 헷지 대상 종목 심볼
    #[prost(string, tag="1")]
    pub hedge_symbol: ::prost::alloc::string::String,
    /// 헷지 비율 (소스 수량 대비)
    #[prost(double, tag="2")]
    pub ratio: f64,
}
/// ETF 분해 헷지: ETF를 구성 종목으로 분해하여 CU 단위로 헷지
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EtfDecompositionHedge {
    /// 1CU(설정단위) 당 ETF 주수
    #[prost(int32, tag="1")]
    pub cu: i32,
    /// 1CU 당 구성 종목별 헷지 주문 수량
    /// key: 종목 심볼, value: 1CU 당 주문 수량 (소수 수량 지원, 예: KOSPI200 선물 +0.08/CU)
    #[prost(map="string, double", tag="2")]
    pub hedge_orders_per_1cu: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
}
/// ETF PDF 헷지: master.etf_constituent의 PDF를 재귀 분해하여 네팅 없이 그대로 헷지 발사
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EtfPdfHedge {
    /// 1CU(설정단위) 당 ETF 주수
    #[prost(int32, tag="1")]
    pub cu: i32,
    /// 1CU 당 헷지 주문 수량 (Symbol → quantity)
    /// key: 종목 심볼, value: 1CU 당 주문 수량 (소수 수량 지원, 예: KOSPI200 선물 +0.08/CU)
    #[prost(map="string, double", tag="2")]
    pub hedge_orders_per_1cu: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
}
/// HedgeGroup: 포트폴리오 단위 주기적 헷지
/// 트리거 조건에 따라 주기적으로 헷지 실행
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HedgeGroup {
    /// 리소스 이름 (예: hedge_groups/1)
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// HedgeGroup ID
    #[prost(int32, tag="2")]
    pub id: i32,
    /// 포트폴리오 리소스 이름
    /// format: portfolios/{portfolio}
    #[prost(string, tag="3")]
    pub portfolio: ::prost::alloc::string::String,
    /// 그룹 이름
    #[prost(string, tag="4")]
    pub display_name: ::prost::alloc::string::String,
    /// 헷지 펀드 코드 (헷지 주문 실행 펀드)
    #[prost(string, tag="5")]
    pub hedge_fund_code: ::prost::alloc::string::String,
    /// 트리거 조건
    #[prost(message, optional, tag="6")]
    pub trigger_condition: ::core::option::Option<TriggerCondition>,
    /// 활성화 여부
    #[prost(bool, tag="8")]
    pub is_active: bool,
    /// 생성 시간
    #[prost(message, optional, tag="9")]
    pub create_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
    /// 수정 시간
    #[prost(message, optional, tag="10")]
    pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
    /// If true, hedge accumulator separates accumulation by source_symbol.
    /// If false (default), accumulations are aggregated per hedge_symbol across all source_symbols.
    /// Controls trigger granularity for portfolios with multiple ETFs hedged to the same target instrument.
    #[prost(bool, tag="11")]
    pub separate_by_source: bool,
}
/// 트리거 조건: 헷지 실행 기준
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TriggerCondition {
    #[prost(oneof="trigger_condition::Condition", tags="1, 2")]
    pub condition: ::core::option::Option<trigger_condition::Condition>,
}
/// Nested message and enum types in `TriggerCondition`.
pub mod trigger_condition {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Condition {
        /// 수량 기반 트리거
        #[prost(message, tag="1")]
        Quantity(super::QuantityTrigger),
        /// 금액 기반 트리거
        #[prost(message, tag="2")]
        Amount(super::AmountTrigger),
    }
}
/// 수량 기반 트리거: 순수량 변동이 threshold 이상이면 헷지 실행
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuantityTrigger {
    /// 트리거 수량 임계값
    #[prost(int64, tag="1")]
    pub threshold: i64,
    /// 헷지 종목 심볼
    #[prost(string, tag="2")]
    pub hedge_instrument: ::prost::alloc::string::String,
    /// 헷지 비율
    #[prost(double, tag="3")]
    pub ratio: f64,
}
/// 금액 기반 트리거: 순금액 변동이 threshold 이상이면 헷지 실행
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AmountTrigger {
    /// 트리거 금액 임계값 (원)
    #[prost(int64, tag="1")]
    pub threshold: i64,
    /// 헷지 종목 심볼
    #[prost(string, tag="2")]
    pub hedge_instrument: ::prost::alloc::string::String,
    /// 헷지 비율
    #[prost(double, tag="3")]
    pub ratio: f64,
}
// ========== Request/Response Messages ==========

/// GetHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetHedgeRequest {
    /// 헷지 리소스 이름 (예: hedges/1)
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
}
/// LookupHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LookupHedgeRequest {
    /// 펀드 코드
    #[prost(string, tag="1")]
    pub fund_code: ::prost::alloc::string::String,
    /// 소스 종목 심볼
    #[prost(string, tag="2")]
    pub source_symbol: ::prost::alloc::string::String,
    /// 체결 들어오는 portfolio id — hedge.portfolio_id 와 일치하지 않으면 FAILED_PRECONDITION
    #[prost(int32, tag="3")]
    pub portfolio_id: i32,
}
/// LookupHedge 응답
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LookupHedgeResponse {
    /// 조회된 Hedge 목록
    #[prost(message, repeated, tag="1")]
    pub hedges: ::prost::alloc::vec::Vec<Hedge>,
}
/// FindValidHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FindValidHedgeRequest {
    /// 소스(원주문) 펀드 코드
    #[prost(string, tag="1")]
    pub fund_code: ::prost::alloc::string::String,
    /// 소스 종목 심볼
    #[prost(string, tag="2")]
    pub source_symbol: ::prost::alloc::string::String,
    /// 헷지 대상 종목 심볼
    #[prost(string, tag="3")]
    pub hedge_symbol: ::prost::alloc::string::String,
}
/// ListHedges 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgesRequest {
    /// 페이지 크기
    #[prost(int32, optional, tag="1")]
    pub page_size: ::core::option::Option<i32>,
    /// 페이지 토큰
    #[prost(string, optional, tag="2")]
    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
    /// 필터
    /// Available filters:
    /// * fund_code
    ///    * `equal`
    /// * source_symbol
    ///    * `equal`
    /// * is_active
    ///    * `equal`
    ///
    /// Examples:
    /// * filter=fund_code="0159"
    /// * filter=is_active=true
    #[prost(string, tag="3")]
    pub filter: ::prost::alloc::string::String,
}
/// ListHedges 응답
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgesResponse {
    /// 헷지 목록
    #[prost(message, repeated, tag="1")]
    pub hedges: ::prost::alloc::vec::Vec<Hedge>,
    /// 다음 페이지 토큰
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// CreateHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateHedgeRequest {
    /// 생성할 헷지 정보
    #[prost(message, optional, tag="1")]
    pub hedge: ::core::option::Option<Hedge>,
}
/// UpdateHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateHedgeRequest {
    /// 수정할 헷지 정보
    #[prost(message, optional, tag="1")]
    pub hedge: ::core::option::Option<Hedge>,
}
/// DeleteHedge 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeleteHedgeRequest {
    /// 삭제할 헷지 리소스 이름
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
}
/// GetHedgeGroup 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetHedgeGroupRequest {
    /// 헷지그룹 리소스 이름 (예: hedge_groups/1)
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
}
/// ListHedgeGroups 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgeGroupsRequest {
    /// 페이지 크기
    #[prost(int32, optional, tag="1")]
    pub page_size: ::core::option::Option<i32>,
    /// 페이지 토큰
    #[prost(string, optional, tag="2")]
    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
    /// 필터
    /// Available filters:
    /// * portfolio
    ///    * `equal`
    /// * hedge_fund_code
    ///    * `equal`
    /// * is_active
    ///    * `equal`
    ///
    /// Examples:
    /// * filter=portfolio="portfolios/1"
    /// * filter=is_active=true
    #[prost(string, tag="3")]
    pub filter: ::prost::alloc::string::String,
}
/// ListHedgeGroups 응답
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgeGroupsResponse {
    /// 헷지그룹 목록
    #[prost(message, repeated, tag="1")]
    pub hedge_groups: ::prost::alloc::vec::Vec<HedgeGroup>,
    /// 다음 페이지 토큰
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
/// CreateHedgeGroup 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateHedgeGroupRequest {
    /// 생성할 헷지그룹 정보
    #[prost(message, optional, tag="1")]
    pub hedge_group: ::core::option::Option<HedgeGroup>,
}
/// UpdateHedgeGroup 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateHedgeGroupRequest {
    /// 수정할 헷지그룹 정보
    #[prost(message, optional, tag="1")]
    pub hedge_group: ::core::option::Option<HedgeGroup>,
}
/// DeleteHedgeGroup 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeleteHedgeGroupRequest {
    /// 삭제할 헷지그룹 리소스 이름
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
}
/// InstrumentAccumulatorState: instrument 별 bid/ask 누적기 상태
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InstrumentAccumulatorState {
    /// 헷지 종목 심볼
    #[prost(string, tag="1")]
    pub hedge_symbol: ::prost::alloc::string::String,
    /// 매수 방향 누적값
    #[prost(double, tag="2")]
    pub bid_accumulator: f64,
    /// 매도 방향 누적값
    #[prost(double, tag="3")]
    pub ask_accumulator: f64,
}
/// HedgeAccumulatorState: 즉시 헷지 per-side 누적기의 현재 상태
/// bid_accumulator: 매수 방향 ETF 체결의 선물 환산 누적값
/// ask_accumulator: 매도 방향 ETF 체결의 선물 환산 누적값
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HedgeAccumulatorState {
    /// 포트폴리오 ID
    #[prost(int32, tag="1")]
    pub portfolio_id: i32,
    /// 소스 ETF 펀드 코드
    #[prost(string, tag="2")]
    pub source_fund_code: ::prost::alloc::string::String,
    /// 소스 ETF 종목 심볼
    #[prost(string, tag="3")]
    pub source_symbol: ::prost::alloc::string::String,
    /// 헷지 종목 심볼 (선물 등)
    #[prost(string, tag="4")]
    pub hedge_symbol: ::prost::alloc::string::String,
    /// 매수 방향 누적값 (선물 환산 단위)
    #[prost(double, tag="5")]
    pub bid_accumulator: f64,
    /// 매도 방향 누적값 (선물 환산 단위)
    #[prost(double, tag="6")]
    pub ask_accumulator: f64,
    /// 소스 ETF 매수 총 체결수량
    #[prost(int64, tag="7")]
    pub source_bid_filled_quantity: i64,
    /// 소스 ETF 매도 총 체결수량
    #[prost(int64, tag="8")]
    pub source_ask_filled_quantity: i64,
    /// 매수 체결에 대한 desired 헷지 수량 (선물 환산, 누적)
    #[prost(double, tag="9")]
    pub desired_bid_hedge_quantity: f64,
    /// 매도 체결에 대한 desired 헷지 수량 (선물 환산, 누적)
    #[prost(double, tag="10")]
    pub desired_ask_hedge_quantity: f64,
    /// instrument 별 누적기 상세 (multi-instrument 헷지 지원)
    #[prost(message, repeated, tag="11")]
    pub per_instrument: ::prost::alloc::vec::Vec<InstrumentAccumulatorState>,
}
/// ListHedgeAccumulators 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgeAccumulatorsRequest {
    /// 필터
    /// Available filters:
    /// * portfolio_id
    ///    * `equal`
    /// * fund_code
    ///    * `equal`
    /// * source_symbol
    ///    * `equal`
    ///
    /// Examples:
    /// * filter=fund_code="0159"
    /// * filter=portfolio_id=1
    #[prost(string, tag="1")]
    pub filter: ::prost::alloc::string::String,
}
/// ListHedgeAccumulators 응답
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHedgeAccumulatorsResponse {
    /// HedgeAccumulator 상태 목록
    #[prost(message, repeated, tag="1")]
    pub hedge_accumulators: ::prost::alloc::vec::Vec<HedgeAccumulatorState>,
}
/// StreamHedgeAccumulators 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamHedgeAccumulatorsRequest {
    /// 필터
    /// Available filters:
    /// * portfolio_id
    ///    * `equal`
    /// * fund_code
    ///    * `equal`
    /// * source_symbol
    ///    * `equal`
    ///
    /// Examples:
    /// * filter=fund_code="0159"
    /// * filter=portfolio_id=1
    /// 빈 문자열 = 전체 accumulator 상태 스트리밍
    #[prost(string, tag="1")]
    pub filter: ::prost::alloc::string::String,
}
/// UpdateHedgeAccumulatorFilledQuantities 요청
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateHedgeAccumulatorFilledQuantitiesRequest {
    /// 소스 ETF 펀드 코드
    #[prost(string, tag="1")]
    pub fund_code: ::prost::alloc::string::String,
    /// 소스 ETF 종목 심볼
    #[prost(string, tag="2")]
    pub source_symbol: ::prost::alloc::string::String,
    /// 소스 ETF 매수 총 체결수량
    #[prost(int64, tag="3")]
    pub source_bid_filled_quantity: i64,
    /// 소스 ETF 매도 총 체결수량
    #[prost(int64, tag="4")]
    pub source_ask_filled_quantity: i64,
}
// ========== Enums ==========

/// 헷지 주문 TP 코드 (호가 구분)
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OrderTpCode {
    /// 미지정 (도메인에서 None으로 매핑)
    Unspecified = 0,
    /// 일반 주문
    None = 1,
    /// LP 주문
    Lp = 2,
}
impl OrderTpCode {
    /// 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 {
            OrderTpCode::Unspecified => "ORDER_TP_CODE_UNSPECIFIED",
            OrderTpCode::None => "ORDER_TP_CODE_NONE",
            OrderTpCode::Lp => "ORDER_TP_CODE_LP",
        }
    }
    /// 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_TP_CODE_UNSPECIFIED" => Some(Self::Unspecified),
            "ORDER_TP_CODE_NONE" => Some(Self::None),
            "ORDER_TP_CODE_LP" => Some(Self::Lp),
            _ => None,
        }
    }
}
/// 헷지 주문 체결 가격 유형
/// 거래소의 구체적인 호가 유형(QuoteType)과 달리,
/// 헷지 주문의 전략적 의도를 표현합니다.
/// 틱 오프셋은 Hedge.tick_offset 필드로 별도 지정합니다.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ExecPriceType {
    /// 미지정
    Unspecified = 0,
    /// 즉시 체결: 조건부지정가(PriceLimitBestTake)로 즉시 체결 시도
    ImmediateFill = 1,
    /// 상대호가: 상대방 최우선호가 가격으로 지정가 주문 + tick_offset 적용
    CounterBest = 2,
    /// 호가 가격: 지정된 호가 가격으로 주문 + tick_offset 적용
    QuotedPrice = 4,
}
impl ExecPriceType {
    /// 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 {
            ExecPriceType::Unspecified => "EXEC_PRICE_TYPE_UNSPECIFIED",
            ExecPriceType::ImmediateFill => "EXEC_PRICE_TYPE_IMMEDIATE_FILL",
            ExecPriceType::CounterBest => "EXEC_PRICE_TYPE_COUNTER_BEST",
            ExecPriceType::QuotedPrice => "EXEC_PRICE_TYPE_QUOTED_PRICE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EXEC_PRICE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "EXEC_PRICE_TYPE_IMMEDIATE_FILL" => Some(Self::ImmediateFill),
            "EXEC_PRICE_TYPE_COUNTER_BEST" => Some(Self::CounterBest),
            "EXEC_PRICE_TYPE_QUOTED_PRICE" => Some(Self::QuotedPrice),
            _ => None,
        }
    }
}
include!("kdo.v1.hedge.tonic.rs");
include!("kdo.v1.hedge.serde.rs");
// @@protoc_insertion_point(module)