use crate::{
ApiCapabilities, ApiError, CeremonySummary, DefinitionAnalysisView, PublishedDefinitionView,
RaiseInterventionRequest, RespondToInterventionRequest, StartCeremonyRequest,
};
#[async_trait::async_trait]
pub trait CeremonyEngineApi: Send + Sync {
fn capabilities(&self) -> ApiCapabilities;
async fn ceremonies(&self) -> Result<Vec<CeremonySummary>, ApiError>;
async fn ceremony(&self, ceremony_id: &str) -> Result<CeremonySummary, ApiError>;
async fn start_ceremony(
&self,
request: StartCeremonyRequest,
) -> Result<CeremonySummary, ApiError>;
async fn raise_intervention(
&self,
request: RaiseInterventionRequest,
) -> Result<CeremonySummary, ApiError>;
async fn respond_to_intervention(
&self,
request: RespondToInterventionRequest,
) -> Result<CeremonySummary, ApiError>;
async fn analyze_definition(
&self,
definition_yaml: &str,
) -> Result<DefinitionAnalysisView, ApiError>;
async fn publish_definition(
&self,
definition_yaml: &str,
) -> Result<PublishedDefinitionView, ApiError>;
}