@venusprotocol/governance-contracts 2.4.0-dev.3 → 2.5.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/artifacts/@layerzerolabs/solidity-examples/contracts/libraries/BytesLib.sol/BytesLib.dbg.json +1 -1
  2. package/artifacts/@layerzerolabs/solidity-examples/contracts/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  3. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/LzApp.sol/LzApp.dbg.json +1 -1
  4. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/NonblockingLzApp.sol/NonblockingLzApp.dbg.json +1 -1
  5. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  6. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  7. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/interfaces/ILayerZeroUserApplicationConfig.sol/ILayerZeroUserApplicationConfig.dbg.json +1 -1
  8. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/libs/LzLib.sol/LzLib.dbg.json +1 -1
  9. package/artifacts/@layerzerolabs/solidity-examples/contracts/lzApp/mocks/LZEndpointMock.sol/LZEndpointMock.dbg.json +1 -1
  10. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +1 -1
  11. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +1 -1
  12. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  13. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +1 -1
  14. package/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  15. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  16. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  17. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +1 -1
  18. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +1 -1
  19. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +1 -1
  20. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +1 -1
  21. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  22. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  23. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  24. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  25. package/artifacts/build-info/{d2df901c99f2b9e01cfffb9042af258b.json → 55c66c9e0f80b7f400934081cbca14cd.json} +1 -1
  26. package/artifacts/contracts/Cross-chain/BaseOmnichainControllerDest.sol/BaseOmnichainControllerDest.dbg.json +1 -1
  27. package/artifacts/contracts/Cross-chain/BaseOmnichainControllerSrc.sol/BaseOmnichainControllerSrc.dbg.json +1 -1
  28. package/artifacts/contracts/Cross-chain/OmnichainExecutorOwner.sol/OmnichainExecutorOwner.dbg.json +1 -1
  29. package/artifacts/contracts/Cross-chain/OmnichainGovernanceExecutor.sol/OmnichainGovernanceExecutor.dbg.json +1 -1
  30. package/artifacts/contracts/Cross-chain/OmnichainProposalSender.sol/OmnichainProposalSender.dbg.json +1 -1
  31. package/artifacts/contracts/Cross-chain/interfaces/IOmnichainGovernanceExecutor.sol/IOmnichainGovernanceExecutor.dbg.json +1 -1
  32. package/artifacts/contracts/Cross-chain/interfaces/ITimelock.sol/ITimelock.dbg.json +1 -1
  33. package/artifacts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +1 -1
  34. package/artifacts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
  35. package/artifacts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
  36. package/artifacts/contracts/Governance/TimelockV8.sol/TimelockV8.dbg.json +1 -1
  37. package/artifacts/contracts/Utils/ACMCommandsAggregator.sol/ACMCommandsAggregator.dbg.json +4 -0
  38. package/artifacts/contracts/Utils/ACMCommandsAggregator.sol/ACMCommandsAggregator.json +251 -0
  39. package/artifacts/contracts/test/MockAccessTest.sol/MockAccessTest.dbg.json +1 -1
  40. package/artifacts/contracts/test/MockXVSVault.sol/MockXVSVault.dbg.json +1 -1
  41. package/artifacts/contracts/test/TestTimelockV8.sol/TestTimelockV8.dbg.json +1 -1
  42. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol/Ownable.dbg.json +1 -1
  43. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  44. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  45. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  46. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  47. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  48. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  49. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  50. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol/Address.dbg.json +1 -1
  51. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol/Context.dbg.json +1 -1
  52. package/artifacts/hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  53. package/artifacts/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol/OptimizedTransparentUpgradeableProxy.dbg.json +1 -1
  54. package/contracts/Utils/ACMCommandsAggregator.sol +153 -0
  55. package/deploy/007-acm-commands-aggregator.ts +23 -0
  56. package/deploy/008-configure-acm-commands-aggregator.ts +430 -0
  57. package/deployments/arbitrumone/ACMCommandsAggregator.json +366 -0
  58. package/deployments/arbitrumone/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  59. package/deployments/arbitrumone.json +245 -0
  60. package/deployments/arbitrumone_addresses.json +1 -0
  61. package/deployments/arbitrumsepolia/ACMCommandsAggregator.json +366 -0
  62. package/deployments/arbitrumsepolia/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  63. package/deployments/arbitrumsepolia.json +245 -0
  64. package/deployments/arbitrumsepolia_addresses.json +1 -0
  65. package/deployments/ethereum/ACMCommandsAggregator.json +366 -0
  66. package/deployments/ethereum/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  67. package/deployments/ethereum.json +245 -0
  68. package/deployments/ethereum_addresses.json +1 -0
  69. package/deployments/opbnbmainnet/ACMCommandsAggregator.json +366 -0
  70. package/deployments/opbnbmainnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  71. package/deployments/opbnbmainnet.json +245 -0
  72. package/deployments/opbnbmainnet_addresses.json +1 -0
  73. package/deployments/opbnbtestnet/ACMCommandsAggregator.json +366 -0
  74. package/deployments/opbnbtestnet/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  75. package/deployments/opbnbtestnet.json +245 -0
  76. package/deployments/opbnbtestnet_addresses.json +1 -0
  77. package/deployments/sepolia/ACMCommandsAggregator.json +365 -0
  78. package/deployments/sepolia/solcInputs/06fc2b6f9f7e0e63c70222b8e0b27702.json +40 -0
  79. package/deployments/sepolia/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  80. package/deployments/sepolia/solcInputs/c5ad99afd830582b4e18b887fc15722a.json +40 -0
  81. package/deployments/sepolia/solcInputs/d1b723608bc0e5c4e69b41a531154535.json +40 -0
  82. package/deployments/sepolia.json +245 -0
  83. package/deployments/sepolia_addresses.json +1 -0
  84. package/dist/deploy/007-acm-commands-aggregator.d.ts +4 -0
  85. package/dist/deploy/007-acm-commands-aggregator.d.ts.map +1 -0
  86. package/dist/deploy/007-acm-commands-aggregator.js +30 -0
  87. package/dist/deploy/007-acm-commands-aggregator.js.map +1 -0
  88. package/dist/deploy/008-configure-acm-commands-aggregator.d.ts +4 -0
  89. package/dist/deploy/008-configure-acm-commands-aggregator.d.ts.map +1 -0
  90. package/dist/deploy/008-configure-acm-commands-aggregator.js +361 -0
  91. package/dist/deploy/008-configure-acm-commands-aggregator.js.map +1 -0
  92. package/dist/helpers/permissions.d.ts +46 -0
  93. package/dist/helpers/permissions.d.ts.map +1 -0
  94. package/dist/helpers/permissions.js +399 -0
  95. package/dist/helpers/permissions.js.map +1 -0
  96. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.d.ts +229 -0
  97. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.d.ts.map +1 -0
  98. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.js +3 -0
  99. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.js.map +1 -0
  100. package/dist/typechain/contracts/Utils/index.d.ts +2 -0
  101. package/dist/typechain/contracts/Utils/index.d.ts.map +1 -0
  102. package/dist/typechain/contracts/Utils/index.js +3 -0
  103. package/dist/typechain/contracts/Utils/index.js.map +1 -0
  104. package/dist/typechain/contracts/index.d.ts +2 -0
  105. package/dist/typechain/contracts/index.d.ts.map +1 -1
  106. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.d.ts +206 -0
  107. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.d.ts.map +1 -0
  108. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.js +280 -0
  109. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.js.map +1 -0
  110. package/dist/typechain/factories/contracts/Utils/index.d.ts +2 -0
  111. package/dist/typechain/factories/contracts/Utils/index.d.ts.map +1 -0
  112. package/dist/typechain/factories/contracts/Utils/index.js +6 -0
  113. package/dist/typechain/factories/contracts/Utils/index.js.map +1 -0
  114. package/dist/typechain/factories/contracts/index.d.ts +1 -0
  115. package/dist/typechain/factories/contracts/index.d.ts.map +1 -1
  116. package/dist/typechain/factories/contracts/index.js +2 -1
  117. package/dist/typechain/factories/contracts/index.js.map +1 -1
  118. package/dist/typechain/index.d.ts +2 -0
  119. package/dist/typechain/index.d.ts.map +1 -1
  120. package/dist/typechain/index.js +3 -1
  121. package/dist/typechain/index.js.map +1 -1
  122. package/package.json +1 -1
  123. package/typechain/contracts/Utils/ACMCommandsAggregator.ts +440 -0
  124. package/typechain/contracts/Utils/index.ts +4 -0
  125. package/typechain/contracts/index.ts +3 -0
  126. package/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.ts +314 -0
  127. package/typechain/factories/contracts/Utils/index.ts +4 -0
  128. package/typechain/factories/contracts/index.ts +1 -0
  129. package/typechain/index.ts +2 -0
