content: -----------------------------------------------------------------------------
  -- |
  -- Module      :  NgxExport.Tools.Types
  -- Copyright   :  (c) Alexey Radkov 2023
  -- License     :  BSD-style
  --
  -- Maintainer  :  alexey.radkov@gmail.com
  -- Stability   :  stable
  -- Portability :  portable
  --
  -----------------------------------------------------------------------------
  
  
  module NgxExport.Tools.Types (
      -- * Exported types
                                NgxExportService
                               ) where
  
  import qualified Data.ByteString.Lazy as L
  
  -- | Allows writing fancier declarations of services.
  --
  -- For example, service /signalUpconf/ in
  --
  -- @
  -- type Upconf = [Text]
  --
  -- signalUpconf :: Upconf -> 'Bool' -> 'IO' 'L.ByteString'
  -- signalUpconf = 'NgxExport.Tools.Combinators.voidHandler'' . mapConcurrently_ getUrl
  --
  -- 'NgxExport.Tools.SimpleService.ngxExportSimpleServiceTyped' \'signalUpconf \'\'Upconf $
  --     'NgxExport.Tools.SimpleService.PersistentService' Nothing
  -- @
  --
  -- can be rewritten in a fancier way:
  --
  -- @
  -- signalUpconf :: Upconf -> __/NgxExportService/__
  -- signalUpconf = 'NgxExport.Tools.Combinators.voidHandler'' . mapConcurrently_ getUrl
  -- @
  --
  -- @since 1.2.2
  type NgxExportService = Bool               -- ^ First-run flag
                       -> IO L.ByteString
  
  