use crate::consensus::ConsensusError;
use crate::vertex::VertexError;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum DagError {
#[error("Node {0} already exists")]
NodeExists(String),
#[error("Node {0} not found")]
NodeNotFound(String),
#[error("Edge would create cycle between {from} and {to}")]
CycleDetected {
from: String,
to: String,
},
#[error("Parent node {0} missing for edge")]
MissingParent(String),
#[error("Child node {0} missing for edge")]
MissingChild(String),
#[error("Invalid state transition for node {0}")]
InvalidStateTransition(String),
#[error("Consensus error: {0}")]
ConsensusError(String),
#[error("Vertex error: {0}")]
VertexError(#[from] VertexError),
}
impl From<ConsensusError> for DagError {
fn from(err: ConsensusError) -> Self {
DagError::ConsensusError(err.to_string())
}
}