use crate::data_model::GraphDataType;
use diskann::ANNResult;
pub trait VertexProvider<Data: GraphDataType>: Send + Sync {
fn get_vector(&self, vertex_id: &Data::VectorIdType) -> ANNResult<&[Data::VectorDataType]>;
fn get_adjacency_list(
&self,
vertex_id: &Data::VectorIdType,
) -> ANNResult<&[Data::VectorIdType]>;
fn get_associated_data(
&self,
vertex_id: &Data::VectorIdType,
) -> ANNResult<&Data::AssociatedDataType>;
fn load_vertices(&mut self, vertex_ids: &[Data::VectorIdType]) -> ANNResult<()>;
fn process_loaded_node(&mut self, vertex_id: &Data::VectorIdType, idx: usize) -> ANNResult<()>;
fn io_operations(&self) -> u32;
fn vertices_loaded_count(&self) -> u32;
fn clear(&mut self);
}