//! A deliberately small, auditable ZIP implementation whose high-level operations
//! are selected independently at runtime.

mod client;
mod engine;
mod error;
mod format;
mod variants;

// The implementation-generation tool stages complete Rust modules here. The build
// script includes every `.rs` candidate, so cargo check/test is a real admission gate.
include!(concat!(env!("OUT_DIR"), "/generated_registry.rs"));

pub use client::{calls_for_event, Client, TelemetryEvent};
pub use engine::{variants_catalog, Composition, Engine, OperationReport, VariantInfo};
pub use error::{Result, ZipError};
pub use format::{Compression, Entry};

/// Names are stable API identifiers shared with the distribution service.
pub const SPEC_FUNCTIONS: &[&str] = &[
    "locate_end_of_central_directory",
    "parse_central_directory_entry",
    "parse_local_file_header",
    "decode_filename",
    "normalize_extraction_path",
    "decompress_entry",
    "validate_crc",
    "extract_entry",
    "list_archive",
];
