1 2 3 4 5 6 7 8 9
use async_trait::async_trait; use crate::models::LifecycleEvent; /// Publishes lifecycle events for workflow state transitions. #[async_trait] pub trait LifecyclePublisher: Send + Sync { async fn publish(&self, event: LifecycleEvent) -> crate::Result<()>; }