use alloc::string::String;
use alloc::string::ToString;
use bitcoin::consensus::encode::Error as BitcoinError;
use core::fmt::{Debug, Display, Formatter};
use serde_bolt::bitcoin;
#[derive(Debug, Clone)]
pub enum Error {
UnexpectedType(u16),
BadFraming,
Bitcoin(String),
TrailingBytes(usize, u16),
ShortRead,
MessageTooLarge,
Eof,
Io(String),
DeveloperField,
}
impl From<BitcoinError> for Error {
fn from(e: BitcoinError) -> Self {
Error::Bitcoin(e.to_string())
}
}
impl From<serde_bolt::io::Error> for Error {
fn from(e: serde_bolt::io::Error) -> Self {
Error::Io(e.to_string())
}
}
pub type Result<T> = core::result::Result<T, Error>;
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
Debug::fmt(self, f)
}
}
#[cfg(feature = "std")]
impl std::error::Error for Error {}