use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{
BridgeError, ImageJob, ImageJobPage, ImageJobUpdate, ImagePreset, ImagePresetCreate,
ImagePresetPage, ImagePresetWrite, ImageRequest, ImageResponse, ProviderCapabilities,
ProviderDescriptor, ProviderEvent, ValidationIssue,
};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(tag = "message", content = "body", rename_all = "snake_case")]
pub enum ContractMessage {
Request(ImageRequest),
Response(ImageResponse),
Capabilities(ProviderCapabilities),
Provider(ProviderDescriptor),
Event(ProviderEvent),
Job(Box<ImageJob>),
JobPage(ImageJobPage),
JobUpdate(ImageJobUpdate),
Preset(ImagePreset),
PresetCreate(ImagePresetCreate),
PresetWrite(ImagePresetWrite),
PresetPage(ImagePresetPage),
Error(BridgeError),
ValidationIssue(ValidationIssue),
}
#[must_use]
pub fn contract_schema() -> schemars::Schema {
schemars::schema_for!(ContractMessage)
}