1use alloc::{boxed::Box, string::String, vec::Vec};
12use core::fmt::Debug;
13use derive_more::From;
14
15pub use crate::metadata::{MetadataConversionError, MetadataError};
17pub use scale_decode::{visitor::DecodeError as VisitorDecodeError, Error as DecodeError};
18pub use scale_encode::Error as EncodeError;
19pub use sp_core::crypto::SecretStringError;
20pub use sp_runtime::transaction_validity::TransactionValidityError;
21
22mod dispatch_error;
23pub use dispatch_error::*;
24
25#[derive(Debug, From)]
29pub enum Error {
30 Codec(codec::Error),
32 Serialization(serde_json::error::Error),
34 SecretString(SecretStringError),
36 InvalidMetadata(MetadataConversionError),
38 Metadata(MetadataError),
40 Runtime(DispatchError),
42 DecodeValue(Box<DecodeError>),
44 EncodeValue(Box<EncodeError>),
46 Visitor(VisitorDecodeError),
48 Unknown(Vec<u8>),
50 Other(String),
52}
53
54impl From<&str> for Error {
55 fn from(error: &str) -> Self {
56 Error::Other(error.into())
57 }
58}
59
60impl From<DecodeError> for Error {
61 fn from(error: DecodeError) -> Self {
62 Error::DecodeValue(Box::new(error))
63 }
64}
65
66impl From<EncodeError> for Error {
67 fn from(error: EncodeError) -> Self {
68 Error::EncodeValue(Box::new(error))
69 }
70}