@safe-global/protocol-kit 0.1.1 → 1.0.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/LICENSE.md +9 -9
- package/README.md +1015 -984
- package/dist/src/Safe.d.ts +13 -52
- package/dist/src/Safe.js +168 -57
- package/dist/src/Safe.js.map +1 -1
- package/dist/src/adapters/ethers/EthersAdapter.d.ts +8 -8
- package/dist/src/adapters/ethers/EthersAdapter.js +23 -31
- package/dist/src/adapters/ethers/EthersAdapter.js.map +1 -1
- package/dist/src/adapters/ethers/contracts/CreateCall/CreateCallEthersContract.d.ts +1 -1
- package/dist/src/adapters/ethers/contracts/CreateCall/CreateCallEthersContract.js +1 -1
- package/dist/src/adapters/ethers/contracts/GnosisSafe/GnosisSafeContractEthers.d.ts +1 -1
- package/dist/src/adapters/ethers/contracts/GnosisSafe/GnosisSafeContractEthers.js +1 -1
- package/dist/src/adapters/ethers/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryEthersContract.d.ts +1 -1
- package/dist/src/adapters/ethers/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryEthersContract.js +1 -1
- package/dist/src/adapters/ethers/contracts/SignMessageLib/SignMessageLibEthersContract.d.ts +1 -1
- package/dist/src/adapters/ethers/contracts/SignMessageLib/SignMessageLibEthersContract.js +1 -1
- package/dist/src/adapters/ethers/utils/index.d.ts +8 -0
- package/dist/src/adapters/ethers/utils/index.js +15 -1
- package/dist/src/adapters/ethers/utils/index.js.map +1 -1
- package/dist/src/adapters/web3/Web3Adapter.d.ts +8 -8
- package/dist/src/adapters/web3/Web3Adapter.js +17 -9
- package/dist/src/adapters/web3/Web3Adapter.js.map +1 -1
- package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.d.ts +1 -1
- package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.js +1 -6
- package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.js.map +1 -1
- package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.d.ts +1 -1
- package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.js +1 -6
- package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.js.map +1 -1
- package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.d.ts +1 -1
- package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.js +1 -6
- package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.js.map +1 -1
- package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.d.ts +1 -1
- package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.js +1 -6
- package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.js.map +1 -1
- package/dist/src/contracts/safeDeploymentContracts.d.ts +8 -9
- package/dist/src/contracts/safeDeploymentContracts.js +15 -15
- package/dist/src/contracts/safeDeploymentContracts.js.map +1 -1
- package/dist/src/contracts/utils.d.ts +21 -0
- package/dist/src/contracts/utils.js +105 -0
- package/dist/src/contracts/utils.js.map +1 -0
- package/dist/src/index.d.ts +8 -6
- package/dist/src/index.js +27 -20
- package/dist/src/index.js.map +1 -1
- package/dist/src/managers/contractManager.d.ts +4 -5
- package/dist/src/managers/contractManager.js +27 -22
- package/dist/src/managers/contractManager.js.map +1 -1
- package/dist/src/managers/fallbackHandlerManager.d.ts +1 -1
- package/dist/src/managers/fallbackHandlerManager.js +9 -0
- package/dist/src/managers/fallbackHandlerManager.js.map +1 -1
- package/dist/src/managers/guardManager.d.ts +1 -1
- package/dist/src/managers/guardManager.js +9 -0
- package/dist/src/managers/guardManager.js.map +1 -1
- package/dist/src/managers/moduleManager.d.ts +1 -1
- package/dist/src/managers/moduleManager.js +12 -0
- package/dist/src/managers/moduleManager.js.map +1 -1
- package/dist/src/managers/ownerManager.d.ts +1 -1
- package/dist/src/managers/ownerManager.js +21 -0
- package/dist/src/managers/ownerManager.js.map +1 -1
- package/dist/src/safeFactory/index.d.ts +5 -23
- package/dist/src/safeFactory/index.js +23 -63
- package/dist/src/safeFactory/index.js.map +1 -1
- package/dist/src/types/index.d.ts +114 -0
- package/dist/src/utils/eip-3770/config.js +11 -0
- package/dist/src/utils/eip-3770/config.js.map +1 -1
- package/dist/src/utils/index.d.ts +2 -1
- package/dist/src/utils/index.js +2 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/safeVersions.d.ts +2 -1
- package/dist/src/utils/safeVersions.js +3 -1
- package/dist/src/utils/safeVersions.js.map +1 -1
- package/dist/src/utils/signatures/SafeSignature.d.ts +1 -2
- package/dist/src/utils/signatures/SafeSignature.js +3 -2
- package/dist/src/utils/signatures/SafeSignature.js.map +1 -1
- package/dist/src/utils/signatures/index.d.ts +2 -12
- package/dist/src/utils/signatures/index.js +15 -90
- package/dist/src/utils/signatures/index.js.map +1 -1
- package/dist/src/utils/signatures/utils.d.ts +11 -0
- package/dist/src/utils/signatures/utils.js +91 -0
- package/dist/src/utils/signatures/utils.js.map +1 -0
- package/dist/src/utils/transactions/gas.d.ts +1 -1
- package/dist/src/utils/transactions/gas.js +10 -10
- package/dist/src/utils/transactions/gas.js.map +1 -1
- package/dist/src/utils/transactions/utils.d.ts +3 -2
- package/dist/src/utils/transactions/utils.js +26 -13
- package/dist/src/utils/transactions/utils.js.map +1 -1
- package/dist/src/utils/types.d.ts +2 -0
- package/dist/src/utils/types.js +8 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +91 -90
- package/dist/src/safeFactory/utils.d.ts +0 -3
- package/dist/src/safeFactory/utils.js +0 -19
- package/dist/src/safeFactory/utils.js.map +0 -1
|
@@ -14,6 +14,7 @@ var _ContractManager_contractNetworks, _ContractManager_isL1SafeMasterCopy, _Con
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const config_1 = require("../contracts/config");
|
|
16
16
|
const safeDeploymentContracts_1 = require("../contracts/safeDeploymentContracts");
|
|
17
|
+
const types_1 = require("../utils/types");
|
|
17
18
|
class ContractManager {
|
|
18
19
|
constructor() {
|
|
19
20
|
_ContractManager_contractNetworks.set(this, void 0);
|
|
@@ -22,43 +23,47 @@ class ContractManager {
|
|
|
22
23
|
_ContractManager_multiSendContract.set(this, void 0);
|
|
23
24
|
_ContractManager_multiSendCallOnlyContract.set(this, void 0);
|
|
24
25
|
}
|
|
25
|
-
static async create(
|
|
26
|
+
static async create(config) {
|
|
26
27
|
const contractManager = new ContractManager();
|
|
27
|
-
await contractManager.init(
|
|
28
|
+
await contractManager.init(config);
|
|
28
29
|
return contractManager;
|
|
29
30
|
}
|
|
30
|
-
async init(
|
|
31
|
+
async init(config) {
|
|
32
|
+
var _a;
|
|
33
|
+
const { ethAdapter, isL1SafeMasterCopy, contractNetworks } = config;
|
|
31
34
|
const chainId = await ethAdapter.getChainId();
|
|
32
35
|
const customContracts = contractNetworks === null || contractNetworks === void 0 ? void 0 : contractNetworks[chainId];
|
|
33
36
|
__classPrivateFieldSet(this, _ContractManager_contractNetworks, contractNetworks, "f");
|
|
34
37
|
__classPrivateFieldSet(this, _ContractManager_isL1SafeMasterCopy, isL1SafeMasterCopy, "f");
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
safeVersion: config_1.SAFE_LAST_VERSION
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
38
|
+
let safeVersion;
|
|
39
|
+
if ((0, types_1.isSafeConfigWithPredictedSafe)(config)) {
|
|
40
|
+
safeVersion = (_a = config.predictedSafe.safeDeploymentConfig.safeVersion) !== null && _a !== void 0 ? _a : config_1.SAFE_LAST_VERSION;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const temporarySafeContract = await (0, safeDeploymentContracts_1.getSafeContract)({
|
|
44
|
+
ethAdapter,
|
|
45
|
+
safeVersion: config_1.SAFE_LAST_VERSION,
|
|
46
|
+
isL1SafeMasterCopy,
|
|
47
|
+
customSafeAddress: config.safeAddress,
|
|
48
|
+
customContracts
|
|
49
|
+
});
|
|
50
|
+
safeVersion = await temporarySafeContract.getVersion();
|
|
51
|
+
__classPrivateFieldSet(this, _ContractManager_safeContract, await (0, safeDeploymentContracts_1.getSafeContract)({
|
|
52
|
+
ethAdapter,
|
|
53
|
+
safeVersion,
|
|
54
|
+
isL1SafeMasterCopy,
|
|
55
|
+
customSafeAddress: config.safeAddress,
|
|
56
|
+
customContracts
|
|
57
|
+
}), "f");
|
|
58
|
+
}
|
|
52
59
|
__classPrivateFieldSet(this, _ContractManager_multiSendContract, await (0, safeDeploymentContracts_1.getMultiSendContract)({
|
|
53
60
|
ethAdapter,
|
|
54
61
|
safeVersion,
|
|
55
|
-
chainId,
|
|
56
62
|
customContracts
|
|
57
63
|
}), "f");
|
|
58
64
|
__classPrivateFieldSet(this, _ContractManager_multiSendCallOnlyContract, await (0, safeDeploymentContracts_1.getMultiSendCallOnlyContract)({
|
|
59
65
|
ethAdapter,
|
|
60
66
|
safeVersion,
|
|
61
|
-
chainId,
|
|
62
67
|
customContracts
|
|
63
68
|
}), "f");
|
|
64
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractManager.js","sourceRoot":"","sources":["../../../src/managers/contractManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"contractManager.js","sourceRoot":"","sources":["../../../src/managers/contractManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uEAA8E;AAC9E,yGAIoE;AAQpE,0CAA8D;AAE9D,MAAM,eAAe;IAArB;QACE,oDAA0C;QAC1C,sDAA6B;QAC7B,gDAAkC;QAClC,qDAAsC;QACtC,6DAAsD;IAqExD,CAAC;IAnEC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAkB;QACpC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC7C,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClC,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkB;;QAC3B,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAA;QAEnE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;QAC7C,MAAM,eAAe,GAAG,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,OAAO,CAAC,CAAA;QACnD,uBAAA,IAAI,qCAAqB,gBAAgB,MAAA,CAAA;QACzC,uBAAA,IAAI,uCAAuB,kBAAkB,MAAA,CAAA;QAE7C,IAAI,WAAwB,CAAA;QAE5B,IAAI,IAAA,qCAA6B,EAAC,MAAM,CAAC,EAAE;YACzC,WAAW,GAAG,MAAA,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,mCAAI,0BAAiB,CAAA;SACzF;aAAM;YACL,MAAM,qBAAqB,GAAG,MAAM,IAAA,yCAAe,EAAC;gBAClD,UAAU;gBACV,WAAW,EAAE,0BAAiB;gBAC9B,kBAAkB;gBAClB,iBAAiB,EAAE,MAAM,CAAC,WAAW;gBACrC,eAAe;aAChB,CAAC,CAAA;YACF,WAAW,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,CAAA;YACtD,uBAAA,IAAI,iCAAiB,MAAM,IAAA,yCAAe,EAAC;gBACzC,UAAU;gBACV,WAAW;gBACX,kBAAkB;gBAClB,iBAAiB,EAAE,MAAM,CAAC,WAAW;gBACrC,eAAe;aAChB,CAAC,MAAA,CAAA;SACH;QAED,uBAAA,IAAI,sCAAsB,MAAM,IAAA,8CAAoB,EAAC;YACnD,UAAU;YACV,WAAW;YACX,eAAe;SAChB,CAAC,MAAA,CAAA;QACF,uBAAA,IAAI,8CAA8B,MAAM,IAAA,sDAA4B,EAAC;YACnE,UAAU;YACV,WAAW;YACX,eAAe;SAChB,CAAC,MAAA,CAAA;IACJ,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,uBAAA,IAAI,yCAAkB,CAAA;IAC/B,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,uBAAA,IAAI,2CAAoB,CAAA;IACjC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,uBAAA,IAAI,qCAAc,CAAA;IAC3B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,uBAAA,IAAI,0CAAmB,CAAA;IAChC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,uBAAA,IAAI,kDAA2B,CAAA;IACxC,CAAC;CACF;;AAED,kBAAe,eAAe,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EthAdapter, GnosisSafeContract } from '@safe-global/safe-core-sdk-types';
|
|
2
2
|
declare class FallbackHandlerManager {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(ethAdapter: EthAdapter, safeContract
|
|
4
|
+
constructor(ethAdapter: EthAdapter, safeContract?: GnosisSafeContract);
|
|
5
5
|
private validateFallbackHandlerAddress;
|
|
6
6
|
private validateFallbackHandlerIsNotEnabled;
|
|
7
7
|
private validateFallbackHandlerIsEnabled;
|
|
@@ -40,6 +40,9 @@ class FallbackHandlerManager {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
async getFallbackHandler() {
|
|
43
|
+
if (!__classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f")) {
|
|
44
|
+
throw new Error('Safe is not deployed');
|
|
45
|
+
}
|
|
43
46
|
const safeVersion = await __classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f").getVersion();
|
|
44
47
|
if ((0, utils_1.hasSafeFeature)(utils_1.SAFE_FEATURES.SAFE_FALLBACK_HANDLER, safeVersion)) {
|
|
45
48
|
return __classPrivateFieldGet(this, _FallbackHandlerManager_ethAdapter, "f").getStorageAt(__classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f").getAddress(), __classPrivateFieldGet(this, _FallbackHandlerManager_slot, "f"));
|
|
@@ -49,12 +52,18 @@ class FallbackHandlerManager {
|
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
async encodeEnableFallbackHandlerData(fallbackHandlerAddress) {
|
|
55
|
+
if (!__classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f")) {
|
|
56
|
+
throw new Error('Safe is not deployed');
|
|
57
|
+
}
|
|
52
58
|
this.validateFallbackHandlerAddress(fallbackHandlerAddress);
|
|
53
59
|
const currentFallbackHandler = await this.getFallbackHandler();
|
|
54
60
|
this.validateFallbackHandlerIsNotEnabled(currentFallbackHandler, fallbackHandlerAddress);
|
|
55
61
|
return __classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f").encode('setFallbackHandler', [fallbackHandlerAddress]);
|
|
56
62
|
}
|
|
57
63
|
async encodeDisableFallbackHandlerData() {
|
|
64
|
+
if (!__classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f")) {
|
|
65
|
+
throw new Error('Safe is not deployed');
|
|
66
|
+
}
|
|
58
67
|
const currentFallbackHandler = await this.getFallbackHandler();
|
|
59
68
|
this.validateFallbackHandlerIsEnabled(currentFallbackHandler);
|
|
60
69
|
return __classPrivateFieldGet(this, _FallbackHandlerManager_safeContract, "f").encode('setFallbackHandler', [constants_1.ZERO_ADDRESS]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallbackHandlerManager.js","sourceRoot":"","sources":["../../../src/managers/fallbackHandlerManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"fallbackHandlerManager.js","sourceRoot":"","sources":["../../../src/managers/fallbackHandlerManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,2DAKwC;AACxC,yEAAwE;AAGxE,MAAM,sBAAsB;IAM1B,YAAY,UAAsB,EAAE,YAAiC;QALrE,qDAAuB;QACvB,uDAAkC;QAClC,gDAAgD;QAChD,uCAAQ,oEAAoE,EAAA;QAG1E,uBAAA,IAAI,sCAAe,UAAU,MAAA,CAAA;QAC7B,uBAAA,IAAI,wCAAiB,YAAY,MAAA,CAAA;IACnC,CAAC;IAEO,8BAA8B,CAAC,sBAA8B;QACnE,MAAM,cAAc,GAAG,uBAAA,IAAI,0CAAY,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAA;QACzE,IAAI,CAAC,cAAc,IAAI,IAAA,qBAAa,EAAC,sBAAsB,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;SAC7D;IACH,CAAC;IAEO,mCAAmC,CACzC,sBAA8B,EAC9B,yBAAiC;QAEjC,IAAI,IAAA,kBAAU,EAAC,sBAAsB,EAAE,yBAAyB,CAAC,EAAE;YACjE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;SAChE;IACH,CAAC;IAEO,gCAAgC,CAAC,sBAA8B;QACrE,IAAI,IAAA,qBAAa,EAAC,sBAAsB,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,uBAAA,IAAI,4CAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,MAAM,WAAW,GAAG,MAAM,uBAAA,IAAI,4CAAc,CAAC,UAAU,EAAE,CAAA;QACzD,IAAI,IAAA,sBAAc,EAAC,qBAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE;YACpE,OAAO,uBAAA,IAAI,0CAAY,CAAC,YAAY,CAAC,uBAAA,IAAI,4CAAc,CAAC,UAAU,EAAE,EAAE,uBAAA,IAAI,oCAAM,CAAC,CAAA;SAClF;aAAM;YACL,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAA;SACF;IACH,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,sBAA8B;QAClE,IAAI,CAAC,uBAAA,IAAI,4CAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,CAAA;QAC3D,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC9D,IAAI,CAAC,mCAAmC,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;QACxF,OAAO,uBAAA,IAAI,4CAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,KAAK,CAAC,gCAAgC;QACpC,IAAI,CAAC,uBAAA,IAAI,4CAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAC9D,IAAI,CAAC,gCAAgC,CAAC,sBAAsB,CAAC,CAAA;QAC7D,OAAO,uBAAA,IAAI,4CAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,wBAAY,CAAC,CAAC,CAAA;IACxE,CAAC;CACF;;AAED,kBAAe,sBAAsB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EthAdapter, GnosisSafeContract } from '@safe-global/safe-core-sdk-types';
|
|
2
2
|
declare class GuardManager {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(ethAdapter: EthAdapter, safeContract
|
|
4
|
+
constructor(ethAdapter: EthAdapter, safeContract?: GnosisSafeContract);
|
|
5
5
|
private validateGuardAddress;
|
|
6
6
|
private validateGuardIsNotEnabled;
|
|
7
7
|
private validateGuardIsEnabled;
|
|
@@ -40,6 +40,9 @@ class GuardManager {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
async getGuard() {
|
|
43
|
+
if (!__classPrivateFieldGet(this, _GuardManager_safeContract, "f")) {
|
|
44
|
+
throw new Error('Safe is not deployed');
|
|
45
|
+
}
|
|
43
46
|
const safeVersion = await __classPrivateFieldGet(this, _GuardManager_safeContract, "f").getVersion();
|
|
44
47
|
if ((0, utils_1.hasSafeFeature)(utils_1.SAFE_FEATURES.SAFE_TX_GUARDS, safeVersion)) {
|
|
45
48
|
return __classPrivateFieldGet(this, _GuardManager_ethAdapter, "f").getStorageAt(__classPrivateFieldGet(this, _GuardManager_safeContract, "f").getAddress(), __classPrivateFieldGet(this, _GuardManager_slot, "f"));
|
|
@@ -49,12 +52,18 @@ class GuardManager {
|
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
async encodeEnableGuardData(guardAddress) {
|
|
55
|
+
if (!__classPrivateFieldGet(this, _GuardManager_safeContract, "f")) {
|
|
56
|
+
throw new Error('Safe is not deployed');
|
|
57
|
+
}
|
|
52
58
|
this.validateGuardAddress(guardAddress);
|
|
53
59
|
const currentGuard = await this.getGuard();
|
|
54
60
|
this.validateGuardIsNotEnabled(currentGuard, guardAddress);
|
|
55
61
|
return __classPrivateFieldGet(this, _GuardManager_safeContract, "f").encode('setGuard', [guardAddress]);
|
|
56
62
|
}
|
|
57
63
|
async encodeDisableGuardData() {
|
|
64
|
+
if (!__classPrivateFieldGet(this, _GuardManager_safeContract, "f")) {
|
|
65
|
+
throw new Error('Safe is not deployed');
|
|
66
|
+
}
|
|
58
67
|
const currentGuard = await this.getGuard();
|
|
59
68
|
this.validateGuardIsEnabled(currentGuard);
|
|
60
69
|
return __classPrivateFieldGet(this, _GuardManager_safeContract, "f").encode('setGuard', [constants_1.ZERO_ADDRESS]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardManager.js","sourceRoot":"","sources":["../../../src/managers/guardManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"guardManager.js","sourceRoot":"","sources":["../../../src/managers/guardManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,2DAKwC;AACxC,yEAAwE;AAGxE,MAAM,YAAY;IAMhB,YAAY,UAAsB,EAAE,YAAiC;QALrE,2CAAuB;QACvB,6CAAkC;QAClC,2CAA2C;QAC3C,6BAAQ,oEAAoE,EAAA;QAG1E,uBAAA,IAAI,4BAAe,UAAU,MAAA,CAAA;QAC7B,uBAAA,IAAI,8BAAiB,YAAY,MAAA,CAAA;IACnC,CAAC;IAEO,oBAAoB,CAAC,YAAoB;QAC/C,MAAM,cAAc,GAAG,uBAAA,IAAI,gCAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAC/D,IAAI,CAAC,cAAc,IAAI,IAAA,qBAAa,EAAC,YAAY,CAAC,EAAE;YAClD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;SAClD;IACH,CAAC;IAEO,yBAAyB,CAAC,YAAoB,EAAE,eAAuB;QAC7E,IAAI,IAAA,kBAAU,EAAC,YAAY,EAAE,eAAe,CAAC,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;SACrD;IACH,CAAC;IAEO,sBAAsB,CAAC,YAAoB;QACjD,IAAI,IAAA,qBAAa,EAAC,YAAY,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;SACjD;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,uBAAA,IAAI,kCAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,MAAM,WAAW,GAAG,MAAM,uBAAA,IAAI,kCAAc,CAAC,UAAU,EAAE,CAAA;QACzD,IAAI,IAAA,sBAAc,EAAC,qBAAa,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE;YAC7D,OAAO,uBAAA,IAAI,gCAAY,CAAC,YAAY,CAAC,uBAAA,IAAI,kCAAc,CAAC,UAAU,EAAE,EAAE,uBAAA,IAAI,0BAAM,CAAC,CAAA;SAClF;aAAM;YACL,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAA;SACF;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,YAAoB;QAC9C,IAAI,CAAC,uBAAA,IAAI,kCAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC1C,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAC1D,OAAO,uBAAA,IAAI,kCAAc,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,IAAI,CAAC,uBAAA,IAAI,kCAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC1C,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;QACzC,OAAO,uBAAA,IAAI,kCAAc,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,wBAAY,CAAC,CAAC,CAAA;IAC9D,CAAC;CACF;;AAED,kBAAe,YAAY,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EthAdapter, GnosisSafeContract } from '@safe-global/safe-core-sdk-types';
|
|
2
2
|
declare class ModuleManager {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(ethAdapter: EthAdapter, safeContract
|
|
4
|
+
constructor(ethAdapter: EthAdapter, safeContract?: GnosisSafeContract);
|
|
5
5
|
private validateModuleAddress;
|
|
6
6
|
private validateModuleIsNotEnabled;
|
|
7
7
|
private validateModuleIsEnabled;
|
|
@@ -43,18 +43,30 @@ class ModuleManager {
|
|
|
43
43
|
return moduleIndex;
|
|
44
44
|
}
|
|
45
45
|
async getModules() {
|
|
46
|
+
if (!__classPrivateFieldGet(this, _ModuleManager_safeContract, "f")) {
|
|
47
|
+
throw new Error('Safe is not deployed');
|
|
48
|
+
}
|
|
46
49
|
return __classPrivateFieldGet(this, _ModuleManager_safeContract, "f").getModules();
|
|
47
50
|
}
|
|
48
51
|
async isModuleEnabled(moduleAddress) {
|
|
52
|
+
if (!__classPrivateFieldGet(this, _ModuleManager_safeContract, "f")) {
|
|
53
|
+
throw new Error('Safe is not deployed');
|
|
54
|
+
}
|
|
49
55
|
return __classPrivateFieldGet(this, _ModuleManager_safeContract, "f").isModuleEnabled(moduleAddress);
|
|
50
56
|
}
|
|
51
57
|
async encodeEnableModuleData(moduleAddress) {
|
|
58
|
+
if (!__classPrivateFieldGet(this, _ModuleManager_safeContract, "f")) {
|
|
59
|
+
throw new Error('Safe is not deployed');
|
|
60
|
+
}
|
|
52
61
|
this.validateModuleAddress(moduleAddress);
|
|
53
62
|
const modules = await this.getModules();
|
|
54
63
|
this.validateModuleIsNotEnabled(moduleAddress, modules);
|
|
55
64
|
return __classPrivateFieldGet(this, _ModuleManager_safeContract, "f").encode('enableModule', [moduleAddress]);
|
|
56
65
|
}
|
|
57
66
|
async encodeDisableModuleData(moduleAddress) {
|
|
67
|
+
if (!__classPrivateFieldGet(this, _ModuleManager_safeContract, "f")) {
|
|
68
|
+
throw new Error('Safe is not deployed');
|
|
69
|
+
}
|
|
58
70
|
this.validateModuleAddress(moduleAddress);
|
|
59
71
|
const modules = await this.getModules();
|
|
60
72
|
const moduleIndex = this.validateModuleIsEnabled(moduleAddress, modules);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleManager.js","sourceRoot":"","sources":["../../../src/managers/moduleManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,qEAAyF;AACzF,yEAA4E;AAE5E,MAAM,aAAa;IAIjB,YAAY,UAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"moduleManager.js","sourceRoot":"","sources":["../../../src/managers/moduleManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EthAdapter, GnosisSafeContract } from '@safe-global/safe-core-sdk-types';
|
|
2
2
|
declare class OwnerManager {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(ethAdapter: EthAdapter, safeContract
|
|
4
|
+
constructor(ethAdapter: EthAdapter, safeContract?: GnosisSafeContract);
|
|
5
5
|
private validateOwnerAddress;
|
|
6
6
|
private validateThreshold;
|
|
7
7
|
private validateAddressIsNotOwner;
|
|
@@ -51,16 +51,28 @@ class OwnerManager {
|
|
|
51
51
|
return ownerIndex;
|
|
52
52
|
}
|
|
53
53
|
async getOwners() {
|
|
54
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
55
|
+
throw new Error('Safe is not deployed');
|
|
56
|
+
}
|
|
54
57
|
const owners = await __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").getOwners();
|
|
55
58
|
return [...owners];
|
|
56
59
|
}
|
|
57
60
|
async getThreshold() {
|
|
61
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
62
|
+
throw new Error('Safe is not deployed');
|
|
63
|
+
}
|
|
58
64
|
return __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").getThreshold();
|
|
59
65
|
}
|
|
60
66
|
async isOwner(ownerAddress) {
|
|
67
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
68
|
+
throw new Error('Safe is not deployed');
|
|
69
|
+
}
|
|
61
70
|
return __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").isOwner(ownerAddress);
|
|
62
71
|
}
|
|
63
72
|
async encodeAddOwnerWithThresholdData(ownerAddress, threshold) {
|
|
73
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
74
|
+
throw new Error('Safe is not deployed');
|
|
75
|
+
}
|
|
64
76
|
this.validateOwnerAddress(ownerAddress);
|
|
65
77
|
const owners = await this.getOwners();
|
|
66
78
|
this.validateAddressIsNotOwner(ownerAddress, owners);
|
|
@@ -69,6 +81,9 @@ class OwnerManager {
|
|
|
69
81
|
return __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").encode('addOwnerWithThreshold', [ownerAddress, newThreshold]);
|
|
70
82
|
}
|
|
71
83
|
async encodeRemoveOwnerData(ownerAddress, threshold) {
|
|
84
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
85
|
+
throw new Error('Safe is not deployed');
|
|
86
|
+
}
|
|
72
87
|
this.validateOwnerAddress(ownerAddress);
|
|
73
88
|
const owners = await this.getOwners();
|
|
74
89
|
const ownerIndex = this.validateAddressIsOwner(ownerAddress, owners);
|
|
@@ -78,6 +93,9 @@ class OwnerManager {
|
|
|
78
93
|
return __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").encode('removeOwner', [prevOwnerAddress, ownerAddress, newThreshold]);
|
|
79
94
|
}
|
|
80
95
|
async encodeSwapOwnerData(oldOwnerAddress, newOwnerAddress) {
|
|
96
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
97
|
+
throw new Error('Safe is not deployed');
|
|
98
|
+
}
|
|
81
99
|
this.validateOwnerAddress(newOwnerAddress, 'Invalid new owner address provided');
|
|
82
100
|
this.validateOwnerAddress(oldOwnerAddress, 'Invalid old owner address provided');
|
|
83
101
|
const owners = await this.getOwners();
|
|
@@ -91,6 +109,9 @@ class OwnerManager {
|
|
|
91
109
|
]);
|
|
92
110
|
}
|
|
93
111
|
async encodeChangeThresholdData(threshold) {
|
|
112
|
+
if (!__classPrivateFieldGet(this, _OwnerManager_safeContract, "f")) {
|
|
113
|
+
throw new Error('Safe is not deployed');
|
|
114
|
+
}
|
|
94
115
|
const owners = await this.getOwners();
|
|
95
116
|
this.validateThreshold(threshold, owners.length);
|
|
96
117
|
return __classPrivateFieldGet(this, _OwnerManager_safeContract, "f").encode('changeThreshold', [threshold]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownerManager.js","sourceRoot":"","sources":["../../../src/managers/ownerManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,qEAAyF;AACzF,yEAA4E;AAE5E,MAAM,YAAY;IAIhB,YAAY,UAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"ownerManager.js","sourceRoot":"","sources":["../../../src/managers/ownerManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,9 @@
|
|
|
1
|
-
import { EthAdapter, SafeVersion, TransactionOptions } from '@safe-global/safe-core-sdk-types';
|
|
2
1
|
import Safe from '../Safe';
|
|
3
|
-
import { ContractNetworksConfig } from '../types';
|
|
4
|
-
|
|
5
|
-
owners: string[];
|
|
6
|
-
threshold: number;
|
|
7
|
-
to?: string;
|
|
8
|
-
data?: string;
|
|
9
|
-
fallbackHandler?: string;
|
|
10
|
-
paymentToken?: string;
|
|
11
|
-
payment?: number;
|
|
12
|
-
paymentReceiver?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface SafeDeploymentConfig {
|
|
15
|
-
saltNonce: string;
|
|
16
|
-
}
|
|
17
|
-
export interface PredictSafeProps {
|
|
18
|
-
safeAccountConfig: SafeAccountConfig;
|
|
19
|
-
safeDeploymentConfig: SafeDeploymentConfig;
|
|
20
|
-
}
|
|
2
|
+
import { ContractNetworksConfig, SafeAccountConfig } from '../types';
|
|
3
|
+
import { EthAdapter, SafeVersion, TransactionOptions } from '@safe-global/safe-core-sdk-types';
|
|
21
4
|
export interface DeploySafeProps {
|
|
22
5
|
safeAccountConfig: SafeAccountConfig;
|
|
23
|
-
|
|
6
|
+
saltNonce?: string;
|
|
24
7
|
options?: TransactionOptions;
|
|
25
8
|
callback?: (txHash: string) => void;
|
|
26
9
|
}
|
|
@@ -42,8 +25,7 @@ declare class SafeFactory {
|
|
|
42
25
|
getSafeVersion(): SafeVersion;
|
|
43
26
|
getAddress(): string;
|
|
44
27
|
getChainId(): Promise<number>;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
deploySafe({ safeAccountConfig, safeDeploymentConfig, options, callback }: DeploySafeProps): Promise<Safe>;
|
|
28
|
+
predictSafeAddress(safeAccountConfig: SafeAccountConfig, saltNonce?: string): Promise<string>;
|
|
29
|
+
deploySafe({ safeAccountConfig, saltNonce, options, callback }: DeploySafeProps): Promise<Safe>;
|
|
48
30
|
}
|
|
49
31
|
export default SafeFactory;
|
|
@@ -15,13 +15,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
15
15
|
};
|
|
16
16
|
var _SafeFactory_contractNetworks, _SafeFactory_isL1SafeMasterCopy, _SafeFactory_safeVersion, _SafeFactory_ethAdapter, _SafeFactory_safeProxyFactoryContract, _SafeFactory_gnosisSafeContract;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
19
|
-
const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
|
|
20
18
|
const config_1 = require("../contracts/config");
|
|
21
19
|
const safeDeploymentContracts_1 = require("../contracts/safeDeploymentContracts");
|
|
22
20
|
const Safe_1 = __importDefault(require("../Safe"));
|
|
23
|
-
const
|
|
24
|
-
const utils_1 = require("./utils");
|
|
21
|
+
const utils_1 = require("../contracts/utils");
|
|
25
22
|
class SafeFactory {
|
|
26
23
|
constructor() {
|
|
27
24
|
_SafeFactory_contractNetworks.set(this, void 0);
|
|
@@ -46,13 +43,11 @@ class SafeFactory {
|
|
|
46
43
|
__classPrivateFieldSet(this, _SafeFactory_safeProxyFactoryContract, await (0, safeDeploymentContracts_1.getProxyFactoryContract)({
|
|
47
44
|
ethAdapter,
|
|
48
45
|
safeVersion,
|
|
49
|
-
chainId,
|
|
50
46
|
customContracts
|
|
51
47
|
}), "f");
|
|
52
48
|
__classPrivateFieldSet(this, _SafeFactory_gnosisSafeContract, await (0, safeDeploymentContracts_1.getSafeContract)({
|
|
53
49
|
ethAdapter,
|
|
54
50
|
safeVersion,
|
|
55
|
-
chainId,
|
|
56
51
|
isL1SafeMasterCopy,
|
|
57
52
|
customContracts
|
|
58
53
|
}), "f");
|
|
@@ -69,71 +64,36 @@ class SafeFactory {
|
|
|
69
64
|
async getChainId() {
|
|
70
65
|
return __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").getChainId();
|
|
71
66
|
}
|
|
72
|
-
async
|
|
67
|
+
async predictSafeAddress(safeAccountConfig, saltNonce = utils_1.PREDETERMINED_SALT_NONCE) {
|
|
73
68
|
var _a;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
let fallbackHandlerAddress;
|
|
86
|
-
if (fallbackHandler) {
|
|
87
|
-
fallbackHandlerAddress = fallbackHandler;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
const chainId = await __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").getChainId();
|
|
91
|
-
const customContracts = (_a = __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")) === null || _a === void 0 ? void 0 : _a[chainId];
|
|
92
|
-
const fallbackHandlerContract = await (0, safeDeploymentContracts_1.getCompatibilityFallbackHandlerContract)({
|
|
93
|
-
ethAdapter: __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f"),
|
|
94
|
-
safeVersion: __classPrivateFieldGet(this, _SafeFactory_safeVersion, "f"),
|
|
95
|
-
chainId,
|
|
96
|
-
customContracts
|
|
97
|
-
});
|
|
98
|
-
fallbackHandlerAddress = fallbackHandlerContract.getAddress();
|
|
99
|
-
}
|
|
100
|
-
return __classPrivateFieldGet(this, _SafeFactory_gnosisSafeContract, "f").encode('setup', [
|
|
101
|
-
owners,
|
|
102
|
-
threshold,
|
|
103
|
-
to,
|
|
104
|
-
data,
|
|
105
|
-
fallbackHandlerAddress,
|
|
106
|
-
paymentToken,
|
|
107
|
-
payment,
|
|
108
|
-
paymentReceiver
|
|
109
|
-
]);
|
|
110
|
-
}
|
|
111
|
-
async predictSafeAddress({ safeAccountConfig, safeDeploymentConfig }) {
|
|
112
|
-
(0, utils_1.validateSafeAccountConfig)(safeAccountConfig);
|
|
113
|
-
(0, utils_1.validateSafeDeploymentConfig)(safeDeploymentConfig);
|
|
114
|
-
const from = __classPrivateFieldGet(this, _SafeFactory_safeProxyFactoryContract, "f").getAddress();
|
|
115
|
-
const initializer = await this.encodeSetupCallData(safeAccountConfig);
|
|
116
|
-
const saltNonce = safeDeploymentConfig.saltNonce;
|
|
117
|
-
const encodedNonce = (0, ethereumjs_util_1.toBuffer)(__classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").encodeParameters(['uint256'], [saltNonce])).toString('hex');
|
|
118
|
-
const salt = (0, ethereumjs_util_1.keccak256)((0, ethereumjs_util_1.toBuffer)('0x' + (0, ethereumjs_util_1.keccak256)((0, ethereumjs_util_1.toBuffer)(initializer)).toString('hex') + encodedNonce));
|
|
119
|
-
const proxyCreationCode = await __classPrivateFieldGet(this, _SafeFactory_safeProxyFactoryContract, "f").proxyCreationCode();
|
|
120
|
-
const constructorData = (0, ethereumjs_util_1.toBuffer)(__classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").encodeParameters(['address'], [__classPrivateFieldGet(this, _SafeFactory_gnosisSafeContract, "f").getAddress()])).toString('hex');
|
|
121
|
-
const initCode = proxyCreationCode + constructorData;
|
|
122
|
-
const proxyAddress = '0x' + (0, ethereumjs_util_1.generateAddress2)((0, ethereumjs_util_1.toBuffer)(from), (0, ethereumjs_util_1.toBuffer)(salt), (0, ethereumjs_util_1.toBuffer)(initCode)).toString('hex');
|
|
123
|
-
return __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").getChecksummedAddress(proxyAddress);
|
|
69
|
+
const chainId = await __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").getChainId();
|
|
70
|
+
const customContracts = (_a = __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")) === null || _a === void 0 ? void 0 : _a[chainId];
|
|
71
|
+
const safeVersion = __classPrivateFieldGet(this, _SafeFactory_safeVersion, "f");
|
|
72
|
+
const safeDeploymentConfig = { saltNonce, safeVersion };
|
|
73
|
+
return (0, utils_1.predictSafeAddress)({
|
|
74
|
+
ethAdapter: __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f"),
|
|
75
|
+
safeAccountConfig,
|
|
76
|
+
safeDeploymentConfig,
|
|
77
|
+
isL1SafeMasterCopy: __classPrivateFieldGet(this, _SafeFactory_isL1SafeMasterCopy, "f"),
|
|
78
|
+
customContracts
|
|
79
|
+
});
|
|
124
80
|
}
|
|
125
|
-
async deploySafe({ safeAccountConfig,
|
|
81
|
+
async deploySafe({ safeAccountConfig, saltNonce = utils_1.PREDETERMINED_SALT_NONCE, options, callback }) {
|
|
126
82
|
var _a;
|
|
127
83
|
(0, utils_1.validateSafeAccountConfig)(safeAccountConfig);
|
|
128
|
-
|
|
129
|
-
(0, utils_1.validateSafeDeploymentConfig)(safeDeploymentConfig);
|
|
130
|
-
}
|
|
84
|
+
(0, utils_1.validateSafeDeploymentConfig)({ saltNonce });
|
|
131
85
|
const signerAddress = await __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f").getSignerAddress();
|
|
132
86
|
if (!signerAddress) {
|
|
133
87
|
throw new Error('EthAdapter must be initialized with a signer to use this method');
|
|
134
88
|
}
|
|
135
|
-
const
|
|
136
|
-
const
|
|
89
|
+
const chainId = await this.getChainId();
|
|
90
|
+
const customContracts = (_a = __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")) === null || _a === void 0 ? void 0 : _a[chainId];
|
|
91
|
+
const initializer = await (0, utils_1.encodeSetupCallData)({
|
|
92
|
+
ethAdapter: __classPrivateFieldGet(this, _SafeFactory_ethAdapter, "f"),
|
|
93
|
+
safeAccountConfig,
|
|
94
|
+
safeContract: __classPrivateFieldGet(this, _SafeFactory_gnosisSafeContract, "f"),
|
|
95
|
+
customContracts
|
|
96
|
+
});
|
|
137
97
|
if ((options === null || options === void 0 ? void 0 : options.gas) && (options === null || options === void 0 ? void 0 : options.gasLimit)) {
|
|
138
98
|
throw new Error('Cannot specify gas and gasLimit together in transaction options');
|
|
139
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safeFactory/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safeFactory/index.ts"],"names":[],"mappings":"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"}
|