@safe-global/protocol-kit 1.1.0 → 1.3.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.
Files changed (44) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +1033 -1033
  3. package/dist/src/Safe.d.ts +51 -1
  4. package/dist/src/Safe.js +174 -17
  5. package/dist/src/Safe.js.map +1 -1
  6. package/dist/src/adapters/ethers/EthersAdapter.js +9 -10
  7. package/dist/src/adapters/ethers/EthersAdapter.js.map +1 -1
  8. package/dist/src/adapters/ethers/contracts/SafeProxyFactory/SafeProxyFactoryEthersContract.js +1 -2
  9. package/dist/src/adapters/ethers/contracts/SafeProxyFactory/SafeProxyFactoryEthersContract.js.map +1 -1
  10. package/dist/src/adapters/web3/Web3Adapter.js +17 -17
  11. package/dist/src/adapters/web3/Web3Adapter.js.map +1 -1
  12. package/dist/src/adapters/web3/contracts/SafeProxyFactory/SafeProxyFactoryWeb3Contract.js +1 -2
  13. package/dist/src/adapters/web3/contracts/SafeProxyFactory/SafeProxyFactoryWeb3Contract.js.map +1 -1
  14. package/dist/src/contracts/config.d.ts +1 -1
  15. package/dist/src/contracts/config.js +2 -2
  16. package/dist/src/contracts/config.js.map +1 -1
  17. package/dist/src/contracts/safeDeploymentContracts.js +16 -16
  18. package/dist/src/contracts/safeDeploymentContracts.js.map +1 -1
  19. package/dist/src/contracts/utils.js +26 -2
  20. package/dist/src/contracts/utils.js.map +1 -1
  21. package/dist/src/index.d.ts +4 -3
  22. package/dist/src/index.js +10 -2
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/managers/contractManager.js +20 -15
  25. package/dist/src/managers/contractManager.js.map +1 -1
  26. package/dist/src/managers/ownerManager.js +2 -2
  27. package/dist/src/managers/ownerManager.js.map +1 -1
  28. package/dist/src/safeFactory/index.js +5 -7
  29. package/dist/src/safeFactory/index.js.map +1 -1
  30. package/dist/src/utils/eip-3770/config.js +8 -0
  31. package/dist/src/utils/eip-3770/config.js.map +1 -1
  32. package/dist/src/utils/erc-20/index.d.ts +33 -0
  33. package/dist/src/utils/erc-20/index.js +77 -0
  34. package/dist/src/utils/erc-20/index.js.map +1 -0
  35. package/dist/src/utils/signatures/utils.js +1 -1
  36. package/dist/src/utils/transactions/SafeTransaction.js +2 -2
  37. package/dist/src/utils/transactions/SafeTransaction.js.map +1 -1
  38. package/dist/src/utils/transactions/gas.d.ts +48 -1
  39. package/dist/src/utils/transactions/gas.js +308 -32
  40. package/dist/src/utils/transactions/gas.js.map +1 -1
  41. package/dist/src/utils/transactions/utils.js +7 -9
  42. package/dist/src/utils/transactions/utils.js.map +1 -1
  43. package/dist/tsconfig.build.tsbuildinfo +1 -1
  44. package/package.json +98 -96
@@ -1,28 +1,51 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.estimateTxGas = exports.estimateGas = void 0;
6
+ exports.estimateSafeDeploymentGas = exports.estimateSafeTxGas = exports.estimateTxBaseGas = exports.estimateTxGas = exports.estimateGas = void 0;
4
7
  const bignumber_1 = require("@ethersproject/bignumber");
5
8
  const safe_core_sdk_types_1 = require("@safe-global/safe-core-sdk-types");
9
+ const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
10
+ const constants_1 = require("../constants");
6
11
  const safeDeploymentContracts_1 = require("../../contracts/safeDeploymentContracts");
