//! Core framework traits and abstractions
//!
//! This module provides essential traits and abstractions used throughout
//! the Rustelo framework. These are truly generic interfaces that don't
//! belong to any specific domain.
//!
//! ## Key Principles
//!
//! - **Zero dependencies**: No external crates beyond serde
//! - **Generic abstractions**: Domain-agnostic interfaces
//! - **Extensibility**: Designed for framework extension points

use std::collections::HashMap;

pub use serde::{Deserialize, Serialize};

// Re-export serde for convenience
use crate::Environment;

/// Build information
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BuildInfo {
    /// Framework version
    pub framework_version: String,
    /// Build timestamp
    pub build_timestamp: String,
    /// Git commit hash
    pub git_commit: Option<String>,
    /// Build environment
    pub build_environment: Environment,
    /// Feature flags enabled at build time
    pub enabled_features: Vec<String>,
}
