// Code generated by oagen. DO NOT EDIT.

#[allow(unused_imports)]
use super::*;
#[allow(unused_imports)]
use crate::enums::*;
use serde::{Deserialize, Serialize};
/// Detailed evaluation information for frontend display.
/// The frontend reads evaluation data from this nested 'details' object
/// for compatibility with the ConditionalEvaluationsTable component.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConditionEvaluationDetails {
    /// 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>,
    /// Per-item breakdown for wildcard array conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub items: Option<Vec<ConditionEvaluationPerItem>>,
    /// Sub-condition evaluations for compound conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub sub_conditions: Option<Vec<ConditionEvaluationSubCondition>>,
    /// Logical operator combining sub-conditions
    #[serde(skip_serializing_if = "Option::is_none", default)]
    pub logical_operator: Option<ConditionEvaluationDetailsLogicalOperator>,
}
