use thiserror::Error;
#[derive(Debug, Error)]
pub enum ElidError {
#[error("Invalid dimension: got {got}, expected range {expected_range:?}")]
InvalidDimension {
got: usize,
expected_range: (usize, usize),
},
#[error("Invalid embedding value (NaN or Inf detected)")]
InvalidValue,
#[error("Invalid base32hex encoding")]
InvalidEncoding,
#[error("Invalid ID header")]
InvalidHeader,
#[error("Hamming radius too large: {0} (max 3)")]
RadiusTooLarge(u8),
#[error("Profile mismatch: expected {expected}, got {got}")]
ProfileMismatch {
expected: String,
got: String,
},
#[error("Transform not found: ID {0}")]
TransformNotFound(u16),
#[error("Decoding not supported for this profile type")]
DecodingNotSupported,
#[error("Invalid precision: {0}")]
InvalidPrecision(String),
#[error("Projection error: {0}")]
ProjectionError(String),
#[error("Insufficient data: expected {expected} bytes, got {got}")]
InsufficientData {
expected: usize,
got: usize,
},
#[error("Invalid metadata in header: {0}")]
InvalidMetadata(String),
}