Skip to main content
Source: src/DepositQueue.sol

Responsibility

DepositQueue is the user entrypoint for deposits. Requests queue into the current batch and convert to shares when that batch’s oracle report is accepted (see Oracle). Same execution price for every depositor in the batch. Supports multiple deposit assets (ERC-20s and native ETH via 0xEeee…EEeE), per-asset and global pause, cancel before settlement, and pro-rata claim after. Admin functions authorize against the Fund ACL (spoke pattern).

Deposit lifecycle

1

Request

The user calls deposit. The queue asks the Fund for the current batch id, runs Fund.checkDeposit → RiskManager, then escrows the assets.One request is allowed per (asset, batch, user).
2

Cancel

The user can cancel their current-batch request before settlement for a full refund.An admin (CANCEL_DEPOSIT_REQUEST_ROLE) can cancel any user’s request in any unsettled batch.
3

Settle

During Fund.acceptReport, the Fund mints the batch’s user shares to the queue and calls settleDeposit, transferring all escrowed assets of that batch to the Fund.
4

Claim

The user calls claimDeposit and receives:depositAmount×batchShareTotalsbatchDepositTotals\text{depositAmount} \times \frac{\text{batchShareTotals}}{\text{batchDepositTotals}}There is no deadline.

Function reference

User actions

Fund actions

Admin

Roles are checked on the Fund.

Views

getAllowedAssets(), getAssetStatuses(), getDepositRequest(asset, batchId, investor), getPendingDeposits(investor), getClaimableDeposits(investor), batchDepositTotals(asset, batchId), batchShareTotals(asset, batchId), isAssetPaused(asset), fund(). RedeemQueue · Oracle · RiskManager