// compile_error if both conjure and tonic are disabled — the crate would be empty
#[cfg(not(any(feature = "conjure", feature = "tonic")))]
compile_error!("at least one of the `conjure` or `tonic` features must be enabled");

// Bazel (build_bazel.rs) or generate-bindings (build.rs): codegen into OUT_DIR at build time
#[cfg(all(feature = "conjure", any(bazel, feature = "generate-bindings")))]
mod conjure {
    include!(concat!(env!("OUT_DIR"), "/conjure/mod.rs"));
}

// Default Cargo: pre-generated into src/conjure/ (not active during _build pre-gen step)
#[cfg(all(feature = "conjure", not(any(bazel, feature = "generate-bindings")), not(feature = "_build")))]
mod conjure;

// Bazel or generate-bindings: proto stubs generated at build time into OUT_DIR
#[cfg(all(any(bazel, feature = "generate-bindings"), feature = "tonic"))]
mod proto {
    include!(concat!(env!("OUT_DIR"), "/proto/mod.rs"));
}

// Default Cargo: proto stubs pre-generated into src/proto/ (not active during _build pre-gen step)
#[cfg(all(
    not(any(bazel, feature = "generate-bindings")),
    feature = "tonic",
    not(feature = "_build")
))]
mod proto;

#[cfg(all(any(bazel, not(feature = "_build")), feature = "tonic"))]
pub mod tonic {
    pub use crate::proto::*;
}

#[cfg(all(feature = "conjure", not(feature = "_build")))]
pub use conjure::*;
