use crate::{
poly::{kyber::KyberPoly, SizedPolynomial},
polyvec::PolyVec,
};
pub trait KyberParams {
type PV;
type PolyVecCompressed;
const POLY_COMPRESSED_BYTES: usize;
const K: usize;
}
pub struct Params<const K0: usize>;
impl KyberParams for Params<2> {
const K: usize = 2;
type PV = PolyVec<KyberPoly, { KyberPoly::N }, { Self::K }>;
type PolyVecCompressed = [u8; Self::K * 320];
const POLY_COMPRESSED_BYTES: usize = 128;
}
impl KyberParams for Params<3> {
const K: usize = 3;
type PV = PolyVec<KyberPoly, { KyberPoly::N }, { Self::K }>;
type PolyVecCompressed = [u8; Self::K * 320];
const POLY_COMPRESSED_BYTES: usize = 128;
}