12
+ // Every byte == 00 -> 4 Gas cost
13
+ const CALL_DATA_ZERO_BYTE_GAS_COST = 4;
14
+ // Every byte != 00 -> 16 Gas cost (68 before Istanbul)
15
+ const CALL_DATA_BYTE_GAS_COST = 16;
16
+ // gas cost initialization of a Safe
17
+ const INITIZATION_GAS_COST = 20000;
18
+ // increment nonce gas cost
19
+ const INCREMENT_NONCE_GAS_COST = 5000;
20
+ // Keccak gas cost for the hash of the Safe transaction
21
+ const HASH_GENERATION_GAS_COST = 1500;
22
+ // ecrecover gas cost for ecdsa ~= 4K gas, we use 6K
23
+ const ECRECOVER_GAS_COST = 6000;
24
+ // transfer gas cost
25
+ const TRANSAFER_GAS_COST = 32000;
26
+ // numbers < 256 (0x00(31*2)..ff) are 192 -> 31 * 4 + 1 * CALL_DATA_BYTE_GAS_COST
27
+ // numbers < 65535 (0x(30*2)..ffff) are 256 -> 30 * 4 + 2 * CALL_DATA_BYTE_GAS_COST
28
+ // Calculate gas for signatures
29
+ // (array count (3 -> r, s, v) + ecrecover costs) * signature count
30
+ const GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
7
31
  function estimateDataGasCosts(data) {
8
- const reducer = (accumulator, currentValue) => {
9
- if (currentValue === '0x') {
10
- return accumulator + 0;
32
+ const bytes = data.match(/.{2}/g);
33
+ return bytes.reduce((gasCost, currentByte) => {
34
+ if (currentByte === '0x') {
35
+ return gasCost + 0;
11
36
  }
12
- if (currentValue === '00') {
13
- return accumulator + 4;
37
+ if (currentByte === '00') {
38
+ return gasCost + CALL_DATA_ZERO_BYTE_GAS_COST;
14
39
  }
15
- return accumulator + 16;
16
- };
17
- return data.match(/.{2}/g).reduce(reducer, 0);
40
+ return gasCost + CALL_DATA_BYTE_GAS_COST;
41
+ }, 0);
18
42
  }
19
43
  async function estimateGas(safeVersion, safeContract, ethAdapter, to, valueInWei, data, operation, customContracts) {
20
- var _a;
21
44
  const chainId = await ethAdapter.getChainId();
22
45
  const simulateTxAccessorContract = await (0, safeDeploymentContracts_1.getSimulateTxAccessorContract)({
23
46
  ethAdapter,
24
47
  safeVersion,
25
- customContracts: customContracts === null || customContracts === void 0 ? void 0 : customContracts[chainId]
48
+ customContracts: customContracts?.[chainId]
26
49
  });
27
50
  const transactionDataToEstimate = simulateTxAccessorContract.encode('simulate', [
28
51
  to,
@@ -41,32 +64,12 @@ async function estimateGas(safeVersion, safeContract, ethAdapter, to, valueInWei
41
64
  data: safeFunctionToEstimate,
42
65
  from: safeAddress
43
66
  };
44
- // TO-DO: Improve decoding
45
- /*
46
- const simulateAndRevertResponse = ethAdapter.decodeParameters(
47
- ['bool', 'bytes'],
48
- encodedResponse
49
- )
50
- const returnedData = ethAdapter.decodeParameters(['uint256', 'bool', 'bytes'], simulateAndRevertResponse[1])
51
- */
52
67
  try {
53
68
  const encodedResponse = await ethAdapter.call(transactionToEstimateGas);
54
69
  return Number('0x' + encodedResponse.slice(184).slice(0, 10)).toString();
55
70
  }
56
71
  catch (error) {
57
- // Ethers
58
- if ((_a = error === null || error === void 0 ? void 0 : error.error) === null || _a === void 0 ? void 0 : _a.body) {
59
- const revertData = JSON.parse(error.error.body).error.data;
60
- if (revertData && revertData.startsWith('Reverted ')) {
61
- const [, encodedResponse] = revertData.split('Reverted ');
62
- const safeTxGas = Number('0x' + encodedResponse.slice(184).slice(0, 10)).toString();
63
- return safeTxGas;
64
- }
65
- }
66
- // Web3
67
- const [, encodedResponse] = error.message.split('return data: ');
68
- const safeTxGas = Number('0x' + encodedResponse.slice(184).slice(0, 10)).toString();
69
- return safeTxGas;
72
+ return parseSafeTxGasErrorResponse(error);
70
73
  }
71
74
  }
72
75
  exports.estimateGas = estimateGas;
@@ -127,4 +130,277 @@ async function estimateTxGas(safeContract, ethAdapter, to, valueInWei, data, ope
127
130
  }
128
131
  }
129
132
  exports.estimateTxGas = estimateTxGas;
133
+ /**
134
+ * This function estimates the baseGas of a Safe transaction.
135
+ * The baseGas includes costs for:
136
+ * - Generation of the Safe transaction hash (txHash)
137
+ * - Increasing the nonce of the Safe
138
+ * - Verifying the signatures of the Safe transaction
139
+ * - Payment to relayers for executing the transaction
140
+ * - Emitting events ExecutionSuccess or ExecutionFailure
141
+ *
142
+ * Note: it does not include the transaction execution cost (safeTxGas)
143
+ *
144
+ * @async
145
+ * @function estimateTxBaseGas
146
+ * @param {Safe} safe - The Safe instance containing all the information about the safe.
147
+ * @param {SafeTransaction} safeTransaction - The transaction for which the baseGas is to be estimated.
148
+ * @returns {Promise<string>} A Promise that resolves with the estimated baseGas as a string.
149
+ */
150
+ async function estimateTxBaseGas(safe, safeTransaction) {
151
+ const safeTransactionData = safeTransaction.data;
152
+ const { to, value, data, operation, safeTxGas, gasToken, refundReceiver } = safeTransactionData;
153
+ const safeThreshold = await safe.getThreshold();
154
+ const safeNonce = await safe.getNonce();
155
+ const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
156
+ const encodeSafeTxGas = safeTxGas || 0;
157
+ const encodeBaseGas = 0;
158
+ const gasPrice = 1;
159
+ const encodeGasToken = gasToken || constants_1.ZERO_ADDRESS;
160
+ const encodeRefundReceiver = refundReceiver || constants_1.ZERO_ADDRESS;
161
+ const signatures = '0x';
162
+ const safeVersion = await safe.getContractVersion();
163
+ const ethAdapter = safe.getEthAdapter();
164
+ const isL1SafeMasterCopy = safe.getContractManager().isL1SafeMasterCopy;
165
+ const chainId = await safe.getChainId();
166
+ const customContracts = safe.getContractManager().contractNetworks?.[chainId];
167
+ const safeSingletonContract = await (0, safeDeploymentContracts_1.getSafeContract)({
168
+ ethAdapter,
169
+ safeVersion,
170
+ isL1SafeMasterCopy,
171
+ customContracts
172
+ });
173
+ const execTransactionData = safeSingletonContract.encode('execTransaction', [
174
+ to,
175
+ value,
176
+ data,
177
+ operation,
178
+ encodeSafeTxGas,
179
+ encodeBaseGas,
180
+ gasPrice,
181
+ encodeGasToken,
182
+ encodeRefundReceiver,
183
+ signatures
184
+ ]);
185
+ // If nonce == 0, nonce storage has to be initialized
186
+ const isSafeInitialized = safeNonce !== 0;
187
+ const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIZATION_GAS_COST;
188
+ let baseGas = signaturesGasCost +
189
+ estimateDataGasCosts(execTransactionData) +
190
+ incrementNonceGasCost +
191
+ HASH_GENERATION_GAS_COST;
192
+ // Add additional gas costs
193
+ baseGas > 65536 ? (baseGas += 64) : (baseGas += 128);
194
+ // Base tx costs, transfer costs...
195
+ baseGas += TRANSAFER_GAS_COST;
196
+ return baseGas.toString();
197
+ }
198
+ exports.estimateTxBaseGas = estimateTxBaseGas;
199
+ /**
200
+ * This function estimates the safeTxGas of a Safe transaction.
201
+ * The safeTxGas value represents the amount of gas required to execute the Safe transaction itself.
202
+ * It does not include costs such as signature verification, transaction hash generation, nonce incrementing, and so on.
203
+ *
204
+ * The estimation method differs based on the version of the Safe:
205
+ * - For versions >= 1.3.0, the simulate function defined in the simulateTxAccessor.sol Contract is used.
206
+ * - For versions < 1.3.0, the deprecated requiredTxGas method defined in the GnosisSafe.sol contract is used.
207
+ *
208
+ * @async
209
+ * @function estimateSafeTxGas
210
+ * @param {Safe} safe - The Safe instance containing all the necessary information about the safe.
211
+ * @param {SafeTransaction} safeTransaction - The transaction for which the safeTxGas is to be estimated.
212
+ * @returns {Promise<string>} A Promise that resolves with the estimated safeTxGas as a string.
213
+ *
214
+ */
215
+ async function estimateSafeTxGas(safe, safeTransaction) {
216
+ const safeVersion = await safe.getContractVersion();
217
+ if ((0, satisfies_1.default)(safeVersion, '>=1.3.0')) {
218
+ const safeTxGas = await estimateSafeTxGasWithSimulate(safe, safeTransaction);
219
+ return addExtraGasForSafety(safeTxGas);
220
+ }
221
+ // deprecated method to estimate the safeTxGas of a Safe transaction
222
+ const safeTxGas = await estimateSafeTxGasWithRequiredTxGas(safe, safeTransaction);
223
+ return addExtraGasForSafety(safeTxGas);
224
+ }
225
+ exports.estimateSafeTxGas = estimateSafeTxGas;
226
+ /**
227
+ * Increase the given safeTxGas gas amount by 5% as a security margin to avoid running out of gas.
228
+ * In some contexts, the safeTxGas might be underestimated, leading to 'out of gas' errors during the Safe transaction execution
229
+ *
230
+ * @param {string} safeTxGas - The original safeTxGas gas amount.
231
+ * @returns {string} The new safeTxGas gas amount, increased by 5% rounded.
232
+ */
233
+ function addExtraGasForSafety(safeTxGas) {
234
+ const INCREASE_GAS_FACTOR = 1.05; // increase the gas by 5% as a security margin
235
+ return Math.round(Number(safeTxGas) * INCREASE_GAS_FACTOR).toString();
236
+ }
237
+ /**
238
+ * This function estimates the safeTxGas of a Safe transaction.
239
+ * Using the deprecated method of requiredTxGas defined in the GnosisSafe contract. This method is meant to be used for Safe versions < 1.3.0.
240
+ * see: https://github.com/safe-global/safe-contracts/blob/v1.2.0/contracts/GnosisSafe.sol#L276
241
+ *
242
+ * @async
243
+ * @function estimateSafeTxGasWithRequiredTxGas
244
+ * @param {Safe} safe - The Safe instance containing all the necessary information about the safe.
245
+ * @param {SafeTransaction} safeTransaction - The transaction for which the safeTxGas is to be estimated.
246
+ * @returns {Promise<string>} A Promise that resolves with the estimated safeTxGas as a string.
247
+ *
248
+ */
249
+ async function estimateSafeTxGasWithRequiredTxGas(safe, safeTransaction) {
250
+ const isSafeDeployed = await safe.isSafeDeployed();
251
+ const safeAddress = await safe.getAddress();
252
+ const safeVersion = await safe.getContractVersion();
253
+ const ethAdapter = safe.getEthAdapter();
254
+ const isL1SafeMasterCopy = safe.getContractManager().isL1SafeMasterCopy;
255
+ const chainId = await safe.getChainId();
256
+ const customContracts = safe.getContractManager().contractNetworks?.[chainId];
257
+ const safeSingletonContract = await (0, safeDeploymentContracts_1.getSafeContract)({
258
+ ethAdapter,
259
+ safeVersion,
260
+ isL1SafeMasterCopy,
261
+ customContracts
262
+ });
263
+ const transactionDataToEstimate = safeSingletonContract.encode('requiredTxGas', [
264
+ safeTransaction.data.to,
265
+ safeTransaction.data.value,
266
+ safeTransaction.data.data,
267
+ safeTransaction.data.operation
268
+ ]);
269
+ const to = isSafeDeployed ? safeAddress : safeSingletonContract.getAddress();
270
+ const transactionToEstimateGas = {
271
+ to,
272
+ value: '0',
273
+ data: transactionDataToEstimate,
274
+ from: safeAddress
275
+ };
276
+ try {
277
+ const encodedResponse = await ethAdapter.call(transactionToEstimateGas);
278
+ const safeTxGas = '0x' + encodedResponse.slice(-32);
279
+ return safeTxGas;
280
+ // if the call throws an error we try to parse the returned value
281
+ }
282
+ catch (error) {
283
+ try {
284
+ const revertData = JSON.parse(error.error.body).error.data;
285
+ if (revertData && revertData.startsWith('Reverted ')) {
286
+ const [, safeTxGas] = revertData.split('Reverted ');
287
+ return Number(safeTxGas).toString();
288
+ }
289
+ }
290
+ catch {
291
+ return '0';
292
+ }
293
+ }
294
+ return '0';
295
+ }
296
+ // TO-DO: Improve decoding
297
+ /*
298
+ const simulateAndRevertResponse = ethAdapter.decodeParameters(
299
+ ['bool', 'bytes'],
300
+ encodedResponse
301
+ )
302
+ const returnedData = ethAdapter.decodeParameters(['uint256', 'bool', 'bytes'], simulateAndRevertResponse[1])
303
+ */
304
+ function decodeSafeTxGas(encodedSafeTxGas) {
305
+ return Number('0x' + encodedSafeTxGas.slice(184).slice(0, 10)).toString();
306
+ }
307
+ function parseSafeTxGasErrorResponse(error) {
308
+ // Ethers
309
+ if (error?.error?.body) {
310
+ const revertData = JSON.parse(error.error.body).error.data;
311
+ if (revertData && revertData.startsWith('Reverted ')) {
312
+ const [, encodedResponse] = revertData.split('Reverted ');
313
+ const safeTxGas = decodeSafeTxGas(encodedResponse);
314
+ return safeTxGas;
315
+ }
316
+ }
317
+ // Web3
318
+ const [, encodedResponse] = error.message.split('return data: ');
319
+ const safeTxGas = decodeSafeTxGas(encodedResponse);
320
+ return safeTxGas;
321
+ }
322
+ /**
323
+ * This function estimates the safeTxGas of a Safe transaction.
324
+ * It uses the simulate function defined in the SimulateTxAccessor contract. This method is meant to be used for Safe versions >= 1.3.0.
325
+ *
326
+ * @async
327
+ * @function estimateSafeTxGasWithSimulate
328
+ * @param {Safe} safe - The Safe instance containing all the necessary information about the safe.
329
+ * @param {SafeTransaction} safeTransaction - The transaction for which the safeTxGas is to be estimated.
330
+ * @returns {Promise<string>} A Promise that resolves with the estimated safeTxGas as a string.
331
+ *
332
+ */
333
+ async function estimateSafeTxGasWithSimulate(safe, safeTransaction) {
334
+ const isSafeDeployed = await safe.isSafeDeployed();
335
+ const safeAddress = await safe.getAddress();
336
+ const safeVersion = await safe.getContractVersion();
337
+ const ethAdapter = safe.getEthAdapter();
338
+ const chainId = await safe.getChainId();
339
+ const customContracts = safe.getContractManager().contractNetworks?.[chainId];
340
+ const isL1SafeMasterCopy = safe.getContractManager().isL1SafeMasterCopy;
341
+ const safeSingletonContract = await (0, safeDeploymentContracts_1.getSafeContract)({
342
+ ethAdapter,
343
+ safeVersion,
344
+ isL1SafeMasterCopy,
345
+ customContracts
346
+ });
347
+ // new version of the estimation
348
+ const simulateTxAccessorContract = await (0, safeDeploymentContracts_1.getSimulateTxAccessorContract)({
349
+ ethAdapter,
350
+ safeVersion,
351
+ customContracts
352
+ });
353
+ const transactionDataToEstimate = simulateTxAccessorContract.encode('simulate', [
354
+ safeTransaction.data.to,
355
+ safeTransaction.data.value,
356
+ safeTransaction.data.data,
357
+ safeTransaction.data.operation
358
+ ]);
359
+ // if the Safe is not deployed we can use the singleton address to simulate
360
+ const to = isSafeDeployed ? safeAddress : safeSingletonContract.getAddress();
361
+ const safeFunctionToEstimate = safeSingletonContract.encode('simulateAndRevert', [
362
+ await simulateTxAccessorContract.getAddress(),
363
+ transactionDataToEstimate
364
+ ]);
365
+ const transactionToEstimateGas = {
366
+ to,
367
+ value: '0',
368
+ data: safeFunctionToEstimate,
369
+ from: safeAddress
370
+ };
371
+ try {
372
+ const encodedResponse = await ethAdapter.call(transactionToEstimateGas);
373
+ const safeTxGas = decodeSafeTxGas(encodedResponse);
374
+ return safeTxGas;
375
+ // if the call throws an error we try to parse the returned value
376
+ }
377
+ catch (error) {
378
+ return parseSafeTxGasErrorResponse(error);
379
+ }
380
+ return '0';
381
+ }
382
+ /**
383
+ * This function estimates the gas cost of deploying a Safe.
384
+ * It considers also the costs of the Safe setup call.
385
+ * The setup call includes tasks such as setting up initial owners, defining the threshold, and initializing the salt nonce used for address generation.
386
+ *
387
+ * @async
388
+ * @function estimateSafeDeploymentGas
389
+ * @param {Safe} safe - The Safe object containing all necessary information about the safe, including owners, threshold, and saltNonce.
390
+ * @returns {Promise<string>} A Promise that resolves with the estimated gas cost of the safe deployment as a string.
391
+ */
392
+ async function estimateSafeDeploymentGas(safe) {
393
+ const isSafeDeployed = await safe.isSafeDeployed();
394
+ if (isSafeDeployed) {
395
+ return '0';
396
+ }
397
+ const ethAdapter = safe.getEthAdapter();
398
+ const safeDeploymentTransaction = await safe.createSafeDeploymentTransaction();
399
+ const estimation = await ethAdapter.estimateGas({
400
+ ...safeDeploymentTransaction,
401
+ from: constants_1.ZERO_ADDRESS // if we use the Safe address the estimation always fails due to CREATE2
402
+ });
403
+ return estimation;
404
+ }
405
+ exports.estimateSafeDeploymentGas = estimateSafeDeploymentGas;
130
406
  //# sourceMappingURL=gas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":"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"}
@@ -15,26 +15,24 @@ const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
15
15
  const web3_utils_1 = require("web3-utils");
16
16
  const gas_1 = require("./gas");
17
17
  function standardizeMetaTransactionData(tx) {
18
- var _a;
19
18
  const standardizedTxs = {
20
19
  ...tx,
21
- operation: (_a = tx.operation) !== null && _a !== void 0 ? _a : safe_core_sdk_types_1.OperationType.Call
20
+ operation: tx.operation ?? safe_core_sdk_types_1.OperationType.Call
22
21
  };
23
22
  return standardizedTxs;
24
23
  }
25
24
  exports.standardizeMetaTransactionData = standardizeMetaTransactionData;
26
25
  async function standardizeSafeTransactionData({ safeContract, predictedSafe, ethAdapter, tx, contractNetworks }) {
27
- var _a, _b, _c, _d, _e;
28
26
  const standardizedTxs = {
29
27
  to: tx.to,
30
28
  value: tx.value,
31
29
  data: tx.data,
32
- operation: (_a = tx.operation) !== null && _a !== void 0 ? _a : safe_core_sdk_types_1.OperationType.Call,
33
- baseGas: (_b = tx.baseGas) !== null && _b !== void 0 ? _b : '0',
34
- gasPrice: (_c = tx.gasPrice) !== null && _c !== void 0 ? _c : '0',
30
+ operation: tx.operation ?? safe_core_sdk_types_1.OperationType.Call,
31
+ baseGas: tx.baseGas ?? '0',
32
+ gasPrice: tx.gasPrice ?? '0',
35
33
  gasToken: tx.gasToken || constants_1.ZERO_ADDRESS,
36
34
  refundReceiver: tx.refundReceiver || constants_1.ZERO_ADDRESS,
37
- nonce: (_d = tx.nonce) !== null && _d !== void 0 ? _d : (safeContract ? await safeContract.getNonce() : 0)
35
+ nonce: tx.nonce ?? (safeContract ? await safeContract.getNonce() : 0)
38
36
  };
39
37
  if (typeof tx.safeTxGas !== 'undefined') {
40
38
  return {
@@ -44,7 +42,7 @@ async function standardizeSafeTransactionData({ safeContract, predictedSafe, eth
44
42
  }
45
43
  let safeVersion;
46
44
  if (predictedSafe) {
47
- safeVersion = ((_e = predictedSafe === null || predictedSafe === void 0 ? void 0 : predictedSafe.safeDeploymentConfig) === null || _e === void 0 ? void 0 : _e.safeVersion) || config_1.SAFE_LAST_VERSION;
45
+ safeVersion = predictedSafe?.safeDeploymentConfig?.safeVersion || config_1.DEFAULT_SAFE_VERSION;
48
46
  }
49
47
  else {
50
48
  if (!safeContract) {
@@ -112,7 +110,7 @@ function decodeMultiSendData(encodedData) {
112
110
  }
113
111
  exports.decodeMultiSendData = decodeMultiSendData;
114
112
  function isMetaTransactionArray(safeTransactions) {
115
- return (safeTransactions === null || safeTransactions === void 0 ? void 0 : safeTransactions.length) !== undefined;
113
+ return safeTransactions?.length !== undefined;
116
114
  }
117
115
  exports.isMetaTransactionArray = isMetaTransactionArray;
118
116
  function isSafeMultisigTransactionResponse(safeTransaction) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/transactions/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/transactions/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA8C;AAC9C,gDAA+C;AAC/C,sDAA8D;AAC9D,uEAAiF;AAEjF,2DAA+E;AAC/E,yEAAwE;AACxE,0EAQyC;AACzC,2EAAwD;AACxD,2CAA8E;AAC9E,+BAAkD;AAElD,SAAgB,8BAA8B,CAC5C,EAA8B;IAE9B,MAAM,eAAe,GAAwB;QAC3C,GAAG,EAAE;QACL,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,mCAAa,CAAC,IAAI;KAC9C,CAAA;IACD,OAAO,eAAe,CAAA;AACxB,CAAC;AARD,wEAQC;AAEM,KAAK,UAAU,8BAA8B,CAAC,EACnD,YAAY,EACZ,aAAa,EACb,UAAU,EACV,EAAE,EACF,gBAAgB,EACoB;IACpC,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,mCAAa,CAAC,IAAI;QAC7C,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,GAAG;QAC1B,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,GAAG;QAC5B,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,wBAAY;QACrC,cAAc,EAAE,EAAE,CAAC,cAAc,IAAI,wBAAY;QACjD,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACtE,CAAA;IAED,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,WAAW,EAAE;QACvC,OAAO;YACL,GAAG,eAAe;YAClB,SAAS,EAAE,EAAE,CAAC,SAAS;SACxB,CAAA;KACF;IAED,IAAI,WAAwB,CAAA;IAC5B,IAAI,aAAa,EAAE;QACjB,WAAW,GAAG,aAAa,EAAE,oBAAoB,EAAE,WAAW,IAAI,6BAAoB,CAAA;KACvF;SAAM;QACL,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACxC;QACD,WAAW,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;KAC9C;IAED,MAAM,oBAAoB,GAAG,IAAA,sBAAc,EAAC,qBAAa,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;IAC5F,IACE,CAAC,oBAAoB,IAAI,eAAe,CAAC,QAAQ,KAAK,GAAG,CAAC;QAC1D,CAAC,oBAAoB,IAAI,aAAa,CAAC,EACvC;QACA,OAAO;YACL,GAAG,eAAe;YAClB,SAAS,EAAE,GAAG;SACf,CAAA;KACF;IAED,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACxC;IAED,IAAI,SAAS,CAAA;IACb,IAAI,IAAA,mBAAe,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;QAC3C,SAAS,GAAG,MAAM,IAAA,iBAAW,EAC3B,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,CAAC,EAAE,EAClB,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,SAAS,EACzB,gBAAgB,CACjB,CAAA;KACF;SAAM;QACL,SAAS,GAAG,MAAM,IAAA,mBAAa,EAC7B,YAAY,EACZ,UAAU,EACV,eAAe,CAAC,EAAE,EAClB,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,SAAS,CAC1B,CAAA;KACF;IACD,OAAO;QACL,GAAG,eAAe;QAClB,SAAS;KACV,CAAA;AACH,CAAC;AA7ED,wEA6EC;AAED,SAAS,qBAAqB,CAAC,EAAuB;IACpD,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,IAAA,eAAY,EAC1B,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CACnD,CAAA;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAA0B;IAC5D,OAAO,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnE,CAAC;AAFD,kDAEC;AAED,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,MAAM,kBAAkB,GAAG,IAAI,eAAS,CAAC;QACvC,8DAA8D;KAC/D,CAAC,CAAA;IACF,MAAM,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAErF,MAAM,GAAG,GAA0B,EAAE,CAAA;IAErC,kBAAkB;IAClB,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,OAAO,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE;QACjC,qFAAqF;QACrF,iEAAiE;QAEjE,MAAM,SAAS,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/D,MAAM,EAAE,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;QACzD,MAAM,KAAK,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;QAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAC5E,MAAM,IAAI,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,EAAE,CAAA;QAEnE,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,IAAA,wBAAW,EAAC,SAAS,CAAkB;YAClD,EAAE,EAAE,IAAA,8BAAiB,EAAC,EAAE,CAAC;YACzB,KAAK,EAAE,IAAA,8BAAiB,EAAC,KAAK,CAAC;YAC/B,IAAI;SACL,CAAC,CAAA;KACH;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AA9BD,kDA8BC;AAED,SAAgB,sBAAsB,CACpC,gBAAoE;IAEpE,OAAQ,gBAA0C,EAAE,MAAM,KAAK,SAAS,CAAA;AAC1E,CAAC;AAJD,wDAIC;AAED,SAAgB,iCAAiC,CAC/C,eAAkE;IAElE,OAAQ,eAAmD,CAAC,UAAU,KAAK,SAAS,CAAA;AACtF,CAAC;AAJD,8EAIC"}