-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Client instances for the 'servant-streaming' package.
--   
--   This package defines instances that allow using the <a>StreamBody</a>
--   and <a>StreamResponse</a> combinators in <a>servant</a> clients.
@package servant-streaming-client
@version 0.3.0.0

module Servant.Streaming.Client.Internal
instance (Servant.Client.Core.Internal.HasClient.HasClient m subapi, Servant.Client.Core.Internal.RunClient.RunClient m) => Servant.Client.Core.Internal.HasClient.HasClient m (Servant.Streaming.StreamBodyMonad contentTypes n Servant.API.Sub.:> subapi)
instance Servant.Client.Core.Internal.RunClient.RunClient m => Servant.Client.Core.Internal.HasClient.HasClient m (Servant.Streaming.StreamResponse verb status contentTypes)


-- | This module provides an instance for HasClient for 'servant-streaming'
--   combinators, so that client functions can be generated for APIs that
--   have streaming request or response bodies.
--   
--   As as convenience, it also re-exports the combinators themselves.
module Servant.Streaming.Client

-- | A response body that should be streamed, with specified method,
--   status, and content-type.
data StreamResponse (method :: StdMethod) (status :: Nat) (contentTypes :: [*])

-- | A request body that should be streamed.
type StreamBody (ct :: [*]) = StreamBodyMonad ct IO

-- | The streaming version of the <tt>Get</tt> combinator.
type StreamResponseGet = StreamResponse GET 200

-- | The streaming version of the <tt>Post</tt> combinator.
type StreamResponsePost = StreamResponse POST 200

-- | The streaming version of the <tt>Put</tt> combinator.
type StreamResponsePut = StreamResponse PUT 200

-- | The streaming version of the <tt>Patch</tt> combinator.
type StreamResponsePatch = StreamResponse PATCH 200
