-----------------------------------------------------------------------------
-- |
-- Module      :  OpenTelemetry.Id.Generator
-- Copyright   :  (c) Ian Duncan, 2021
-- License     :  BSD-3
-- Description :  Raw byte generation facilities for ID generation
-- Maintainer  :  Ian Duncan
-- Stability   :  experimental
-- Portability :  non-portable (GHC extensions)
--
-- Stateful random number generation interface for creating Trace and Span ID
-- bytes.
--
-- In most cases, the built-in generator in the hs-opentelemetry-sdk will be sufficient, but the
-- interface is exposed for more exotic needs.
--
-----------------------------------------------------------------------------
module OpenTelemetry.Trace.Id.Generator 
  ( IdGenerator(..)
  ) where
import Data.ByteString (ByteString)

-- | An interface for generating the underlying bytes for
-- trace and span ids.
data IdGenerator = IdGenerator
  { IdGenerator -> IO ByteString
generateSpanIdBytes :: IO ByteString
    -- ^ MUST generate exactly 8 bytes
  , IdGenerator -> IO ByteString
generateTraceIdBytes :: IO ByteString
    -- ^ MUST generate exactly 16 bytes
  }