-- |
-- Module      : SecureBlock
-- License     : BSD-3-Clause
-- Copyright   : (c) 2025 Olivier Chéron
--
-- Use a type-level annotation to decide between a scrubbed block or a regular
-- block
--
{-# LANGUAGE CPP #-}
module SecureBlock
    ( SecureBlock, index, new, thaw
    , unsafeCast, unsafeFreeze, toNormalForm
#ifdef ML_KEM_TESTING
    , eq, Marking.showsPrec, toList, SecureBlock.length
#endif
    ) where

#ifdef ML_KEM_TESTING
import Base
#endif
import Marking

#ifdef ML_KEM_TESTING
length :: (Classified marking, PrimType ty) => SecureBlock marking ty -> CountOf ty
length = lengthBlock
#endif