use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use systemprompt_identifiers::{NotificationRuleId, UserId};
use super::attention::{Attention, AttentionReason};
use super::event::NotificationEvent;
use super::route::RoutePlan;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct SimulateRequest {
pub event: NotificationEvent,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct SimulateResponse {
pub plan: RoutePlan,
pub decisions: Vec<SimulatedRecipient>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct SimulatedRecipient {
pub user: UserId,
pub attention: Option<Attention>,
pub reason: AttentionReason,
pub matched_rules: Vec<NotificationRuleId>,
pub withheld_reason: Option<String>,
}