//! Temporal Fusion Transformer (TFT) Trainer Module
//!
//! This module provides a comprehensive implementation of the Temporal Fusion Transformer
//! for time-series forecasting tasks. The module is organized into the following submodules:
//!
//! - [`config`]: Configuration structures for TFT training
//! - [`types`]: Type definitions for metrics, statistics, and training progress
//! - [`model`]: TFT model architecture implementation
//! - [`trainer`]: Training logic and optimization routines
//! - [`tests`]: Unit and integration tests
//!
//! # Architecture
//!
//! The TFT trainer is structured to separate concerns:
//! - Configuration (`TFTTrainerConfig`) defines hyperparameters and training settings
//! - Types module provides shared data structures for metrics and statistics
//! - Model module implements the neural network architecture
//! - Trainer module orchestrates the training loop and optimization
//!
//! # Usage
//!
//! ```rust,ignore
//! use crate::trainers::tft::{TFTTrainer, TFTTrainerConfig};
//!
//! let config = TFTTrainerConfig::default();
//! let trainer = TFTTrainer::new(config)?;
//! // Training logic here
//! ```
//!
//! # Backward Compatibility
//!
//! All public types are re-exported at the module root to maintain compatibility
//! with existing code that imports from `crate::trainers::tft`.

// Module declarations
pub mod config;
pub mod model;
pub mod trainer;
pub mod types;

#[cfg(test)]
mod tests;

// Re-exports for backward compatibility
pub use config::TFTTrainerConfig;
pub use model::TFTModel;
pub use trainer::TFTTrainer;
pub use types::{ResourceUsage, TrainingMetrics, TrainingProgress};
