@venusprotocol/governance-contracts 2.5.0-dev.5 → 2.5.0-dev.7

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 (49) hide show
  1. package/deploy/005-remote-timelock.ts +9 -0
  2. package/deploy/008-configure-acm-commands-aggregator.ts +43 -5
  3. package/deploy/010-redstone-and-vault-permission.ts +102 -0
  4. package/deployments/basesepolia/ACMCommandsAggregator.json +366 -0
  5. package/deployments/basesepolia/CriticalTimelock.json +691 -0
  6. package/deployments/basesepolia/DefaultProxyAdmin.json +200 -0
  7. package/deployments/basesepolia/FastTrackTimelock.json +691 -0
  8. package/deployments/basesepolia/NormalTimelock.json +691 -0
  9. package/deployments/basesepolia/OmnichainExecutorOwner.json +555 -0
  10. package/deployments/basesepolia/OmnichainExecutorOwner_Implementation.json +600 -0
  11. package/deployments/basesepolia/OmnichainExecutorOwner_Proxy.json +262 -0
  12. package/deployments/basesepolia/OmnichainGovernanceExecutor.json +1840 -0
  13. package/deployments/basesepolia/solcInputs/39b818455672acbd6d12469b0e689d7a.json +40 -0
  14. package/deployments/basesepolia/solcInputs/9f400d4fd6f6fcf916824838bc678e25.json +139 -0
  15. package/deployments/basesepolia/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  16. package/deployments/basesepolia/solcInputs/dd255b4e0156dfc73554b72a83ca02d8.json +40 -0
  17. package/deployments/basesepolia/solcInputs/e5536fb1b5f4db72d1c808989021a017.json +73 -0
  18. package/deployments/basesepolia.json +3859 -0
  19. package/deployments/basesepolia_addresses.json +10 -1
  20. package/deployments/bscmainnet/ACMCommandsAggregator.json +366 -0
  21. package/deployments/bscmainnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  22. package/deployments/bscmainnet.json +245 -0
  23. package/deployments/bscmainnet_addresses.json +1 -0
  24. package/deployments/bsctestnet/ACMCommandsAggregator.json +366 -0
  25. package/deployments/bsctestnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
  26. package/deployments/bsctestnet.json +245 -0
  27. package/deployments/bsctestnet_addresses.json +1 -0
  28. package/dist/deploy/005-remote-timelock.d.ts +1 -0
  29. package/dist/deploy/005-remote-timelock.d.ts.map +1 -1
  30. package/dist/deploy/005-remote-timelock.js +9 -0
  31. package/dist/deploy/005-remote-timelock.js.map +1 -1
  32. package/dist/deploy/008-configure-acm-commands-aggregator.d.ts.map +1 -1
  33. package/dist/deploy/008-configure-acm-commands-aggregator.js +43 -4
  34. package/dist/deploy/008-configure-acm-commands-aggregator.js.map +1 -1
  35. package/dist/deploy/010-redstone-and-vault-permission.d.ts +4 -0
  36. package/dist/deploy/010-redstone-and-vault-permission.d.ts.map +1 -0
  37. package/dist/deploy/010-redstone-and-vault-permission.js +75 -0
  38. package/dist/deploy/010-redstone-and-vault-permission.js.map +1 -0
  39. package/dist/deployments/bscmainnet.json +245 -0
  40. package/dist/deployments/bsctestnet.json +245 -0
  41. package/dist/helpers/Addresses.d.ts +76 -0
  42. package/dist/helpers/Addresses.d.ts.map +1 -0
  43. package/dist/helpers/Addresses.js +80 -0
  44. package/dist/helpers/Addresses.js.map +1 -0
  45. package/dist/helpers/permissions.d.ts +0 -1
  46. package/dist/helpers/permissions.d.ts.map +1 -1
  47. package/dist/helpers/permissions.js +1 -8
  48. package/dist/helpers/permissions.js.map +1 -1
  49. package/package.json +1 -1
@@ -13,6 +13,7 @@ export enum REMOTE_NETWORKS {
13
13
  ZKSYNCMAINNET = "zksyncmainnet",
14
14
  OPSEPOLIA = "opsepolia",
15
15
  OPMAINNET = "opmainnet",
16
+ BASESEPOLIA = "basesepolia",
16
17
  HARDHAT = "hardhat",
17
18
  }
