//
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
//
// Sprint: SPRINT_20260105_002_004_TEST_policy_explainability
// Task: PEXP-003
namespace StellaOps.Testing.Explainability;
///
/// Interface for services that produce explainable decisions.
///
/// Type of input to the decision.
/// Type of output from the decision.
public interface IExplainableDecision
{
///
/// Evaluate input and produce output with explanation.
///
/// The input to evaluate.
/// Cancellation token.
/// Result with explanation.
Task> EvaluateWithExplanationAsync(
TInput input,
CancellationToken ct = default);
}
///
/// Marker interface for decisions that support explanation.
///
public interface IExplainable
{
///
/// Gets whether explanations are enabled.
///
bool ExplanationsEnabled { get; }
///
/// Enable or disable explanations.
///
/// Whether to enable explanations.
void SetExplanationsEnabled(bool enabled);
}