//! Feature Engineering Module — thin facade re-exporting from ml-features crate.
//!
//! Core feature extractors live in `ml-features`. This module keeps bridge files
//! that depend on types from multiple ml sub-crates (ensemble, regime, labeling, etc.).

// Re-export everything from ml-features
pub use ml_features::*;

// Bridge modules that stay in ml (cross-module dependencies)
pub mod extraction; // Depends on regime_adaptive/cusum/transition + microstructure + ofi_calculator
pub mod multi_timeframe; // Depends on NativeDType::BF16 for VarBuilder dtype
pub mod regime_adaptive; // Depends on ensemble::MarketRegime
pub mod regime_cusum; // Depends on regime::cusum
pub mod regime_transition; // Depends on ensemble::MarketRegime + regime::transition_matrix
pub mod sample_weights; // Depends on labeling::meta_labeling
pub mod unified; // Depends on safety module
pub mod production_adapter; // Depends on extraction::FeatureExtractor

// Re-export bridge module types
pub use extraction::{extract_ml_features, FeatureVector};
pub use regime_adaptive::RegimeAdaptiveFeatures;
pub use regime_cusum::RegimeCUSUMFeatures;
pub use regime_transition::RegimeTransitionFeatures;
pub use sample_weights::{SampleWeightCalculator, WeightingScheme};
pub use unified::{
    FeatureExtractionConfig, FeatureQualityMetrics, OrderBookLevel, UnifiedFeatureExtractor,
    UnifiedFinancialFeatures,
};
pub use production_adapter::ProductionFeatureExtractorAdapter;
pub use multi_timeframe::{
    bar_to_features, LstmEncoder, MultiTimeframeConfig, MultiTimeframeEncoder,
};

// Test helper function
#[cfg(test)]
pub fn create_mock_features() -> FeatureVector {
    [0.0; 42] // Return 42-dimension feature vector (40 base + 2 regime)
}
