use thiserror::Error;
#[derive(Debug, Error)]
pub enum CurveletError {
#[error("image dimensions must be non-zero, got {rows}×{cols}")]
ZeroDimension { rows: usize, cols: usize },
#[error("image contains non-finite values (NaN or Inf)")]
NonFiniteInput,
#[error("num_scales must be in [2, 10], got {0}")]
InvalidScaleCount(usize),
#[error(
"directions_per_scale has length {got}, expected {expected} \
(num_scales - 2 detail scales)"
)]
DirectionCountMismatch { expected: usize, got: usize },
#[error("direction count must be ≥ 4 and a multiple of 4, got {0}")]
InvalidDirectionCount(usize),
#[error("coefficient structure is inconsistent: {0}")]
InconsistentCoeffs(String),
}