#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Group {
    #[prost(message, optional, tag = "1")]
    pub field: ::core::option::Option<FieldGroup>,
    #[prost(message, optional, tag = "2")]
    pub value: ::core::option::Option<f64>,
    #[prost(message, repeated, tag = "3")]
    pub groups: ::prost::alloc::vec::Vec<Group>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiGroup {
    #[prost(message, repeated, tag = "1")]
    pub fields: ::prost::alloc::vec::Vec<FieldGroup>,
    #[prost(message, repeated, tag = "2")]
    pub values: ::prost::alloc::vec::Vec<f64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FieldGroup {
    #[prost(message, optional, tag = "1")]
    pub name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "2")]
    pub value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GroupLimit {
    #[prost(message, repeated, tag = "1")]
    pub group_by_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "2")]
    pub limit: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "3")]
    pub min_percentage: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GroupedSeries {
    #[prost(message, repeated, tag = "2")]
    pub groups: ::prost::alloc::vec::Vec<Group>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Pagination {
    #[prost(message, optional, tag = "1")]
    pub offset: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "2")]
    pub limit: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataprimeQuery {
    #[prost(string, tag = "1")]
    pub text: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SerializedDataprimeQuery {
    #[prost(bytes = "vec", tag = "1")]
    pub data: ::prost::alloc::vec::Vec<u8>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FullDataprimeQuery {
    #[prost(message, optional, tag = "1")]
    pub serialized: ::core::option::Option<SerializedDataprimeQuery>,
    #[prost(message, optional, tag = "2")]
    pub raw: ::core::option::Option<DataprimeQuery>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PromQlQuery {
    #[prost(message, optional, tag = "1")]
    pub value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LuceneQuery {
    #[prost(message, optional, tag = "1")]
    pub value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TimeFrameSelect {
    #[prost(oneof = "time_frame_select::Value", tags = "1, 2")]
    pub value: ::core::option::Option<time_frame_select::Value>,
}
pub mod time_frame_select {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(message, tag = "1")]
        AbsoluteTimeFrame(super::TimeFrame),
        #[prost(message, tag = "2")]
        RelativeTimeFrame(::prost_wkt_types::Duration),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TimeFrame {
    #[prost(message, optional, tag = "1")]
    pub from: ::core::option::Option<::prost_wkt_types::Timestamp>,
    #[prost(message, optional, tag = "2")]
    pub to: ::core::option::Option<::prost_wkt_types::Timestamp>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TimeSeries {
    #[prost(message, optional, tag = "1")]
    pub name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "2")]
    pub values: ::prost::alloc::vec::Vec<DataPoint>,
    #[prost(map = "string, string", tag = "3")]
    pub labels: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DataPoint {
    #[prost(message, optional, tag = "1")]
    pub timestamp: ::core::option::Option<::prost_wkt_types::Timestamp>,
    #[prost(message, optional, tag = "2")]
    pub value: ::core::option::Option<f64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DashboardFolder {
    #[prost(message, optional, tag = "1")]
    pub id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "2")]
    pub name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "3")]
    pub parent_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ObservationField {
    #[prost(message, repeated, tag = "1")]
    pub keypath: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(enumeration = "DatasetScope", tag = "2")]
    pub scope: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum DatasetScope {
    Unspecified = 0,
    UserData = 1,
    Label = 2,
    Metadata = 3,
}
impl DatasetScope {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "DATASET_SCOPE_UNSPECIFIED",
            Self::UserData => "DATASET_SCOPE_USER_DATA",
            Self::Label => "DATASET_SCOPE_LABEL",
            Self::Metadata => "DATASET_SCOPE_METADATA",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "DATASET_SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
            "DATASET_SCOPE_USER_DATA" => Some(Self::UserData),
            "DATASET_SCOPE_LABEL" => Some(Self::Label),
            "DATASET_SCOPE_METADATA" => Some(Self::Metadata),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SpanField {
    #[prost(oneof = "span_field::Value", tags = "1, 2, 3")]
    pub value: ::core::option::Option<span_field::Value>,
}
pub mod span_field {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum MetadataField {
        Unspecified = 0,
        ApplicationName = 1,
        SubsystemName = 2,
        ServiceName = 3,
        OperationName = 4,
    }
    impl MetadataField {
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Unspecified => "METADATA_FIELD_UNSPECIFIED",
                Self::ApplicationName => "METADATA_FIELD_APPLICATION_NAME",
                Self::SubsystemName => "METADATA_FIELD_SUBSYSTEM_NAME",
                Self::ServiceName => "METADATA_FIELD_SERVICE_NAME",
                Self::OperationName => "METADATA_FIELD_OPERATION_NAME",
            }
        }
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "METADATA_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
                "METADATA_FIELD_APPLICATION_NAME" => Some(Self::ApplicationName),
                "METADATA_FIELD_SUBSYSTEM_NAME" => Some(Self::SubsystemName),
                "METADATA_FIELD_SERVICE_NAME" => Some(Self::ServiceName),
                "METADATA_FIELD_OPERATION_NAME" => Some(Self::OperationName),
                _ => None,
            }
        }
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(enumeration = "MetadataField", tag = "1")]
        MetadataField(i32),
        #[prost(message, tag = "2")]
        TagField(::prost::alloc::string::String),
        #[prost(message, tag = "3")]
        ProcessTagField(::prost::alloc::string::String),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogsAggregation {
    #[prost(oneof = "logs_aggregation::Value", tags = "1, 2, 3, 4, 5, 6, 7")]
    pub value: ::core::option::Option<logs_aggregation::Value>,
}
pub mod logs_aggregation {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct Count {}
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct CountDistinct {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Sum {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Average {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Min {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Max {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Percentile {
        #[prost(message, optional, tag = "1")]
        pub field: ::core::option::Option<::prost::alloc::string::String>,
        #[prost(message, optional, tag = "2")]
        pub percent: ::core::option::Option<f64>,
        #[prost(message, optional, tag = "3")]
        pub observation_field: ::core::option::Option<super::ObservationField>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(message, tag = "1")]
        Count(Count),
        #[prost(message, tag = "2")]
        CountDistinct(CountDistinct),
        #[prost(message, tag = "3")]
        Sum(Sum),
        #[prost(message, tag = "4")]
        Average(Average),
        #[prost(message, tag = "5")]
        Min(Min),
        #[prost(message, tag = "6")]
        Max(Max),
        #[prost(message, tag = "7")]
        Percentile(Percentile),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SpansAggregation {
    #[prost(oneof = "spans_aggregation::Aggregation", tags = "1, 2")]
    pub aggregation: ::core::option::Option<spans_aggregation::Aggregation>,
}
pub mod spans_aggregation {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct MetricAggregation {
        #[prost(enumeration = "metric_aggregation::MetricField", tag = "1")]
        pub metric_field: i32,
        #[prost(enumeration = "metric_aggregation::MetricAggregationType", tag = "2")]
        pub aggregation_type: i32,
    }
    pub mod metric_aggregation {
        #[derive(serde::Serialize, serde::Deserialize)]
        #[serde(rename_all = "snake_case")]
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum MetricField {
            Unspecified = 0,
            Duration = 1,
        }
        impl MetricField {
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "METRIC_FIELD_UNSPECIFIED",
                    Self::Duration => "METRIC_FIELD_DURATION",
                }
            }
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "METRIC_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
                    "METRIC_FIELD_DURATION" => Some(Self::Duration),
                    _ => None,
                }
            }
        }
        #[derive(serde::Serialize, serde::Deserialize)]
        #[serde(rename_all = "snake_case")]
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum MetricAggregationType {
            Unspecified = 0,
            Min = 1,
            Max = 2,
            Average = 3,
            Sum = 4,
            Percentile99 = 5,
            Percentile95 = 6,
            Percentile50 = 7,
        }
        impl MetricAggregationType {
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "METRIC_AGGREGATION_TYPE_UNSPECIFIED",
                    Self::Min => "METRIC_AGGREGATION_TYPE_MIN",
                    Self::Max => "METRIC_AGGREGATION_TYPE_MAX",
                    Self::Average => "METRIC_AGGREGATION_TYPE_AVERAGE",
                    Self::Sum => "METRIC_AGGREGATION_TYPE_SUM",
                    Self::Percentile99 => "METRIC_AGGREGATION_TYPE_PERCENTILE_99",
                    Self::Percentile95 => "METRIC_AGGREGATION_TYPE_PERCENTILE_95",
                    Self::Percentile50 => "METRIC_AGGREGATION_TYPE_PERCENTILE_50",
                }
            }
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "METRIC_AGGREGATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
                    "METRIC_AGGREGATION_TYPE_MIN" => Some(Self::Min),
                    "METRIC_AGGREGATION_TYPE_MAX" => Some(Self::Max),
                    "METRIC_AGGREGATION_TYPE_AVERAGE" => Some(Self::Average),
                    "METRIC_AGGREGATION_TYPE_SUM" => Some(Self::Sum),
                    "METRIC_AGGREGATION_TYPE_PERCENTILE_99" => Some(Self::Percentile99),
                    "METRIC_AGGREGATION_TYPE_PERCENTILE_95" => Some(Self::Percentile95),
                    "METRIC_AGGREGATION_TYPE_PERCENTILE_50" => Some(Self::Percentile50),
                    _ => None,
                }
            }
        }
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct DimensionAggregation {
        #[prost(enumeration = "dimension_aggregation::DimensionField", tag = "1")]
        pub dimension_field: i32,
        #[prost(
            enumeration = "dimension_aggregation::DimensionAggregationType",
            tag = "2"
        )]
        pub aggregation_type: i32,
    }
    pub mod dimension_aggregation {
        #[derive(serde::Serialize, serde::Deserialize)]
        #[serde(rename_all = "snake_case")]
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum DimensionField {
            Unspecified = 0,
            TraceId = 1,
        }
        impl DimensionField {
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "DIMENSION_FIELD_UNSPECIFIED",
                    Self::TraceId => "DIMENSION_FIELD_TRACE_ID",
                }
            }
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "DIMENSION_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
                    "DIMENSION_FIELD_TRACE_ID" => Some(Self::TraceId),
                    _ => None,
                }
            }
        }
        #[derive(serde::Serialize, serde::Deserialize)]
        #[serde(rename_all = "snake_case")]
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        pub enum DimensionAggregationType {
            Unspecified = 0,
            UniqueCount = 1,
            ErrorCount = 2,
        }
        impl DimensionAggregationType {
            pub fn as_str_name(&self) -> &'static str {
                match self {
                    Self::Unspecified => "DIMENSION_AGGREGATION_TYPE_UNSPECIFIED",
                    Self::UniqueCount => "DIMENSION_AGGREGATION_TYPE_UNIQUE_COUNT",
                    Self::ErrorCount => "DIMENSION_AGGREGATION_TYPE_ERROR_COUNT",
                }
            }
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "DIMENSION_AGGREGATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
                    "DIMENSION_AGGREGATION_TYPE_UNIQUE_COUNT" => Some(Self::UniqueCount),
                    "DIMENSION_AGGREGATION_TYPE_ERROR_COUNT" => Some(Self::ErrorCount),
                    _ => None,
                }
            }
        }
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
    pub enum Aggregation {
        #[prost(message, tag = "1")]
        MetricAggregation(MetricAggregation),
        #[prost(message, tag = "2")]
        DimensionAggregation(DimensionAggregation),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OrderDirection {
    Unspecified = 0,
    Asc = 1,
    Desc = 2,
}
impl OrderDirection {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "ORDER_DIRECTION_UNSPECIFIED",
            Self::Asc => "ORDER_DIRECTION_ASC",
            Self::Desc => "ORDER_DIRECTION_DESC",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ORDER_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
            "ORDER_DIRECTION_ASC" => Some(Self::Asc),
            "ORDER_DIRECTION_DESC" => Some(Self::Desc),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OrderingField {
    #[prost(message, optional, tag = "1")]
    pub field: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(enumeration = "OrderDirection", tag = "2")]
    pub order_direction: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataprimeResult {
    #[prost(message, repeated, tag = "1")]
    pub metadata: ::prost::alloc::vec::Vec<dataprime_result::KeyValue>,
    #[prost(message, repeated, tag = "2")]
    pub labels: ::prost::alloc::vec::Vec<dataprime_result::KeyValue>,
    #[prost(string, tag = "3")]
    pub user_data: ::prost::alloc::string::String,
}
pub mod dataprime_result {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct KeyValue {
        #[prost(string, tag = "1")]
        pub key: ::prost::alloc::string::String,
        #[prost(string, tag = "2")]
        pub value: ::prost::alloc::string::String,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnnotationEvent {
    #[prost(oneof = "annotation_event::Value", tags = "1, 2")]
    pub value: ::core::option::Option<annotation_event::Value>,
}
pub mod annotation_event {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Instant {
        #[prost(message, optional, tag = "1")]
        pub timestamp: ::core::option::Option<::prost_wkt_types::Timestamp>,
        #[prost(map = "string, string", tag = "2")]
        pub labels: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            ::prost::alloc::string::String,
        >,
        #[prost(message, optional, tag = "3")]
        pub payload: ::core::option::Option<::prost_wkt_types::Struct>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct Range {
        #[prost(message, optional, tag = "1")]
        pub start: ::core::option::Option<::prost_wkt_types::Timestamp>,
        #[prost(message, optional, tag = "2")]
        pub end: ::core::option::Option<::prost_wkt_types::Timestamp>,
        #[prost(map = "string, string", tag = "3")]
        pub labels: ::std::collections::HashMap<
            ::prost::alloc::string::String,
            ::prost::alloc::string::String,
        >,
        #[prost(message, optional, tag = "4")]
        pub payload: ::core::option::Option<::prost_wkt_types::Struct>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(message, tag = "1")]
        Instant(Instant),
        #[prost(message, tag = "2")]
        Range(Range),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum LogSeverityLevel {
    Unspecified = 0,
    Debug = 1,
    Verbose = 2,
    Info = 3,
    Warning = 4,
    Error = 5,
    Critical = 6,
}
impl LogSeverityLevel {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "LOG_SEVERITY_LEVEL_UNSPECIFIED",
            Self::Debug => "LOG_SEVERITY_LEVEL_DEBUG",
            Self::Verbose => "LOG_SEVERITY_LEVEL_VERBOSE",
            Self::Info => "LOG_SEVERITY_LEVEL_INFO",
            Self::Warning => "LOG_SEVERITY_LEVEL_WARNING",
            Self::Error => "LOG_SEVERITY_LEVEL_ERROR",
            Self::Critical => "LOG_SEVERITY_LEVEL_CRITICAL",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "LOG_SEVERITY_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
            "LOG_SEVERITY_LEVEL_DEBUG" => Some(Self::Debug),
            "LOG_SEVERITY_LEVEL_VERBOSE" => Some(Self::Verbose),
            "LOG_SEVERITY_LEVEL_INFO" => Some(Self::Info),
            "LOG_SEVERITY_LEVEL_WARNING" => Some(Self::Warning),
            "LOG_SEVERITY_LEVEL_ERROR" => Some(Self::Error),
            "LOG_SEVERITY_LEVEL_CRITICAL" => Some(Self::Critical),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LabelledValue {
    #[prost(message, optional, tag = "1")]
    pub name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(map = "string, string", tag = "2")]
    pub labels: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        ::prost::alloc::string::String,
    >,
    #[prost(message, optional, tag = "3")]
    pub value: ::core::option::Option<f64>,
}