lnd-client-0.1.0.1: src/LndClient/Data/ReleaseOutput.hs
{-# LANGUAGE FlexibleContexts #-}
module LndClient.Data.ReleaseOutput
( ReleaseOutputRequest (..),
ReleaseOutputResponse (..),
)
where
import Data.ProtoLens.Message
import LndClient.Data.OutPoint
import LndClient.Import
import qualified Proto.Lnrpc.Ln0 as LnGRPC
import qualified Proto.Walletrpc.Walletkit as W
import qualified Proto.Walletrpc.Walletkit_Fields as W
data ReleaseOutputRequest = ReleaseOutputRequest
{ id' :: ByteString,
outpoint :: Maybe OutPoint
}
deriving stock (Eq, Ord, Show, Generic)
instance Out ReleaseOutputRequest
instance ToGrpc ReleaseOutputRequest W.ReleaseOutputRequest where
toGrpc x = msg (id' x) <$> out'
where
out' :: Either LndError (Maybe LnGRPC.OutPoint)
out' = case outpoint x of
Just op -> Just <$> toGrpc op
Nothing -> Right Nothing
msg i o =
defMessage
& (W.id .~ i)
& (W.maybe'outpoint .~ o)
data ReleaseOutputResponse = ReleaseOutputResponse deriving stock (Eq, Ord, Show, Generic)
instance Out ReleaseOutputResponse
instance FromGrpc ReleaseOutputResponse W.ReleaseOutputResponse where
fromGrpc = const $ Right ReleaseOutputResponse