#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsLogData {
#[prost(message, optional, tag = "1")]
pub user_dim: ::core::option::Option<UserDimensions>,
#[prost(message, repeated, tag = "2")]
pub event_dim: ::prost::alloc::vec::Vec<EventDimensions>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserDimensions {
#[prost(string, tag = "1")]
pub user_id: ::prost::alloc::string::String,
#[prost(int64, tag = "2")]
pub first_open_timestamp_micros: i64,
#[prost(map = "string, message", tag = "3")]
pub user_properties: ::std::collections::HashMap<
::prost::alloc::string::String,
UserPropertyValue,
>,
#[prost(message, optional, tag = "4")]
pub device_info: ::core::option::Option<DeviceInfo>,
#[prost(message, optional, tag = "5")]
pub geo_info: ::core::option::Option<GeoInfo>,
#[prost(message, optional, tag = "6")]
pub app_info: ::core::option::Option<AppInfo>,
#[prost(message, optional, tag = "7")]
pub traffic_source: ::core::option::Option<TrafficSource>,
#[prost(message, optional, tag = "8")]
pub bundle_info: ::core::option::Option<ExportBundleInfo>,
#[prost(message, optional, tag = "9")]
pub ltv_info: ::core::option::Option<LtvInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserPropertyValue {
#[prost(message, optional, tag = "1")]
pub value: ::core::option::Option<AnalyticsValue>,
#[prost(int64, tag = "2")]
pub set_timestamp_usec: i64,
#[prost(int32, tag = "3")]
pub index: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsValue {
#[prost(oneof = "analytics_value::ParamValue", tags = "1, 2, 3, 4")]
pub param_value: ::core::option::Option<analytics_value::ParamValue>,
}
pub mod analytics_value {
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum ParamValue {
#[prost(string, tag = "1")]
StringValue(::prost::alloc::string::String),
#[prost(int64, tag = "2")]
IntValue(i64),
#[prost(float, tag = "3")]
FloatValue(f32),
#[prost(double, tag = "4")]
DoubleValue(f64),
}
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeviceInfo {
#[prost(string, tag = "1")]
pub device_category: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub mobile_brand_name: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub mobile_model_name: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub mobile_marketing_name: ::prost::alloc::string::String,
#[prost(string, tag = "12")]
pub device_model: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub platform_version: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub device_id: ::prost::alloc::string::String,
#[prost(string, tag = "8")]
pub resettable_device_id: ::prost::alloc::string::String,
#[prost(string, tag = "9")]
pub user_default_language: ::prost::alloc::string::String,
#[prost(int32, tag = "10")]
pub device_time_zone_offset_seconds: i32,
#[prost(bool, tag = "11")]
pub limited_ad_tracking: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AppInfo {
#[prost(string, tag = "1")]
pub app_version: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub app_instance_id: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub app_store: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub app_platform: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub app_id: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GeoInfo {
#[prost(string, tag = "1")]
pub continent: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub country: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub region: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub city: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrafficSource {
#[prost(string, tag = "2")]
pub user_acquired_campaign: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub user_acquired_source: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub user_acquired_medium: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ExportBundleInfo {
#[prost(int32, tag = "1")]
pub bundle_sequence_id: i32,
#[prost(int64, tag = "2")]
pub server_timestamp_offset_micros: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LtvInfo {
#[prost(double, tag = "1")]
pub revenue: f64,
#[prost(string, tag = "2")]
pub currency: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventDimensions {
#[prost(string, tag = "6")]
pub date: ::prost::alloc::string::String,
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(map = "string, message", tag = "2")]
pub params: ::std::collections::HashMap<
::prost::alloc::string::String,
AnalyticsValue,
>,
#[prost(int64, tag = "4")]
pub timestamp_micros: i64,
#[prost(int64, tag = "5")]
pub previous_timestamp_micros: i64,
#[prost(double, tag = "7")]
pub value_in_usd: f64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AnalyticsLogWrittenEvent {
#[prost(message, optional, tag = "1")]
pub data: ::core::option::Option<AnalyticsLogData>,
}