1#[allow(clippy::derive_partial_eq_without_eq)]
9#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10pub struct ViArbitrageStatus {
11 #[prost(bool, tag="1")]
13 pub enabled: bool,
14 #[prost(int64, tag="2")]
16 pub basis_threshold_bp: i64,
17 #[prost(int32, tag="3")]
19 pub vi_stock_count: i32,
20 #[prost(int32, tag="4")]
22 pub trigger_count_today: i32,
23 #[prost(message, optional, tag="5")]
25 pub start_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
26}
27#[allow(clippy::derive_partial_eq_without_eq)]
33#[derive(Clone, PartialEq, ::prost::Message)]
34pub struct ViStock {
35 #[prost(string, tag="1")]
37 pub symbol: ::prost::alloc::string::String,
38 #[prost(string, tag="2")]
40 pub vi_session: ::prost::alloc::string::String,
41 #[prost(message, optional, tag="3")]
43 pub vi_start_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
44 #[prost(int64, tag="4")]
46 pub krx_estimated_price: i64,
47 #[prost(string, tag="5")]
49 pub futures_symbol: ::prost::alloc::string::String,
50 #[prost(int64, optional, tag="6")]
52 pub nxt_price: ::core::option::Option<i64>,
53 #[prost(int64, optional, tag="7")]
55 pub futures_price: ::core::option::Option<i64>,
56 #[prost(int64, optional, tag="8")]
58 pub current_basis_bp: ::core::option::Option<i64>,
59 #[prost(int64, tag="9")]
61 pub elapsed_ms: i64,
62}
63#[allow(clippy::derive_partial_eq_without_eq)]
69#[derive(Clone, PartialEq, ::prost::Message)]
70pub struct TriggerRecord {
71 #[prost(int64, tag="1")]
73 pub id: i64,
74 #[prost(string, tag="2")]
76 pub symbol: ::prost::alloc::string::String,
77 #[prost(string, tag="3")]
79 pub futures_symbol: ::prost::alloc::string::String,
80 #[prost(int64, tag="4")]
82 pub nxt_price: i64,
83 #[prost(int64, tag="5")]
85 pub futures_price: i64,
86 #[prost(int64, tag="6")]
88 pub basis_bp: i64,
89 #[prost(enumeration="TriggerDirection", tag="7")]
91 pub direction: i32,
92 #[prost(message, optional, tag="8")]
94 pub trigger_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
95 #[prost(enumeration="TriggerResult", tag="9")]
97 pub result: i32,
98 #[prost(string, tag="10")]
100 pub error_message: ::prost::alloc::string::String,
101}
102#[allow(clippy::derive_partial_eq_without_eq)]
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct ViEvent {
110 #[prost(message, optional, tag="1")]
112 pub event_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
113 #[prost(oneof="vi_event::Event", tags="2, 3, 4, 5")]
115 pub event: ::core::option::Option<vi_event::Event>,
116}
117pub mod vi_event {
119 #[allow(clippy::derive_partial_eq_without_eq)]
121#[derive(Clone, PartialEq, ::prost::Oneof)]
122 pub enum Event {
123 #[prost(message, tag="2")]
125 ViEntered(super::ViEnteredEvent),
126 #[prost(message, tag="3")]
128 ViExited(super::ViExitedEvent),
129 #[prost(message, tag="4")]
131 Triggered(super::TriggeredEvent),
132 #[prost(message, tag="5")]
134 BasisWarning(super::BasisWarningEvent),
135 }
136}
137#[allow(clippy::derive_partial_eq_without_eq)]
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct ViEnteredEvent {
141 #[prost(string, tag="1")]
143 pub symbol: ::prost::alloc::string::String,
144 #[prost(string, tag="2")]
146 pub vi_session: ::prost::alloc::string::String,
147 #[prost(int64, tag="3")]
149 pub krx_last_price: i64,
150 #[prost(string, tag="4")]
152 pub futures_symbol: ::prost::alloc::string::String,
153}
154#[allow(clippy::derive_partial_eq_without_eq)]
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct ViExitedEvent {
158 #[prost(string, tag="1")]
160 pub symbol: ::prost::alloc::string::String,
161 #[prost(int64, tag="2")]
163 pub duration_ms: i64,
164}
165#[allow(clippy::derive_partial_eq_without_eq)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct TriggeredEvent {
169 #[prost(message, optional, tag="1")]
171 pub trigger: ::core::option::Option<TriggerRecord>,
172}
173#[allow(clippy::derive_partial_eq_without_eq)]
175#[derive(Clone, PartialEq, ::prost::Message)]
176pub struct BasisWarningEvent {
177 #[prost(string, tag="1")]
179 pub symbol: ::prost::alloc::string::String,
180 #[prost(int64, tag="2")]
182 pub current_basis_bp: i64,
183 #[prost(int64, tag="3")]
185 pub threshold_bp: i64,
186 #[prost(double, tag="4")]
188 pub threshold_ratio: f64,
189}
190#[allow(clippy::derive_partial_eq_without_eq)]
192#[derive(Clone, PartialEq, ::prost::Message)]
193pub struct BasisUpdate {
194 #[prost(message, optional, tag="1")]
196 pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
197 #[prost(string, tag="2")]
199 pub symbol: ::prost::alloc::string::String,
200 #[prost(int64, tag="3")]
202 pub nxt_price: i64,
203 #[prost(int64, tag="4")]
205 pub futures_price: i64,
206 #[prost(int64, tag="5")]
208 pub basis_bp: i64,
209 #[prost(double, tag="6")]
211 pub threshold_ratio: f64,
212}
213#[allow(clippy::derive_partial_eq_without_eq)]
218#[derive(Clone, Copy, PartialEq, ::prost::Message)]
219pub struct GetStatusRequest {
220}
221#[allow(clippy::derive_partial_eq_without_eq)]
222#[derive(Clone, PartialEq, ::prost::Message)]
223pub struct ListViStocksRequest {
224 #[prost(int32, optional, tag="1")]
226 pub page_size: ::core::option::Option<i32>,
227 #[prost(string, optional, tag="2")]
229 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
230}
231#[allow(clippy::derive_partial_eq_without_eq)]
232#[derive(Clone, PartialEq, ::prost::Message)]
233pub struct ListViStocksResponse {
234 #[prost(message, repeated, tag="1")]
236 pub vi_stocks: ::prost::alloc::vec::Vec<ViStock>,
237 #[prost(string, tag="2")]
239 pub next_page_token: ::prost::alloc::string::String,
240}
241#[allow(clippy::derive_partial_eq_without_eq)]
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct ListTriggerHistoryRequest {
244 #[prost(int32, optional, tag="1")]
246 pub page_size: ::core::option::Option<i32>,
247 #[prost(string, optional, tag="2")]
249 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
250 #[prost(message, optional, tag="3")]
252 pub start_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
253 #[prost(message, optional, tag="4")]
255 pub end_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
256 #[prost(string, optional, tag="5")]
258 pub symbol: ::core::option::Option<::prost::alloc::string::String>,
259}
260#[allow(clippy::derive_partial_eq_without_eq)]
261#[derive(Clone, PartialEq, ::prost::Message)]
262pub struct ListTriggerHistoryResponse {
263 #[prost(message, repeated, tag="1")]
265 pub triggers: ::prost::alloc::vec::Vec<TriggerRecord>,
266 #[prost(string, tag="2")]
268 pub next_page_token: ::prost::alloc::string::String,
269 #[prost(int32, tag="3")]
271 pub total_count: i32,
272}
273#[allow(clippy::derive_partial_eq_without_eq)]
274#[derive(Clone, PartialEq, ::prost::Message)]
275pub struct StreamViEventsRequest {
276 #[prost(string, repeated, tag="1")]
278 pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
279 #[prost(bool, optional, tag="2")]
281 pub include_basis_warning: ::core::option::Option<bool>,
282}
283#[allow(clippy::derive_partial_eq_without_eq)]
284#[derive(Clone, PartialEq, ::prost::Message)]
285pub struct StreamBasisRequest {
286 #[prost(string, repeated, tag="1")]
288 pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
289 #[prost(int32, optional, tag="2")]
291 pub min_interval_ms: ::core::option::Option<i32>,
292}
293#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
295#[repr(i32)]
296pub enum TriggerDirection {
297 Unspecified = 0,
298 Long = 1,
300 Short = 2,
302}
303impl TriggerDirection {
304 pub fn as_str_name(&self) -> &'static str {
309 match self {
310 TriggerDirection::Unspecified => "TRIGGER_DIRECTION_UNSPECIFIED",
311 TriggerDirection::Long => "TRIGGER_DIRECTION_LONG",
312 TriggerDirection::Short => "TRIGGER_DIRECTION_SHORT",
313 }
314 }
315 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
317 match value {
318 "TRIGGER_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
319 "TRIGGER_DIRECTION_LONG" => Some(Self::Long),
320 "TRIGGER_DIRECTION_SHORT" => Some(Self::Short),
321 _ => None,
322 }
323 }
324}
325#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
327#[repr(i32)]
328pub enum TriggerResult {
329 Unspecified = 0,
330 Success = 1,
332 Failed = 2,
334 Skipped = 3,
336}
337impl TriggerResult {
338 pub fn as_str_name(&self) -> &'static str {
343 match self {
344 TriggerResult::Unspecified => "TRIGGER_RESULT_UNSPECIFIED",
345 TriggerResult::Success => "TRIGGER_RESULT_SUCCESS",
346 TriggerResult::Failed => "TRIGGER_RESULT_FAILED",
347 TriggerResult::Skipped => "TRIGGER_RESULT_SKIPPED",
348 }
349 }
350 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
352 match value {
353 "TRIGGER_RESULT_UNSPECIFIED" => Some(Self::Unspecified),
354 "TRIGGER_RESULT_SUCCESS" => Some(Self::Success),
355 "TRIGGER_RESULT_FAILED" => Some(Self::Failed),
356 "TRIGGER_RESULT_SKIPPED" => Some(Self::Skipped),
357 _ => None,
358 }
359 }
360}
361include!("kdo.v1.vi_arbitrage.tonic.rs");
362include!("kdo.v1.vi_arbitrage.serde.rs");
363