use crate::DType;
use numr::error::Result;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
use super::types::{EigCentralityOptions, GraphData, PageRankOptions};
pub trait CentralityAlgorithms<R: Runtime<DType = DType>> {
fn degree_centrality(&self, graph: &GraphData<R>) -> Result<Tensor<R>>;
fn betweenness_centrality(&self, graph: &GraphData<R>, normalized: bool) -> Result<Tensor<R>>;
fn closeness_centrality(&self, graph: &GraphData<R>) -> Result<Tensor<R>>;
fn eigenvector_centrality(
&self,
graph: &GraphData<R>,
options: &EigCentralityOptions,
) -> Result<Tensor<R>>;
fn pagerank(&self, graph: &GraphData<R>, options: &PageRankOptions) -> Result<Tensor<R>>;
}