@@ -32,6 +32,8 @@ import (
3232 "github.com/lightninglabs/loop/staticaddr/address"
3333 "github.com/lightninglabs/loop/staticaddr/deposit"
3434 "github.com/lightninglabs/loop/staticaddr/loopin"
35+ "github.com/lightninglabs/loop/staticaddr/openchannel"
36+ "github.com/lightninglabs/loop/staticaddr/staticutil"
3537 "github.com/lightninglabs/loop/staticaddr/withdraw"
3638 "github.com/lightninglabs/loop/swap"
3739 "github.com/lightninglabs/loop/swapserverrpc"
@@ -97,6 +99,7 @@ type swapClientServer struct {
9799 depositManager * deposit.Manager
98100 withdrawalManager * withdraw.Manager
99101 staticLoopInManager * loopin.Manager
102+ openChannelManager * openchannel.Manager
100103 assetClient * assets.TapdClient
101104 swaps map [lntypes.Hash ]loop.SwapInfo
102105 subscribers map [int ]chan <- interface {}
@@ -1733,7 +1736,7 @@ func (s *swapClientServer) WithdrawDeposits(ctx context.Context,
17331736 }
17341737
17351738 case isUtxoSelected :
1736- outpoints , err = toServerOutpoints (req .Outpoints )
1739+ outpoints , err = staticutil . ToWireOutpoints (req .Outpoints )
17371740 if err != nil {
17381741 return nil , err
17391742 }
@@ -1978,13 +1981,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
19781981 }
19791982
19801983 var (
1981- totalNumDeposits = len (allDeposits )
1982- valueUnconfirmed int64
1983- valueDeposited int64
1984- valueExpired int64
1985- valueWithdrawn int64
1986- valueLoopedIn int64
1987- htlcTimeoutSwept int64
1984+ totalNumDeposits = len (allDeposits )
1985+ valueUnconfirmed int64
1986+ valueDeposited int64
1987+ valueExpired int64
1988+ valueWithdrawn int64
1989+ valueLoopedIn int64
1990+ valueChannelsOpened int64
1991+ htlcTimeoutSwept int64
19881992 )
19891993
19901994 // Value unconfirmed.
@@ -2016,6 +2020,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20162020
20172021 case deposit .HtlcTimeoutSwept :
20182022 htlcTimeoutSwept += value
2023+
2024+ case deposit .ChannelPublished :
2025+ valueChannelsOpened += value
20192026 }
20202027 }
20212028
@@ -2040,6 +2047,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20402047 ValueExpiredSatoshis : valueExpired ,
20412048 ValueWithdrawnSatoshis : valueWithdrawn ,
20422049 ValueLoopedInSatoshis : valueLoopedIn ,
2050+ ValueChannelsOpened : valueChannelsOpened ,
20432051 ValueHtlcTimeoutSweepsSatoshis : htlcTimeoutSwept ,
20442052 }, nil
20452053}
@@ -2149,6 +2157,35 @@ func (s *swapClientServer) populateBlocksUntilExpiry(ctx context.Context,
21492157 return nil
21502158}
21512159
2160+ // StaticOpenChannel initiates an open channel request using static address
2161+ // deposits.
2162+ func (s * swapClientServer ) StaticOpenChannel (ctx context.Context ,
2163+ req * looprpc.StaticOpenChannelRequest ) (* looprpc.StaticOpenChannelResponse ,
2164+ error ) {
2165+
2166+ infof ("Static open channel request received" )
2167+
2168+ if req == nil || req .OpenChannelRequest == nil {
2169+ return & looprpc.StaticOpenChannelResponse {},
2170+ fmt .Errorf ("missing open channel request" )
2171+ }
2172+
2173+ chanOpenTxHash , err := s .openChannelManager .DeliverOpenChannelRequest (
2174+ ctx , req .OpenChannelRequest ,
2175+ )
2176+
2177+ var (
2178+ txHash string
2179+ )
2180+ if chanOpenTxHash != nil {
2181+ txHash = chanOpenTxHash .String ()
2182+ }
2183+
2184+ return & looprpc.StaticOpenChannelResponse {
2185+ ChannelOpenTxHash : txHash ,
2186+ }, err
2187+ }
2188+
21522189type filterFunc func (deposits * deposit.Deposit ) bool
21532190
21542191func filter (deposits []* deposit.Deposit , f filterFunc ) []* looprpc.Deposit {
@@ -2202,6 +2239,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
22022239 case deposit .LoopedIn :
22032240 return looprpc .DepositState_LOOPED_IN
22042241
2242+ case deposit .OpeningChannel :
2243+ return looprpc .DepositState_OPENING_CHANNEL
2244+
2245+ case deposit .ChannelPublished :
2246+ return looprpc .DepositState_CHANNEL_PUBLISHED
2247+
22052248 case deposit .SweepHtlcTimeout :
22062249 return looprpc .DepositState_SWEEP_HTLC_TIMEOUT
22072250
@@ -2281,6 +2324,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
22812324 case looprpc .DepositState_LOOPED_IN :
22822325 return deposit .LoopedIn
22832326
2327+ case looprpc .DepositState_OPENING_CHANNEL :
2328+ return deposit .OpeningChannel
2329+
2330+ case looprpc .DepositState_CHANNEL_PUBLISHED :
2331+ return deposit .ChannelPublished
2332+
22842333 case looprpc .DepositState_SWEEP_HTLC_TIMEOUT :
22852334 return deposit .SweepHtlcTimeout
22862335
@@ -2298,23 +2347,6 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
22982347 }
22992348}
23002349
2301- func toServerOutpoints (outpoints []* looprpc.OutPoint ) ([]wire.OutPoint ,
2302- error ) {
2303-
2304- var serverOutpoints []wire.OutPoint
2305- for _ , o := range outpoints {
2306- outpointStr := fmt .Sprintf ("%s:%d" , o .TxidStr , o .OutputIndex )
2307- newOutpoint , err := wire .NewOutPointFromString (outpointStr )
2308- if err != nil {
2309- return nil , err
2310- }
2311-
2312- serverOutpoints = append (serverOutpoints , * newOutpoint )
2313- }
2314-
2315- return serverOutpoints , nil
2316- }
2317-
23182350func rpcAutoloopReason (reason liquidity.Reason ) (looprpc.AutoReason , error ) {
23192351 switch reason {
23202352 case liquidity .ReasonNone :
0 commit comments