use alloc::boxed::Box; use alloy_rpc_types_engine::ForkchoiceUpdateError; /// Represents all error cases when handling a new payload. /// /// This represents all possible error cases that must be returned as JSON RCP errors back to the /// beacon node. #[derive(Debug, thiserror::Error)] pub enum BeaconOnNewPayloadError { /// Thrown when the engine task is unavailable/stopped. #[error("beacon consensus engine task stopped")] EngineUnavailable, /// An internal error occurred, not necessarily related to the payload. #[error(transparent)] Internal(Box), } impl BeaconOnNewPayloadError { /// Create a new internal error. pub fn internal(e: E) -> Self { Self::Internal(Box::new(e)) } } /// Represents error cases for an applied forkchoice update. /// /// This represents all possible error cases, that must be returned as JSON RPC errors back to the /// beacon node. #[derive(Debug, thiserror::Error)] pub enum BeaconForkChoiceUpdateError { /// Thrown when a forkchoice update resulted in an error. #[error("forkchoice update error: {0}")] ForkchoiceUpdateError(#[from] ForkchoiceUpdateError), /// Thrown when the engine task is unavailable/stopped. #[error("beacon consensus engine task stopped")] EngineUnavailable, /// An internal error occurred, not necessarily related to the update. #[error(transparent)] Internal(Box), } impl BeaconForkChoiceUpdateError { /// Create a new internal error. pub fn internal(e: E) -> Self { Self::Internal(Box::new(e)) } }