-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Create Core Lightning Plugins -- -- Library to create plugins to extend the functionality of Core -- Lightning daemon. @package clplug @version 0.3.2.0 module Control.Internal.Conduit -- | Decode from bytestring into a JSON object. Simplified from hackage -- package: json-rpc inConduit :: Monad n => FromJSON a => ConduitT ByteString (ParseResult a) n () data ParseResult x Correct :: !x -> ParseResult x InvalidReq :: ParseResult x ParseErr :: ParseResult x data Res a Res :: a -> Value -> Res a [getResBody] :: Res a -> a [getResId] :: Res a -> Value ErrRes :: Text -> Maybe Value -> Res a [errMsg] :: Res a -> Text [errId] :: Res a -> Maybe Value data Req x Req :: Text -> x -> Maybe Value -> Req x [getMethod] :: Req x -> Text [getParams] :: Req x -> x [getReqId] :: Req x -> Maybe Value instance GHC.Generics.Generic (Control.Internal.Conduit.ParseResult x) instance GHC.Show.Show x => GHC.Show.Show (Control.Internal.Conduit.ParseResult x) instance GHC.Show.Show x => GHC.Show.Show (Control.Internal.Conduit.Req x) instance GHC.Generics.Generic (Control.Internal.Conduit.Res a) instance GHC.Show.Show a => GHC.Show.Show (Control.Internal.Conduit.Res a) instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Control.Internal.Conduit.Res a) instance Data.Aeson.Types.ToJSON.ToJSON (Control.Internal.Conduit.Res Data.Aeson.Types.Internal.Value) instance Data.Aeson.Types.FromJSON.FromJSON (Control.Internal.Conduit.Req Data.Aeson.Types.Internal.Value) instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Control.Internal.Conduit.Req a) instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Control.Internal.Conduit.ParseResult a) instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Control.Internal.Conduit.ParseResult a) module Data.Lightning.Generic defaultParse :: (Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a singleField :: (Generic a, GFromJSON Zero (Rep a)) => Key -> Value -> Parser a module Data.Lightning.Manifest type Manifest = Value data Option Option :: Text -> Text -> Text -> Text -> Bool -> Option [$sel:name:Option] :: Option -> Text [$sel:_type:Option] :: Option -> Text [$sel:_default:Option] :: Option -> Text [$sel:description:Option] :: Option -> Text [$sel:deprecated:Option] :: Option -> Bool data RpcMethod RpcMethod :: Text -> Text -> Text -> Maybe Text -> Bool -> RpcMethod [$sel:name:RpcMethod] :: RpcMethod -> Text [$sel:usage:RpcMethod] :: RpcMethod -> Text [$sel:description:RpcMethod] :: RpcMethod -> Text [$sel:long_description:RpcMethod] :: RpcMethod -> Maybe Text [$sel:deprecated:RpcMethod] :: RpcMethod -> Bool data Hook Hook :: Text -> Maybe Value -> Hook [$sel:name:Hook] :: Hook -> Text [$sel:before:Hook] :: Hook -> Maybe Value data Notification Notification :: Text -> Notification [$sel:__method:Notification] :: Notification -> Text data Features Features :: String -> String -> String -> String -> Features [$sel:__init:Features] :: Features -> String [$sel:node:Features] :: Features -> String [$sel:channel:Features] :: Features -> String [$sel:invoice:Features] :: Features -> String instance GHC.Generics.Generic Data.Lightning.Manifest.Option instance GHC.Generics.Generic Data.Lightning.Manifest.RpcMethod instance GHC.Generics.Generic Data.Lightning.Manifest.Hook instance GHC.Generics.Generic Data.Lightning.Manifest.Notification instance GHC.Show.Show Data.Lightning.Manifest.Features instance GHC.Generics.Generic Data.Lightning.Manifest.Features instance Data.Aeson.Types.ToJSON.ToJSON Data.Lightning.Manifest.Features instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Manifest.Features instance Data.Aeson.Types.ToJSON.ToJSON Data.Lightning.Manifest.Notification instance Data.Aeson.Types.ToJSON.ToJSON Data.Lightning.Manifest.Hook instance Data.Aeson.Types.ToJSON.ToJSON Data.Lightning.Manifest.RpcMethod instance Data.Aeson.Types.ToJSON.ToJSON Data.Lightning.Manifest.Option module Data.Lightning.Util type Sat = Int type Msat = Int type Params = Value type Id = Value type Method = Text module Data.Lightning.Notifications data ChannelOpened ChannelOpened :: Text -> Int -> Text -> Bool -> ChannelOpened [$sel:___id:ChannelOpened] :: ChannelOpened -> Text [$sel:funding_msat:ChannelOpened] :: ChannelOpened -> Int [$sel:funding_txid:ChannelOpened] :: ChannelOpened -> Text [$sel:channel_ready:ChannelOpened] :: ChannelOpened -> Bool data ChannelOpenFailed ChannelOpenFailed :: Text -> ChannelOpenFailed [$sel:channel_id:ChannelOpenFailed] :: ChannelOpenFailed -> Text data ChannelStateChanged ChannelStateChanged :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> ChannelStateChanged [$sel:peer_id:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:channel_id:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:short_channel_id:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:timestamp:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:old_state:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:new_state:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:cause:ChannelStateChanged] :: ChannelStateChanged -> Text [$sel:message:ChannelStateChanged] :: ChannelStateChanged -> Text data Connect Connect :: Text -> Text -> Text -> Connect [$sel:_id:Connect] :: Connect -> Text [$sel:direction:Connect] :: Connect -> Text [$sel:address:Connect] :: Connect -> Text data Disconnect Disconnect :: Text -> Disconnect [$sel:_id:Disconnect] :: Disconnect -> Text data InvoiceCreation InvoiceCreation :: Text -> Text -> Msat -> InvoiceCreation [$sel:label:InvoiceCreation] :: InvoiceCreation -> Text [$sel:preimage:InvoiceCreation] :: InvoiceCreation -> Text [$sel:amount_msat:InvoiceCreation] :: InvoiceCreation -> Msat data Warning Warning :: Text -> Text -> Text -> Text -> Warning [$sel:level:Warning] :: Warning -> Text [$sel:time:Warning] :: Warning -> Text [$sel:source:Warning] :: Warning -> Text [$sel:log:Warning] :: Warning -> Text data ForwardEvent ForwardEvent :: Text -> Text -> Text -> Msat -> Msat -> Msat -> Text -> Maybe Int -> Maybe Text -> Double -> Maybe Double -> ForwardEvent [$sel:payment_hash:ForwardEvent] :: ForwardEvent -> Text [$sel:in_channel:ForwardEvent] :: ForwardEvent -> Text [$sel:out_channel:ForwardEvent] :: ForwardEvent -> Text [$sel:in_msat:ForwardEvent] :: ForwardEvent -> Msat [$sel:out_msat:ForwardEvent] :: ForwardEvent -> Msat [$sel:fee_msat:ForwardEvent] :: ForwardEvent -> Msat [$sel:status:ForwardEvent] :: ForwardEvent -> Text [$sel:failcode:ForwardEvent] :: ForwardEvent -> Maybe Int [$sel:failreason:ForwardEvent] :: ForwardEvent -> Maybe Text [$sel:received_time:ForwardEvent] :: ForwardEvent -> Double [$sel:resolved_time:ForwardEvent] :: ForwardEvent -> Maybe Double data SendPaySuccess SendPaySuccess :: Int -> Text -> Text -> Msat -> Msat -> Int -> Text -> Text -> SendPaySuccess [$sel:_id:SendPaySuccess] :: SendPaySuccess -> Int [$sel:payment_hash:SendPaySuccess] :: SendPaySuccess -> Text [$sel:destination:SendPaySuccess] :: SendPaySuccess -> Text [$sel:amount_msat:SendPaySuccess] :: SendPaySuccess -> Msat [$sel:amount_sent_msat:SendPaySuccess] :: SendPaySuccess -> Msat [$sel:created_at:SendPaySuccess] :: SendPaySuccess -> Int [$sel:status:SendPaySuccess] :: SendPaySuccess -> Text [$sel:payment_preimage:SendPaySuccess] :: SendPaySuccess -> Text data SendPayFailure SendPayFailure :: Int -> Text -> FailData -> SendPayFailure [$sel:code:SendPayFailure] :: SendPayFailure -> Int [$sel:message:SendPayFailure] :: SendPayFailure -> Text [$sel:_data:SendPayFailure] :: SendPayFailure -> FailData data FailData FailData :: Int -> Text -> Text -> Msat -> Msat -> Int -> Text -> Int -> Int -> Text -> Text -> Text -> Int -> FailData [$sel:_id:FailData] :: FailData -> Int [$sel:payment_hash:FailData] :: FailData -> Text [$sel:destination:FailData] :: FailData -> Text [$sel:amount_msat:FailData] :: FailData -> Msat [$sel:amount_sent_msat:FailData] :: FailData -> Msat [$sel:created_at:FailData] :: FailData -> Int [$sel:status:FailData] :: FailData -> Text [$sel:erring_index:FailData] :: FailData -> Int [$sel:failcode:FailData] :: FailData -> Int [$sel:failcodename:FailData] :: FailData -> Text [$sel:erring_node:FailData] :: FailData -> Text [$sel:erring_channel:FailData] :: FailData -> Text [$sel:erring_direction:FailData] :: FailData -> Int data CoinMovement CoinMovement :: Int -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Int -> Maybe Text -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> [Text] -> Maybe Int -> Int -> Text -> CoinMovement [$sel:version:CoinMovement] :: CoinMovement -> Int [$sel:node_id:CoinMovement] :: CoinMovement -> Text [$sel:__type:CoinMovement] :: CoinMovement -> Text [$sel:account_id:CoinMovement] :: CoinMovement -> Text [$sel:originating_account:CoinMovement] :: CoinMovement -> Maybe Text [$sel:txid:CoinMovement] :: CoinMovement -> Maybe Text [$sel:utxo_txid:CoinMovement] :: CoinMovement -> Maybe Text [$sel:vout:CoinMovement] :: CoinMovement -> Maybe Int [$sel:part_id:CoinMovement] :: CoinMovement -> Maybe Int [$sel:payment_hash:CoinMovement] :: CoinMovement -> Maybe Text [$sel:credit_msat:CoinMovement] :: CoinMovement -> Maybe Int [$sel:debit_msat:CoinMovement] :: CoinMovement -> Maybe Int [$sel:output_msat:CoinMovement] :: CoinMovement -> Maybe Int [$sel:output_count:CoinMovement] :: CoinMovement -> Maybe Int [$sel:fees_msat:CoinMovement] :: CoinMovement -> Maybe Int [$sel:tags:CoinMovement] :: CoinMovement -> [Text] [$sel:blockheight:CoinMovement] :: CoinMovement -> Maybe Int [$sel:timestamp:CoinMovement] :: CoinMovement -> Int [$sel:coin_type:CoinMovement] :: CoinMovement -> Text data BalanceSnapshot BalanceSnapshot :: [Snapshot] -> BalanceSnapshot [$sel:balance_snapshots:BalanceSnapshot] :: BalanceSnapshot -> [Snapshot] data Snapshot Snapshot :: Text -> Int -> Int -> Saccount -> Snapshot [$sel:node_id:Snapshot] :: Snapshot -> Text [$sel:blockheight:Snapshot] :: Snapshot -> Int [$sel:timestamp:Snapshot] :: Snapshot -> Int [$sel:accounts:Snapshot] :: Snapshot -> Saccount data Saccount Saccount :: Text -> Text -> Text -> Saccount [$sel:account_id:Saccount] :: Saccount -> Text [$sel:balance:Saccount] :: Saccount -> Text [$sel:coin_type:Saccount] :: Saccount -> Text data BlockAdded BlockAdded :: Text -> Int -> BlockAdded [$sel:hash:BlockAdded] :: BlockAdded -> Text [$sel:height:BlockAdded] :: BlockAdded -> Int data OpenChannelPeerSigs OpenChannelPeerSigs :: Text -> Text -> OpenChannelPeerSigs [$sel:channel_id:OpenChannelPeerSigs] :: OpenChannelPeerSigs -> Text [$sel:signed_psbt:OpenChannelPeerSigs] :: OpenChannelPeerSigs -> Text instance GHC.Generics.Generic Data.Lightning.Notifications.ChannelOpened instance GHC.Generics.Generic Data.Lightning.Notifications.ChannelOpenFailed instance GHC.Generics.Generic Data.Lightning.Notifications.ChannelStateChanged instance GHC.Generics.Generic Data.Lightning.Notifications.Connect instance GHC.Generics.Generic Data.Lightning.Notifications.Disconnect instance GHC.Generics.Generic Data.Lightning.Notifications.InvoiceCreation instance GHC.Generics.Generic Data.Lightning.Notifications.Warning instance GHC.Generics.Generic Data.Lightning.Notifications.ForwardEvent instance GHC.Generics.Generic Data.Lightning.Notifications.SendPaySuccess instance GHC.Generics.Generic Data.Lightning.Notifications.FailData instance GHC.Generics.Generic Data.Lightning.Notifications.SendPayFailure instance GHC.Generics.Generic Data.Lightning.Notifications.CoinMovement instance GHC.Show.Show Data.Lightning.Notifications.CoinMovement instance GHC.Generics.Generic Data.Lightning.Notifications.Saccount instance GHC.Show.Show Data.Lightning.Notifications.Saccount instance GHC.Generics.Generic Data.Lightning.Notifications.Snapshot instance GHC.Show.Show Data.Lightning.Notifications.Snapshot instance GHC.Show.Show Data.Lightning.Notifications.BalanceSnapshot instance GHC.Generics.Generic Data.Lightning.Notifications.BalanceSnapshot instance GHC.Generics.Generic Data.Lightning.Notifications.BlockAdded instance GHC.Generics.Generic Data.Lightning.Notifications.OpenChannelPeerSigs instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.OpenChannelPeerSigs instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.BlockAdded instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.BalanceSnapshot instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.Snapshot instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.Saccount instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.CoinMovement instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.SendPayFailure instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.FailData instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.SendPaySuccess instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.ForwardEvent instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.Warning instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.InvoiceCreation instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.Disconnect instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.Connect instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.ChannelStateChanged instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.ChannelOpenFailed instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Notifications.ChannelOpened module Data.Lightning.Hooks data Init Init :: Object -> InitConfig -> Init [$sel:options:Init] :: Init -> Object [$sel:configuration:Init] :: Init -> InitConfig data InitConfig InitConfig :: Text -> Text -> Bool -> Text -> Features -> Maybe Addr -> Maybe Bool -> Maybe Bool -> InitConfig [$sel:lightning5dir:InitConfig] :: InitConfig -> Text [$sel:rpc5file:InitConfig] :: InitConfig -> Text [$sel:startup:InitConfig] :: InitConfig -> Bool [$sel:network:InitConfig] :: InitConfig -> Text [$sel:feature_set:InitConfig] :: InitConfig -> Features [$sel:proxy:InitConfig] :: InitConfig -> Maybe Addr [$sel:torv35enabled:InitConfig] :: InitConfig -> Maybe Bool [$sel:always_use_proxy:InitConfig] :: InitConfig -> Maybe Bool data Addr Addr :: Text -> Text -> Int -> Addr [$sel:_type:Addr] :: Addr -> Text [$sel:address:Addr] :: Addr -> Text [$sel:port:Addr] :: Addr -> Int data PeerConnected PeerConnected :: Text -> Text -> Text -> Text -> PeerConnected [$sel:_id:PeerConnected] :: PeerConnected -> Text [$sel:direction:PeerConnected] :: PeerConnected -> Text [$sel:addr:PeerConnected] :: PeerConnected -> Text [$sel:features:PeerConnected] :: PeerConnected -> Text data CommitmentRevocation CommitmentRevocation :: Text -> Text -> Text -> Int -> CommitmentRevocation [$sel:commitment_txid:CommitmentRevocation] :: CommitmentRevocation -> Text [$sel:penalty_tx:CommitmentRevocation] :: CommitmentRevocation -> Text [$sel:channel_id:CommitmentRevocation] :: CommitmentRevocation -> Text [$sel:commitnum:CommitmentRevocation] :: CommitmentRevocation -> Int data DbWrite DbWrite :: Int -> [Text] -> DbWrite [$sel:data_version:DbWrite] :: DbWrite -> Int [$sel:writes:DbWrite] :: DbWrite -> [Text] data InvoicePayment InvoicePayment :: Text -> Text -> Msat -> InvoicePayment [$sel:label:InvoicePayment] :: InvoicePayment -> Text [$sel:preimage:InvoicePayment] :: InvoicePayment -> Text [$sel:amount_msat:InvoicePayment] :: InvoicePayment -> Msat data OpenChannel OpenChannel :: Text -> Msat -> Msat -> Msat -> Msat -> Msat -> Msat -> Int -> Int -> Int -> Int -> OpenChannel [$sel:_id:OpenChannel] :: OpenChannel -> Text [$sel:funding_msat:OpenChannel] :: OpenChannel -> Msat [$sel:push_msat:OpenChannel] :: OpenChannel -> Msat [$sel:dust_limit_msat:OpenChannel] :: OpenChannel -> Msat [$sel:max_htlc_value_in_flight_msat:OpenChannel] :: OpenChannel -> Msat [$sel:channel_reserve_msat:OpenChannel] :: OpenChannel -> Msat [$sel:htlc_minimum_msat:OpenChannel] :: OpenChannel -> Msat [$sel:feerate_per_kw:OpenChannel] :: OpenChannel -> Int [$sel:to_self_delay:OpenChannel] :: OpenChannel -> Int [$sel:max_accepted_htlcs:OpenChannel] :: OpenChannel -> Int [$sel:channel_flags:OpenChannel] :: OpenChannel -> Int data OpenChannel2 OpenChannel2 :: Text -> Text -> Msat -> Msat -> Msat -> Msat -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Msat -> Msat -> Int -> Int -> OpenChannel2 [$sel:_id:OpenChannel2] :: OpenChannel2 -> Text [$sel:channel_id:OpenChannel2] :: OpenChannel2 -> Text [$sel:their_funding_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:dust_limit_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:max_htlc_value_in_flight_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:htlc_minimum_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:funding_feerate_per_kw:OpenChannel2] :: OpenChannel2 -> Int [$sel:commitment_feerate_per_kw:OpenChannel2] :: OpenChannel2 -> Int [$sel:feerate_our_max:OpenChannel2] :: OpenChannel2 -> Int [$sel:feerate_our_min:OpenChannel2] :: OpenChannel2 -> Int [$sel:to_self_delay:OpenChannel2] :: OpenChannel2 -> Int [$sel:max_accepted_htlcs:OpenChannel2] :: OpenChannel2 -> Int [$sel:channel_flags:OpenChannel2] :: OpenChannel2 -> Int [$sel:locktime:OpenChannel2] :: OpenChannel2 -> Int [$sel:channel_max_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:requested_lease_msat:OpenChannel2] :: OpenChannel2 -> Msat [$sel:lease_blockheight_start:OpenChannel2] :: OpenChannel2 -> Int [$sel:node_blockheight:OpenChannel2] :: OpenChannel2 -> Int data OpenChannel2Changed OpenChannel2Changed :: Text -> Text -> OpenChannel2Changed [$sel:channel_id:OpenChannel2Changed] :: OpenChannel2Changed -> Text [$sel:psbt:OpenChannel2Changed] :: OpenChannel2Changed -> Text data OpenChannel2Sign OpenChannel2Sign :: Text -> Text -> OpenChannel2Sign [$sel:channel_id:OpenChannel2Sign] :: OpenChannel2Sign -> Text [$sel:psbt:OpenChannel2Sign] :: OpenChannel2Sign -> Text data RbfChannel RbfChannel :: Text -> Text -> Msat -> Msat -> Msat -> Int -> Int -> Int -> Msat -> Int -> Msat -> RbfChannel [$sel:_id:RbfChannel] :: RbfChannel -> Text [$sel:channel_id:RbfChannel] :: RbfChannel -> Text [$sel:their_last_funding_msat:RbfChannel] :: RbfChannel -> Msat [$sel:their_funding_msat:RbfChannel] :: RbfChannel -> Msat [$sel:our_last_funding_msat:RbfChannel] :: RbfChannel -> Msat [$sel:funding_feerate_per_kw:RbfChannel] :: RbfChannel -> Int [$sel:feerate_our_max:RbfChannel] :: RbfChannel -> Int [$sel:feerate_our_min:RbfChannel] :: RbfChannel -> Int [$sel:channel_max_msat:RbfChannel] :: RbfChannel -> Msat [$sel:locktime:RbfChannel] :: RbfChannel -> Int [$sel:requested_lease_msat:RbfChannel] :: RbfChannel -> Msat data HtlcAccepted HtlcAccepted :: HtlcOnion -> Htlc -> Text -> HtlcAccepted [$sel:onion:HtlcAccepted] :: HtlcAccepted -> HtlcOnion [$sel:htlc:HtlcAccepted] :: HtlcAccepted -> Htlc [$sel:forward_to:HtlcAccepted] :: HtlcAccepted -> Text data HtlcOnion HtlcOnion :: Text -> Text -> Msat -> Msat -> Text -> Text -> HtlcOnion [$sel:payload:HtlcOnion] :: HtlcOnion -> Text [$sel:short_channel_id:HtlcOnion] :: HtlcOnion -> Text [$sel:forward_msat:HtlcOnion] :: HtlcOnion -> Msat [$sel:outgoing_cltv_value:HtlcOnion] :: HtlcOnion -> Msat [$sel:shared_secret:HtlcOnion] :: HtlcOnion -> Text [$sel:next_ontion:HtlcOnion] :: HtlcOnion -> Text data Htlc Htlc :: Text -> Int -> Msat -> Int -> Int -> Text -> Htlc [$sel:short_channel_id:Htlc] :: Htlc -> Text [$sel:_id:Htlc] :: Htlc -> Int [$sel:amount_msat:Htlc] :: Htlc -> Msat [$sel:cltv_expiry:Htlc] :: Htlc -> Int [$sel:cltv_expiry_relative:Htlc] :: Htlc -> Int [$sel:payment_hash:Htlc] :: Htlc -> Text data RpcCommand RpcCommand :: Int -> Text -> Value -> RpcCommand [$sel:_id:RpcCommand] :: RpcCommand -> Int [$sel:method:RpcCommand] :: RpcCommand -> Text [$sel:params:RpcCommand] :: RpcCommand -> Value data CustomMsg CustomMsg :: Text -> Text -> CustomMsg [$sel:peer_id:CustomMsg] :: CustomMsg -> Text [$sel:payload:CustomMsg] :: CustomMsg -> Text data OnionMessageRecv OnionMessageRecv :: Text -> Text -> [MsgHop] -> Text -> Text -> Text -> Value -> OnionMessageRecv [$sel:reply_first_node:OnionMessageRecv] :: OnionMessageRecv -> Text [$sel:reply_blinding:OnionMessageRecv] :: OnionMessageRecv -> Text [$sel:reply_path:OnionMessageRecv] :: OnionMessageRecv -> [MsgHop] [$sel:invoice_request:OnionMessageRecv] :: OnionMessageRecv -> Text [$sel:invoice:OnionMessageRecv] :: OnionMessageRecv -> Text [$sel:invoice_error:OnionMessageRecv] :: OnionMessageRecv -> Text [$sel:unknown_fields:OnionMessageRecv] :: OnionMessageRecv -> Value data OnionMessageRecvSecret OnionMessageRecvSecret :: Text -> Text -> Text -> [MsgHop] -> Text -> Text -> Text -> Value -> OnionMessageRecvSecret [$sel:pathsecret:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:reply_first_node:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:reply_blinding:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:reply_path:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> [MsgHop] [$sel:invoice_request:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:invoice:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:invoice_error:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Text [$sel:unknown_fields:OnionMessageRecvSecret] :: OnionMessageRecvSecret -> Value data MsgHop MsgHop :: Text -> Text -> Text -> MsgHop [$sel:_id:MsgHop] :: MsgHop -> Text [$sel:encrypted_recipient_data:MsgHop] :: MsgHop -> Text [$sel:blinding:MsgHop] :: MsgHop -> Text instance GHC.Generics.Generic Data.Lightning.Hooks.Addr instance GHC.Show.Show Data.Lightning.Hooks.Addr instance GHC.Generics.Generic Data.Lightning.Hooks.InitConfig instance GHC.Show.Show Data.Lightning.Hooks.InitConfig instance GHC.Generics.Generic Data.Lightning.Hooks.Init instance GHC.Show.Show Data.Lightning.Hooks.Init instance GHC.Generics.Generic Data.Lightning.Hooks.PeerConnected instance GHC.Generics.Generic Data.Lightning.Hooks.CommitmentRevocation instance GHC.Generics.Generic Data.Lightning.Hooks.DbWrite instance GHC.Generics.Generic Data.Lightning.Hooks.InvoicePayment instance GHC.Generics.Generic Data.Lightning.Hooks.OpenChannel instance GHC.Generics.Generic Data.Lightning.Hooks.OpenChannel2 instance GHC.Generics.Generic Data.Lightning.Hooks.OpenChannel2Changed instance GHC.Generics.Generic Data.Lightning.Hooks.OpenChannel2Sign instance GHC.Generics.Generic Data.Lightning.Hooks.RbfChannel instance GHC.Generics.Generic Data.Lightning.Hooks.HtlcOnion instance GHC.Generics.Generic Data.Lightning.Hooks.Htlc instance GHC.Generics.Generic Data.Lightning.Hooks.HtlcAccepted instance GHC.Generics.Generic Data.Lightning.Hooks.RpcCommand instance GHC.Generics.Generic Data.Lightning.Hooks.CustomMsg instance GHC.Generics.Generic Data.Lightning.Hooks.MsgHop instance GHC.Generics.Generic Data.Lightning.Hooks.OnionMessageRecvSecret instance GHC.Generics.Generic Data.Lightning.Hooks.OnionMessageRecv instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OnionMessageRecv instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OnionMessageRecvSecret instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.MsgHop instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.CustomMsg instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.RpcCommand instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.HtlcAccepted instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.Htlc instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.HtlcOnion instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.RbfChannel instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OpenChannel2Sign instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OpenChannel2Changed instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OpenChannel2 instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.OpenChannel instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.InvoicePayment instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.DbWrite instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.CommitmentRevocation instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.PeerConnected instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.Init instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.InitConfig instance Data.Aeson.Types.FromJSON.FromJSON Data.Lightning.Hooks.Addr module Data.Lightning module Control.Plugin -- | Create main executable that can be installed as core lightning plugin. plugin :: Value -> InitMonad s -> PluginApp s -> IO () -- | Helper function to allow node to continue default behaviour. release :: Monad m => Id -> ConduitT i (Res Value) m () -- | Helper function to prevent node default behaviour. reject :: Monad m => Id -> ConduitT i (Res Value) m () -- | Respond with arbitrary Value, custom rpc hooks will pass back through -- to terminal. respond :: Value -> Id -> PluginMonad a () -- | Function called on every event subscribed to in the manifest. type PluginApp a = PluginReq -> PluginMonad a () -- | Plugin stack contains ReaderT (ask - rpc handle & config), stateT -- (get/put - polymorphic state) and conduitT (yield - data exchange to -- core lightning.) type PluginMonad a b = ConduitT (Either (Res Value) PluginReq) (Res Value) (ReaderT PlugInfo (StateT a IO)) b -- | Function called on initialization, returned value is the initial -- state. type InitMonad a = ReaderT PlugInfo IO a type PluginReq = (Maybe Id, Method, Params) -- | Handle connected to lightning-rpc file (use with Control.Client) & -- configuration object. type PlugInfo = (Handle, Init) instance GHC.Exception.Type.Exception Control.Plugin.StartErr instance GHC.Show.Show Control.Plugin.StartErr module Control.Client -- | interface with lightning-rpc. lightningCli :: (MonadReader PlugInfo m, MonadIO m) => PartialCommand -> m (Maybe (Res Value)) -- | log wrapper for easier debugging during development. lightningCliDebug :: (MonadReader PlugInfo m, MonadIO m) => (String -> IO ()) -> PartialCommand -> m (Maybe (Res Value)) -- | commands to core lightning are defined by the set of plugins and -- version of core lightning so this is generic and you should refer to -- lightning-cli help command for the details of the command you -- are interested in. A filter object is used to specify the data you -- desire returned (i.e. {"id":True}) and params are the named fields of -- the command. data Command Command :: Text -> Maybe Value -> Value -> Value -> Command [$sel:method:Command] :: Command -> Text [$sel:reqFilter:Command] :: Command -> Maybe Value [$sel:params:Command] :: Command -> Value [$sel:____id:Command] :: Command -> Value type PartialCommand = Id -> Command data Res a Res :: a -> Value -> Res a [getResBody] :: Res a -> a [getResId] :: Res a -> Value ErrRes :: Text -> Maybe Value -> Res a [errMsg] :: Res a -> Text [errId] :: Res a -> Maybe Value instance GHC.Show.Show Control.Client.Command instance GHC.Show.Show Control.Client.PartialCommand instance Data.Aeson.Types.ToJSON.ToJSON Control.Client.Command