Skip to content

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.