use std::io;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("I/O error: {0}")]
IoError(#[from] io::Error),
#[error("JSON error: {0}")]
JsonError(#[from] serde_json::Error),
#[error("invalid RSA key encoding")]
InvalidRsaKeyEncoding,
#[error("AES error: {0}")]
AesError(#[from] aes_gcm::Error),
#[error("invalid AES key size")]
InvalidAesKeySize,
#[error("the connection has been closed")]
ConnectionClosed,
#[error("invalid client ID: {0}")]
InvalidClientId(usize),
}
pub type Result<T> = core::result::Result<T, Error>;