use crate::error::Result;
use crate::quant::QuantTensor;
use numr::dtype::DType;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
pub trait DequantOps<R: Runtime> {
fn dequantize(&self, qt: &QuantTensor<R>, target_dtype: DType) -> Result<Tensor<R>>;
fn nf4_dequant(
&self,
nf4_data: &Tensor<R>,
absmax: &Tensor<R>,
blocksize: usize,
) -> Result<Tensor<R>>;
fn nf4_gemm(
&self,
input: &Tensor<R>,
nf4_weight: &Tensor<R>,
absmax: &Tensor<R>,
n: usize,
k: usize,
blocksize: usize,
) -> Result<Tensor<R>>;
}