use alloc::{boxed::Box, string::String, vec::Vec};
use core::fmt::Debug;
use derive_more::From;
pub use crate::metadata::{MetadataConversionError, MetadataError};
pub use scale_decode::{visitor::DecodeError as VisitorDecodeError, Error as DecodeError};
pub use scale_encode::Error as EncodeError;
pub use sp_core::crypto::SecretStringError;
pub use sp_runtime::transaction_validity::TransactionValidityError;
mod dispatch_error;
pub use dispatch_error::*;
#[derive(Debug, From)]
pub enum Error {
Codec(codec::Error),
Serialization(serde_json::error::Error),
SecretString(SecretStringError),
InvalidMetadata(MetadataConversionError),
Metadata(MetadataError),
Runtime(DispatchError),
DecodeValue(Box<DecodeError>),
EncodeValue(Box<EncodeError>),
Visitor(VisitorDecodeError),
Unknown(Vec<u8>),
Other(String),
}
impl From<&str> for Error {
fn from(error: &str) -> Self {
Error::Other(error.into())
}
}
impl From<DecodeError> for Error {
fn from(error: DecodeError) -> Self {
Error::DecodeValue(Box::new(error))
}
}
impl From<EncodeError> for Error {
fn from(error: EncodeError) -> Self {
Error::EncodeValue(Box::new(error))
}
}