quoteRedeemAtFloor
Quote net USDC out for redeeming AVM at the current floor price.
Burns amount AVM at floorPriceWad (not along the curve). Spot does not move. Gross payout is floorValueDown; the 1.25% redeem fee is then taken.
Use this when the holder wants the floor, not the live curve. When spot is above floor, quoteSellExactAvmIn usually pays more.
Import
import { quoteRedeemAtFloor } from "@repo/contract-client/math";
Usage
import { parseAvm } from "@repo/contract-client";
import { quoteRedeemAtFloor } from "@repo/contract-client/math";
const quote = quoteRedeemAtFloor(snapshot, parseAvm("1000"));
quote.grossReserveOutRaw;
quote.netReserveOutRaw;
quote.priceImpact.curvePriceImpactWad; // 0 — no curve walk
quote.nextEngine; // unchanged
Return Value
RedeemAtFloorQuote
| Field | Meaning |
|---|---|
kind | 'redeemAtFloor' |
avmIn | Tokens burned |
grossReserveOutRaw | floor × amount, rounded down |
netReserveOutRaw | After 1.25% |
priceImpact | Curve impact forced to 0; spot delta is 0 |
nextEngine | Same as input |
Parameters
snapshot
- Type:
MarketSnapshot
Provides floorPriceWad and actualSupply.
quoteRedeemAtFloor(snapshot, parseAvm("1000"));
amount
- Type:
AvmAtoms
Must be > 0 and ≤ actualSupply. Gross floor value must be ≥ 100 raw.
quoteRedeemAtFloor(snapshot, asAvmAtoms(10n ** 18n));
Error
| Error | When |
|---|---|
ProtocolRevertError ZeroAmount | Amount is 0 or exceeds supply |
ProtocolRevertError BelowMinimum | Floor value < 100 raw |
Tips
sv3.quote.quoteExitOptions({ market, avmIn })returns both the curve sell and this redeem, pluseconomicallyFavored.