ReclaimDeferredPaymentCommand class

Reclaim an outstanding deferred payment: spend the inputs it holds back into this wallet and broadcast that transaction. Answered with DeferredPaymentReclaimedEvent.

Immediate and irreversible. There is no confirmation step, no dry run: the self-spend is built, signed, journaled and broadcast by this one command. libspiffy does not own confirmation UX — warn the user first if your app wants that.

It invalidates the signed transaction the recipient holds. Both spend the same inputs, and only one of two transactions spending an input can be mined. Unlike CancelDeferredPaymentCommand, which only releases the hold and leaves the recipient's copy spendable, a reclaim takes the coins out of its reach.

This is Bitcoin SV: there is no replace-by-fee, and first seen wins. The self-spend pays the standard ARC policy fee, like every other transaction the wallet builds; paying more would buy nothing. If the recipient already got their copy to the network first, theirs is the one that is mined and the self-spend is the one rejected — an ordering fact, decided before this command was sent.

The payment is not resolved at broadcast time: it stays outstanding, with its inputs now held by the self-spend, until the network reports the self-spend. It is then DeferredPaymentState.reclaimed and the coins are back in the wallet, less the fee.

Nothing is deleted: the reclaimed payment keeps its row, its stored transaction and its raw hex, and both txids stay queryable (GetDeferredPaymentsQuery with includeResolved).

Inheritance

Constructors

ReclaimDeferredPaymentCommand({required String walletId, required String txid, DeferredPaymentNetworkSource via = DeferredPaymentNetworkSource.arc, String? reason, String? requestId})

Properties

correlationId → String
The correlation ID of the message.
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
metadata → Map<String, dynamic>
The metadata of the message.
no setter
reason → String?
Recorded as the reclaimed payment's resolution reason.
final
replyTimeout → Duration
How long WalletCoordinator.ask waits for the reply when the caller gives no timeout. A request that is still running then is not cancelled: its reply arrives on the event stream later.
no setteroverride
replyTo → ActorRef?
The actor to reply to.
no setterinherited
requestId → String
Identifies this request; its reply carries it back.
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
timestamp → DateTime
The timestamp of the message.
finalinherited
txid → String
The outstanding deferred payment to reclaim.
final
via → DeferredPaymentNetworkSource
Where the self-spend is broadcast.
final
walletId → String
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited