lnd-client-0.1.0.0: src/LndClient/Data/Payment.hs
module LndClient.Data.Payment
( Payment (..),
)
where
import LndClient.Import
import qualified Proto.LndGrpc as LnGRPC
import qualified Proto.LndGrpc_Fields as LnGRPC
data Payment
= Payment
{ paymentHash :: RHash,
paymentPreimage :: RPreimage,
valueMsat :: MSat,
state :: PaymentStatus
}
deriving (Eq, Show)
data PaymentStatus
= UNKNOWN
| IN_FLIGHT
| SUCCEEDED
| FAILED
deriving (Eq, Show)
instance FromGrpc Payment LnGRPC.Payment where
fromGrpc x =
Payment
<$> fromGrpc (x ^. LnGRPC.paymentHash)
<*> fromGrpc (x ^. LnGRPC.paymentPreimage)
<*> fromGrpc (x ^. LnGRPC.valueMsat)
<*> fromGrpc (x ^. LnGRPC.status)
instance FromGrpc PaymentStatus LnGRPC.Payment'PaymentStatus where
fromGrpc x =
case x of
LnGRPC.Payment'UNKNOWN -> Right UNKNOWN
LnGRPC.Payment'IN_FLIGHT -> Right IN_FLIGHT
LnGRPC.Payment'SUCCEEDED -> Right SUCCEEDED
LnGRPC.Payment'FAILED -> Right FAILED
LnGRPC.Payment'PaymentStatus'Unrecognized v -> Left $ FromGrpcError ("Cannot parse PaymentStatus, value:" <> show v)