{-# LANGUAGE PatternSynonyms #-}

{- |
Module      : OpenTelemetry.Exporter
Description : Re-exports of span exporter types.
Stability   : experimental

This module is deprecated; prefer 'OpenTelemetry.Exporter.Span'.
-}
module OpenTelemetry.Exporter
  {-# DEPRECATED "use OpenTelemetry.Exporter.Span instead" #-} (
  Exporter,
  mkExporter,
  SpanExporter (..),
  ExportResult (..),
) where

import Data.HashMap.Strict (HashMap)
import Data.Vector (Vector)
import OpenTelemetry.Exporter.Span
import OpenTelemetry.Internal.Common.Types (FlushResult (..), InstrumentationLibrary, ShutdownResult (..))
import OpenTelemetry.Internal.Trace.Types (ImmutableSpan)


{-# DEPRECATED Exporter "use SpanExporter instead" #-}


type Exporter a = SpanExporter


{-# DEPRECATED mkExporter "use SpanExporter constructor directly" #-}
mkExporter :: (HashMap InstrumentationLibrary (Vector ImmutableSpan) -> IO ExportResult) -> IO () -> Exporter ImmutableSpan
mkExporter :: (HashMap InstrumentationLibrary (Vector ImmutableSpan)
 -> IO ExportResult)
-> IO () -> Exporter ImmutableSpan
mkExporter HashMap InstrumentationLibrary (Vector ImmutableSpan)
-> IO ExportResult
export IO ()
shutdown =
  SpanExporter
    { spanExporterExport :: HashMap InstrumentationLibrary (Vector ImmutableSpan)
-> IO ExportResult
spanExporterExport = HashMap InstrumentationLibrary (Vector ImmutableSpan)
-> IO ExportResult
export
    , spanExporterShutdown :: IO ShutdownResult
spanExporterShutdown = IO ()
shutdown IO () -> IO ShutdownResult -> IO ShutdownResult
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ShutdownResult -> IO ShutdownResult
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShutdownResult
ShutdownSuccess
    , spanExporterForceFlush :: IO FlushResult
spanExporterForceFlush = FlushResult -> IO FlushResult
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FlushResult
FlushSuccess
    }