use thiserror::Error;

#[derive(Debug, Error)]
pub enum ConfigError {
    #[error("config key '{key}' not found")]
    NotFound { key: String },

    #[error("config key '{key}': expected {expected}, got '{got}'")]
    TypeMismatch {
        key: String,
        expected: String,
        got: String,
    },

    #[error("config parse error: {0}")]
    ParseError(String),

    #[error("config source error '{source_name}': {message}")]
    SourceError { source_name: String, message: String },
}
