use thiserror::Error;
pub type Result<T> = std::result::Result<T, ZkpError>;
#[non_exhaustive]
#[derive(Debug, Error)]
pub enum ZkpError {
#[error("Invalid commitment: {0}")]
InvalidCommitment(String),
#[error("Invalid public key")]
InvalidPublicKey,
#[error("Invalid scalar value")]
InvalidScalar,
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("Fiat-Shamir domain separator must not be empty")]
InvalidDomainSeparator,
#[error("verification failed")]
VerificationFailed,
}