pub use serde::{Deserialize, Serialize};

pub use crate::{CacheConfig, Environment, SecurityConfig};

/// Framework configuration
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FrameworkConfig {
    /// Current environment
    pub environment: Environment,
    /// Debug mode enabled
    pub debug_enabled: bool,
    /// Hot reload enabled (development)
    pub hot_reload: bool,
    /// Cache configuration
    pub cache_config: CacheConfig,
    /// Security configuration
    pub security_config: SecurityConfig,
}

impl Default for FrameworkConfig {
    fn default() -> Self {
        Self {
            environment: Environment::Development,
            debug_enabled: true,
            hot_reload: true,
            cache_config: CacheConfig::default(),
            security_config: SecurityConfig::default(),
        }
    }
}
