// This file is @generated by prost-build.
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SophonManifestProto {
    #[prost(message, repeated, tag = "1")]
    pub assets: ::prost::alloc::vec::Vec<SophonManifestAssetProperty>,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SophonManifestAssetProperty {
    /// Path to the file relative to the game directory
    #[prost(string, tag = "1")]
    pub asset_name: ::prost::alloc::string::String,
    #[prost(message, repeated, tag = "2")]
    pub asset_chunks: ::prost::alloc::vec::Vec<SophonManifestAssetChunk>,
    /// 0 for files, 64 for directories. No other values were ever observed
    #[prost(uint32, tag = "3")]
    pub asset_type: u32,
    /// Size of the entire file
    #[prost(uint64, tag = "4")]
    pub asset_size: u64,
    /// MD5 checksum of the entire file
    #[prost(string, tag = "5")]
    pub asset_hash_md5: ::prost::alloc::string::String,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SophonManifestAssetChunk {
    #[prost(string, tag = "1")]
    pub chunk_name: ::prost::alloc::string::String,
    /// MD5 checksum of the uncompressed chunk data
    #[prost(string, tag = "2")]
    pub chunk_decompressed_hash_md5: ::prost::alloc::string::String,
    /// Offset at which this chunk should be put into the resulting file
    #[prost(uint64, tag = "3")]
    pub chunk_on_file_offset: u64,
    /// Size of the compressed chunk
    #[prost(uint64, tag = "4")]
    pub chunk_size: u64,
    /// Size of the uncompressed chunk
    #[prost(uint64, tag = "5")]
    pub chunk_size_decompressed: u64,
    /// not an xxh64 checlsum of the compressed data
    #[prost(uint64, tag = "6")]
    pub chunk_compressed_hash_xxh: u64,
    /// MD5 checksum of the compressed chunk data
    #[prost(string, tag = "7")]
    pub chunk_compressed_hash_md5: ::prost::alloc::string::String,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SophonPatchProto {
    #[prost(message, repeated, tag = "1")]
    pub patch_assets: ::prost::alloc::vec::Vec<SophonPatchAssetProperty>,
    #[prost(map = "string, message", tag = "2")]
    pub unused_assets: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        SophonUnusedAssetInfo,
    >,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SophonPatchAssetProperty {
    /// Path to the file relative to the game directory
    #[prost(string, tag = "1")]
    pub asset_name: ::prost::alloc::string::String,
    /// Size of the entire file
    #[prost(uint64, tag = "2")]
    pub asset_size: u64,
    /// md5 file hash AFTER patching
    #[prost(string, tag = "3")]
    pub asset_hash_md5: ::prost::alloc::string::String,
    #[prost(map = "string, message", tag = "4")]
    pub asset_patch_chunks: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        SophonPatchAssetChunk,
    >,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SophonPatchAssetChunk {
    #[prost(string, tag = "1")]
    pub patch_name: ::prost::alloc::string::String,
    /// Game version, e.g. "5.5.0" or "5.4.0" (when updating to "5.6.0")
    #[prost(string, tag = "2")]
    pub version_tag: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub build_id: ::prost::alloc::string::String,
    #[prost(uint64, tag = "4")]
    pub patch_size: u64,
    #[prost(string, tag = "5")]
    pub patch_md5: ::prost::alloc::string::String,
    #[prost(uint64, tag = "6")]
    pub patch_offset: u64,
    #[prost(uint64, tag = "7")]
    pub patch_length: u64,
    #[prost(string, tag = "8")]
    pub original_file_name: ::prost::alloc::string::String,
    #[prost(uint64, tag = "9")]
    pub original_file_length: u64,
    /// md5 file hash BEFORE patching
    #[prost(string, tag = "10")]
    pub original_file_md5: ::prost::alloc::string::String,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SophonUnusedAssetInfo {
    #[prost(message, repeated, tag = "1")]
    pub assets: ::prost::alloc::vec::Vec<SophonUnusedAssetFile>,
}
#[derive(serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SophonUnusedAssetFile {
    #[prost(string, tag = "1")]
    pub file_name: ::prost::alloc::string::String,
    #[prost(uint64, tag = "2")]
    pub file_size: u64,
    #[prost(string, tag = "3")]
    pub file_md5: ::prost::alloc::string::String,
}
