@venusprotocol/governance-contracts 2.4.0 → 2.5.0-dev.2

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 (138) 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/deploy/009-initial-configuration-multichain-governance.ts +122 -0
  58. package/deployments/arbitrumone/ACMCommandsAggregator.json +366 -0
  59. package/deployments/arbitrumone/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  60. package/deployments/arbitrumone.json +245 -0
  61. package/deployments/arbitrumone_addresses.json +1 -0
  62. package/deployments/arbitrumsepolia/ACMCommandsAggregator.json +366 -0
  63. package/deployments/arbitrumsepolia/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  64. package/deployments/arbitrumsepolia.json +245 -0
  65. package/deployments/arbitrumsepolia_addresses.json +1 -0
  66. package/deployments/ethereum/ACMCommandsAggregator.json +366 -0
  67. package/deployments/ethereum/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  68. package/deployments/ethereum.json +245 -0
  69. package/deployments/ethereum_addresses.json +1 -0
  70. package/deployments/opbnbmainnet/ACMCommandsAggregator.json +366 -0
  71. package/deployments/opbnbmainnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  72. package/deployments/opbnbmainnet.json +245 -0
  73. package/deployments/opbnbmainnet_addresses.json +1 -0
  74. package/deployments/opbnbtestnet/ACMCommandsAggregator.json +366 -0
  75. package/deployments/opbnbtestnet/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  76. package/deployments/opbnbtestnet.json +245 -0
  77. package/deployments/opbnbtestnet_addresses.json +1 -0
  78. package/deployments/sepolia/ACMCommandsAggregator.json +365 -0
  79. package/deployments/sepolia/solcInputs/06fc2b6f9f7e0e63c70222b8e0b27702.json +40 -0
  80. package/deployments/sepolia/solcInputs/8462bae4a0ff7e7203ecab090cdf091c.json +151 -0
  81. package/deployments/sepolia/solcInputs/c5ad99afd830582b4e18b887fc15722a.json +40 -0
  82. package/deployments/sepolia/solcInputs/d1b723608bc0e5c4e69b41a531154535.json +40 -0
  83. package/deployments/sepolia.json +245 -0
  84. package/deployments/sepolia_addresses.json +1 -0
  85. package/deployments/zksyncsepolia/ACMCommandsAggregator.json +465 -0
  86. package/deployments/zksyncsepolia/solcInputs/0be793521835d17f112344b451092640.json +43 -0
  87. package/deployments/zksyncsepolia.json +245 -0
  88. package/deployments/zksyncsepolia_addresses.json +1 -0
  89. package/dist/deploy/007-acm-commands-aggregator.d.ts +4 -0
  90. package/dist/deploy/007-acm-commands-aggregator.d.ts.map +1 -0
  91. package/dist/deploy/007-acm-commands-aggregator.js +30 -0
  92. package/dist/deploy/007-acm-commands-aggregator.js.map +1 -0
  93. package/dist/deploy/008-configure-acm-commands-aggregator.d.ts +4 -0
  94. package/dist/deploy/008-configure-acm-commands-aggregator.d.ts.map +1 -0
  95. package/dist/deploy/008-configure-acm-commands-aggregator.js +361 -0
  96. package/dist/deploy/008-configure-acm-commands-aggregator.js.map +1 -0
  97. package/dist/deploy/009-initial-configuration-multichain-governance.d.ts +4 -0
  98. package/dist/deploy/009-initial-configuration-multichain-governance.d.ts.map +1 -0
  99. package/dist/deploy/009-initial-configuration-multichain-governance.js +101 -0
  100. package/dist/deploy/009-initial-configuration-multichain-governance.js.map +1 -0
  101. package/dist/helpers/permissions.d.ts +46 -0
  102. package/dist/helpers/permissions.d.ts.map +1 -0
  103. package/dist/helpers/permissions.js +399 -0
  104. package/dist/helpers/permissions.js.map +1 -0
  105. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.d.ts +229 -0
  106. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.d.ts.map +1 -0
  107. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.js +3 -0
  108. package/dist/typechain/contracts/Utils/ACMCommandsAggregator.js.map +1 -0
  109. package/dist/typechain/contracts/Utils/index.d.ts +2 -0
  110. package/dist/typechain/contracts/Utils/index.d.ts.map +1 -0
  111. package/dist/typechain/contracts/Utils/index.js +3 -0
  112. package/dist/typechain/contracts/Utils/index.js.map +1 -0
  113. package/dist/typechain/contracts/index.d.ts +2 -0
  114. package/dist/typechain/contracts/index.d.ts.map +1 -1
  115. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.d.ts +206 -0
  116. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.d.ts.map +1 -0
  117. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.js +280 -0
  118. package/dist/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.js.map +1 -0
  119. package/dist/typechain/factories/contracts/Utils/index.d.ts +2 -0
  120. package/dist/typechain/factories/contracts/Utils/index.d.ts.map +1 -0
  121. package/dist/typechain/factories/contracts/Utils/index.js +6 -0
  122. package/dist/typechain/factories/contracts/Utils/index.js.map +1 -0
  123. package/dist/typechain/factories/contracts/index.d.ts +1 -0
  124. package/dist/typechain/factories/contracts/index.d.ts.map +1 -1
  125. package/dist/typechain/factories/contracts/index.js +2 -1
  126. package/dist/typechain/factories/contracts/index.js.map +1 -1
  127. package/dist/typechain/index.d.ts +2 -0
  128. package/dist/typechain/index.d.ts.map +1 -1
  129. package/dist/typechain/index.js +3 -1
  130. package/dist/typechain/index.js.map +1 -1
  131. package/package.json +1 -1
  132. package/typechain/contracts/Utils/ACMCommandsAggregator.ts +440 -0
  133. package/typechain/contracts/Utils/index.ts +4 -0
  134. package/typechain/contracts/index.ts +3 -0
  135. package/typechain/factories/contracts/Utils/ACMCommandsAggregator__factory.ts +314 -0
  136. package/typechain/factories/contracts/Utils/index.ts +4 -0
  137. package/typechain/factories/contracts/index.ts +1 -0
  138. package/typechain/index.ts +2 -0
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
+ }
@@ -0,0 +1,251 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ACMCommandsAggregator",
4
+ "sourceName": "contracts/Utils/ACMCommandsAggregator.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IAccessControlManagerV8",
10
+ "name": "_acm",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "EmptyPermissions",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "ZeroAddressNotAllowed",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "anonymous": false,
29
+ "inputs": [
30
+ {
31
+ "indexed": false,
32
+ "internalType": "uint256",
33
+ "name": "index",
34
+ "type": "uint256"
35
+ }
36
+ ],
37
+ "name": "GrantPermissionsAdded",
38
+ "type": "event"
39
+ },
40
+ {
41
+ "anonymous": false,
42
+ "inputs": [
43
+ {
44
+ "indexed": false,
45
+ "internalType": "uint256",
46
+ "name": "index",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "GrantPermissionsExecuted",
51
+ "type": "event"
52
+ },
53
+ {
54
+ "anonymous": false,
55
+ "inputs": [
56
+ {
57
+ "indexed": false,
58
+ "internalType": "uint256",
59
+ "name": "index",
60
+ "type": "uint256"
61
+ }
62
+ ],
63
+ "name": "RevokePermissionsAdded",
64
+ "type": "event"
65
+ },
66
+ {
67
+ "anonymous": false,
68
+ "inputs": [
69
+ {
70
+ "indexed": false,
71
+ "internalType": "uint256",
72
+ "name": "index",
73
+ "type": "uint256"
74
+ }
75
+ ],
76
+ "name": "RevokePermissionsExecuted",
77
+ "type": "event"
78
+ },
79
+ {
80
+ "inputs": [],
81
+ "name": "ACM",
82
+ "outputs": [
83
+ {
84
+ "internalType": "contract IAccessControlManagerV8",
85
+ "name": "",
86
+ "type": "address"
87
+ }
88
+ ],
89
+ "stateMutability": "view",
90
+ "type": "function"
91
+ },
92
+ {
93
+ "inputs": [
94
+ {
95
+ "components": [
96
+ {
97
+ "internalType": "address",
98
+ "name": "contractAddress",
99
+ "type": "address"
100
+ },
101
+ {
102
+ "internalType": "string",
103
+ "name": "functionSig",
104
+ "type": "string"
105
+ },
106
+ {
107
+ "internalType": "address",
108
+ "name": "account",
109
+ "type": "address"
110
+ }
111
+ ],
112
+ "internalType": "struct ACMCommandsAggregator.Permission[]",
113
+ "name": "_permissions",
114
+ "type": "tuple[]"
115
+ }
116
+ ],
117
+ "name": "addGrantPermissions",
118
+ "outputs": [],
119
+ "stateMutability": "nonpayable",
120
+ "type": "function"
121
+ },
122
+ {
123
+ "inputs": [
124
+ {
125
+ "components": [
126
+ {
127
+ "internalType": "address",
128
+ "name": "contractAddress",
129
+ "type": "address"
130
+ },
131
+ {
132
+ "internalType": "string",
133
+ "name": "functionSig",
134
+ "type": "string"
135
+ },
136
+ {
137
+ "internalType": "address",
138
+ "name": "account",
139
+ "type": "address"
140
+ }
141
+ ],
142
+ "internalType": "struct ACMCommandsAggregator.Permission[]",
143
+ "name": "_permissions",
144
+ "type": "tuple[]"
145
+ }
146
+ ],
147
+ "name": "addRevokePermissions",
148
+ "outputs": [],
149
+ "stateMutability": "nonpayable",
150
+ "type": "function"
151
+ },
152
+ {
153
+ "inputs": [
154
+ {
155
+ "internalType": "uint256",
156
+ "name": "index",
157
+ "type": "uint256"
158
+ }
159
+ ],
160
+ "name": "executeGrantPermissions",
161
+ "outputs": [],
162
+ "stateMutability": "nonpayable",
163
+ "type": "function"
164
+ },
165
+ {
166
+ "inputs": [
167
+ {
168
+ "internalType": "uint256",
169
+ "name": "index",
170
+ "type": "uint256"
171
+ }
172
+ ],
173
+ "name": "executeRevokePermissions",
174
+ "outputs": [],
175
+ "stateMutability": "nonpayable",
176
+ "type": "function"
177
+ },
178
+ {
179
+ "inputs": [
180
+ {
181
+ "internalType": "uint256",
182
+ "name": "",
183
+ "type": "uint256"
184
+ },
185
+ {
186
+ "internalType": "uint256",
187
+ "name": "",
188
+ "type": "uint256"
189
+ }
190
+ ],
191
+ "name": "grantPermissions",
192
+ "outputs": [
193
+ {
194
+ "internalType": "address",
195
+ "name": "contractAddress",
196
+ "type": "address"
197
+ },
198
+ {
199
+ "internalType": "string",
200
+ "name": "functionSig",
201
+ "type": "string"
202
+ },
203
+ {
204
+ "internalType": "address",
205
+ "name": "account",
206
+ "type": "address"
207
+ }
208
+ ],
209
+ "stateMutability": "view",
210
+ "type": "function"
211
+ },
212
+ {
213
+ "inputs": [
214
+ {
215
+ "internalType": "uint256",
216
+ "name": "",
217
+ "type": "uint256"
218
+ },
219
+ {
220
+ "internalType": "uint256",
221
+ "name": "",
222
+ "type": "uint256"
223
+ }
224
+ ],
225
+ "name": "revokePermissions",
226
+ "outputs": [
227
+ {
228
+ "internalType": "address",
229
+ "name": "contractAddress",
230
+ "type": "address"
231
+ },
232
+ {
233
+ "internalType": "string",
234
+ "name": "functionSig",
235
+ "type": "string"
236
+ },
237
+ {
238
+ "internalType": "address",
239
+ "name": "account",
240
+ "type": "address"
241
+ }
242
+ ],
243
+ "stateMutability": "view",
244
+ "type": "function"
245
+ }
246
+ ],
247
+ "bytecode": "0x60a0604052348015600f57600080fd5b506040516110c73803806110c7833981016040819052602c91606c565b6033816043565b6001600160a01b0316608052609a565b6001600160a01b0381166069576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600060208284031215607d57600080fd5b81516001600160a01b0381168114609357600080fd5b9392505050565b6080516110046100c360003960008181610100015281816102de0152610a0101526110046000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639d6c76b81161005b5780639d6c76b8146100d5578063de46a235146100e8578063f9b80da1146100fb578063ff1575e11461014757600080fd5b806322473d8c14610082578063514aab87146100975780635666a5ea146100c2575b600080fd5b610095610090366004610ab8565b61015a565b005b6100aa6100a5366004610ad1565b61038d565b6040516100b993929190610af3565b60405180910390f35b6100956100d0366004610c59565b610492565b6100956100e3366004610c59565b610689565b6100956100f6366004610ab8565b61087f565b6101227f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b9565b6100aa610155366004610ad1565b610aa8565b60006001828154811061016f5761016f610de1565b600091825260208220015491505b818110156103545760006001848154811061019a5761019a610de1565b9060005260206000200182815481106101b5576101b5610de1565b60009182526020918290206040805160608101909152600390920201805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161020290610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461022e90610e10565b801561027b5780601f106102505761010080835404028352916020019161027b565b820191906000526020600020905b81548152906001019060200180831161025e57829003601f168201915b50505091835250506002919091015473ffffffffffffffffffffffffffffffffffffffff90811660209283015282519183015160408085015190517f545f7a320000000000000000000000000000000000000000000000000000000081529495507f00000000000000000000000000000000000000000000000000000000000000009092169363545f7a329361031693909291600401610af3565b600060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050505080600101905061017d565b506040518281527f1382323d6618527d8b03daa05db815f0490966e8b80679fe5ad3d868f84e1a71906020015b60405180910390a15050565b6000828154811061039d57600080fd5b9060005260206000200181815481106103b557600080fd5b60009182526020909120600390910201805460018201805473ffffffffffffffffffffffffffffffffffffffff90921694509192506103f390610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90610e10565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b5050506002909301549192505073ffffffffffffffffffffffffffffffffffffffff1683565b80516000036104cd576040517f4494013c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805480820182556000918252905b825181101561065857600182815481106104f9576104f9610de1565b90600052602060002001604051806060016040528085848151811061052057610520610de1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16815260200185848151811061055957610559610de1565b602002602001015160200151815260200185848151811061057c5761057c610de1565b6020908102919091018101516040015173ffffffffffffffffffffffffffffffffffffffff908116909252835460018082018655600095865294829020845160039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190931617825582015191929091908201906106019082610eb4565b5060409190910151600290910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001016104dd565b506040518181527f75922591bf2cec980645dc4a32bb7d5e8da9a15fda86dacf06f8402cecd1478f90602001610381565b80516000036106c4576040517f4494013c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054600181018255818052905b825181101561084e57600082815481106106ef576106ef610de1565b90600052602060002001604051806060016040528085848151811061071657610716610de1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16815260200185848151811061074f5761074f610de1565b602002602001015160200151815260200185848151811061077257610772610de1565b6020908102919091018101516040015173ffffffffffffffffffffffffffffffffffffffff908116909252835460018082018655600095865294829020845160039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190931617825582015191929091908201906107f79082610eb4565b5060409190910151600290910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001016106d3565b506040518181527ff8ca6ea7cc31be8572501c37ef5e9e8298be717fb881e0b1ca785aecc4d25e9f90602001610381565b600080828154811061089357610893610de1565b600091825260208220015491505b81811015610a775760008084815481106108bd576108bd610de1565b9060005260206000200182815481106108d8576108d8610de1565b60009182526020918290206040805160608101909152600390920201805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161092590610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461095190610e10565b801561099e5780601f106109735761010080835404028352916020019161099e565b820191906000526020600020905b81548152906001019060200180831161098157829003601f168201915b50505091835250506002919091015473ffffffffffffffffffffffffffffffffffffffff90811660209283015282519183015160408085015190517f584f6b600000000000000000000000000000000000000000000000000000000081529495507f00000000000000000000000000000000000000000000000000000000000000009092169363584f6b6093610a3993909291600401610af3565b600060405180830381600087803b158015610a5357600080fd5b505af1158015610a67573d6000803e3d6000fd5b50505050508060010190506108a1565b506040518281527f01a805f459381af632ecab72ec192c3f9a4c72d26be089026ffd6636d82de98890602001610381565b6001828154811061039d57600080fd5b600060208284031215610aca57600080fd5b5035919050565b60008060408385031215610ae457600080fd5b50508035926020909101359150565b600073ffffffffffffffffffffffffffffffffffffffff8086168352602060606020850152855180606086015260005b81811015610b3f57878101830151868201608001528201610b23565b5060006080828701015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011686010193505050808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610bdb57610bdb610b89565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c2857610c28610b89565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c5457600080fd5b919050565b60006020808385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b818501915085601f830112610c9857600080fd5b813581811115610caa57610caa610b89565b8060051b610cb9858201610be1565b9182528381018501918581019089841115610cd357600080fd5b86860192505b83831015610dd457823585811115610cf057600080fd5b86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06060828d0382011215610d265760008081fd5b610d2e610bb8565b610d398a8401610c30565b815260408084013589811115610d4f5760008081fd5b8401603f81018f13610d615760008081fd5b8b8101358a811115610d7557610d75610b89565b610d858d86601f84011601610be1565b94508085528f83828401011115610d9c5760008081fd5b808383018e87013760008d82870101525050828b830152610dbf60608501610c30565b90820152845250509186019190860190610cd9565b9998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680610e2457607f821691505b602082108103610e5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610eaf576000816000526020600020601f850160051c81016020861015610e8c5750805b601f850160051c820191505b81811015610eab57828155600101610e98565b5050505b505050565b815167ffffffffffffffff811115610ece57610ece610b89565b610ee281610edc8454610e10565b84610e63565b602080601f831160018114610f355760008415610eff5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610eab565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610f8257888601518255948401946001909101908401610f63565b5085821015610fbe57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122090d4936e163063dfe747da5bf04cc06002b17436a13e78a30b2797e6219ebb2264736f6c63430008190033",
248
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80639d6c76b81161005b5780639d6c76b8146100d5578063de46a235146100e8578063f9b80da1146100fb578063ff1575e11461014757600080fd5b806322473d8c14610082578063514aab87146100975780635666a5ea146100c2575b600080fd5b610095610090366004610ab8565b61015a565b005b6100aa6100a5366004610ad1565b61038d565b6040516100b993929190610af3565b60405180910390f35b6100956100d0366004610c59565b610492565b6100956100e3366004610c59565b610689565b6100956100f6366004610ab8565b61087f565b6101227f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b9565b6100aa610155366004610ad1565b610aa8565b60006001828154811061016f5761016f610de1565b600091825260208220015491505b818110156103545760006001848154811061019a5761019a610de1565b9060005260206000200182815481106101b5576101b5610de1565b60009182526020918290206040805160608101909152600390920201805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161020290610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461022e90610e10565b801561027b5780601f106102505761010080835404028352916020019161027b565b820191906000526020600020905b81548152906001019060200180831161025e57829003601f168201915b50505091835250506002919091015473ffffffffffffffffffffffffffffffffffffffff90811660209283015282519183015160408085015190517f545f7a320000000000000000000000000000000000000000000000000000000081529495507f00000000000000000000000000000000000000000000000000000000000000009092169363545f7a329361031693909291600401610af3565b600060405180830381600087803b15801561033057600080fd5b505af1158015610344573d6000803e3d6000fd5b505050505080600101905061017d565b506040518281527f1382323d6618527d8b03daa05db815f0490966e8b80679fe5ad3d868f84e1a71906020015b60405180910390a15050565b6000828154811061039d57600080fd5b9060005260206000200181815481106103b557600080fd5b60009182526020909120600390910201805460018201805473ffffffffffffffffffffffffffffffffffffffff90921694509192506103f390610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90610e10565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b5050506002909301549192505073ffffffffffffffffffffffffffffffffffffffff1683565b80516000036104cd576040517f4494013c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805480820182556000918252905b825181101561065857600182815481106104f9576104f9610de1565b90600052602060002001604051806060016040528085848151811061052057610520610de1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16815260200185848151811061055957610559610de1565b602002602001015160200151815260200185848151811061057c5761057c610de1565b6020908102919091018101516040015173ffffffffffffffffffffffffffffffffffffffff908116909252835460018082018655600095865294829020845160039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190931617825582015191929091908201906106019082610eb4565b5060409190910151600290910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001016104dd565b506040518181527f75922591bf2cec980645dc4a32bb7d5e8da9a15fda86dacf06f8402cecd1478f90602001610381565b80516000036106c4576040517f4494013c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054600181018255818052905b825181101561084e57600082815481106106ef576106ef610de1565b90600052602060002001604051806060016040528085848151811061071657610716610de1565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16815260200185848151811061074f5761074f610de1565b602002602001015160200151815260200185848151811061077257610772610de1565b6020908102919091018101516040015173ffffffffffffffffffffffffffffffffffffffff908116909252835460018082018655600095865294829020845160039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190931617825582015191929091908201906107f79082610eb4565b5060409190910151600290910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001016106d3565b506040518181527ff8ca6ea7cc31be8572501c37ef5e9e8298be717fb881e0b1ca785aecc4d25e9f90602001610381565b600080828154811061089357610893610de1565b600091825260208220015491505b81811015610a775760008084815481106108bd576108bd610de1565b9060005260206000200182815481106108d8576108d8610de1565b60009182526020918290206040805160608101909152600390920201805473ffffffffffffffffffffffffffffffffffffffff168252600181018054929391929184019161092590610e10565b80601f016020809104026020016040519081016040528092919081815260200182805461095190610e10565b801561099e5780601f106109735761010080835404028352916020019161099e565b820191906000526020600020905b81548152906001019060200180831161098157829003601f168201915b50505091835250506002919091015473ffffffffffffffffffffffffffffffffffffffff90811660209283015282519183015160408085015190517f584f6b600000000000000000000000000000000000000000000000000000000081529495507f00000000000000000000000000000000000000000000000000000000000000009092169363584f6b6093610a3993909291600401610af3565b600060405180830381600087803b158015610a5357600080fd5b505af1158015610a67573d6000803e3d6000fd5b50505050508060010190506108a1565b506040518281527f01a805f459381af632ecab72ec192c3f9a4c72d26be089026ffd6636d82de98890602001610381565b6001828154811061039d57600080fd5b600060208284031215610aca57600080fd5b5035919050565b60008060408385031215610ae457600080fd5b50508035926020909101359150565b600073ffffffffffffffffffffffffffffffffffffffff8086168352602060606020850152855180606086015260005b81811015610b3f57878101830151868201608001528201610b23565b5060006080828701015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011686010193505050808416604084015250949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610bdb57610bdb610b89565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c2857610c28610b89565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c5457600080fd5b919050565b60006020808385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b818501915085601f830112610c9857600080fd5b813581811115610caa57610caa610b89565b8060051b610cb9858201610be1565b9182528381018501918581019089841115610cd357600080fd5b86860192505b83831015610dd457823585811115610cf057600080fd5b86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06060828d0382011215610d265760008081fd5b610d2e610bb8565b610d398a8401610c30565b815260408084013589811115610d4f5760008081fd5b8401603f81018f13610d615760008081fd5b8b8101358a811115610d7557610d75610b89565b610d858d86601f84011601610be1565b94508085528f83828401011115610d9c5760008081fd5b808383018e87013760008d82870101525050828b830152610dbf60608501610c30565b90820152845250509186019190860190610cd9565b9998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680610e2457607f821691505b602082108103610e5d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610eaf576000816000526020600020601f850160051c81016020861015610e8c5750805b601f850160051c820191505b81811015610eab57828155600101610e98565b5050505b505050565b815167ffffffffffffffff811115610ece57610ece610b89565b610ee281610edc8454610e10565b84610e63565b602080601f831160018114610f355760008415610eff5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610eab565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610f8257888601518255948401946001909101908401610f63565b5085821015610fbe57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122090d4936e163063dfe747da5bf04cc06002b17436a13e78a30b2797e6219ebb2264736f6c63430008190033",
249
+ "linkReferences": {},
250
+ "deployedLinkReferences": {}
251
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/d2df901c99f2b9e01cfffb9042af258b.json"
3
+ "buildInfo": "../../../../build-info/55c66c9e0f80b7f400934081cbca14cd.json"
4
4
  }
