use anyhow::Result;
use bytes::Bytes;
use futures::future::BoxFuture;
use futures::stream::BoxStream;
#[cfg(feature = "nats")]
mod nats;
mod stub;
#[cfg(feature = "nats")]
pub use self::nats::{NatsConfig, NatsPublisher, NatsSubscriber};
pub use stub::{StubBus, StubPublisher, StubSubscriber};
#[derive(Debug, Clone)]
pub struct Message {
pub subject: String,
pub payload: Bytes,
}
pub type Subscription = BoxStream<'static, Message>;
pub use kvbm_logical::pubsub::Publisher;
pub trait Subscriber: Send + Sync {
fn subscribe(&self, subject: &str) -> BoxFuture<'static, Result<Subscription>>;
}