clplug-1.0.0.0: src/Plugin/Notifications.hs
{-# LANGUAGE
OverloadedStrings
, DeriveGeneric
, DuplicateRecordFields
, FlexibleContexts
#-}
module Plugin.Notifications where
import Plugin.Generic
import GHC.Generics
import Data.Aeson.Types
import Data.Text (Text)
data ChannelOpened = ChannelOpened {
___id :: Text
, funding_msat :: Int
, funding_txid :: Text
, channel_ready :: Bool
} deriving Generic
instance FromJSON ChannelOpened where
parseJSON = singleField "channel_opened"
data ChannelOpenFailed = ChannelOpenFailed {
channel_id :: Text
} deriving Generic
instance FromJSON ChannelOpenFailed where
parseJSON = singleField "channel_open_failed"
data ChannelStateChanged = ChannelStateChanged {
peer_id :: Text
, channel_id :: Text
, short_channel_id :: Text
, timestamp :: Text
, old_state :: Text
, new_state :: Text
, cause :: Text
, message :: Text
} deriving Generic
instance FromJSON ChannelStateChanged where
parseJSON = singleField "channel_state_changed"
data Connect = Connect {
_id :: Text
, direction :: Text
, address :: Text
} deriving Generic
instance FromJSON Connect where
parseJSON = defaultParse
data Disconnect = Disconnect {
_id :: Text
} deriving Generic
instance FromJSON Disconnect where
parseJSON = defaultParse
data InvoiceCreation = InvoiceCreation {
label :: Text
, preimage :: Text
, amount_msat :: Int
} deriving Generic
instance FromJSON InvoiceCreation where
parseJSON = singleField "invoice_creation"
data Warning = Warning {
level :: Text
, time :: Text
, source :: Text
, log :: Text
} deriving Generic
instance FromJSON Warning where
parseJSON = singleField "warning"
data ForwardEvent = ForwardEvent {
payment_hash :: Text
, in_channel :: Text
, out_channel :: Text
, in_msat :: Int
, out_msat :: Int
, fee_msat :: Int
, status :: Text
, failcode :: Maybe Int
, failreason :: Maybe Text
, received_time :: Double
, resolved_time :: Maybe Double
} deriving Generic
instance FromJSON ForwardEvent where
parseJSON = singleField "forward_event"
data SendPaySuccess = SendPaySuccess {
_id :: Int
, payment_hash :: Text
, destination :: Text
, amount_msat :: Int
, amount_sent_msat :: Int
, created_at :: Int
, status :: Text
, payment_preimage :: Text
} deriving Generic
instance FromJSON SendPaySuccess where
parseJSON = singleField "sendpay_success"
data SendPayFailure = SendPayFailure {
code :: Int
, message :: Text
, _data :: FailData
} deriving Generic
instance FromJSON SendPayFailure where
parseJSON = singleField "sendpay_failure"
data FailData = FailData {
_id :: Int
, payment_hash :: Text
, destination :: Text
, amount_msat :: Int
, amount_sent_msat :: Int
, created_at :: Int
, status :: Text
, erring_index :: Int
, failcode :: Int
, failcodename :: Text
, erring_node :: Text
, erring_channel :: Text
, erring_direction :: Int
} deriving Generic
instance FromJSON FailData where
parseJSON = defaultParse
data CoinMovement = CoinMovement {
version :: Int
, node_id :: Text
, __type :: Text
, account_id :: Text
, originating_account :: Maybe Text
, txid :: Maybe Text
, utxo_txid :: Maybe Text
, vout :: Maybe Int
, part_id :: Maybe Int
, payment_hash :: Maybe Text
, credit_msat :: Maybe Int
, debit_msat :: Maybe Int
, output_msat :: Maybe Int
, output_count :: Maybe Int
, fees_msat :: Maybe Int
, tags :: [Text]
, blockheight :: Maybe Int
, timestamp :: Int
, coin_type :: Text
} deriving (Show, Generic)
instance FromJSON CoinMovement where
parseJSON = singleField "coin_movement"
data BalanceSnapshot = BalanceSnapshot {
balance_snapshots :: [Snapshot]
} deriving (Generic, Show)
instance FromJSON BalanceSnapshot
data Snapshot = Snapshot {
node_id :: Text
, blockheight :: Int
, timestamp :: Int
, accounts :: Saccount
} deriving (Show, Generic)
instance FromJSON Snapshot
data Saccount = Saccount {
account_id :: Text
, balance :: Text
, coin_type :: Text
} deriving (Show, Generic)
instance FromJSON Saccount
data BlockAdded = BlockAdded {
hash :: Text
, height :: Int
} deriving Generic
instance FromJSON BlockAdded where
parseJSON = singleField "block"
data OpenChannelPeerSigs = OpenChannelPeerSigs {
channel_id :: Text
, signed_psbt :: Text
} deriving Generic
instance FromJSON OpenChannelPeerSigs where
parseJSON = singleField "openchannel_peer_sigs"