use thiserror::Error;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum KynVdfError {
#[error("Invalid proof length: expected {expected} bytes, got {actual}")]
InvalidProofLength { expected: usize, actual: usize },
#[error("Invalid seed: {0}")]
InvalidSeed(String),
#[error("Invalid discriminant size: {0} bits (must be a non-zero multiple of 8)")]
InvalidDiscriminantSize(usize),
#[error("Failed to generate discriminant: {0}")]
DiscriminantError(String),
#[error("Quadratic form (de)serialization failed: {0}")]
FormDeserializationError(String),
#[error("Invalid quadratic form: discriminant identity b² - 4ac = D does not hold")]
InvalidDiscriminantIdentity,
#[error("Class group arithmetic error: {0}")]
ArithmeticError(String),
#[error("Invalid iteration count: {0} (must be ≥ 1)")]
InvalidIterations(u64),
#[error("VDF proof rejected: π^B · x^r ≠ y (proof does not verify)")]
VerificationFailed,
}