#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Instrument {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub interval: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub from: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub to: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Instruments {
#[prost(message, repeated, tag = "1")]
pub instruments: ::prost::alloc::vec::Vec<Instrument>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuoteTick {
#[prost(string, tag = "1")]
pub symbol: ::prost::alloc::string::String,
#[prost(double, tag = "2")]
pub price: f64,
#[prost(double, optional, tag = "3")]
pub change: ::core::option::Option<f64>,
#[prost(bool, tag = "4")]
pub regular: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InstrumentSearch {
#[prost(string, tag = "1")]
pub query: ::prost::alloc::string::String,
#[prost(string, optional, tag = "2")]
pub source: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FetchRequest {
#[prost(string, tag = "1")]
pub instrument: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub interval: ::prost::alloc::string::String,
#[prost(uint32, optional, tag = "3")]
pub days: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub source: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CompareRequest {
#[prost(string, tag = "1")]
pub instrument: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub interval: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub first: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub second: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub days: ::core::option::Option<u32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DataFindingView {
#[prost(string, tag = "1")]
pub severity: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub kind: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub at: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, tag = "4")]
pub detail: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataLibraryView {
#[prost(string, tag = "1")]
pub directory: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "2")]
pub instruments: ::prost::alloc::vec::Vec<InstrumentView>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FetchView {
#[prost(string, tag = "1")]
pub instrument: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub source: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub interval: ::prost::alloc::string::String,
#[prost(uint32, tag = "4")]
pub bars: u32,
#[prost(uint32, tag = "5")]
pub interpolated: u32,
#[prost(string, optional, tag = "6")]
pub from: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub to: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "8")]
pub data_findings: ::prost::alloc::vec::Vec<DataFindingView>,
#[prost(string, optional, tag = "9")]
pub revision: ::core::option::Option<::prost::alloc::string::String>,
#[prost(bool, tag = "10")]
pub revised: bool,
#[prost(uint32, optional, tag = "11")]
pub dividends: ::core::option::Option<u32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InstrumentView {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, optional, tag = "2")]
pub from: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub to: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, tag = "4")]
pub bars: u32,
#[prost(string, optional, tag = "5")]
pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MatchView {
#[prost(string, tag = "1")]
pub instrument: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub name: ::prost::alloc::string::String,
#[prost(double, optional, tag = "4")]
pub price: ::core::option::Option<f64>,
#[prost(double, optional, tag = "5")]
pub change: ::core::option::Option<f64>,
#[prost(bool, tag = "6")]
pub held: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuoteView {
#[prost(string, tag = "1")]
pub instrument: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub symbol: ::prost::alloc::string::String,
#[prost(double, optional, tag = "3")]
pub price: ::core::option::Option<f64>,
#[prost(double, optional, tag = "4")]
pub change: ::core::option::Option<f64>,
#[prost(bool, tag = "5")]
pub held: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SourceComparisonView {
#[prost(string, tag = "1")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub interval: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub first: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub second: ::prost::alloc::string::String,
#[prost(uint32, tag = "5")]
pub first_bars: u32,
#[prost(uint32, tag = "6")]
pub second_bars: u32,
#[prost(uint32, tag = "7")]
pub shared: u32,
#[prost(uint32, tag = "8")]
pub only_first: u32,
#[prost(uint32, tag = "9")]
pub only_second: u32,
#[prost(string, tag = "10")]
pub summary: ::prost::alloc::string::String,
#[prost(bool, tag = "11")]
pub diverged: bool,
#[prost(string, optional, tag = "12")]
pub basis_mismatch: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SourceView {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub label: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub venue: ::prost::alloc::string::String,
#[prost(bool, tag = "4")]
pub connected: bool,
#[prost(bool, tag = "5")]
pub needs_sign_in: bool,
#[prost(bool, tag = "6")]
pub needs_keys: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SourcesView {
#[prost(message, repeated, tag = "1")]
pub sources: ::prost::alloc::vec::Vec<SourceView>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MatchesView {
#[prost(message, repeated, tag = "1")]
pub matches: ::prost::alloc::vec::Vec<MatchView>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WatchlistView {
#[prost(message, repeated, tag = "1")]
pub rows: ::prost::alloc::vec::Vec<QuoteView>,
}