@@ -0,0 +1,153 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ pragma solidity 0.8.25;
3
+
4
+ import { IAccessControlManagerV8 } from "../Governance/IAccessControlManagerV8.sol";
5
+ import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol";
6
+
7
+ /**
8
+ * @title ACMCommandsAggregator
9
+ * @author Venus
10
+ * @notice This contract is a helper to aggregate multiple grant and revoke permissions in batches and execute them in one go.
11
+ */
12
+ contract ACMCommandsAggregator {
13
+ /*
14
+ * @notice Struct to store permission details
15
+ */
16
+ struct Permission {
17
+ /*
18
+ * @notice Address of the contract
19
+ */
20
+ address contractAddress;
21
+ /*
22
+ * @notice Function signature
23
+ */
24
+ string functionSig;
25
+ /*
26
+ * @notice Address of the account
27
+ */
28
+ address account;
29
+ }
30
+
31
+ /**
32
+ * @notice Access control manager contract
33
+ */
34
+ IAccessControlManagerV8 public immutable ACM;
35
+
36
+ /*
37
+ * @notice 2D array to store grant permissions in batches
38
+ */
39
+ Permission[][] public grantPermissions;
40
+
41
+ /*
42
+ * @notice 2D array to store revoke permissions in batches
43
+ */
44
+ Permission[][] public revokePermissions;
45
+
46
+ /*
47
+ * @notice Event emitted when grant permissions are added
48
+ */
49
+ event GrantPermissionsAdded(uint256 index);
50
+
51
+ /*
52
+ * @notice Event emitted when revoke permissions are added
53
+ */
54
+ event RevokePermissionsAdded(uint256 index);
55
+
56
+ /*
57
+ * @notice Event emitted when grant permissions are executed
58
+ */
59
+ event GrantPermissionsExecuted(uint256 index);
60
+
61
+ /*
62
+ * @notice Event emitted when revoke permissions are executed
63
+ */
64
+ event RevokePermissionsExecuted(uint256 index);
65
+
66
+ /*
67
+ * @notice Error to be thrown when permissions are empty
68
+ */
69
+ error EmptyPermissions();
70
+
71
+ /*
72
+ * @notice Constructor to set the access control manager
73
+ * @param _acm Address of the access control manager
74
+ */
75
+ constructor(IAccessControlManagerV8 _acm) {
76
+ ensureNonzeroAddress(address(_acm));
77
+ ACM = _acm;
78
+ }
79
+
80
+ /*
81
+ * @notice Function to add grant permissions
82
+ * @param _permissions Array of permissions
83
+ * @custom:event Emits GrantPermissionsAdded event
84
+ */
85
+ function addGrantPermissions(Permission[] memory _permissions) external {
86
+ if (_permissions.length == 0) {
87
+ revert EmptyPermissions();
88
+ }
89
+
90
+ uint256 index = grantPermissions.length;
91
+ grantPermissions.push();
92
+
93
+ for (uint256 i; i < _permissions.length; ++i) {
94
+ grantPermissions[index].push(
95
+ Permission(_permissions[i].contractAddress, _permissions[i].functionSig, _permissions[i].account)
96
+ );
97
+ }
98
+
99
+ emit GrantPermissionsAdded(index);
100
+ }
101
+
102
+ /*
103
+ * @notice Function to add revoke permissions
104
+ * @param _permissions Array of permissions
105
+ * @custom:event Emits RevokePermissionsAdded event
106
+ */
107
+ function addRevokePermissions(Permission[] memory _permissions) external {
108
+ if (_permissions.length == 0) {
109
+ revert EmptyPermissions();
110
+ }
111
+
112
+ uint256 index = revokePermissions.length;
113
+ revokePermissions.push();
114
+
115
+ for (uint256 i; i < _permissions.length; ++i) {
116
+ revokePermissions[index].push(
117
+ Permission(_permissions[i].contractAddress, _permissions[i].functionSig, _permissions[i].account)
118
+ );
119
+ }
120
+
121
+ emit RevokePermissionsAdded(index);
122
+ }
123
+
124
+ /*
125
+ * @notice Function to execute grant permissions
126
+ * @param index Index of the permissions array
127
+ * @custom:event Emits GrantPermissionsExecuted event
128
+ */
129
+ function executeGrantPermissions(uint256 index) external {
130
+ uint256 length = grantPermissions[index].length;
131
+ for (uint256 i; i < length; ++i) {
132
+ Permission memory permission = grantPermissions[index][i];
133
+ ACM.giveCallPermission(permission.contractAddress, permission.functionSig, permission.account);
134
+ }
135
+
136
+ emit GrantPermissionsExecuted(index);
137
+ }
138
+
139
+ /*
140
+ * @notice Function to execute revoke permissions
141
+ * @param index Index of the permissions array
142
+ * @custom:event Emits RevokePermissionsExecuted event
143
+ */
144
+ function executeRevokePermissions(uint256 index) external {
145
+ uint256 length = revokePermissions[index].length;
146
+ for (uint256 i; i < length; ++i) {
147
+ Permission memory permission = revokePermissions[index][i];
148
+ ACM.revokeCallPermission(permission.contractAddress, permission.functionSig, permission.account);
149
+ }
150
+
151
+ emit RevokePermissionsExecuted(index);
152
+ }
153
+ }
@@ -0,0 +1,23 @@
1
+ import { ethers } from "hardhat";
2
+ import { DeployFunction } from "hardhat-deploy/types";
3
+ import { HardhatRuntimeEnvironment } from "hardhat/types";
4
+
5
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
6
+ const { deployments, getNamedAccounts } = hre;
7
+ const { deploy } = deployments;
8
+ const { deployer } = await getNamedAccounts();
9
+
10
+ const acm = await ethers.getContract("AccessControlManager");
11
+
12
+ await deploy("ACMCommandsAggregator", {
13
+ contract: "ACMCommandsAggregator",
14
+ from: deployer,
15
+ args: [acm.address],
16
+ log: true,
17
+ autoMine: true,
18
+ });
19
+ };
20
+
21
+ func.tags = ["ACMCommandsAggregator"];
22
+
23
+ export default func;