//! Error types for sidebyside-claude

use thiserror::Error;

/// Claude error type
#[derive(Error, Debug)]
pub enum ClaudeError {
    /// API request error
    #[error("API request error: {0}")]
    ApiRequest(String),

    /// Decision not found during replay
    #[error("Decision not found for context hash: {0}")]
    DecisionNotFound(String),

    /// Decision store error
    #[error("Decision store error: {0}")]
    DecisionStore(String),

    /// Serialization error
    #[error("Serialization error: {0}")]
    Serialization(#[from] serde_json::Error),

    /// HTTP error
    #[error("HTTP error: {0}")]
    Http(#[from] reqwest::Error),

    /// Core error
    #[error("Core error: {0}")]
    Core(#[from] sidebyside_core::CoreError),
}
