pub use crate::contract::abi::studio::*;
use ::miniscript::{self, *};
use bitcoin::util::taproot::TaprootBuilderError;
use sapio_base::txindex::TxIndexError;
use sapio_ctv_emulator_trait::EmulatorError;
#[derive(Debug)]
pub enum ObjectError {
MiniscriptPolicy(miniscript::policy::compiler::CompilerError),
Miniscript(miniscript::Error),
TaprootBulderError(TaprootBuilderError),
UnknownScriptType(bitcoin::Script),
OpReturnTooLong,
Custom(Box<dyn std::error::Error>),
}
impl std::error::Error for ObjectError {}
impl From<TaprootBuilderError> for ObjectError {
fn from(e: TaprootBuilderError) -> ObjectError {
ObjectError::TaprootBulderError(e)
}
}
impl From<EmulatorError> for ObjectError {
fn from(e: EmulatorError) -> Self {
ObjectError::Custom(Box::new(e))
}
}
impl From<TxIndexError> for ObjectError {
fn from(e: TxIndexError) -> Self {
ObjectError::Custom(Box::new(e))
}
}
impl From<miniscript::policy::compiler::CompilerError> for ObjectError {
fn from(v: miniscript::policy::compiler::CompilerError) -> Self {
ObjectError::MiniscriptPolicy(v)
}
}
impl From<miniscript::Error> for ObjectError {
fn from(v: miniscript::Error) -> Self {
ObjectError::Miniscript(v)
}
}
impl std::fmt::Display for ObjectError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}