use super::RpcError;
#[derive(Debug, thiserror::Error)]
pub enum EventProcessingError {
#[error("Failed to decode event: {details}")]
DecodeFailed {
details: String,
},
#[error("Missing configuration: {field}")]
ConfigurationMissing {
field: String,
},
#[error("RPC error: {0}")]
Rpc(#[from] RpcError),
#[error("Invalid input: {details}")]
InvalidInput {
details: String,
},
#[error("RPC call failed: {details}")]
RpcFailed {
details: String,
},
}
impl EventProcessingError {
pub fn decode_failed(details: impl Into<String>) -> Self {
EventProcessingError::DecodeFailed {
details: details.into(),
}
}
pub fn configuration_missing(field: impl Into<String>) -> Self {
EventProcessingError::ConfigurationMissing {
field: field.into(),
}
}
pub fn missing_rpc_url(chain: impl std::fmt::Display) -> Self {
Self::configuration_missing(format!("RPC_URL for chain {}", chain))
}
pub fn invalid_input(details: impl Into<String>) -> Self {
EventProcessingError::InvalidInput {
details: details.into(),
}
}
pub fn rpc_failed(details: impl Into<String>) -> Self {
EventProcessingError::RpcFailed {
details: details.into(),
}
}
}