ids_apis/
kdo.v1.market.rs

1// @generated
2// This file is @generated by prost-build.
3/// ETF 주문장 스트리밍 요청
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct StreamEtfOrderbookRequest {
7    /// 리소스 이름 (예: etfs/A069500)
8    #[prost(string, tag="1")]
9    pub etf: ::prost::alloc::string::String,
10    /// 필터링 조건 (선택적, AIP-160)
11    #[prost(string, tag="2")]
12    pub filter: ::prost::alloc::string::String,
13}
14/// 선물 주문장 스트리밍 요청
15#[allow(clippy::derive_partial_eq_without_eq)]
16#[derive(Clone, PartialEq, ::prost::Message)]
17pub struct StreamFuturesOrderbookRequest {
18    /// 리소스 이름 (예: futures/K101W9000)
19    #[prost(string, tag="1")]
20    pub future: ::prost::alloc::string::String,
21    /// 필터링 조건 (선택적, AIP-160)
22    #[prost(string, tag="2")]
23    pub filter: ::prost::alloc::string::String,
24}
25/// ETF 주문장 데이터
26#[allow(clippy::derive_partial_eq_without_eq)]
27#[derive(Clone, PartialEq, ::prost::Message)]
28pub struct EtfOrderbookData {
29    /// 매수 호가 (10단계, AIP-144)
30    #[prost(int64, repeated, tag="1")]
31    pub bid_prices: ::prost::alloc::vec::Vec<i64>,
32    /// 매도 호가 (10단계)
33    #[prost(int64, repeated, tag="2")]
34    pub ask_prices: ::prost::alloc::vec::Vec<i64>,
35    /// 매수 수량 (10단계)
36    #[prost(int64, repeated, tag="3")]
37    pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
38    /// 매도 수량 (10단계)
39    #[prost(int64, repeated, tag="4")]
40    pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
41    /// LP 매수 수량 (10단계)
42    #[prost(int64, repeated, tag="5")]
43    pub lp_bid_quantities: ::prost::alloc::vec::Vec<i64>,
44    /// LP 매도 수량 (10단계)
45    #[prost(int64, repeated, tag="6")]
46    pub lp_ask_quantities: ::prost::alloc::vec::Vec<i64>,
47    /// 중간 호가
48    #[prost(int64, tag="7")]
49    pub mid_price: i64,
50    /// 중간 매도 수량
51    #[prost(int64, tag="8")]
52    pub mid_ask_quantity: i64,
53    /// 중간 매수 수량
54    #[prost(int64, tag="9")]
55    pub mid_bid_quantity: i64,
56    /// 총 매도 호가 수량
57    #[prost(int64, tag="10")]
58    pub ask_quote_total_quantity: i64,
59    /// 총 매수 호가 수량
60    #[prost(int64, tag="11")]
61    pub bid_quote_total_quantity: i64,
62    /// 예상 가격
63    #[prost(int64, tag="12")]
64    pub est_price: i64,
65    /// 예상 거래량
66    #[prost(int64, tag="13")]
67    pub est_volume: i64,
68    /// 세션 ID
69    #[prost(enumeration="SessionId", tag="14")]
70    pub session_id: i32,
71}
72/// 선물 주문장 데이터
73#[allow(clippy::derive_partial_eq_without_eq)]
74#[derive(Clone, PartialEq, ::prost::Message)]
75pub struct FuturesOrderbookData {
76    /// 매수 호가 (5단계, AIP-144)
77    #[prost(float, repeated, tag="1")]
78    pub bid_prices: ::prost::alloc::vec::Vec<f32>,
79    /// 매도 호가 (5단계)
80    #[prost(float, repeated, tag="2")]
81    pub ask_prices: ::prost::alloc::vec::Vec<f32>,
82    /// 매수 수량 (5단계)
83    #[prost(int64, repeated, tag="3")]
84    pub bid_quantities: ::prost::alloc::vec::Vec<i64>,
85    /// 매도 수량 (5단계)
86    #[prost(int64, repeated, tag="4")]
87    pub ask_quantities: ::prost::alloc::vec::Vec<i64>,
88    /// 매수 주문 수 (5단계)
89    #[prost(int64, repeated, tag="5")]
90    pub bid_counts: ::prost::alloc::vec::Vec<i64>,
91    /// 매도 주문 수 (5단계)
92    #[prost(int64, repeated, tag="6")]
93    pub ask_counts: ::prost::alloc::vec::Vec<i64>,
94    /// 총 매도 호가 수량
95    #[prost(int64, tag="7")]
96    pub ask_quote_total_quantity: i64,
97    /// 총 매수 호가 수량
98    #[prost(int64, tag="8")]
99    pub bid_quote_total_quantity: i64,
100    /// 예상 가격
101    #[prost(float, tag="9")]
102    pub est_price: f32,
103    /// 예상 거래량
104    #[prost(int64, tag="10")]
105    pub est_volume: i64,
106    /// 세션 ID
107    #[prost(enumeration="SessionId", tag="11")]
108    pub session_id: i32,
109}
110/// 주문 정보
111#[allow(clippy::derive_partial_eq_without_eq)]
112#[derive(Clone, PartialEq, ::prost::Message)]
113pub struct Order {
114    /// 주문 ID
115    #[prost(string, tag="1")]
116    pub order_id: ::prost::alloc::string::String,
117    /// 주문 타입
118    #[prost(enumeration="OrderType", tag="2")]
119    pub order_type: i32,
120    /// 상품 (예: etfs/A069500)
121    #[prost(string, tag="3")]
122    pub symbol: ::prost::alloc::string::String,
123    /// 주문 가격
124    #[prost(float, tag="4")]
125    pub price: f32,
126    /// 주문 수량
127    #[prost(int64, tag="5")]
128    pub quantity: i64,
129    /// 체결 수량
130    #[prost(int64, tag="6")]
131    pub filled_quantity: i64,
132    /// 주문 상태
133    #[prost(enumeration="OrderStatus", tag="7")]
134    pub status: i32,
135    /// 주문 시간 (Unix timestamp)
136    #[prost(int64, tag="8")]
137    pub created_at: i64,
138    /// 업데이트 시간 (Unix timestamp)
139    #[prost(int64, tag="9")]
140    pub updated_at: i64,
141}
142/// 주문 접수 요청
143#[allow(clippy::derive_partial_eq_without_eq)]
144#[derive(Clone, PartialEq, ::prost::Message)]
145pub struct PlaceOrderRequest {
146    /// 주문 타입
147    #[prost(enumeration="OrderType", tag="1")]
148    pub order_type: i32,
149    /// 상품 (예: etfs/A069500)
150    #[prost(string, tag="2")]
151    pub symbol: ::prost::alloc::string::String,
152    /// 주문 가격
153    #[prost(int64, tag="3")]
154    pub price: i64,
155    /// 주문 수량
156    #[prost(int64, tag="4")]
157    pub quantity: i64,
158}
159/// 주문 접수 응답
160#[allow(clippy::derive_partial_eq_without_eq)]
161#[derive(Clone, PartialEq, ::prost::Message)]
162pub struct PlaceOrderResponse {
163    /// 생성된 주문 정보
164    #[prost(message, optional, tag="1")]
165    pub order: ::core::option::Option<Order>,
166}
167/// 주문 취소 요청
168#[allow(clippy::derive_partial_eq_without_eq)]
169#[derive(Clone, PartialEq, ::prost::Message)]
170pub struct CancelOrderRequest {
171    /// 취소할 주문 ID
172    #[prost(string, tag="1")]
173    pub order_id: ::prost::alloc::string::String,
174}
175/// 주문 취소 응답
176#[allow(clippy::derive_partial_eq_without_eq)]
177#[derive(Clone, PartialEq, ::prost::Message)]
178pub struct CancelOrderResponse {
179    /// 취소된 주문 정보
180    #[prost(message, optional, tag="1")]
181    pub order: ::core::option::Option<Order>,
182}
183/// 모든 주문 취소 요청
184#[allow(clippy::derive_partial_eq_without_eq)]
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct CancelAllOrdersRequest {
187    /// 선택적: 특정 상품의 주문만 취소
188    #[prost(string, tag="1")]
189    pub symbol: ::prost::alloc::string::String,
190}
191/// 모든 주문 취소 응답
192#[allow(clippy::derive_partial_eq_without_eq)]
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct CancelAllOrdersResponse {
195    /// 취소된 주문 수
196    #[prost(int32, tag="1")]
197    pub cancelled_count: i32,
198    /// 취소된 주문 목록
199    #[prost(message, repeated, tag="2")]
200    pub cancelled_orders: ::prost::alloc::vec::Vec<Order>,
201}
202/// 주문 목록 조회 요청
203#[allow(clippy::derive_partial_eq_without_eq)]
204#[derive(Clone, PartialEq, ::prost::Message)]
205pub struct ListOrdersRequest {
206    /// 필터링 조건 (선택적, AIP-160)
207    #[prost(string, tag="1")]
208    pub filter: ::prost::alloc::string::String,
209    /// 페이징 (AIP-158)
210    #[prost(int32, tag="2")]
211    pub page_size: i32,
212    #[prost(string, tag="3")]
213    pub page_token: ::prost::alloc::string::String,
214}
215/// 주문 목록 조회 응답
216#[allow(clippy::derive_partial_eq_without_eq)]
217#[derive(Clone, PartialEq, ::prost::Message)]
218pub struct ListOrdersResponse {
219    /// 주문 목록
220    #[prost(message, repeated, tag="1")]
221    pub orders: ::prost::alloc::vec::Vec<Order>,
222    /// 다음 페이지 토큰 (AIP-158)
223    #[prost(string, tag="2")]
224    pub next_page_token: ::prost::alloc::string::String,
225}
226/// 주문 업데이트 스트리밍 요청
227#[allow(clippy::derive_partial_eq_without_eq)]
228#[derive(Clone, PartialEq, ::prost::Message)]
229pub struct StreamOrderUpdatesRequest {
230    /// 필터링 조건 (선택적, AIP-160)
231    #[prost(string, tag="1")]
232    pub filter: ::prost::alloc::string::String,
233}
234/// 주문 업데이트
235#[allow(clippy::derive_partial_eq_without_eq)]
236#[derive(Clone, PartialEq, ::prost::Message)]
237pub struct OrderUpdate {
238    /// 업데이트된 주문
239    #[prost(message, optional, tag="1")]
240    pub order: ::core::option::Option<Order>,
241    #[prost(enumeration="order_update::UpdateType", tag="2")]
242    pub update_type: i32,
243}
244/// Nested message and enum types in `OrderUpdate`.
245pub mod order_update {
246    /// 업데이트 타입
247    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
248    #[repr(i32)]
249    pub enum UpdateType {
250        /// 기본값
251        Unspecified = 0,
252        /// 주문 생성
253        Created = 1,
254        /// 주문 업데이트
255        Updated = 2,
256        /// 주문 체결
257        Filled = 3,
258        /// 주문 취소
259        Cancelled = 4,
260    }
261    impl UpdateType {
262        /// String value of the enum field names used in the ProtoBuf definition.
263        ///
264        /// The values are not transformed in any way and thus are considered stable
265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
266        pub fn as_str_name(&self) -> &'static str {
267            match self {
268                UpdateType::Unspecified => "UPDATE_TYPE_UNSPECIFIED",
269                UpdateType::Created => "CREATED",
270                UpdateType::Updated => "UPDATED",
271                UpdateType::Filled => "FILLED",
272                UpdateType::Cancelled => "CANCELLED",
273            }
274        }
275        /// Creates an enum from field names used in the ProtoBuf definition.
276        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
277            match value {
278                "UPDATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
279                "CREATED" => Some(Self::Created),
280                "UPDATED" => Some(Self::Updated),
281                "FILLED" => Some(Self::Filled),
282                "CANCELLED" => Some(Self::Cancelled),
283                _ => None,
284            }
285        }
286    }
287}
288/// ETF LP 설정
289#[allow(clippy::derive_partial_eq_without_eq)]
290#[derive(Clone, Copy, PartialEq, ::prost::Message)]
291pub struct EtfLpConfig {
292    /// Basis 값
293    #[prost(double, tag="1")]
294    pub basis: f64,
295    /// Offset 값
296    #[prost(double, tag="2")]
297    pub offset: f64,
298    /// 주문 수량
299    #[prost(int64, tag="3")]
300    pub quantity: i64,
301    /// 호가 깊이 (1~10)
302    #[prost(int64, tag="4")]
303    pub depth: i64,
304    /// 호가 단위
305    #[prost(int64, tag="5")]
306    pub tick_size: i64,
307}
308/// ETF LP 시작 요청
309#[allow(clippy::derive_partial_eq_without_eq)]
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct StartEtfLpRequest {
312    /// ETF 리소스 이름 (예: etfs/A069500)
313    #[prost(string, tag="1")]
314    pub etf: ::prost::alloc::string::String,
315    /// LP 설정
316    #[prost(message, optional, tag="2")]
317    pub config: ::core::option::Option<EtfLpConfig>,
318}
319/// ETF LP 시작 응답
320#[allow(clippy::derive_partial_eq_without_eq)]
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct StartEtfLpResponse {
323    /// LP 상태
324    #[prost(enumeration="EtfLpStatus", tag="1")]
325    pub status: i32,
326    /// 메시지
327    #[prost(string, tag="2")]
328    pub message: ::prost::alloc::string::String,
329}
330/// ETF LP 중지 요청
331#[allow(clippy::derive_partial_eq_without_eq)]
332#[derive(Clone, PartialEq, ::prost::Message)]
333pub struct StopEtfLpRequest {
334    /// ETF 리소스 이름 (예: etfs/A069500)
335    #[prost(string, tag="1")]
336    pub etf: ::prost::alloc::string::String,
337}
338/// ETF LP 중지 응답
339#[allow(clippy::derive_partial_eq_without_eq)]
340#[derive(Clone, PartialEq, ::prost::Message)]
341pub struct StopEtfLpResponse {
342    /// LP 상태
343    #[prost(enumeration="EtfLpStatus", tag="1")]
344    pub status: i32,
345    /// 메시지
346    #[prost(string, tag="2")]
347    pub message: ::prost::alloc::string::String,
348}
349/// ETF LP 상태 조회 요청
350#[allow(clippy::derive_partial_eq_without_eq)]
351#[derive(Clone, PartialEq, ::prost::Message)]
352pub struct GetEtfLpStatusRequest {
353    /// ETF 리소스 이름 (예: etfs/A069500)
354    #[prost(string, tag="1")]
355    pub etf: ::prost::alloc::string::String,
356}
357/// ETF LP 상태 조회 응답
358#[allow(clippy::derive_partial_eq_without_eq)]
359#[derive(Clone, Copy, PartialEq, ::prost::Message)]
360pub struct GetEtfLpStatusResponse {
361    /// LP 상태
362    #[prost(enumeration="EtfLpStatus", tag="1")]
363    pub status: i32,
364    /// 현재 설정
365    #[prost(message, optional, tag="2")]
366    pub config: ::core::option::Option<EtfLpConfig>,
367    /// 시작 시간 (Unix timestamp)
368    #[prost(int64, tag="3")]
369    pub started_at: i64,
370    #[prost(int64, tag="4")]
371    pub etf_price: i64,
372    #[prost(float, tag="5")]
373    pub future_price: f32,
374    #[prost(float, tag="6")]
375    pub etf_ref_price: f32,
376}
377/// ETF LP 설정 업데이트 요청
378#[allow(clippy::derive_partial_eq_without_eq)]
379#[derive(Clone, PartialEq, ::prost::Message)]
380pub struct UpdateEtfLpConfigRequest {
381    /// ETF 리소스 이름 (예: etfs/A069500)
382    #[prost(string, tag="1")]
383    pub etf: ::prost::alloc::string::String,
384    /// 새로운 설정
385    #[prost(message, optional, tag="2")]
386    pub config: ::core::option::Option<EtfLpConfig>,
387}
388/// ETF LP 설정 업데이트 응답
389#[allow(clippy::derive_partial_eq_without_eq)]
390#[derive(Clone, PartialEq, ::prost::Message)]
391pub struct UpdateEtfLpConfigResponse {
392    /// 업데이트된 설정
393    #[prost(message, optional, tag="1")]
394    pub config: ::core::option::Option<EtfLpConfig>,
395    /// 메시지
396    #[prost(string, tag="2")]
397    pub message: ::prost::alloc::string::String,
398}
399/// 세션 ID 열거형 (AIP-126)
400#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
401#[repr(i32)]
402pub enum SessionId {
403    /// 기본값
404    Unspecified = 0,
405    /// 장개시전
406    Previous = 1,
407    /// 이상무
408    Connected = 2,
409    /// 시가단일가
410    OpeningOnePrice = 3,
411    /// 단일가
412    OnePrice = 4,
413    /// 종가단일가
414    ClosingOnePrice = 5,
415    /// VI장중단일가
416    ViOnePrice = 6,
417    /// VI시가단일가
418    ViOpeningOnePrice = 7,
419    /// VI종가단일가
420    ViClosingOnePrice = 8,
421    /// 단위매매
422    UnitTrade = 9,
423    /// 장종료후호가접수
424    PostMarket = 10,
425    /// 경매매수호가 접수 세션
426    AuctionBid = 11,
427    /// 경매매도호가 접수 세션
428    AuctionAsk = 12,
429    /// 거래정지
430    Suspended = 13,
431    /// SHUTDOWN
432    Shutdown = 14,
433    /// 장마감
434    Closed = 15,
435    /// 기타
436    Etc = 16,
437}
438impl SessionId {
439    /// String value of the enum field names used in the ProtoBuf definition.
440    ///
441    /// The values are not transformed in any way and thus are considered stable
442    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
443    pub fn as_str_name(&self) -> &'static str {
444        match self {
445            SessionId::Unspecified => "SESSION_ID_UNSPECIFIED",
446            SessionId::Previous => "PREVIOUS",
447            SessionId::Connected => "CONNECTED",
448            SessionId::OpeningOnePrice => "OPENING_ONE_PRICE",
449            SessionId::OnePrice => "ONE_PRICE",
450            SessionId::ClosingOnePrice => "CLOSING_ONE_PRICE",
451            SessionId::ViOnePrice => "VI_ONE_PRICE",
452            SessionId::ViOpeningOnePrice => "VI_OPENING_ONE_PRICE",
453            SessionId::ViClosingOnePrice => "VI_CLOSING_ONE_PRICE",
454            SessionId::UnitTrade => "UNIT_TRADE",
455            SessionId::PostMarket => "POST_MARKET",
456            SessionId::AuctionBid => "AUCTION_BID",
457            SessionId::AuctionAsk => "AUCTION_ASK",
458            SessionId::Suspended => "SUSPENDED",
459            SessionId::Shutdown => "SHUTDOWN",
460            SessionId::Closed => "CLOSED",
461            SessionId::Etc => "ETC",
462        }
463    }
464    /// Creates an enum from field names used in the ProtoBuf definition.
465    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
466        match value {
467            "SESSION_ID_UNSPECIFIED" => Some(Self::Unspecified),
468            "PREVIOUS" => Some(Self::Previous),
469            "CONNECTED" => Some(Self::Connected),
470            "OPENING_ONE_PRICE" => Some(Self::OpeningOnePrice),
471            "ONE_PRICE" => Some(Self::OnePrice),
472            "CLOSING_ONE_PRICE" => Some(Self::ClosingOnePrice),
473            "VI_ONE_PRICE" => Some(Self::ViOnePrice),
474            "VI_OPENING_ONE_PRICE" => Some(Self::ViOpeningOnePrice),
475            "VI_CLOSING_ONE_PRICE" => Some(Self::ViClosingOnePrice),
476            "UNIT_TRADE" => Some(Self::UnitTrade),
477            "POST_MARKET" => Some(Self::PostMarket),
478            "AUCTION_BID" => Some(Self::AuctionBid),
479            "AUCTION_ASK" => Some(Self::AuctionAsk),
480            "SUSPENDED" => Some(Self::Suspended),
481            "SHUTDOWN" => Some(Self::Shutdown),
482            "CLOSED" => Some(Self::Closed),
483            "ETC" => Some(Self::Etc),
484            _ => None,
485        }
486    }
487}
488/// 주문 타입 열거형
489#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
490#[repr(i32)]
491pub enum OrderType {
492    /// 기본값
493    Unspecified = 0,
494    /// 매수
495    Buy = 1,
496    /// 매도
497    Sell = 2,
498}
499impl OrderType {
500    /// String value of the enum field names used in the ProtoBuf definition.
501    ///
502    /// The values are not transformed in any way and thus are considered stable
503    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
504    pub fn as_str_name(&self) -> &'static str {
505        match self {
506            OrderType::Unspecified => "ORDER_TYPE_UNSPECIFIED",
507            OrderType::Buy => "BUY",
508            OrderType::Sell => "SELL",
509        }
510    }
511    /// Creates an enum from field names used in the ProtoBuf definition.
512    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
513        match value {
514            "ORDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
515            "BUY" => Some(Self::Buy),
516            "SELL" => Some(Self::Sell),
517            _ => None,
518        }
519    }
520}
521/// 주문 상태 열거형
522#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
523#[repr(i32)]
524pub enum OrderStatus {
525    /// 기본값
526    Unspecified = 0,
527    /// 대기중
528    Pending = 1,
529    /// 부분체결
530    PartialFilled = 2,
531    /// 체결완료
532    Filled = 3,
533    /// 취소됨
534    Cancelled = 4,
535    /// 거부됨
536    Rejected = 5,
537}
538impl OrderStatus {
539    /// String value of the enum field names used in the ProtoBuf definition.
540    ///
541    /// The values are not transformed in any way and thus are considered stable
542    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
543    pub fn as_str_name(&self) -> &'static str {
544        match self {
545            OrderStatus::Unspecified => "ORDER_STATUS_UNSPECIFIED",
546            OrderStatus::Pending => "PENDING",
547            OrderStatus::PartialFilled => "PARTIAL_FILLED",
548            OrderStatus::Filled => "FILLED",
549            OrderStatus::Cancelled => "CANCELLED",
550            OrderStatus::Rejected => "REJECTED",
551        }
552    }
553    /// Creates an enum from field names used in the ProtoBuf definition.
554    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
555        match value {
556            "ORDER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
557            "PENDING" => Some(Self::Pending),
558            "PARTIAL_FILLED" => Some(Self::PartialFilled),
559            "FILLED" => Some(Self::Filled),
560            "CANCELLED" => Some(Self::Cancelled),
561            "REJECTED" => Some(Self::Rejected),
562            _ => None,
563        }
564    }
565}
566/// ETF LP 상태
567#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
568#[repr(i32)]
569pub enum EtfLpStatus {
570    /// 기본값
571    Unspecified = 0,
572    /// 중지됨
573    Stopped = 1,
574    /// 시작중
575    Starting = 2,
576    /// 실행중
577    Running = 3,
578    /// 오류
579    Error = 4,
580}
581impl EtfLpStatus {
582    /// String value of the enum field names used in the ProtoBuf definition.
583    ///
584    /// The values are not transformed in any way and thus are considered stable
585    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
586    pub fn as_str_name(&self) -> &'static str {
587        match self {
588            EtfLpStatus::Unspecified => "ETF_LP_STATUS_UNSPECIFIED",
589            EtfLpStatus::Stopped => "STOPPED",
590            EtfLpStatus::Starting => "STARTING",
591            EtfLpStatus::Running => "RUNNING",
592            EtfLpStatus::Error => "ERROR",
593        }
594    }
595    /// Creates an enum from field names used in the ProtoBuf definition.
596    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
597        match value {
598            "ETF_LP_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
599            "STOPPED" => Some(Self::Stopped),
600            "STARTING" => Some(Self::Starting),
601            "RUNNING" => Some(Self::Running),
602            "ERROR" => Some(Self::Error),
603            _ => None,
604        }
605    }
606}
607include!("kdo.v1.market.tonic.rs");
608include!("kdo.v1.market.serde.rs");
609// @@protoc_insertion_point(module)