1use crate::consensus::ConsensusError;
2use crate::vertex::VertexError;
3use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum DagError {
8 #[error("Node {0} already exists")]
10 NodeExists(String),
11
12 #[error("Node {0} not found")]
14 NodeNotFound(String),
15
16 #[error("Edge would create cycle between {from} and {to}")]
18 CycleDetected {
19 from: String,
21 to: String,
23 },
24
25 #[error("Parent node {0} missing for edge")]
27 MissingParent(String),
28
29 #[error("Child node {0} missing for edge")]
31 MissingChild(String),
32
33 #[error("Invalid state transition for node {0}")]
35 InvalidStateTransition(String),
36
37 #[error("Consensus error: {0}")]
39 ConsensusError(String),
40
41 #[error("Vertex error: {0}")]
43 VertexError(#[from] VertexError),
44}
45
46impl From<ConsensusError> for DagError {
47 fn from(err: ConsensusError) -> Self {
48 DagError::ConsensusError(err.to_string())
49 }
50}