KingsVault
This section covers the synchronous and asynchronous vault variants.
KingsVaultV2
Source: src/vaults/KingsVaultV2.sol
Constructor
constructor(
string memory name,
string memory symbol,
address asset_,
address owner_,
address controller_
)
The constructor validates non-zero addresses, grants the owner admin and guardian roles, stores the immutable Controller address, calculates MIN_WITHDRAW, and pauses the vault by default.
Public And External Functions
| Function | Access | Description |
|---|---|---|
totalAssets() |
public view | Returns idle assets plus Controller-reported strategy assets. |
maxDeposit(address receiver) |
public view | Returns uint256.max only if vault is active and receiver is Investor. |
maxMint(address receiver) |
public view | Same gating as maxDeposit. |
maxWithdraw(address owner) |
public view | Returns previewRedeem(maxRedeem(owner)) if active and owner is Investor. |
maxRedeem(address owner) |
public view | Returns share balance if active and owner is Investor. |
shutdownTime() |
public view | Returns shutdown timestamp, or 0 if active. |
idleAssets() |
public view | Returns asset balance held directly by vault. |
pushFundOnlyForController(address strategy, uint256 amount) |
Controller only, not shutdown | Transfers idle assets to strategy. Emits FundPushed. |
mintFeeSharesOnlyForController(address recipient, uint256 shares) |
Controller only, not shutdown | Mints performance fee shares. Emits FeeSharesMintedForRecipient. |
harvestOnlyForController(address token, address recipient) |
Controller only | Sweeps allowed tokens to recipient. Emits VaultHarvested. |
pause() |
Guardian | Pauses deposits and withdrawals. |
unpause() |
Guardian | Unpauses deposits and withdrawals. |
shutdown() |
Guardian, not shutdown | Permanently shuts down vault and exits all strategies. Emits VaultShutdown. |
emergencyRedeem(address receiver) |
shutdown only | Burns all caller shares and transfers pro-rata idle assets. Emits EmergencyRedeemed. |
Overridden/Internal ERC-4626 Hooks
| Function | Access | Description |
|---|---|---|
_onlyController() |
private view | Reverts unless caller is immutable CONTROLLER. |
_whenNotShutdown() |
private view | Reverts if _shutdownTime != 0. |
_whenShutdown() |
private view | Reverts if _shutdownTime == 0. |
_convertToShares(uint256 assets, Math.Rounding rounding) |
internal view | Applies dual pricing against Controller marked values. |
_convertToAssets(uint256 shares, Math.Rounding rounding) |
internal view | Applies dual pricing against Controller marked values. |
_deposit(address caller, address receiver, uint256 assets, uint256 shares) |
internal | Requires Investor role, not paused, not shutdown. |
_withdraw(address caller, address receiver, address owner, uint256 assets, uint256) |
internal | Requires Investor role, not paused, not shutdown, non-reentrant; uses liquidity waterfall. |
_decimalsOffset() |
internal view | Returns 18 - asset.decimals(). |
_emergencyRedeem(address receiver) |
internal | Burns caller shares and pays pro-rata idle assets. |
Inherited ERC-4626 user functions such as deposit, mint, withdraw, redeem, previewDeposit, previewMint, previewWithdraw, and previewRedeem use the above overrides.
KingsVaultV2Async
Source: src/vaults/KingsVaultV2Async.sol
Additional State
| State | Meaning |
|---|---|
_execId |
Current execution round. Requests with lower execId are claimable. |
_execSnapshots |
Per execution round assets/shares snapshot. |
_pendingRedeemShares |
Shares escrowed but not executed. |
_claimableShares |
Escrowed shares already executed and ready to burn on claim. |
_claimableAssets |
Assets reserved for executed claims. |
_requests[owner][receiver] |
Per owner/receiver redemption request. |
Public And External Functions
| Function | Access | Description |
|---|---|---|
execId() |
public view | Returns current execution round. |
idleAssets() |
public view override | Returns vault asset balance minus reserved claimable assets. |
pendingRedeemShares() |
public view | Returns total pending escrowed shares. |
pendingRedeemAssets() |
public view | Returns preview asset value of pending shares. |
claimableShares() |
public view | Returns executed shares ready for claim. |
claimableAssets() |
public view | Returns assets reserved for claims. |
previewRedeemRequest(address owner, address receiver) |
public view | Returns readiness and shares for one request. |
totalSupply() |
public view override | Returns super.totalSupply() - _claimableShares. |
executeRedeem() |
Keeper | Converts pending requests into claimable snapshots if idle assets are sufficient. Emits RedeemExecuted. |
claim(address receiver) |
Investor, not paused, not shutdown | Claims executed request. Emits Claimed. |
emergencyRedeem(address receiver) |
shutdown only | Claims executed request or returns pending escrowed shares, then base emergency redeem. |
Internal Functions
| Function | Description |
|---|---|
_withdraw(...) |
Escrows shares instead of sending assets immediately; emits RedeemRequested. |
_claim(address owner, address receiver) |
Calculates claim assets from snapshot, burns escrowed shares, transfers assets. |