use thiserror::Error;
#[derive(Clone, Debug, PartialEq, Error)]
pub enum ParseError {
#[error("malformed vector string: no '/' separator found")]
MalformedVectorString,
#[error("invalid vector prefix: expected prefix to start with 'CVSS:', found '{found}'")]
InvalidPrefixLabel { found: String },
#[error("malformed CVSS version format: '{version}' (expected 'X.Y')")]
MalformedPrefixVersion { version: String },
#[error("invalid or unsupported CVSS version: '{version}'")]
InvalidPrefixVersion { version: String },
#[error("invalid component format: '{component}' (expected 'KEY:VALUE')")]
InvalidComponent { component: String },
#[error("unknown metric abbreviation: '{metric}'")]
UnknownMetric { metric: String },
#[error("invalid value '{value}' for metric '{metric}'")]
InvalidMetricValue { metric: String, value: String },
#[error("missing required metric: '{metric}'")]
MissingRequiredMetric { metric: String },
#[error("duplicate metric: '{metric}'")]
DuplicateMetric { metric: String },
}