Result of MusdClient.redeem. Every field names its unit (MK-014), and what settled is kept apart from what was expected (MK-241).

redeem() resolves once the transaction has MINED, because what a redemption does is not determined by its inputs: the amount it redeems depends on the sorted list and the price at inclusion. A result returned at send time could only restate an estimate, and until 0.5.0 it did, reporting the hint helper's figures as if they were the outcome (MK-241).

interface RedeemResult {
    estimatedBeforeSend: RedemptionEstimateBeforeSend;
    gas: GasDecision;
    hash: `0x${string}`;
    partial: null | PartialRedemption;
    redemptionRate: bigint;
    settled: SettledRedemption;
}

Properties

estimatedBeforeSend: RedemptionEstimateBeforeSend

What the SDK expected before sending. Kept for comparison; never the outcome.

How the gas limit on this send was chosen (MK-037), the same field every other write result carries.

It matters most here. redeemCollateral is the write MK-035 was found on: the same call from byte identical state varied from 610270 to 710023 gas, and the one that reverted grew 16.4%. If any send in this SDK is going to lose its margin and run out of gas, it is this one, so gas.source === 'fallback' is worth checking on a redemption even if you ignore it everywhere else.

hash: `0x${string}`
partial: null | PartialRedemption

The partial this redemption was sent with, including the centred hint and its price tolerances, or null when every Trove it touches is consumed whole (MK-103).

redemptionRate: bigint

The redemption RATE, a 1e18 scaled fraction, read live from redemptionRate() before sending. Governable. This is a ratio, not an amount of anything.

What the redemption did, from its receipt.