use crate::core::coords::PixelCoord;
use crate::core::polarity::Polarity;
use crate::core::scalar::Scalar;
#[derive(Debug, Clone, Copy)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SeedPoint {
pub position: PixelCoord,
pub score: Scalar,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum ProposalSource {
Frst,
Rsd,
External,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Proposal {
pub seed: SeedPoint,
pub scale_hint: Option<Scalar>,
pub polarity: Polarity,
pub source: ProposalSource,
}