-----------------------------------------------------------------------------

-----------------------------------------------------------------------------

{- |
 Module      :  OpenTelemetry.Trace.Id
 Copyright   :  (c) Ian Duncan, 2021
 License     :  BSD-3
 Description :  Trace and Span ID generation, validation, serialization, and deserialization
 Maintainer  :  Ian Duncan
 Stability   :  experimental
 Portability :  non-portable (GHC extensions)

 Trace and Span Id generation

 No Aeson instances are provided since they've got the potential to be
 transport-specific in format. Use newtypes for serialisation instead.
-}
module OpenTelemetry.Trace.Id (
  -- * Working with 'TraceId's
  TraceId,

  -- ** Creating 'TraceId's
  newTraceId,

  -- ** Checking 'TraceId's for validity
  isEmptyTraceId,

  -- ** Encoding / decoding 'TraceId' from bytes
  traceIdBytes,
  bytesToTraceId,

  -- ** Encoding / decoding 'TraceId' from a given 'Base' encoding
  baseEncodedToTraceId,
  traceIdBaseEncodedBuilder,
  traceIdBaseEncodedByteString,
  traceIdBaseEncodedText,

  -- * Working with 'SpanId's
  SpanId,

  -- ** Creating 'SpanId's
  newSpanId,

  -- ** Checking 'SpanId's for validity
  isEmptySpanId,

  -- ** Encoding / decoding 'SpanId' from bytes
  spanIdBytes,
  bytesToSpanId,

  -- ** Encoding / decoding 'SpanId' from a given 'Base' encoding
  Base (..),
  baseEncodedToSpanId,
  spanIdBaseEncodedBuilder,
  spanIdBaseEncodedByteString,
  spanIdBaseEncodedText,
) where

import OpenTelemetry.Internal.Trace.Id