module LndClient.Data.HtlcEvent ( HtlcEvent (..), ) where import LndClient.Import import qualified Proto.RouterGrpc as LnGRPC import qualified Proto.RouterGrpc_Fields as LnGRPC data HtlcEvent = HtlcEvent { incomingChannelId :: Word64, outgoingChannelId :: Word64, incomingHtlcId :: Word64, outgoingHtlcId :: Word64, timestampNs :: Word64, eventType :: EventType } deriving (Eq) data EventType = UNKNOWN | SEND | RECEIVE | FORWARD deriving (Eq) instance FromGrpc HtlcEvent LnGRPC.HtlcEvent where fromGrpc x = HtlcEvent <$> fromGrpc (x ^. LnGRPC.incomingChannelId) <*> fromGrpc (x ^. LnGRPC.outgoingChannelId) <*> fromGrpc (x ^. LnGRPC.incomingHtlcId) <*> fromGrpc (x ^. LnGRPC.outgoingHtlcId) <*> fromGrpc (x ^. LnGRPC.timestampNs) <*> fromGrpc (x ^. LnGRPC.eventType) instance FromGrpc EventType LnGRPC.HtlcEvent'EventType where fromGrpc x = case x of LnGRPC.HtlcEvent'UNKNOWN -> Right UNKNOWN LnGRPC.HtlcEvent'SEND -> Right SEND LnGRPC.HtlcEvent'RECEIVE -> Right RECEIVE LnGRPC.HtlcEvent'FORWARD -> Right FORWARD LnGRPC.HtlcEvent'EventType'Unrecognized v -> Left $ FromGrpcError ("Cannot parse EventType, value:" <> show v)