mirror of https://github.com/lightninglabs/loop
liquidity: move swap suggestions behind interface
parent
c6e816ad95
commit
d1f121cbc6
@ -0,0 +1,47 @@
|
|||||||
|
package liquidity
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/btcsuite/btcutil"
|
||||||
|
"github.com/lightninglabs/loop"
|
||||||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swapSuggestion is an interface implemented by suggested swaps for our
|
||||||
|
// different swap types. This interface is used to allow us to handle different
|
||||||
|
// swap types with the same autoloop logic.
|
||||||
|
type swapSuggestion interface {
|
||||||
|
// fees returns the highest possible fee amount we could pay for a swap
|
||||||
|
// in satoshis.
|
||||||
|
fees() btcutil.Amount
|
||||||
|
|
||||||
|
// amount returns the swap amount in satoshis.
|
||||||
|
amount() btcutil.Amount
|
||||||
|
|
||||||
|
// channels returns the set of channels involved in the swap.
|
||||||
|
channels() []lnwire.ShortChannelID
|
||||||
|
}
|
||||||
|
|
||||||
|
type loopOutSwapSuggestion struct {
|
||||||
|
loop.OutRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *loopOutSwapSuggestion) amount() btcutil.Amount {
|
||||||
|
return l.Amount
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *loopOutSwapSuggestion) fees() btcutil.Amount {
|
||||||
|
return worstCaseOutFees(
|
||||||
|
l.MaxPrepayRoutingFee, l.MaxSwapRoutingFee, l.MaxSwapFee,
|
||||||
|
l.MaxMinerFee, l.MaxPrepayAmount,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *loopOutSwapSuggestion) channels() []lnwire.ShortChannelID {
|
||||||
|
channels := make([]lnwire.ShortChannelID, len(l.OutgoingChanSet))
|
||||||
|
|
||||||
|
for i, id := range l.OutgoingChanSet {
|
||||||
|
channels[i] = lnwire.NewShortChanIDFromInt(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
return channels
|
||||||
|
}
|
Loading…
Reference in New Issue