Table of Contents

Class LockupNeedsRecoveryException

Namespace
NArk.ArkadeIntents.Recovery
Assembly
NArk.ArkadeIntents.dll

Thrown when part of a lockup is out of the covenant's reach, so a refund would move only some of the money.

public sealed class LockupNeedsRecoveryException : InvalidOperationException, ISerializable
Inheritance
LockupNeedsRecoveryException
Implements
Inherited Members

Remarks

The whole push is refused rather than narrowed to what is spendable, and that is the point. Filtering the unreachable outputs out silently is worse than failing: it reports success over money that never moved, and a caller that believes the swap is refunded stops watching the part that is still sitting there.

Both causes are recoverable and neither is recoverable here. A swept output goes through the wallet's own recovery path; an exited one needs its unroll finished and then an on-chain spend of the same leaves. Either way the outpoints are named, because a caller has to act on them one at a time.

Constructors

LockupNeedsRecoveryException(LockupFate, IReadOnlyList<OutPoint>, string)

Creates the exception.

public LockupNeedsRecoveryException(LockupFate fate, IReadOnlyList<OutPoint> outpoints, string message)

Parameters

fate LockupFate

Whether they were swept or exited.

outpoints IReadOnlyList<OutPoint>

The outputs needing recovery.

message string

The explanation.

Properties

Fate

Why they are out of reach.

public LockupFate Fate { get; }

Property Value

LockupFate

Outpoints

The outputs that must be dealt with before a refund can move everything.

public IReadOnlyList<OutPoint> Outpoints { get; }

Property Value

IReadOnlyList<OutPoint>