use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("invalid did:key: {0}")]
InvalidDid(String),
#[error("invalid envelope: {0}")]
InvalidEnvelope(String),
#[error("noise: {0}")]
Noise(String),
#[error("handshake failed: {0}")]
Handshake(String),
#[error("plaintext too large: {got} > {max}")]
PlaintextTooLarge { got: usize, max: usize },
#[error("io: {0}")]
Io(#[from] std::io::Error),
#[error("json: {0}")]
Json(#[from] serde_json::Error),
#[error("websocket: {0}")]
Ws(String),
#[error("rpc error {code}: {message}")]
Rpc { code: i64, message: String },
#[error("session closed")]
Closed,
}
pub type Result<T> = std::result::Result<T, Error>;