18
19
  type DelayTypes = {
@@ -80,6 +81,11 @@ export const delayConfig: DelayConfig = {
80
81
  fast: 21600,
81
82
  critical: 3600,
82
83
  },
84
+ basesepolia: {
85
+ normal: 600,
86
+ fast: 300,
87
+ critical: 100,
88
+ },
83
89
  };
84
90
 
85
91
  const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
@@ -98,6 +104,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
98
104
  args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].normal],
99
105
  log: true,
100
106
  autoMine: true,
107
+ skipIfAlreadyDeployed: true,
101
108
  });
102
109
 
103
110
  await deploy(live ? "FastTrackTimelock" : "FastTrackTimelockRemote", {
@@ -106,6 +113,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
106
113
  args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].fast],
107
114
  log: true,
108
115
  autoMine: true,
116
+ skipIfAlreadyDeployed: true,
109
117
  });
110
118
 
111
119
  await deploy(live ? "CriticalTimelock" : "CriticalTimelockRemote", {
@@ -114,6 +122,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
114
122
  args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].critical],
115
123
  log: true,
116
124
  autoMine: true,
125
+ skipIfAlreadyDeployed: true,
117
126
  });
118
127
  };
119
128
 
@@ -28,7 +28,6 @@ import {
28
28
  getPrimeRevokePermissions,
29
29
  getProtocolShareReservePermissions,
30
30
  getRedstoneOraclePermissions,
31
- getRedstoneOracleRevokePermissions,
32
31
  getResilientOraclePermissions,
33
32
  getResilientOracleRevokePermissions,
34
33
  getRewardDistributorPermissionsBlockbased,
@@ -71,6 +70,10 @@ const SEPOLIA_sFrxETH_ORACLE = "0x61EB836afA467677e6b403D504fe69D6940e7996";
71
70
  const OPBNBTESTNET_RESILIENT_ORACLE = "0xEF4e53a9A4565ef243A2f0ee9a7fc2410E1aA623";
72
71
  const OPBNBTESTNET_BINANCE_ORACLE = "0x496B6b03469472572C47bdB407d5549b244a74F2";
73
72
  const OPBNBTESTNET_BOUND_VALIDATOR = "0x049537Bb065e6253e9D8D08B45Bf6b753657A746";
73
+ const BASESEPOLIA_RESILIENT_ORACLE = "0xC34871C982cf0Bc6e7aCa2c2670Bc319bDA1C744";
74
+ const BASESEPOLIA_CHAINLINK_ORACLE = "0x801aB33A69AD867500fbCda7b3dB66C73151494b";
75
+ const BASESEPOLIA_REDSTONE_ORACLE = "0x8267FE3f75E0A37ee34e113E767F9C9727206838";
76
+ const BASESEPOLIA_BOUND_VALIDATOR = "0xC76284488E57554A457A75a8b166fB2ADAB430dB";
74
77
 
75
78
  const ARBITRUMONE_XVS = "0xc1Eb7689147C81aC840d4FF0D298489fc7986d52";
76
79
  const ETHEREUM_XVS = "0xd3CC9d8f3689B83c91b7B59cAB4946B063EB894A";
@@ -84,6 +87,8 @@ const OPBNBMAINNET_XVS_BRIDGE_ADMIN = "0x52fcE05aDbf6103d71ed2BA8Be7A31728273183
84
87
  const ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN = "0xc94578caCC89a29B044a0a1D54d20d48A645E5C8";
85
88
  const SEPOLIA_XVS_BRIDGE_ADMIN = "0xd3c6bdeeadB2359F726aD4cF42EAa8B7102DAd9B";
86
89
  const OPBNBTESTNET_XVS_BRIDGE_ADMIN = "0x19252AFD0B2F539C400aEab7d460CBFbf74c17ff";
90
+ const BASESEPOLIA_XVS = "0xE657EDb5579B82135a274E85187927C42E38C021";
91
+ const BASESEPOLIA_XVS_BRIDGE_ADMIN = "0xE431E82d8fFfd81E7c082BeC7Fe2C306f5c988aD";
87
92
 
88
93
  const ARBITRUMONE_XVS_VAULT_PROXY = "0x8b79692AAB2822Be30a6382Eb04763A74752d5B4";
89
94
  const ETHEREUM_XVS_VAULT_PROXY = "0xA0882C2D5DF29233A092d2887A258C2b90e9b994";
@@ -91,6 +96,7 @@ const OPBNBMAINNET_XVS_VAULT_PROXY = "0x7dc969122450749A8B0777c0e324522d67737988
91
96
  const ARBITRUMSEPOLIA_XVS_VAULT_PROXY = "0x407507DC2809D3aa31D54EcA3BEde5C5c4C8A17F";
92
97
  const SEPOLIA_XVS_VAULT_PROXY = "0x1129f882eAa912aE6D4f6D445b2E2b1eCbA99fd5";
93
98
  const OPBNBTESTNET_XVS_VAULT_PROXY = "0xB14A0e72C5C202139F78963C9e89252c1ad16f01";
99
+ const BASESEPOLIA_XVS_VAULT_PROXY = "0x9b5D0aDfCEcC8ed422d714EcbcE2FFA436e269B8";
94
100
 
95
101
  const ETHEREUM_XVS_VAULT_TREASURY = "0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE";
96
102
  const SEPOLIA_XVS_VAULT_TREASURY = "0xCCB08e5107b406E67Ad8356023dd489CEbc79B40";
@@ -101,6 +107,7 @@ const OPBNBMAINNET_POOL_REGISTRY = "0x345a030Ad22e2317ac52811AC41C1A63cfa13aEe";
101
107
  const SEPOLIA_POOL_REGISTRY = "0x758f5715d817e02857Ba40889251201A5aE3E186";
102
108
  const OPBNBTESTNET_POOL_REGISTRY = "0x560eA4e1cC42591E9f5F5D83Ad2fd65F30128951";
103
109
  const ARBITRUMSEPOLIA_POOL_REGISTRY = "0xf93Df3135e0D555185c0BC888073374cA551C5fE";
110
+ const BASESEPOLIA_POOL_REGISTRY = "0xCa330282BEeb07a81963336d0bf8f5f34317916c";
104
111
 
105
112
  const ARBITRUMONE_PRIME = "0xFE69720424C954A2da05648a0FAC84f9bf11Ef49";
106
113
  const ARBITRUMONE_PLP = "0x86bf21dB200f29F21253080942Be8af61046Ec29";
@@ -118,6 +125,9 @@ const SEPOLIA_PLP = "0x15242a55Ad1842A1aEa09c59cf8366bD2f3CE9B4";
118
125
  const SEPOLIA_PSR = "0xbea70755cc3555708ca11219adB0db4C80F6721B";
119
126
  const OPBNBTESTNET_PSR = "0xc355dEb1A9289f8C58CFAa076EEdBf51F3A8Da7F";
120
127
  const SEPOLIA_CONVERTER_NETWORK = "0xB5A4208bFC4cC2C4670744849B8fC35B21A690Fa";
128
+ const BASESEPOLIA_PRIME = "0x15A1AC7fA14C5900Ba93853375d66b6bB6A83B50";
129
+ const BASESEPOLIA_PLP = "0xb5BA66311C5f9A5C9d3CeE0183F5426DD694dE37";
130
+ const BASESEPOLIA_PSR = "0x4Ae3D77Ece08Ec3E5f5842B195f746bd3bCb8d73";
121
131
 
122
132
  const ARBITRUMONE_GUARDIAN = "0x14e0E151b33f9802b3e75b621c1457afc44DcAA0";
123
133
  const ETHEREUM_GUARDIAN = "0x285960C5B22fD66A736C7136967A3eB15e93CC67";
@@ -125,10 +135,12 @@ const OPBNBMAINNET_GUARDIAN = "0xC46796a21a3A9FAB6546aF3434F2eBfFd0604207";
125
135
  const SEPOLIA_GUARDIAN = "0x94fa6078b6b8a26f0b6edffbe6501b22a10470fb";
126
136
  const OPBNBTESTNET_GUARDIAN = "0xb15f6EfEbC276A3b9805df81b5FB3D50C2A62BDf";
127
137
  const ARBITRUMSEPOLIA_GUARDIAN = "0x1426A5Ae009c4443188DA8793751024E358A61C2";
138
+ const BASESEPOLIA_GUARDIAN = "0xdf3b635d2b535f906BB02abb22AED71346E36a00";
128
139
 
129
140
  const ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xfCA70dd553b7dF6eB8F813CFEA6a9DD039448878";
130
141
  const SEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xf964158C67439D01e5f17F0A3F39DfF46823F27A";
131
142
  const OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER = "0x4F570240FF6265Fbb1C79cE824De6408F1948913";
143
+ const BASESEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xe3fb08B8817a0c88d39A4DA4eFFD586D3326b73b";
132
144
 
133
145
  const ETHEREUM_CONVERTERS: string[] = [
134
146
  "0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE",
@@ -257,6 +269,23 @@ const grantPermissions: Permissions = {
257
269
  ...getIRMPermissions(),
258
270
  ...getOmniChainExecutorOwnerPermissions(OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER, OPBNBTESTNET_GUARDIAN),
259
271
  ],
272
+ basesepolia: [
273
+ ...getResilientOraclePermissions(BASESEPOLIA_RESILIENT_ORACLE),
274
+ ...getChainlinkOraclePermissions(BASESEPOLIA_CHAINLINK_ORACLE),
275
+ ...getRedstoneOraclePermissions(BASESEPOLIA_REDSTONE_ORACLE),
276
+ ...getBoundValidatorPermissions(BASESEPOLIA_BOUND_VALIDATOR),
277
+ ...getXVSPermissions(BASESEPOLIA_XVS),
278
+ ...getXVSBridgeAdminPermissions(BASESEPOLIA_XVS_BRIDGE_ADMIN),
279
+ ...getXVSVaultPermissions(BASESEPOLIA_XVS_VAULT_PROXY),
280
+ ...getPoolRegistryPermissions(BASESEPOLIA_POOL_REGISTRY),
281
+ ...getPrimePermissions(BASESEPOLIA_PRIME),
282
+ ...getPrimeLiquidityProviderPermissions(BASESEPOLIA_PLP),
283
+ ...getProtocolShareReservePermissions(BASESEPOLIA_PSR),
284
+ ...getComptrollerPermissions(),
285
+ ...getVTokenPermissions(),
286
+ ...getRewardDistributorPermissionsTimebased(),
287
+ ...getIRMPermissions(),
288
+ ],
260
289
  };
261
290
 
262
291
  const revokePermissions: Permissions = {
@@ -272,7 +301,6 @@ const revokePermissions: Permissions = {
272
301
  ...getComptrollerRevokePermissions(ARBITRUMONE_GUARDIAN),
273
302
  ...getVTokenRevokePermissions(ARBITRUMONE_GUARDIAN),
274
303
  ...getXVSBridgeAdminRevokePermissions(ARBITRUMONE_XVS_BRIDGE_ADMIN, ARBITRUMONE_GUARDIAN),
275
- ...getRedstoneOracleRevokePermissions(ARBITRUMONE_REDSTONE_ORACLE, ARBITRUMONE_GUARDIAN),
276
304
  ],
277
305
  ethereum: [
278
306
  ...getPrimeRevokePermissions(ETHEREUM_PRIME, ETHEREUM_GUARDIAN),
@@ -285,7 +313,6 @@ const revokePermissions: Permissions = {
285
313
  ...getPoolRegistryRevokePermissions(ETHEREUM_POOL_REGISTRY, ETHEREUM_GUARDIAN),
286
314
  ...getComptrollerRevokePermissions(ETHEREUM_GUARDIAN),
287
315
  ...getVTokenRevokePermissions(ETHEREUM_GUARDIAN),
288
- ...getRedstoneOracleRevokePermissions(ETHEREUM_REDSTONE_ORACLE, ETHEREUM_GUARDIAN),
289
316
  ...getConverterNetworkRevokePermissions(ETHEREUM_CONVERTER_NETWORK, ETHEREUM_GUARDIAN),
290
317
  ...getSFrxETHOracleRevokePermissions(ETHEREUM_sFrxETH_ORACLE, ETHEREUM_GUARDIAN),
291
318
  ...getConvertersRevokePermissions(ETHEREUM_CONVERTERS, ETHEREUM_GUARDIAN),
@@ -325,7 +352,6 @@ const revokePermissions: Permissions = {
325
352
  ...getPoolRegistryRevokePermissions(SEPOLIA_POOL_REGISTRY, SEPOLIA_GUARDIAN),
326
353
  ...getComptrollerRevokePermissions(SEPOLIA_GUARDIAN),
327
354
  ...getVTokenRevokePermissions(SEPOLIA_GUARDIAN),
328
- ...getRedstoneOracleRevokePermissions(SEPOLIA_REDSTONE_ORACLE, SEPOLIA_GUARDIAN),
329
355
  ...getConverterNetworkRevokePermissions(SEPOLIA_CONVERTER_NETWORK, SEPOLIA_GUARDIAN),
330
356
  ...getSFrxETHOracleRevokePermissions(SEPOLIA_sFrxETH_ORACLE, SEPOLIA_GUARDIAN),
331
357
  ...getConvertersRevokePermissions(SEPOLIA_CONVERTERS, SEPOLIA_GUARDIAN),
@@ -345,9 +371,21 @@ const revokePermissions: Permissions = {
345
371
  ...getComptrollerRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
346
372
  ...getVTokenRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
347
373
  ...getXVSBridgeAdminRevokePermissions(ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN, ARBITRUMSEPOLIA_GUARDIAN),
348
- ...getRedstoneOracleRevokePermissions(ARBITRUMSEPOLIA_REDSTONE_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
349
374
  ...getOmniChainExecutorOwnerRevokePermissions(ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER, ARBITRUMSEPOLIA_GUARDIAN),
350
375
  ],
376
+ basesepolia: [
377
+ ...getPrimeRevokePermissions(BASESEPOLIA_PRIME, BASESEPOLIA_GUARDIAN),
378
+ ...getPrimeLiquidityProviderRevokePermissions(BASESEPOLIA_PLP, BASESEPOLIA_GUARDIAN),
379
+ ...getResilientOracleRevokePermissions(BASESEPOLIA_RESILIENT_ORACLE, BASESEPOLIA_GUARDIAN),
380
+ ...getBoundValidatorRevokePermissions(BASESEPOLIA_BOUND_VALIDATOR, BASESEPOLIA_GUARDIAN),
381
+ ...getXVSVaultRevokePermissions(BASESEPOLIA_XVS_VAULT_PROXY, BASESEPOLIA_GUARDIAN),
382
+ ...getRewardDistributorRevokePermissions(BASESEPOLIA_GUARDIAN, true),
383
+ ...getIRMRevokePermissions(BASESEPOLIA_GUARDIAN),
384
+ ...getPoolRegistryRevokePermissions(BASESEPOLIA_POOL_REGISTRY, BASESEPOLIA_GUARDIAN),
385
+ ...getComptrollerRevokePermissions(BASESEPOLIA_GUARDIAN),
386
+ ...getVTokenRevokePermissions(BASESEPOLIA_GUARDIAN),
387
+ ...getXVSBridgeAdminRevokePermissions(BASESEPOLIA_XVS_BRIDGE_ADMIN, BASESEPOLIA_GUARDIAN),
388
+ ],
351
389
  };
352
390
 
353
391
  function splitPermissions(
@@ -0,0 +1,102 @@
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
+ ARBITRUMONE_GUARDIAN,
8
+ ARBITRUMONE_REDSTONE_ORACLE,
9
+ ARBITRUMONE_XVS_VAULT_PROXY,
10
+ ARBITRUMSEPOLIA_GUARDIAN,
11
+ ARBITRUMSEPOLIA_REDSTONE_ORACLE,
12
+ ARBITRUMSEPOLIA_XVS_VAULT_PROXY,
13
+ ETHEREUM_GUARDIAN,
14
+ ETHEREUM_REDSTONE_ORACLE,
15
+ ETHEREUM_XVS_VAULT_PROXY,
16
+ OPBNBMAINNET_GUARDIAN,
17
+ OPBNBMAINNET_XVS_VAULT_PROXY,
18
+ OPBNBTESTNET_GUARDIAN,
19
+ OPBNBTESTNET_XVS_VAULT_PROXY,
20
+ SEPOLIA_GUARDIAN,
21
+ SEPOLIA_REDSTONE_ORACLE,
22
+ SEPOLIA_XVS_VAULT_PROXY,
23
+ } from "../helpers/Addresses";
24
+ import { getXVSVaultRevokePermissions } from "../helpers/permissions";
25
+
26
+ interface Permissions {
27
+ [key: string]: string[][];
28
+ }
29
+
30
+ const getRedstoneOraclePermissionsRevokedPreviously = (redstoneOracle: string, guardian: string): string[][] => {
31
+ return [
32
+ [redstoneOracle, "setTokenConfig(TokenConfig)", guardian],
33
+ [redstoneOracle, "setDirectPrice(address,uint256)", guardian],
34
+ ];
35
+ };
36
+ const BSCMAINNET_REDSTONE_ORACLE = "0x8455EFA4D7Ff63b8BFD96AdD889483Ea7d39B70a";
37
+ const BSCTESTNET_REDSTONE_ORACLE = "0x0Af51d1504ac5B711A9EAFe2fAC11A51d32029Ad";
38
+
39
+ const BSCMAINNET_GUARDIAN = "0x3a3284dC0FaFfb0b5F0d074c4C704D14326C98cF";
40
+ const BSCTESTNET_GUARDIAN = "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C";
41
+
42
+ const grantPermissions: Permissions = {
43
+ arbitrumone: [...getRedstoneOraclePermissionsRevokedPreviously(ARBITRUMONE_REDSTONE_ORACLE, ARBITRUMONE_GUARDIAN)],
44
+ arbitrumsepolia: [
45
+ ...getRedstoneOraclePermissionsRevokedPreviously(ARBITRUMSEPOLIA_REDSTONE_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
46
+ ],
47
+ ethereum: [...getRedstoneOraclePermissionsRevokedPreviously(ETHEREUM_REDSTONE_ORACLE, ETHEREUM_GUARDIAN)],
48
+ sepolia: [...getRedstoneOraclePermissionsRevokedPreviously(SEPOLIA_REDSTONE_ORACLE, SEPOLIA_GUARDIAN)],
49
+ bscmainnet: [...getRedstoneOraclePermissionsRevokedPreviously(BSCMAINNET_REDSTONE_ORACLE, BSCMAINNET_GUARDIAN)],
50
+ bsctestnet: [...getRedstoneOraclePermissionsRevokedPreviously(BSCTESTNET_REDSTONE_ORACLE, BSCTESTNET_GUARDIAN)],
51
+ };
52
+
53
+ const revokePermissions: Permissions = {
54
+ arbitrumone: [...getXVSVaultRevokePermissions(ARBITRUMONE_XVS_VAULT_PROXY, ARBITRUMONE_GUARDIAN)],
55
+ arbitrumsepolia: [...getXVSVaultRevokePermissions(ARBITRUMSEPOLIA_XVS_VAULT_PROXY, ARBITRUMSEPOLIA_GUARDIAN)],
56
+ ethereum: [...getXVSVaultRevokePermissions(ETHEREUM_XVS_VAULT_PROXY, ETHEREUM_GUARDIAN)],
57
+ sepolia: [...getXVSVaultRevokePermissions(SEPOLIA_XVS_VAULT_PROXY, SEPOLIA_GUARDIAN)],
58
+ opbnbmainnet: [...getXVSVaultRevokePermissions(OPBNBMAINNET_XVS_VAULT_PROXY, OPBNBMAINNET_GUARDIAN)],
59
+ opbnbtestnet: [...getXVSVaultRevokePermissions(OPBNBTESTNET_XVS_VAULT_PROXY, OPBNBTESTNET_GUARDIAN)],
60
+ };
61
+
62
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
63
+ const acmCommandsAggregator: ACMCommandsAggregator = await ethers.getContract("ACMCommandsAggregator");
64
+
65
+ const _grantPermissions: ACMCommandsAggregator.PermissionStruct[] = grantPermissions[hre.network.name].map(
66
+ permission => ({
67
+ contractAddress: permission[0],
68
+ functionSig: permission[1],
69
+ account: permission[2],
70
+ }),
71
+ );
72
+
73
+ const _revokePermissions: ACMCommandsAggregator.PermissionStruct[] = revokePermissions[hre.network.name].map(
74
+ permission => ({
75
+ contractAddress: permission[0],
76
+ functionSig: permission[1],
77
+ account: permission[2],
78
+ }),
79
+ );
80
+
81
+ try {
82
+ // Add grant permissions
83
+ let tx = await acmCommandsAggregator.addGrantPermissions(_grantPermissions);
84
+ let receipt = await tx.wait();
85
+ let events = receipt.events?.filter(event => event.event === "GrantPermissionsAdded");
86
+ console.log(`Grant Permissions for ${hre.network.name} added with indexes: `, events?.[0].args?.index.toString());
87
+
88
+ // Add revoke permissions
89
+ tx = await acmCommandsAggregator.addRevokePermissions(_revokePermissions);
90
+ receipt = await tx.wait();
91
+ events = receipt.events?.filter(event => event.event === "RevokePermissionsAdded");
92
+ console.log(`Revoke Permissions for ${hre.network.name} added with indexes: `, events?.[0].args?.index.toString());
93
+ } catch (error) {
94
+ console.error("Error adding adding permissions:", error);
95
+ }
96
+ };
97
+
98
+ func.tags = ["redstone-vault-permissions"];
99
+
100
+ func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.name === "hardhat";
101
+
102
+ export default func;