use ahp_types::messages::JsonRpcError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum TransportError {
#[error("connection closed")]
Closed,
#[error("io error: {0}")]
Io(String),
#[error("protocol error: {0}")]
Protocol(String),
}
#[derive(Debug, Error)]
pub enum ClientError {
#[error("transport error: {0}")]
Transport(#[from] TransportError),
#[error("rpc error {}: {}", .0.code, .0.message)]
Rpc(JsonRpcError),
#[error("failed to deserialize response: {0}")]
Deserialization(#[from] serde_json::Error),
#[error("client shut down")]
Shutdown,
#[error("request cancelled")]
Cancelled,
#[error("no such subscription: {0}")]
UnknownSubscription(String),
#[error("sequence gap detected; resubscribe required")]
SequenceGap,
}