use bn::{CurveError, FieldError, GroupError};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("Invalid witness")]
InvalidWitness,
#[error("Invalid x length")]
InvalidXLength,
#[error("Invalid data")]
InvalidData,
#[error("Invalid point in subgroup check")]
InvalidPoint,
#[error("Failed to get Fr from random bytes")]
FailedToGetFrFromRandomBytes,
#[error("BN254 Field Error: {0}")]
Field(FieldError),
#[error("BN254 Group Error: {0}")]
Group(GroupError),
#[error("BN254 Curve Error: {0}")]
Curve(CurveError),
#[error("Invalid program vkey hash")]
InvalidProgramVkeyHash,
}