You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Motivation:**
*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*
**Modifications:**
*Describe the modifications you've done.*
**Result:**
*After your change, what will change.*
@@ -354,6 +359,26 @@ Transitions the vault from `ALLOCATIONS` to `WITHDRAWALS`. Callable by anyone on
354
359
355
360
> **NOTE**: Even after `markMatured()`, the vault **remains slashable** for `DEALLOCATION_DELAY` blocks until the deallocation takes effect on the `AllocationManager`. This is standard EigenLayer behavior for any deallocation.
356
361
362
+
### `advanceToWithdrawals`
363
+
364
+
```js
365
+
function advanceToWithdrawals() external
366
+
```
367
+
368
+
Transitions the vault from `ALLOCATIONS` to `WITHDRAWALS` **early**, after lock but before `unlockAt`. This is intended for use cases where an external agreement is violated (e.g., premiums not paid) and the vault should allow stakers to exit before the duration elapses.
369
+
370
+
*Effects*:
371
+
* Sets `maturedAt` to current timestamp
372
+
* Transitions state to `WITHDRAWALS`
373
+
* Attempts to deallocate magnitude to 0 (best-effort)
374
+
* Attempts to deregister from operator set (best-effort)
* State MUST be `ALLOCATIONS` (i.e., vault must be locked)
380
+
* `block.timestamp` MUST be < `unlockAt`
381
+
357
382
### Withdrawals
358
383
359
384
After maturity, stakers can queue and complete withdrawals through the standard EigenLayer flow via `DelegationManager`. The `beforeRemoveShares` hook allows withdrawal queuing when state is `WITHDRAWALS`.
@@ -374,6 +399,7 @@ Rewards follow the standard EigenLayer flow:
374
399
|----------|---------|
375
400
| `state()` | Current `VaultState` enum |
376
401
| `vaultAdmin()` | Vault administrator address |
402
+
| `arbitrator()` | Vault arbitrator address |
377
403
| `duration()` | Configured lock duration in seconds |
378
404
| `lockedAt()` | Timestamp when vault was locked (0 if not locked) |
379
405
| `unlockTimestamp()` | Timestamp when vault matures (0 if not locked) |
@@ -412,9 +438,10 @@ Rewards follow the standard EigenLayer flow:
0 commit comments