Redemption
Asynchronous Redeem Lifecycle
Redemptions are asynchronous, meaning tokens are transferred after NAV settlement, ensuring fair asset distribution.


The process consists of multiple phases:
Request Redeem
Allocators initiate a redemption by specifying the portion of their holdings to redeem.


Users call
requestRedeem:classId: the share class to redeem from.estAmountToRedeem: the estimated amount of underlying tokens to redeem.
The system calculates share units based on the current PPS at the time of request.
The redemption request is recorded in the current batch.
Users can track their pending redemption requests using:
redeemRequestOf(classId, user): Total pending redemptions across all batchesredeemRequestOfAt(classId, user, batchId): Redemptions for a specific batch
Important Notes:
Notice period: Users may need to wait a certain number of batches before redemption.
Lock-in period: New investors may be locked for a specified number of batches.
Minimum redemption amounts may apply per class.
The actual amount received after settlement may differ from the requested amount due to NAV changes and fees.
Settle Redeem
Upon NAV settlement, the Oracle calls settleRedeem to finalize all pending redemptions.


Oracle calls
settleRedeem:classId: The share class to settlebatchId: The batch to settle up to (excluding current batch)newTotalAssets: Updated NAV from off-chain calculationsauthSignature: (if settlement auth is enabled)
For each redeemer:
Shares are proportionally deducted from all series they hold.
The exact amount of underlying tokens is calculated based on current NAV.
Shares are burned from the appropriate series.
Redeemed assets are added to the user's
redeemableAmountbalance.Management and performance fees are calculated and accrued.
Withdraw Redeemable Amount
After settlement, users can withdraw their redeemable assets:
Users call
withdrawRedeemableAmount()to claim all settled redemptions.The vault transfers the underlying tokens from vault to the user.
The user's
redeemableAmountbalance is reset to zero.
Last updated
Was this helpful?

