///|
/// Records one support vector's signed contribution to a decision value.
pub struct SupportContribution {
  retained_index : Int
  retained_row : Array[Double]
  retained_label : Int
  retained_alpha : Double
  evaluated_kernel_value : Double
  signed_decision_contribution : Double
} derive(Eq, Debug)

///|
/// Explains a binary decision as bias plus support-vector contributions.
pub struct BinaryPredictionExplanation {
  output_class : Int
  signed_decision_value : Double
  model_bias : Double
  ordered_contributions : Array[SupportContribution]
} derive(Eq, Debug)

///|
/// Explains an OvR prediction with class-aligned binary decision scores.
pub struct MulticlassPredictionExplanation {
  output_class : Int
  ordered_classes : Array[Int]
  ordered_scores : Array[Double]
} derive(Eq, Debug)