//! I/O module: Streaming parsers and compression
//!
//! This module implements streaming architecture with constant memory (~5 MB)
//! regardless of dataset size, following Rules 2-6 from OPTIMIZATION_RULES.md.

pub mod compression;
mod fasta;
mod fastq;
mod paired;

pub use compression::{decompress_bgzip_parallel, CompressedReader, DataSource, MMAP_THRESHOLD};
pub use fasta::FastaStream;
pub use fastq::FastqStream;
pub use paired::PairedFastqStream;

// Week 3-4: Network streaming (Rule 6)
#[cfg(feature = "network")]
pub mod network;
#[cfg(feature = "network")]
pub use network::{HttpClient, HttpReader};

// Week 3-4: SRA integration (Rule 6)
#[cfg(feature = "network")]
pub mod sra;
#[cfg(feature = "network")]
pub use sra::{is_sra_accession, sra_to_url};