@@ -0,0 +1,430 @@
1
+ import { ethers } from "hardhat";
2
+ import { DeployFunction } from "hardhat-deploy/types";
3
+ import { HardhatRuntimeEnvironment } from "hardhat/types";
4
+ import { ACMCommandsAggregator } from "typechain";
5
+
6
+ import {
7
+ AccountType,
8
+ getBinanceOraclePermissions,
9
+ getBoundValidatorPermissions,
10
+ getBoundValidatorRevokePermissions,
11
+ getChainlinkOraclePermissions,
12
+ getComptrollerPermissions,
13
+ getComptrollerRevokePermissions,
14
+ getConverterNetworkPermissions,
15
+ getConverterNetworkRevokePermissions,
16
+ getConverterPermissions,
17
+ getConvertersRevokePermissions,
18
+ getIRMPermissions,
19
+ getIRMRevokePermissions,
20
+ getOmniChainExecutorOwnerPermissions,
21
+ getOmniChainExecutorOwnerRevokePermissions,
22
+ getPoolRegistryPermissions,
23
+ getPoolRegistryRevokePermissions,
24
+ getPoolRegistryRevokePermissionsForWildcard,
25
+ getPrimeLiquidityProviderPermissions,
26
+ getPrimeLiquidityProviderRevokePermissions,
27
+ getPrimePermissions,
28
+ getPrimeRevokePermissions,
29
+ getProtocolShareReservePermissions,
30
+ getRedstoneOraclePermissions,
31
+ getRedstoneOracleRevokePermissions,
32
+ getResilientOraclePermissions,
33
+ getResilientOracleRevokePermissions,
34
+ getRewardDistributorPermissionsBlockbased,
35
+ getRewardDistributorPermissionsTimebased,
36
+ getRewardDistributorRevokePermissions,
37
+ getSFrxETHOraclePermissions,
38
+ getSFrxETHOracleRevokePermissions,
39
+ getVTokenPermissions,
40
+ getVTokenRevokePermissions,
41
+ getXVSBridgeAdminPermissions,
42
+ getXVSBridgeAdminRevokePermissions,
43
+ getXVSPermissions,
44
+ getXVSVaultPermissions,
45
+ getXVSVaultRevokePermissions,
46
+ getXVSVaultTreasuryPermissions,
47
+ getXVSVaultTreasuryRevokePermissions,
48
+ } from "../helpers/permissions";
49
+
50
+ const ARBITRUMONE_RESILIENT_ORACLE = "0xd55A98150e0F9f5e3F6280FC25617A5C93d96007";
51
+ const ARBITRUMONE_CHAINLINK_ORACLE = "0x9cd9Fcc7E3dEDA360de7c080590AaD377ac9F113";
52
+ const ARBITRUMONE_REDSTONE_ORACLE = "0xF792C4D3BdeF534D6d1dcC305056D00C95453dD6";
53
+ const ARBITRUMONE_BOUND_VALIDATOR = "0x2245FA2420925Cd3C2D889Ddc5bA1aefEF0E14CF";
54
+ const ETHEREUM_RESILIENT_ORACLE = "0xd2ce3fb018805ef92b8C5976cb31F84b4E295F94";
55
+ const ETHEREUM_CHAINLINK_ORACLE = "0x94c3A2d6B7B2c051aDa041282aec5B0752F8A1F2";
56
+ const ETHEREUM_REDSTONE_ORACLE = "0x0FC8001B2c9Ec90352A46093130e284de5889C86";
57
+ const ETHEREUM_BOUND_VALIDATOR = "0x1Cd5f336A1d28Dff445619CC63d3A0329B4d8a58";
58
+ const ETHEREUM_sFrxETH_ORACLE = "0x5E06A5f48692E4Fff376fDfCA9E4C0183AAADCD1";
59
+ const OPBNBMAINNET_RESILIENT_ORACLE = "0x8f3618c4F0183e14A218782c116fb2438571dAC9";
60
+ const OPBNBMAINNET_BINANCE_ORACLE = "0xB09EC9B628d04E1287216Aa3e2432291f50F9588";
61
+ const OPBNBMAINNET_BOUND_VALIDATOR = "0xd1f80C371C6E2Fa395A5574DB3E3b4dAf43dadCE";
62
+ const ARBITRUMSEPOLIA_RESILIENT_ORACLE = "0x6708bAd042916B47311c8078b29d7f432342102F";
63
+ const ARBITRUMSEPOLIA_CHAINLINK_ORACLE = "0xeDd02c7FfA31490b4107e8f2c25e9198a04F9E45";
64
+ const ARBITRUMSEPOLIA_REDSTONE_ORACLE = "0x15058891ca0c71Bd724b873c41596A682420613C";
65
+ const ARBITRUMSEPOLIA_BOUND_VALIDATOR = "0xfe6bc1545Cc14C131bacA97476D6035ffcC0b889";
66
+ const SEPOLIA_RESILIENT_ORACLE = "0x8000eca36201dddf5805Aa4BeFD73d1EB4D23264";
67
+ const SEPOLIA_CHAINLINK_ORACLE = "0x102F0b714E5d321187A4b6E5993358448f7261cE";
68
+ const SEPOLIA_REDSTONE_ORACLE = "0x4e6269Ef406B4CEE6e67BA5B5197c2FfD15099AE";
69
+ const SEPOLIA_BOUND_VALIDATOR = "0x60c4Aa92eEb6884a76b309Dd8B3731ad514d6f9B";
70
+ const SEPOLIA_sFrxETH_ORACLE = "0x61EB836afA467677e6b403D504fe69D6940e7996";
71
+ const OPBNBTESTNET_RESILIENT_ORACLE = "0xEF4e53a9A4565ef243A2f0ee9a7fc2410E1aA623";
72
+ const OPBNBTESTNET_BINANCE_ORACLE = "0x496B6b03469472572C47bdB407d5549b244a74F2";
73
+ const OPBNBTESTNET_BOUND_VALIDATOR = "0x049537Bb065e6253e9D8D08B45Bf6b753657A746";
74
+
75
+ const ARBITRUMONE_XVS = "0xc1Eb7689147C81aC840d4FF0D298489fc7986d52";
76
+ const ETHEREUM_XVS = "0xd3CC9d8f3689B83c91b7B59cAB4946B063EB894A";
77
+ const OPBNBMAINNET_XVS = "0x3E2e61F1c075881F3fB8dd568043d8c221fd5c61";
78
+ const ARBITRUMSEPOLIA_XVS = "0x877Dc896e7b13096D3827872e396927BbE704407";
79
+ const SEPOLIA_XVS = "0x66ebd019E86e0af5f228a0439EBB33f045CBe63E";
80
+ const OPBNBTESTNET_XVS = "0xc2931B1fEa69b6D6dA65a50363A8D75d285e4da9";
81
+ const ARBITRUMONE_XVS_BRIDGE_ADMIN = "0xf5d81C6F7DAA3F97A6265C8441f92eFda22Ad784";
82
+ const ETHEREUM_XVS_BRIDGE_ADMIN = "0x9C6C95632A8FB3A74f2fB4B7FfC50B003c992b96";
83
+ const OPBNBMAINNET_XVS_BRIDGE_ADMIN = "0x52fcE05aDbf6103d71ed2BA8Be7A317282731831";
84
+ const ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN = "0xc94578caCC89a29B044a0a1D54d20d48A645E5C8";
85
+ const SEPOLIA_XVS_BRIDGE_ADMIN = "0xd3c6bdeeadB2359F726aD4cF42EAa8B7102DAd9B";
86
+ const OPBNBTESTNET_XVS_BRIDGE_ADMIN = "0x19252AFD0B2F539C400aEab7d460CBFbf74c17ff";
87
+
88
+ const ARBITRUMONE_XVS_VAULT_PROXY = "0x8b79692AAB2822Be30a6382Eb04763A74752d5B4";
89
+ const ETHEREUM_XVS_VAULT_PROXY = "0xA0882C2D5DF29233A092d2887A258C2b90e9b994";
90
+ const OPBNBMAINNET_XVS_VAULT_PROXY = "0x7dc969122450749A8B0777c0e324522d67737988";
91
+ const ARBITRUMSEPOLIA_XVS_VAULT_PROXY = "0x407507DC2809D3aa31D54EcA3BEde5C5c4C8A17F";
92
+ const SEPOLIA_XVS_VAULT_PROXY = "0x1129f882eAa912aE6D4f6D445b2E2b1eCbA99fd5";
93
+ const OPBNBTESTNET_XVS_VAULT_PROXY = "0xB14A0e72C5C202139F78963C9e89252c1ad16f01";
94
+
95
+ const ETHEREUM_XVS_VAULT_TREASURY = "0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE";
96
+ const SEPOLIA_XVS_VAULT_TREASURY = "0xCCB08e5107b406E67Ad8356023dd489CEbc79B40";
97
+
98
+ const ETHEREUM_POOL_REGISTRY = "0x61CAff113CCaf05FFc6540302c37adcf077C5179";
99
+ const ARBITRUMONE_POOL_REGISTRY = "0x382238f07Bc4Fe4aA99e561adE8A4164b5f815DA";
100
+ const OPBNBMAINNET_POOL_REGISTRY = "0x345a030Ad22e2317ac52811AC41C1A63cfa13aEe";
101
+ const SEPOLIA_POOL_REGISTRY = "0x758f5715d817e02857Ba40889251201A5aE3E186";
102
+ const OPBNBTESTNET_POOL_REGISTRY = "0x560eA4e1cC42591E9f5F5D83Ad2fd65F30128951";
103
+ const ARBITRUMSEPOLIA_POOL_REGISTRY = "0xf93Df3135e0D555185c0BC888073374cA551C5fE";
104
+
105
+ const ARBITRUMONE_PRIME = "0xFE69720424C954A2da05648a0FAC84f9bf11Ef49";
106
+ const ARBITRUMONE_PLP = "0x86bf21dB200f29F21253080942Be8af61046Ec29";
107
+ const ARBITRUMONE_PSR = "0xF9263eaF7eB50815194f26aCcAB6765820B13D41";
108
+ const ETHEREUM_CONVERTER_NETWORK = "0x232CC47AECCC55C2CAcE4372f5B268b27ef7cac8";
109
+ const ETHEREUM_PRIME = "0x14C4525f47A7f7C984474979c57a2Dccb8EACB39";
110
+ const ETHEREUM_PLP = "0x8ba6aFfd0e7Bcd0028D1639225C84DdCf53D8872";
111
+ const ETHEREUM_PSR = "0x8c8c8530464f7D95552A11eC31Adbd4dC4AC4d3E";
112
+ const OPBNBMAINNET_PSR = "0xA2EDD515B75aBD009161B15909C19959484B0C1e";
113
+ const ARBITRUMSEPOLIA_PRIME = "0xadb04ac4942683bc41e27d18234c8dc884786e89";
114
+ const ARBITRUMSEPOLIA_PLP = "0xe82c2c10f55d3268126c29ec813dc6f086904694";
115
+ const ARBITRUMSEPOLIA_PSR = "0x09267d30798B59c581ce54E861A084C6FC298666";
116
+ const SEPOLIA_PRIME = "0x2Ec432F123FEbb114e6fbf9f4F14baF0B1F14AbC";
117
+ const SEPOLIA_PLP = "0x15242a55Ad1842A1aEa09c59cf8366bD2f3CE9B4";
118
+ const SEPOLIA_PSR = "0xbea70755cc3555708ca11219adB0db4C80F6721B";
119
+ const OPBNBTESTNET_PSR = "0xc355dEb1A9289f8C58CFAa076EEdBf51F3A8Da7F";
120
+ const SEPOLIA_CONVERTER_NETWORK = "0xB5A4208bFC4cC2C4670744849B8fC35B21A690Fa";
121
+
122
+ const ARBITRUMONE_GUARDIAN = "0x14e0E151b33f9802b3e75b621c1457afc44DcAA0";
123
+ const ETHEREUM_GUARDIAN = "0x285960C5B22fD66A736C7136967A3eB15e93CC67";
124
+ const OPBNBMAINNET_GUARDIAN = "0xC46796a21a3A9FAB6546aF3434F2eBfFd0604207";
125
+ const SEPOLIA_GUARDIAN = "0x94fa6078b6b8a26f0b6edffbe6501b22a10470fb";
126
+ const OPBNBTESTNET_GUARDIAN = "0xb15f6EfEbC276A3b9805df81b5FB3D50C2A62BDf";
127
+ const ARBITRUMSEPOLIA_GUARDIAN = "0x1426A5Ae009c4443188DA8793751024E358A61C2";
128
+
129
+ const ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xfCA70dd553b7dF6eB8F813CFEA6a9DD039448878";
130
+ const SEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xf964158C67439D01e5f17F0A3F39DfF46823F27A";
131
+ const OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER = "0x4F570240FF6265Fbb1C79cE824De6408F1948913";
132
+
133
+ const ETHEREUM_CONVERTERS: string[] = [
134
+ "0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE",
135
+ "0x4f55cb0a24D5542a3478B0E284259A6B850B06BD",
136
+ "0xcEB9503f10B781E30213c0b320bCf3b3cE54216E",
137
+ "0xDcCDE673Cd8988745dA384A7083B0bd22085dEA0",
138
+ "0xb8fD67f215117FADeF06447Af31590309750529D",
139
+ "0x1FD30e761C3296fE36D9067b1e398FD97B4C0407",
140
+ ];
141
+ const SEPOLIA_CONVERTERS: string[] = [
142
+ "0xCCB08e5107b406E67Ad8356023dd489CEbc79B40",
143
+ "0x3716C24EA86A67cAf890d7C9e4C4505cDDC2F8A2",
144
+ "0x511a559a699cBd665546a1F75908f7E9454Bfc67",
145
+ "0x8a3937F27921e859db3FDA05729CbCea8cfd82AE",
146
+ "0x274a834eFFA8D5479502dD6e78925Bc04ae82B46",
147
+ "0xc203bfA9dCB0B5fEC510Db644A494Ff7f4968ed2",
148
+ ];
149
+
150
+ interface Permissions {
151
+ [key: string]: string[][];
152
+ }
153
+
154
+ const grantPermissions: Permissions = {
155
+ arbitrumone: [
156
+ ...getResilientOraclePermissions(ARBITRUMONE_RESILIENT_ORACLE),
157
+ ...getChainlinkOraclePermissions(ARBITRUMONE_CHAINLINK_ORACLE),
158
+ ...getRedstoneOraclePermissions(ARBITRUMONE_REDSTONE_ORACLE),
159
+ ...getBoundValidatorPermissions(ARBITRUMONE_BOUND_VALIDATOR),
160
+ ...getXVSPermissions(ARBITRUMONE_XVS),
161
+ ...getXVSBridgeAdminPermissions(ARBITRUMONE_XVS_BRIDGE_ADMIN),
162
+ ...getXVSVaultPermissions(ARBITRUMONE_XVS_VAULT_PROXY),
163
+ ...getPoolRegistryPermissions(ARBITRUMONE_POOL_REGISTRY),
164
+ ...getPrimePermissions(ARBITRUMONE_PRIME),
165
+ ...getPrimeLiquidityProviderPermissions(ARBITRUMONE_PLP),
166
+ ...getProtocolShareReservePermissions(ARBITRUMONE_PSR),
167
+ ...getComptrollerPermissions(),
168
+ ...getVTokenPermissions(),
169
+ ...getRewardDistributorPermissionsTimebased(),
170
+ ...getIRMPermissions(),
171
+ ],
172
+ ethereum: [
173
+ ...getResilientOraclePermissions(ETHEREUM_RESILIENT_ORACLE),
174
+ ...getChainlinkOraclePermissions(ETHEREUM_CHAINLINK_ORACLE),
175
+ ...getRedstoneOraclePermissions(ETHEREUM_REDSTONE_ORACLE),
176
+ ...getBoundValidatorPermissions(ETHEREUM_BOUND_VALIDATOR),
177
+ ...getSFrxETHOraclePermissions(ETHEREUM_sFrxETH_ORACLE),
178
+ ...getXVSPermissions(ETHEREUM_XVS),
179
+ ...getXVSBridgeAdminPermissions(ETHEREUM_XVS_BRIDGE_ADMIN),
180
+ ...getXVSVaultPermissions(ETHEREUM_XVS_VAULT_PROXY),
181
+ ...getPoolRegistryPermissions(ETHEREUM_POOL_REGISTRY),
182
+ ...getPrimePermissions(ETHEREUM_PRIME),
183
+ ...getPrimeLiquidityProviderPermissions(ETHEREUM_PLP),
184
+ ...getProtocolShareReservePermissions(ETHEREUM_PSR),
185
+ ...getConverterNetworkPermissions(ETHEREUM_CONVERTER_NETWORK),
186
+ ...getComptrollerPermissions(),
187
+ ...getVTokenPermissions(),
188
+ ...getRewardDistributorPermissionsBlockbased(),
189
+ ...getIRMPermissions(),
190
+ ...getConverterPermissions(),
191
+ ...getXVSVaultTreasuryPermissions(ETHEREUM_XVS_VAULT_TREASURY),
192
+ ],
193
+ opbnbmainnet: [
194
+ ...getResilientOraclePermissions(OPBNBMAINNET_RESILIENT_ORACLE),
195
+ ...getBoundValidatorPermissions(OPBNBMAINNET_BOUND_VALIDATOR),
196
+ ...getBinanceOraclePermissions(OPBNBMAINNET_BINANCE_ORACLE),
197
+ ...getXVSPermissions(OPBNBMAINNET_XVS),
198
+ ...getXVSBridgeAdminPermissions(OPBNBMAINNET_XVS_BRIDGE_ADMIN),
199
+ ...getXVSVaultPermissions(OPBNBMAINNET_XVS_VAULT_PROXY),
200
+ ...getPoolRegistryPermissions(OPBNBMAINNET_POOL_REGISTRY),
201
+ ...getProtocolShareReservePermissions(OPBNBMAINNET_PSR),
202
+ ...getComptrollerPermissions(),
203
+ ...getVTokenPermissions(),
204
+ ...getIRMPermissions(),
205
+ ],
206
+ arbitrumsepolia: [
207
+ ...getResilientOraclePermissions(ARBITRUMSEPOLIA_RESILIENT_ORACLE),
208
+ ...getChainlinkOraclePermissions(ARBITRUMSEPOLIA_CHAINLINK_ORACLE),
209
+ ...getRedstoneOraclePermissions(ARBITRUMSEPOLIA_REDSTONE_ORACLE),
210
+ ...getBoundValidatorPermissions(ARBITRUMSEPOLIA_BOUND_VALIDATOR),
211
+ ...getXVSPermissions(ARBITRUMSEPOLIA_XVS),
212
+ ...getXVSBridgeAdminPermissions(ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN),
213
+ ...getXVSVaultPermissions(ARBITRUMSEPOLIA_XVS_VAULT_PROXY),
214
+ ...getPoolRegistryPermissions(ARBITRUMSEPOLIA_POOL_REGISTRY),
215
+ ...getPrimePermissions(ARBITRUMSEPOLIA_PRIME),
216
+ ...getPrimeLiquidityProviderPermissions(ARBITRUMSEPOLIA_PLP),
217
+ ...getProtocolShareReservePermissions(ARBITRUMSEPOLIA_PSR),
218
+ ...getComptrollerPermissions(),
219
+ ...getVTokenPermissions(),
220
+ ...getRewardDistributorPermissionsTimebased(),
221
+ ...getIRMPermissions(),
222
+ ...getOmniChainExecutorOwnerPermissions(ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER, ARBITRUMSEPOLIA_GUARDIAN),
223
+ ],
224
+ sepolia: [
225
+ ...getResilientOraclePermissions(SEPOLIA_RESILIENT_ORACLE),
226
+ ...getChainlinkOraclePermissions(SEPOLIA_CHAINLINK_ORACLE),
227
+ ...getRedstoneOraclePermissions(SEPOLIA_REDSTONE_ORACLE),
228
+ ...getBoundValidatorPermissions(SEPOLIA_BOUND_VALIDATOR),
229
+ ...getSFrxETHOraclePermissions(SEPOLIA_sFrxETH_ORACLE),
230
+ ...getXVSPermissions(SEPOLIA_XVS),
231
+ ...getXVSBridgeAdminPermissions(SEPOLIA_XVS_BRIDGE_ADMIN),
232
+ ...getXVSVaultPermissions(SEPOLIA_XVS_VAULT_PROXY),
233
+ ...getPoolRegistryPermissions(SEPOLIA_POOL_REGISTRY),
234
+ ...getPrimePermissions(SEPOLIA_PRIME),
235
+ ...getPrimeLiquidityProviderPermissions(SEPOLIA_PLP),
236
+ ...getProtocolShareReservePermissions(SEPOLIA_PSR),
237
+ ...getConverterNetworkPermissions(SEPOLIA_CONVERTER_NETWORK),
238
+ ...getComptrollerPermissions(),
239
+ ...getVTokenPermissions(),
240
+ ...getRewardDistributorPermissionsBlockbased(),
241
+ ...getIRMPermissions(),
242
+ ...getConverterPermissions(),
243
+ ...getXVSVaultTreasuryPermissions(SEPOLIA_XVS_VAULT_TREASURY),
244
+ ...getOmniChainExecutorOwnerPermissions(SEPOLIA_OMNICHAIN_EXECUTOR_OWNER, SEPOLIA_GUARDIAN),
245
+ ],
246
+ opbnbtestnet: [
247
+ ...getResilientOraclePermissions(OPBNBTESTNET_RESILIENT_ORACLE),
248
+ ...getBoundValidatorPermissions(OPBNBTESTNET_BOUND_VALIDATOR),
249
+ ...getBinanceOraclePermissions(OPBNBTESTNET_BINANCE_ORACLE),
250
+ ...getXVSPermissions(OPBNBTESTNET_XVS),
251
+ ...getXVSBridgeAdminPermissions(OPBNBTESTNET_XVS_BRIDGE_ADMIN),
252
+ ...getXVSVaultPermissions(OPBNBTESTNET_XVS_VAULT_PROXY),
253
+ ...getPoolRegistryPermissions(OPBNBTESTNET_POOL_REGISTRY),
254
+ ...getProtocolShareReservePermissions(OPBNBTESTNET_PSR),
255
+ ...getComptrollerPermissions(),
256
+ ...getVTokenPermissions(),
257
+ ...getIRMPermissions(),
258
+ ...getOmniChainExecutorOwnerPermissions(OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER, OPBNBTESTNET_GUARDIAN),
259
+ ],
260
+ };
261
+
262
+ const revokePermissions: Permissions = {
263
+ arbitrumone: [
264
+ ...getPrimeRevokePermissions(ARBITRUMONE_PRIME, ARBITRUMONE_GUARDIAN),
265
+ ...getPrimeLiquidityProviderRevokePermissions(ARBITRUMONE_PLP, ARBITRUMONE_GUARDIAN),
266
+ ...getResilientOracleRevokePermissions(ARBITRUMONE_RESILIENT_ORACLE, ARBITRUMONE_GUARDIAN),
267
+ ...getBoundValidatorRevokePermissions(ARBITRUMONE_BOUND_VALIDATOR, ARBITRUMONE_GUARDIAN),
268
+ ...getXVSVaultRevokePermissions(ARBITRUMONE_XVS, ARBITRUMONE_GUARDIAN),
269
+ ...getRewardDistributorRevokePermissions(ARBITRUMONE_GUARDIAN, true),
270
+ ...getIRMRevokePermissions(ARBITRUMONE_GUARDIAN),
271
+ ...getPoolRegistryRevokePermissions(ARBITRUMONE_POOL_REGISTRY, ARBITRUMONE_GUARDIAN),
272
+ ...getComptrollerRevokePermissions(ARBITRUMONE_GUARDIAN),
273
+ ...getVTokenRevokePermissions(ARBITRUMONE_GUARDIAN),
274
+ ...getXVSBridgeAdminRevokePermissions(ARBITRUMONE_XVS_BRIDGE_ADMIN, ARBITRUMONE_GUARDIAN),
275
+ ...getRedstoneOracleRevokePermissions(ARBITRUMONE_REDSTONE_ORACLE, ARBITRUMONE_GUARDIAN),
276
+ ],
277
+ ethereum: [
278
+ ...getPrimeRevokePermissions(ETHEREUM_PRIME, ETHEREUM_GUARDIAN),
279
+ ...getPrimeLiquidityProviderRevokePermissions(ETHEREUM_PLP, ETHEREUM_GUARDIAN),
280
+ ...getResilientOracleRevokePermissions(ETHEREUM_RESILIENT_ORACLE, ETHEREUM_GUARDIAN),
281
+ ...getBoundValidatorRevokePermissions(ETHEREUM_BOUND_VALIDATOR, ETHEREUM_GUARDIAN),
282
+ ...getXVSVaultRevokePermissions(ETHEREUM_XVS, ETHEREUM_GUARDIAN),
283
+ ...getRewardDistributorRevokePermissions(ETHEREUM_GUARDIAN, false),
284
+ ...getIRMRevokePermissions(ETHEREUM_GUARDIAN),
285
+ ...getPoolRegistryRevokePermissions(ETHEREUM_POOL_REGISTRY, ETHEREUM_GUARDIAN),
286
+ ...getComptrollerRevokePermissions(ETHEREUM_GUARDIAN),
287
+ ...getVTokenRevokePermissions(ETHEREUM_GUARDIAN),
288
+ ...getRedstoneOracleRevokePermissions(ETHEREUM_REDSTONE_ORACLE, ETHEREUM_GUARDIAN),
289
+ ...getConverterNetworkRevokePermissions(ETHEREUM_CONVERTER_NETWORK, ETHEREUM_GUARDIAN),
290
+ ...getSFrxETHOracleRevokePermissions(ETHEREUM_sFrxETH_ORACLE, ETHEREUM_GUARDIAN),
291
+ ...getConvertersRevokePermissions(ETHEREUM_CONVERTERS, ETHEREUM_GUARDIAN),
292
+ ...getXVSVaultTreasuryRevokePermissions(ETHEREUM_XVS_VAULT_TREASURY, ETHEREUM_GUARDIAN),
293
+ ...getXVSBridgeAdminRevokePermissions(ETHEREUM_XVS_BRIDGE_ADMIN, ETHEREUM_GUARDIAN),
294
+ ],
295
+ opbnbmainnet: [
296
+ ...getResilientOracleRevokePermissions(OPBNBMAINNET_RESILIENT_ORACLE, OPBNBMAINNET_GUARDIAN),
297
+ ...getBoundValidatorRevokePermissions(OPBNBMAINNET_BOUND_VALIDATOR, OPBNBMAINNET_GUARDIAN),
298
+ ...getXVSVaultRevokePermissions(OPBNBMAINNET_XVS, OPBNBMAINNET_GUARDIAN),
299
+ ...getIRMRevokePermissions(OPBNBMAINNET_GUARDIAN),
300
+ ...getPoolRegistryRevokePermissions(OPBNBMAINNET_POOL_REGISTRY, OPBNBMAINNET_GUARDIAN),
301
+ ...getComptrollerRevokePermissions(OPBNBMAINNET_GUARDIAN),
302
+ ...getVTokenRevokePermissions(OPBNBMAINNET_GUARDIAN),
303
+ ...getXVSBridgeAdminRevokePermissions(OPBNBMAINNET_XVS_BRIDGE_ADMIN, OPBNBMAINNET_GUARDIAN),
304
+ ],
305
+ opbnbtestnet: [
306
+ ...getResilientOracleRevokePermissions(OPBNBTESTNET_RESILIENT_ORACLE, OPBNBTESTNET_GUARDIAN),
307
+ ...getBoundValidatorRevokePermissions(OPBNBTESTNET_BOUND_VALIDATOR, OPBNBTESTNET_GUARDIAN),
308
+ ...getXVSVaultRevokePermissions(OPBNBTESTNET_XVS, OPBNBTESTNET_GUARDIAN),
309
+ ...getIRMRevokePermissions(OPBNBTESTNET_GUARDIAN),
310
+ ...getPoolRegistryRevokePermissionsForWildcard(OPBNBTESTNET_GUARDIAN),
311
+ ...getComptrollerRevokePermissions(OPBNBTESTNET_GUARDIAN),
312
+ ...getVTokenRevokePermissions(OPBNBTESTNET_GUARDIAN),
313
+ ...getXVSBridgeAdminRevokePermissions(OPBNBTESTNET_XVS_BRIDGE_ADMIN, OPBNBTESTNET_GUARDIAN),
314
+ ...getRewardDistributorRevokePermissions(OPBNBTESTNET_GUARDIAN, false),
315
+ ...getOmniChainExecutorOwnerRevokePermissions(OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER, OPBNBTESTNET_GUARDIAN),
316
+ ],
317
+ sepolia: [
318
+ ...getPrimeRevokePermissions(SEPOLIA_PRIME, SEPOLIA_GUARDIAN),
319
+ ...getPrimeLiquidityProviderRevokePermissions(SEPOLIA_PLP, SEPOLIA_GUARDIAN),
320
+ ...getResilientOracleRevokePermissions(SEPOLIA_RESILIENT_ORACLE, SEPOLIA_GUARDIAN),
321
+ ...getBoundValidatorRevokePermissions(SEPOLIA_BOUND_VALIDATOR, SEPOLIA_GUARDIAN),
322
+ ...getXVSVaultRevokePermissions(SEPOLIA_XVS, SEPOLIA_GUARDIAN),
323
+ ...getRewardDistributorRevokePermissions(SEPOLIA_GUARDIAN, false),
324
+ ...getIRMRevokePermissions(SEPOLIA_GUARDIAN),
325
+ ...getPoolRegistryRevokePermissions(SEPOLIA_POOL_REGISTRY, SEPOLIA_GUARDIAN),
326
+ ...getComptrollerRevokePermissions(SEPOLIA_GUARDIAN),
327
+ ...getVTokenRevokePermissions(SEPOLIA_GUARDIAN),
328
+ ...getRedstoneOracleRevokePermissions(SEPOLIA_REDSTONE_ORACLE, SEPOLIA_GUARDIAN),
329
+ ...getConverterNetworkRevokePermissions(SEPOLIA_CONVERTER_NETWORK, SEPOLIA_GUARDIAN),
330
+ ...getSFrxETHOracleRevokePermissions(SEPOLIA_sFrxETH_ORACLE, SEPOLIA_GUARDIAN),
331
+ ...getConvertersRevokePermissions(SEPOLIA_CONVERTERS, SEPOLIA_GUARDIAN),
332
+ ...getXVSVaultTreasuryRevokePermissions(SEPOLIA_XVS_VAULT_TREASURY, SEPOLIA_GUARDIAN),
333
+ ...getXVSBridgeAdminRevokePermissions(SEPOLIA_XVS_BRIDGE_ADMIN, SEPOLIA_GUARDIAN),
334
+ ...getOmniChainExecutorOwnerRevokePermissions(SEPOLIA_OMNICHAIN_EXECUTOR_OWNER, SEPOLIA_GUARDIAN),
335
+ ],
336
+ arbitrumsepolia: [
337
+ ...getPrimeRevokePermissions(ARBITRUMSEPOLIA_PRIME, ARBITRUMSEPOLIA_GUARDIAN),
338
+ ...getPrimeLiquidityProviderRevokePermissions(ARBITRUMSEPOLIA_PLP, ARBITRUMSEPOLIA_GUARDIAN),
339
+ ...getResilientOracleRevokePermissions(ARBITRUMSEPOLIA_RESILIENT_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
340
+ ...getBoundValidatorRevokePermissions(ARBITRUMSEPOLIA_BOUND_VALIDATOR, ARBITRUMSEPOLIA_GUARDIAN),
341
+ ...getXVSVaultRevokePermissions(ARBITRUMSEPOLIA_XVS, ARBITRUMSEPOLIA_GUARDIAN),
342
+ ...getRewardDistributorRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN, true),
343
+ ...getIRMRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
344
+ ...getPoolRegistryRevokePermissionsForWildcard(ARBITRUMSEPOLIA_GUARDIAN),
345
+ ...getComptrollerRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
346
+ ...getVTokenRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
347
+ ...getXVSBridgeAdminRevokePermissions(ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN, ARBITRUMSEPOLIA_GUARDIAN),
348
+ ...getRedstoneOracleRevokePermissions(ARBITRUMSEPOLIA_REDSTONE_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
349
+ ...getOmniChainExecutorOwnerRevokePermissions(ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER, ARBITRUMSEPOLIA_GUARDIAN),
350
+ ],
351
+ };
352
+
353
+ function splitPermissions(
354
+ array: ACMCommandsAggregator.PermissionStruct[],
355
+ chunkSize: number = 200,
356
+ ): ACMCommandsAggregator.PermissionStruct[][] {
357
+ const result: ACMCommandsAggregator.PermissionStruct[][] = [];
358
+
359
+ for (let i = 0; i < array.length; i += chunkSize) {
360
+ const chunk = array.slice(i, i + chunkSize);
361
+ result.push(chunk);
362
+ }
363
+
364
+ return result;
365
+ }
366
+
367
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
368
+ const acmCommandsAggregator: ACMCommandsAggregator = await ethers.getContract("ACMCommandsAggregator");
369
+ const networkGrantPermissions = grantPermissions[hre.network.name];
370
+
371
+ for (const permission of networkGrantPermissions) {
372
+ if (Object.values(AccountType).includes(permission[2] as AccountType)) {
373
+ const timelock = await ethers.getContract(permission[2]);
374
+ permission[2] = timelock.address;
375
+ }
376
+ }
377
+
378
+ const _grantPermissions: ACMCommandsAggregator.PermissionStruct[] = networkGrantPermissions.map(permission => ({
379
+ contractAddress: permission[0],
380
+ functionSig: permission[1],
381
+ account: permission[2],
382
+ }));
383
+
384
+ const grantChunks = splitPermissions(_grantPermissions);
385
+ const grantIndexes: string[] = [];
386
+
387
+ for (const chunk of grantChunks) {
388
+ const tx = await acmCommandsAggregator.addGrantPermissions(chunk);
389
+
390
+ const receipt = await tx.wait();
391
+ const events = receipt.events?.filter(event => event.event === "GrantPermissionsAdded");
392
+ grantIndexes.push(events?.[0].args?.index.toString());
393
+ }
394
+
395
+ console.log("Grant Permissions added with indexes: ", grantIndexes.toString());
396
+
397
+ const networkRevokePermissions = revokePermissions[hre.network.name];
398
+
399
+ for (const permission of networkRevokePermissions) {
400
+ if (Object.values(AccountType).includes(permission[2] as AccountType)) {
401
+ const timelock = await ethers.getContract(permission[2]);
402
+ permission[2] = timelock.address;
403
+ }
404
+ }
405
+
406
+ const _revokePermissions: ACMCommandsAggregator.PermissionStruct[] = networkRevokePermissions.map(permission => ({
407
+ contractAddress: permission[0],
408
+ functionSig: permission[1],
409
+ account: permission[2],
410
+ }));
411
+
412
+ const revokeChunks = splitPermissions(_revokePermissions);
413
+ const revokeIndexes: string[] = [];
414
+
415
+ for (const chunk of revokeChunks) {
416
+ const tx = await acmCommandsAggregator.addRevokePermissions(chunk);
417
+
418
+ const receipt = await tx.wait();
419
+ const events = receipt.events?.filter(event => event.event === "RevokePermissionsAdded");
420
+ revokeIndexes.push(events?.[0].args?.index.toString());
421
+ }
422
+
423
+ console.log("Revoke Permissions added with indexes: ", revokeIndexes.toString());
424
+ };
425
+
426
+ func.tags = ["ACMCommandsAggregatorConfigure"];
427
+
428
+ func.skip = async (hre: HardhatRuntimeEnvironment) =>
429
+ Object.keys(grantPermissions).concat(Object.keys(revokePermissions)).indexOf(hre.network.name) === -1;
430
+ export default func;