// This file is @generated by prost-build.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
#[must_use]
pub struct DeckConfigId {
    #[prost(int64, tag = "1")]
    pub dcid: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct GetRetentionWorkloadRequest {
    #[prost(float, repeated, tag = "1")]
    pub w: ::prost::alloc::vec::Vec<f32>,
    #[prost(string, tag = "2")]
    pub search: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct GetRetentionWorkloadResponse {
    #[prost(map = "uint32, float", tag = "1")]
    pub costs: ::std::collections::HashMap<u32, f32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct GetIgnoredBeforeCountRequest {
    #[prost(string, tag = "1")]
    pub ignore_revlogs_before_date: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub search: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
#[must_use]
pub struct GetIgnoredBeforeCountResponse {
    #[prost(uint64, tag = "1")]
    pub included: u64,
    #[prost(uint64, tag = "2")]
    pub total: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct DeckConfig {
    #[prost(int64, tag = "1")]
    pub id: i64,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(int64, tag = "3")]
    pub mtime_secs: i64,
    #[prost(int32, tag = "4")]
    pub usn: i32,
    #[prost(message, optional, tag = "5")]
    pub config: ::core::option::Option<deck_config::Config>,
}
/// Nested message and enum types in `DeckConfig`.
pub mod deck_config {
    #[derive(Clone, PartialEq, ::prost::Message)]
    #[must_use]
pub struct Config {
        #[prost(float, repeated, tag = "1")]
        pub learn_steps: ::prost::alloc::vec::Vec<f32>,
        #[prost(float, repeated, tag = "2")]
        pub relearn_steps: ::prost::alloc::vec::Vec<f32>,
        #[prost(float, repeated, tag = "3")]
        pub fsrs_params_4: ::prost::alloc::vec::Vec<f32>,
        #[prost(float, repeated, tag = "5")]
        pub fsrs_params_5: ::prost::alloc::vec::Vec<f32>,
        #[prost(float, repeated, tag = "6")]
        pub fsrs_params_6: ::prost::alloc::vec::Vec<f32>,
        #[prost(uint32, tag = "9")]
        pub new_per_day: u32,
        #[prost(uint32, tag = "10")]
        pub reviews_per_day: u32,
        /// not currently used
        #[prost(uint32, tag = "35")]
        pub new_per_day_minimum: u32,
        #[prost(float, tag = "11")]
        pub initial_ease: f32,
        #[prost(float, tag = "12")]
        pub easy_multiplier: f32,
        #[prost(float, tag = "13")]
        pub hard_multiplier: f32,
        #[prost(float, tag = "14")]
        pub lapse_multiplier: f32,
        #[prost(float, tag = "15")]
        pub interval_multiplier: f32,
        #[prost(uint32, tag = "16")]
        pub maximum_review_interval: u32,
        #[prost(uint32, tag = "17")]
        pub minimum_lapse_interval: u32,
        #[prost(uint32, tag = "18")]
        pub graduating_interval_good: u32,
        #[prost(uint32, tag = "19")]
        pub graduating_interval_easy: u32,
        #[prost(enumeration = "config::NewCardInsertOrder", tag = "20")]
        pub new_card_insert_order: i32,
        #[prost(enumeration = "config::NewCardGatherPriority", tag = "34")]
        pub new_card_gather_priority: i32,
        #[prost(enumeration = "config::NewCardSortOrder", tag = "32")]
        pub new_card_sort_order: i32,
        #[prost(enumeration = "config::ReviewMix", tag = "30")]
        pub new_mix: i32,
        #[prost(enumeration = "config::ReviewCardOrder", tag = "33")]
        pub review_order: i32,
        #[prost(enumeration = "config::ReviewMix", tag = "31")]
        pub interday_learning_mix: i32,
        #[prost(enumeration = "config::LeechAction", tag = "21")]
        pub leech_action: i32,
        #[prost(uint32, tag = "22")]
        pub leech_threshold: u32,
        #[prost(bool, tag = "23")]
        pub disable_autoplay: bool,
        #[prost(uint32, tag = "24")]
        pub cap_answer_time_to_secs: u32,
        #[prost(bool, tag = "25")]
        pub show_timer: bool,
        #[prost(bool, tag = "38")]
        pub stop_timer_on_answer: bool,
        #[prost(float, tag = "41")]
        pub seconds_to_show_question: f32,
        #[prost(float, tag = "42")]
        pub seconds_to_show_answer: f32,
        #[prost(enumeration = "config::QuestionAction", tag = "36")]
        pub question_action: i32,
        #[prost(enumeration = "config::AnswerAction", tag = "43")]
        pub answer_action: i32,
        #[prost(bool, tag = "44")]
        pub wait_for_audio: bool,
        #[prost(bool, tag = "26")]
        pub skip_question_when_replaying_answer: bool,
        #[prost(bool, tag = "27")]
        pub bury_new: bool,
        #[prost(bool, tag = "28")]
        pub bury_reviews: bool,
        #[prost(bool, tag = "29")]
        pub bury_interday_learning: bool,
        /// for fsrs
        #[prost(float, tag = "37")]
        pub desired_retention: f32,
        #[prost(string, tag = "46")]
        pub ignore_revlogs_before_date: ::prost::alloc::string::String,
        #[prost(float, repeated, tag = "4")]
        pub easy_days_percentages: ::prost::alloc::vec::Vec<f32>,
        #[prost(float, tag = "40")]
        pub historical_retention: f32,
        #[prost(string, tag = "45")]
        pub param_search: ::prost::alloc::string::String,
        #[prost(bytes = "vec", tag = "255")]
        pub other: ::prost::alloc::vec::Vec<u8>,
    }
    /// Nested message and enum types in `Config`.
    pub mod config {
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum NewCardInsertOrder {
            Due = 0,
            Random = 1,
        }
        impl NewCardInsertOrder {
            /// 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::Due => "NEW_CARD_INSERT_ORDER_DUE",
                    Self::Random => "NEW_CARD_INSERT_ORDER_RANDOM",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "NEW_CARD_INSERT_ORDER_DUE" => Some(Self::Due),
                    "NEW_CARD_INSERT_ORDER_RANDOM" => Some(Self::Random),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum NewCardGatherPriority {
            /// Decks in alphabetical order (preorder), then ascending position.
            /// Siblings are consecutive, provided they have the same position.
            Deck = 0,
            /// Notes are randomly picked from each deck in alphabetical order.
            /// Siblings are consecutive, provided they have the same position.
            DeckThenRandomNotes = 5,
            /// Ascending position.
            /// Siblings are consecutive, provided they have the same position.
            LowestPosition = 1,
            /// Descending position.
            /// Siblings are consecutive, provided they have the same position.
            HighestPosition = 2,
            /// Siblings are consecutive.
            RandomNotes = 3,
            /// Siblings are neither grouped nor ordered.
            RandomCards = 4,
        }
        impl NewCardGatherPriority {
            /// 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::Deck => "NEW_CARD_GATHER_PRIORITY_DECK",
                    Self::DeckThenRandomNotes => {
                        "NEW_CARD_GATHER_PRIORITY_DECK_THEN_RANDOM_NOTES"
                    }
                    Self::LowestPosition => "NEW_CARD_GATHER_PRIORITY_LOWEST_POSITION",
                    Self::HighestPosition => "NEW_CARD_GATHER_PRIORITY_HIGHEST_POSITION",
                    Self::RandomNotes => "NEW_CARD_GATHER_PRIORITY_RANDOM_NOTES",
                    Self::RandomCards => "NEW_CARD_GATHER_PRIORITY_RANDOM_CARDS",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "NEW_CARD_GATHER_PRIORITY_DECK" => Some(Self::Deck),
                    "NEW_CARD_GATHER_PRIORITY_DECK_THEN_RANDOM_NOTES" => {
                        Some(Self::DeckThenRandomNotes)
                    }
                    "NEW_CARD_GATHER_PRIORITY_LOWEST_POSITION" => {
                        Some(Self::LowestPosition)
                    }
                    "NEW_CARD_GATHER_PRIORITY_HIGHEST_POSITION" => {
                        Some(Self::HighestPosition)
                    }
                    "NEW_CARD_GATHER_PRIORITY_RANDOM_NOTES" => Some(Self::RandomNotes),
                    "NEW_CARD_GATHER_PRIORITY_RANDOM_CARDS" => Some(Self::RandomCards),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum NewCardSortOrder {
            /// Ascending card template ordinal.
            /// For a given ordinal, cards appear in gather order.
            Template = 0,
            /// Preserves original gather order (eg deck order).
            NoSort = 1,
            /// Ascending card template ordinal.
            /// For a given ordinal, cards appear in random order.
            TemplateThenRandom = 2,
            /// Random note order. For a given note, cards appear in template order.
            RandomNoteThenTemplate = 3,
            /// Fully randomized order.
            RandomCard = 4,
        }
        impl NewCardSortOrder {
            /// 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::Template => "NEW_CARD_SORT_ORDER_TEMPLATE",
                    Self::NoSort => "NEW_CARD_SORT_ORDER_NO_SORT",
                    Self::TemplateThenRandom => {
                        "NEW_CARD_SORT_ORDER_TEMPLATE_THEN_RANDOM"
                    }
                    Self::RandomNoteThenTemplate => {
                        "NEW_CARD_SORT_ORDER_RANDOM_NOTE_THEN_TEMPLATE"
                    }
                    Self::RandomCard => "NEW_CARD_SORT_ORDER_RANDOM_CARD",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "NEW_CARD_SORT_ORDER_TEMPLATE" => Some(Self::Template),
                    "NEW_CARD_SORT_ORDER_NO_SORT" => Some(Self::NoSort),
                    "NEW_CARD_SORT_ORDER_TEMPLATE_THEN_RANDOM" => {
                        Some(Self::TemplateThenRandom)
                    }
                    "NEW_CARD_SORT_ORDER_RANDOM_NOTE_THEN_TEMPLATE" => {
                        Some(Self::RandomNoteThenTemplate)
                    }
                    "NEW_CARD_SORT_ORDER_RANDOM_CARD" => Some(Self::RandomCard),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum ReviewCardOrder {
            Day = 0,
            DayThenDeck = 1,
            DeckThenDay = 2,
            IntervalsAscending = 3,
            IntervalsDescending = 4,
            EaseAscending = 5,
            EaseDescending = 6,
            RetrievabilityAscending = 7,
            RetrievabilityDescending = 11,
            RelativeOverdueness = 12,
            Random = 8,
            Added = 9,
            ReverseAdded = 10,
        }
        impl ReviewCardOrder {
            /// 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::Day => "REVIEW_CARD_ORDER_DAY",
                    Self::DayThenDeck => "REVIEW_CARD_ORDER_DAY_THEN_DECK",
                    Self::DeckThenDay => "REVIEW_CARD_ORDER_DECK_THEN_DAY",
                    Self::IntervalsAscending => "REVIEW_CARD_ORDER_INTERVALS_ASCENDING",
                    Self::IntervalsDescending => "REVIEW_CARD_ORDER_INTERVALS_DESCENDING",
                    Self::EaseAscending => "REVIEW_CARD_ORDER_EASE_ASCENDING",
                    Self::EaseDescending => "REVIEW_CARD_ORDER_EASE_DESCENDING",
                    Self::RetrievabilityAscending => {
                        "REVIEW_CARD_ORDER_RETRIEVABILITY_ASCENDING"
                    }
                    Self::RetrievabilityDescending => {
                        "REVIEW_CARD_ORDER_RETRIEVABILITY_DESCENDING"
                    }
                    Self::RelativeOverdueness => "REVIEW_CARD_ORDER_RELATIVE_OVERDUENESS",
                    Self::Random => "REVIEW_CARD_ORDER_RANDOM",
                    Self::Added => "REVIEW_CARD_ORDER_ADDED",
                    Self::ReverseAdded => "REVIEW_CARD_ORDER_REVERSE_ADDED",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "REVIEW_CARD_ORDER_DAY" => Some(Self::Day),
                    "REVIEW_CARD_ORDER_DAY_THEN_DECK" => Some(Self::DayThenDeck),
                    "REVIEW_CARD_ORDER_DECK_THEN_DAY" => Some(Self::DeckThenDay),
                    "REVIEW_CARD_ORDER_INTERVALS_ASCENDING" => {
                        Some(Self::IntervalsAscending)
                    }
                    "REVIEW_CARD_ORDER_INTERVALS_DESCENDING" => {
                        Some(Self::IntervalsDescending)
                    }
                    "REVIEW_CARD_ORDER_EASE_ASCENDING" => Some(Self::EaseAscending),
                    "REVIEW_CARD_ORDER_EASE_DESCENDING" => Some(Self::EaseDescending),
                    "REVIEW_CARD_ORDER_RETRIEVABILITY_ASCENDING" => {
                        Some(Self::RetrievabilityAscending)
                    }
                    "REVIEW_CARD_ORDER_RETRIEVABILITY_DESCENDING" => {
                        Some(Self::RetrievabilityDescending)
                    }
                    "REVIEW_CARD_ORDER_RELATIVE_OVERDUENESS" => {
                        Some(Self::RelativeOverdueness)
                    }
                    "REVIEW_CARD_ORDER_RANDOM" => Some(Self::Random),
                    "REVIEW_CARD_ORDER_ADDED" => Some(Self::Added),
                    "REVIEW_CARD_ORDER_REVERSE_ADDED" => Some(Self::ReverseAdded),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum ReviewMix {
            MixWithReviews = 0,
            AfterReviews = 1,
            BeforeReviews = 2,
        }
        impl ReviewMix {
            /// 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::MixWithReviews => "REVIEW_MIX_MIX_WITH_REVIEWS",
                    Self::AfterReviews => "REVIEW_MIX_AFTER_REVIEWS",
                    Self::BeforeReviews => "REVIEW_MIX_BEFORE_REVIEWS",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "REVIEW_MIX_MIX_WITH_REVIEWS" => Some(Self::MixWithReviews),
                    "REVIEW_MIX_AFTER_REVIEWS" => Some(Self::AfterReviews),
                    "REVIEW_MIX_BEFORE_REVIEWS" => Some(Self::BeforeReviews),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum LeechAction {
            Suspend = 0,
            TagOnly = 1,
        }
        impl LeechAction {
            /// 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::Suspend => "LEECH_ACTION_SUSPEND",
                    Self::TagOnly => "LEECH_ACTION_TAG_ONLY",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "LEECH_ACTION_SUSPEND" => Some(Self::Suspend),
                    "LEECH_ACTION_TAG_ONLY" => Some(Self::TagOnly),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum AnswerAction {
            BuryCard = 0,
            AnswerAgain = 1,
            AnswerGood = 2,
            AnswerHard = 3,
            ShowReminder = 4,
        }
        impl AnswerAction {
            /// 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::BuryCard => "ANSWER_ACTION_BURY_CARD",
                    Self::AnswerAgain => "ANSWER_ACTION_ANSWER_AGAIN",
                    Self::AnswerGood => "ANSWER_ACTION_ANSWER_GOOD",
                    Self::AnswerHard => "ANSWER_ACTION_ANSWER_HARD",
                    Self::ShowReminder => "ANSWER_ACTION_SHOW_REMINDER",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "ANSWER_ACTION_BURY_CARD" => Some(Self::BuryCard),
                    "ANSWER_ACTION_ANSWER_AGAIN" => Some(Self::AnswerAgain),
                    "ANSWER_ACTION_ANSWER_GOOD" => Some(Self::AnswerGood),
                    "ANSWER_ACTION_ANSWER_HARD" => Some(Self::AnswerHard),
                    "ANSWER_ACTION_SHOW_REMINDER" => Some(Self::ShowReminder),
                    _ => None,
                }
            }
        }
        #[derive(
            Clone,
            Copy,
            Debug,
            PartialEq,
            Eq,
            Hash,
            PartialOrd,
            Ord,
            ::prost::Enumeration
        )]
        #[repr(i32)]
        #[must_use]
pub enum QuestionAction {
            ShowAnswer = 0,
            ShowReminder = 1,
        }
        impl QuestionAction {
            /// 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::ShowAnswer => "QUESTION_ACTION_SHOW_ANSWER",
                    Self::ShowReminder => "QUESTION_ACTION_SHOW_REMINDER",
                }
            }
            /// Creates an enum from field names used in the ProtoBuf definition.
            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
                match value {
                    "QUESTION_ACTION_SHOW_ANSWER" => Some(Self::ShowAnswer),
                    "QUESTION_ACTION_SHOW_REMINDER" => Some(Self::ShowReminder),
                    _ => None,
                }
            }
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct DeckConfigsForUpdate {
    #[prost(message, repeated, tag = "1")]
    pub all_config: ::prost::alloc::vec::Vec<deck_configs_for_update::ConfigWithExtra>,
    #[prost(message, optional, tag = "2")]
    pub current_deck: ::core::option::Option<deck_configs_for_update::CurrentDeck>,
    #[prost(message, optional, tag = "3")]
    pub defaults: ::core::option::Option<DeckConfig>,
    #[prost(bool, tag = "4")]
    pub schema_modified: bool,
    /// only applies to v3 scheduler
    #[prost(string, tag = "6")]
    pub card_state_customizer: ::prost::alloc::string::String,
    /// only applies to v3 scheduler
    #[prost(bool, tag = "7")]
    pub new_cards_ignore_review_limit: bool,
    #[prost(bool, tag = "8")]
    pub fsrs: bool,
    #[prost(bool, tag = "11")]
    pub fsrs_health_check: bool,
    #[prost(bool, tag = "12")]
    pub fsrs_legacy_evaluate: bool,
    #[prost(bool, tag = "9")]
    pub apply_all_parent_limits: bool,
    #[prost(uint32, tag = "10")]
    pub days_since_last_fsrs_optimize: u32,
}
/// Nested message and enum types in `DeckConfigsForUpdate`.
pub mod deck_configs_for_update {
    #[derive(Clone, PartialEq, ::prost::Message)]
    #[must_use]
pub struct ConfigWithExtra {
        #[prost(message, optional, tag = "1")]
        pub config: ::core::option::Option<super::DeckConfig>,
        #[prost(uint32, tag = "2")]
        pub use_count: u32,
    }
    #[derive(Clone, PartialEq, ::prost::Message)]
    #[must_use]
pub struct CurrentDeck {
        #[prost(string, tag = "1")]
        pub name: ::prost::alloc::string::String,
        #[prost(int64, tag = "2")]
        pub config_id: i64,
        #[prost(int64, repeated, tag = "3")]
        pub parent_config_ids: ::prost::alloc::vec::Vec<i64>,
        #[prost(message, optional, tag = "4")]
        pub limits: ::core::option::Option<current_deck::Limits>,
    }
    /// Nested message and enum types in `CurrentDeck`.
    pub mod current_deck {
        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
        #[must_use]
pub struct Limits {
            #[prost(uint32, optional, tag = "1")]
            pub review: ::core::option::Option<u32>,
            #[prost(uint32, optional, tag = "2")]
            pub new: ::core::option::Option<u32>,
            #[prost(uint32, optional, tag = "3")]
            pub review_today: ::core::option::Option<u32>,
            #[prost(uint32, optional, tag = "4")]
            pub new_today: ::core::option::Option<u32>,
            /// Whether review_today applies to today or a past day.
            #[prost(bool, tag = "5")]
            pub review_today_active: bool,
            /// Whether new_today applies to today or a past day.
            #[prost(bool, tag = "6")]
            pub new_today_active: bool,
            /// Deck-specific desired retention override
            #[prost(float, optional, tag = "7")]
            pub desired_retention: ::core::option::Option<f32>,
        }
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[must_use]
pub struct UpdateDeckConfigsRequest {
    #[prost(int64, tag = "1")]
    pub target_deck_id: i64,
    /// / Unchanged, non-selected configs can be omitted. Deck will
    /// / be set to whichever entry comes last.
    #[prost(message, repeated, tag = "2")]
    pub configs: ::prost::alloc::vec::Vec<DeckConfig>,
    #[prost(int64, repeated, tag = "3")]
    pub removed_config_ids: ::prost::alloc::vec::Vec<i64>,
    #[prost(enumeration = "UpdateDeckConfigsMode", tag = "4")]
    pub mode: i32,
    #[prost(string, tag = "5")]
    pub card_state_customizer: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "6")]
    pub limits: ::core::option::Option<deck_configs_for_update::current_deck::Limits>,
    #[prost(bool, tag = "7")]
    pub new_cards_ignore_review_limit: bool,
    #[prost(bool, tag = "8")]
    pub fsrs: bool,
    #[prost(bool, tag = "9")]
    pub apply_all_parent_limits: bool,
    #[prost(bool, tag = "10")]
    pub fsrs_reschedule: bool,
    #[prost(bool, tag = "11")]
    pub fsrs_health_check: bool,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
#[must_use]
pub enum UpdateDeckConfigsMode {
    Normal = 0,
    ApplyToChildren = 1,
    ComputeAllParams = 2,
}
impl UpdateDeckConfigsMode {
    /// 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::Normal => "UPDATE_DECK_CONFIGS_MODE_NORMAL",
            Self::ApplyToChildren => "UPDATE_DECK_CONFIGS_MODE_APPLY_TO_CHILDREN",
            Self::ComputeAllParams => "UPDATE_DECK_CONFIGS_MODE_COMPUTE_ALL_PARAMS",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "UPDATE_DECK_CONFIGS_MODE_NORMAL" => Some(Self::Normal),
            "UPDATE_DECK_CONFIGS_MODE_APPLY_TO_CHILDREN" => Some(Self::ApplyToChildren),
            "UPDATE_DECK_CONFIGS_MODE_COMPUTE_ALL_PARAMS" => Some(Self::ComputeAllParams),
            _ => None,
        }
    }
}
