use crate::{
api::tdigest::conf::{TDigestInfo, TDigestMerge},
error::Result,
traits::DbLike,
};
pub trait TDigest: DbLike {
fn tdigest_create<K: AsRef<[u8]>>(&self, key: K, compression: f64) -> Result<()>;
fn tdigest_add<K: AsRef<[u8]>>(&self, key: K, values: &[f64]) -> Result<()>;
fn tdigest_min<K: AsRef<[u8]>>(&self, key: K) -> Result<f64>;
fn tdigest_max<K: AsRef<[u8]>>(&self, key: K) -> Result<f64>;
fn tdigest_quantile<K: AsRef<[u8]>>(&self, key: K, quantiles: &[f64])
-> Result<Vec<Option<f64>>>;
fn tdigest_cdf<K: AsRef<[u8]>>(&self, key: K, values: &[f64]) -> Result<Vec<Option<f64>>>;
fn tdigest_rank<K: AsRef<[u8]>>(&self, key: K, values: &[f64]) -> Result<Vec<i64>>;
fn tdigest_revrank<K: AsRef<[u8]>>(&self, key: K, values: &[f64]) -> Result<Vec<i64>>;
fn tdigest_byrank<K: AsRef<[u8]>>(&self, key: K, ranks: &[u64]) -> Result<Vec<Option<f64>>>;
fn tdigest_byrevrank<K: AsRef<[u8]>>(&self, key: K, ranks: &[u64]) -> Result<Vec<Option<f64>>>;
fn tdigest_trimmed_mean<K: AsRef<[u8]>>(
&self,
key: K,
low_cut: f64,
high_cut: f64,
) -> Result<Option<f64>>;
fn tdigest_reset<K: AsRef<[u8]>>(&self, key: K) -> Result<()>;
fn tdigest_merge<K: AsRef<[u8]>>(
&self,
dest_key: K,
source_keys: &[K],
options: TDigestMerge,
) -> Result<()>;
fn tdigest_info<K: AsRef<[u8]>>(&self, key: K) -> Result<TDigestInfo>;
}