1#[allow(clippy::derive_partial_eq_without_eq)]
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct Pair {
11 #[prost(string, tag="1")]
13 pub name: ::prost::alloc::string::String,
14 #[prost(int32, tag="2")]
16 pub id: i32,
17 #[prost(string, tag="3")]
19 pub display_name: ::prost::alloc::string::String,
20 #[prost(int32, tag="4")]
22 pub portfolio_id: i32,
23 #[prost(message, optional, tag="5")]
25 pub base: ::core::option::Option<PairEntry>,
26 #[prost(message, optional, tag="6")]
28 pub counter: ::core::option::Option<PairEntry>,
29 #[prost(enumeration="PairStatus", tag="9")]
31 pub status: i32,
32 #[prost(message, optional, tag="11")]
34 pub create_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
35 #[prost(message, optional, tag="12")]
37 pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
38 #[prost(message, optional, tag="13")]
40 pub trigger: ::core::option::Option<TriggerCondition>,
41 #[prost(message, optional, tag="14")]
43 pub execution: ::core::option::Option<OrderExecution>,
44 #[prost(message, optional, tag="15")]
47 pub nav: ::core::option::Option<Nav>,
48}
49#[allow(clippy::derive_partial_eq_without_eq)]
65#[derive(Clone, PartialEq, ::prost::Message)]
66pub struct PairEntry {
67 #[prost(string, tag="1")]
69 pub symbol: ::prost::alloc::string::String,
70 #[prost(string, tag="2")]
72 pub fund_code: ::prost::alloc::string::String,
73 #[prost(enumeration="PairSide", tag="3")]
75 pub side: i32,
76 #[prost(int64, tag="4")]
79 pub quantity: i64,
80 #[prost(enumeration="PriceSource", tag="5")]
83 pub price_source: i32,
84 #[prost(enumeration="super::hedge::OrderTpCode", tag="7")]
86 pub tp_code: i32,
87}
88#[allow(clippy::derive_partial_eq_without_eq)]
94#[derive(Clone, Copy, PartialEq, ::prost::Message)]
95pub struct PairCondition {
96 #[prost(oneof="pair_condition::Kind", tags="1, 2, 3")]
97 pub kind: ::core::option::Option<pair_condition::Kind>,
98}
99pub mod pair_condition {
101 #[allow(clippy::derive_partial_eq_without_eq)]
102#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
103 pub enum Kind {
104 #[prost(message, tag="1")]
106 SpreadAmount(super::SpreadAmountCondition),
107 #[prost(message, tag="2")]
109 SpreadBps(super::SpreadBpsCondition),
110 #[prost(message, tag="3")]
112 PriceRatio(super::PriceRatioCondition),
113 }
114}
115#[allow(clippy::derive_partial_eq_without_eq)]
117#[derive(Clone, Copy, PartialEq, ::prost::Message)]
118pub struct SpreadAmountCondition {
119 #[prost(int64, tag="1")]
121 pub threshold: i64,
122 #[prost(enumeration="SpreadDirection", tag="2")]
124 pub direction: i32,
125}
126#[allow(clippy::derive_partial_eq_without_eq)]
128#[derive(Clone, Copy, PartialEq, ::prost::Message)]
129pub struct SpreadBpsCondition {
130 #[prost(double, tag="1")]
132 pub threshold_bps: f64,
133 #[prost(enumeration="SpreadDirection", tag="2")]
135 pub direction: i32,
136}
137#[allow(clippy::derive_partial_eq_without_eq)]
139#[derive(Clone, Copy, PartialEq, ::prost::Message)]
140pub struct PriceRatioCondition {
141 #[prost(double, tag="1")]
143 pub min_ratio: f64,
144 #[prost(double, tag="2")]
146 pub max_ratio: f64,
147}
148#[allow(clippy::derive_partial_eq_without_eq)]
151#[derive(Clone, Copy, PartialEq, ::prost::Message)]
152pub struct Nav {
153 #[prost(enumeration="EtfNavKind", tag="1")]
154 pub nav_kind: i32,
155 #[prost(int64, tag="2")]
158 pub basis: i64,
159 #[prost(bool, tag="4")]
162 pub basis_subscribe_enabled: bool,
163}
164#[allow(clippy::derive_partial_eq_without_eq)]
170#[derive(Clone, PartialEq, ::prost::Message)]
171pub struct TriggerCondition {
172 #[prost(oneof="trigger_condition::Kind", tags="1, 2, 3")]
173 pub kind: ::core::option::Option<trigger_condition::Kind>,
174}
175pub mod trigger_condition {
177 #[allow(clippy::derive_partial_eq_without_eq)]
178#[derive(Clone, PartialEq, ::prost::Oneof)]
179 pub enum Kind {
180 #[prost(message, tag="1")]
182 PriceSpread(super::PriceSpreadTrigger),
183 #[prost(message, tag="2")]
185 BestMakeQuantityImbalance(super::BestMakeQuantityImbalanceTrigger),
186 #[prost(message, tag="3")]
189 TargetNavQuantityImbalance(super::TargetNavQuantityImbalanceTrigger),
190 }
191}
192#[allow(clippy::derive_partial_eq_without_eq)]
194#[derive(Clone, Copy, PartialEq, ::prost::Message)]
195pub struct PriceSpreadTrigger {
196 #[prost(message, optional, tag="1")]
198 pub condition: ::core::option::Option<PairCondition>,
199 #[prost(uint64, tag="2")]
201 pub cooldown_ms: u64,
202}
203#[allow(clippy::derive_partial_eq_without_eq)]
205#[derive(Clone, Copy, PartialEq, ::prost::Message)]
206pub struct BestMakeQuantityImbalanceTrigger {
207 #[prost(double, tag="1")]
209 pub threshold_ratio: f64,
210 #[prost(uint64, tag="2")]
212 pub cooldown_ms: u64,
213 #[prost(int64, tag="4")]
215 pub min_base_qty: i64,
216}
217#[allow(clippy::derive_partial_eq_without_eq)]
220#[derive(Clone, PartialEq, ::prost::Message)]
221pub struct TargetNavQuantityImbalanceTrigger {
222 #[prost(double, tag="1")]
224 pub threshold_ratio: f64,
225 #[prost(uint64, tag="2")]
227 pub cooldown_ms: u64,
228 #[prost(string, optional, tag="3")]
231 pub imbalance_symbol: ::core::option::Option<::prost::alloc::string::String>,
232 #[prost(int64, tag="5")]
234 pub min_base_qty: i64,
235}
236#[allow(clippy::derive_partial_eq_without_eq)]
242#[derive(Clone, Copy, PartialEq, ::prost::Message)]
243pub struct OrderExecution {
244 #[prost(oneof="order_execution::Kind", tags="1, 2, 3, 4")]
245 pub kind: ::core::option::Option<order_execution::Kind>,
246}
247pub mod order_execution {
249 #[allow(clippy::derive_partial_eq_without_eq)]
250#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
251 pub enum Kind {
252 #[prost(message, tag="1")]
254 DualSubmit(super::DualSubmitExecution),
255 #[prost(message, tag="2")]
257 BaseMakeCounterIocAndBalance(super::BaseMakeCounterIocAndBalanceExecution),
258 #[prost(message, tag="3")]
260 CounterIocTpSl(super::CounterIocTpSlExecution),
261 #[prost(message, tag="4")]
263 BaseMakeCounterTakeAndBalance(super::BaseMakeCounterTakeAndBalanceExecution),
264 }
265}
266#[allow(clippy::derive_partial_eq_without_eq)]
268#[derive(Clone, Copy, PartialEq, ::prost::Message)]
269pub struct DualSubmitExecution {
270 #[prost(enumeration="PairOrderType", tag="1")]
272 pub order_type: i32,
273}
274#[allow(clippy::derive_partial_eq_without_eq)]
284#[derive(Clone, Copy, PartialEq, ::prost::Message)]
285pub struct BaseMakeCounterIocAndBalanceExecution {
286 #[prost(double, tag="4")]
288 pub recovery_ratio: f64,
289 #[prost(uint32, tag="7")]
292 pub base_recovery_aggressive_ticks: u32,
293 #[prost(uint32, tag="8")]
296 pub counter_recovery_aggressive_ticks: u32,
297}
298#[allow(clippy::derive_partial_eq_without_eq)]
303#[derive(Clone, Copy, PartialEq, ::prost::Message)]
304pub struct CounterIocTpSlExecution {
305 #[prost(uint32, tag="4")]
307 pub take_profit_ticks: u32,
308 #[prost(uint32, tag="5")]
310 pub stop_loss_ticks: u32,
311 #[prost(uint32, tag="6")]
313 pub exit_aggressive_ticks: u32,
314 #[prost(uint32, tag="7")]
317 pub entry_aggressive_ticks: u32,
318 #[prost(uint64, tag="8")]
320 pub exit_delay_ms: u64,
321}
322#[allow(clippy::derive_partial_eq_without_eq)]
335#[derive(Clone, Copy, PartialEq, ::prost::Message)]
336pub struct BaseMakeCounterTakeAndBalanceExecution {
337 #[prost(double, tag="1")]
339 pub recovery_ratio: f64,
340 #[prost(uint32, tag="4")]
343 pub base_recovery_aggressive_ticks: u32,
344 #[prost(uint32, tag="5")]
347 pub counter_recovery_aggressive_ticks: u32,
348 #[prost(uint32, tag="6")]
351 pub counter_aggressive_ticks: u32,
352}
353#[allow(clippy::derive_partial_eq_without_eq)]
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct GetPairRequest {
360 #[prost(string, tag="1")]
362 pub pair: ::prost::alloc::string::String,
363}
364#[allow(clippy::derive_partial_eq_without_eq)]
365#[derive(Clone, PartialEq, ::prost::Message)]
366pub struct ListPairsRequest {
367 #[prost(int32, optional, tag="1")]
369 pub page_size: ::core::option::Option<i32>,
370 #[prost(string, optional, tag="2")]
372 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
373 #[prost(string, tag="3")]
383 pub filter: ::prost::alloc::string::String,
384}
385#[allow(clippy::derive_partial_eq_without_eq)]
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct ListPairsResponse {
388 #[prost(message, repeated, tag="1")]
390 pub pairs: ::prost::alloc::vec::Vec<Pair>,
391 #[prost(string, tag="2")]
393 pub next_page_token: ::prost::alloc::string::String,
394}
395#[allow(clippy::derive_partial_eq_without_eq)]
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct CreatePairRequest {
398 #[prost(message, optional, tag="1")]
400 pub pair: ::core::option::Option<Pair>,
401}
402#[allow(clippy::derive_partial_eq_without_eq)]
403#[derive(Clone, PartialEq, ::prost::Message)]
404pub struct UpdatePairRequest {
405 #[prost(message, optional, tag="1")]
407 pub pair: ::core::option::Option<Pair>,
408}
409#[allow(clippy::derive_partial_eq_without_eq)]
410#[derive(Clone, PartialEq, ::prost::Message)]
411pub struct DeletePairRequest {
412 #[prost(string, tag="1")]
414 pub pair: ::prost::alloc::string::String,
415}
416#[allow(clippy::derive_partial_eq_without_eq)]
421#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct ActivatePairRequest {
423 #[prost(string, tag="1")]
425 pub pair: ::prost::alloc::string::String,
426}
427#[allow(clippy::derive_partial_eq_without_eq)]
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct PausePairRequest {
430 #[prost(string, tag="1")]
432 pub pair: ::prost::alloc::string::String,
433}
434#[allow(clippy::derive_partial_eq_without_eq)]
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct PairExecutionLog {
442 #[prost(int32, tag="1")]
444 pub pair_id: i32,
445 #[prost(string, tag="2")]
447 pub scenario: ::prost::alloc::string::String,
448 #[prost(enumeration="PairExecutionOutcome", tag="3")]
450 pub outcome: i32,
451 #[prost(uint64, optional, tag="4")]
453 pub base_order_id: ::core::option::Option<u64>,
454 #[prost(uint64, optional, tag="5")]
456 pub counter_order_id: ::core::option::Option<u64>,
457 #[prost(int64, tag="6")]
459 pub base_price: i64,
460 #[prost(int64, tag="7")]
462 pub counter_price: i64,
463 #[prost(message, optional, tag="9")]
465 pub dispatched_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
466 #[prost(string, optional, tag="10")]
468 pub detail: ::core::option::Option<::prost::alloc::string::String>,
469 #[prost(int64, tag="11")]
471 pub base_qty: i64,
472 #[prost(int64, tag="12")]
474 pub counter_qty: i64,
475 #[prost(int64, tag="13")]
477 pub base_fill_price: i64,
478 #[prost(int64, tag="14")]
480 pub counter_fill_price: i64,
481 #[prost(int64, tag="15")]
484 pub trigger_to_base_submit_us: i64,
485 #[prost(int64, tag="16")]
488 pub trigger_to_counter_submit_us: i64,
489 #[prost(int64, optional, tag="17")]
491 pub exit_qty: ::core::option::Option<i64>,
492 #[prost(int64, optional, tag="18")]
494 pub exit_fill_price: ::core::option::Option<i64>,
495 #[prost(uint64, optional, tag="19")]
497 pub exit_order_id: ::core::option::Option<u64>,
498 #[prost(int64, tag="20")]
501 pub base_slippage: i64,
502 #[prost(int64, tag="21")]
505 pub counter_slippage: i64,
506 #[prost(uint32, optional, tag="22")]
509 pub cycle_id: ::core::option::Option<u32>,
510}
511#[allow(clippy::derive_partial_eq_without_eq)]
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct ListPairExecutionLogsRequest {
514 #[prost(string, tag="1")]
516 pub pair: ::prost::alloc::string::String,
517 #[prost(int32, optional, tag="2")]
519 pub page_size: ::core::option::Option<i32>,
520 #[prost(string, optional, tag="3")]
522 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
523 #[prost(string, tag="4")]
525 pub order_by: ::prost::alloc::string::String,
526 #[prost(enumeration="PairExecutionOutcome", tag="5")]
528 pub outcome: i32,
529 #[prost(string, tag="6")]
531 pub date: ::prost::alloc::string::String,
532 #[prost(string, tag="7")]
534 pub start_time: ::prost::alloc::string::String,
535 #[prost(string, tag="8")]
537 pub end_time: ::prost::alloc::string::String,
538}
539#[allow(clippy::derive_partial_eq_without_eq)]
540#[derive(Clone, PartialEq, ::prost::Message)]
541pub struct ListPairExecutionLogsResponse {
542 #[prost(message, repeated, tag="1")]
544 pub execution_logs: ::prost::alloc::vec::Vec<PairExecutionLog>,
545 #[prost(string, tag="2")]
547 pub next_page_token: ::prost::alloc::string::String,
548 #[prost(int32, tag="3")]
550 pub total_count: i32,
551}
552#[allow(clippy::derive_partial_eq_without_eq)]
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct StreamPairStatusRequest {
560 #[prost(string, tag="1")]
562 pub pair: ::prost::alloc::string::String,
563}
564#[allow(clippy::derive_partial_eq_without_eq)]
566#[derive(Clone, PartialEq, ::prost::Message)]
567pub struct StreamPairConfigRequest {
568 #[prost(string, tag="1")]
570 pub pair: ::prost::alloc::string::String,
571}
572#[allow(clippy::derive_partial_eq_without_eq)]
575#[derive(Clone, Copy, PartialEq, ::prost::Message)]
576pub struct FillStatus {
577 #[prost(int64, tag="1")]
579 pub unfilled_quantity: i64,
580 #[prost(int64, tag="2")]
582 pub filled_quantity: i64,
583 #[prost(int64, tag="3")]
585 pub avg_fill_price: i64,
586 #[prost(int64, tag="4")]
588 pub submitted_quantity: i64,
589}
590#[allow(clippy::derive_partial_eq_without_eq)]
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct PairStatusUpdate {
594 #[prost(string, tag="1")]
596 pub pair: ::prost::alloc::string::String,
597 #[prost(message, optional, tag="2")]
599 pub base: ::core::option::Option<FillStatus>,
600 #[prost(message, optional, tag="3")]
602 pub counter: ::core::option::Option<FillStatus>,
603 #[prost(message, optional, tag="4")]
605 pub updated_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
606 #[prost(message, optional, tag="5")]
609 pub exit: ::core::option::Option<FillStatus>,
610}
611#[allow(clippy::derive_partial_eq_without_eq)]
617#[derive(Clone, PartialEq, ::prost::Message)]
618pub struct GetPairStatisticsRequest {
619 #[prost(string, tag="1")]
621 pub pair: ::prost::alloc::string::String,
622}
623#[allow(clippy::derive_partial_eq_without_eq)]
625#[derive(Clone, PartialEq, ::prost::Message)]
626pub struct PairStatistics {
627 #[prost(string, tag="1")]
629 pub pair: ::prost::alloc::string::String,
630 #[prost(int64, tag="2")]
632 pub total_submitted: i64,
633 #[prost(int64, tag="3")]
635 pub total_filled: i64,
636 #[prost(int64, tag="4")]
638 pub execution_count: i64,
639 #[prost(int64, tag="5")]
641 pub realized_pnl: i64,
642}
643#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
645#[repr(i32)]
646pub enum PairSide {
647 Unspecified = 0,
648 Bid = 1,
650 Ask = 2,
652}
653impl PairSide {
654 pub fn as_str_name(&self) -> &'static str {
659 match self {
660 PairSide::Unspecified => "PAIR_SIDE_UNSPECIFIED",
661 PairSide::Bid => "PAIR_SIDE_BID",
662 PairSide::Ask => "PAIR_SIDE_ASK",
663 }
664 }
665 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
667 match value {
668 "PAIR_SIDE_UNSPECIFIED" => Some(Self::Unspecified),
669 "PAIR_SIDE_BID" => Some(Self::Bid),
670 "PAIR_SIDE_ASK" => Some(Self::Ask),
671 _ => None,
672 }
673 }
674}
675#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
677#[repr(i32)]
678pub enum PriceSource {
679 Unspecified = 0,
680 BestMake = 5,
682 BestTake = 6,
684}
685impl PriceSource {
686 pub fn as_str_name(&self) -> &'static str {
691 match self {
692 PriceSource::Unspecified => "PRICE_SOURCE_UNSPECIFIED",
693 PriceSource::BestMake => "PRICE_SOURCE_BEST_MAKE",
694 PriceSource::BestTake => "PRICE_SOURCE_BEST_TAKE",
695 }
696 }
697 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
699 match value {
700 "PRICE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
701 "PRICE_SOURCE_BEST_MAKE" => Some(Self::BestMake),
702 "PRICE_SOURCE_BEST_TAKE" => Some(Self::BestTake),
703 _ => None,
704 }
705 }
706}
707#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
709#[repr(i32)]
710pub enum SpreadDirection {
711 Unspecified = 0,
712 BaseHigh = 1,
714 CounterHigh = 2,
716 Both = 3,
718}
719impl SpreadDirection {
720 pub fn as_str_name(&self) -> &'static str {
725 match self {
726 SpreadDirection::Unspecified => "SPREAD_DIRECTION_UNSPECIFIED",
727 SpreadDirection::BaseHigh => "SPREAD_DIRECTION_BASE_HIGH",
728 SpreadDirection::CounterHigh => "SPREAD_DIRECTION_COUNTER_HIGH",
729 SpreadDirection::Both => "SPREAD_DIRECTION_BOTH",
730 }
731 }
732 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
734 match value {
735 "SPREAD_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
736 "SPREAD_DIRECTION_BASE_HIGH" => Some(Self::BaseHigh),
737 "SPREAD_DIRECTION_COUNTER_HIGH" => Some(Self::CounterHigh),
738 "SPREAD_DIRECTION_BOTH" => Some(Self::Both),
739 _ => None,
740 }
741 }
742}
743#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
745#[repr(i32)]
746pub enum PairOrderType {
747 Unspecified = 0,
748 Limit = 1,
750 Market = 2,
752 Aggressive = 3,
754}
755impl PairOrderType {
756 pub fn as_str_name(&self) -> &'static str {
761 match self {
762 PairOrderType::Unspecified => "PAIR_ORDER_TYPE_UNSPECIFIED",
763 PairOrderType::Limit => "PAIR_ORDER_TYPE_LIMIT",
764 PairOrderType::Market => "PAIR_ORDER_TYPE_MARKET",
765 PairOrderType::Aggressive => "PAIR_ORDER_TYPE_AGGRESSIVE",
766 }
767 }
768 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
770 match value {
771 "PAIR_ORDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
772 "PAIR_ORDER_TYPE_LIMIT" => Some(Self::Limit),
773 "PAIR_ORDER_TYPE_MARKET" => Some(Self::Market),
774 "PAIR_ORDER_TYPE_AGGRESSIVE" => Some(Self::Aggressive),
775 _ => None,
776 }
777 }
778}
779#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
785#[repr(i32)]
786pub enum PairStatus {
787 Unspecified = 0,
788 Active = 1,
790 Paused = 2,
792 Archived = 3,
794}
795impl PairStatus {
796 pub fn as_str_name(&self) -> &'static str {
801 match self {
802 PairStatus::Unspecified => "PAIR_STATUS_UNSPECIFIED",
803 PairStatus::Active => "PAIR_STATUS_ACTIVE",
804 PairStatus::Paused => "PAIR_STATUS_PAUSED",
805 PairStatus::Archived => "PAIR_STATUS_ARCHIVED",
806 }
807 }
808 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
810 match value {
811 "PAIR_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
812 "PAIR_STATUS_ACTIVE" => Some(Self::Active),
813 "PAIR_STATUS_PAUSED" => Some(Self::Paused),
814 "PAIR_STATUS_ARCHIVED" => Some(Self::Archived),
815 _ => None,
816 }
817 }
818}
819#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
825#[repr(i32)]
826pub enum EtfNavKind {
827 Unspecified = 0,
828 IndexTrackingHedge = 1,
830 FutureBasis = 2,
832 LeverageFuture = 3,
834 PdfDecomposeHedge = 4,
836}
837impl EtfNavKind {
838 pub fn as_str_name(&self) -> &'static str {
843 match self {
844 EtfNavKind::Unspecified => "ETF_NAV_KIND_UNSPECIFIED",
845 EtfNavKind::IndexTrackingHedge => "ETF_NAV_KIND_INDEX_TRACKING_HEDGE",
846 EtfNavKind::FutureBasis => "ETF_NAV_KIND_FUTURE_BASIS",
847 EtfNavKind::LeverageFuture => "ETF_NAV_KIND_LEVERAGE_FUTURE",
848 EtfNavKind::PdfDecomposeHedge => "ETF_NAV_KIND_PDF_DECOMPOSE_HEDGE",
849 }
850 }
851 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
853 match value {
854 "ETF_NAV_KIND_UNSPECIFIED" => Some(Self::Unspecified),
855 "ETF_NAV_KIND_INDEX_TRACKING_HEDGE" => Some(Self::IndexTrackingHedge),
856 "ETF_NAV_KIND_FUTURE_BASIS" => Some(Self::FutureBasis),
857 "ETF_NAV_KIND_LEVERAGE_FUTURE" => Some(Self::LeverageFuture),
858 "ETF_NAV_KIND_PDF_DECOMPOSE_HEDGE" => Some(Self::PdfDecomposeHedge),
859 _ => None,
860 }
861 }
862}
863#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
865#[repr(i32)]
866pub enum PairExecutionOutcome {
867 Unspecified = 0,
868 Submitted = 1,
870 SkippedPreValidation = 2,
872 SkippedCooldown = 3,
874 SkippedNoPrecomputed = 4,
876 PartialFailure = 5,
878 Failed = 6,
880 SkippedNoFilled = 7,
882}
883impl PairExecutionOutcome {
884 pub fn as_str_name(&self) -> &'static str {
889 match self {
890 PairExecutionOutcome::Unspecified => "PAIR_EXECUTION_OUTCOME_UNSPECIFIED",
891 PairExecutionOutcome::Submitted => "PAIR_EXECUTION_OUTCOME_SUBMITTED",
892 PairExecutionOutcome::SkippedPreValidation => "PAIR_EXECUTION_OUTCOME_SKIPPED_PRE_VALIDATION",
893 PairExecutionOutcome::SkippedCooldown => "PAIR_EXECUTION_OUTCOME_SKIPPED_COOLDOWN",
894 PairExecutionOutcome::SkippedNoPrecomputed => "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_PRECOMPUTED",
895 PairExecutionOutcome::PartialFailure => "PAIR_EXECUTION_OUTCOME_PARTIAL_FAILURE",
896 PairExecutionOutcome::Failed => "PAIR_EXECUTION_OUTCOME_FAILED",
897 PairExecutionOutcome::SkippedNoFilled => "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_FILLED",
898 }
899 }
900 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
902 match value {
903 "PAIR_EXECUTION_OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
904 "PAIR_EXECUTION_OUTCOME_SUBMITTED" => Some(Self::Submitted),
905 "PAIR_EXECUTION_OUTCOME_SKIPPED_PRE_VALIDATION" => Some(Self::SkippedPreValidation),
906 "PAIR_EXECUTION_OUTCOME_SKIPPED_COOLDOWN" => Some(Self::SkippedCooldown),
907 "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_PRECOMPUTED" => Some(Self::SkippedNoPrecomputed),
908 "PAIR_EXECUTION_OUTCOME_PARTIAL_FAILURE" => Some(Self::PartialFailure),
909 "PAIR_EXECUTION_OUTCOME_FAILED" => Some(Self::Failed),
910 "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_FILLED" => Some(Self::SkippedNoFilled),
911 _ => None,
912 }
913 }
914}
915include!("kdo.v1.pair.tonic.rs");
916include!("kdo.v1.pair.serde.rs");
917