use crate::hal::layouts::{Backend, Module, ScalarZnxOwned, ScalarZnxToMut, ScalarZnxToRef}; pub unsafe trait ScalarZnxFromBytesImpl { fn scalar_znx_from_bytes_impl(n: usize, cols: usize, bytes: Vec) -> ScalarZnxOwned; } pub unsafe trait ScalarZnxAllocBytesImpl { fn scalar_znx_alloc_bytes_impl(n: usize, cols: usize) -> usize; } pub unsafe trait ScalarZnxAllocImpl { fn scalar_znx_alloc_impl(n: usize, cols: usize) -> ScalarZnxOwned; } pub unsafe trait ScalarZnxAutomorphismImpl { fn scalar_znx_automorphism_impl(module: &Module, k: i64, res: &mut R, res_col: usize, a: &A, a_col: usize) where R: ScalarZnxToMut, A: ScalarZnxToRef; } pub unsafe trait ScalarZnxAutomorphismInplaceIml { fn scalar_znx_automorphism_inplace_impl(module: &Module, k: i64, a: &mut A, a_col: usize) where A: ScalarZnxToMut; } pub unsafe trait ScalarZnxMulXpMinusOneImpl { fn scalar_znx_mul_xp_minus_one_impl(module: &Module, p: i64, r: &mut R, r_col: usize, a: &A, a_col: usize) where R: ScalarZnxToMut, A: ScalarZnxToRef; } pub unsafe trait ScalarZnxMulXpMinusOneInplaceImpl { fn scalar_znx_mul_xp_minus_one_inplace_impl(module: &Module, p: i64, r: &mut R, r_col: usize) where R: ScalarZnxToMut; }