Stability Pools Process Flow
How live stability pools take ha deposits, pay rewards, and participate in rebalances.
Live pools are StabilityPool_v1 / v2 (compounding balances). ERC-20 pool shares (hp…) and ERC-4626 Compounders are Harbor Yield / SP_v3 (pre-prod) — not the live deposit UX. Integrator appendix: Stability pools. Contract SoT: Stability pool.

Overview
| Rule | Detail |
|---|---|
| Deposit asset | ha (pegged) only — collateral pool and Sail pool |
| Live accounting | Internal compounding TokenBalance + DecrementalFloatingPoint (loss product) — not LP/stake ERC-20s or gauges |
| Yield | Harvest / revenue → depositReward → claimable reward tokens |
| Rebalance | Collateral pool receives wrapped collateral; Sail pool receives hs |
Deposit
- User calls
deposit(assetAmount, receiver, minAmount)with ha. Usetype(uint256).maxforassetAmountto deposit the full balance; setminAmountto0or a quoted lower bound (not the max sentinel). - Pool pulls ha from the sender and credits the receiver’s compounding ha balance.
- No stake-token mint and no gauge stake on live v1/v2.
Depositis emitted (owner,receiver,amount).
User deposits 100 ha
↓
Pool ha balance of user += 100 (subject to loss product accounting)
↓
User may later claim separate reward tokens if any accrued
Withdrawal
- User calls
withdraw(assetAmount, receiver, minAmount)for an ha amount (not “burn stake tokens”). - Live pools may enforce a request / delay window and early-withdrawal fees (see pool page).
- ha is returned to the user; balance decreases.
- Unclaimed reward tokens remain claimable via
claim/claimable— they are not “unstaked from a gauge.”
Rewards vs ha balance (do not conflate)
| Mechanism | What changes |
|---|---|
| Loss product (rebalance) | User’s ha balance scales down when the pool takes a proportional loss |
| Reward tokens | Harvest / rebalance payouts accrue as claimable balances (claimable → claim) — they do not auto-mint into the user’s ha ERC-20 balance |
Users claim rewards explicitly. Withdrawals move ha; they do not substitute for claim().
Rebalance participation
Coordinated by Stability pool manager:
- CR below threshold →
rebalance(bountyReceiver, minPeggedLiquidated). - Manager sweeps ha from pools and redeems via the minter (
freeRedeemPeggedToken); payout tokens are routed back to each pool. - Collateral pool: wrapped collateral via
notifyLiquidation/ reward path. - Sail pool: hs (leveraged) via the same pattern.
- Depositors’ ha balances adjust via the loss product; payout tokens accrue as claimable rewards.
Related
- Rebalance
- Harbor Yield (Compounder / hy — siblings over these pools when live)