use thiserror::Error;
pub type DispatchResult<T> = Result<T, DispatchError>;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum DispatchError {
#[error("operation not found for selector {0:#04x}")]
OperationNotFound(u8),
#[error("invalid input: {0}")]
InvalidInput(String),
#[error("unknown operation type: {0}")]
UnknownOperationType(String),
#[error("missing parameter `{param}` for operation `{op}`")]
MissingParam { op: String, param: &'static str },
#[error("invalid continuation index {0}")]
InvalidContinuation(usize),
}