packages feed

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

{-# LANGUAGE FlexibleContexts #-}

module LndClient.Data.FinalizePsbt
  ( FinalizePsbtRequest (..),
    FinalizePsbtResponse (..),
  )
where

import Data.ProtoLens.Message
import LndClient.Import
import qualified Proto.Walletrpc.Walletkit as W
import qualified Proto.Walletrpc.Walletkit_Fields as W

data FinalizePsbtRequest = FinalizePsbtRequest
  { fundedPsbt :: ByteString,
    account :: Text
  }
  deriving stock (Eq, Ord, Show, Generic)

instance Out FinalizePsbtRequest

instance ToGrpc FinalizePsbtRequest W.FinalizePsbtRequest where
  toGrpc x = pure $ msg (fundedPsbt x) (account x)
    where
      msg f a =
        defMessage
          & W.fundedPsbt .~ f
          & W.account .~ a

data FinalizePsbtResponse = FinalizePsbtResponse
  { signedPsbt :: ByteString,
    rawFinalTx :: ByteString
  }
  deriving stock (Eq, Ord, Show, Generic)

instance Out FinalizePsbtResponse

instance FromGrpc FinalizePsbtResponse W.FinalizePsbtResponse where
  fromGrpc x = Right $ FinalizePsbtResponse (x ^. W.signedPsbt) (x ^. W.rawFinalTx)