@venusprotocol/governance-contracts 2.11.0-dev.1 → 2.11.0

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.
package/README.md CHANGED
@@ -79,6 +79,20 @@ Deployed contract abis and addresses are exported in the `deployments` directory
79
79
  $ yarn hardhat export --network <network-name> --export ./deployments/<network-name>.json
80
80
  ```
81
81
 
82
+ ### Permissions Fetcher Tool
83
+
84
+ To fetch all permissions, run the following command:
85
+
86
+ ```
87
+ $ npx hardhat run scripts/ACMPermissions/index.ts --network <network-nme>
88
+ ```
89
+
90
+ To fetch only timelock permissions excluding guardian, run:
91
+
92
+ ```
93
+ $ npx hardhat run scripts/ACMPermissions/fetchNonGuardianPermissions.ts --network <network-nme>
94
+ ```
95
+
82
96
  ### Discussion
83
97
 
84
98
  For any concerns with the protocol, open an issue or visit us on [Telegram](https://t.me/venusprotocol) to discuss.
@@ -0,0 +1,29 @@
1
+ import "dotenv/config";
2
+ import { SUPPORTED_NETWORKS } from "helpers/deploy/constants";
3
+ import { MissingRoleMap, Permission, Role } from "./types";
4
+ export declare class PermissionFetcher {
5
+ readonly network: SUPPORTED_NETWORKS;
6
+ readonly bnbPermissionFile: string;
7
+ readonly chunkSize: number;
8
+ mdFilePath: string;
9
+ jsonFilePath: string;
10
+ permissionsMap: Record<string, Permission>;
11
+ missingRoleMap: MissingRoleMap;
12
+ roleHashTable: Record<string, Role>;
13
+ existingPermissions: Permission[];
14
+ missingRoleFile: string;
15
+ blocksParsed: number;
16
+ constructor(network: SUPPORTED_NETWORKS, bnbPermissionFile: string, chunkSize: number);
17
+ getPastEvents(startBlock: number, endBlock: number): Promise<void>;
18
+ private processEvents;
19
+ private updateMDPermissionFile;
20
+ private addPrevPermissionsInMap;
21
+ private storeInJson;
22
+ private decodeLogs;
23
+ private getRoleHashTable;
24
+ private fetchEvents;
25
+ private getPermissionsJson;
26
+ private addMissingRole;
27
+ private getHash;
28
+ }
29
+ //# sourceMappingURL=PermissionFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionFetcher.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/PermissionFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,OAAO,EAAS,cAAc,EAAE,UAAU,EAAmB,IAAI,EAAY,MAAM,SAAS,CAAC;AAE7F,qBAAa,iBAAiB;IAUhB,QAAQ,CAAC,OAAO,EAAE,kBAAkB;IAAE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;IAThH,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAChD,cAAc,EAAE,cAAc,CAAM;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;gBAEA,OAAO,EAAE,kBAAkB,EAAW,iBAAiB,EAAE,MAAM,EAAW,SAAS,EAAE,MAAM;IAY1G,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAgCxD,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,gBAAgB;YA8CV,WAAW;IAuEzB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,OAAO;CAIhB"}
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
35
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
36
+ return new (P || (P = Promise))(function (resolve, reject) {
37
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
38
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
39
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
40
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
41
+ });
42
+ };
43
+ var __importDefault = (this && this.__importDefault) || function (mod) {
44
+ return (mod && mod.__esModule) ? mod : { "default": mod };
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.PermissionFetcher = void 0;
48
+ require("dotenv/config");
49
+ const fs = __importStar(require("fs"));
50
+ const hardhat_1 = require("hardhat");
51
+ const lodash_1 = require("lodash");
52
+ const path_1 = __importDefault(require("path"));
53
+ const typescript_retry_decorator_1 = require("typescript-retry-decorator");
54
+ const config_1 = require("./config");
55
+ const types_1 = require("./types");
56
+ class PermissionFetcher {
57
+ constructor(network, bnbPermissionFile, chunkSize) {
58
+ this.network = network;
59
+ this.bnbPermissionFile = bnbPermissionFile;
60
+ this.chunkSize = chunkSize;
61
+ this.permissionsMap = {};
62
+ this.missingRoleMap = {};
63
+ this.mdFilePath = path_1.default.join(__dirname, "networks", this.network, "permissions.md");
64
+ this.jsonFilePath = path_1.default.join(__dirname, "networks", this.network, "permissions.json");
65
+ this.roleHashTable = this.getRoleHashTable(this.bnbPermissionFile);
66
+ this.missingRoleFile = path_1.default.join(__dirname, "networks", this.network, "BNBMissingRole.json");
67
+ const { permissions: existingPermissions } = this.getPermissionsJson();
68
+ this.existingPermissions = existingPermissions;
69
+ this.blocksParsed = parseInt(this.getPermissionsJson().height, 10);
70
+ this.addPrevPermissionsInMap();
71
+ }
72
+ getPastEvents(startBlock, endBlock) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const fromBlock = startBlock ? startBlock : config_1.startingBlockForACM[this.network];
75
+ const toBlock = endBlock ? endBlock : yield hardhat_1.ethers.provider.getBlockNumber();
76
+ if (fromBlock >= toBlock) {
77
+ throw new Error(`From block ${fromBlock} cannot be more than to block ${toBlock}`);
78
+ }
79
+ let start = fromBlock;
80
+ const lastStoredBlock = this.blocksParsed;
81
+ console.log("StartBlock:", lastStoredBlock);
82
+ if (start < lastStoredBlock) {
83
+ start = lastStoredBlock + 1;
84
+ }
85
+ while (start <= toBlock) {
86
+ const endBlock = Math.min(start + this.chunkSize - 1, toBlock);
87
+ const events = yield this.fetchEvents(start, endBlock);
88
+ this.processEvents(events);
89
+ this.blocksParsed = endBlock;
90
+ this.storeInJson();
91
+ console.log(`Fetched events from block ${start} to ${endBlock}`);
92
+ start = endBlock + 1;
93
+ }
94
+ this.updateMDPermissionFile();
95
+ });
96
+ }
97
+ processEvents(events) {
98
+ events.forEach(event => {
99
+ const hash = this.getHash(event.contractAddress, event.functionSignature);
100
+ if (!this.permissionsMap[hash]) {
101
+ this.permissionsMap[hash] = {
102
+ contractAddress: event.contractAddress,
103
+ functionSignature: event.functionSignature,
104
+ role: hash,
105
+ addresses: [],
106
+ };
107
+ }
108
+ const permission = this.permissionsMap[hash];
109
+ if (event.type === types_1.PermissionsEnum.Granted) {
110
+ permission.addresses = (0, lodash_1.union)(permission.addresses, [event.account]);
111
+ }
112
+ else if (event.type === types_1.PermissionsEnum.Revoked) {
113
+ (0, lodash_1.remove)(permission.addresses, address => address === event.account);
114
+ }
115
+ this.permissionsMap[hash].addresses = permission.addresses;
116
+ });
117
+ }
118
+ updateMDPermissionFile() {
119
+ try {
120
+ const jsonData = fs.readFileSync(this.jsonFilePath, "utf8");
121
+ const data = JSON.parse(jsonData);
122
+ let mdContent = "# Permissions\n\n";
123
+ data.permissions.forEach((permission) => {
124
+ mdContent += `## Contract Address: ${permission.contractAddress}\n`;
125
+ mdContent += `- **Function Signature**: \`${permission.functionSignature}\`\n`;
126
+ mdContent += `- **Addresses**:\n`;
127
+ permission.addresses.forEach((address) => {
128
+ mdContent += ` - \`${config_1.addressMap[this.network][address] || address}\`\n`;
129
+ });
130
+ mdContent += "\n";
131
+ });
132
+ fs.writeFileSync(this.mdFilePath, mdContent, "utf8");
133
+ console.log(`Markdown file has been written to ${this.mdFilePath}`);
134
+ }
135
+ catch (error) {
136
+ console.error(`Error writing to MD file ${this.jsonFilePath}:`, error);
137
+ }
138
+ }
139
+ addPrevPermissionsInMap() {
140
+ this.existingPermissions.forEach(permission => {
141
+ const hash = this.getHash(permission.contractAddress, permission.functionSignature);
142
+ this.permissionsMap[hash] = permission;
143
+ });
144
+ }
145
+ storeInJson() {
146
+ const snapshot = {
147
+ permissions: Object.values(this.permissionsMap).filter(permission => permission.addresses.length > 0),
148
+ height: this.blocksParsed,
149
+ };
150
+ try {
151
+ fs.writeFileSync(this.jsonFilePath, JSON.stringify(snapshot, null, 2), "utf8");
152
+ console.log(`Snapshot successfully written to ${this.jsonFilePath}`);
153
+ }
154
+ catch (error) {
155
+ console.error(`Error writing JSON to ${this.jsonFilePath}:`, error);
156
+ throw new Error(`Error writing JSON to ${this.jsonFilePath}`);
157
+ }
158
+ }
159
+ decodeLogs(data) {
160
+ const abiCoder = new hardhat_1.ethers.utils.AbiCoder();
161
+ const decodedData = abiCoder.decode(["address", "address", "string"], data);
162
+ return { account: decodedData[0], contractAddress: decodedData[1], functionSignature: decodedData[2] };
163
+ }
164
+ getRoleHashTable(filePath) {
165
+ const jsonData = fs.readFileSync(filePath, "utf8");
166
+ const data = JSON.parse(jsonData);
167
+ if (typeof data !== "object" || data === null || !Array.isArray(data.contracts)) {
168
+ throw new Error("Invalid Json");
169
+ }
170
+ for (const contract of data.contracts) {
171
+ if (typeof contract !== "object" || contract === null) {
172
+ throw new Error("Invalid Json");
173
+ }
174
+ if (!Array.isArray(contract.address) || !Array.isArray(contract.functions)) {
175
+ throw new Error("Invalid Json");
176
+ }
177
+ if (!contract.address.every((addr) => typeof addr === "string" && addr === addr.trim())) {
178
+ throw new Error("Invalid Json");
179
+ }
180
+ if (!contract.functions.every((func) => typeof func === "string" && func === func.trim())) {
181
+ throw new Error("Invalid Json");
182
+ }
183
+ }
184
+ const hashTable = {};
185
+ for (const contract of data.contracts) {
186
+ for (const address of contract.address) {
187
+ for (const funcSig of contract.functions) {
188
+ const role = this.getHash(address, funcSig);
189
+ hashTable[role] = {
190
+ contractAddress: address,
191
+ functionSignature: funcSig,
192
+ };
193
+ }
194
+ }
195
+ }
196
+ return hashTable;
197
+ }
198
+ fetchEvents(start, endBlock) {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ const acm = yield hardhat_1.ethers.getContract("AccessControlManager");
201
+ const acmAddress = acm.address;
202
+ const topics = this.network === "bscmainnet"
203
+ ? [
204
+ hardhat_1.ethers.utils.id("RoleGranted(bytes32,address,address)"),
205
+ hardhat_1.ethers.utils.id("RoleRevoked(bytes32,address,address)"),
206
+ ]
207
+ : [
208
+ hardhat_1.ethers.utils.id("PermissionGranted(address,address,string)"),
209
+ hardhat_1.ethers.utils.id("PermissionRevoked(address,address,string)"),
210
+ ];
211
+ const eventFilter = {
212
+ acmAddress,
213
+ topics: [topics],
214
+ };
215
+ const events = yield acm.queryFilter(eventFilter, start, endBlock);
216
+ if (this.network === "bscmainnet") {
217
+ let contractAddress;
218
+ let functionSig;
219
+ const newEvents = [];
220
+ events.forEach(event => {
221
+ const role = hardhat_1.ethers.utils.defaultAbiCoder.decode(["bytes32"], event.topics[1])[0];
222
+ const account = hardhat_1.ethers.utils.defaultAbiCoder.decode(["address"], event.topics[2])[0];
223
+ const defaultAdminRole = "0x0000000000000000000000000000000000000000000000000000000000000000";
224
+ if (this.roleHashTable[role] !== undefined || role === defaultAdminRole) {
225
+ if (role === defaultAdminRole) {
226
+ contractAddress = acm.address;
227
+ functionSig = "DFAULT_ADMIN_ROLE";
228
+ }
229
+ else {
230
+ contractAddress = this.roleHashTable[role].contractAddress;
231
+ functionSig = this.roleHashTable[role].functionSignature;
232
+ }
233
+ const eventType = event.topics[0] === eventFilter.topics[0][0] ? types_1.PermissionsEnum.Granted : types_1.PermissionsEnum.Revoked;
234
+ newEvents.push({
235
+ contractAddress: contractAddress,
236
+ functionSignature: functionSig,
237
+ account: account,
238
+ type: eventType,
239
+ });
240
+ }
241
+ else {
242
+ this.addMissingRole(role, event.transactionHash);
243
+ }
244
+ });
245
+ return newEvents;
246
+ }
247
+ return events.map(event => {
248
+ const data = event.data;
249
+ const { account, contractAddress, functionSignature } = this.decodeLogs(data);
250
+ const eventType = event.topics[0] === eventFilter.topics[0][0] ? types_1.PermissionsEnum.Granted : types_1.PermissionsEnum.Revoked;
251
+ return {
252
+ contractAddress: contractAddress,
253
+ functionSignature: functionSignature,
254
+ account: account,
255
+ type: eventType,
256
+ };
257
+ });
258
+ });
259
+ }
260
+ getPermissionsJson() {
261
+ try {
262
+ if (!fs.existsSync(this.jsonFilePath)) {
263
+ return { permissions: [], height: config_1.startingBlockForACM[this.network].toString() };
264
+ }
265
+ const fileContent = fs.readFileSync(this.jsonFilePath, "utf8");
266
+ if (!fileContent.trim()) {
267
+ return { permissions: [], height: config_1.startingBlockForACM[this.network].toString() };
268
+ }
269
+ return JSON.parse(fileContent);
270
+ }
271
+ catch (error) {
272
+ console.error(`Error parsing JSON file:`, error);
273
+ throw new Error("Error parsing JSON file");
274
+ }
275
+ }
276
+ addMissingRole(role, transaction) {
277
+ let data = {};
278
+ try {
279
+ if (fs.existsSync(this.missingRoleFile)) {
280
+ const fileContent = fs.readFileSync(this.missingRoleFile, "utf8").trim();
281
+ if (fileContent) {
282
+ try {
283
+ data = JSON.parse(fileContent);
284
+ }
285
+ catch (error) {
286
+ console.error("Error parsing JSON:", error);
287
+ throw new Error("Error parsing JSON");
288
+ }
289
+ }
290
+ }
291
+ if (!data[role]) {
292
+ data[role] = { transactions: [] };
293
+ }
294
+ if (!data[role].transactions.includes(transaction)) {
295
+ data[role].transactions.push(transaction);
296
+ }
297
+ fs.writeFileSync(this.missingRoleFile, JSON.stringify(data, null, 2), "utf8");
298
+ }
299
+ catch (error) {
300
+ console.error("Error adding missing role:", error);
301
+ }
302
+ }
303
+ getHash(contractAddress, functionSignature) {
304
+ const hash = hardhat_1.ethers.utils.solidityKeccak256(["address", "string"], [contractAddress, functionSignature]);
305
+ return hash;
306
+ }
307
+ }
308
+ __decorate([
309
+ (0, typescript_retry_decorator_1.Retryable)({
310
+ maxAttempts: 5,
311
+ backOffPolicy: typescript_retry_decorator_1.BackOffPolicy.ExponentialBackOffPolicy,
312
+ backOff: 5000,
313
+ exponentialOption: { maxInterval: 60000, multiplier: 2 },
314
+ }),
315
+ __metadata("design:type", Function),
316
+ __metadata("design:paramtypes", [Number, Number]),
317
+ __metadata("design:returntype", Promise)
318
+ ], PermissionFetcher.prototype, "fetchEvents", null);
319
+ exports.PermissionFetcher = PermissionFetcher;
320
+ //# sourceMappingURL=PermissionFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionFetcher.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/PermissionFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { SUPPORTED_NETWORKS } from "helpers/deploy/constants";
2
+ export declare const startingBlockForACM: Record<string, number>;
3
+ export declare const addressMap: Record<SUPPORTED_NETWORKS, Record<string, string>>;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBtD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6IzE,CAAC"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addressMap = exports.startingBlockForACM = void 0;
4
+ exports.startingBlockForACM = {
5
+ bscmainnet: 21968139,
6
+ bsctestnet: 26711168,
7
+ ethereum: 18641314,
8
+ sepolia: 4204345,
9
+ opbnbmainnet: 10895878,
10
+ opbnbtestnet: 14542763,
11
+ arbitrumone: 201597544,
12
+ arbitrumsepolia: 25350320,
13
+ zksyncmainnet: 42301367,
14
+ zksyncsepolia: 3452622,
15
+ opmainnet: 125490540,
16
+ opsepolia: 14150254,
17
+ basemainnet: 23212004,
18
+ basesepolia: 16737042,
19
+ unichainsepolia: 3358050,
20
+ unichainmainnet: 8106529,
21
+ };
22
+ exports.addressMap = {
23
+ hardhat: {
24
+ "0x0000000000000000000000000000000000000000": "AddressZero",
25
+ },
26
+ bscmainnet: {
27
+ "0x939bD8d64c0A9583A7Dcea9933f7b21697ab6396": "NormalTimelock",
28
+ "0x555ba73dB1b006F3f2C7dB7126d6e4343aDBce02": "FastTrackTimelock",
29
+ "0x213c446ec11e45b15a6E29C1C1b402B8897f606d": "CriticalTimelock",
30
+ "0x7B1AE5Ea599bC56734624b95589e7E8E64C351c9": "Guardian 1",
31
+ "0x1C2CAc6ec528c20800B2fe734820D87b581eAA6B": "Guardian 2",
32
+ "0x3a3284dC0FaFfb0b5F0d074c4C704D14326C98cF": "Guardian 3",
33
+ "0x9F7b01A536aFA00EF10310A162877fd792cD0666": "PoolRegistry",
34
+ },
35
+ bsctestnet: {
36
+ "0xce10739590001705F7FF231611ba4A48B2820327": "NormalTimelock",
37
+ "0x3CFf21b7AF8390fE68799D58727d3b4C25a83cb6": "FastTrackTimelock",
38
+ "0x23B893a7C45a5Eb8c8C062b9F32d0D2e43eD286D": "CriticalTimelock",
39
+ "0x2Ce1d0ffD7E869D9DF33e28552b12DdDed326706": "Guardian",
40
+ "0xC85491616Fa949E048F3aAc39fbf5b0703800667": "PoolRegistry",
41
+ },
42
+ ethereum: {
43
+ "0xd969E79406c35E80750aAae061D402Aab9325714": "NormalTimelock",
44
+ "0x8764F50616B62a99A997876C2DEAaa04554C5B2E": "FastTrackTimelock",
45
+ "0xeB9b85342c34F65af734C7bd4a149c86c472bC00": "CriticalTimelock",
46
+ "0x285960C5B22fD66A736C7136967A3eB15e93CC67": "Guardian",
47
+ "0x61CAff113CCaf05FFc6540302c37adcf077C5179": "PoolRegistry",
48
+ "0x888E317606b4c590BBAD88653863e8B345702633": "XVSBridgeDest",
49
+ },
50
+ sepolia: {
51
+ "0xc332F7D8D5eA72cf760ED0E1c0485c8891C6E0cF": "NormalTimelock",
52
+ "0x7F043F43Adb392072a3Ba0cC9c96e894C6f7e182": "FastTrackTimelock",
53
+ "0xA24A7A65b8968a749841988Bd7d05F6a94329fDe": "CriticalTimelock",
54
+ "0x94fa6078b6b8a26F0B6EDFFBE6501B22A10470fB": "Guardian",
55
+ "0x758f5715d817e02857Ba40889251201A5aE3E186": "PoolRegistry",
56
+ "0xc340b7d3406502F43dC11a988E4EC5bbE536E642": "XVSBridgeDest",
57
+ },
58
+ opbnbmainnet: {
59
+ "0x10f504e939b912569Dca611851fDAC9E3Ef86819": "NormalTimelock",
60
+ "0xEdD04Ecef0850e834833789576A1d435e7207C0d": "FastTrackTimelock",
61
+ "0xA7DD2b15B24377296F11c702e758cd9141AB34AA": "CriticalTimelock",
62
+ "0xC46796a21a3A9FAB6546aF3434F2eBfFd0604207": "Guardian",
63
+ "0x345a030Ad22e2317ac52811AC41C1A63cfa13aEe": "PoolRegistry",
64
+ "0x100D331C1B5Dcd41eACB1eCeD0e83DCEbf3498B2": "XVSBridgeDest",
65
+ },
66
+ opbnbtestnet: {
67
+ "0x1c4e015Bd435Efcf4f58D82B0d0fBa8fC4F81120": "NormalTimelock",
68
+ "0xB2E6268085E75817669479b22c73C2AfEaADF7A6": "FastTrackTimelock",
69
+ "0xBd06aCDEF38230F4EdA0c6FD392905Ad463e42E3": "CriticalTimelock",
70
+ "0xb15f6EfEbC276A3b9805df81b5FB3D50C2A62BDf": "Guardian",
71
+ "0x560eA4e1cC42591E9f5F5D83Ad2fd65F30128951": "PoolRegistry",
72
+ "0xA03205bC635A772E533E7BE36b5701E331a70ea3": "XVSBridgeDest",
73
+ },
74
+ arbitrumone: {
75
+ "0x4b94589Cc23F618687790036726f744D602c4017": "NormalTimelock",
76
+ "0x2286a9B2a5246218f2fC1F380383f45BDfCE3E04": "FastTrackTimelock",
77
+ "0x181E4f8F21D087bF02Ea2F64D5e550849FBca674": "CriticalTimelock",
78
+ "0x14e0E151b33f9802b3e75b621c1457afc44DcAA0": "Guardian",
79
+ "0x382238f07Bc4Fe4aA99e561adE8A4164b5f815DA": "PoolRegistry",
80
+ "0x20cEa49B5F7a6DBD78cAE772CA5973eF360AA1e6": "XVSBridgeDest",
81
+ },
82
+ arbitrumsepolia: {
83
+ "0x794BCA78E606f3a462C31e5Aba98653Efc1322F8": "NormalTimelock",
84
+ "0x14642991184F989F45505585Da52ca6A6a7dD4c8": "FastTrackTimelock",
85
+ "0x0b32Be083f7041608E023007e7802430396a2123": "CriticalTimelock",
86
+ "0x1426A5Ae009c4443188DA8793751024E358A61C2": "Guardian",
87
+ "0xf93Df3135e0D555185c0BC888073374cA551C5fE": "PoolRegistry",
88
+ "0xFdC5cEC63FD167DA46cF006585b30D03B104eFD4": "XVSBridgeDest",
89
+ },
90
+ zksyncmainnet: {
91
+ "0x093565Bc20AA326F4209eBaF3a26089272627613": "NormalTimelock",
92
+ "0x32f71c95BC8F9d996f89c642f1a84d06B2484AE9": "FastTrackTimelock",
93
+ "0xbfbc79D4198963e4a66270F3EfB1fdA0F382E49c": "CriticalTimelock",
94
+ "0x751Aa759cfBB6CE71A43b48e40e1cCcFC66Ba4aa": "Guardian",
95
+ "0xFD96B926298034aed9bBe0Cca4b651E41eB87Bc4": "PoolRegistry",
96
+ "0x16a62B534e09A7534CD5847CFE5Bf6a4b0c1B116": "XVSBridgeDest",
97
+ },
98
+ zksyncsepolia: {
99
+ "0x1730527a0f0930269313D77A317361b42971a67E": "NormalTimelock",
100
+ "0xb055e028b27d53a455a6c040a6952e44E9E615c4": "FastTrackTimelock",
101
+ "0x0E6138bE0FA1915efC73670a20A10EFd720a6Cc8": "CriticalTimelock",
102
+ "0xa2f83de95E9F28eD443132C331B6a9C9B7a9F866": "Guardian",
103
+ "0x1401404e6279BB8C06E5E3999eCA3e2008B46A76": "PoolRegistry",
104
+ "0x760461ccB2508CAAa2ECe0c28af3a4707b853043": "XVSBridgeDest",
105
+ },
106
+ opmainnet: {
107
+ "0x0C6f1E6B4fDa846f63A0d5a8a73EB811E0e0C04b": "NormalTimelock",
108
+ "0x508bD9C31E8d6760De04c70fe6c2b24B3cDea7E7": "FastTrackTimelock",
109
+ "0xB82479bc345CAA7326D7d21306972033226fC185": "CriticalTimelock",
110
+ "0x2e94dd14E81999CdBF5deDE31938beD7308354b3": "Guardian",
111
+ "0x147780799840d541C1d7c998F0cbA996d11D62bb": "PoolRegistry",
112
+ "0xbBe46bAec851355c3FC4856914c47eB6Cea0B8B4": "XVSBridgeDest",
113
+ },
114
+ opsepolia: {
115
+ "0xdDe31d7eEEAD7Cf9790F833C4FF4c6e61404402a": "NormalTimelock",
116
+ "0xe0Fa35b6279dd802C382ae54c50C8B16deaC0885": "FastTrackTimelock",
117
+ "0x45d2263c6E0dbF84eBffB1Ee0b80aC740607990B": "CriticalTimelock",
118
+ "0xd57365EE4E850e881229e2F8Aa405822f289e78d": "Guardian",
119
+ "0x6538C861C7A6997602311342657b9143dD9E8152": "PoolRegistry",
120
+ "0x79a36dc9a43D05Db4747c59c02F48ed500e47dF1": "XVSBridgeDest",
121
+ },
122
+ basemainnet: {
123
+ "0x21c12f2946a1a66cBFf7eb997022a37167eCf517": "NormalTimelock",
124
+ "0x209F73Ee2Fa9A72aF3Fa6aF1933A3B58ed3De5D7": "FastTrackTimelock",
125
+ "0x47F65466392ff2aE825d7a170889F7b5b9D8e60D": "CriticalTimelock",
126
+ "0x1803Cf1D3495b43cC628aa1d8638A981F8CD341C": "Guardian",
127
+ "0xeef902918DdeCD773D4B422aa1C6e1673EB9136F": "PoolRegistry",
128
+ "0x3dd92fb51a5d381ae78e023dfb5dd1d45d2426cd": "XVSBridgeDest",
129
+ },
130
+ basesepolia: {
131
+ "0xCc84f6122649eDc48f4a426814e6b6C6fF9bBe0a": "NormalTimelock",
132
+ "0x3dFA652D3aaDcb93F9EA7d160d674C441AaA8EE2": "FastTrackTimelock",
133
+ "0xbeDb7F2d0617292364bA4D73cf016c0f6BB5542E": "CriticalTimelock",
134
+ "0xdf3b635d2b535f906BB02abb22AED71346E36a00": "Guardian",
135
+ "0xCa330282BEeb07a81963336d0bf8f5f34317916c": "PoolRegistry",
136
+ "0xD5Cd1fD17B724a391C1bce55Eb9d88E3205eED60": "XVSBridgeDest",
137
+ },
138
+ unichainmainnet: {
139
+ "0x918532A78d22419Da4091930d472bDdf532BE89a": "NormalTimelock",
140
+ "0x4121995b87f9EE8bA0a89e87470255e2E0fe48c7": "FastTrackTimelock",
141
+ "0x1b05eCb489842786776a9A10e91AAb56e2CFe15e": "CriticalTimelock",
142
+ "0x1803Cf1D3495b43cC628aa1d8638A981F8CD341C": "Guardian",
143
+ "0x0C52403E16BcB8007C1e54887E1dFC1eC9765D7C": "PoolRegistry",
144
+ "0x9c95f8aa28fFEB7ECdC0c407B9F632419c5daAF8": "XVSBridgeDest",
145
+ },
146
+ unichainsepolia: {
147
+ "0x5e20F5A2e23463D39287185DF84607DF7068F314": "NormalTimelock",
148
+ "0x668cDb1A414006D0a26e9e13881D4Cd30B8b2a4A": "FastTrackTimelock",
149
+ "0x86C093266e824FA4345484a7B9109e9567923DA6": "CriticalTimelock",
150
+ "0x9831D3A641E8c7F082EEA75b8249c99be9D09a34": "Guardian",
151
+ "0x9027cF782515F3184bbF7A6cD7a33052dc52E439": "PoolRegistry",
152
+ "0xCAF833318a6663bb23aa7f218e597c2F7970b4D2": "XVSBridgeDest",
153
+ },
154
+ berachainbartio: {},
155
+ };
156
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fetchNonGuardianPermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchNonGuardianPermissions.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/fetchNonGuardianPermissions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const fs = __importStar(require("fs"));
39
+ const hardhat_1 = __importDefault(require("hardhat"));
40
+ const path_1 = __importDefault(require("path"));
41
+ const deploymentUtils_1 = require("../../helpers/deploy/deploymentUtils");
42
+ const config_1 = require("./config");
43
+ function isTimelockAndNotGuardian(addresses, guardianAddress, network) {
44
+ const TIMELOCK = ["NormalTimelock", "FastTrackTimelock", "CriticalTimelock"];
45
+ const BSCGUARDIANS = ["Guardian 1", "Guardian 2", "Guardian 3"];
46
+ let hasTimelock = false;
47
+ let hasGuardian = false;
48
+ for (const address of addresses) {
49
+ const resolvedName = config_1.addressMap[network][address];
50
+ if (!hasTimelock) {
51
+ hasTimelock = TIMELOCK.includes(resolvedName);
52
+ }
53
+ if (!hasGuardian) {
54
+ hasGuardian = network === "bscmainnet" ? BSCGUARDIANS.includes(resolvedName) : address === guardianAddress;
55
+ }
56
+ if (hasTimelock && hasGuardian)
57
+ break;
58
+ }
59
+ return hasTimelock && !hasGuardian;
60
+ }
61
+ function exportNonGuardianTimelockPermissions() {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ try {
64
+ const network = hardhat_1.default.network.name;
65
+ const guardianAddress = yield (0, deploymentUtils_1.guardian)(network);
66
+ const inputFilePath = path_1.default.join(__dirname, "networks", network, "permissions.json");
67
+ const outputFilePath = path_1.default.join(__dirname, "networks", network, "nonGuardianPermissions.json");
68
+ if (!fs.existsSync(inputFilePath)) {
69
+ throw new Error(`Permissions file not found for network: ${network}`);
70
+ }
71
+ const permissionsData = fs.readFileSync(inputFilePath, "utf8");
72
+ const parsedPermissions = JSON.parse(permissionsData);
73
+ const filteredPermissions = parsedPermissions.permissions
74
+ .filter((permission) => isTimelockAndNotGuardian(permission.addresses, guardianAddress, network))
75
+ .map((permission) => {
76
+ const addressNames = permission.addresses.map((address) => config_1.addressMap[network][address] || address);
77
+ return Object.assign(Object.assign({}, permission), { addressNames });
78
+ });
79
+ fs.writeFileSync(outputFilePath, JSON.stringify(filteredPermissions, null, 2));
80
+ console.log(`Filtered permissions written to: ${outputFilePath}`);
81
+ }
82
+ catch (error) {
83
+ console.error("Failed to export non-guardian permissions:", error);
84
+ }
85
+ });
86
+ }
87
+ exportNonGuardianTimelockPermissions();
88
+ //# sourceMappingURL=fetchNonGuardianPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchNonGuardianPermissions.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/fetchNonGuardianPermissions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,sDAA0B;AAG1B,gDAAwB;AAExB,0EAAgE;AAChE,qCAAsC;AAMtC,SAAS,wBAAwB,CAAC,SAAmB,EAAE,eAAuB,EAAE,OAA2B;IACzG,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;QAC/B,MAAM,YAAY,GAAG,mBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC;SAC5G;QACD,IAAI,WAAW,IAAI,WAAW;YAAE,MAAM;KACvC;IAED,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC;AACrC,CAAC;AAMD,SAAe,oCAAoC;;QACjD,IAAI;YACF,MAAM,OAAO,GAAG,iBAAG,CAAC,OAAO,CAAC,IAA0B,CAAC;YACvD,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACpF,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,CAAC;YAEhG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;aACvE;YAED,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC/D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAEtD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,WAAW;iBACtD,MAAM,CAAC,CAAC,UAAsB,EAAE,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;iBAC5G,GAAG,CAAC,CAAC,UAAsB,EAAE,EAAE;gBAC9B,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,mBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;gBAC7G,uCAAY,UAAU,KAAE,YAAY,IAAG;YACzC,CAAC,CAAC,CAAC;YAEL,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,oCAAoC,cAAc,EAAE,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;SACpE;IACH,CAAC;CAAA;AAGD,oCAAoC,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const hardhat_1 = __importDefault(require("hardhat"));
16
+ const inquirer_1 = __importDefault(require("inquirer"));
17
+ const PermissionFetcher_1 = require("./PermissionFetcher");
18
+ const config_1 = require("./config");
19
+ const network = hardhat_1.default.network.name;
20
+ (() => __awaiter(void 0, void 0, void 0, function* () {
21
+ const params = yield inquirer_1.default.prompt([
22
+ {
23
+ name: "BNBFunctionSignatureFile",
24
+ message: "Please enter path of the .json file containing contract addresses and function signatures of BNB mainnet {optional}",
25
+ default: "scripts/ACMPermissions/networks/bscmainnet/BNBPermissions.json",
26
+ },
27
+ {
28
+ name: "chunkSize",
29
+ message: "Please enter the block chunk size for fetching the events. This is important as some RPCs fail to return logs for a large chunk of blocks",
30
+ default: 40000,
31
+ },
32
+ {
33
+ name: "startBlock",
34
+ message: "Please enter starting block of given network from which you want the logs. Will be ignored if permissions.json is already created. Log fetching start from the previous stored block {optional}",
35
+ default: config_1.startingBlockForACM[network],
36
+ },
37
+ {
38
+ name: "endBlock",
39
+ message: "Please enter ending block of given network till which you want the logs {optional}",
40
+ default: "latest",
41
+ },
42
+ ]);
43
+ const startingBlock = parseInt(params.startBlock, 10);
44
+ const endingBlock = parseInt(params.endBlock, 10);
45
+ const permissionFetcher = new PermissionFetcher_1.PermissionFetcher(network, params.BNBFunctionSignatureFile, params.chunkSize);
46
+ yield permissionFetcher.getPastEvents(startingBlock, endingBlock);
47
+ }))();
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA0B;AAE1B,wDAAgC;AAEhC,2DAAwD;AACxD,qCAA+C;AAE/C,MAAM,OAAO,GAAG,iBAAG,CAAC,OAAO,CAAC,IAA0B,CAAC;AAEvD,CAAC,GAAS,EAAE;IACV,MAAM,MAAM,GACV,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAEpB;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EACL,qHAAqH;YACvH,OAAO,EAAE,gEAAgE;SAC1E;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EACL,2IAA2I;YAC7I,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EACL,iMAAiM;YACnM,OAAO,EAAE,4BAAmB,CAAC,OAAO,CAAC;SACtC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oFAAoF;YAC7F,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5G,MAAM,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACpE,CAAC,CAAA,CAAC,EAAE,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface Event {
2
+ contractAddress: string;
3
+ functionSignature: string;
4
+ account: string;
5
+ type: PermissionsEnum;
6
+ }
7
+ export interface MissingRoleMap {
8
+ [role: string]: {
9
+ transactions: string[];
10
+ };
11
+ }
12
+ export interface Permission {
13
+ contractAddress: string;
14
+ functionSignature: string;
15
+ addresses: string[];
16
+ role?: string;
17
+ }
18
+ export declare enum PermissionsEnum {
19
+ Granted = "Granted",
20
+ Revoked = "Revoked"
21
+ }
22
+ export interface Role {
23
+ contractAddress: string;
24
+ functionSignature: string;
25
+ }
26
+ export interface Snapshot {
27
+ permissions: Permission[];
28
+ height: number;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,KAAK;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionsEnum = void 0;
4
+ var PermissionsEnum;
5
+ (function (PermissionsEnum) {
6
+ PermissionsEnum["Granted"] = "Granted";
7
+ PermissionsEnum["Revoked"] = "Revoked";
8
+ })(PermissionsEnum = exports.PermissionsEnum || (exports.PermissionsEnum = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/types.ts"],"names":[],"mappings":";;;AAsBA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@venusprotocol/governance-contracts",
3
3
  "description": "",
4
- "version": "2.11.0-dev.1",
4
+ "version": "2.11.0",
5
5
  "author": "",
6
6
  "files": [
7
7
  "artifacts",
@@ -77,6 +77,8 @@
77
77
  "@types/chai": "^4.3.4",
78
78
  "@types/debug": "^4.1.12",
79
79
  "@types/fs-extra": "^9.0.13",
80
+ "@types/inquirer": "^9.0.7",
81
+ "@types/lodash": "^4.17.6",
80
82
  "@types/mocha": "^10.0.0",
81
83
  "@types/node": "^18.16.3",
82
84
  "@typescript-eslint/eslint-plugin": "^5.44.0",
@@ -115,6 +117,7 @@
115
117
  "tsconfig-paths": "^4.1.2",
116
118
  "typechain": "^8.1.1",
117
119
  "typescript": "^4.9.3",
120
+ "typescript-retry-decorator": "^2.4.2",
118
121
  "zksync-ethers": "^5.9.1"
119
122
  },
120
123
  "_moduleAliases": {