pub type Result<T> = std::result::Result<T, Error>;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("Invalid sync bytes: 0x{0:02X} 0x{1:02X}")]
InvalidSync(u8, u8),
#[error("Invalid checksum: expected 0x{expected:08X}, got 0x{actual:08X}")]
InvalidChecksum { expected: u32, actual: u32 },
#[error("Invalid length: expected {expected}, got {actual}")]
InvalidLength { expected: usize, actual: usize },
#[error("Unsupported protocol version: {0}")]
UnsupportedVersion(u8),
#[error("Invalid block: {0}")]
InvalidBlock(binrw::Error),
#[error("Network error: {0}")]
Network(std::io::Error),
#[error("Incomplete data: {0}")]
Incomplete(std::io::Error),
}