use std::ffi::NulError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum RpcError {
#[error("Failed to initialize RPC backend for endpoint: {endpoint}")]
InitializationFailed {
endpoint: String,
},
#[error("Invalid endpoint format: {endpoint}")]
InvalidEndpoint {
endpoint: String,
},
#[error("Failed to connect to RPC server at {endpoint}: {reason}")]
ConnectionFailed {
endpoint: String,
reason: String,
},
#[error("RPC server error: {message}")]
ServerError {
message: String,
},
#[error("Failed to query device memory")]
MemoryQueryFailed,
#[error("Failed to convert C string: {0}")]
StringConversion(#[from] NulError),
#[error("Invalid UTF-8: {0}")]
Utf8Error(#[from] std::str::Utf8Error),
#[error("RPC feature not compiled in. Build with --features rpc")]
NotAvailable,
}