ids_apis/
kdo.v1.lp.rs

1// @generated
2// This file is @generated by prost-build.
3/// ETF LP 설정
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct EtfLp {
7    /// ETF 심볼
8    #[prost(string, tag="1")]
9    pub symbol: ::prost::alloc::string::String,
10    /// Fund
11    #[prost(string, tag="2")]
12    pub fund_code: ::prost::alloc::string::String,
13    /// Basis 스프레드 (원 단위, i64)
14    #[prost(int64, tag="6")]
15    pub basis: i64,
16    /// 주문 수량 (i64)
17    #[prost(int64, tag="7")]
18    pub quantity: i64,
19    /// 호가 깊이 (양방향 레벨 수)
20    #[prost(uint32, tag="8")]
21    pub depth: u32,
22    /// ETF tick 크기 (원 단위, i64)
23    #[prost(int64, tag="9")]
24    pub tick_size: i64,
25    /// 동적 offset 조정 설정
26    #[prost(message, optional, tag="10")]
27    pub offset: ::core::option::Option<EtfLpOffset>,
28}
29// ========== ETF LP Status Messages ==========
30
31/// ETF LP 상태
32#[allow(clippy::derive_partial_eq_without_eq)]
33#[derive(Clone, PartialEq, ::prost::Message)]
34pub struct EtfLpStatus {
35    /// ETF 심볼
36    #[prost(string, tag="1")]
37    pub etf_symbol: ::prost::alloc::string::String,
38    /// 펀드 코드
39    #[prost(string, tag="2")]
40    pub fund_code: ::prost::alloc::string::String,
41    /// Basis 스프레드 (원 단위, i64)
42    #[prost(int64, tag="6")]
43    pub basis: i64,
44    /// 주문 수량 (i64)
45    #[prost(int64, tag="7")]
46    pub quantity: i64,
47    /// LP 상태
48    #[prost(enumeration="EtfLpState", tag="8")]
49    pub state: i32,
50    /// 가격 정보
51    #[prost(message, optional, tag="9")]
52    pub pricing: ::core::option::Option<LpPricing>,
53    /// 체결 통계
54    #[prost(message, optional, tag="10")]
55    pub fill_statistics: ::core::option::Option<FillStatistics>,
56    /// 동적 offset 조정 설정 (optional)
57    #[prost(message, optional, tag="11")]
58    pub offset: ::core::option::Option<EtfLpOffset>,
59}
60/// ETF LP 상태 업데이트 메시지 (변화된 필드만 포함)
61#[allow(clippy::derive_partial_eq_without_eq)]
62#[derive(Clone, PartialEq, ::prost::Message)]
63pub struct EtfLpStatusUpdate {
64    /// ETF 심볼
65    #[prost(string, tag="1")]
66    pub etf_symbol: ::prost::alloc::string::String,
67    /// 펀드 코드
68    #[prost(string, tag="2")]
69    pub fund_code: ::prost::alloc::string::String,
70    /// Basis 스프레드 (원 단위, i64)
71    #[prost(int64, optional, tag="6")]
72    pub basis: ::core::option::Option<i64>,
73    /// 주문 수량 (i64)
74    #[prost(int64, optional, tag="7")]
75    pub quantity: ::core::option::Option<i64>,
76    /// LP 상태
77    #[prost(enumeration="EtfLpState", optional, tag="8")]
78    pub state: ::core::option::Option<i32>,
79    /// 가격 정보
80    #[prost(message, optional, tag="9")]
81    pub pricing: ::core::option::Option<LpPricing>,
82    /// 체결 통계
83    #[prost(message, optional, tag="10")]
84    pub fill_statistics: ::core::option::Option<FillStatistics>,
85    /// 동적 offset 조정 설정 (optional)
86    #[prost(message, optional, tag="11")]
87    pub offset: ::core::option::Option<EtfLpOffset>,
88}
89/// 자동 offset 조정 설정
90#[allow(clippy::derive_partial_eq_without_eq)]
91#[derive(Clone, Copy, PartialEq, ::prost::Message)]
92pub struct EtfLpOffset {
93    ///
94    #[prost(int64, tag="1")]
95    pub bid_offset: i64,
96    #[prost(int64, tag="2")]
97    pub ask_offset: i64,
98    /// NAV 밴드 설정
99    #[prost(int64, tag="3")]
100    pub min_offset: i64,
101    #[prost(int64, tag="4")]
102    pub max_offset: i64,
103    /// 시간 기반 조정
104    #[prost(bool, tag="7")]
105    pub time_adjustment_enabled: bool,
106    #[prost(uint64, tag="8")]
107    pub adjustment_interval_secs: u64,
108    #[prost(float, tag="9")]
109    pub adjustment_step: f32,
110    #[prost(bool, tag="10")]
111    pub reset_on_fill: bool,
112    /// 순매매량 기반 조정
113    #[prost(bool, tag="17")]
114    pub position_adjustment_enabled: bool,
115    #[prost(enumeration="PositionAdjustmentStrategy", tag="18")]
116    pub position_strategy: i32,
117    #[prost(int64, tag="19")]
118    pub position_threshold: i64,
119    #[prost(float, tag="20")]
120    pub position_adjustment_step: f32,
121}
122/// ETF 체결 통계 (매수/매도 체결량 및 평균 단가)
123#[allow(clippy::derive_partial_eq_without_eq)]
124#[derive(Clone, PartialEq, ::prost::Message)]
125pub struct FillStatistics {
126    /// 매수 체결량
127    #[prost(int64, tag="1")]
128    pub buy_filled_quantity: i64,
129    /// 매도 체결량
130    #[prost(int64, tag="2")]
131    pub sell_filled_quantity: i64,
132    /// 매수 총금액 (평균 단가 계산용)
133    #[prost(string, tag="3")]
134    pub buy_total_amount: ::prost::alloc::string::String,
135    /// 매도 총금액 (평균 단가 계산용)
136    #[prost(string, tag="4")]
137    pub sell_total_amount: ::prost::alloc::string::String,
138}
139/// 주문 통계
140#[allow(clippy::derive_partial_eq_without_eq)]
141#[derive(Clone, Copy, PartialEq, ::prost::Message)]
142pub struct OrderStats {
143    /// 총 전송 주문 수
144    #[prost(uint64, tag="1")]
145    pub total_orders_sent: u64,
146    /// 접수된 주문 수
147    #[prost(uint64, tag="2")]
148    pub orders_accepted: u64,
149    /// 거부된 주문 수
150    #[prost(uint64, tag="3")]
151    pub orders_rejected: u64,
152    /// 체결된 주문 수
153    #[prost(uint64, tag="4")]
154    pub orders_filled: u64,
155    /// 총 체결 수량
156    #[prost(int64, tag="5")]
157    pub total_filled_quantity: i64,
158    /// 일일 체결 수량
159    #[prost(int64, tag="6")]
160    pub daily_filled_quantity: i64,
161}
162// Order Limiter 상태
163// message OrderLimitStatus {
164//   // 일일 누적 체결 수량 (i64)
165//   int64 daily_filled_quantity = 1;
166//
167//   // 일일 누적 체결 수량 한도 (i64)
168//   int64 daily_cumulative_limit = 2;
169//
170//   // 시간 프레임별 주문 개수 현황
171//   repeated TimeFrameStatus time_frame_status = 3;
172//
173//   // 일일 사용률 (%)
174//   double daily_usage_percent = 4;
175// }
176
177/// 시간 프레임별 상태
178#[allow(clippy::derive_partial_eq_without_eq)]
179#[derive(Clone, Copy, PartialEq, ::prost::Message)]
180pub struct TimeFrameStatus {
181    /// 시간 윈도우 (초)
182    #[prost(uint64, tag="1")]
183    pub window_seconds: u64,
184    /// 현재 윈도우 내 주문 개수
185    #[prost(uint32, tag="2")]
186    pub current_count: u32,
187    /// 최대 주문 개수
188    #[prost(uint32, tag="3")]
189    pub max_orders: u32,
190    /// 사용률 (%)
191    #[prost(double, tag="4")]
192    pub usage_percent: f64,
193}
194/// LP 가격 정보
195#[allow(clippy::derive_partial_eq_without_eq)]
196#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct LpPricing {
198    /// ETF 가격 (원 단위)
199    #[prost(string, tag="1")]
200    pub etf_price: ::prost::alloc::string::String,
201    // 구성 종목 가격 맵 (종목 코드 -> 가격, 원 단위)
202    //   map<string, string> constituents_price = 2;
203
204    /// ETF NAV (원 단위)
205    #[prost(string, tag="3")]
206    pub etf_nav: ::prost::alloc::string::String,
207}
208/// ========== Request/Response Messages ==========
209/// GetEtfLp
210#[allow(clippy::derive_partial_eq_without_eq)]
211#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct GetEtfLpRequest {
213    #[prost(string, tag="1")]
214    pub etf: ::prost::alloc::string::String,
215    #[prost(string, tag="2")]
216    pub fund: ::prost::alloc::string::String,
217}
218/// ListEtfLps
219#[allow(clippy::derive_partial_eq_without_eq)]
220#[derive(Clone, PartialEq, ::prost::Message)]
221pub struct ListEtfLpsRequest {
222    /// 페이지 크기 (optional)
223    #[prost(uint32, optional, tag="1")]
224    pub page_size: ::core::option::Option<u32>,
225    /// 페이지 토큰 (optional, for pagination)
226    #[prost(string, optional, tag="2")]
227    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
228    /// Available Sequence and Operator
229    /// * etf_symbol
230    ///    * `equal`, `contains`
231    /// * fund_code
232    ///    * `equal`, `contains`
233    ///
234    /// Examples
235    /// * filter=etf_symbol:"005930"
236    /// * filter=fund_code="0159"
237    #[prost(string, tag="3")]
238    pub filter: ::prost::alloc::string::String,
239}
240#[allow(clippy::derive_partial_eq_without_eq)]
241#[derive(Clone, PartialEq, ::prost::Message)]
242pub struct ListEtfLpsResponse {
243    /// ETF 목록
244    #[prost(message, repeated, tag="1")]
245    pub etf_lps: ::prost::alloc::vec::Vec<EtfLp>,
246    /// 다음 페이지 토큰
247    #[prost(string, tag="2")]
248    pub next_page_token: ::prost::alloc::string::String,
249}
250#[allow(clippy::derive_partial_eq_without_eq)]
251#[derive(Clone, PartialEq, ::prost::Message)]
252pub struct ListEtfLpStatusesRequest {
253    /// 페이지 크기 (optional)
254    #[prost(uint32, optional, tag="1")]
255    pub page_size: ::core::option::Option<u32>,
256    /// 페이지 토큰 (optional, for pagination)
257    #[prost(string, optional, tag="2")]
258    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
259    // Available Sequence and Operator
260    // * etf_symbol
261    //    * `equal`, `contains`
262    // * fund_code
263    //    * `equal`, `contains`
264    // * state
265    //    * `equal`
266    // * fill_satistics.buy_filled_quantity
267    //    * `greater_than`, `less_than`
268    //
269    // Examples
270    // * filter=etf_symbol:"005930"
271    // * filter=fund_code="0159"
272    // * filter=state=ETF_LP_STATE_RUNNING
273    // * filter=fill_statistics.buy_filled_quantity > 1000
274
275    #[prost(string, tag="3")]
276    pub filter: ::prost::alloc::string::String,
277    /// 오더링 조건. (optional, AIP-132)
278    ///
279    /// Supported Fields
280    /// * "fill_statistics.buy_filled_quantity", "fill_statistics.sell_filled_quantity"
281    ///
282    /// Examples
283    /// * order_by=fill_statistics.buy_filled_quantity desc
284    #[prost(string, tag="5")]
285    pub order_by: ::prost::alloc::string::String,
286}
287#[allow(clippy::derive_partial_eq_without_eq)]
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct ListEtfLpStatusesResponse {
290    /// ETF 목록
291    #[prost(message, repeated, tag="1")]
292    pub etf_lp_statuses: ::prost::alloc::vec::Vec<EtfLpStatus>,
293    /// 다음 페이지 토큰
294    #[prost(string, tag="2")]
295    pub next_page_token: ::prost::alloc::string::String,
296}
297/// UpdateEtfLp
298#[allow(clippy::derive_partial_eq_without_eq)]
299#[derive(Clone, PartialEq, ::prost::Message)]
300pub struct UpdateEtfLpRequest {
301    #[prost(message, optional, tag="1")]
302    pub lp: ::core::option::Option<EtfLp>,
303    #[prost(message, optional, tag="2")]
304    pub update_mask: ::core::option::Option<super::super::super::google::protobuf::FieldMask>,
305}
306/// GetEtfLpStatus
307#[allow(clippy::derive_partial_eq_without_eq)]
308#[derive(Clone, PartialEq, ::prost::Message)]
309pub struct GetEtfLpStatusRequest {
310    #[prost(string, tag="1")]
311    pub etf: ::prost::alloc::string::String,
312    #[prost(string, tag="2")]
313    pub fund: ::prost::alloc::string::String,
314}
315/// StreamEtfLpStatus
316#[allow(clippy::derive_partial_eq_without_eq)]
317#[derive(Clone, PartialEq, ::prost::Message)]
318pub struct StreamEtfLpStatusUpdateRequest {
319    #[prost(string, tag="1")]
320    pub etf: ::prost::alloc::string::String,
321    #[prost(string, tag="2")]
322    pub fund: ::prost::alloc::string::String,
323}
324/// ETF LP 시작 요청
325#[allow(clippy::derive_partial_eq_without_eq)]
326#[derive(Clone, PartialEq, ::prost::Message)]
327pub struct StartEtfLpRequest {
328    #[prost(string, tag="1")]
329    pub etf: ::prost::alloc::string::String,
330    #[prost(string, tag="2")]
331    pub fund: ::prost::alloc::string::String,
332}
333/// ETF LP 시작 응답
334#[allow(clippy::derive_partial_eq_without_eq)]
335#[derive(Clone, PartialEq, ::prost::Message)]
336pub struct StartEtfLpResponse {
337    /// LP 상태
338    #[prost(message, optional, tag="1")]
339    pub status: ::core::option::Option<EtfLpStatus>,
340    /// 메시지
341    #[prost(string, tag="2")]
342    pub message: ::prost::alloc::string::String,
343}
344/// ETF LP 중지 요청
345#[allow(clippy::derive_partial_eq_without_eq)]
346#[derive(Clone, PartialEq, ::prost::Message)]
347pub struct StopEtfLpRequest {
348    #[prost(string, tag="1")]
349    pub etf: ::prost::alloc::string::String,
350    #[prost(string, tag="2")]
351    pub fund: ::prost::alloc::string::String,
352}
353/// ETF LP 중지 응답
354#[allow(clippy::derive_partial_eq_without_eq)]
355#[derive(Clone, PartialEq, ::prost::Message)]
356pub struct StopEtfLpResponse {
357    /// LP 상태
358    #[prost(message, optional, tag="1")]
359    pub status: ::core::option::Option<EtfLpStatus>,
360    /// 메시지
361    #[prost(string, tag="2")]
362    pub message: ::prost::alloc::string::String,
363}
364/// StreamEtfErrors 요청
365#[allow(clippy::derive_partial_eq_without_eq)]
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct StreamLpEventsRequest {
368    #[prost(string, tag="1")]
369    pub etf: ::prost::alloc::string::String,
370    #[prost(string, tag="2")]
371    pub fund: ::prost::alloc::string::String,
372}
373/// ETF LP 에러 이벤트
374#[allow(clippy::derive_partial_eq_without_eq)]
375#[derive(Clone, PartialEq, ::prost::Message)]
376pub struct EtfLpEvent {
377    /// ETF 심볼
378    #[prost(string, tag="1")]
379    pub symbol: ::prost::alloc::string::String,
380    /// 작업 타입
381    #[prost(enumeration="TaskType", tag="2")]
382    pub task_type: i32,
383    /// 이벤트 타입
384    #[prost(enumeration="LpEventType", tag="3")]
385    pub r#type: i32,
386    /// 상세 메시지
387    #[prost(string, tag="4")]
388    pub message: ::prost::alloc::string::String,
389    /// 발생 시간
390    #[prost(message, optional, tag="5")]
391    pub timestamp: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
392    /// 이벤트 레벨
393    #[prost(enumeration="LpEventLevel", tag="6")]
394    pub level: i32,
395}
396/// 주문 업데이트 스트리밍 요청
397#[allow(clippy::derive_partial_eq_without_eq)]
398#[derive(Clone, PartialEq, ::prost::Message)]
399pub struct GetUserOrderBookRequest {
400    #[prost(string, tag="1")]
401    pub etf: ::prost::alloc::string::String,
402    #[prost(string, tag="2")]
403    pub fund: ::prost::alloc::string::String,
404}
405/// 주문 업데이트 정보
406#[allow(clippy::derive_partial_eq_without_eq)]
407#[derive(Clone, PartialEq, ::prost::Message)]
408pub struct UserOrderbookData {
409    /// 매수 호가 (10단계, AIP-144)
410    #[prost(string, repeated, tag="1")]
411    pub bid_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
412    /// 매도 호가 (10단계)
413    #[prost(string, repeated, tag="2")]
414    pub ask_prices: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
415    /// 매수 수량 (10단계)
416    #[prost(int64, repeated, tag="3")]
417    pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
418    /// 매도 수량 (10단계)
419    #[prost(int64, repeated, tag="4")]
420    pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
421}
422/// 순매매량 기반 조정 전략
423#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
424#[repr(i32)]
425pub enum PositionAdjustmentStrategy {
426    Unspecified = 0,
427    /// 회피: 순매수 과다 시 매수offset 증가 (덜 공격적으로 매수)
428    Avoidance = 1,
429    /// 매매회전: 순매수 과다 시 매도offset 감소 (더 공격적으로 매도)
430    Turnover = 2,
431    /// 모두 적용: 순매수 과다 시 매수offset 증가 및 매도offset 감소
432    All = 10,
433}
434impl PositionAdjustmentStrategy {
435    /// String value of the enum field names used in the ProtoBuf definition.
436    ///
437    /// The values are not transformed in any way and thus are considered stable
438    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
439    pub fn as_str_name(&self) -> &'static str {
440        match self {
441            PositionAdjustmentStrategy::Unspecified => "POSITION_ADJUSTMENT_STRATEGY_UNSPECIFIED",
442            PositionAdjustmentStrategy::Avoidance => "POSITION_ADJUSTMENT_STRATEGY_AVOIDANCE",
443            PositionAdjustmentStrategy::Turnover => "POSITION_ADJUSTMENT_STRATEGY_TURNOVER",
444            PositionAdjustmentStrategy::All => "POSITION_ADJUSTMENT_STRATEGY_ALL",
445        }
446    }
447    /// Creates an enum from field names used in the ProtoBuf definition.
448    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
449        match value {
450            "POSITION_ADJUSTMENT_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified),
451            "POSITION_ADJUSTMENT_STRATEGY_AVOIDANCE" => Some(Self::Avoidance),
452            "POSITION_ADJUSTMENT_STRATEGY_TURNOVER" => Some(Self::Turnover),
453            "POSITION_ADJUSTMENT_STRATEGY_ALL" => Some(Self::All),
454            _ => None,
455        }
456    }
457}
458/// ETF LP 상태 enum
459#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
460#[repr(i32)]
461pub enum EtfLpState {
462    Unspecified = 0,
463    Idle = 1,
464    Running = 2,
465    Stopping = 3,
466    Error = 4,
467}
468impl EtfLpState {
469    /// String value of the enum field names used in the ProtoBuf definition.
470    ///
471    /// The values are not transformed in any way and thus are considered stable
472    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
473    pub fn as_str_name(&self) -> &'static str {
474        match self {
475            EtfLpState::Unspecified => "ETF_LP_STATE_UNSPECIFIED",
476            EtfLpState::Idle => "ETF_LP_STATE_IDLE",
477            EtfLpState::Running => "ETF_LP_STATE_RUNNING",
478            EtfLpState::Stopping => "ETF_LP_STATE_STOPPING",
479            EtfLpState::Error => "ETF_LP_STATE_ERROR",
480        }
481    }
482    /// Creates an enum from field names used in the ProtoBuf definition.
483    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
484        match value {
485            "ETF_LP_STATE_UNSPECIFIED" => Some(Self::Unspecified),
486            "ETF_LP_STATE_IDLE" => Some(Self::Idle),
487            "ETF_LP_STATE_RUNNING" => Some(Self::Running),
488            "ETF_LP_STATE_STOPPING" => Some(Self::Stopping),
489            "ETF_LP_STATE_ERROR" => Some(Self::Error),
490            _ => None,
491        }
492    }
493}
494/// 작업 타입
495#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
496#[repr(i32)]
497pub enum TaskType {
498    Unspecified = 0,
499    Quote = 1,
500    Hedge = 2,
501}
502impl TaskType {
503    /// String value of the enum field names used in the ProtoBuf definition.
504    ///
505    /// The values are not transformed in any way and thus are considered stable
506    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
507    pub fn as_str_name(&self) -> &'static str {
508        match self {
509            TaskType::Unspecified => "TASK_TYPE_UNSPECIFIED",
510            TaskType::Quote => "TASK_TYPE_QUOTE",
511            TaskType::Hedge => "TASK_TYPE_HEDGE",
512        }
513    }
514    /// Creates an enum from field names used in the ProtoBuf definition.
515    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
516        match value {
517            "TASK_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
518            "TASK_TYPE_QUOTE" => Some(Self::Quote),
519            "TASK_TYPE_HEDGE" => Some(Self::Hedge),
520            _ => None,
521        }
522    }
523}
524/// 이벤트 타입
525#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
526#[repr(i32)]
527pub enum LpEventType {
528    Unspecified = 0,
529    /// 초기화 실패
530    Initialization = 1,
531    /// 가격 업데이트 실패
532    PriceUpdate = 2,
533    /// 주문 제출 실패
534    OrderSubmit = 3,
535    /// 주문 처리 실패
536    OrderProcessing = 4,
537    /// NAV 계산 실패
538    NavCalculation = 5,
539    /// 오더북 업데이트 실패
540    OrderBookUpdate = 6,
541    /// 주문 한도 초과
542    OrderLimitExceeded = 7,
543    /// 펀드 한도 초과
544    FundLimitExceeded = 8,
545    /// 주식 재고 초과
546    StockInventoryExceeded = 9,
547    /// 시스템 에러
548    SystemError = 12,
549    /// 시장 세션 관련 에러
550    MarketSession = 13,
551    /// 펀드 정보 업데이트 실패
552    FundUpdate = 14,
553    /// 오프셋 조정 (시간 기반) 실행
554    OffsetAdjustmentTimeStrategy = 15,
555    /// 오프셋 조정 (포지션 기반) 실행
556    OffsetAdjustmentPositionStrategy = 16,
557}
558impl LpEventType {
559    /// String value of the enum field names used in the ProtoBuf definition.
560    ///
561    /// The values are not transformed in any way and thus are considered stable
562    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
563    pub fn as_str_name(&self) -> &'static str {
564        match self {
565            LpEventType::Unspecified => "LP_EVENT_TYPE_UNSPECIFIED",
566            LpEventType::Initialization => "LP_EVENT_TYPE_INITIALIZATION",
567            LpEventType::PriceUpdate => "LP_EVENT_TYPE_PRICE_UPDATE",
568            LpEventType::OrderSubmit => "LP_EVENT_TYPE_ORDER_SUBMIT",
569            LpEventType::OrderProcessing => "LP_EVENT_TYPE_ORDER_PROCESSING",
570            LpEventType::NavCalculation => "LP_EVENT_TYPE_NAV_CALCULATION",
571            LpEventType::OrderBookUpdate => "LP_EVENT_TYPE_ORDER_BOOK_UPDATE",
572            LpEventType::OrderLimitExceeded => "LP_EVENT_TYPE_ORDER_LIMIT_EXCEEDED",
573            LpEventType::FundLimitExceeded => "LP_EVENT_TYPE_FUND_LIMIT_EXCEEDED",
574            LpEventType::StockInventoryExceeded => "LP_EVENT_TYPE_STOCK_INVENTORY_EXCEEDED",
575            LpEventType::SystemError => "LP_EVENT_TYPE_SYSTEM_ERROR",
576            LpEventType::MarketSession => "LP_EVENT_TYPE_MARKET_SESSION",
577            LpEventType::FundUpdate => "LP_EVENT_TYPE_FUND_UPDATE",
578            LpEventType::OffsetAdjustmentTimeStrategy => "LP_EVENT_TYPE_OFFSET_ADJUSTMENT_TIME_STRATEGY",
579            LpEventType::OffsetAdjustmentPositionStrategy => "LP_EVENT_TYPE_OFFSET_ADJUSTMENT_POSITION_STRATEGY",
580        }
581    }
582    /// Creates an enum from field names used in the ProtoBuf definition.
583    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
584        match value {
585            "LP_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
586            "LP_EVENT_TYPE_INITIALIZATION" => Some(Self::Initialization),
587            "LP_EVENT_TYPE_PRICE_UPDATE" => Some(Self::PriceUpdate),
588            "LP_EVENT_TYPE_ORDER_SUBMIT" => Some(Self::OrderSubmit),
589            "LP_EVENT_TYPE_ORDER_PROCESSING" => Some(Self::OrderProcessing),
590            "LP_EVENT_TYPE_NAV_CALCULATION" => Some(Self::NavCalculation),
591            "LP_EVENT_TYPE_ORDER_BOOK_UPDATE" => Some(Self::OrderBookUpdate),
592            "LP_EVENT_TYPE_ORDER_LIMIT_EXCEEDED" => Some(Self::OrderLimitExceeded),
593            "LP_EVENT_TYPE_FUND_LIMIT_EXCEEDED" => Some(Self::FundLimitExceeded),
594            "LP_EVENT_TYPE_STOCK_INVENTORY_EXCEEDED" => Some(Self::StockInventoryExceeded),
595            "LP_EVENT_TYPE_SYSTEM_ERROR" => Some(Self::SystemError),
596            "LP_EVENT_TYPE_MARKET_SESSION" => Some(Self::MarketSession),
597            "LP_EVENT_TYPE_FUND_UPDATE" => Some(Self::FundUpdate),
598            "LP_EVENT_TYPE_OFFSET_ADJUSTMENT_TIME_STRATEGY" => Some(Self::OffsetAdjustmentTimeStrategy),
599            "LP_EVENT_TYPE_OFFSET_ADJUSTMENT_POSITION_STRATEGY" => Some(Self::OffsetAdjustmentPositionStrategy),
600            _ => None,
601        }
602    }
603}
604/// 이벤트 레벨
605#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
606#[repr(i32)]
607pub enum LpEventLevel {
608    Unspecified = 0,
609    /// 디버그 정보
610    Debug = 1,
611    /// 정보성 메시지
612    Info = 2,
613    /// 경고
614    Warning = 3,
615    /// 에러
616    Error = 4,
617    /// 치명적 에러
618    Critical = 5,
619}
620impl LpEventLevel {
621    /// String value of the enum field names used in the ProtoBuf definition.
622    ///
623    /// The values are not transformed in any way and thus are considered stable
624    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
625    pub fn as_str_name(&self) -> &'static str {
626        match self {
627            LpEventLevel::Unspecified => "LP_EVENT_LEVEL_UNSPECIFIED",
628            LpEventLevel::Debug => "LP_EVENT_LEVEL_DEBUG",
629            LpEventLevel::Info => "LP_EVENT_LEVEL_INFO",
630            LpEventLevel::Warning => "LP_EVENT_LEVEL_WARNING",
631            LpEventLevel::Error => "LP_EVENT_LEVEL_ERROR",
632            LpEventLevel::Critical => "LP_EVENT_LEVEL_CRITICAL",
633        }
634    }
635    /// Creates an enum from field names used in the ProtoBuf definition.
636    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
637        match value {
638            "LP_EVENT_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
639            "LP_EVENT_LEVEL_DEBUG" => Some(Self::Debug),
640            "LP_EVENT_LEVEL_INFO" => Some(Self::Info),
641            "LP_EVENT_LEVEL_WARNING" => Some(Self::Warning),
642            "LP_EVENT_LEVEL_ERROR" => Some(Self::Error),
643            "LP_EVENT_LEVEL_CRITICAL" => Some(Self::Critical),
644            _ => None,
645        }
646    }
647}
648include!("kdo.v1.lp.tonic.rs");
649include!("kdo.v1.lp.serde.rs");
650// @@protoc_insertion_point(module)