clplug-0.3.3.0: src/Data/Lightning/Hooks.hs
{-# LANGUAGE
OverloadedStrings
, DeriveGeneric
, DuplicateRecordFields
#-}
module Data.Lightning.Hooks where
import Data.Lightning.Manifest
import Data.Lightning.Generic
import Data.Lightning.Util
import GHC.Generics
import Data.Aeson.Types
import Data.Text (Text)
data Init = Init {
options :: Object
, configuration :: InitConfig
} deriving (Show, Generic)
instance FromJSON Init
data InitConfig = InitConfig {
lightning5dir :: Text
, rpc5file :: Text
, startup :: Bool
, network :: Text
, feature_set :: Features
, proxy :: Maybe Addr
, torv35enabled :: Maybe Bool
, always_use_proxy :: Maybe Bool
} deriving (Show, Generic)
instance FromJSON InitConfig where
parseJSON = defaultParse
data Addr = Addr {
_type :: Text
, address :: Text
, port :: Int
} deriving (Show, Generic)
instance FromJSON Addr where
parseJSON = defaultParse
data PeerConnected = PeerConnected {
_id :: Text
, direction :: Text
, addr :: Text
, features :: Text
} deriving Generic
instance FromJSON PeerConnected where
parseJSON = singleField "peer"
data CommitmentRevocation = CommitmentRevocation {
commitment_txid :: Text
, penalty_tx :: Text
, channel_id :: Text
, commitnum :: Int
} deriving Generic
instance FromJSON CommitmentRevocation
data DbWrite = DbWrite {
data_version :: Int
, writes :: [Text]
} deriving Generic
instance FromJSON DbWrite
data InvoicePayment = InvoicePayment {
label :: Text
, preimage :: Text
, msat :: Text
, extratlvs :: Value
} deriving Generic
instance FromJSON InvoicePayment where
parseJSON = singleField "payment"
data OpenChannel = OpenChannel {
_id :: Text
, funding_msat :: Msat
, push_msat :: Msat
, dust_limit_msat :: Msat
, max_htlc_value_in_flight_msat :: Msat
, channel_reserve_msat :: Msat
, htlc_minimum_msat :: Msat
, feerate_per_kw :: Int
, to_self_delay :: Int
, max_accepted_htlcs :: Int
, channel_flags :: Int
} deriving Generic
instance FromJSON OpenChannel where
parseJSON = singleField "openchannel"
data OpenChannel2 = OpenChannel2 {
_id :: Text
, channel_id :: Text
, their_funding_msat :: Msat
, dust_limit_msat :: Msat
, max_htlc_value_in_flight_msat :: Msat
, htlc_minimum_msat :: Msat
, funding_feerate_per_kw :: Int
, commitment_feerate_per_kw :: Int
, feerate_our_max :: Int
, feerate_our_min :: Int
, to_self_delay :: Int
, max_accepted_htlcs :: Int
, channel_flags :: Int
, locktime :: Int
, channel_max_msat :: Msat
, requested_lease_msat :: Msat
, lease_blockheight_start :: Int
, node_blockheight :: Int
} deriving Generic
instance FromJSON OpenChannel2 where
parseJSON = singleField "openchannel2"
data OpenChannel2Changed = OpenChannel2Changed {
channel_id :: Text
, psbt :: Text
} deriving Generic
instance FromJSON OpenChannel2Changed where
parseJSON = singleField "openchannel2_changed"
data OpenChannel2Sign = OpenChannel2Sign {
channel_id :: Text
, psbt :: Text
} deriving Generic
instance FromJSON OpenChannel2Sign where
parseJSON = singleField "openchannel2_sign"
data RbfChannel = RbfChannel {
_id :: Text
, channel_id :: Text
, their_last_funding_msat :: Msat
, their_funding_msat :: Msat
, our_last_funding_msat :: Msat
, funding_feerate_per_kw :: Int
, feerate_our_max :: Int
, feerate_our_min :: Int
, channel_max_msat :: Msat
, locktime :: Int
, requested_lease_msat :: Msat
} deriving Generic
instance FromJSON RbfChannel where
parseJSON = singleField "rbf_channel"
data HtlcAccepted = HtlcAccepted {
onion :: HtlcOnion
, htlc :: Htlc
, forward_to :: Text
} deriving Generic
instance FromJSON HtlcAccepted
data HtlcOnion = HtlcOnion {
payload :: Text
, short_channel_id :: Text
, forward_msat :: Msat
, outgoing_cltv_value :: Msat
, shared_secret :: Text
, next_ontion :: Text
} deriving Generic
instance FromJSON HtlcOnion
data Htlc = Htlc {
short_channel_id :: Text
, _id :: Int
, amount_msat :: Msat
, cltv_expiry :: Int
, cltv_expiry_relative :: Int
, payment_hash :: Text
} deriving Generic
instance FromJSON Htlc where
parseJSON = defaultParse
data RpcCommand = RpcCommand {
_id :: Int
, method :: Text
, params :: Value
} deriving Generic
instance FromJSON RpcCommand where
parseJSON = singleField "rpc_command"
data CustomMsg = CustomMsg {
peer_id :: Text
, payload :: Text
} deriving Generic
instance FromJSON CustomMsg
data OnionMessageRecv = OnionMessageRecv {
reply_first_node :: Text
, reply_blinding :: Text
, reply_path :: [MsgHop]
, invoice_request :: Text
, invoice :: Text
, invoice_error :: Text
, unknown_fields :: Value
} deriving Generic
instance FromJSON OnionMessageRecv
data OnionMessageRecvSecret = OnionMessageRecvSecret {
pathsecret :: Text
, reply_first_node :: Text
, reply_blinding :: Text
, reply_path :: [MsgHop]
, invoice_request :: Text
, invoice :: Text
, invoice_error :: Text
, unknown_fields :: Value
} deriving Generic
instance FromJSON OnionMessageRecvSecret
data MsgHop = MsgHop {
_id :: Text
, encrypted_recipient_data :: Text
, blinding :: Text
} deriving Generic
instance FromJSON MsgHop where
parseJSON = defaultParse