{-# 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 forall (m :: * -> *) api. HasClient m api => Proxy api -> Proxy m -> Client m api `clientIn` (forall {k} (t :: k). Proxy t Proxy :: Proxy (Free ClientF))