// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct SyncAuth {
    #[prost(string, tag = "1")]
    pub hkey: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "2")]
    pub endpoint: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(uint32, optional, tag = "3")]
    pub io_timeout_secs: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct SyncLoginRequest {
    #[prost(string, tag = "1")]
    pub username: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub password: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub endpoint: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct SyncStatusResponse {
    #[prost(enumeration = "sync_status_response::Required", tag = "1")]
    pub required: i32,
    #[prost(string, optional, tag = "4")]
    pub new_endpoint: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `SyncStatusResponse`.
pub mod sync_status_response {
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    #[must_use]
pub enum Required {
        NoChanges = 0,
        NormalSync = 1,
        FullSync = 2,
    }
    impl Required {
        /// 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::NoChanges => "NO_CHANGES",
                Self::NormalSync => "NORMAL_SYNC",
                Self::FullSync => "FULL_SYNC",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "NO_CHANGES" => Some(Self::NoChanges),
                "NORMAL_SYNC" => Some(Self::NormalSync),
                "FULL_SYNC" => Some(Self::FullSync),
                _ => None,
            }
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct SyncCollectionRequest {
    #[prost(message, optional, tag = "1")]
    pub auth: ::core::option::Option<SyncAuth>,
    #[prost(bool, tag = "2")]
    pub sync_media: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct SyncCollectionResponse {
    #[prost(uint32, tag = "1")]
    pub host_number: u32,
    #[prost(string, tag = "2")]
    pub server_message: ::prost::alloc::string::String,
    #[prost(enumeration = "sync_collection_response::ChangesRequired", tag = "3")]
    pub required: i32,
    #[prost(string, optional, tag = "4")]
    pub new_endpoint: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, tag = "5")]
    pub server_media_usn: i32,
}
/// Nested message and enum types in `SyncCollectionResponse`.
pub mod sync_collection_response {
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    #[must_use]
pub enum ChangesRequired {
        NoChanges = 0,
        NormalSync = 1,
        FullSync = 2,
        /// local collection has no cards; upload not an option
        FullDownload = 3,
        /// remote collection has no cards; download not an option
        FullUpload = 4,
    }
    impl ChangesRequired {
        /// 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::NoChanges => "NO_CHANGES",
                Self::NormalSync => "NORMAL_SYNC",
                Self::FullSync => "FULL_SYNC",
                Self::FullDownload => "FULL_DOWNLOAD",
                Self::FullUpload => "FULL_UPLOAD",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "NO_CHANGES" => Some(Self::NoChanges),
                "NORMAL_SYNC" => Some(Self::NormalSync),
                "FULL_SYNC" => Some(Self::FullSync),
                "FULL_DOWNLOAD" => Some(Self::FullDownload),
                "FULL_UPLOAD" => Some(Self::FullUpload),
                _ => None,
            }
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct MediaSyncStatusResponse {
    #[prost(bool, tag = "1")]
    pub active: bool,
    #[prost(message, optional, tag = "2")]
    pub progress: ::core::option::Option<MediaSyncProgress>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct MediaSyncProgress {
    #[prost(string, tag = "1")]
    pub checked: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub added: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub removed: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct FullUploadOrDownloadRequest {
    #[prost(message, optional, tag = "1")]
    pub auth: ::core::option::Option<SyncAuth>,
    #[prost(bool, tag = "2")]
    pub upload: bool,
    /// if not provided, media syncing will be skipped
    #[prost(int32, optional, tag = "3")]
    pub server_usn: ::core::option::Option<i32>,
}
