#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Pair {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
#[prost(int32, tag="2")]
pub id: i32,
#[prost(string, tag="3")]
pub display_name: ::prost::alloc::string::String,
#[prost(int32, tag="4")]
pub portfolio_id: i32,
#[prost(message, optional, tag="5")]
pub base: ::core::option::Option<PairEntry>,
#[prost(message, optional, tag="6")]
pub counter: ::core::option::Option<PairEntry>,
#[prost(enumeration="PairStatus", tag="9")]
pub status: i32,
#[prost(message, optional, tag="11")]
pub create_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(message, optional, tag="12")]
pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(message, optional, tag="13")]
pub trigger: ::core::option::Option<TriggerCondition>,
#[prost(message, optional, tag="14")]
pub execution: ::core::option::Option<OrderExecution>,
#[prost(message, optional, tag="15")]
pub nav: ::core::option::Option<Nav>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PairEntry {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub fund_code: ::prost::alloc::string::String,
#[prost(enumeration="PairSide", tag="3")]
pub side: i32,
#[prost(int64, tag="4")]
pub quantity: i64,
#[prost(enumeration="PriceSource", tag="5")]
pub price_source: i32,
#[prost(enumeration="super::hedge::OrderTpCode", tag="7")]
pub tp_code: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PairCondition {
#[prost(oneof="pair_condition::Kind", tags="1, 2, 3")]
pub kind: ::core::option::Option<pair_condition::Kind>,
}
pub mod pair_condition {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Kind {
#[prost(message, tag="1")]
SpreadAmount(super::SpreadAmountCondition),
#[prost(message, tag="2")]
SpreadBps(super::SpreadBpsCondition),
#[prost(message, tag="3")]
PriceRatio(super::PriceRatioCondition),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SpreadAmountCondition {
#[prost(int64, tag="1")]
pub threshold: i64,
#[prost(enumeration="SpreadDirection", tag="2")]
pub direction: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SpreadBpsCondition {
#[prost(double, tag="1")]
pub threshold_bps: f64,
#[prost(enumeration="SpreadDirection", tag="2")]
pub direction: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PriceRatioCondition {
#[prost(double, tag="1")]
pub min_ratio: f64,
#[prost(double, tag="2")]
pub max_ratio: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Nav {
#[prost(enumeration="EtfNavKind", tag="1")]
pub nav_kind: i32,
#[prost(int64, tag="2")]
pub basis: i64,
#[prost(bool, tag="4")]
pub basis_subscribe_enabled: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TriggerCondition {
#[prost(oneof="trigger_condition::Kind", tags="1, 2, 3")]
pub kind: ::core::option::Option<trigger_condition::Kind>,
}
pub mod trigger_condition {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Kind {
#[prost(message, tag="1")]
PriceSpread(super::PriceSpreadTrigger),
#[prost(message, tag="2")]
BestMakeQuantityImbalance(super::BestMakeQuantityImbalanceTrigger),
#[prost(message, tag="3")]
TargetNavQuantityImbalance(super::TargetNavQuantityImbalanceTrigger),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PriceSpreadTrigger {
#[prost(message, optional, tag="1")]
pub condition: ::core::option::Option<PairCondition>,
#[prost(uint64, tag="2")]
pub cooldown_ms: u64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BestMakeQuantityImbalanceTrigger {
#[prost(double, tag="1")]
pub threshold_ratio: f64,
#[prost(uint64, tag="2")]
pub cooldown_ms: u64,
#[prost(int64, tag="4")]
pub min_base_qty: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TargetNavQuantityImbalanceTrigger {
#[prost(double, tag="1")]
pub threshold_ratio: f64,
#[prost(uint64, tag="2")]
pub cooldown_ms: u64,
#[prost(string, optional, tag="3")]
pub imbalance_symbol: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, tag="5")]
pub min_base_qty: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct OrderExecution {
#[prost(oneof="order_execution::Kind", tags="1, 2, 3, 4")]
pub kind: ::core::option::Option<order_execution::Kind>,
}
pub mod order_execution {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Kind {
#[prost(message, tag="1")]
DualSubmit(super::DualSubmitExecution),
#[prost(message, tag="2")]
BaseMakeCounterIocAndBalance(super::BaseMakeCounterIocAndBalanceExecution),
#[prost(message, tag="3")]
CounterIocTpSl(super::CounterIocTpSlExecution),
#[prost(message, tag="4")]
BaseMakeCounterTakeAndBalance(super::BaseMakeCounterTakeAndBalanceExecution),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DualSubmitExecution {
#[prost(enumeration="PairOrderType", tag="1")]
pub order_type: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BaseMakeCounterIocAndBalanceExecution {
#[prost(double, tag="4")]
pub recovery_ratio: f64,
#[prost(uint32, tag="7")]
pub base_recovery_aggressive_ticks: u32,
#[prost(uint32, tag="8")]
pub counter_recovery_aggressive_ticks: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CounterIocTpSlExecution {
#[prost(uint32, tag="4")]
pub take_profit_ticks: u32,
#[prost(uint32, tag="5")]
pub stop_loss_ticks: u32,
#[prost(uint32, tag="6")]
pub exit_aggressive_ticks: u32,
#[prost(uint32, tag="7")]
pub entry_aggressive_ticks: u32,
#[prost(uint64, tag="8")]
pub exit_delay_ms: u64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BaseMakeCounterTakeAndBalanceExecution {
#[prost(double, tag="1")]
pub recovery_ratio: f64,
#[prost(uint32, tag="4")]
pub base_recovery_aggressive_ticks: u32,
#[prost(uint32, tag="5")]
pub counter_recovery_aggressive_ticks: u32,
#[prost(uint32, tag="6")]
pub counter_aggressive_ticks: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetPairRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPairsRequest {
#[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>,
#[prost(string, tag="3")]
pub filter: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPairsResponse {
#[prost(message, repeated, tag="1")]
pub pairs: ::prost::alloc::vec::Vec<Pair>,
#[prost(string, tag="2")]
pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreatePairRequest {
#[prost(message, optional, tag="1")]
pub pair: ::core::option::Option<Pair>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdatePairRequest {
#[prost(message, optional, tag="1")]
pub pair: ::core::option::Option<Pair>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeletePairRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ActivatePairRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PausePairRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PairExecutionLog {
#[prost(int32, tag="1")]
pub pair_id: i32,
#[prost(string, tag="2")]
pub scenario: ::prost::alloc::string::String,
#[prost(enumeration="PairExecutionOutcome", tag="3")]
pub outcome: i32,
#[prost(uint64, optional, tag="4")]
pub base_order_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag="5")]
pub counter_order_id: ::core::option::Option<u64>,
#[prost(int64, tag="6")]
pub base_price: i64,
#[prost(int64, tag="7")]
pub counter_price: i64,
#[prost(message, optional, tag="9")]
pub dispatched_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(string, optional, tag="10")]
pub detail: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, tag="11")]
pub base_qty: i64,
#[prost(int64, tag="12")]
pub counter_qty: i64,
#[prost(int64, tag="13")]
pub base_fill_price: i64,
#[prost(int64, tag="14")]
pub counter_fill_price: i64,
#[prost(int64, tag="15")]
pub trigger_to_base_submit_us: i64,
#[prost(int64, tag="16")]
pub trigger_to_counter_submit_us: i64,
#[prost(int64, optional, tag="17")]
pub exit_qty: ::core::option::Option<i64>,
#[prost(int64, optional, tag="18")]
pub exit_fill_price: ::core::option::Option<i64>,
#[prost(uint64, optional, tag="19")]
pub exit_order_id: ::core::option::Option<u64>,
#[prost(int64, tag="20")]
pub base_slippage: i64,
#[prost(int64, tag="21")]
pub counter_slippage: i64,
#[prost(uint32, optional, tag="22")]
pub cycle_id: ::core::option::Option<u32>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPairExecutionLogsRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
#[prost(int32, optional, tag="2")]
pub page_size: ::core::option::Option<i32>,
#[prost(string, optional, tag="3")]
pub page_token: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, tag="4")]
pub order_by: ::prost::alloc::string::String,
#[prost(enumeration="PairExecutionOutcome", tag="5")]
pub outcome: i32,
#[prost(string, tag="6")]
pub date: ::prost::alloc::string::String,
#[prost(string, tag="7")]
pub start_time: ::prost::alloc::string::String,
#[prost(string, tag="8")]
pub end_time: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPairExecutionLogsResponse {
#[prost(message, repeated, tag="1")]
pub execution_logs: ::prost::alloc::vec::Vec<PairExecutionLog>,
#[prost(string, tag="2")]
pub next_page_token: ::prost::alloc::string::String,
#[prost(int32, tag="3")]
pub total_count: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamPairStatusRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamPairConfigRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FillStatus {
#[prost(int64, tag="1")]
pub unfilled_quantity: i64,
#[prost(int64, tag="2")]
pub filled_quantity: i64,
#[prost(int64, tag="3")]
pub avg_fill_price: i64,
#[prost(int64, tag="4")]
pub submitted_quantity: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PairStatusUpdate {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub base: ::core::option::Option<FillStatus>,
#[prost(message, optional, tag="3")]
pub counter: ::core::option::Option<FillStatus>,
#[prost(message, optional, tag="4")]
pub updated_at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(message, optional, tag="5")]
pub exit: ::core::option::Option<FillStatus>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetPairStatisticsRequest {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PairStatistics {
#[prost(string, tag="1")]
pub pair: ::prost::alloc::string::String,
#[prost(int64, tag="2")]
pub total_submitted: i64,
#[prost(int64, tag="3")]
pub total_filled: i64,
#[prost(int64, tag="4")]
pub execution_count: i64,
#[prost(int64, tag="5")]
pub realized_pnl: i64,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PairSide {
Unspecified = 0,
Bid = 1,
Ask = 2,
}
impl PairSide {
pub fn as_str_name(&self) -> &'static str {
match self {
PairSide::Unspecified => "PAIR_SIDE_UNSPECIFIED",
PairSide::Bid => "PAIR_SIDE_BID",
PairSide::Ask => "PAIR_SIDE_ASK",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PAIR_SIDE_UNSPECIFIED" => Some(Self::Unspecified),
"PAIR_SIDE_BID" => Some(Self::Bid),
"PAIR_SIDE_ASK" => Some(Self::Ask),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PriceSource {
Unspecified = 0,
BestMake = 5,
BestTake = 6,
}
impl PriceSource {
pub fn as_str_name(&self) -> &'static str {
match self {
PriceSource::Unspecified => "PRICE_SOURCE_UNSPECIFIED",
PriceSource::BestMake => "PRICE_SOURCE_BEST_MAKE",
PriceSource::BestTake => "PRICE_SOURCE_BEST_TAKE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PRICE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
"PRICE_SOURCE_BEST_MAKE" => Some(Self::BestMake),
"PRICE_SOURCE_BEST_TAKE" => Some(Self::BestTake),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum SpreadDirection {
Unspecified = 0,
BaseHigh = 1,
CounterHigh = 2,
Both = 3,
}
impl SpreadDirection {
pub fn as_str_name(&self) -> &'static str {
match self {
SpreadDirection::Unspecified => "SPREAD_DIRECTION_UNSPECIFIED",
SpreadDirection::BaseHigh => "SPREAD_DIRECTION_BASE_HIGH",
SpreadDirection::CounterHigh => "SPREAD_DIRECTION_COUNTER_HIGH",
SpreadDirection::Both => "SPREAD_DIRECTION_BOTH",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SPREAD_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
"SPREAD_DIRECTION_BASE_HIGH" => Some(Self::BaseHigh),
"SPREAD_DIRECTION_COUNTER_HIGH" => Some(Self::CounterHigh),
"SPREAD_DIRECTION_BOTH" => Some(Self::Both),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PairOrderType {
Unspecified = 0,
Limit = 1,
Market = 2,
Aggressive = 3,
}
impl PairOrderType {
pub fn as_str_name(&self) -> &'static str {
match self {
PairOrderType::Unspecified => "PAIR_ORDER_TYPE_UNSPECIFIED",
PairOrderType::Limit => "PAIR_ORDER_TYPE_LIMIT",
PairOrderType::Market => "PAIR_ORDER_TYPE_MARKET",
PairOrderType::Aggressive => "PAIR_ORDER_TYPE_AGGRESSIVE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PAIR_ORDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"PAIR_ORDER_TYPE_LIMIT" => Some(Self::Limit),
"PAIR_ORDER_TYPE_MARKET" => Some(Self::Market),
"PAIR_ORDER_TYPE_AGGRESSIVE" => Some(Self::Aggressive),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PairStatus {
Unspecified = 0,
Active = 1,
Paused = 2,
Archived = 3,
}
impl PairStatus {
pub fn as_str_name(&self) -> &'static str {
match self {
PairStatus::Unspecified => "PAIR_STATUS_UNSPECIFIED",
PairStatus::Active => "PAIR_STATUS_ACTIVE",
PairStatus::Paused => "PAIR_STATUS_PAUSED",
PairStatus::Archived => "PAIR_STATUS_ARCHIVED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PAIR_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
"PAIR_STATUS_ACTIVE" => Some(Self::Active),
"PAIR_STATUS_PAUSED" => Some(Self::Paused),
"PAIR_STATUS_ARCHIVED" => Some(Self::Archived),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EtfNavKind {
Unspecified = 0,
IndexTrackingHedge = 1,
FutureBasis = 2,
LeverageFuture = 3,
PdfDecomposeHedge = 4,
}
impl EtfNavKind {
pub fn as_str_name(&self) -> &'static str {
match self {
EtfNavKind::Unspecified => "ETF_NAV_KIND_UNSPECIFIED",
EtfNavKind::IndexTrackingHedge => "ETF_NAV_KIND_INDEX_TRACKING_HEDGE",
EtfNavKind::FutureBasis => "ETF_NAV_KIND_FUTURE_BASIS",
EtfNavKind::LeverageFuture => "ETF_NAV_KIND_LEVERAGE_FUTURE",
EtfNavKind::PdfDecomposeHedge => "ETF_NAV_KIND_PDF_DECOMPOSE_HEDGE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ETF_NAV_KIND_UNSPECIFIED" => Some(Self::Unspecified),
"ETF_NAV_KIND_INDEX_TRACKING_HEDGE" => Some(Self::IndexTrackingHedge),
"ETF_NAV_KIND_FUTURE_BASIS" => Some(Self::FutureBasis),
"ETF_NAV_KIND_LEVERAGE_FUTURE" => Some(Self::LeverageFuture),
"ETF_NAV_KIND_PDF_DECOMPOSE_HEDGE" => Some(Self::PdfDecomposeHedge),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PairExecutionOutcome {
Unspecified = 0,
Submitted = 1,
SkippedPreValidation = 2,
SkippedCooldown = 3,
SkippedNoPrecomputed = 4,
PartialFailure = 5,
Failed = 6,
SkippedNoFilled = 7,
}
impl PairExecutionOutcome {
pub fn as_str_name(&self) -> &'static str {
match self {
PairExecutionOutcome::Unspecified => "PAIR_EXECUTION_OUTCOME_UNSPECIFIED",
PairExecutionOutcome::Submitted => "PAIR_EXECUTION_OUTCOME_SUBMITTED",
PairExecutionOutcome::SkippedPreValidation => "PAIR_EXECUTION_OUTCOME_SKIPPED_PRE_VALIDATION",
PairExecutionOutcome::SkippedCooldown => "PAIR_EXECUTION_OUTCOME_SKIPPED_COOLDOWN",
PairExecutionOutcome::SkippedNoPrecomputed => "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_PRECOMPUTED",
PairExecutionOutcome::PartialFailure => "PAIR_EXECUTION_OUTCOME_PARTIAL_FAILURE",
PairExecutionOutcome::Failed => "PAIR_EXECUTION_OUTCOME_FAILED",
PairExecutionOutcome::SkippedNoFilled => "PAIR_EXECUTION_OUTCOME_SKIPPED_NO_FILLED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PAIR_EXECUTION_OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
"PAIR_EXECUTION_OUTCOME_SUBMITTED" => Some(Self::Submitted),
"PAIR_EXECUTION_OUTCOME_SKIPPED_PRE_VALIDATION" => Some(Self::SkippedPreValidation),
"PAIR_EXECUTION_OUTCOME_SKIPPED_COOLDOWN" => Some(Self::SkippedCooldown),
"PAIR_EXECUTION_OUTCOME_SKIPPED_NO_PRECOMPUTED" => Some(Self::SkippedNoPrecomputed),
"PAIR_EXECUTION_OUTCOME_PARTIAL_FAILURE" => Some(Self::PartialFailure),
"PAIR_EXECUTION_OUTCOME_FAILED" => Some(Self::Failed),
"PAIR_EXECUTION_OUTCOME_SKIPPED_NO_FILLED" => Some(Self::SkippedNoFilled),
_ => None,
}
}
}
include!("kdo.v1.pair.tonic.rs");
include!("kdo.v1.pair.serde.rs");