use crate::propose::extract::ResponseMap;
use crate::propose::seed::Proposal;
use crate::support::score::SupportScoreBreakdown;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum RejectionReason {
Degenerate,
LowScore,
RefinementFailed,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct RejectedProposal {
pub proposal: Proposal,
pub reason: RejectionReason,
pub score: SupportScoreBreakdown,
}
#[derive(Debug)]
#[non_exhaustive]
pub struct CircleDetectionDiagnostics {
pub response: ResponseMap,
pub proposals: Vec<Proposal>,
pub rejected: Vec<RejectedProposal>,
pub score_breakdowns: Vec<SupportScoreBreakdown>,
}