use grammers_tl_types as tl;
use std::collections::{HashMap, HashSet};
use std::time::{Duration, Instant};
pub(super) const NO_SEQ: i32 = 0;
pub(super) const BOT_CHANNEL_DIFF_LIMIT: i32 = 100000;
pub(super) const USER_CHANNEL_DIFF_LIMIT: i32 = 100;
pub(super) const POSSIBLE_GAP_TIMEOUT: Duration = Duration::from_millis(500);
pub(super) const NO_UPDATES_TIMEOUT: Duration = Duration::from_secs(15 * 60);
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) enum Entry {
AccountWide,
SecretChats,
Channel(i64),
}
#[derive(Debug)]
pub struct MessageBox {
pub(super) map: HashMap<Entry, State>,
pub(super) date: i32,
pub(super) seq: i32,
pub(super) next_deadline: Option<Entry>,
pub(super) possible_gaps: HashMap<Entry, PossibleGap>,
pub(super) getting_diff_for: HashSet<Entry>,
pub(super) reset_deadlines_for: HashSet<Entry>,
}
#[derive(Debug)]
pub(super) struct PtsInfo {
pub(super) pts: i32,
pub(super) pts_count: i32,
pub(super) entry: Entry,
}
#[derive(Debug)]
pub(super) struct State {
pub(super) pts: i32,
pub(super) deadline: Instant,
}
#[derive(Debug)]
pub(super) struct PossibleGap {
pub(super) deadline: Instant,
pub(super) updates: Vec<tl::enums::Update>,
}
#[derive(Debug)]
pub struct Gap;
#[derive(PartialEq)]
pub(super) enum ResetDeadline {
No,
Yes,
}