@@ -133,6 +133,7 @@ contract StakingRouter is AccessControlEnumerable, BeaconChainDepositor, Version
133
133
bytes32 public constant STAKING_MODULE_MANAGE_ROLE = keccak256 ("STAKING_MODULE_MANAGE_ROLE " );
134
134
bytes32 public constant STAKING_MODULE_UNVETTING_ROLE = keccak256 ("STAKING_MODULE_UNVETTING_ROLE " );
135
135
bytes32 public constant REPORT_EXITED_VALIDATORS_ROLE = keccak256 ("REPORT_EXITED_VALIDATORS_ROLE " );
136
+ bytes32 public constant REPORT_UNEXITED_VALIDATORS_ROLE = keccak256 ("REPORT_UNEXITED_VALIDATORS_ROLE " );
136
137
bytes32 public constant UNSAFE_SET_EXITED_VALIDATORS_ROLE = keccak256 ("UNSAFE_SET_EXITED_VALIDATORS_ROLE " );
137
138
bytes32 public constant REPORT_REWARDS_MINTED_ROLE = keccak256 ("REPORT_REWARDS_MINTED_ROLE " );
138
139
@@ -1321,6 +1322,29 @@ contract StakingRouter is AccessControlEnumerable, BeaconChainDepositor, Version
1321
1322
emit WithdrawalCredentialsSet (_withdrawalCredentials, msg .sender );
1322
1323
}
1323
1324
1325
+ /// @notice Reports the duration a validator has remained eligible for exit after exit request.
1326
+ /// @dev Notify staking module how many seconds have passed since a validator first became eligible
1327
+ /// to exit following an exit request but has not yet exited.
1328
+ /// @param stakingModuleId The identifier of the staking module.
1329
+ /// @param nodeOperatorId The identifier of the node operator.
1330
+ /// @param publicKey The public key of the validator being reported.
1331
+ /// @param secondsSinceEligibleExitRequest Seconds since the validator first
1332
+ /// became eligible to exit following an exit request but has not yet exited.
1333
+ function reportUnexitedValidator (
1334
+ uint256 stakingModuleId ,
1335
+ uint256 nodeOperatorId ,
1336
+ bytes calldata publicKey ,
1337
+ uint256 secondsSinceEligibleExitRequest
1338
+ ) external onlyRole (REPORT_UNEXITED_VALIDATORS_ROLE) {
1339
+ StakingModule storage stakingModule = _getStakingModuleById (stakingModuleId);
1340
+
1341
+ IStakingModule (stakingModule.stakingModuleAddress).reportUnexitedValidator (
1342
+ nodeOperatorId,
1343
+ publicKey,
1344
+ secondsSinceEligibleExitRequest
1345
+ );
1346
+ }
1347
+
1324
1348
/// @notice Returns current credentials to withdraw ETH on Consensus Layer side.
1325
1349
/// @return Withdrawal credentials.
1326
1350
function getWithdrawalCredentials () public view returns (bytes32 ) {
0 commit comments