mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
52 lines
2.2 KiB
Go
52 lines
2.2 KiB
Go
|
package funding
|
||
|
|
||
|
import (
|
||
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||
|
"github.com/lightningnetwork/lnd/fn"
|
||
|
"github.com/lightningnetwork/lnd/lntypes"
|
||
|
"github.com/lightningnetwork/lnd/lnwallet"
|
||
|
"github.com/lightningnetwork/lnd/msgmux"
|
||
|
)
|
||
|
|
||
|
// AuxFundingDescResult is a type alias for a function that returns an optional
|
||
|
// aux funding desc.
|
||
|
type AuxFundingDescResult = fn.Result[fn.Option[lnwallet.AuxFundingDesc]]
|
||
|
|
||
|
// AuxTapscriptResult is a type alias for a function that returns an optional
|
||
|
// tapscript root.
|
||
|
type AuxTapscriptResult = fn.Result[fn.Option[chainhash.Hash]]
|
||
|
|
||
|
// AuxFundingController permits the implementation of the funding of custom
|
||
|
// channels types. The controller serves as a MsgEndpoint which allows it to
|
||
|
// intercept custom messages, or even the regular funding messages. The
|
||
|
// controller might also pass along an aux funding desc based on an existing
|
||
|
// pending channel ID.
|
||
|
type AuxFundingController interface {
|
||
|
// Endpoint is the embedded interface that signals that the funding
|
||
|
// controller is also a message endpoint. This'll allow it to handle
|
||
|
// custom messages specific to the funding type.
|
||
|
msgmux.Endpoint
|
||
|
|
||
|
// DescFromPendingChanID takes a pending channel ID, that may already be
|
||
|
// known due to prior custom channel messages, and maybe returns an aux
|
||
|
// funding desc which can be used to modify how a channel is funded.
|
||
|
DescFromPendingChanID(pid PendingChanID, openChan lnwallet.AuxChanState,
|
||
|
keyRing lntypes.Dual[lnwallet.CommitmentKeyRing],
|
||
|
initiator bool) AuxFundingDescResult
|
||
|
|
||
|
// DeriveTapscriptRoot takes a pending channel ID and maybe returns a
|
||
|
// tapscript root that should be used when creating any MuSig2 sessions
|
||
|
// for a channel.
|
||
|
DeriveTapscriptRoot(PendingChanID) AuxTapscriptResult
|
||
|
|
||
|
// ChannelReady is called when a channel has been fully opened (multiple
|
||
|
// confirmations) and is ready to be used. This can be used to perform
|
||
|
// any final setup or cleanup.
|
||
|
ChannelReady(openChan lnwallet.AuxChanState) error
|
||
|
|
||
|
// ChannelFinalized is called when a channel has been fully finalized.
|
||
|
// In this state, we've received the commitment sig from the remote
|
||
|
// party, so we are safe to broadcast the funding transaction.
|
||
|
ChannelFinalized(PendingChanID) error
|
||
|
}
|