Skip to main content

Stability pools (integrator appendix)

Product explanation: Stability Pools. Contract SoT: Stability pool, Manager. Flow: Stability pools process.

Rules that bite integrators

RuleDetail
Deposit assethaTokens (pegged) only — not hs, not raw collateral
Two pools per marketCollateral pool and Sail pool — both take ha
YieldBoth pools earn concentrated collateral yield / harvest on ha deposits
Rebalance payoutCollateral pool → wrapped collateral; Sail pool → hsTokens. Deposited ha is burned.
hs in a walletDoes not earn concentrated yield

Live pools are v1/v2 compounding-balance contracts, not ERC-4626. Harbor Yield v3 ERC-20 shares (hp…) are on the yield branch — do not assume deposit(assets, receiver) ERC-4626 semantics on mainnet pools today.

Integrator call path

  1. User holds ha (mint via mint/redeem or buy).
  2. ha.approve(stabilityPool, amount).
  3. deposit(assetAmount, receiver, minAmount)type(uint256).max on assetAmount = full wallet balance; minAmount is a lower bound (0 or a quoted minimum).
  4. Withdrawals use a delay window: read getWithdrawalWindow() / getEarlyWithdrawalFee(), then requestWithdrawal() and withdraw inside the window. Early-exit fees may apply.
  5. Rewards / rebalance receipts: claimable / claim (token = wrapped collateral or hs, depending on pool).

Minimum deposit and MIN_TOTAL_ASSET_SUPPLY floors apply — see the stability pool page.

Rebalance

When collateralRatio < rebalanceThreshold, keepers call StabilityPoolManager.rebalance. Your users’ ha in the pool can be reduced; they receive the pool’s liquidation token. Keeper notes: Rebalance.

  • Harbor Yield (Compounder / hy siblings over these pools; pre-prod)