lnd-client-0.1.0.0: src/LndClient/Data/ListInvoices.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
module LndClient.Data.ListInvoices
( ListInvoiceRequest (..),
ListInvoiceResponse (..),
)
where
import Data.ProtoLens.Message
import LndClient.Data.Invoice (Invoice)
import LndClient.Import
import qualified Proto.LndGrpc as LnGRPC
import qualified Proto.LndGrpc_Fields as LnGRPC
data ListInvoiceRequest
= ListInvoiceRequest
{ pendingOnly :: Bool,
indexOffset :: AddIndex,
numMaxInvoices :: Word64,
reversed :: Bool
}
deriving (Generic, Show)
data ListInvoiceResponse
= ListInvoiceResponse
{ invoices :: [Invoice],
lastIndexOffset :: AddIndex,
firstIndexOffset :: AddIndex
}
deriving (Generic, Show)
instance ToGrpc ListInvoiceRequest LnGRPC.ListInvoiceRequest where
toGrpc x =
msg
<$> toGrpc (pendingOnly x)
<*> toGrpc (indexOffset x)
<*> toGrpc (numMaxInvoices x)
<*> toGrpc (reversed x)
where
msg gPendingOnly gIndexOffset gNumMaxInvoices gReversed =
defMessage
& LnGRPC.pendingOnly .~ gPendingOnly
& LnGRPC.indexOffset .~ gIndexOffset
& LnGRPC.numMaxInvoices .~ gNumMaxInvoices
& LnGRPC.reversed .~ gReversed
instance FromGrpc ListInvoiceResponse LnGRPC.ListInvoiceResponse where
fromGrpc x =
ListInvoiceResponse
<$> fromGrpc (x ^. LnGRPC.invoices)
<*> fromGrpc (x ^. LnGRPC.lastIndexOffset)
<*> fromGrpc (x ^. LnGRPC.firstIndexOffset)