pub mod algorithms;
pub mod models;
#[cfg(feature = "cuda")]
pub mod gpu;
pub use algorithms::bfs::{bfs_parallel, bfs_sequential, BfsConfig};
pub use algorithms::scc::{scc_kosaraju, scc_tarjan, SccConfig};
pub use algorithms::spmv::{spmv, spmv_parallel, SpmvConfig};
pub use algorithms::union_find::{union_find_parallel, union_find_sequential, UnionFind};
pub use models::csr::{CsrMatrix, CsrMatrixBuilder};
pub use models::node::{ComponentId, Distance, NodeId};
#[derive(Debug, thiserror::Error)]
pub enum GraphError {
#[error("Invalid node ID: {0}")]
InvalidNodeId(u64),
#[error("Matrix dimension mismatch: expected {expected}, got {actual}")]
DimensionMismatch { expected: usize, actual: usize },
#[error("Empty graph")]
EmptyGraph,
#[error("Invalid CSR format: {0}")]
InvalidCsr(String),
#[error("Algorithm error: {0}")]
AlgorithmError(String),
}
pub type Result<T> = std::result::Result<T, GraphError>;