@@ -42,7 +42,7 @@ contract LidoTemplate is IsContract {
4242 string private constant ERROR_BAD_AMOUNTS_LEN = "TMPL_BAD_AMOUNTS_LEN " ;
4343 string private constant ERROR_INVALID_ID = "TMPL_INVALID_ID " ;
4444 string private constant ERROR_UNEXPECTED_TOTAL_SUPPLY = "TMPL_UNEXPECTED_TOTAL_SUPPLY " ;
45- string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_INVALID_DG_ADMIN_EXECUTOR " ;
45+ string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_0_ADDR " ;
4646
4747 // Operational errors
4848 string private constant ERROR_PERMISSION_DENIED = "TMPL_PERMISSION_DENIED " ;
@@ -414,39 +414,17 @@ contract LidoTemplate is IsContract {
414414 function finalizePermissionsAfterDGDeployment (address dgAdminExecutor ) external onlyOwner {
415415 require (dgAdminExecutor != address (0 ), ERROR_INVALID_DG_ADMIN_EXECUTOR);
416416
417- DeployState memory state = deployState;
418-
419- state.acl.grantPermission (dgAdminExecutor, address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
420- state.acl.grantPermission (dgAdminExecutor, address (state.agent), state.agent.EXECUTE_ROLE ());
417+ deployState.acl.grantPermission (dgAdminExecutor, address (deployState.agent), deployState.agent.RUN_SCRIPT_ROLE ());
418+ deployState.acl.grantPermission (dgAdminExecutor, address (deployState.agent), deployState.agent.EXECUTE_ROLE ());
421419
422- state .acl.revokePermission (address (state .voting), address (state .agent), state .agent.RUN_SCRIPT_ROLE ());
423- state .acl.revokePermission (address (state .voting), address (state .agent), state .agent.EXECUTE_ROLE ());
420+ deployState .acl.revokePermission (address (deployState .voting), address (deployState .agent), deployState .agent.RUN_SCRIPT_ROLE ());
421+ deployState .acl.revokePermission (address (deployState .voting), address (deployState .agent), deployState .agent.EXECUTE_ROLE ());
424422
425- state.acl.setPermissionManager (address (state.agent), address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
426- state.acl.setPermissionManager (address (state.agent), address (state.agent), state.agent.EXECUTE_ROLE ());
427-
428- Kernel apmDAO = Kernel (state.lidoRegistry.kernel ());
429- ACL apmACL = ACL (apmDAO.acl ());
430- _transferPermissionFromTemplate (apmACL, apmACL, address (state.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
431-
432- _transferPermissionFromTemplate (state.acl, address (state.acl), address (state.agent), state.acl.CREATE_PERMISSIONS_ROLE (), address (state.agent));
433-
434- _resetState ();
423+ _finalizePermissions (address (deployState.agent));
435424 }
436425
437426 function finalizePermissionsWithoutDGDeployment () external onlyOwner {
438- DeployState memory state = deployState;
439-
440- state.acl.setPermissionManager (address (state.voting), address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
441- state.acl.setPermissionManager (address (state.voting), address (state.agent), state.agent.EXECUTE_ROLE ());
442-
443- Kernel apmDAO = Kernel (state.lidoRegistry.kernel ());
444- ACL apmACL = ACL (apmDAO.acl ());
445- _transferPermissionFromTemplate (apmACL, apmACL, address (state.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
446-
447- _transferPermissionFromTemplate (state.acl, address (state.acl), address (state.voting), state.acl.CREATE_PERMISSIONS_ROLE (), address (state.voting));
448-
449- _resetState ();
427+ _finalizePermissions (address (deployState.voting));
450428 }
451429
452430 /* DAO AND APPS */
@@ -754,9 +732,15 @@ contract LidoTemplate is IsContract {
754732 return keccak256 (abi.encodePacked (_apmRootNode, keccak256 (abi.encodePacked (_appName))));
755733 }
756734
757- /* STATE RESET */
735+ function _finalizePermissions (address newManager ) private {
736+ deployState.acl.setPermissionManager (newManager, address (deployState.agent), deployState.agent.RUN_SCRIPT_ROLE ());
737+ deployState.acl.setPermissionManager (newManager, address (deployState.agent), deployState.agent.EXECUTE_ROLE ());
738+
739+ ACL apmACL = ACL (deployState.lidoRegistry.kernel ().acl ());
740+ _transferPermissionFromTemplate (apmACL, apmACL, address (deployState.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
741+
742+ _transferPermissionFromTemplate (deployState.acl, address (deployState.acl), newManager, deployState.acl.CREATE_PERMISSIONS_ROLE (), newManager);
758743
759- function _resetState () private {
760744 delete deployState.lidoRegistryEnsNode;
761745 delete deployState.lidoRegistry;
762746 delete deployState.dao;
0 commit comments