use crate::{BoxError, RegisterMethodError, params::EmptyBatchRequest};
use jsonrpsee_types::{ErrorObjectOwned, InvalidRequestId};
use std::sync::Arc;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("{0}")]
Call(#[from] ErrorObjectOwned),
#[error(transparent)]
Transport(BoxError),
#[error("The background task closed {0}; restart required")]
RestartNeeded(Arc<Error>),
#[error("Parse error: {0}")]
ParseError(#[from] serde_json::Error),
#[error("Invalid subscription ID")]
InvalidSubscriptionId,
#[error(transparent)]
InvalidRequestId(#[from] InvalidRequestId),
#[error("Request timeout")]
RequestTimeout,
#[error("Custom error: {0}")]
Custom(String),
#[error("Not implemented")]
HttpNotImplemented,
#[error(transparent)]
EmptyBatchRequest(#[from] EmptyBatchRequest),
#[error(transparent)]
RegisterMethod(#[from] RegisterMethodError),
#[error("RPC service disconnected")]
#[doc(hidden)]
ServiceDisconnect,
}