    -- |
    -- Module      : Network.TLS.Record
    -- License     : BSD-style
    -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
    -- Stability   : experimental
    -- Portability : unknown
    --
    -- The Record Protocol takes messages to be transmitted, fragments the
    -- data into manageable blocks, optionally compresses the data, applies
    -- a MAC, encrypts, and transmits the result.  Received data is
    -- decrypted, verified, decompressed, reassembled, and then delivered to
    -- higher-level clients.
    --
    module Network.TLS.Record
        ( Record(..)
        -- * Fragment manipulation types
        , Fragment
        , fragmentGetBytes
        , fragmentPlaintext
        , fragmentCiphertext
        , recordToRaw
        , rawToRecord
        , recordToHeader
        , Plaintext
        , Compressed
        , Ciphertext
        -- * Engage and disengage from the record layer
        , engageRecord
        , disengageRecord
        -- * State tracking
        , RecordM
        , runRecordM
        , RecordState(..)
        , newRecordState
        , getRecordVersion
        , setRecordIV
        ) where

    import Network.TLS.Record.Types
    import Network.TLS.Record.Engage
    import Network.TLS.Record.Disengage
    import Network.TLS.Record.State