use thiserror::Error;
#[derive(Error, Debug)]
pub enum MatcherError {
#[error("Event is missing required attribute: {0}")]
MissingAttribute(String),
#[error("Attribute '{0}' has incompatible type")]
IncompatibleAttributeType(String),
#[error("Invalid predicate in subscription: {0}")]
InvalidPredicate(String),
#[error("Failed to build matching tree: {0}")]
TreeBuildError(String),
#[error("Matching error: {0}")]
MatchingError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Unexpected error: {0}")]
Other(String),
}