// This file is @generated by prost-build.
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Memory {
    #[prost(uint64, required, tag = "1")]
    pub mem_total: u64,
    #[prost(uint64, required, tag = "2")]
    pub mem_free: u64,
    #[prost(uint64, required, tag = "3")]
    pub mem_available: u64,
    #[prost(uint64, required, tag = "4")]
    pub buffers: u64,
    #[prost(uint64, required, tag = "5")]
    pub cached: u64,
    #[prost(uint64, required, tag = "6")]
    pub swap_cached: u64,
    #[prost(uint64, required, tag = "7")]
    pub active: u64,
    #[prost(uint64, required, tag = "8")]
    pub inactive: u64,
    #[prost(uint64, required, tag = "9")]
    pub active_anon: u64,
    #[prost(uint64, required, tag = "10")]
    pub inactive_anon: u64,
    #[prost(uint64, required, tag = "11")]
    pub active_file: u64,
    #[prost(uint64, required, tag = "12")]
    pub inactive_file: u64,
    #[prost(uint64, required, tag = "13")]
    pub unevictable: u64,
    #[prost(uint64, required, tag = "14")]
    pub m_locked: u64,
    #[prost(uint64, required, tag = "15")]
    pub swap_total: u64,
    #[prost(uint64, required, tag = "16")]
    pub swap_free: u64,
    #[prost(uint64, required, tag = "17")]
    pub zswap: u64,
    #[prost(uint64, required, tag = "18")]
    pub zswapped: u64,
    #[prost(uint64, required, tag = "19")]
    pub dirty: u64,
    #[prost(uint64, required, tag = "20")]
    pub writeback: u64,
    #[prost(uint64, required, tag = "21")]
    pub anon_pages: u64,
    #[prost(uint64, required, tag = "22")]
    pub mapped: u64,
    #[prost(uint64, required, tag = "23")]
    pub sh_mem: u64,
    #[prost(uint64, required, tag = "24")]
    pub k_reclaimable: u64,
    #[prost(uint64, required, tag = "25")]
    pub slab: u64,
    #[prost(uint64, required, tag = "26")]
    pub s_reclaimable: u64,
    #[prost(uint64, required, tag = "27")]
    pub s_unreclaim: u64,
    #[prost(uint64, required, tag = "28")]
    pub kernel_stack: u64,
    #[prost(uint64, required, tag = "29")]
    pub page_tables: u64,
    #[prost(uint64, required, tag = "30")]
    pub sec_page_tables: u64,
    #[prost(uint64, required, tag = "31")]
    pub nfs_unstable: u64,
    #[prost(uint64, required, tag = "32")]
    pub bounce: u64,
    #[prost(uint64, required, tag = "33")]
    pub writeback_tmp: u64,
    #[prost(uint64, required, tag = "34")]
    pub commit_limit: u64,
    #[prost(uint64, required, tag = "35")]
    pub committed: u64,
    #[prost(uint64, required, tag = "36")]
    pub vmalloc_total: u64,
    #[prost(uint64, required, tag = "37")]
    pub vmalloc_used: u64,
    #[prost(uint64, required, tag = "38")]
    pub vmalloc_chunk: u64,
    #[prost(uint64, required, tag = "39")]
    pub percpu: u64,
    #[prost(uint64, required, tag = "40")]
    pub hardware_corrupted: u64,
    #[prost(uint64, required, tag = "41")]
    pub anon_huge_pages: u64,
    #[prost(uint64, required, tag = "42")]
    pub shmem_huge_pages: u64,
    #[prost(uint64, required, tag = "43")]
    pub shmem_pmd_mapped: u64,
    #[prost(uint64, required, tag = "44")]
    pub file_huge_pages: u64,
    #[prost(uint64, required, tag = "45")]
    pub file_pmd_mapped: u64,
    #[prost(uint64, required, tag = "46")]
    pub cma_total: u64,
    #[prost(uint64, required, tag = "47")]
    pub cma_free: u64,
    #[prost(uint64, required, tag = "48")]
    pub huge_pages_total: u64,
    #[prost(uint64, required, tag = "49")]
    pub huge_pages_free: u64,
    #[prost(uint64, required, tag = "50")]
    pub huge_pages_rsvd: u64,
    #[prost(uint64, required, tag = "51")]
    pub huge_pages_surp: u64,
    #[prost(uint64, required, tag = "52")]
    pub hugepagesize: u64,
    #[prost(uint64, required, tag = "53")]
    pub hugetlb: u64,
    #[prost(uint64, required, tag = "54")]
    pub direct_map4k: u64,
    #[prost(uint64, required, tag = "55")]
    pub direct_map2m: u64,
    #[prost(uint64, required, tag = "56")]
    pub direct_map1g: u64,
    #[prost(uint64, required, tag = "57")]
    pub max_devices: u64,
    /// zram compression statistics (aggregated across all zram devices)
    ///
    /// Original uncompressed data size
    #[prost(uint64, required, tag = "58")]
    pub zram_orig_size: u64,
    /// Compressed data size
    #[prost(uint64, required, tag = "59")]
    pub zram_compr_size: u64,
    /// Total memory allocated by zram
    #[prost(uint64, required, tag = "60")]
    pub zram_mem_used: u64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MemoryDevice {
    #[prost(uint64, required, tag = "1")]
    pub size: u64,
    #[prost(string, required, tag = "2")]
    pub form_factor: ::prost::alloc::string::String,
    #[prost(string, required, tag = "3")]
    pub locator: ::prost::alloc::string::String,
    #[prost(string, required, tag = "4")]
    pub bank_locator: ::prost::alloc::string::String,
    #[prost(string, required, tag = "5")]
    pub ram_type: ::prost::alloc::string::String,
    #[prost(uint64, required, tag = "6")]
    pub speed: u64,
    #[prost(uint32, required, tag = "7")]
    pub rank: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MemoryRequest {
    #[prost(enumeration = "memory_request::Kind", required, tag = "1")]
    pub kind: i32,
}
/// Nested message and enum types in `MemoryRequest`.
pub mod memory_request {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(strum::EnumIter)]
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum Kind {
        Memory = 1,
        MemoryDevices = 2,
    }
    impl Kind {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Memory => "Memory",
                Self::MemoryDevices => "MemoryDevices",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "Memory" => Some(Self::Memory),
                "MemoryDevices" => Some(Self::MemoryDevices),
                _ => None,
            }
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MemoryResponse {
    #[prost(enumeration = "memory_request::Kind", required, tag = "1")]
    pub kind: i32,
    #[prost(oneof = "memory_response::Response", tags = "2, 3")]
    pub response: ::core::option::Option<memory_response::Response>,
}
/// Nested message and enum types in `MemoryResponse`.
pub mod memory_response {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct MemoryDeviceList {
        #[prost(message, repeated, tag = "1")]
        pub devices: ::prost::alloc::vec::Vec<super::MemoryDevice>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct MemoryInfo {
        #[prost(oneof = "memory_info::Response", tags = "1, 2")]
        pub response: ::core::option::Option<memory_info::Response>,
    }
    /// Nested message and enum types in `MemoryInfo`.
    pub mod memory_info {
        #[derive(serde::Serialize, serde::Deserialize)]
        #[serde(rename_all = "snake_case")]
        #[derive(strum::EnumIter)]
        #[derive(Clone, PartialEq, ::prost::Oneof)]
        pub enum Response {
            #[prost(message, tag = "1")]
            Memory(super::super::Memory),
            #[prost(message, tag = "2")]
            MemoryDevices(super::MemoryDeviceList),
        }
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(strum::EnumIter)]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Response {
        #[prost(message, tag = "2")]
        MemoryInfo(MemoryInfo),
        #[prost(message, tag = "3")]
        Error(super::MemoryResponseError),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MemoryResponseError {}
