module OpenTelemetry.Exporter where

data ExportResult
  = ExportSuccess
  | ExportFailedRetryable
  | ExportFailedNotRetryable
  deriving (Int -> ExportResult -> ShowS
[ExportResult] -> ShowS
ExportResult -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ExportResult] -> ShowS
$cshowList :: [ExportResult] -> ShowS
show :: ExportResult -> String
$cshow :: ExportResult -> String
showsPrec :: Int -> ExportResult -> ShowS
$cshowsPrec :: Int -> ExportResult -> ShowS
Show, ExportResult -> ExportResult -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExportResult -> ExportResult -> Bool
$c/= :: ExportResult -> ExportResult -> Bool
== :: ExportResult -> ExportResult -> Bool
$c== :: ExportResult -> ExportResult -> Bool
Eq)

data Exporter thing = Exporter
  { forall thing. Exporter thing -> [thing] -> IO ExportResult
export :: [thing] -> IO ExportResult,
    forall thing. Exporter thing -> IO ()
shutdown :: IO ()
  }

noopExporter :: Exporter whatever
noopExporter :: forall whatever. Exporter whatever
noopExporter = forall thing.
([thing] -> IO ExportResult) -> IO () -> Exporter thing
Exporter (forall a b. a -> b -> a
const (forall (f :: * -> *) a. Applicative f => a -> f a
pure ExportResult
ExportFailedNotRetryable)) (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())