use crate::constraint::{ConstraintId, ExpectedType};
use crate::structure::NodeId;
#[derive(Debug, Clone, PartialEq)]
pub struct ViolationDetail {
pub constraint_id: ConstraintId,
pub description: String,
pub suggestion: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum OperationError {
TypeMismatch {
expected: ExpectedType,
actual: String,
context: String,
},
NodeNotFound { node: NodeId },
SlotOccupied {
node: NodeId,
current_occupant: String,
},
ConstraintViolation {
violated_constraints: Vec<ViolationDetail>,
},
InvalidOperation { action: String, reason: String },
}