use serde::{Deserialize, Serialize};
use thiserror::Error;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginFieldError {
pub field: String,
pub code: String,
pub message: String,
}
#[derive(Debug, Clone, Error, Serialize, Deserialize)]
pub enum PluginError {
#[error("invalid input: {0}")]
InvalidInput(String),
#[error("validation errors: {0:?}")]
ValidationErrors(Vec<PluginFieldError>),
#[error("calculation failed: {0}")]
Calculation(String),
#[error("sector not supported by this plugin: {0}")]
UnsupportedSector(String),
#[error("schema version not supported: {0}")]
UnsupportedSchemaVersion(String),
#[error("capability not available: {0}")]
CapabilityNotAvailable(String),
#[error("internal plugin error: {0}")]
Internal(String),
}