lnd-client-0.1.0.0: src/LndClient/Data/Channel.hs
{-# LANGUAGE FlexibleInstances #-}
module LndClient.Data.Channel
( Channel (..),
PendingUpdate (..),
)
where
import LndClient.Data.ChannelPoint
( ChannelPoint (..),
channelPointParser,
)
import LndClient.Data.Newtype
import LndClient.Import
import qualified Proto.LndGrpc as LnGRPC
import qualified Proto.LndGrpc_Fields as LnGRPC
data Channel
= Channel
{ remotePubkey :: NodePubKey,
channelPoint :: ChannelPoint,
capacity :: MSat,
localBalance :: MSat,
remoteBalance :: MSat,
commitFee :: MSat,
active :: Bool
}
deriving (Eq, Ord, Show)
data PendingUpdate (a :: TxKind)
= PendingUpdate
{ txid :: TxId a,
outputIndex :: Vout a
}
deriving (Eq, Ord, Show)
instance FromGrpc Channel LnGRPC.Channel where
fromGrpc x =
Channel
<$> fromGrpc (x ^. LnGRPC.remotePubkey)
<*> channelPointParser (x ^. LnGRPC.channelPoint)
<*> fromGrpc (x ^. LnGRPC.capacity)
<*> fromGrpc (x ^. LnGRPC.localBalance)
<*> fromGrpc (x ^. LnGRPC.remoteBalance)
<*> fromGrpc (x ^. LnGRPC.commitFee)
<*> fromGrpc (x ^. LnGRPC.active)
instance FromGrpc [Channel] LnGRPC.ListChannelsResponse where
fromGrpc x = fromGrpc (x ^. LnGRPC.channels)
instance FromGrpc (PendingUpdate a) LnGRPC.PendingUpdate where
fromGrpc x =
PendingUpdate
<$> fromGrpc (x ^. LnGRPC.txid)
<*> fromGrpc (x ^. LnGRPC.outputIndex)