//! Shared type definitions for the CLI
//!
//! This module contains type definitions that are shared across multiple
//! layers of the CLI (commands, handlers, services).
//!
//! # Organization
//!
//! - **cli**: CLI command types (Clap Args, Commands enum)
//! - **credentials**: Authentication credentials types
//! - **project**: Project configuration types (mecha10.json)
//! - **simulation**: Simulation configuration types (runtime and project-level)
//!
//! # Design Principles
//!
//! - **Domain-focused**: Types represent domain concepts, not CLI concerns
//! - **Shared**: Only types used in multiple places belong here
//! - **Serializable**: Most types derive Serialize/Deserialize
//! - **Well-documented**: All public types have rustdoc comments

// Type modules
pub mod cli;
pub mod credentials;
pub mod project;
pub mod simulation;

// Re-exports for convenience
pub use cli::{Cli, Commands};
#[allow(unused_imports)]
pub use credentials::{AuthError, Credentials, DeviceCodeResponse, DeviceCodeStatus};
#[allow(unused_imports)]
pub use project::{load_project_config, NodeSource, NodeSpec, NodesConfig, ProjectConfig};
// Types available for future use (environments config support)
#[allow(unused_imports)]
pub use project::{EnvironmentConfig, EnvironmentsConfig};
pub use simulation::SimulationConfig;
