//! Hydro compilation: the Hydro IR, Hydro to DFIR translation, and traits for deployment targets.

#[expect(missing_docs, reason = "TODO")]
pub mod ir;

#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
#[expect(missing_docs, reason = "TODO")]
pub mod built;

#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
#[expect(missing_docs, reason = "TODO")]
pub mod compiled;

#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
#[expect(missing_docs, reason = "TODO")]
pub mod deploy;

#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
pub mod embedded;

pub mod embedded_runtime;

#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
#[expect(missing_docs, reason = "TODO")]
pub mod deploy_provider;

#[expect(missing_docs, reason = "TODO")]
pub mod builder;

#[cfg(stageleft_runtime)]
#[cfg(feature = "trybuild")]
#[cfg_attr(docsrs, doc(cfg(feature = "trybuild")))]
#[expect(missing_docs, reason = "TODO")]
#[cfg_attr(
    not(any(feature = "deploy", feature = "sim", feature = "maelstrom")),
    expect(
        dead_code,
        reason = "\"trybuild\" feature should be enabled by \"deploy\" / \"sim\" / \"maelstrom\""
    )
)]
pub mod trybuild;

#[cfg(stageleft_runtime)]
#[cfg(feature = "trybuild")]
#[cfg_attr(docsrs, doc(cfg(feature = "trybuild")))]
pub use trybuild::generate::init_test;

/// Ident used for the DFIR runtime instance variable name.
#[cfg(feature = "build")]
#[cfg_attr(docsrs, doc(cfg(feature = "build")))]
pub(crate) const DFIR_IDENT: &str = "flow";
