{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
-- | -- | This module just exports orphan instances to make named-servant
-- work with clients.  See that package for documentation.
module Servant.Client.Record () where
import Servant.API
import Data.Proxy
import GHC.TypeLits
import GHC.Generics
import Servant.Client.Core.HasClient
import Servant.Client.Core.Request
import Servant.Client.Core.RunClient
import Servant.Record

instance ( RunClient m
         , Generic a
         , GHasClient m (Rep a) api) =>
         HasClient m (RecordParam a :> api)
  where
    type Client m (RecordParam a :> api) = a -> Client m api
    clientWithRoute :: Proxy m
-> Proxy (RecordParam a :> api)
-> Request
-> Client m (RecordParam a :> api)
clientWithRoute Proxy m
pm Proxy (RecordParam a :> api)
Proxy Request
req a
record =
      Proxy m -> Proxy api -> Request -> Rep a () -> Client m api
forall (m :: * -> *) (a :: * -> *) api.
(GHasClient m a api, RunClient m) =>
Proxy m -> Proxy api -> Request -> a () -> Client m api
gClientWithRoute Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) Request
req (a -> Rep a ()
forall a x. Generic a => a -> Rep a x
from a
record :: Rep a ())
    {-# INLINE clientWithRoute #-}
    hoistClientMonad :: Proxy m
-> Proxy (RecordParam a :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (RecordParam a :> api)
-> Client mon' (RecordParam a :> api)
hoistClientMonad Proxy m
pm Proxy (RecordParam a :> api)
Proxy forall x. mon x -> mon' x
f Client mon (RecordParam a :> api)
cl a
as =
      Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (Rep a () -> Client mon api)
-> Rep a ()
-> Client mon' api
forall (m :: * -> *) (a :: * -> *) api (mon :: * -> *)
       (mon' :: * -> *).
(GHasClient m a api, RunClient m) =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) forall x. mon x -> mon' x
f (Client mon (RecordParam a :> api)
a -> Client mon api
cl (a -> Client mon api)
-> (Rep a () -> a) -> Rep a () -> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rep a () -> a
forall a x. Generic a => Rep a x -> a
to)
      (a -> Rep a ()
forall a x. Generic a => a -> Rep a x
from a
as :: Rep a ())
    {-# INLINE hoistClientMonad #-}

data GParam a

class GHasClient m (a :: * -> *) api where
  gClientWithRoute :: RunClient m
                   => Proxy m -> Proxy api -> Request -> a () -> Client m api
  gHoistClientMonad :: RunClient m
                    => Proxy m
                    -> Proxy api
                    -> (forall x. mon x -> mon' x)
                    -> (a () -> Client mon api)
                    -> (a () -> Client mon' api)

instance ( RunClient m
         , GHasClient m a api
         ) =>
         HasClient m (GParam (a ()) :> api) where
  type Client m (GParam (a ()) :> api) = a () -> Client m api
  clientWithRoute :: Proxy m
-> Proxy (GParam (a ()) :> api)
-> Request
-> Client m (GParam (a ()) :> api)
clientWithRoute Proxy m
pm Proxy (GParam (a ()) :> api)
_ = Proxy m -> Proxy api -> Request -> a () -> Client m api
forall (m :: * -> *) (a :: * -> *) api.
(GHasClient m a api, RunClient m) =>
Proxy m -> Proxy api -> Request -> a () -> Client m api
gClientWithRoute Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api)
  {-# INLINE clientWithRoute #-}
  hoistClientMonad :: Proxy m
-> Proxy (GParam (a ()) :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (GParam (a ()) :> api)
-> Client mon' (GParam (a ()) :> api)
hoistClientMonad Proxy m
pm Proxy (GParam (a ()) :> api)
_ = Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
forall (m :: * -> *) (a :: * -> *) api (mon :: * -> *)
       (mon' :: * -> *).
(GHasClient m a api, RunClient m) =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api)
  {-# INLINE hoistClientMonad #-}

instance GHasClient m c api =>
         GHasClient m (D1 m3 c) api where
  gClientWithRoute :: Proxy m -> Proxy api -> Request -> D1 m3 c () -> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 c ()
x) =
    Proxy m -> Proxy api -> Request -> c () -> Client m api
forall (m :: * -> *) (a :: * -> *) api.
(GHasClient m a api, RunClient m) =>
Proxy m -> Proxy api -> Request -> a () -> Client m api
gClientWithRoute Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) Request
req c ()
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (D1 m3 c () -> Client mon api)
-> D1 m3 c ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
Proxy forall x. mon x -> mon' x
f D1 m3 c () -> Client mon api
cl D1 m3 c ()
x = 
    Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (c () -> Client mon api)
-> c ()
-> Client mon' api
forall (m :: * -> *) (a :: * -> *) api (mon :: * -> *)
       (mon' :: * -> *).
(GHasClient m a api, RunClient m) =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) forall x. mon x -> mon' x
f (D1 m3 c () -> Client mon api
cl (D1 m3 c () -> Client mon api)
-> (c () -> D1 m3 c ()) -> c () -> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. c () -> D1 m3 c ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1) (D1 m3 c () -> c ()
forall i (c :: Meta) k (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1 D1 m3 c ()
x)
  {-# INLINE gHoistClientMonad #-}

instance GHasClient m a (GParam (b ()) :> api)
         => GHasClient m (a :*: b) api where
  gClientWithRoute :: Proxy m -> Proxy api -> Request -> (:*:) a b () -> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (a ()
x :*: b ()
y) =
    Proxy m
-> Proxy (GParam (b ()) :> api)
-> Request
-> a ()
-> b ()
-> Client m api
forall (m :: * -> *) (a :: * -> *) api.
(GHasClient m a api, RunClient m) =>
Proxy m -> Proxy api -> Request -> a () -> Client m api
gClientWithRoute Proxy m
pm (Proxy (GParam (b ()) :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (GParam (b ()) :> api)) Request
req a ()
x b ()
y
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> ((:*:) a b () -> Client mon api)
-> (:*:) a b ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
Proxy forall x. mon x -> mon' x
f (:*:) a b () -> Client mon api
cl (a ()
x :*: b ()
y) =
    Proxy m
-> Proxy (GParam (b ()) :> api)
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon (GParam (b ()) :> api))
-> a ()
-> b ()
-> Client mon' api
forall (m :: * -> *) (a :: * -> *) api (mon :: * -> *)
       (mon' :: * -> *).
(GHasClient m a api, RunClient m) =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm (Proxy (GParam (b ()) :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (GParam (b ()) :> api)) forall x. mon x -> mon' x
f
    (\a ()
x' b ()
y'-> (:*:) a b () -> Client mon api
cl (a ()
x' a () -> b () -> (:*:) a b ()
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: b ()
y')) a ()
x b ()
y
  {-# INLINE gHoistClientMonad #-}

instance GHasClient m a api => GHasClient m (C1 mon a) api where
  gClientWithRoute :: Proxy m -> Proxy api -> Request -> C1 mon a () -> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 a ()
x) =
    Proxy m -> Proxy api -> Request -> a () -> Client m api
forall (m :: * -> *) (a :: * -> *) api.
(GHasClient m a api, RunClient m) =>
Proxy m -> Proxy api -> Request -> a () -> Client m api
gClientWithRoute Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) Request
req a ()
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (C1 mon a () -> Client mon api)
-> C1 mon a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
_ forall x. mon x -> mon' x
f C1 mon a () -> Client mon api
cl (M1 a ()
x) =
    Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
forall (m :: * -> *) (a :: * -> *) api (mon :: * -> *)
       (mon' :: * -> *).
(GHasClient m a api, RunClient m) =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (a () -> Client mon api)
-> a ()
-> Client mon' api
gHoistClientMonad Proxy m
pm (Proxy api
forall k (t :: k). Proxy t
Proxy :: Proxy api) forall x. mon x -> mon' x
f (C1 mon a () -> Client mon api
cl (C1 mon a () -> Client mon api)
-> (a () -> C1 mon a ()) -> a () -> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a () -> C1 mon a ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1) a ()
x
  {-# INLINE gHoistClientMonad #-}

instance {-# OVERLAPPING #-}
  ( HasClient m api
  , KnownSymbol sym
  ) =>
  GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool)) api where
  gClientWithRoute :: Proxy m
-> Proxy api
-> Request
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
-> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 (K1 Bool
x)) =
    Proxy m
-> Proxy (QueryFlag sym :> api) -> Request -> Bool -> Client m api
forall (m :: * -> *) api.
HasClient m api =>
Proxy m -> Proxy api -> Request -> Client m api
clientWithRoute Proxy m
pm (Proxy (QueryFlag sym :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryFlag sym :> api)) Request
req Bool
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
    -> Client mon api)
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
_ forall x. mon x -> mon' x
f S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) () -> Client mon api
cl (M1 (K1 Bool
x)) =
    Proxy m
-> Proxy (QueryFlag sym :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (QueryFlag sym :> api)
-> Bool
-> Client mon' api
forall (m :: * -> *) api (mon :: * -> *) (mon' :: * -> *).
HasClient m api =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> Client mon api
-> Client mon' api
hoistClientMonad Proxy m
pm (Proxy (QueryFlag sym :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryFlag sym :> api)) forall x. mon x -> mon' x
f (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) () -> Client mon api
cl (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
 -> Client mon api)
-> (Bool -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ())
-> Bool
-> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. K1 R Bool () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1 (K1 R Bool () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ())
-> (Bool -> K1 R Bool ())
-> Bool
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> K1 R Bool ()
forall k i c (p :: k). c -> K1 i c p
K1)
    Bool
x
  {-# INLINE gHoistClientMonad #-}

instance {-# OVERLAPPING #-}
  ( ToHttpApiData a
  , HasClient m api
  , KnownSymbol sym
  ) =>
  GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a])) api where
  gClientWithRoute :: Proxy m
-> Proxy api
-> Request
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
-> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 (K1 [a]
x)) =
    Proxy m
-> Proxy (QueryParams sym a :> api)
-> Request
-> [a]
-> Client m api
forall (m :: * -> *) api.
HasClient m api =>
Proxy m -> Proxy api -> Request -> Client m api
clientWithRoute Proxy m
pm (Proxy (QueryParams sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParams sym a :> api)) Request
req [a]
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
    -> Client mon api)
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
_ forall x. mon x -> mon' x
f S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) () -> Client mon api
cl (M1 (K1 [a]
x)) =
    Proxy m
-> Proxy (QueryParams sym a :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (QueryParams sym a :> api)
-> [a]
-> Client mon' api
forall (m :: * -> *) api (mon :: * -> *) (mon' :: * -> *).
HasClient m api =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> Client mon api
-> Client mon' api
hoistClientMonad Proxy m
pm (Proxy (QueryParams sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParams sym a :> api)) forall x. mon x -> mon' x
f
    (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) () -> Client mon api
cl (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
 -> Client mon api)
-> ([a] -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ())
-> [a]
-> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. K1 R [a] () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1 (K1 R [a] () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ())
-> ([a] -> K1 R [a] ())
-> [a]
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> K1 R [a] ()
forall k i c (p :: k). c -> K1 i c p
K1)
    [a]
x
  {-# INLINE gHoistClientMonad #-}

instance {-# OVERLAPPING #-}
  ( ToHttpApiData a
  , HasClient m api
  , KnownSymbol sym
  ) =>
  GHasClient m
             (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)))
             api where
  gClientWithRoute :: Proxy m
-> Proxy api
-> Request
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
-> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 (K1 Maybe a
x)) =
    Proxy m
-> Proxy (QueryParam' '[Optional, Strict] sym a :> api)
-> Request
-> Maybe a
-> Client m api
forall (m :: * -> *) api.
HasClient m api =>
Proxy m -> Proxy api -> Request -> Client m api
clientWithRoute
    Proxy m
pm
    (Proxy (QueryParam' '[Optional, Strict] sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParam' '[Optional, Strict] sym a :> api))
    Request
req
    Maybe a
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
    -> Client mon api)
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
_ forall x. mon x -> mon' x
f S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
-> Client mon api
cl (M1 (K1 Maybe a
x)) =
    Proxy m
-> Proxy (QueryParam' '[Optional, Strict] sym a :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (QueryParam' '[Optional, Strict] sym a :> api)
-> Maybe a
-> Client mon' api
forall (m :: * -> *) api (mon :: * -> *) (mon' :: * -> *).
HasClient m api =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> Client mon api
-> Client mon' api
hoistClientMonad
    Proxy m
pm
    (Proxy (QueryParam' '[Optional, Strict] sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParam' '[Optional, Strict] sym a :> api))
    forall x. mon x -> mon' x
f
    (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
-> Client mon api
cl (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
 -> Client mon api)
-> (Maybe a
    -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ())
-> Maybe a
-> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. K1 R (Maybe a) ()
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1 (K1 R (Maybe a) ()
 -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ())
-> (Maybe a -> K1 R (Maybe a) ())
-> Maybe a
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe a -> K1 R (Maybe a) ()
forall k i c (p :: k). c -> K1 i c p
K1)
    Maybe a
x
  {-# INLINE gHoistClientMonad #-}

instance {-# OVERLAPPABLE #-}
  ( ToHttpApiData a
  , HasClient m api
  , KnownSymbol sym
  ) =>
  GHasClient m
             (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a))
             api where
  gClientWithRoute :: Proxy m
-> Proxy api
-> Request
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ()
-> Client m api
gClientWithRoute Proxy m
pm Proxy api
_ Request
req (M1 (K1 a
x)) =
    Proxy m
-> Proxy (QueryParam' '[Required, Strict] sym a :> api)
-> Request
-> a
-> Client m api
forall (m :: * -> *) api.
HasClient m api =>
Proxy m -> Proxy api -> Request -> Client m api
clientWithRoute
    Proxy m
pm
    (Proxy (QueryParam' '[Required, Strict] sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParam' '[Required, Strict] sym a :> api))
    Request
req
    a
x
  {-# INLINE gClientWithRoute #-}
  gHoistClientMonad :: Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ()
    -> Client mon api)
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ()
-> Client mon' api
gHoistClientMonad Proxy m
pm Proxy api
_ forall x. mon x -> mon' x
f S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) () -> Client mon api
cl (M1 (K1 a
x)) =
    Proxy m
-> Proxy (QueryParam' '[Required, Strict] sym a :> api)
-> (forall x. mon x -> mon' x)
-> Client mon (QueryParam' '[Required, Strict] sym a :> api)
-> a
-> Client mon' api
forall (m :: * -> *) api (mon :: * -> *) (mon' :: * -> *).
HasClient m api =>
Proxy m
-> Proxy api
-> (forall x. mon x -> mon' x)
-> Client mon api
-> Client mon' api
hoistClientMonad
    Proxy m
pm
    (Proxy (QueryParam' '[Required, Strict] sym a :> api)
forall k (t :: k). Proxy t
Proxy :: Proxy (QueryParam' '[Required, Strict] sym a :> api))
    forall x. mon x -> mon' x
f
    (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) () -> Client mon api
cl (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) () -> Client mon api)
-> (a -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ())
-> a
-> Client mon api
forall b c a. (b -> c) -> (a -> b) -> a -> c
. K1 R a () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ()
forall k i (c :: Meta) (f :: k -> *) (p :: k). f p -> M1 i c f p
M1 (K1 R a () -> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ())
-> (a -> K1 R a ())
-> a
-> S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> K1 R a ()
forall k i c (p :: k). c -> K1 i c p
K1)
    a
x
  {-# INLINE gHoistClientMonad #-}