lnd-client-0.1.0.1: src/LndClient/Data/PublishTransaction.hs
{-# LANGUAGE FlexibleContexts #-}
module LndClient.Data.PublishTransaction
( PublishTransactionRequest (..),
PublishTransactionResponse (..),
)
where
import Data.ProtoLens.Message
import LndClient.Import
import qualified Proto.Walletrpc.Walletkit as W
import qualified Proto.Walletrpc.Walletkit_Fields as W
data PublishTransactionRequest = PublishTransactionRequest
{ txHex :: ByteString,
label :: Text
}
deriving stock (Eq, Ord, Show, Generic)
instance Out PublishTransactionRequest
instance ToGrpc PublishTransactionRequest W.Transaction where
toGrpc x = pure $ msg (txHex x) (label x)
where
msg f a =
defMessage
& W.txHex .~ f
& W.label .~ a
newtype PublishTransactionResponse = PublishTransactionResponse
{ publishError :: Text
}
deriving newtype (Eq, Ord, Show)
deriving stock (Generic)
instance Out PublishTransactionResponse
instance FromGrpc PublishTransactionResponse W.PublishResponse where
fromGrpc x = Right $ PublishTransactionResponse (x ^. W.publishError)