use thiserror::Error;
#[derive(Debug, Error)]
pub enum ProverError {
#[error("Invalid witness: {0}")]
InvalidWitness(String),
#[error("Constraint violation: {0}")]
ConstraintViolation(String),
#[error("Policy validation failed: {0}")]
PolicyValidationFailed(String),
#[error("Trace generation error: {0}")]
TraceGenerationError(String),
#[error("Proof generation failed: {0}")]
ProofGenerationFailed(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Invalid public inputs: {0}")]
InvalidPublicInputs(String),
}
impl ProverError {
pub fn invalid_witness<S: Into<String>>(msg: S) -> Self {
Self::InvalidWitness(msg.into())
}
pub fn constraint_violation<S: Into<String>>(msg: S) -> Self {
Self::ConstraintViolation(msg.into())
}
pub fn policy_validation_failed<S: Into<String>>(msg: S) -> Self {
Self::PolicyValidationFailed(msg.into())
}
}