chik_consensus/
error.rs

1use crate::validation_error::ValidationErr;
2use klvm_traits::{FromKlvmError, ToKlvmError};
3use klvmr::error::EvalErr;
4use thiserror::Error;
5
6#[cfg(feature = "py-bindings")]
7use pyo3::PyErr;
8
9#[derive(Debug, PartialEq, Error)]
10pub enum Error {
11    #[error("To KLVM {0}")]
12    ToKlvm(#[from] ToKlvmError),
13
14    #[error("From KLVM {0}")]
15    FromKlvm(#[from] FromKlvmError),
16
17    #[error("Eval {0}")]
18    Eval(#[from] EvalErr),
19
20    #[error("Validation {0}")]
21    Validation(#[from] ValidationErr),
22
23    #[error("BLS {0}")]
24    Bls(#[from] chik_bls::Error),
25
26    #[error("not a singleton mod hash")]
27    NotSingletonModHash,
28
29    #[error("inner puzzle hash mismatch")]
30    InnerPuzzleHashMismatch,
31
32    #[error("puzzle hash mismatch")]
33    PuzzleHashMismatch,
34
35    #[error("coin amount mismatch")]
36    CoinAmountMismatch,
37
38    #[error("coin amount is even")]
39    CoinAmountEven,
40
41    #[error("parent coin mismatch")]
42    ParentCoinMismatch,
43
44    #[error("coin mismatch")]
45    CoinMismatch,
46
47    #[error("expected lineage proof, found eve proof")]
48    ExpectedLineageProof,
49
50    #[error("{0}")]
51    Custom(String),
52}
53
54#[cfg(feature = "py-bindings")]
55impl From<Error> for PyErr {
56    fn from(err: Error) -> PyErr {
57        pyo3::exceptions::PyValueError::new_err(err.to_string())
58    }
59}
60
61pub type Result<T> = std::result::Result<T, Error>;