import type { MlKemExports, Sha3Exports } from './types.js'; import type { MlKemParams } from './params.js'; /** SHA3-512(msg) → 64 bytes. Resets sha3 state. */ export declare function sha3_512Hash(sx: Sha3Exports, msg: Uint8Array): Uint8Array; /** SHA3-256(msg) → 32 bytes. Resets sha3 state. */ export declare function sha3_256Hash(sx: Sha3Exports, msg: Uint8Array): Uint8Array; /** * SHAKE256(msg, n) → n bytes. Resets sha3 state. * Used for J function (z || c) and PRF seeding in kem.ts. */ export declare function shake256Hash(sx: Sha3Exports, msg: Uint8Array, n: number): Uint8Array; /** * K-PKE.KeyGen (FIPS 203 Algorithm 12), deterministic. * * Slot map: * pvec0, current row of  (overwritten per row) * pvec1, ŝ (noise, persistent through dot products) * pvec2, ê (noise) * pvec3, t̂ = ·ŝ + ê (output) */ export declare function indcpaKeypairDerand(kx: MlKemExports, sx: Sha3Exports, params: MlKemParams, d: Uint8Array): { ekCpa: Uint8Array; skCpa: Uint8Array; }; /** * K-PKE.Encrypt (FIPS 203 Algorithm 13), deterministic. * * Slot map: * pvec0, current row of Â^T (transposed, overwritten per row) * pvec1, r̂ = NTT(r) * pvec2, e₁ (noise) * pvec3, u = invNTT(Â^T · r̂) + e₁ * pvec4, t̂ (unpacked from ek) * poly1 , e₂ (noise) * poly2 , v = invNTT(t̂^T · r̂) + e₂ + msg * poly3 , message polynomial */ export declare function indcpaEncrypt(kx: MlKemExports, sx: Sha3Exports, params: MlKemParams, ek: Uint8Array, m: Uint8Array, coins: Uint8Array): Uint8Array; /** * K-PKE.Decrypt (FIPS 203 Algorithm 14). * * Slot map: * pvec0, û (decompressed from ct) * pvec1, ŝ (from sk) * poly0 , v (decompressed from ct) * poly1 , w = invNTT(ŝ^T · NTT(û)) * poly2 , m' = v - w */ export declare function indcpaDecrypt(kx: MlKemExports, params: MlKemParams, skCpa: Uint8Array, ct: Uint8Array): Uint8Array;