    {-# 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))