use std::net::{SocketAddrV4, SocketAddrV6};
pub use crate::peer::{ChannelKind, PeerAuth, PeerId, PeerInfo, PeerKind, PeerRef};
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", serde_with::serde_as)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DcOption {
pub id: i32,
pub ipv4: SocketAddrV4,
pub ipv6: SocketAddrV6,
#[cfg(not(feature = "serde"))]
pub auth_key: Option<[u8; 256]>,
#[cfg(feature = "serde")]
#[serde_as(as = "Option<serde_with::hex::Hex>")]
pub auth_key: Option<[u8; 256]>,
}
#[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct UpdatesState {
pub pts: i32,
pub qts: i32,
pub date: i32,
pub seq: i32,
pub channels: Vec<ChannelState>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChannelState {
pub id: i64,
pub pts: i32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum UpdateState {
All(UpdatesState),
Primary {
pts: i32,
date: i32,
seq: i32,
},
Secondary {
qts: i32,
},
Channel {
id: i64,
pts: i32,
},
}