@skalenetwork/upgrade-tools 3.0.0-verification.0 → 4.0.0-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hardhat.config.d.ts +3 -3
- package/dist/hardhat.config.js +6 -17
- package/dist/hardhat.config.js.map +1 -0
- package/dist/src/abi.d.ts +2 -2
- package/dist/src/abi.js +8 -4
- package/dist/src/abi.js.map +1 -0
- package/dist/src/contractFactory.d.ts +4 -0
- package/dist/src/contractFactory.js +84 -0
- package/dist/src/contractFactory.js.map +1 -0
- package/dist/src/contractVerifier.d.ts +25 -0
- package/dist/src/contractVerifier.js +71 -0
- package/dist/src/contractVerifier.js.map +1 -0
- package/dist/src/deploy.d.ts +5 -4
- package/dist/src/deploy.js +77 -58
- package/dist/src/deploy.js.map +1 -0
- package/dist/src/exitCodes.d.ts +8 -0
- package/dist/src/exitCodes.js +13 -0
- package/dist/src/exitCodes.js.map +1 -0
- package/dist/src/gnosis-safe.d.ts +2 -2
- package/dist/src/gnosis-safe.js +105 -96
- package/dist/src/gnosis-safe.js.map +1 -0
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -0
- package/dist/src/nonceProvider.d.ts +10 -0
- package/dist/src/nonceProvider.js +34 -0
- package/dist/src/nonceProvider.js.map +1 -0
- package/dist/src/proxyAdmin.d.ts +4 -0
- package/dist/src/proxyAdmin.js +56 -0
- package/dist/src/proxyAdmin.js.map +1 -0
- package/dist/src/submitters/auto-submitter.d.ts +22 -5
- package/dist/src/submitters/auto-submitter.js +135 -120
- package/dist/src/submitters/auto-submitter.js.map +1 -0
- package/dist/src/submitters/eoa-submitter.d.ts +3 -2
- package/dist/src/submitters/eoa-submitter.js +23 -12
- package/dist/src/submitters/eoa-submitter.js.map +1 -0
- package/dist/src/submitters/index.js +1 -0
- package/dist/src/submitters/index.js.map +1 -0
- package/dist/src/submitters/safe-ima-legacy-marionette-submitter.d.ts +4 -3
- package/dist/src/submitters/safe-ima-legacy-marionette-submitter.js +14 -13
- package/dist/src/submitters/safe-ima-legacy-marionette-submitter.js.map +1 -0
- package/dist/src/submitters/safe-ima-marionette-submitter.d.ts +3 -3
- package/dist/src/submitters/safe-ima-marionette-submitter.js +13 -11
- package/dist/src/submitters/safe-ima-marionette-submitter.js.map +1 -0
- package/dist/src/submitters/safe-submitter.d.ts +4 -4
- package/dist/src/submitters/safe-submitter.js +4 -3
- package/dist/src/submitters/safe-submitter.js.map +1 -0
- package/dist/src/submitters/safe-to-ima-submitter.d.ts +11 -6
- package/dist/src/submitters/safe-to-ima-submitter.js +23 -15
- package/dist/src/submitters/safe-to-ima-submitter.js.map +1 -0
- package/dist/src/submitters/submitter.d.ts +3 -3
- package/dist/src/submitters/submitter.js +11 -7
- package/dist/src/submitters/submitter.js.map +1 -0
- package/dist/src/submitters/types/marionette.d.ts +6 -3
- package/dist/src/submitters/types/marionette.js +1 -0
- package/dist/src/submitters/types/marionette.js.map +1 -0
- package/dist/src/types/SkaleManifestData.js +1 -0
- package/dist/src/types/SkaleManifestData.js.map +1 -0
- package/dist/src/types/upgrader.d.ts +12 -0
- package/dist/{typechain-types/AccessControlUpgradeable.js → src/types/upgrader.js} +1 -0
- package/dist/src/types/upgrader.js.map +1 -0
- package/dist/src/upgrader.d.ts +27 -12
- package/dist/src/upgrader.js +145 -95
- package/dist/src/upgrader.js.map +1 -0
- package/dist/src/verification.d.ts +2 -2
- package/dist/src/verification.js +69 -28
- package/dist/src/verification.js.map +1 -0
- package/dist/src/verifiers/blockscoutVerifier.d.ts +11 -0
- package/dist/src/verifiers/blockscoutVerifier.js +65 -0
- package/dist/src/verifiers/blockscoutVerifier.js.map +1 -0
- package/dist/src/verifiers/etherscanVerifier.d.ts +19 -0
- package/dist/src/verifiers/etherscanVerifier.js +105 -0
- package/dist/src/verifiers/etherscanVerifier.js.map +1 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.d.ts +7 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.js +60 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.js.map +1 -0
- package/dist/src/version.js +24 -2
- package/dist/src/version.js.map +1 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.d.ts +59 -54
- package/dist/typechain-types/AdminUpgradeabilityProxy.js +1 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.js.map +1 -0
- package/dist/typechain-types/ProxyAdmin.d.ts +94 -137
- package/dist/typechain-types/ProxyAdmin.js +1 -0
- package/dist/typechain-types/ProxyAdmin.js.map +1 -0
- package/dist/typechain-types/common.d.ts +40 -11
- package/dist/typechain-types/common.js +1 -0
- package/dist/typechain-types/common.js.map +1 -0
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.d.ts +71 -41
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js +8 -11
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js.map +1 -0
- package/dist/typechain-types/factories/ProxyAdmin__factory.d.ts +129 -41
- package/dist/typechain-types/factories/ProxyAdmin__factory.js +8 -11
- package/dist/typechain-types/factories/ProxyAdmin__factory.js.map +1 -0
- package/dist/typechain-types/factories/index.d.ts +2 -0
- package/dist/typechain-types/factories/index.js +11 -0
- package/dist/typechain-types/factories/index.js.map +1 -0
- package/dist/typechain-types/index.d.ts +1 -22
- package/dist/typechain-types/index.js +36 -23
- package/dist/typechain-types/index.js.map +1 -0
- package/package.json +23 -27
- package/dist/src/multiSend.d.ts +0 -2
- package/dist/src/multiSend.js +0 -46
- package/dist/typechain-types/AccessControlEnumerableUpgradeable.d.ts +0 -183
- package/dist/typechain-types/AccessControlEnumerableUpgradeable.js +0 -2
- package/dist/typechain-types/AccessControlUpgradeable.d.ts +0 -167
- package/dist/typechain-types/ContextUpgradeable.d.ts +0 -40
- package/dist/typechain-types/ContextUpgradeable.js +0 -2
- package/dist/typechain-types/ERC165Upgradeable.d.ts +0 -53
- package/dist/typechain-types/ERC165Upgradeable.js +0 -2
- package/dist/typechain-types/IAccessControlEnumerableUpgradeable.d.ts +0 -159
- package/dist/typechain-types/IAccessControlEnumerableUpgradeable.js +0 -2
- package/dist/typechain-types/IAccessControlUpgradeable.d.ts +0 -143
- package/dist/typechain-types/IAccessControlUpgradeable.js +0 -2
- package/dist/typechain-types/IERC165Upgradeable.d.ts +0 -43
- package/dist/typechain-types/IERC165Upgradeable.js +0 -2
- package/dist/typechain-types/ISafeMock.d.ts +0 -86
- package/dist/typechain-types/ISafeMock.js +0 -2
- package/dist/typechain-types/Initializable.d.ts +0 -40
- package/dist/typechain-types/Initializable.js +0 -2
- package/dist/typechain-types/OwnableUpgradeable.d.ts +0 -97
- package/dist/typechain-types/OwnableUpgradeable.js +0 -2
- package/dist/typechain-types/SafeMock.d.ts +0 -172
- package/dist/typechain-types/SafeMock.js +0 -2
- package/dist/typechain-types/factories/AccessControlEnumerableUpgradeable__factory.d.ts +0 -35
- package/dist/typechain-types/factories/AccessControlEnumerableUpgradeable__factory.js +0 -279
- package/dist/typechain-types/factories/AccessControlUpgradeable__factory.d.ts +0 -35
- package/dist/typechain-types/factories/AccessControlUpgradeable__factory.js +0 -236
- package/dist/typechain-types/factories/ContextUpgradeable__factory.d.ts +0 -18
- package/dist/typechain-types/factories/ContextUpgradeable__factory.js +0 -32
- package/dist/typechain-types/factories/ERC165Upgradeable__factory.d.ts +0 -35
- package/dist/typechain-types/factories/ERC165Upgradeable__factory.js +0 -51
- package/dist/typechain-types/factories/IAccessControlEnumerableUpgradeable__factory.d.ts +0 -35
- package/dist/typechain-types/factories/IAccessControlEnumerableUpgradeable__factory.js +0 -234
- package/dist/typechain-types/factories/IAccessControlUpgradeable__factory.d.ts +0 -35
- package/dist/typechain-types/factories/IAccessControlUpgradeable__factory.js +0 -191
- package/dist/typechain-types/factories/IERC165Upgradeable__factory.d.ts +0 -22
- package/dist/typechain-types/factories/IERC165Upgradeable__factory.js +0 -38
- package/dist/typechain-types/factories/ISafeMock__factory.d.ts +0 -22
- package/dist/typechain-types/factories/ISafeMock__factory.js +0 -114
- package/dist/typechain-types/factories/Initializable__factory.d.ts +0 -18
- package/dist/typechain-types/factories/Initializable__factory.js +0 -32
- package/dist/typechain-types/factories/OwnableUpgradeable__factory.d.ts +0 -42
- package/dist/typechain-types/factories/OwnableUpgradeable__factory.js +0 -84
- package/dist/typechain-types/factories/SafeMock__factory.d.ts +0 -56
- package/dist/typechain-types/factories/SafeMock__factory.js +0 -247
package/dist/hardhat.config.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import "@nomiclabs/hardhat-ethers";
|
|
1
|
+
import "@typechain/hardhat";
|
|
2
|
+
import "@nomicfoundation/hardhat-ethers";
|
|
4
3
|
import "@openzeppelin/hardhat-upgrades";
|
|
4
|
+
import { HardhatUserConfig } from "hardhat/config";
|
|
5
5
|
declare const config: HardhatUserConfig;
|
|
6
6
|
export default config;
|
package/dist/hardhat.config.js
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("@typechain/hardhat");
|
|
4
|
-
require("@
|
|
4
|
+
require("@nomicfoundation/hardhat-ethers");
|
|
5
5
|
require("@openzeppelin/hardhat-upgrades");
|
|
6
|
+
const coreArtifacts = "node_modules/@openzeppelin/upgrades-core/artifacts/[!b]*.json";
|
|
6
7
|
const config = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
version: '0.8.11',
|
|
11
|
-
settings: {
|
|
12
|
-
optimizer: {
|
|
13
|
-
enabled: true,
|
|
14
|
-
runs: 200
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
|
-
typechain: {
|
|
21
|
-
target: "ethers-v5",
|
|
22
|
-
externalArtifacts: ['node_modules/@openzeppelin/upgrades-core/artifacts/[!b]*.json']
|
|
8
|
+
"typechain": {
|
|
9
|
+
"externalArtifacts": [coreArtifacts],
|
|
10
|
+
"target": "ethers-v6"
|
|
23
11
|
}
|
|
24
12
|
};
|
|
25
13
|
exports.default = config;
|
|
14
|
+
//# sourceMappingURL=hardhat.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardhat.config.js","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":";;AAAA,8BAA4B;AAC5B,2CAAyC;AACzC,0CAAwC;AAIxC,MAAM,aAAa,GACf,+DAA+D,CAAC;AAEpE,MAAM,MAAM,GAAsB;IAC9B,WAAW,EAAE;QACT,mBAAmB,EAAE,CAAC,aAAa,CAAC;QACpC,QAAQ,EAAE,WAAW;KACxB;CACJ,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
package/dist/src/abi.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Interface } from "ethers
|
|
2
|
-
export declare
|
|
1
|
+
import { Interface } from "ethers";
|
|
2
|
+
export declare const getAbi: (contractInterface: Interface) => [];
|
package/dist/src/abi.js
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAbi = void 0;
|
|
4
|
-
|
|
5
|
-
const abi = JSON.parse(contractInterface.
|
|
4
|
+
const getAbi = (contractInterface) => {
|
|
5
|
+
const abi = JSON.parse(contractInterface.formatJson());
|
|
6
6
|
abi.forEach((obj) => {
|
|
7
7
|
if (obj.type === "function") {
|
|
8
8
|
const func = obj;
|
|
9
9
|
func.inputs.concat(func.outputs).forEach((output) => {
|
|
10
|
-
Object.assign(output,
|
|
10
|
+
Object.assign(output, {
|
|
11
|
+
"name": "",
|
|
12
|
+
...output
|
|
13
|
+
});
|
|
11
14
|
});
|
|
12
15
|
}
|
|
13
16
|
});
|
|
14
17
|
return abi;
|
|
15
|
-
}
|
|
18
|
+
};
|
|
16
19
|
exports.getAbi = getAbi;
|
|
20
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/abi.ts"],"names":[],"mappings":";;;AAEO,MAAM,MAAM,GAAG,CAAC,iBAA4B,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAO,CAAC;IAE7D,GAAG,CAAC,OAAO,CAAC,CAAC,GAAmB,EAAE,EAAE;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,GAKZ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;gBACxD,MAAM,CAAC,MAAM,CACT,MAAM,EACN;oBACI,MAAM,EAAE,EAAE;oBACV,GAAG,MAAM;iBACZ,CACJ,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAxBW,QAAA,MAAM,UAwBjB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LinkReferences } from "hardhat/types";
|
|
2
|
+
import { NonceProvider } from "./nonceProvider";
|
|
3
|
+
export declare const getLibrariesNames: (linkReferences: LinkReferences) => string[];
|
|
4
|
+
export declare const getContractFactoryAndUpdateManifest: (contract: string, nonceProvider?: NonceProvider) => Promise<import("ethers").ContractFactory<any[], import("ethers").BaseContract>>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContractFactoryAndUpdateManifest = exports.getLibrariesNames = void 0;
|
|
4
|
+
const hardhat_1 = require("hardhat");
|
|
5
|
+
const deploy_1 = require("./deploy");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const upgrades_core_1 = require("@openzeppelin/upgrades-core");
|
|
8
|
+
const getSkaleManifest = async () => {
|
|
9
|
+
const manifest = JSON.parse(await fs_1.promises.readFile(await (0, deploy_1.getManifestFile)(), "utf-8"));
|
|
10
|
+
if (typeof manifest.libraries === "undefined") {
|
|
11
|
+
manifest.libraries = {};
|
|
12
|
+
}
|
|
13
|
+
return manifest;
|
|
14
|
+
};
|
|
15
|
+
const loadBytesCodes = async (libraryNames) => {
|
|
16
|
+
const byteCodes = new Map();
|
|
17
|
+
(await Promise.
|
|
18
|
+
all(libraryNames.map((libraryName) => (async () => {
|
|
19
|
+
const { bytecode } = await hardhat_1.artifacts.readArtifact(libraryName);
|
|
20
|
+
return [
|
|
21
|
+
libraryName,
|
|
22
|
+
bytecode
|
|
23
|
+
];
|
|
24
|
+
})()))).forEach(([libraryName, bytecode]) => {
|
|
25
|
+
byteCodes.set(libraryName, bytecode);
|
|
26
|
+
});
|
|
27
|
+
return byteCodes;
|
|
28
|
+
};
|
|
29
|
+
const updateManifest = async (manifest, libraries, oldLibraries) => {
|
|
30
|
+
const byteCodes = await loadBytesCodes(Array.from(libraries.keys()));
|
|
31
|
+
for (const [libraryName, libraryAddress] of libraries.entries()) {
|
|
32
|
+
manifest.libraries[libraryName] = {
|
|
33
|
+
"address": libraryAddress,
|
|
34
|
+
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(byteCodes.get(libraryName))
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
Object.assign(libraries, oldLibraries);
|
|
38
|
+
const indentation = 4;
|
|
39
|
+
await fs_1.promises.writeFile(await (0, deploy_1.getManifestFile)(), JSON.stringify(manifest, null, indentation));
|
|
40
|
+
};
|
|
41
|
+
const getLibrariesNames = (linkReferences) => {
|
|
42
|
+
const libraryNames = [];
|
|
43
|
+
for (const libraryFile of Object.values(linkReferences)) {
|
|
44
|
+
libraryNames.push(...Object.keys(libraryFile));
|
|
45
|
+
}
|
|
46
|
+
return libraryNames;
|
|
47
|
+
};
|
|
48
|
+
exports.getLibrariesNames = getLibrariesNames;
|
|
49
|
+
const getLibrariesToUpgrade = async (manifest, linkReferences) => {
|
|
50
|
+
const librariesToUpgrade = [];
|
|
51
|
+
const oldLibraries = {};
|
|
52
|
+
const librariesNames = (0, exports.getLibrariesNames)(linkReferences);
|
|
53
|
+
const byteCodes = await loadBytesCodes(librariesNames);
|
|
54
|
+
for (const libraryName of librariesNames) {
|
|
55
|
+
if (typeof manifest.libraries[libraryName] === "undefined") {
|
|
56
|
+
librariesToUpgrade.push(libraryName);
|
|
57
|
+
}
|
|
58
|
+
else if ((0, upgrades_core_1.hashBytecode)(byteCodes.get(libraryName)) ===
|
|
59
|
+
manifest.libraries[libraryName].bytecodeHash) {
|
|
60
|
+
oldLibraries[libraryName] =
|
|
61
|
+
manifest.libraries[libraryName].address;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
librariesToUpgrade.push(libraryName);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
librariesToUpgrade,
|
|
69
|
+
oldLibraries
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const getContractFactoryAndUpdateManifest = async (contract, nonceProvider) => {
|
|
73
|
+
const { linkReferences } = await hardhat_1.artifacts.readArtifact(contract);
|
|
74
|
+
if (!Object.keys(linkReferences).length) {
|
|
75
|
+
return await hardhat_1.ethers.getContractFactory(contract);
|
|
76
|
+
}
|
|
77
|
+
const manifest = await getSkaleManifest();
|
|
78
|
+
const { librariesToUpgrade, oldLibraries } = await getLibrariesToUpgrade(manifest, linkReferences);
|
|
79
|
+
const libraries = await (0, deploy_1.deployLibraries)(librariesToUpgrade, nonceProvider);
|
|
80
|
+
await updateManifest(manifest, libraries, oldLibraries);
|
|
81
|
+
return await hardhat_1.ethers.getContractFactory(contract, { "libraries": Object.fromEntries(libraries) });
|
|
82
|
+
};
|
|
83
|
+
exports.getContractFactoryAndUpdateManifest = getContractFactoryAndUpdateManifest;
|
|
84
|
+
//# sourceMappingURL=contractFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractFactory.js","sourceRoot":"","sources":["../../src/contractFactory.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,qCAGkB;AAIlB,2BAAkC;AAClC,+DAAyD;AAGzD,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,aAAE,CAAC,QAAQ,CACzC,MAAM,IAAA,wBAAe,GAAE,EACvB,OAAO,CACV,CAAC,CAAC;IACH,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QAC5C,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,QAA6B,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,YAAsB,EAAE,EAAE;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,CAAC,MAAM,OAAO;QACV,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO;YACH,WAAW;YACX,QAAQ;SACX,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACjB,WAAW,EACX,QAAQ,CACX,EAAE,EAAE;QACD,SAAS,CAAC,GAAG,CACT,WAAW,EACX,QAAQ,CACX,CAAC;IACN,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EACxB,QAA2B,EAC3B,SAA8B,EAC9B,YAAmC,EACrC,EAAE;IACA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,CACP,WAAW,EACX,cAAc,CACjB,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG;YAC9B,SAAS,EAAE,cAAc;YACzB,cAAc,EAAE,IAAA,4BAAY,EAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;SACrE,CAAC;IACN,CAAC;IACD,MAAM,CAAC,MAAM,CACT,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,aAAE,CAAC,SAAS,CACd,MAAM,IAAA,wBAAe,GAAE,EACvB,IAAI,CAAC,SAAS,CACV,QAAQ,EACR,IAAI,EACJ,WAAW,CACd,CACJ,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,cAA8B,EAAE,EAAE;IAChE,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACtD,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAC/B,QAA2B,EAC3B,cAA8B,EAChC,EAAE;IACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC9B,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,cAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC;IACvD,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;QACvC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE,CAAC;YACzD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;aAAM,IACH,IAAA,4BAAY,EAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;YAC9C,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,YAAY,EAClD,CAAC;YACC,YAAY,CAAC,WAAW,CAAC;gBACjB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IACD,OAAO;QACH,kBAAkB;QAClB,YAAY;KACf,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAG,KAAK,EACpD,QAAgB,EAChB,aAA6B,EAC/B,EAAE;IACA,MAAM,EAAC,cAAc,EAAC,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,MAAM,gBAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE1C,MAAM,EACF,kBAAkB,EAClB,YAAY,EACf,GAAG,MAAM,qBAAqB,CAC3B,QAAQ,EACR,cAAc,CACjB,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAe,EACnC,kBAAkB,EAClB,aAAa,CAChB,CAAC;IACF,MAAM,cAAc,CAChB,QAAQ,EACR,SAAS,EACT,YAAY,CACf,CAAC;IACF,OAAO,MAAM,gBAAM,CAAC,kBAAkB,CAClC,QAAQ,EACR,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,CAC/C,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,mCAAmC,uCA+B9C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ValidationResponse } from "@nomicfoundation/hardhat-verify/internal/utilities";
|
|
2
|
+
export interface VerificationTarget {
|
|
3
|
+
contractName: string;
|
|
4
|
+
contractAddress: string;
|
|
5
|
+
}
|
|
6
|
+
export interface VerificationRequestParameters {
|
|
7
|
+
solcInputJson: string;
|
|
8
|
+
fullContractName: string;
|
|
9
|
+
compilerVersion: string;
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class ContractVerifier {
|
|
12
|
+
abstract name: string;
|
|
13
|
+
private readonly PROXY_CONTRACT_NAME;
|
|
14
|
+
verify: (verificationTarget: VerificationTarget, attempts?: number) => Promise<void>;
|
|
15
|
+
attemptVerification(verificationTarget: VerificationTarget): Promise<boolean>;
|
|
16
|
+
protected abstract isAlreadyVerified(verificationTarget: VerificationTarget): Promise<boolean>;
|
|
17
|
+
protected abstract submitVerificationRequest(target: VerificationTarget, params: VerificationRequestParameters): Promise<ValidationResponse>;
|
|
18
|
+
protected abstract getContractUrl(verificationTarget: VerificationTarget): string;
|
|
19
|
+
protected getVerifyParameters(contractName: string): Promise<{
|
|
20
|
+
compilerVersion: string;
|
|
21
|
+
fullContractName: string;
|
|
22
|
+
solcInputJson: string;
|
|
23
|
+
}>;
|
|
24
|
+
private checkVerificationStatus;
|
|
25
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ContractVerifier = void 0;
|
|
7
|
+
const hardhat_1 = require("hardhat");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const TransparentUpgradeableProxy_json_1 = __importDefault(require("@openzeppelin/upgrades-core/artifacts/@openzeppelin/contracts-v5/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json"));
|
|
10
|
+
const build_info_v5_json_1 = __importDefault(require("@openzeppelin/upgrades-core/artifacts/build-info-v5.json"));
|
|
11
|
+
const DEFAULT_RETRIES_AMOUNT = 5;
|
|
12
|
+
class ContractVerifier {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.PROXY_CONTRACT_NAME = "TransparentUpgradeableProxy";
|
|
15
|
+
this.verify = async (verificationTarget, attempts = DEFAULT_RETRIES_AMOUNT) => {
|
|
16
|
+
const limit = 0;
|
|
17
|
+
if (attempts > limit) {
|
|
18
|
+
if (!await this.attemptVerification(verificationTarget)) {
|
|
19
|
+
const failedAttempts = 1;
|
|
20
|
+
await this.verify(verificationTarget, attempts - failedAttempts);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async attemptVerification(verificationTarget) {
|
|
26
|
+
if (await this.isAlreadyVerified(verificationTarget)) {
|
|
27
|
+
console.log(chalk_1.default.cyan(`${verificationTarget.contractName} is already verified on ${this.name}:\n${this.getContractUrl(verificationTarget)}`));
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
const params = await this.getVerifyParameters(verificationTarget.contractName);
|
|
31
|
+
try {
|
|
32
|
+
const response = await this.submitVerificationRequest(verificationTarget, params);
|
|
33
|
+
return this.checkVerificationStatus(verificationTarget, response);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.log(chalk_1.default.yellow(`Verification attempt for ${verificationTarget.contractName} failed on ${this.name} with error: ${error}`));
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async getVerifyParameters(contractName) {
|
|
41
|
+
if (contractName === this.PROXY_CONTRACT_NAME) {
|
|
42
|
+
return {
|
|
43
|
+
compilerVersion: build_info_v5_json_1.default.solcLongVersion,
|
|
44
|
+
fullContractName: `${TransparentUpgradeableProxy_json_1.default.sourceName}:${contractName}`,
|
|
45
|
+
solcInputJson: JSON.stringify(build_info_v5_json_1.default.input)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const artifact = await hardhat_1.artifacts.readArtifact(contractName);
|
|
49
|
+
const fullContractName = `${artifact.sourceName}:${contractName}`;
|
|
50
|
+
const buildInfo = await hardhat_1.artifacts.getBuildInfo(fullContractName);
|
|
51
|
+
if (!buildInfo) {
|
|
52
|
+
throw new Error(`No build-info for ${contractName}`);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
compilerVersion: buildInfo.solcLongVersion,
|
|
56
|
+
fullContractName,
|
|
57
|
+
solcInputJson: JSON.stringify(buildInfo.input)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Private
|
|
61
|
+
checkVerificationStatus(verificationTarget, response) {
|
|
62
|
+
if (response.isFailure()) {
|
|
63
|
+
console.log(chalk_1.default.red(`Failed to verify contract ${verificationTarget.contractName}`));
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
console.log(chalk_1.default.cyan(`${verificationTarget.contractName} is successfully verified on ${this.name}:\n${this.getContractUrl(verificationTarget)}`));
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.ContractVerifier = ContractVerifier;
|
|
71
|
+
//# sourceMappingURL=contractVerifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractVerifier.js","sourceRoot":"","sources":["../../src/contractVerifier.ts"],"names":[],"mappings":"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"}
|
package/dist/src/deploy.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
1
|
+
import { NonceProvider } from "./nonceProvider";
|
|
2
|
+
export declare const deployLibrariesSequential: (libraryNames: string[], nonceProvider?: NonceProvider) => Promise<Map<string, string>>;
|
|
3
|
+
export declare const deployLibraries: (libraryNames: string[], nonceProvider?: NonceProvider) => Promise<Map<string, string>>;
|
|
4
|
+
export declare const getManifestFile: () => Promise<string>;
|
|
5
|
+
export declare const getContractFactory: (contract: string) => Promise<import("ethers").ContractFactory<any[], import("ethers").BaseContract>>;
|
package/dist/src/deploy.js
CHANGED
|
@@ -1,77 +1,96 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getContractFactory = exports.getManifestFile = exports.
|
|
3
|
+
exports.getContractFactory = exports.getManifestFile = exports.deployLibraries = exports.deployLibrariesSequential = void 0;
|
|
4
4
|
const upgrades_core_1 = require("@openzeppelin/upgrades-core");
|
|
5
5
|
const hardhat_1 = require("hardhat");
|
|
6
|
+
const nonceProvider_1 = require("./nonceProvider");
|
|
6
7
|
const fs_1 = require("fs");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
await
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
8
|
+
const contractFactory_1 = require("./contractFactory");
|
|
9
|
+
const deployLibrary = async (libraryName, nonceProvider) => {
|
|
10
|
+
const Library = await hardhat_1.ethers.getContractFactory(libraryName);
|
|
11
|
+
const library = await Library.
|
|
12
|
+
deploy({ "nonce": nonceProvider.reserveNonce() });
|
|
13
|
+
await library.waitForDeployment();
|
|
14
|
+
return await library.getAddress();
|
|
15
|
+
};
|
|
16
|
+
const deployLibrariesSequential = async (libraryNames, nonceProvider) => {
|
|
17
|
+
const [deployer] = await hardhat_1.ethers.getSigners();
|
|
18
|
+
const initializedNonceProvider = nonceProvider ??
|
|
19
|
+
await nonceProvider_1.NonceProvider.createForWallet(deployer);
|
|
13
20
|
const libraries = new Map();
|
|
14
|
-
for (const
|
|
15
|
-
|
|
21
|
+
for (const lib of libraryNames) {
|
|
22
|
+
// Parallelization can't occur in testing environment (no mempool for transactions)
|
|
23
|
+
// eslint-disable-next-line no-await-in-loop
|
|
24
|
+
libraries.set(lib, await deployLibrary(lib, initializedNonceProvider));
|
|
16
25
|
}
|
|
17
26
|
return libraries;
|
|
18
|
-
}
|
|
27
|
+
};
|
|
28
|
+
exports.deployLibrariesSequential = deployLibrariesSequential;
|
|
29
|
+
const deployLibraries = async (libraryNames, nonceProvider) => {
|
|
30
|
+
const [deployer] = await hardhat_1.ethers.getSigners();
|
|
31
|
+
const initializedNonceProvider = nonceProvider ??
|
|
32
|
+
await nonceProvider_1.NonceProvider.createForWallet(deployer);
|
|
33
|
+
const libraries = new Map();
|
|
34
|
+
(await Promise.all(libraryNames.map((libraryName) => (async () => [
|
|
35
|
+
libraryName,
|
|
36
|
+
await deployLibrary(libraryName, initializedNonceProvider)
|
|
37
|
+
])()))).forEach(([libraryName, libraryAddress]) => {
|
|
38
|
+
libraries.set(libraryName, libraryAddress);
|
|
39
|
+
});
|
|
40
|
+
return libraries;
|
|
41
|
+
};
|
|
19
42
|
exports.deployLibraries = deployLibraries;
|
|
20
|
-
function
|
|
21
|
-
let bytecode = artifact.bytecode;
|
|
22
|
-
for (const [, fileReferences] of Object.entries(artifact.linkReferences)) {
|
|
23
|
-
for (const [libName, fixups] of Object.entries(fileReferences)) {
|
|
24
|
-
const addr = libraries.get(libName);
|
|
25
|
-
if (addr === undefined) {
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
for (const fixup of fixups) {
|
|
29
|
-
bytecode =
|
|
30
|
-
bytecode.substr(0, 2 + fixup.start * 2) +
|
|
31
|
-
addr.substr(2) +
|
|
32
|
-
bytecode.substr(2 + (fixup.start + fixup.length) * 2);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return bytecode;
|
|
37
|
-
}
|
|
38
|
-
async function getLinkedContractFactory(contractName, libraries) {
|
|
39
|
-
const cArtifact = await hardhat_1.artifacts.readArtifact(contractName), linkedBytecode = _linkBytecode(cArtifact, libraries), ContractFactory = await hardhat_1.ethers.getContractFactory(cArtifact.abi, linkedBytecode);
|
|
40
|
-
return ContractFactory;
|
|
41
|
-
}
|
|
42
|
-
exports.getLinkedContractFactory = getLinkedContractFactory;
|
|
43
|
-
async function getManifestFile() {
|
|
43
|
+
const getManifestFile = async function getManifestFile() {
|
|
44
44
|
return (await upgrades_core_1.Manifest.forNetwork(hardhat_1.ethers.provider)).file;
|
|
45
|
-
}
|
|
45
|
+
};
|
|
46
46
|
exports.getManifestFile = getManifestFile;
|
|
47
|
-
async
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
const libraryNames = [];
|
|
52
|
-
for (const key of Object.keys(linkReferences)) {
|
|
53
|
-
const libraryName = Object.keys(linkReferences[key])[0];
|
|
54
|
-
libraryNames.push(libraryName);
|
|
47
|
+
const updateManifest = async (libraryArtifacts) => {
|
|
48
|
+
const manifest = JSON.parse(await fs_1.promises.readFile(await (0, exports.getManifestFile)(), "utf-8"));
|
|
49
|
+
if (typeof manifest.libraries === "undefined") {
|
|
50
|
+
Object.assign(manifest, { "libraries": libraryArtifacts });
|
|
55
51
|
}
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
else {
|
|
53
|
+
Object.assign(libraryArtifacts, manifest.libraries);
|
|
54
|
+
}
|
|
55
|
+
const indentation = 4;
|
|
56
|
+
await fs_1.promises.writeFile(await (0, exports.getManifestFile)(), JSON.stringify(manifest, null, indentation));
|
|
57
|
+
};
|
|
58
|
+
const getLibraryArtifacts = async (libraries) => {
|
|
59
|
+
const libraryArtifacts = {};
|
|
60
|
+
const getLibraryArtifact = async (libraryName, libraryAddress) => {
|
|
58
61
|
const { bytecode } = await hardhat_1.artifacts.readArtifact(libraryName);
|
|
59
|
-
|
|
62
|
+
return {
|
|
60
63
|
"address": libraryAddress,
|
|
61
|
-
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode)
|
|
64
|
+
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode),
|
|
65
|
+
libraryName
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
for (const libraryArtifact of await Promise.
|
|
69
|
+
all(Array.from(libraries.entries()).map(([libraryName, libraryAddress]) => getLibraryArtifact(libraryName, libraryAddress)))) {
|
|
70
|
+
libraryArtifacts[libraryArtifact.libraryName] = {
|
|
71
|
+
"address": libraryArtifact.address,
|
|
72
|
+
"bytecodeHash": libraryArtifact.bytecodeHash
|
|
62
73
|
};
|
|
63
74
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
return libraryArtifacts;
|
|
76
|
+
};
|
|
77
|
+
const getContractFactory = async (contract) => {
|
|
78
|
+
const { linkReferences } = await hardhat_1.artifacts.readArtifact(contract);
|
|
79
|
+
if (!Object.keys(linkReferences).length) {
|
|
80
|
+
return await hardhat_1.ethers.getContractFactory(contract);
|
|
68
81
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
const libraryNames = (0, contractFactory_1.getLibrariesNames)(linkReferences);
|
|
83
|
+
const { chainId } = await hardhat_1.ethers.provider.getNetwork();
|
|
84
|
+
const libraries = await (async () => {
|
|
85
|
+
const hardhatChainId = 31337n;
|
|
86
|
+
if (chainId === hardhatChainId) {
|
|
87
|
+
return await (0, exports.deployLibrariesSequential)(libraryNames);
|
|
72
88
|
}
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
return await (0, exports.deployLibraries)(libraryNames);
|
|
90
|
+
})();
|
|
91
|
+
const libraryArtifacts = await getLibraryArtifacts(libraries);
|
|
92
|
+
await updateManifest(libraryArtifacts);
|
|
93
|
+
return await hardhat_1.ethers.getContractFactory(contract, { "libraries": Object.fromEntries(libraries) });
|
|
94
|
+
};
|
|
77
95
|
exports.getContractFactory = getContractFactory;
|
|
96
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXIT_CODES = void 0;
|
|
4
|
+
var EXIT_CODES;
|
|
5
|
+
(function (EXIT_CODES) {
|
|
6
|
+
EXIT_CODES[EXIT_CODES["SUCCESS"] = 0] = "SUCCESS";
|
|
7
|
+
EXIT_CODES[EXIT_CODES["BAD_VERSION"] = 1] = "BAD_VERSION";
|
|
8
|
+
EXIT_CODES[EXIT_CODES["NOT_ATOMIC_UPGRADE"] = 2] = "NOT_ATOMIC_UPGRADE";
|
|
9
|
+
EXIT_CODES[EXIT_CODES["UNKNOWN_SAFE_ADDRESS"] = 3] = "UNKNOWN_SAFE_ADDRESS";
|
|
10
|
+
EXIT_CODES[EXIT_CODES["UNKNOWN_IMA"] = 4] = "UNKNOWN_IMA";
|
|
11
|
+
EXIT_CODES[EXIT_CODES["UNKNOWN_MAINNET_ENDPOINT"] = 5] = "UNKNOWN_MAINNET_ENDPOINT";
|
|
12
|
+
})(EXIT_CODES || (exports.EXIT_CODES = EXIT_CODES = {}));
|
|
13
|
+
//# sourceMappingURL=exitCodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/exitCodes.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,iDAAO,CAAA;IACP,yDAAW,CAAA;IACX,uEAAkB,CAAA;IAClB,2EAAoB,CAAA;IACpB,yDAAW,CAAA;IACX,mFAAwB,CAAA;AAC5B,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare
|
|
1
|
+
import { Transaction } from "ethers";
|
|
2
|
+
export declare const createMultiSendTransaction: (safeAddress: string, chainId: bigint, transactions: Transaction[]) => Promise<void>;
|