packages feed

lnd-client-0.1.0.1: src/LndClient/Data/ListChannels.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}

module LndClient.Data.ListChannels
  ( ListChannelsRequest (..),
  )
where

import Data.ProtoLens.Message
import LndClient.Import
import qualified Proto.Lightning as LnGRPC
import qualified Proto.Lightning_Fields as LnGRPC

data ListChannelsRequest = ListChannelsRequest
  { activeOnly :: Bool,
    inactiveOnly :: Bool,
    publicOnly :: Bool,
    privateOnly :: Bool,
    peer :: Maybe NodePubKey
  }
  deriving stock (Generic, Show)

instance Out ListChannelsRequest

instance ToGrpc ListChannelsRequest LnGRPC.ListChannelsRequest where
  toGrpc x =
    msg
      <$> toGrpc (activeOnly x)
      <*> toGrpc (inactiveOnly x)
      <*> toGrpc (privateOnly x)
      <*> toGrpc (publicOnly x)
      <*> toGrpc (peer x)
    where
      msg gActiveOnly gInactiveOnly gPrivateOnly gPublicOnly gPeer =
        defMessage
          & LnGRPC.activeOnly .~ gActiveOnly
          & LnGRPC.inactiveOnly .~ gInactiveOnly
          & LnGRPC.privateOnly .~ gPrivateOnly
          & LnGRPC.publicOnly .~ gPublicOnly
          & LnGRPC.peer .~ gPeer