Covenant Families
| Schedule family | Contract | Core behavior |
|---|---|---|
| LINEAR | VestingCovenant | Continuous pro-rata vesting between startTime and endTime |
| STEP | VestingCovenant | Equal milestone unlocks every stepInterval seconds |
| HYBRID | HybridVestingCovenant | One fixed upfront unlock, then linear vesting for the remaining balance |
| TRANCHE | TrancheVestingCovenant | Bounded custom unlock checkpoints with explicit cumulative amounts |
| RECURRING | RecurringPaymentCovenant | Fixed cadence payouts with optional refillable runway |
Schedule Families
Linear
Best for open vesting and simple contributor schedules. Claims scale continuously with elapsed
time.
Hybrid
Best for plans that need a meaningful first unlock before the remaining balance vests over time.
Milestone
Best for equal cadence releases such as monthly or quarterly unlocks.
Custom Tranche
Best for bounded custom schedules with non-uniform unlock weights and checkpoint timing.
Cliffs
Cliffs are supported where the contract family supports them:- LINEAR: no claims before
cliffTimestamp; once the cliff passes, all value vested sincestartTimebecomes claimable. - STEP: milestone releases begin only after the cliff has passed.
- HYBRID: the upfront unlock checkpoint is itself the first enforced unlock event.
- TRANCHE: the first tranche unlock effectively acts as the first claimable checkpoint.
Pause and Resume
FlowGuard records pause state in the NFT commitment rather than in a database-only field.- Vesting-based schedules advance their effective cursor when resumed, excluding paused time from future vesting calculations.
- Recurring schedules pause the cadence clock and resume from the updated next payment window.
Transferability
Recipient transfer is available for transferable non-recurring vesting streams:- supported:
LINEAR,STEP,HYBRID,TRANCHE - not supported:
RECURRING
Refillable Runway
Refill is a recurring-only concept in the supported product surface today. A refillable recurring stream keeps the contract alive while the sender adds more runway using an explicit contract-aware refill transaction. A direct BCH send to the contract address is not the supported refill path.State Model
All stream families share the same broad lifecycle:PENDINGafter deployment, before contract funding is confirmedACTIVEwhile claims or payments can continuePAUSEDwhen sender controls have temporarily frozen progressionCANCELLEDwhen the stream is terminated earlyCOMPLETEDwhen the final state is settled on-chain

