@skalenetwork/upgrade-tools 0.0.1-custom.4 → 0.0.1-custom.8
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/deploy.d.ts +5 -0
- package/dist/deploy.js +99 -0
- package/dist/hardhat.config.d.ts +2 -0
- package/dist/hardhat.config.js +20 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +7 -1
- package/dist/src/abi.d.ts +2 -0
- package/dist/src/abi.js +16 -0
- package/dist/src/deploy.d.ts +5 -0
- package/dist/src/deploy.js +99 -0
- package/dist/src/gnosis-safe.d.ts +25 -0
- package/dist/src/gnosis-safe.js +209 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +19 -0
- package/dist/src/multiSend.d.ts +2 -0
- package/dist/src/multiSend.js +46 -0
- package/dist/src/types.d.ts +12 -0
- package/dist/src/types.js +2 -0
- package/dist/src/upgrade.d.ts +6 -0
- package/dist/src/upgrade.js +202 -0
- package/dist/src/verification.d.ts +2 -0
- package/dist/src/verification.js +53 -0
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +34 -0
- package/dist/typechain-types/AccessControlEnumerableUpgradeable.d.ts +175 -0
- package/dist/typechain-types/AccessControlEnumerableUpgradeable.js +2 -0
- package/dist/typechain-types/AccessControlUpgradeable.d.ts +159 -0
- package/dist/typechain-types/AccessControlUpgradeable.js +2 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.d.ts +145 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.js +2 -0
- package/dist/typechain-types/ERC165Upgradeable.d.ts +43 -0
- package/dist/typechain-types/ERC165Upgradeable.js +2 -0
- package/dist/typechain-types/IAccessControlEnumerableUpgradeable.d.ts +159 -0
- package/dist/typechain-types/IAccessControlEnumerableUpgradeable.js +2 -0
- package/dist/typechain-types/IAccessControlUpgradeable.d.ts +143 -0
- package/dist/typechain-types/IAccessControlUpgradeable.js +2 -0
- package/dist/typechain-types/IERC165Upgradeable.d.ts +43 -0
- package/dist/typechain-types/IERC165Upgradeable.js +2 -0
- package/dist/typechain-types/ISafeMock.d.ts +67 -0
- package/dist/typechain-types/ISafeMock.js +2 -0
- package/dist/typechain-types/OwnableUpgradeable.d.ts +89 -0
- package/dist/typechain-types/OwnableUpgradeable.js +2 -0
- package/dist/typechain-types/ProxyAdmin.d.ts +153 -0
- package/dist/typechain-types/ProxyAdmin.js +2 -0
- package/dist/typechain-types/SafeMock.d.ts +129 -0
- package/dist/typechain-types/SafeMock.js +2 -0
- package/dist/typechain-types/common.d.ts +21 -0
- package/dist/typechain-types/common.js +2 -0
- package/dist/typechain-types/factories/AccessControlEnumerableUpgradeable__factory.d.ts +35 -0
- package/dist/typechain-types/factories/AccessControlEnumerableUpgradeable__factory.js +266 -0
- package/dist/typechain-types/factories/AccessControlUpgradeable__factory.d.ts +35 -0
- package/dist/typechain-types/factories/AccessControlUpgradeable__factory.js +223 -0
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.d.ts +74 -0
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js +187 -0
- package/dist/typechain-types/factories/ERC165Upgradeable__factory.d.ts +22 -0
- package/dist/typechain-types/factories/ERC165Upgradeable__factory.js +38 -0
- package/dist/typechain-types/factories/IAccessControlEnumerableUpgradeable__factory.d.ts +35 -0
- package/dist/typechain-types/factories/IAccessControlEnumerableUpgradeable__factory.js +234 -0
- package/dist/typechain-types/factories/IAccessControlUpgradeable__factory.d.ts +35 -0
- package/dist/typechain-types/factories/IAccessControlUpgradeable__factory.js +191 -0
- package/dist/typechain-types/factories/IERC165Upgradeable__factory.d.ts +22 -0
- package/dist/typechain-types/factories/IERC165Upgradeable__factory.js +38 -0
- package/dist/typechain-types/factories/ISafeMock__factory.d.ts +18 -0
- package/dist/typechain-types/factories/ISafeMock__factory.js +50 -0
- package/dist/typechain-types/factories/OwnableUpgradeable__factory.d.ts +42 -0
- package/dist/typechain-types/factories/OwnableUpgradeable__factory.js +71 -0
- package/dist/typechain-types/factories/ProxyAdmin__factory.d.ts +49 -0
- package/dist/typechain-types/factories/ProxyAdmin__factory.js +192 -0
- package/dist/typechain-types/factories/SafeMock__factory.d.ts +63 -0
- package/dist/typechain-types/factories/SafeMock__factory.js +144 -0
- package/dist/typechain-types/index.d.ts +22 -0
- package/dist/typechain-types/index.js +25 -0
- package/dist/upgrade.d.ts +6 -0
- package/dist/upgrade.js +209 -0
- package/package.json +15 -5
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Signer, ContractFactory, Overrides } from "ethers";
|
|
2
|
+
import { Provider, TransactionRequest } from "@ethersproject/providers";
|
|
3
|
+
import type { SafeMock, SafeMockInterface } from "../SafeMock";
|
|
4
|
+
declare type SafeMockConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
|
|
5
|
+
export declare class SafeMock__factory extends ContractFactory {
|
|
6
|
+
constructor(...args: SafeMockConstructorParams);
|
|
7
|
+
deploy(overrides?: Overrides & {
|
|
8
|
+
from?: string | Promise<string>;
|
|
9
|
+
}): Promise<SafeMock>;
|
|
10
|
+
getDeployTransaction(overrides?: Overrides & {
|
|
11
|
+
from?: string | Promise<string>;
|
|
12
|
+
}): TransactionRequest;
|
|
13
|
+
attach(address: string): SafeMock;
|
|
14
|
+
connect(signer: Signer): SafeMock__factory;
|
|
15
|
+
static readonly contractName: "SafeMock";
|
|
16
|
+
readonly contractName: "SafeMock";
|
|
17
|
+
static readonly bytecode = "0x608060405234801561001057600080fd5b50600054610100900460ff1661002c5760005460ff1615610034565b610034610100565b61009c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff161580156100be576000805461ffff19166101011790555b6100d061011b60201b6102cd1760201c565b6040805160208101909152600081526100e890610186565b80156100fa576000805461ff00191690555b5061031c565b60006101153061020e60201b6103041760201c565b15905090565b600054610100900460ff166101745760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b61017c610214565b61018461026d565b565b805160205b81811015610209578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101d057600181146101e0576101eb565b6000808585888a5af191506101eb565b6000808585895af491505b50806101f657600080fd5b505080605501850194505050505061018b565b505050565b3b151590565b600054610100900460ff166101845760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b600054610100900460ff166102c65760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b61018433603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6105a28061032b6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806312cc533f14610067578063715018a61461007c57806388f8bae1146100845780638d80ff0a146100a15780638da5cb5b146100b4578063f2fde38b146100cf575b600080fd5b61007a6100753660046103c8565b6100e2565b005b61007a610174565b61008c600181565b60405190151581526020015b60405180910390f35b61007a6100af366004610417565b6101aa565b6033546040516001600160a01b039091168152602001610098565b61007a6100dd3660046104c8565b610232565b6033546001600160a01b031633146101155760405162461bcd60e51b815260040161010c906104ec565b60405180910390fd5b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b15801561015857600080fd5b505af115801561016c573d6000803e3d6000fd5b505050505050565b6033546001600160a01b0316331461019e5760405162461bcd60e51b815260040161010c906104ec565b6101a8600061030a565b565b805160205b8181101561022d578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101f457600181146102045761020f565b6000808585888a5af1915061020f565b6000808585895af491505b508061021a57600080fd5b50508060550185019450505050506101af565b505050565b6033546001600160a01b0316331461025c5760405162461bcd60e51b815260040161010c906104ec565b6001600160a01b0381166102c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161010c565b6102ca8161030a565b50565b600054610100900460ff166102f45760405162461bcd60e51b815260040161010c90610521565b6102fc61035c565b6101a8610383565b3b151590565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166101a85760405162461bcd60e51b815260040161010c90610521565b600054610100900460ff166103aa5760405162461bcd60e51b815260040161010c90610521565b6101a83361030a565b6001600160a01b03811681146102ca57600080fd5b600080604083850312156103db57600080fd5b82356103e6816103b3565b915060208301356103f6816103b3565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561042957600080fd5b813567ffffffffffffffff8082111561044157600080fd5b818401915084601f83011261045557600080fd5b81358181111561046757610467610401565b604051601f8201601f19908116603f0116810190838211818310171561048f5761048f610401565b816040528281528760208487010111156104a857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156104da57600080fd5b81356104e5816103b3565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220c9256b47239ae527b6dd7e31befec9077aa19a94d39ff4f970aca9da687f11f764736f6c634300080b0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
|
|
18
|
+
static readonly abi: ({
|
|
19
|
+
inputs: never[];
|
|
20
|
+
stateMutability: string;
|
|
21
|
+
type: string;
|
|
22
|
+
anonymous?: undefined;
|
|
23
|
+
name?: undefined;
|
|
24
|
+
outputs?: undefined;
|
|
25
|
+
} | {
|
|
26
|
+
anonymous: boolean;
|
|
27
|
+
inputs: {
|
|
28
|
+
indexed: boolean;
|
|
29
|
+
internalType: string;
|
|
30
|
+
name: string;
|
|
31
|
+
type: string;
|
|
32
|
+
}[];
|
|
33
|
+
name: string;
|
|
34
|
+
type: string;
|
|
35
|
+
stateMutability?: undefined;
|
|
36
|
+
outputs?: undefined;
|
|
37
|
+
} | {
|
|
38
|
+
inputs: never[];
|
|
39
|
+
name: string;
|
|
40
|
+
outputs: {
|
|
41
|
+
internalType: string;
|
|
42
|
+
name: string;
|
|
43
|
+
type: string;
|
|
44
|
+
}[];
|
|
45
|
+
stateMutability: string;
|
|
46
|
+
type: string;
|
|
47
|
+
anonymous?: undefined;
|
|
48
|
+
} | {
|
|
49
|
+
inputs: {
|
|
50
|
+
internalType: string;
|
|
51
|
+
name: string;
|
|
52
|
+
type: string;
|
|
53
|
+
}[];
|
|
54
|
+
name: string;
|
|
55
|
+
outputs: never[];
|
|
56
|
+
stateMutability: string;
|
|
57
|
+
type: string;
|
|
58
|
+
anonymous?: undefined;
|
|
59
|
+
})[];
|
|
60
|
+
static createInterface(): SafeMockInterface;
|
|
61
|
+
static connect(address: string, signerOrProvider: Signer | Provider): SafeMock;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeMock__factory = void 0;
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
/* tslint:disable */
|
|
6
|
+
/* eslint-disable */
|
|
7
|
+
const ethers_1 = require("ethers");
|
|
8
|
+
const _abi = [
|
|
9
|
+
{
|
|
10
|
+
inputs: [],
|
|
11
|
+
stateMutability: "nonpayable",
|
|
12
|
+
type: "constructor",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
anonymous: false,
|
|
16
|
+
inputs: [
|
|
17
|
+
{
|
|
18
|
+
indexed: true,
|
|
19
|
+
internalType: "address",
|
|
20
|
+
name: "previousOwner",
|
|
21
|
+
type: "address",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
indexed: true,
|
|
25
|
+
internalType: "address",
|
|
26
|
+
name: "newOwner",
|
|
27
|
+
type: "address",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
name: "OwnershipTransferred",
|
|
31
|
+
type: "event",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
inputs: [],
|
|
35
|
+
name: "IS_SAFE_MOCK",
|
|
36
|
+
outputs: [
|
|
37
|
+
{
|
|
38
|
+
internalType: "bool",
|
|
39
|
+
name: "",
|
|
40
|
+
type: "bool",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
stateMutability: "view",
|
|
44
|
+
type: "function",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
inputs: [
|
|
48
|
+
{
|
|
49
|
+
internalType: "bytes",
|
|
50
|
+
name: "transactions",
|
|
51
|
+
type: "bytes",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
name: "multiSend",
|
|
55
|
+
outputs: [],
|
|
56
|
+
stateMutability: "nonpayable",
|
|
57
|
+
type: "function",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
inputs: [],
|
|
61
|
+
name: "owner",
|
|
62
|
+
outputs: [
|
|
63
|
+
{
|
|
64
|
+
internalType: "address",
|
|
65
|
+
name: "",
|
|
66
|
+
type: "address",
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
stateMutability: "view",
|
|
70
|
+
type: "function",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
inputs: [],
|
|
74
|
+
name: "renounceOwnership",
|
|
75
|
+
outputs: [],
|
|
76
|
+
stateMutability: "nonpayable",
|
|
77
|
+
type: "function",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
inputs: [
|
|
81
|
+
{
|
|
82
|
+
internalType: "address",
|
|
83
|
+
name: "newOwner",
|
|
84
|
+
type: "address",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
name: "transferOwnership",
|
|
88
|
+
outputs: [],
|
|
89
|
+
stateMutability: "nonpayable",
|
|
90
|
+
type: "function",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
inputs: [
|
|
94
|
+
{
|
|
95
|
+
internalType: "contract OwnableUpgradeable",
|
|
96
|
+
name: "proxyAdmin",
|
|
97
|
+
type: "address",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
internalType: "address",
|
|
101
|
+
name: "newOwner",
|
|
102
|
+
type: "address",
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
name: "transferProxyAdminOwnership",
|
|
106
|
+
outputs: [],
|
|
107
|
+
stateMutability: "nonpayable",
|
|
108
|
+
type: "function",
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
const _bytecode = "0x608060405234801561001057600080fd5b50600054610100900460ff1661002c5760005460ff1615610034565b610034610100565b61009c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff161580156100be576000805461ffff19166101011790555b6100d061011b60201b6102cd1760201c565b6040805160208101909152600081526100e890610186565b80156100fa576000805461ff00191690555b5061031c565b60006101153061020e60201b6103041760201c565b15905090565b600054610100900460ff166101745760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b61017c610214565b61018461026d565b565b805160205b81811015610209578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101d057600181146101e0576101eb565b6000808585888a5af191506101eb565b6000808585895af491505b50806101f657600080fd5b505080605501850194505050505061018b565b505050565b3b151590565b600054610100900460ff166101845760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b600054610100900460ff166102c65760405162461bcd60e51b815260206004820152602b60248201526000805160206108cd83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610093565b61018433603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6105a28061032b6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806312cc533f14610067578063715018a61461007c57806388f8bae1146100845780638d80ff0a146100a15780638da5cb5b146100b4578063f2fde38b146100cf575b600080fd5b61007a6100753660046103c8565b6100e2565b005b61007a610174565b61008c600181565b60405190151581526020015b60405180910390f35b61007a6100af366004610417565b6101aa565b6033546040516001600160a01b039091168152602001610098565b61007a6100dd3660046104c8565b610232565b6033546001600160a01b031633146101155760405162461bcd60e51b815260040161010c906104ec565b60405180910390fd5b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b15801561015857600080fd5b505af115801561016c573d6000803e3d6000fd5b505050505050565b6033546001600160a01b0316331461019e5760405162461bcd60e51b815260040161010c906104ec565b6101a8600061030a565b565b805160205b8181101561022d578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101f457600181146102045761020f565b6000808585888a5af1915061020f565b6000808585895af491505b508061021a57600080fd5b50508060550185019450505050506101af565b505050565b6033546001600160a01b0316331461025c5760405162461bcd60e51b815260040161010c906104ec565b6001600160a01b0381166102c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161010c565b6102ca8161030a565b50565b600054610100900460ff166102f45760405162461bcd60e51b815260040161010c90610521565b6102fc61035c565b6101a8610383565b3b151590565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166101a85760405162461bcd60e51b815260040161010c90610521565b600054610100900460ff166103aa5760405162461bcd60e51b815260040161010c90610521565b6101a83361030a565b6001600160a01b03811681146102ca57600080fd5b600080604083850312156103db57600080fd5b82356103e6816103b3565b915060208301356103f6816103b3565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561042957600080fd5b813567ffffffffffffffff8082111561044157600080fd5b818401915084601f83011261045557600080fd5b81358181111561046757610467610401565b604051601f8201601f19908116603f0116810190838211818310171561048f5761048f610401565b816040528281528760208487010111156104a857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156104da57600080fd5b81356104e5816103b3565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220c9256b47239ae527b6dd7e31befec9077aa19a94d39ff4f970aca9da687f11f764736f6c634300080b0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
|
|
112
|
+
const isSuperArgs = (xs) => xs.length > 1;
|
|
113
|
+
class SafeMock__factory extends ethers_1.ContractFactory {
|
|
114
|
+
constructor(...args) {
|
|
115
|
+
if (isSuperArgs(args)) {
|
|
116
|
+
super(...args);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
super(_abi, _bytecode, args[0]);
|
|
120
|
+
}
|
|
121
|
+
this.contractName = "SafeMock";
|
|
122
|
+
}
|
|
123
|
+
deploy(overrides) {
|
|
124
|
+
return super.deploy(overrides || {});
|
|
125
|
+
}
|
|
126
|
+
getDeployTransaction(overrides) {
|
|
127
|
+
return super.getDeployTransaction(overrides || {});
|
|
128
|
+
}
|
|
129
|
+
attach(address) {
|
|
130
|
+
return super.attach(address);
|
|
131
|
+
}
|
|
132
|
+
connect(signer) {
|
|
133
|
+
return super.connect(signer);
|
|
134
|
+
}
|
|
135
|
+
static createInterface() {
|
|
136
|
+
return new ethers_1.utils.Interface(_abi);
|
|
137
|
+
}
|
|
138
|
+
static connect(address, signerOrProvider) {
|
|
139
|
+
return new ethers_1.Contract(address, _abi, signerOrProvider);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.SafeMock__factory = SafeMock__factory;
|
|
143
|
+
SafeMock__factory.bytecode = _bytecode;
|
|
144
|
+
SafeMock__factory.abi = _abi;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type { AccessControlEnumerableUpgradeable } from "./AccessControlEnumerableUpgradeable";
|
|
2
|
+
export type { AccessControlUpgradeable } from "./AccessControlUpgradeable";
|
|
3
|
+
export type { IAccessControlEnumerableUpgradeable } from "./IAccessControlEnumerableUpgradeable";
|
|
4
|
+
export type { IAccessControlUpgradeable } from "./IAccessControlUpgradeable";
|
|
5
|
+
export type { OwnableUpgradeable } from "./OwnableUpgradeable";
|
|
6
|
+
export type { ERC165Upgradeable } from "./ERC165Upgradeable";
|
|
7
|
+
export type { IERC165Upgradeable } from "./IERC165Upgradeable";
|
|
8
|
+
export type { ISafeMock } from "./ISafeMock";
|
|
9
|
+
export type { SafeMock } from "./SafeMock";
|
|
10
|
+
export type { AdminUpgradeabilityProxy } from "./AdminUpgradeabilityProxy";
|
|
11
|
+
export type { ProxyAdmin } from "./ProxyAdmin";
|
|
12
|
+
export { AccessControlEnumerableUpgradeable__factory } from "./factories/AccessControlEnumerableUpgradeable__factory";
|
|
13
|
+
export { AccessControlUpgradeable__factory } from "./factories/AccessControlUpgradeable__factory";
|
|
14
|
+
export { IAccessControlEnumerableUpgradeable__factory } from "./factories/IAccessControlEnumerableUpgradeable__factory";
|
|
15
|
+
export { IAccessControlUpgradeable__factory } from "./factories/IAccessControlUpgradeable__factory";
|
|
16
|
+
export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory";
|
|
17
|
+
export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory";
|
|
18
|
+
export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory";
|
|
19
|
+
export { ISafeMock__factory } from "./factories/ISafeMock__factory";
|
|
20
|
+
export { SafeMock__factory } from "./factories/SafeMock__factory";
|
|
21
|
+
export { AdminUpgradeabilityProxy__factory } from "./factories/AdminUpgradeabilityProxy__factory";
|
|
22
|
+
export { ProxyAdmin__factory } from "./factories/ProxyAdmin__factory";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProxyAdmin__factory = exports.AdminUpgradeabilityProxy__factory = exports.SafeMock__factory = exports.ISafeMock__factory = exports.IERC165Upgradeable__factory = exports.ERC165Upgradeable__factory = exports.OwnableUpgradeable__factory = exports.IAccessControlUpgradeable__factory = exports.IAccessControlEnumerableUpgradeable__factory = exports.AccessControlUpgradeable__factory = exports.AccessControlEnumerableUpgradeable__factory = void 0;
|
|
4
|
+
var AccessControlEnumerableUpgradeable__factory_1 = require("./factories/AccessControlEnumerableUpgradeable__factory");
|
|
5
|
+
Object.defineProperty(exports, "AccessControlEnumerableUpgradeable__factory", { enumerable: true, get: function () { return AccessControlEnumerableUpgradeable__factory_1.AccessControlEnumerableUpgradeable__factory; } });
|
|
6
|
+
var AccessControlUpgradeable__factory_1 = require("./factories/AccessControlUpgradeable__factory");
|
|
7
|
+
Object.defineProperty(exports, "AccessControlUpgradeable__factory", { enumerable: true, get: function () { return AccessControlUpgradeable__factory_1.AccessControlUpgradeable__factory; } });
|
|
8
|
+
var IAccessControlEnumerableUpgradeable__factory_1 = require("./factories/IAccessControlEnumerableUpgradeable__factory");
|
|
9
|
+
Object.defineProperty(exports, "IAccessControlEnumerableUpgradeable__factory", { enumerable: true, get: function () { return IAccessControlEnumerableUpgradeable__factory_1.IAccessControlEnumerableUpgradeable__factory; } });
|
|
10
|
+
var IAccessControlUpgradeable__factory_1 = require("./factories/IAccessControlUpgradeable__factory");
|
|
11
|
+
Object.defineProperty(exports, "IAccessControlUpgradeable__factory", { enumerable: true, get: function () { return IAccessControlUpgradeable__factory_1.IAccessControlUpgradeable__factory; } });
|
|
12
|
+
var OwnableUpgradeable__factory_1 = require("./factories/OwnableUpgradeable__factory");
|
|
13
|
+
Object.defineProperty(exports, "OwnableUpgradeable__factory", { enumerable: true, get: function () { return OwnableUpgradeable__factory_1.OwnableUpgradeable__factory; } });
|
|
14
|
+
var ERC165Upgradeable__factory_1 = require("./factories/ERC165Upgradeable__factory");
|
|
15
|
+
Object.defineProperty(exports, "ERC165Upgradeable__factory", { enumerable: true, get: function () { return ERC165Upgradeable__factory_1.ERC165Upgradeable__factory; } });
|
|
16
|
+
var IERC165Upgradeable__factory_1 = require("./factories/IERC165Upgradeable__factory");
|
|
17
|
+
Object.defineProperty(exports, "IERC165Upgradeable__factory", { enumerable: true, get: function () { return IERC165Upgradeable__factory_1.IERC165Upgradeable__factory; } });
|
|
18
|
+
var ISafeMock__factory_1 = require("./factories/ISafeMock__factory");
|
|
19
|
+
Object.defineProperty(exports, "ISafeMock__factory", { enumerable: true, get: function () { return ISafeMock__factory_1.ISafeMock__factory; } });
|
|
20
|
+
var SafeMock__factory_1 = require("./factories/SafeMock__factory");
|
|
21
|
+
Object.defineProperty(exports, "SafeMock__factory", { enumerable: true, get: function () { return SafeMock__factory_1.SafeMock__factory; } });
|
|
22
|
+
var AdminUpgradeabilityProxy__factory_1 = require("./factories/AdminUpgradeabilityProxy__factory");
|
|
23
|
+
Object.defineProperty(exports, "AdminUpgradeabilityProxy__factory", { enumerable: true, get: function () { return AdminUpgradeabilityProxy__factory_1.AdminUpgradeabilityProxy__factory; } });
|
|
24
|
+
var ProxyAdmin__factory_1 = require("./factories/ProxyAdmin__factory");
|
|
25
|
+
Object.defineProperty(exports, "ProxyAdmin__factory", { enumerable: true, get: function () { return ProxyAdmin__factory_1.ProxyAdmin__factory; } });
|
package/dist/upgrade.d.ts
CHANGED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SkaleABIFile } from "./types";
|
|
2
|
+
import { Contract } from "ethers";
|
|
3
|
+
export declare function getContractFactoryAndUpdateManifest(contract: string): Promise<import("ethers").ContractFactory>;
|
|
4
|
+
declare type DeploymentAction<ContractManagerType extends Contract> = (safeTransactions: string[], abi: SkaleABIFile, contractManager: ContractManagerType) => Promise<void>;
|
|
5
|
+
export declare function upgrade<ContractManagerType extends Contract>(targetVersion: string, contractNamesToUpgrade: string[], deployNewContracts: DeploymentAction<ContractManagerType>, initialize: DeploymentAction<ContractManagerType>, getDeployedVersion: () => Promise<string | undefined>, setVersion: () => Promise<void>): Promise<void>;
|
|
6
|
+
export {};
|
package/dist/upgrade.js
CHANGED
|
@@ -1 +1,210 @@
|
|
|
1
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
|
+
exports.upgrade = exports.getContractFactoryAndUpdateManifest = void 0;
|
|
16
|
+
const deploy_1 = require("./deploy");
|
|
17
|
+
const fs_1 = require("fs");
|
|
18
|
+
const hardhat_1 = require("hardhat");
|
|
19
|
+
const hardhat_2 = __importDefault(require("hardhat"));
|
|
20
|
+
const upgrades_core_1 = require("@openzeppelin/upgrades-core");
|
|
21
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
const admin_1 = require("@openzeppelin/hardhat-upgrades/dist/admin");
|
|
23
|
+
function getContractFactoryAndUpdateManifest(contract) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const manifest = JSON.parse(yield fs_1.promises.readFile(yield (0, deploy_1.getManifestFile)(), "utf-8"));
|
|
26
|
+
const { linkReferences } = yield hardhat_1.artifacts.readArtifact(contract);
|
|
27
|
+
if (!Object.keys(linkReferences).length)
|
|
28
|
+
return yield hardhat_1.ethers.getContractFactory(contract);
|
|
29
|
+
const librariesToUpgrade = [];
|
|
30
|
+
const oldLibraries = {};
|
|
31
|
+
if (manifest.libraries === undefined) {
|
|
32
|
+
Object.assign(manifest, { libraries: {} });
|
|
33
|
+
}
|
|
34
|
+
for (const key of Object.keys(linkReferences)) {
|
|
35
|
+
const libraryName = Object.keys(linkReferences[key])[0];
|
|
36
|
+
const { bytecode } = yield hardhat_1.artifacts.readArtifact(libraryName);
|
|
37
|
+
if (manifest.libraries[libraryName] === undefined) {
|
|
38
|
+
librariesToUpgrade.push(libraryName);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const libraryBytecodeHash = manifest.libraries[libraryName].bytecodeHash;
|
|
42
|
+
if ((0, upgrades_core_1.hashBytecode)(bytecode) !== libraryBytecodeHash) {
|
|
43
|
+
librariesToUpgrade.push(libraryName);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
oldLibraries[libraryName] = manifest.libraries[libraryName].address;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const libraries = yield (0, deploy_1.deployLibraries)(librariesToUpgrade);
|
|
50
|
+
for (const [libraryName, libraryAddress] of libraries.entries()) {
|
|
51
|
+
const { bytecode } = yield hardhat_1.artifacts.readArtifact(libraryName);
|
|
52
|
+
manifest.libraries[libraryName] = { "address": libraryAddress, "bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode) };
|
|
53
|
+
}
|
|
54
|
+
Object.assign(libraries, oldLibraries);
|
|
55
|
+
yield fs_1.promises.writeFile(yield (0, deploy_1.getManifestFile)(), JSON.stringify(manifest, null, 4));
|
|
56
|
+
return yield (0, deploy_1.getLinkedContractFactory)(contract, libraries);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.getContractFactoryAndUpdateManifest = getContractFactoryAndUpdateManifest;
|
|
60
|
+
function upgrade(targetVersion, contractNamesToUpgrade, deployNewContracts, initialize, getDeployedVersion, setVersion) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (!process.env.ABI) {
|
|
63
|
+
console.log(chalk_1.default.red("Set path to file with ABI and addresses to ABI environment variables"));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const abiFilename = process.env.ABI;
|
|
67
|
+
const abi = JSON.parse(yield fs_1.promises.readFile(abiFilename, "utf-8"));
|
|
68
|
+
const proxyAdmin = yield (0, admin_1.getManifestAdmin)(hardhat_2.default);
|
|
69
|
+
const contractManagerName = "ContractManager";
|
|
70
|
+
const contractManagerFactory = yield hardhat_1.ethers.getContractFactory(contractManagerName);
|
|
71
|
+
const contractManager = (contractManagerFactory.attach(abi[getContractKeyInAbiFile(contractManagerName) + "_address"]));
|
|
72
|
+
const deployedVersion = yield getDeployedVersion();
|
|
73
|
+
const version = yield getVersion();
|
|
74
|
+
if (deployedVersion) {
|
|
75
|
+
if (deployedVersion !== targetVersion) {
|
|
76
|
+
console.log(chalk_1.default.red(`This script can't upgrade version ${deployedVersion} to ${version}`));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.log(chalk_1.default.yellow("Can't check currently deployed version of skale-manager"));
|
|
82
|
+
}
|
|
83
|
+
console.log(`Will mark updated version as ${version}`);
|
|
84
|
+
const [deployer] = yield hardhat_1.ethers.getSigners();
|
|
85
|
+
let safe = yield proxyAdmin.owner();
|
|
86
|
+
const safeTransactions = [];
|
|
87
|
+
let safeMock;
|
|
88
|
+
if ((yield hardhat_1.ethers.provider.getCode(safe)) === "0x") {
|
|
89
|
+
console.log("Owner is not a contract");
|
|
90
|
+
if (deployer.address !== safe) {
|
|
91
|
+
console.log(chalk_1.default.red("Used address does not have permissions to upgrade skale-manager"));
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk_1.default.blue("Deploy SafeMock to simulate upgrade via multisig"));
|
|
95
|
+
const safeMockFactory = yield hardhat_1.ethers.getContractFactory("SafeMock");
|
|
96
|
+
safeMock = (yield safeMockFactory.deploy());
|
|
97
|
+
yield safeMock.deployTransaction.wait();
|
|
98
|
+
console.log(chalk_1.default.blue("Transfer ownership to SafeMock"));
|
|
99
|
+
safe = safeMock.address;
|
|
100
|
+
yield (yield proxyAdmin.transferOwnership(safe)).wait();
|
|
101
|
+
yield (yield contractManager.transferOwnership(safe)).wait();
|
|
102
|
+
for (const contractName of ["SkaleToken"].concat(contractNamesToUpgrade
|
|
103
|
+
.filter(name => !['ContractManager', 'TimeHelpers', 'Decryption', 'ECDH', 'SyncManager'].includes(name)))) {
|
|
104
|
+
const contractFactory = yield getContractFactoryAndUpdateManifest(contractName);
|
|
105
|
+
let _contract = contractName;
|
|
106
|
+
if (contractName === "BountyV2") {
|
|
107
|
+
if (!abi[getContractKeyInAbiFile(contractName) + "_address"])
|
|
108
|
+
_contract = "Bounty";
|
|
109
|
+
}
|
|
110
|
+
const contractAddress = abi[getContractKeyInAbiFile(_contract) + "_address"];
|
|
111
|
+
const contract = contractFactory.attach(contractAddress);
|
|
112
|
+
console.log(chalk_1.default.blue(`Grant access to ${contractName}`));
|
|
113
|
+
yield (yield contract.grantRole(yield contract.DEFAULT_ADMIN_ROLE(), safe)).wait();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
try {
|
|
118
|
+
const safeMockFactory = yield hardhat_1.ethers.getContractFactory("SafeMock");
|
|
119
|
+
const checkSafeMock = (safeMockFactory.attach(safe));
|
|
120
|
+
if (yield checkSafeMock.IS_SAFE_MOCK()) {
|
|
121
|
+
safeMock = checkSafeMock;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
console.log(chalk_1.default.yellow("Owner is not SafeMock"));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Deploy new contracts
|
|
129
|
+
yield deployNewContracts(safeTransactions, abi, contractManager);
|
|
130
|
+
// deploy new implementations
|
|
131
|
+
const contractsToUpgrade = [];
|
|
132
|
+
for (const contract of contractNamesToUpgrade) {
|
|
133
|
+
const contractFactory = yield getContractFactoryAndUpdateManifest(contract);
|
|
134
|
+
let _contract = contract;
|
|
135
|
+
if (contract === "BountyV2") {
|
|
136
|
+
if (!abi[getContractKeyInAbiFile(contract) + "_address"])
|
|
137
|
+
_contract = "Bounty";
|
|
138
|
+
}
|
|
139
|
+
const proxyAddress = abi[getContractKeyInAbiFile(_contract) + "_address"];
|
|
140
|
+
console.log(`Prepare upgrade of ${contract}`);
|
|
141
|
+
const newImplementationAddress = yield upgrades.prepareUpgrade(proxyAddress, contractFactory, {
|
|
142
|
+
unsafeAllowLinkedLibraries: true,
|
|
143
|
+
unsafeAllowRenames: true
|
|
144
|
+
});
|
|
145
|
+
const currentImplementationAddress = yield getImplementationAddress(network.provider, proxyAddress);
|
|
146
|
+
if (newImplementationAddress !== currentImplementationAddress) {
|
|
147
|
+
contractsToUpgrade.push({
|
|
148
|
+
proxyAddress,
|
|
149
|
+
implementationAddress: newImplementationAddress,
|
|
150
|
+
name: contract,
|
|
151
|
+
abi: getAbi(contractFactory.interface)
|
|
152
|
+
});
|
|
153
|
+
yield verify(contract, newImplementationAddress, []);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(chalk_1.default.gray(`Contract ${contract} is up to date`));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Switch proxies to new implementations
|
|
160
|
+
for (const contract of contractsToUpgrade) {
|
|
161
|
+
console.log(chalk_1.default.yellowBright(`Prepare transaction to upgrade ${contract.name} at ${contract.proxyAddress} to ${contract.implementationAddress}`));
|
|
162
|
+
safeTransactions.push(encodeTransaction(0, proxyAdmin.address, 0, proxyAdmin.interface.encodeFunctionData("upgrade", [contract.proxyAddress, contract.implementationAddress])));
|
|
163
|
+
abi[getContractKeyInAbiFile(contract.name) + "_abi"] = contract.abi;
|
|
164
|
+
}
|
|
165
|
+
yield initialize(safeTransactions, abi, contractManager);
|
|
166
|
+
// write version
|
|
167
|
+
if (safeMock) {
|
|
168
|
+
console.log(chalk_1.default.blue("Grant access to set version"));
|
|
169
|
+
yield (yield skaleManager.grantRole(yield skaleManager.DEFAULT_ADMIN_ROLE(), safe)).wait();
|
|
170
|
+
}
|
|
171
|
+
safeTransactions.push(encodeTransaction(0, skaleManager.address, 0, skaleManager.interface.encodeFunctionData("setVersion", [version])));
|
|
172
|
+
yield fs_1.promises.writeFile(`data/transactions-${version}-${network.name}.json`, JSON.stringify(safeTransactions, null, 4));
|
|
173
|
+
let privateKey = network.config.accounts[0];
|
|
174
|
+
if (network.config.accounts === "remote") {
|
|
175
|
+
// Don't have an information about private key
|
|
176
|
+
// Use random one because we most probable run tests
|
|
177
|
+
privateKey = hardhat_1.ethers.Wallet.createRandom().privateKey;
|
|
178
|
+
}
|
|
179
|
+
const safeTx = yield createMultiSendTransaction(hardhat_1.ethers, safe, privateKey, safeTransactions, safeMock !== undefined);
|
|
180
|
+
if (!safeMock) {
|
|
181
|
+
const chainId = (yield hardhat_1.ethers.provider.getNetwork()).chainId;
|
|
182
|
+
yield sendSafeTransaction(safe, chainId, safeTx);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.log(chalk_1.default.blue("Send upgrade transactions to safe mock"));
|
|
186
|
+
try {
|
|
187
|
+
yield (yield deployer.sendTransaction({
|
|
188
|
+
to: safeMock.address,
|
|
189
|
+
value: safeTx.value,
|
|
190
|
+
data: safeTx.data,
|
|
191
|
+
})).wait();
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
console.log(chalk_1.default.blue("Return ownership to wallet"));
|
|
195
|
+
yield (yield safeMock.transferProxyAdminOwnership(contractManager.address, deployer.address)).wait();
|
|
196
|
+
yield (yield safeMock.transferProxyAdminOwnership(proxyAdmin.address, deployer.address)).wait();
|
|
197
|
+
if ((yield proxyAdmin.owner()) === deployer.address) {
|
|
198
|
+
yield (yield safeMock.destroy({ gasLimit: 1000000 })).wait();
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.log(chalk_1.default.blue("Something went wrong with ownership transfer"));
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
yield fs_1.promises.writeFile(`data/skale-manager-${version}-${network.name}-abi.json`, JSON.stringify(abi, null, 4));
|
|
207
|
+
console.log("Done");
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
exports.upgrade = upgrade;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skalenetwork/upgrade-tools",
|
|
3
|
-
"version": "0.0.1-custom.
|
|
3
|
+
"version": "0.0.1-custom.8",
|
|
4
4
|
"description": "Scripts to support upgrades of smart contracts",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -14,20 +14,30 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"compile": "tsc",
|
|
16
16
|
"prepare": "yarn compile",
|
|
17
|
-
"prepublish": "yarn compile"
|
|
17
|
+
"prepublish": "yarn compile",
|
|
18
|
+
"postinstall": "install-peers"
|
|
18
19
|
},
|
|
19
20
|
"devDependencies": {
|
|
20
21
|
"@tsconfig/recommended": "^1.0.1",
|
|
22
|
+
"@typechain/ethers-v5": "^9.0.0",
|
|
23
|
+
"@typechain/hardhat": "^4.0.0",
|
|
24
|
+
"install-peers-cli": "^2.2.0",
|
|
25
|
+
"ts-node": "^10.5.0",
|
|
26
|
+
"typechain": "^7.0.0",
|
|
21
27
|
"typescript": "^4.5.5"
|
|
22
28
|
},
|
|
23
29
|
"dependencies": {
|
|
30
|
+
"@openzeppelin/contracts-upgradeable": "^4.4.2",
|
|
31
|
+
"axios": "^0.25.0",
|
|
32
|
+
"ethereumjs-util": "^7.1.4",
|
|
33
|
+
"ethers-eip712": "^0.2.0"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
24
36
|
"@nomiclabs/hardhat-ethers": "^2.0.4",
|
|
37
|
+
"@openzeppelin/hardhat-upgrades": "^1.14.0",
|
|
25
38
|
"@openzeppelin/upgrades-core": "^1.12.0",
|
|
26
39
|
"@types/mocha": "^9.1.0",
|
|
27
|
-
"axios": "^0.25.0",
|
|
28
|
-
"ethereumjs-util": "^7.1.4",
|
|
29
40
|
"ethers": "^5.5.4",
|
|
30
|
-
"ethers-eip712": "^0.2.0",
|
|
31
41
|
"hardhat": "^2.8.3"
|
|
32
42
|
}
|
|
33
43
|
}
|