// Code generated by oagen. DO NOT EDIT.

#[allow(unused_imports)]
use super::*;
#[allow(unused_imports)]
use crate::enums::*;
use serde::{Deserialize, Serialize};
/// Complete evaluation result for a termination condition.
/// This model represents the full evaluation data sent to the frontend
/// for displaying in the Exit Trigger Evaluation dialog.
/// The frontend expects data at both top-level and nested in 'details'
/// for compatibility with the ConditionalEvaluationsTable component.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConditionEvaluationResult {
    /// Unique identifier for this condition
    pub condition_id: String,
    /// JSON path that was evaluated
    ///
    /// Defaults to ``.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub path: Option<String>,
    /// Comparison operator used
    ///
    /// Defaults to ``.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub operator: Option<String>,
    /// Expected value
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub expected: Option<serde_json::Value>,
    /// Actual value found
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub actual: Option<serde_json::Value>,
    /// Whether the condition matched
    ///
    /// Defaults to `false`.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub matched: Option<bool>,
    /// Branch name (always 'exit' for while-loop termination)
    ///
    /// Defaults to `exit`.
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub branch_name: Option<String>,
    /// Logical operator for compound conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub logical_operator: Option<ConditionEvaluationResultLogicalOperator>,
    /// Per-item breakdown for wildcard array conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub per_item: Option<Vec<ConditionEvaluationPerItem>>,
    /// Sub-condition evaluations for compound conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub sub_evaluations: Option<Vec<ConditionEvaluationSubCondition>>,
    /// Nested details object for frontend compatibility
    pub details: ConditionEvaluationDetails,
}
