use diskann::{utils::VectorRepr, ANNResult};
use diskann_utils::views::rowmajor;
pub trait QuantCompressor<T>: Sized + Sync
where
T: VectorRepr,
{
type CompressorContext;
fn new(context: &Self::CompressorContext) -> ANNResult<Self>;
fn compress(&self, vector: rowmajor::Ref<f32>, output: rowmajor::Mut<u8>) -> ANNResult<()>;
fn compressed_bytes(&self) -> usize;
}