@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
@@ -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;
@@ -0,0 +1,122 @@
1
+ import { ethers, network } from "hardhat";
2
+ import { DeployFunction } from "hardhat-deploy/types";
3
+ import { HardhatRuntimeEnvironment } from "hardhat/types";
4
+ import { ACMCommandsAggregator } from "typechain";
5
+
6
+ import { SUPPORTED_NETWORKS } from "../helpers/deploy/constants";
7
+ import { guardian } from "../helpers/deploy/deploymentUtils";
8
+
9
+ const functionSignatures = {
10
+ normal: [
11
+ "setSendVersion(uint16)",
12
+ "setReceiveVersion(uint16)",
13
+ "setMaxDailyReceiveLimit(uint256)",
14
+ "pause()",
15
+ "setPrecrime(address)",
16
+ "setMinDstGas(uint16,uint16,uint256)",
17
+ "setPayloadSizeLimit(uint16,uint256)",
18
+ "setConfig(uint16,uint16,uint256,bytes)",
19
+ "addTimelocks(address[])",
20
+ "setTrustedRemoteAddress(uint16,bytes)",
21
+ "setTimelockPendingAdmin(address,uint8)",
22
+ "retryMessage(uint16,bytes,uint64,bytes)",
23
+ "setGuardian(address)",
24
+ "setSrcChainId(uint16)",
25
+ "transferBridgeOwnership(address)",
26
+ ],
27
+ fasttrack: [
28
+ "setReceiveVersion(uint16)",
29
+ "setMaxDailyReceiveLimit(uint256)",
30
+ "pause()",
31
+ "setConfig(uint16,uint16,uint256,bytes)",
32
+ "addTimelocks(address[])",
33
+ "retryMessage(uint16,bytes,uint64,bytes)",
34
+ ],
35
+ critical: [
36
+ "setReceiveVersion(uint16)",
37
+ "setMaxDailyReceiveLimit(uint256)",
38
+ "pause()",
39
+ "setConfig(uint16,uint16,uint256,bytes)",
40
+ "addTimelocks(address[])",
41
+ "retryMessage(uint16,bytes,uint64,bytes)",
42
+ ],
43
+ guardian: [
44
+ "setReceiveVersion(uint16)",
45
+ "forceResumeReceive(uint16,bytes)",
46
+ "setMaxDailyReceiveLimit(uint256)",
47
+ "pause()",
48
+ "unpause()",
49
+ "setConfig(uint16,uint16,uint256,bytes)",
50
+ "addTimelocks(address[])",
51
+ "setTrustedRemoteAddress(uint16,bytes)",
52
+ "setTimelockPendingAdmin(address,uint8)",
53
+ "retryMessage(uint16,bytes,uint64,bytes)",
54
+ "setSrcChainId(uint16)",
55
+ "transferBridgeOwnership(address)",
56
+ ],
57
+ };
58
+
59
+ const grantPermissions = (
60
+ OMNICHAIN_EXECUTOR_OWNER: string,
61
+ functionSigs: string[],
62
+ account: string,
63
+ ): ACMCommandsAggregator.PermissionStruct[] =>
64
+ functionSigs.map(functionSig => ({
65
+ contractAddress: OMNICHAIN_EXECUTOR_OWNER,
66
+ functionSig: functionSig,
67
+ account: account,
68
+ }));
69
+
70
+ const func: DeployFunction = async function () {
71
+ const NORMAL_TIMELOCK = await ethers.getContract("NormalTimelock");
72
+ const FASTTRACK_TIMELOCK = await ethers.getContract("FastTrackTimelock");
73
+ const CRITICAL_TIMELOCK = await ethers.getContract("CriticalTimelock");
74
+ const OMNICHAIN_EXECUTOR_OWNER = await ethers.getContract("OmnichainExecutorOwner");
75
+ const GUARDIAN = await guardian(network.name as SUPPORTED_NETWORKS);
76
+ const acmCommandsAggregator: ACMCommandsAggregator = await ethers.getContract("ACMCommandsAggregator");
77
+
78
+ // Grant permissions for each category
79
+ const normalGrantPermissions = grantPermissions(
80
+ OMNICHAIN_EXECUTOR_OWNER.address,
81
+ functionSignatures.normal,
82
+ NORMAL_TIMELOCK.address,
83
+ );
84
+ const fasttrackGrantPermissions = grantPermissions(
85
+ OMNICHAIN_EXECUTOR_OWNER.address,
86
+ functionSignatures.fasttrack,
87
+ FASTTRACK_TIMELOCK.address,
88
+ );
89
+ const criticalGrantPermissions = grantPermissions(
90
+ OMNICHAIN_EXECUTOR_OWNER.address,
91
+ functionSignatures.critical,
92
+ CRITICAL_TIMELOCK.address,
93
+ );
94
+ const guardianGrantPermissions = grantPermissions(
95
+ OMNICHAIN_EXECUTOR_OWNER.address,
96
+ functionSignatures.guardian,
97
+ GUARDIAN,
98
+ );
99
+
100
+ const allGrantPermissions: ACMCommandsAggregator.PermissionStruct[] = [
101
+ ...normalGrantPermissions,
102
+ ...fasttrackGrantPermissions,
103
+ ...criticalGrantPermissions,
104
+ ...guardianGrantPermissions,
105
+ ];
106
+
107
+ try {
108
+ const tx = await acmCommandsAggregator.addGrantPermissions(allGrantPermissions);
109
+
110
+ const receipt = await tx.wait();
111
+ const events = receipt.events?.filter(event => event.event === "GrantPermissionsAdded");
112
+ console.log(`Grant Permissions for ${network.name} added with indexes: `, events?.[0].args?.index.toString());
113
+ } catch (error) {
114
+ console.error("Error adding grant permissions:", error);
115
+ }
116
+ };
117
+ func.tags = ["multichain-governance-permissions"];
118
+
119
+ func.skip = async (hre: HardhatRuntimeEnvironment) =>
120
+ hre.network.name === "bsctestnet" || hre.network.name === "bscmainnet";
121
+
122
+ export default func;