Events¶
All events emitted by LiquidityVault. Every state-changing operation emits at least one event, providing a complete on-chain audit trail.
Investor Events¶
| Event | Parameters | Emitted On |
|---|---|---|
Deposit |
sender, receiver, assets, shares |
Successful deposit() call |
WithdrawRequested |
requestId, owner, receiver, shares, timestamp |
Queue entry and share escrow |
WithdrawProcessed |
requestId, receiver, payout, fee, avgExitPrice |
Keeper processes a queued request |
WithdrawCancelled |
requestId, owner, sharesReturned |
Successful cancelWithdraw() call |
WithdrawProcessed Detail¶
event WithdrawProcessed(
uint256 indexed requestId,
address indexed receiver,
uint256 payout, // Net USDC sent to receiver (after fee)
uint256 fee, // USDC sent to HouseBuffer
uint256 avgExitPrice // curveNAV: curve-weighted aggregate vault NAV applied to this request
);
avgExitPrice is the curveNAV value returned by _avgCurvePrice — the curve-weighted aggregate vault NAV (USDC, 6 dec), a total vault valuation between aggMarketNAV and aggModeledNAV. It is not a per-share price. The per-share exit price for this request is avgExitPrice / totalShares at the time of processing.
Role Management Events¶
| Event | Parameters | Emitted On |
|---|---|---|
KeeperUpdated |
oldKeeper, newKeeper |
setKeeper() call |
OperatorUpdated |
oldOperator, newOperator |
setOperator() call |
GovernanceProposed |
currentGovernance, proposedGovernance |
proposeGovernance() call |
GovernanceTransferred |
oldGovernance, newGovernance |
acceptGovernance() call |
Position Events¶
| Event | Parameters | Emitted On |
|---|---|---|
PositionOpened |
slot, adapter, assets, entryPrice, maturity |
openPosition() |
PositionMarkedSettling |
slot |
markSettling() — ACTIVE → SETTLING transition |
PositionClosed |
slot, settledValue |
closePosition() after market settlement |
PositionWrittenOff |
slot, previousModeledValue |
writeOff() |
PositionRebased |
slot, oldEntryPrice, newEntryPrice, newMaturity |
rebasePosition() |
SlotReclaimed |
slot |
reclaimSlot() — slot reset to EMPTY |
System Events¶
| Event | Parameters | Emitted On |
|---|---|---|
DayRolled |
newDayStart, previousRedeemed |
Day window reset at start of processWithdrawals() |
ReserveTopupRequested |
amount |
Vault's idle reserve drops below 50% of target |
EmergencyLiquidation |
slot, sharesLiquidated, usdcRecovered, slippageBps |
emergencyLiquidate() execution |
EmergencyLiquidation Detail¶
event EmergencyLiquidation(
uint256 indexed slot,
uint256 sharesLiquidated, // Actual NO shares sold by the adapter
// NOT the maxShares parameter passed to the function
uint256 usdcRecovered, // USDC returned to vault
uint256 slippageBps // Realized price impact vs. pre-trade market price
);
sharesLiquidated is actual shares sold, not maxShares
sharesLiquidated reflects the actual number of shares filled by the adapter, which may be less than maxShares if the position size is smaller. Off-chain indexers must not assume sharesLiquidated == maxShares. The current implementation emits maxShares (known bug) — this is documented in Security §9.10.
slippageBps provides transparency into the real cost of emergency liquidation, enabling post-incident analysis and governance review.
Monitoring Recommendations¶
For real-time protocol health monitoring, subscribe to:
PositionWrittenOff— immediate alert: vault NAV has decreasedPositionMarkedSettling— settlement path initiated; gap on this slot has collapsedDayRolled— track redemption volume per day windowEmergencyLiquidation— critical alert: last-resort action takenWithdrawProcessed— trackavgExitPricevs. aggregate NAVs to measure curve discount over timeReserveTopupRequested— reserve health indicatorOperatorUpdated/GovernanceTransferred— role change alerts