@@ -254,6 +254,16 @@ contract StakeRegistry is StakeRegistryStorage {
254
254
StrategyParams[] memory _strategyParams
255
255
) public virtual onlyCoordinatorOwner quorumExists (quorumNumber) {
256
256
_addStrategyParams (quorumNumber, _strategyParams);
257
+
258
+ uint256 numStratsToAdd = _strategyParams.length ;
259
+
260
+ if (isOperatorSetQuorum (quorumNumber)){
261
+ IStrategy[] memory strategiesToAdd = new IStrategy [](numStratsToAdd);
262
+ for (uint256 i = 0 ; i < numStratsToAdd; i++ ) {
263
+ strategiesToAdd[i] = _strategyParams[i].strategy;
264
+ }
265
+ serviceManager.addStrategyToOperatorSet (quorumNumber, strategiesToAdd);
266
+ }
257
267
}
258
268
259
269
/**
@@ -270,17 +280,25 @@ contract StakeRegistry is StakeRegistryStorage {
270
280
271
281
StrategyParams[] storage _strategyParams = strategyParams[quorumNumber];
272
282
IStrategy[] storage _strategiesPerQuorum = strategiesPerQuorum[quorumNumber];
283
+ IStrategy[] memory _strategiesToRemove = new IStrategy [](toRemoveLength);
273
284
274
285
for (uint256 i = 0 ; i < toRemoveLength; i++ ) {
286
+ _strategiesToRemove[i]= _strategyParams[indicesToRemove[i]].strategy;
275
287
emit StrategyRemovedFromQuorum (quorumNumber, _strategyParams[indicesToRemove[i]].strategy);
276
288
emit StrategyMultiplierUpdated (quorumNumber, _strategyParams[indicesToRemove[i]].strategy, 0 );
277
289
290
+
291
+
278
292
// Replace index to remove with the last item in the list, then pop the last item
279
293
_strategyParams[indicesToRemove[i]] = _strategyParams[_strategyParams.length - 1 ];
280
294
_strategyParams.pop ();
281
295
_strategiesPerQuorum[indicesToRemove[i]] = _strategiesPerQuorum[_strategiesPerQuorum.length - 1 ];
282
296
_strategiesPerQuorum.pop ();
283
297
}
298
+
299
+ if (isOperatorSetQuorum (quorumNumber)){
300
+ serviceManager.removeStrategiesFromOperatorSet (quorumNumber, _strategiesToRemove);
301
+ }
284
302
}
285
303
286
304
/**
@@ -560,7 +578,7 @@ contract StakeRegistry is StakeRegistryStorage {
560
578
* @param quorumNumber The quorum number to check
561
579
* @return True if the quorum is an operator set quorum
562
580
*/
563
- function isOperatorSetQuorum (uint8 quorumNumber ) external view returns (bool ) {
581
+ function isOperatorSetQuorum (uint8 quorumNumber ) public view returns (bool ) {
564
582
bool isM2 = IRegistryCoordinator (registryCoordinator).isM2Quorum (quorumNumber);
565
583
bool isOperatorSet = IRegistryCoordinator (registryCoordinator).isOperatorSetAVS ();
566
584
return isOperatorSet && ! isM2;
0 commit comments