use thiserror::Error;
#[derive(Debug, Error)]
pub enum ProtocolError {
#[error("Failed to serialize message: {0}")]
SerializationError(#[from] serde_json::Error),
#[error("Failed to deserialize message: {message}")]
DeserializationError { message: String },
#[error("Unknown operation type: {0}")]
UnknownOperation(String),
#[error("Unknown event type: {0}")]
UnknownEvent(String),
#[error("Invalid submission ID: {0}")]
InvalidSubmissionId(String),
#[error("Protocol version mismatch: expected {expected}, got {actual}")]
VersionMismatch { expected: String, actual: String },
#[error("Transport error: {0}")]
TransportError(String),
#[error("Channel closed")]
ChannelClosed,
}