use thiserror::Error;
#[derive(Debug, Error)]
pub enum ProtocolError {
#[error("invalid message type: 0x{0:02x}")]
InvalidMessageType(u8),
#[error("message too short: expected at least {expected}, got {got}")]
MessageTooShort { expected: usize, got: usize },
#[error("message too long: max {max}, got {got}")]
MessageTooLong { max: usize, got: usize },
#[error("invalid signature")]
InvalidSignature,
#[error("unsupported protocol version: {0}")]
UnsupportedVersion(u8),
#[error("malformed message: {0}")]
Malformed(String),
#[error("hop limit exceeded")]
HopLimitExceeded,
#[error("ttl expired")]
TtlExpired,
}