@@ -1220,6 +1220,42 @@ contract StakeRegistryUnitTests_Config is StakeRegistryUnitTests {
12201220 );
12211221 }
12221222 }
1223+
1224+ cheats.roll (2 );
1225+
1226+ // Deregister the Operator
1227+ cheats.prank (address (registryCoordinator));
1228+ stakeRegistry.deregisterOperator (setup.operatorId, setup.quorumNumbers);
1229+
1230+ // Check state history after deregistration
1231+ {
1232+ IStakeRegistry.StakeUpdate[] memory stakeUpdates =
1233+ _getLatestStakeUpdates (setup.operatorId, setup.quorumNumbers);
1234+ IStakeRegistry.StakeUpdate[][] memory stakeHistories =
1235+ _getOperatorStakeHistories (setup.operatorId, setup.quorumNumbers);
1236+ assertEq (
1237+ stakeHistories.length , setup.quorumNumbers.length , "invalid stake histories length "
1238+ );
1239+ for (uint256 i = 0 ; i < setup.quorumNumbers.length ; i++ ) {
1240+ IStakeRegistry.StakeUpdate[] memory stakeHistory = stakeHistories[i];
1241+ assertTrue (stakeHistory.length == 2 , "invalid operator stake history length " );
1242+ assertEq (
1243+ stakeHistory[1 ].stake,
1244+ stakeUpdates[i].stake,
1245+ "invalid operator stake history stake "
1246+ );
1247+ assertEq (
1248+ stakeHistory[1 ].updateBlockNumber,
1249+ stakeUpdates[i].updateBlockNumber,
1250+ "invalid operator stake history update block number "
1251+ );
1252+ assertEq (
1253+ stakeHistory[1 ].nextUpdateBlockNumber,
1254+ stakeUpdates[i].nextUpdateBlockNumber,
1255+ "invalid operator stake history next update block number "
1256+ );
1257+ }
1258+ }
12231259 }
12241260
12251261 function testFuzz_getStakeHistory_SingleBlock (
0 commit comments