#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TimeRange {
#[prost(message, optional, tag="1")]
pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(message, optional, tag="2")]
pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Pagination {
#[prost(int32, tag="1")]
pub limit: i32,
#[prost(int32, tag="2")]
pub offset: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PriceLevel {
#[prost(double, tag="1")]
pub price: f64,
#[prost(int64, tag="2")]
pub quantity: i64,
#[prost(int32, tag="3")]
pub count: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Orderbook {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(enumeration="SessionId", tag="3")]
pub session_id: i32,
#[prost(message, repeated, tag="4")]
pub bids: ::prost::alloc::vec::Vec<PriceLevel>,
#[prost(message, repeated, tag="5")]
pub asks: ::prost::alloc::vec::Vec<PriceLevel>,
#[prost(double, tag="6")]
pub mid_price: f64,
#[prost(double, tag="7")]
pub spread: f64,
#[prost(int64, tag="8")]
pub total_bid_quantity: i64,
#[prost(int64, tag="9")]
pub total_ask_quantity: i64,
#[prost(double, tag="10")]
pub estimated_price: f64,
#[prost(int64, tag="11")]
pub estimated_volume: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetOrderbooksRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub time_range: ::core::option::Option<TimeRange>,
#[prost(message, optional, tag="3")]
pub pagination: ::core::option::Option<Pagination>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetOrderbooksResponse {
#[prost(message, repeated, tag="1")]
pub orderbooks: ::prost::alloc::vec::Vec<Orderbook>,
#[prost(int32, tag="2")]
pub total_count: i32,
#[prost(bool, tag="3")]
pub has_more: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetLatestOrderbookRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetOrderbookSnapshotRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub at: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trade {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(double, tag="3")]
pub price: f64,
#[prost(int64, tag="4")]
pub quantity: i64,
#[prost(enumeration="Side", tag="5")]
pub side: i32,
#[prost(int64, tag="6")]
pub cumulative_volume: i64,
#[prost(double, tag="7")]
pub cumulative_value: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTradesRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub time_range: ::core::option::Option<TimeRange>,
#[prost(message, optional, tag="3")]
pub pagination: ::core::option::Option<Pagination>,
#[prost(enumeration="Side", tag="4")]
pub side_filter: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTradesResponse {
#[prost(message, repeated, tag="1")]
pub trades: ::prost::alloc::vec::Vec<Trade>,
#[prost(int32, tag="2")]
pub total_count: i32,
#[prost(bool, tag="3")]
pub has_more: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Candle {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(enumeration="Interval", tag="3")]
pub interval: i32,
#[prost(double, tag="4")]
pub open: f64,
#[prost(double, tag="5")]
pub high: f64,
#[prost(double, tag="6")]
pub low: f64,
#[prost(double, tag="7")]
pub close: f64,
#[prost(int64, tag="8")]
pub volume: i64,
#[prost(double, tag="9")]
pub value: f64,
#[prost(int32, tag="10")]
pub trade_count: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetCandlesRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(enumeration="Interval", tag="2")]
pub interval: i32,
#[prost(message, optional, tag="3")]
pub time_range: ::core::option::Option<TimeRange>,
#[prost(message, optional, tag="4")]
pub pagination: ::core::option::Option<Pagination>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetCandlesResponse {
#[prost(message, repeated, tag="1")]
pub candles: ::prost::alloc::vec::Vec<Candle>,
#[prost(int32, tag="2")]
pub total_count: i32,
#[prost(bool, tag="3")]
pub has_more: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SymbolInfo {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub name: ::prost::alloc::string::String,
#[prost(enumeration="MarketType", tag="3")]
pub market_type: i32,
#[prost(string, tag="4")]
pub underlying: ::prost::alloc::string::String,
#[prost(double, tag="5")]
pub tick_size: f64,
#[prost(int32, tag="6")]
pub lot_size: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ListSymbolsRequest {
#[prost(enumeration="MarketType", tag="1")]
pub market_type: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListSymbolsResponse {
#[prost(message, repeated, tag="1")]
pub symbols: ::prost::alloc::vec::Vec<SymbolInfo>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IndicatorParams {
#[prost(enumeration="IndicatorType", tag="1")]
pub r#type: i32,
#[prost(int32, repeated, tag="2")]
pub periods: ::prost::alloc::vec::Vec<i32>,
#[prost(double, tag="3")]
pub std_dev: f64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IndicatorValue {
#[prost(message, optional, tag="1")]
pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
#[prost(double, repeated, tag="2")]
pub values: ::prost::alloc::vec::Vec<f64>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetIndicatorRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(enumeration="Interval", tag="2")]
pub interval: i32,
#[prost(message, optional, tag="3")]
pub params: ::core::option::Option<IndicatorParams>,
#[prost(message, optional, tag="4")]
pub time_range: ::core::option::Option<TimeRange>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetIndicatorResponse {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub params: ::core::option::Option<IndicatorParams>,
#[prost(message, repeated, tag="3")]
pub values: ::prost::alloc::vec::Vec<IndicatorValue>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SubscribeRequest {
#[prost(string, repeated, tag="1")]
pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OrderbookUpdate {
#[prost(message, optional, tag="1")]
pub orderbook: ::core::option::Option<Orderbook>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TradeUpdate {
#[prost(message, optional, tag="1")]
pub trade: ::core::option::Option<Trade>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IngestFileRequest {
#[prost(string, tag="1")]
pub file_path: ::prost::alloc::string::String,
#[prost(bool, tag="2")]
pub skip_duplicates: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IngestFileResponse {
#[prost(int64, tag="1")]
pub total_lines: i64,
#[prost(int64, tag="2")]
pub parsed_count: i64,
#[prost(int64, tag="3")]
pub inserted_count: i64,
#[prost(int64, tag="4")]
pub skipped_count: i64,
#[prost(int64, tag="5")]
pub error_count: i64,
#[prost(string, repeated, tag="6")]
pub errors: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IngestDirectoryRequest {
#[prost(string, tag="1")]
pub directory_path: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub file_pattern: ::prost::alloc::string::String,
#[prost(bool, tag="3")]
pub skip_duplicates: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IngestDirectoryResponse {
#[prost(int32, tag="1")]
pub file_count: i32,
#[prost(message, repeated, tag="2")]
pub results: ::prost::alloc::vec::Vec<IngestFileResponse>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum SessionId {
SessionUnknown = 0,
SessionPrevious = 1,
SessionOpeningAuction = 2,
SessionContinuous = 3,
SessionClosingAuction = 4,
SessionAfterHours = 5,
SessionViAuction = 6,
SessionClosed = 7,
}
impl SessionId {
pub fn as_str_name(&self) -> &'static str {
match self {
SessionId::SessionUnknown => "SESSION_UNKNOWN",
SessionId::SessionPrevious => "SESSION_PREVIOUS",
SessionId::SessionOpeningAuction => "SESSION_OPENING_AUCTION",
SessionId::SessionContinuous => "SESSION_CONTINUOUS",
SessionId::SessionClosingAuction => "SESSION_CLOSING_AUCTION",
SessionId::SessionAfterHours => "SESSION_AFTER_HOURS",
SessionId::SessionViAuction => "SESSION_VI_AUCTION",
SessionId::SessionClosed => "SESSION_CLOSED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SESSION_UNKNOWN" => Some(Self::SessionUnknown),
"SESSION_PREVIOUS" => Some(Self::SessionPrevious),
"SESSION_OPENING_AUCTION" => Some(Self::SessionOpeningAuction),
"SESSION_CONTINUOUS" => Some(Self::SessionContinuous),
"SESSION_CLOSING_AUCTION" => Some(Self::SessionClosingAuction),
"SESSION_AFTER_HOURS" => Some(Self::SessionAfterHours),
"SESSION_VI_AUCTION" => Some(Self::SessionViAuction),
"SESSION_CLOSED" => Some(Self::SessionClosed),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Side {
Unknown = 0,
Bid = 1,
Ask = 2,
}
impl Side {
pub fn as_str_name(&self) -> &'static str {
match self {
Side::Unknown => "SIDE_UNKNOWN",
Side::Bid => "SIDE_BID",
Side::Ask => "SIDE_ASK",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SIDE_UNKNOWN" => Some(Self::Unknown),
"SIDE_BID" => Some(Self::Bid),
"SIDE_ASK" => Some(Self::Ask),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Interval {
Unknown = 0,
Interval1s = 1,
Interval5s = 2,
Interval10s = 3,
Interval30s = 4,
Interval1m = 5,
Interval5m = 6,
Interval15m = 7,
Interval30m = 8,
Interval1h = 9,
Interval4h = 10,
Interval1d = 11,
}
impl Interval {
pub fn as_str_name(&self) -> &'static str {
match self {
Interval::Unknown => "INTERVAL_UNKNOWN",
Interval::Interval1s => "INTERVAL_1S",
Interval::Interval5s => "INTERVAL_5S",
Interval::Interval10s => "INTERVAL_10S",
Interval::Interval30s => "INTERVAL_30S",
Interval::Interval1m => "INTERVAL_1M",
Interval::Interval5m => "INTERVAL_5M",
Interval::Interval15m => "INTERVAL_15M",
Interval::Interval30m => "INTERVAL_30M",
Interval::Interval1h => "INTERVAL_1H",
Interval::Interval4h => "INTERVAL_4H",
Interval::Interval1d => "INTERVAL_1D",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"INTERVAL_UNKNOWN" => Some(Self::Unknown),
"INTERVAL_1S" => Some(Self::Interval1s),
"INTERVAL_5S" => Some(Self::Interval5s),
"INTERVAL_10S" => Some(Self::Interval10s),
"INTERVAL_30S" => Some(Self::Interval30s),
"INTERVAL_1M" => Some(Self::Interval1m),
"INTERVAL_5M" => Some(Self::Interval5m),
"INTERVAL_15M" => Some(Self::Interval15m),
"INTERVAL_30M" => Some(Self::Interval30m),
"INTERVAL_1H" => Some(Self::Interval1h),
"INTERVAL_4H" => Some(Self::Interval4h),
"INTERVAL_1D" => Some(Self::Interval1d),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MarketType {
MarketUnknown = 0,
MarketKospi = 1,
MarketKosdaq = 2,
MarketEtf = 3,
MarketFutures = 4,
MarketOptions = 5,
}
impl MarketType {
pub fn as_str_name(&self) -> &'static str {
match self {
MarketType::MarketUnknown => "MARKET_UNKNOWN",
MarketType::MarketKospi => "MARKET_KOSPI",
MarketType::MarketKosdaq => "MARKET_KOSDAQ",
MarketType::MarketEtf => "MARKET_ETF",
MarketType::MarketFutures => "MARKET_FUTURES",
MarketType::MarketOptions => "MARKET_OPTIONS",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MARKET_UNKNOWN" => Some(Self::MarketUnknown),
"MARKET_KOSPI" => Some(Self::MarketKospi),
"MARKET_KOSDAQ" => Some(Self::MarketKosdaq),
"MARKET_ETF" => Some(Self::MarketEtf),
"MARKET_FUTURES" => Some(Self::MarketFutures),
"MARKET_OPTIONS" => Some(Self::MarketOptions),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum IndicatorType {
IndicatorUnknown = 0,
IndicatorSma = 1,
IndicatorEma = 2,
IndicatorMacd = 3,
IndicatorRsi = 4,
IndicatorBollinger = 5,
IndicatorVwap = 6,
IndicatorAtr = 7,
}
impl IndicatorType {
pub fn as_str_name(&self) -> &'static str {
match self {
IndicatorType::IndicatorUnknown => "INDICATOR_UNKNOWN",
IndicatorType::IndicatorSma => "INDICATOR_SMA",
IndicatorType::IndicatorEma => "INDICATOR_EMA",
IndicatorType::IndicatorMacd => "INDICATOR_MACD",
IndicatorType::IndicatorRsi => "INDICATOR_RSI",
IndicatorType::IndicatorBollinger => "INDICATOR_BOLLINGER",
IndicatorType::IndicatorVwap => "INDICATOR_VWAP",
IndicatorType::IndicatorAtr => "INDICATOR_ATR",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"INDICATOR_UNKNOWN" => Some(Self::IndicatorUnknown),
"INDICATOR_SMA" => Some(Self::IndicatorSma),
"INDICATOR_EMA" => Some(Self::IndicatorEma),
"INDICATOR_MACD" => Some(Self::IndicatorMacd),
"INDICATOR_RSI" => Some(Self::IndicatorRsi),
"INDICATOR_BOLLINGER" => Some(Self::IndicatorBollinger),
"INDICATOR_VWAP" => Some(Self::IndicatorVwap),
"INDICATOR_ATR" => Some(Self::IndicatorAtr),
_ => None,
}
}
}
include!("market.v1.archive.tonic.rs");
include!("market.v1.archive.serde.rs");