// This file is @generated by prost-build.
/// Project progress report
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Report {
    /// Overall progress info
    #[prost(message, optional, tag = "1")]
    pub measures: ::core::option::Option<Measures>,
    /// Units within this report
    #[prost(message, repeated, tag = "2")]
    pub units: ::prost::alloc::vec::Vec<ReportUnit>,
    /// Report version
    #[prost(uint32, tag = "3")]
    pub version: u32,
    /// Progress categories
    #[prost(message, repeated, tag = "4")]
    pub categories: ::prost::alloc::vec::Vec<ReportCategory>,
}
/// Progress info for a report or unit
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Measures {
    /// Overall match percent, including partially matched functions and data
    #[prost(float, tag = "1")]
    pub fuzzy_match_percent: f32,
    /// Total size of code in bytes
    #[prost(uint64, tag = "2")]
    pub total_code: u64,
    /// Fully matched code size in bytes
    #[prost(uint64, tag = "3")]
    pub matched_code: u64,
    /// Fully matched code percent
    #[prost(float, tag = "4")]
    pub matched_code_percent: f32,
    /// Total size of data in bytes
    #[prost(uint64, tag = "5")]
    pub total_data: u64,
    /// Fully matched data size in bytes
    #[prost(uint64, tag = "6")]
    pub matched_data: u64,
    /// Fully matched data percent
    #[prost(float, tag = "7")]
    pub matched_data_percent: f32,
    /// Total number of functions
    #[prost(uint32, tag = "8")]
    pub total_functions: u32,
    /// Fully matched functions
    #[prost(uint32, tag = "9")]
    pub matched_functions: u32,
    /// Fully matched functions percent
    #[prost(float, tag = "10")]
    pub matched_functions_percent: f32,
    /// Completed (or "linked") code size in bytes
    #[prost(uint64, tag = "11")]
    pub complete_code: u64,
    /// Completed (or "linked") code percent
    #[prost(float, tag = "12")]
    pub complete_code_percent: f32,
    /// Completed (or "linked") data size in bytes
    #[prost(uint64, tag = "13")]
    pub complete_data: u64,
    /// Completed (or "linked") data percent
    #[prost(float, tag = "14")]
    pub complete_data_percent: f32,
    /// Total number of units
    #[prost(uint32, tag = "15")]
    pub total_units: u32,
    /// Completed (or "linked") units
    #[prost(uint32, tag = "16")]
    pub complete_units: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReportCategory {
    /// The ID of the category
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    /// The name of the category
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    /// Progress info for this category
    #[prost(message, optional, tag = "3")]
    pub measures: ::core::option::Option<Measures>,
}
/// A unit of the report (usually a translation unit)
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReportUnit {
    /// The name of the unit
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Progress info for this unit
    #[prost(message, optional, tag = "2")]
    pub measures: ::core::option::Option<Measures>,
    /// Sections within this unit
    #[prost(message, repeated, tag = "3")]
    pub sections: ::prost::alloc::vec::Vec<ReportItem>,
    /// Functions within this unit
    #[prost(message, repeated, tag = "4")]
    pub functions: ::prost::alloc::vec::Vec<ReportItem>,
    /// Extra metadata for this unit
    #[prost(message, optional, tag = "5")]
    pub metadata: ::core::option::Option<ReportUnitMetadata>,
}
/// Extra metadata for a unit
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReportUnitMetadata {
    /// Whether this unit is marked as complete (or "linked")
    #[prost(bool, optional, tag = "1")]
    pub complete: ::core::option::Option<bool>,
    /// The name of the module this unit belongs to
    #[prost(string, optional, tag = "2")]
    pub module_name: ::core::option::Option<::prost::alloc::string::String>,
    /// The ID of the module this unit belongs to
    #[prost(uint32, optional, tag = "3")]
    pub module_id: ::core::option::Option<u32>,
    /// The path to the source file of this unit
    #[prost(string, optional, tag = "4")]
    pub source_path: ::core::option::Option<::prost::alloc::string::String>,
    /// Progress categories for this unit
    #[prost(string, repeated, tag = "5")]
    pub progress_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Whether this unit is automatically generated (not user-provided)
    #[prost(bool, optional, tag = "6")]
    pub auto_generated: ::core::option::Option<bool>,
}
/// A section or function within a unit
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReportItem {
    /// The name of the item
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// The size of the item in bytes
    #[prost(uint64, tag = "2")]
    pub size: u64,
    /// The overall match percent for this item
    #[prost(float, tag = "3")]
    pub fuzzy_match_percent: f32,
    /// Extra metadata for this item
    #[prost(message, optional, tag = "4")]
    pub metadata: ::core::option::Option<ReportItemMetadata>,
    /// Address of the item (section-relative offset)
    #[prost(uint64, optional, tag = "5")]
    pub address: ::core::option::Option<u64>,
}
/// Extra metadata for an item
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReportItemMetadata {
    /// The demangled name of the function
    #[prost(string, optional, tag = "1")]
    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
    /// The virtual address of the function or section
    #[prost(uint64, optional, tag = "2")]
    pub virtual_address: ::core::option::Option<u64>,
}
/// A pair of reports to compare and generate changes
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChangesInput {
    /// The previous report
    #[prost(message, optional, tag = "1")]
    pub from: ::core::option::Option<Report>,
    /// The current report
    #[prost(message, optional, tag = "2")]
    pub to: ::core::option::Option<Report>,
}
/// Changes between two reports
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Changes {
    /// The progress info for the previous report
    #[prost(message, optional, tag = "1")]
    pub from: ::core::option::Option<Measures>,
    /// The progress info for the current report
    #[prost(message, optional, tag = "2")]
    pub to: ::core::option::Option<Measures>,
    /// Units that changed
    #[prost(message, repeated, tag = "3")]
    pub units: ::prost::alloc::vec::Vec<ChangeUnit>,
}
/// A changed unit
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChangeUnit {
    /// The name of the unit
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// The previous progress info (omitted if new)
    #[prost(message, optional, tag = "2")]
    pub from: ::core::option::Option<Measures>,
    /// The current progress info (omitted if removed)
    #[prost(message, optional, tag = "3")]
    pub to: ::core::option::Option<Measures>,
    /// Sections that changed
    #[prost(message, repeated, tag = "4")]
    pub sections: ::prost::alloc::vec::Vec<ChangeItem>,
    /// Functions that changed
    #[prost(message, repeated, tag = "5")]
    pub functions: ::prost::alloc::vec::Vec<ChangeItem>,
    /// Extra metadata for this unit
    #[prost(message, optional, tag = "6")]
    pub metadata: ::core::option::Option<ReportUnitMetadata>,
}
/// A changed section or function
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChangeItem {
    /// The name of the item
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// The previous progress info (omitted if new)
    #[prost(message, optional, tag = "2")]
    pub from: ::core::option::Option<ChangeItemInfo>,
    /// The current progress info (omitted if removed)
    #[prost(message, optional, tag = "3")]
    pub to: ::core::option::Option<ChangeItemInfo>,
    /// Extra metadata for this item
    #[prost(message, optional, tag = "4")]
    pub metadata: ::core::option::Option<ReportItemMetadata>,
}
/// Progress info for a section or function
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChangeItemInfo {
    /// The overall match percent for this item
    #[prost(float, tag = "1")]
    pub fuzzy_match_percent: f32,
    /// The size of the item in bytes
    #[prost(uint64, tag = "2")]
    pub size: u64,
}
