//! TestCluster: Manages multiple ChaosNodes for distributed testing.
//!
//! This module provides a test cluster abstraction for distributed testing
//! with fault injection capabilities.
//!
//! # Example
//!
//! ```ignore
//! use stemedb_chaos::harness::TestCluster;
//! use stemedb_chaos::harness::test_cluster::{
//!     TestClusterCreationExt,
//!     TestClusterAccessExt,
//!     TestClusterSyncExt,
//!     TestClusterConvergenceExt,
//! };
//!
//! let mut cluster = TestCluster::spawn(5).await?;
//!
//! // Write some data
//! cluster.get_node_mut(0).write_assertion("key", "pred", 1000).await?;
//!
//! // Create partition
//! cluster.network().partition(&[0, 1, 2], &[3, 4]);
//!
//! // ... run tests ...
//!
//! // Heal and verify
//! cluster.network().heal();
//! cluster.sync_all().await?;
//! cluster.assert_converged();
//! ```

mod access;
mod convergence;
mod creation;
mod lifecycle;
mod sync;
mod tests;
mod types;

// Re-export the main type
pub use types::TestCluster;

// Re-export all extension traits for easy access
pub use access::TestClusterAccessExt;
pub use convergence::{ClusterSummary, TestClusterConvergenceExt, TestClusterSummaryExt};
pub use creation::TestClusterCreationExt;
pub use lifecycle::TestClusterLifecycleExt;
pub use sync::TestClusterSyncExt;
