use snarkvm_circuit_environment::ConstraintUnsatisfied;
use snarkvm_console_network::prelude::Error as AnyhowError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum EvalError {
#[error(transparent)]
Assert(#[from] AssertError),
#[error(transparent)]
Anyhow(#[from] AnyhowError),
}
#[derive(Debug, Error)]
pub enum FinalizeError {
#[error(transparent)]
Eval(#[from] EvalError),
#[error(transparent)]
Anyhow(#[from] AnyhowError),
}
#[derive(Debug, Error)]
pub enum ExecError {
#[error(transparent)]
Constraint(#[from] ConstraintUnsatisfied),
#[error(transparent)]
Anyhow(#[from] AnyhowError),
}
#[derive(Debug, Error)]
pub enum AssertError {
#[error("'assert.eq' failed: '{lhs}' is not equal to '{rhs}' (should be equal)")]
Eq {
lhs: String,
rhs: String,
},
#[error("'assert.neq' failed: '{lhs}' is equal to '{rhs}' (should not be equal)")]
Neq {
lhs: String,
rhs: String,
},
#[error("Invalid 'assert' variant: {variant}")]
Invalid {
variant: u8,
},
}