use crate::traits::cell::Cell;
use deep_causality_sparse::CsrMatrix;
use std::borrow::Cow;
pub trait ChainComplex {
type CellType: Cell;
type CellIter<'a>: Iterator<Item = Self::CellType>
where
Self: 'a;
type Metric;
fn cells(&self, k: usize) -> Self::CellIter<'_>;
fn num_cells(&self, k: usize) -> usize;
fn max_dim(&self) -> usize;
fn boundary_matrix(&self, k: usize) -> Cow<'_, CsrMatrix<i8>>;
fn coboundary_matrix(&self, k: usize) -> Cow<'_, CsrMatrix<i8>>;
fn betti_number(&self, k: usize) -> usize;
fn uniform_lattice_layout(&self) -> Option<(Vec<usize>, Vec<bool>)> {
None
}
}