Skip to content

Position Lifecycle

1. Discover

The web app discovers a wallet's variable-rate lending positions and maps each borrowed asset/market to Interest Exchange pools. Only active future series can receive new FRT.

2. Quote

The borrower requests signed backer quotes for a target maturity and notional. A quote specifies exact FRT notional and the VRT reserve the maker will add. It is not partially fillable.

3. Preview and Approve

QuoteMarket.previewTakeQuote returns:

  • origination bond;
  • initialization fee;
  • initial prepaid required at the current boundary;
  • total borrower cost;
  • whether reserve capacity is sufficient; and
  • whether QuoteMarket is already an operator for the borrower.

The borrower approves the loan token to QuoteMarket for the selected maximum cost. The first fill also grants InterestRatePool.setOperator(QuoteMarket, true). Optional extra prepaid uses a separate loan-token allowance to the pool.

4. Open

The wallet calls Bundler3 multicall. QuoteMarket.takeQuote deposits maker reserve, settles the taker, checks cost <= maxCost, and mints FRT. Optional supplyPrepaid can run in the same atomic bundle.

5. Maintain

Settlement continuously changes the position's prepaid coverage relative to its fixed-versus-variable spread. A borrower can:

  • call supplyPrepaid to add whole coverage ticks;
  • call withdrawPrepaid to remove surplus ticks;
  • call settlePosition to realize current spread;
  • enable keeper top-up or auto-repay policy; or
  • request a takeRollQuote into another active series.

6. Reduce or Close

burnFRT removes an exact notional. It returns refundable prepaid plus the vested share of the origination bond. Before the midpoint of the position's vesting window, the bond refund is zero; after that it vests linearly and is fully refundable at expiry. Unvested bond is credited to VRT assets.

At and after expiry, new mint, VRT deposit, FRT move, prepaid supply, and roll operations are blocked. Settlement, FRT burn, VRT withdrawal, and prepaid withdrawal remain available.

Swept Positions

If the cumulative spread frontier passes the funded tick, settlement sweeps the position from active accounting. isBorrowerSwept reports the tick-ID mismatch; the next borrower touch clears the stale packed slot. See Liquidations and sweeps.

Interest Exchange Protocol