{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE GADTs               #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Servant.Client.Free (
    client,
    ClientF (..),
    module Servant.Client.Core.Reexport,
    ) where

import           Control.Monad.Free
import           Data.Proxy
                 (Proxy (..))
import           Servant.Client.Core
import           Servant.Client.Core.Reexport
import           Servant.Client.Core.RunClient

client :: HasClient (Free ClientF) api => Proxy api -> Client (Free ClientF) api
client :: forall api.
HasClient (Free ClientF) api =>
Proxy api -> Client (Free ClientF) api
client Proxy api
api = Proxy api
api Proxy api -> Proxy (Free ClientF) -> Client (Free ClientF) api
forall (m :: Type -> Type) api.
HasClient m api =>
Proxy api -> Proxy m -> Client m api
`clientIn` (Proxy (Free ClientF)
forall {k} (t :: k). Proxy t
Proxy :: Proxy (Free ClientF))