sablier-cancel-open-ended-stream
Sablier Flow Stream Cancellation
Overview
Cancel one or more Sablier Flow open-ended payment streams on the user's behalf. The skill discovers the user's streams through the Sablier indexer where the wallet is sender or recipient, drops already-voided streams, and executes one batch(bytes[]) transaction per selected stream that splices the appropriate sub-calls atomically:
- Sender (or sender + recipient) with
refundable > 0→[refundMax(streamId, sender), void(streamId)]. The sender recovers the unstreamed deposit and the stream is permanently stopped in the same transaction. - Sender (or sender + recipient) with
refundable == 0→[void(streamId)]. Inform the user nothing is left to refund — the stream will be voided but no funds will be returned. - Recipient-only →
[void(streamId)]. Inform the user that as the recipient, they can void the stream but only the sender can refund unstreamed funds.
The skill always uses batch(bytes[]) as the entrypoint so refund + void run atomically per stream. When the batch contains a single sub-call (void only), the runbook MAY call void(uint256) directly instead of wrapping in batch — this is a small gas optimization, flagged in the runbook.
This skill charges no markup. Both void(uint256) and refund(streamId,…) are free at the protocol level — MSG_VALUE = 0 always.
This skill is a coordinator for Flow cancellation and execution routing.