//! g3 plugin contracts: the seams the `g3rs-runner` dispatches over.
//!
//! Two erasure traits carry values across the pipeline hops (each: a stable
//! id + a downcast handle): `EngineRequirement` (in `aqc-file-engine-core`)
//! and `AdapterRequirement` (here), and two stage contracts (`Policy`,
//! `Adapter`). The runner holds plugins as trait objects and routes by id; it
//! never names a concrete policy or adapter.

#[cfg(feature = "api")]
pub mod adapter;
#[cfg(feature = "api")]
pub mod adapter_requirement;
#[cfg(feature = "api")]
pub mod engine_output;
#[cfg(feature = "api")]
pub mod policy;

#[cfg(feature = "api")]
pub use adapter::{Adapter, AdapterError, LinterCommand};
#[cfg(feature = "api")]
pub use adapter_requirement::AdapterRequirement;
#[cfg(feature = "api")]
pub use engine_output::{
    EngineRequirementOutput, EngineRequirementOutputItem, boxed_engine_requirement,
};
#[cfg(feature = "api")]
pub use policy::{Policy, PolicyError};
