//! ClickHouse native writer types for the streaming sidecar (#318).
//!
//! Provides the foundational types for writing completed bars directly
//! from Rust to ClickHouse, eliminating Python from the hot path.
//!
//! # Modules
//!
//! - `row`: `ClickHouseBarRow` struct mapping CompletedBar fields to CH columns
//! - `dedup`: MD5 dedup token generation with Python hashlib parity
//! - `config`: `ClickHouseWriterConfig` with batch thresholds and env overrides
//! - `summary`: X-ClickHouse-Summary JSON response parser
//! - `flush_thread`: Dedicated flush thread with batch buffering and retry
//! - `sink`: `ClickHouseWriterSink` implementing `BarSink` trait
//! - `schema`: Plugin column discovery via `system.columns`

pub mod config;
pub mod dead_letter;
pub mod dedup;
pub mod guards;
pub mod flush_thread;
pub mod niffler;
pub mod row;
pub mod schema;
pub mod sink;
pub mod summary;

pub use config::ClickHouseWriterConfig;
pub use dedup::{compute_batch_dedup_token, compute_dedup_token};
pub use flush_thread::FlushThreadMetrics;
pub use row::ClickHouseBarRow;
pub use sink::ClickHouseWriterSink;
pub use summary::{ClickHouseSummary, parse_summary, verify_written_rows, SUMMARY_HEADER};
