use thiserror::Error;

/// Result type used by rs-zero core helpers.
pub type CoreResult<T> = Result<T, CoreError>;

/// Errors produced by core configuration, logging, and service helpers.
#[derive(Debug, Error)]
pub enum CoreError {
    #[error("configuration error: {0}")]
    Config(#[from] config::ConfigError),

    #[error("subscriber initialization failed")]
    SubscriberInit,

    #[error("logging setup failed: {0}")]
    Logging(String),

    #[error("profiling setup failed: {0}")]
    Profiling(String),

    #[error("service error: {0}")]
    Service(String),
}
