#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
#[non_exhaustive]
pub enum Event {
PeerDiscovered { peer: String },
ManifestReceived { name: String, files: usize, total_size: u64, total_pieces: usize },
Resumed { pieces: usize, bytes: u64 },
PeerConnected { peer: String, pieces: usize, total: usize },
PeerPath { peer: String, direct: bool, rtt_ms: u64 },
SwarmPeers { connected: usize },
PeerDisconnected { peer: String },
PieceVerified { index: usize, bytes: u64 },
PieceFailed { index: usize, reason: String },
Uploaded { bytes: u64 },
Completed,
}
pub(crate) const EVENT_CAPACITY: usize = 4096;