//! Event bus protocol definition.
//!
//! This module defines the [`EventBus`] trait — the unified abstraction
//! for event publishing and subscription. Implementations may target
//! any underlying transport (in-memory broadcast channels, Kafka, NATS,
//! Redis Streams, etc.) without leaking transport-specific details to
//! the rest of the system.
//!
//! The trait supports both individual and batched publication, and
//! returns a `'static`-lifetime event stream from `subscribe` so that
//! consumers may freely move the stream into spawned async tasks
//! (e.g. `tokio::spawn`) without lifetime constraints.
//!
use crate::;
use async_trait;
use BoxStream;
/// Event bus: responsible for dispatching events to subscribers and
/// exposing event streams for consumption.