diff --git a/fsm/stateparser/stateparser.go b/fsm/stateparser/stateparser.go index 0e11b5c0..edbadb10 100644 --- a/fsm/stateparser/stateparser.go +++ b/fsm/stateparser/stateparser.go @@ -12,6 +12,8 @@ import ( "github.com/lightninglabs/loop/fsm" "github.com/lightninglabs/loop/instantout" "github.com/lightninglabs/loop/instantout/reservation" + "github.com/lightninglabs/loop/staticaddr/deposit" + "github.com/lightninglabs/loop/staticaddr/loopin" ) var errInvalidFSMSelector = errors.New("missing or unknown fsm selector") @@ -59,9 +61,18 @@ func getStates(stateMachine string) (fsm.States, error) { instantOutFSM := &instantout.FSM{} return instantOutFSM.GetV1ReservationStates(), nil + case "staticaddr-deposit": + depositFSM := &deposit.FSM{} + return depositFSM.DepositStatesV0(), nil + + case "staticaddr-loopin": + loopInFSM := &loopin.FSM{} + return loopInFSM.LoopInStatesV0(), nil + default: return nil, fmt.Errorf( - "%w %q; supported selectors: example, instantout, reservation", + "%w %q; supported selectors: example, instantout, "+ + "reservation, staticaddr-deposit, staticaddr-loopin", errInvalidFSMSelector, stateMachine, ) } diff --git a/scripts/fsm-generate.sh b/scripts/fsm-generate.sh index 0f78fc76..7434d6de 100755 --- a/scripts/fsm-generate.sh +++ b/scripts/fsm-generate.sh @@ -4,3 +4,5 @@ set -euo pipefail go run ./fsm/stateparser/stateparser.go --out ./fsm/example_fsm.md --fsm example go run ./fsm/stateparser/stateparser.go --out ./instantout/reservation/reservation_fsm.md --fsm reservation go run ./fsm/stateparser/stateparser.go --out ./instantout/fsm.md --fsm instantout +go run ./fsm/stateparser/stateparser.go --out ./staticaddr/deposit/fsm.md --fsm staticaddr-deposit +go run ./fsm/stateparser/stateparser.go --out ./staticaddr/loopin/fsm.md --fsm staticaddr-loopin diff --git a/staticaddr/deposit/fsm.md b/staticaddr/deposit/fsm.md new file mode 100644 index 00000000..9a804c6c --- /dev/null +++ b/staticaddr/deposit/fsm.md @@ -0,0 +1,52 @@ +```mermaid +stateDiagram-v2 +[*] --> Deposited: OnStart +ChannelPublished +ChannelPublished --> ChannelPublished: OnExpiry +Deposited +Deposited --> Deposited: OnError +Deposited --> PublishExpirySweep: OnExpiry +Deposited --> LoopingIn: OnLoopInInitiated +Deposited --> OpeningChannel: OnOpeningChannel +Deposited --> Deposited: OnRecover +Deposited --> SweepHtlcTimeout: OnSweepingHtlcTimeout +Deposited --> Withdrawing: OnWithdrawInitiated +Expired +Expired --> Expired: OnExpiry +HtlcTimeoutSwept +HtlcTimeoutSwept --> HtlcTimeoutSwept: OnExpiry +LoopedIn +LoopedIn --> LoopedIn: OnExpiry +LoopingIn +LoopingIn --> Deposited: OnError +LoopingIn --> PublishExpirySweep: OnExpiry +LoopingIn --> LoopingIn: OnLoopInInitiated +LoopingIn --> LoopedIn: OnLoopedIn +LoopingIn --> LoopingIn: OnRecover +LoopingIn --> SweepHtlcTimeout: OnSweepingHtlcTimeout +OpeningChannel +OpeningChannel --> ChannelPublished: OnChannelPublished +OpeningChannel --> Deposited: OnError +OpeningChannel --> OpeningChannel: OnExpiry +OpeningChannel --> OpeningChannel: OnRecover +PublishExpirySweep +PublishExpirySweep --> Deposited: OnError +PublishExpirySweep --> WaitForExpirySweep: OnExpiryPublished +PublishExpirySweep --> PublishExpirySweep: OnRecover +SweepHtlcTimeout +SweepHtlcTimeout --> HtlcTimeoutSwept: OnHtlcTimeoutSwept +SweepHtlcTimeout --> SweepHtlcTimeout: OnRecover +WaitForExpirySweep +WaitForExpirySweep --> Deposited: OnError +WaitForExpirySweep --> Expired: OnExpirySwept +WaitForExpirySweep --> PublishExpirySweep: OnRecover +Withdrawing +Withdrawing --> Deposited: OnError +Withdrawing --> Withdrawing: OnExpiry +Withdrawing --> Withdrawing: OnRecover +Withdrawing --> Withdrawing: OnWithdrawInitiated +Withdrawing --> Withdrawn: OnWithdrawn +Withdrawn +Withdrawn --> Withdrawn: OnExpiry +Withdrawn --> Withdrawn: OnWithdrawn +``` \ No newline at end of file diff --git a/staticaddr/loopin/fsm.md b/staticaddr/loopin/fsm.md new file mode 100644 index 00000000..19b22435 --- /dev/null +++ b/staticaddr/loopin/fsm.md @@ -0,0 +1,37 @@ +```mermaid +stateDiagram-v2 +[*] --> InitHtlcTx: OnInitHtlc +Failed +HtlcTimeoutSwept +InitHtlcTx +InitHtlcTx --> UnlockDeposits: OnError +InitHtlcTx --> SignHtlcTx: OnHtlcInitiated +InitHtlcTx --> UnlockDeposits: OnRecover +MonitorHtlcTimeoutSweep +MonitorHtlcTimeoutSweep --> Failed: OnError +MonitorHtlcTimeoutSweep --> HtlcTimeoutSwept: OnHtlcTimeoutSwept +MonitorHtlcTimeoutSweep --> MonitorHtlcTimeoutSweep: OnRecover +MonitorInvoiceAndHtlcTx +MonitorInvoiceAndHtlcTx --> UnlockDeposits: OnError +MonitorInvoiceAndHtlcTx --> PaymentReceived: OnPaymentReceived +MonitorInvoiceAndHtlcTx --> MonitorInvoiceAndHtlcTx: OnRecover +MonitorInvoiceAndHtlcTx --> Failed: OnSwapTimedOut +MonitorInvoiceAndHtlcTx --> SweepHtlcTimeout: OnSweepHtlcTimeout +PaymentReceived +PaymentReceived --> SucceededTransitioningFailed: OnError +PaymentReceived --> Succeeded: OnRecover +PaymentReceived --> Succeeded: OnSucceeded +SignHtlcTx +SignHtlcTx --> UnlockDeposits: OnError +SignHtlcTx --> MonitorInvoiceAndHtlcTx: OnHtlcTxSigned +SignHtlcTx --> UnlockDeposits: OnRecover +Succeeded +SucceededTransitioningFailed +SweepHtlcTimeout +SweepHtlcTimeout --> Failed: OnError +SweepHtlcTimeout --> MonitorHtlcTimeoutSweep: OnHtlcTimeoutSweepPublished +SweepHtlcTimeout --> SweepHtlcTimeout: OnRecover +UnlockDeposits +UnlockDeposits --> Failed: OnError +UnlockDeposits --> UnlockDeposits: OnRecover +``` \ No newline at end of file