use thiserror::Error;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum NeoFSError {
#[error("Connection error: {0}")]
ConnectionError(String),
#[error("Authentication error: {0}")]
AuthenticationError(String),
#[error("Container error: {0}")]
ContainerError(String),
#[error("Object error: {0}")]
ObjectError(String),
#[error("Access control error: {0}")]
ACLError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Permission denied: {0}")]
PermissionDenied(String),
#[error("Resource not found: {0}")]
NotFound(String),
#[error("Invalid argument: {0}")]
InvalidArgument(String),
#[error("Operation timeout: {0}")]
Timeout(String),
#[error("Internal error: {0}")]
InternalError(String),
#[error("Conversion error: {0}")]
ConversionError(String),
#[error("Unsupported NeoFS operation: {0}")]
UnsupportedOperation(String),
#[error("IO error: {0}")]
IOError(#[from] std::io::Error),
#[error("Unexpected response: {0}")]
UnexpectedResponse(String),
}
pub type NeoFSResult<T> = std::result::Result<T, NeoFSError>;