1use super::batch;
5use crate::{merkle_channel, merkle_tree};
6
7#[derive(Debug, thiserror::Error)]
8pub enum Error {
9 #[error("Merkle channel error: {0}")]
10 Channel(merkle_channel::Error),
11 #[error("Reed-Solomon encoding error: {0}")]
12 Verification(#[from] VerificationError),
13}
14
15impl From<binius_ip::channel::Error> for Error {
16 fn from(err: binius_ip::channel::Error) -> Self {
17 Self::Channel(err.into())
18 }
19}
20
21impl From<merkle_channel::Error> for Error {
22 fn from(err: merkle_channel::Error) -> Self {
23 match err {
24 merkle_channel::Error::MerkleTree(merkle_tree::Error::Verification(err)) => {
25 Self::Verification(err.into())
26 }
27 _ => Self::Channel(err),
28 }
29 }
30}
31
32impl From<batch::Error> for Error {
33 fn from(err: batch::Error) -> Self {
34 match err {
35 batch::Error::Channel(err) => err.into(),
36 batch::Error::IPChannel(err) => Self::Channel(err.into()),
37 }
38 }
39}
40
41#[derive(Debug, thiserror::Error)]
42pub enum VerificationError {
43 #[error("Merkle tree error: {0}")]
44 MerkleError(#[from] merkle_tree::VerificationError),
45}