@safe-global/protocol-kit 7.0.0 → 7.2.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.
@@ -48,11 +48,15 @@ __export(src_exports, {
48
48
  MultiSendCallOnlyBaseContract: () => MultiSendCallOnlyBaseContract_default,
49
49
  PREDETERMINED_SALT_NONCE: () => PREDETERMINED_SALT_NONCE,
50
50
  SafeBaseContract: () => SafeBaseContract_default,
51
+ SafeFeature: () => SafeFeature,
51
52
  SafeProvider: () => SafeProvider_default,
52
53
  SafeProxyFactoryBaseContract: () => SafeProxyFactoryBaseContract_default,
53
54
  SignMessageLibBaseContract: () => SignMessageLibBaseContract_default,
55
+ adjustVInSignature: () => adjustVInSignature,
54
56
  buildContractSignature: () => buildContractSignature,
55
57
  buildSignatureBytes: () => buildSignatureBytes,
58
+ calculateSafeMessageHash: () => calculateSafeMessageHash,
59
+ calculateSafeTransactionHash: () => calculateSafeTransactionHash,
56
60
  createERC20TokenTransferTransaction: () => createERC20TokenTransferTransaction,
57
61
  createPasskeyClient: () => createPasskeyClient,
58
62
  decodeMultiSendData: () => decodeMultiSendData,
@@ -67,11 +71,14 @@ __export(src_exports, {
67
71
  extractPasskeyData: () => extractPasskeyData,
68
72
  generateEIP712Signature: () => generateEIP712Signature,
69
73
  generateOnChainIdentifier: () => generateOnChainIdentifier_default,
74
+ generatePreValidatedSignature: () => generatePreValidatedSignature,
70
75
  generateSignature: () => generateSignature,
71
76
  generateTypedData: () => generateTypedData,
77
+ getChainIdFromEip3770NetworkPrefix: () => getChainIdFromEip3770NetworkPrefix,
72
78
  getCompatibilityFallbackHandlerContract: () => getCompatibilityFallbackHandlerContract,
73
79
  getCreateCallContract: () => getCreateCallContract,
74
80
  getERC20Decimals: () => getERC20Decimals,
81
+ getEip3770NetworkPrefixFromChainId: () => getEip3770NetworkPrefixFromChainId,
75
82
  getEip712MessageTypes: () => getEip712MessageTypes,
76
83
  getEip712TxTypes: () => getEip712TxTypes,
77
84
  getExtensibleFallbackHandlerContract: () => getExtensibleFallbackHandlerContract,
@@ -86,6 +93,7 @@ __export(src_exports, {
86
93
  getSafeWebAuthnSharedSignerContract: () => getSafeWebAuthnSharedSignerContract,
87
94
  getSafeWebAuthnSignerFactoryContract: () => getSafeWebAuthnSignerFactoryContract,
88
95
  getSignMessageLibContract: () => getSignMessageLibContract,
96
+ hasSafeFeature: () => hasSafeFeature,
89
97
  hashSafeMessage: () => hashSafeMessage,
90
98
  isGasTokenCompatibleWithHandlePayment: () => isGasTokenCompatibleWithHandlePayment,
91
99
  predictSafeAddress: () => predictSafeAddress,
@@ -479,12 +487,15 @@ var networks = [
479
487
  { chainId: 4061n, shortName: "Nahmii3Mainnet" },
480
488
  { chainId: 4062n, shortName: "Nahmii3Testnet" },
481
489
  { chainId: 4078n, shortName: "muster" },
490
+ { chainId: 4153n, shortName: "rise" },
482
491
  { chainId: 4157n, shortName: "crossfi-testnet" },
483
492
  { chainId: 4158n, shortName: "crossfi" },
484
493
  { chainId: 4162n, shortName: "SXR" },
485
494
  { chainId: 4202n, shortName: "lisksep" },
495
+ { chainId: 4217n, shortName: "tempo" },
486
496
  { chainId: 4326n, shortName: "megaeth" },
487
497
  { chainId: 4337n, shortName: "beam" },
498
+ { chainId: 4441n, shortName: "liteforge" },
488
499
  { chainId: 4460n, shortName: "orderlyl2" },
489
500
  { chainId: 4488n, shortName: "HYDRA" },
490
501
  { chainId: 4509n, shortName: "SC" },
@@ -532,6 +543,7 @@ var networks = [
532
543
  { chainId: 7700n, shortName: "canto" },
533
544
  { chainId: 7771n, shortName: "tbitrock" },
534
545
  { chainId: 7897n, shortName: "arena-z" },
546
+ { chainId: 7979n, shortName: "dos" },
535
547
  { chainId: 8008n, shortName: "polynomial" },
536
548
  { chainId: 8150n, shortName: "alpen" },
537
549
  { chainId: 8192n, shortName: "tqf" },
@@ -599,12 +611,14 @@ var networks = [
599
611
  { chainId: 23295n, shortName: "sapphire-testnet" },
600
612
  { chainId: 24101n, shortName: "incentiv" },
601
613
  { chainId: 25327n, shortName: "Everclear" },
614
+ { chainId: 25363n, shortName: "fluent" },
602
615
  { chainId: 26888n, shortName: "tABCore" },
603
616
  { chainId: 28802n, shortName: "tcent" },
604
617
  { chainId: 28882n, shortName: "BobaSepolia" },
605
618
  { chainId: 28979n, shortName: "kimbonet-testnet" },
606
619
  { chainId: 30303n, shortName: "Ethiq" },
607
- { chainId: 31611n, shortName: "mezo" },
620
+ { chainId: 31611n, shortName: "mezo-testnet" },
621
+ { chainId: 31612n, shortName: "mezo" },
608
622
  { chainId: 32323n, shortName: "basedai" },
609
623
  { chainId: 32380n, shortName: "paix" },
610
624
  { chainId: 32769n, shortName: "zil" },
@@ -634,6 +648,7 @@ var networks = [
634
648
  { chainId: 43419n, shortName: "gunz-mainnet" },
635
649
  { chainId: 44787n, shortName: "alfa" },
636
650
  { chainId: 45000n, shortName: "autobahnnetwork" },
651
+ { chainId: 46630n, shortName: "robinhoodchaintestnet" },
637
652
  { chainId: 47763n, shortName: "neox-mainnet" },
638
653
  { chainId: 47805n, shortName: "rei" },
639
654
  { chainId: 48898n, shortName: "zircuit-garfield-testnet" },
@@ -683,10 +698,12 @@ var networks = [
683
698
  { chainId: 90001n, shortName: "dhobyghaut" },
684
699
  { chainId: 91342n, shortName: "giwasepolia" },
685
700
  { chainId: 97435n, shortName: "sling" },
701
+ { chainId: 97476n, shortName: "doma-testnet" },
686
702
  { chainId: 98864n, shortName: "plume-devnet" },
687
703
  { chainId: 98865n, shortName: "plume" },
688
704
  { chainId: 98866n, shortName: "plume-mainnet" },
689
705
  { chainId: 98867n, shortName: "plume-testnet" },
706
+ { chainId: 98875n, shortName: "nil" },
690
707
  { chainId: 98985n, shortName: "superposition-testnet" },
691
708
  { chainId: 102030n, shortName: "ctc" },
692
709
  { chainId: 103454n, shortName: "masatest" },
@@ -832,6 +849,13 @@ function getEip3770NetworkPrefixFromChainId(chainId) {
832
849
  }
833
850
  return network.shortName;
834
851
  }
852
+ function getChainIdFromEip3770NetworkPrefix(prefix) {
853
+ const network = networks.find(({ shortName }) => shortName === prefix);
854
+ if (!network) {
855
+ throw new Error("No chainId found for the given network prefix");
856
+ }
857
+ return network.chainId;
858
+ }
835
859
  function isValidEip3770NetworkPrefix(prefix) {
836
860
  return networks.some(({ shortName }) => shortName === prefix);
837
861
  }
@@ -1137,6 +1161,19 @@ function generateTypedData({
1137
1161
 
1138
1162
  // src/utils/safeVersions.ts
1139
1163
  var import_satisfies2 = __toESM(require("semver/functions/satisfies.js"));
1164
+ var SafeFeature = /* @__PURE__ */ ((SafeFeature2) => {
1165
+ SafeFeature2["SAFE_TX_GAS_OPTIONAL"] = "SAFE_TX_GAS_OPTIONAL";
1166
+ SafeFeature2["SAFE_TX_GUARDS"] = "SAFE_TX_GUARDS";
1167
+ SafeFeature2["SAFE_FALLBACK_HANDLER"] = "SAFE_FALLBACK_HANDLER";
1168
+ SafeFeature2["ETH_SIGN"] = "ETH_SIGN";
1169
+ SafeFeature2["ACCOUNT_ABSTRACTION"] = "ACCOUNT_ABSTRACTION";
1170
+ SafeFeature2["REQUIRED_TXGAS"] = "REQUIRED_TXGAS";
1171
+ SafeFeature2["SIMULATE_AND_REVERT"] = "SIMULATE_AND_REVERT";
1172
+ SafeFeature2["PASSKEY_SIGNER"] = "PASSKEY_SIGNER";
1173
+ SafeFeature2["SAFE_L2_CONTRACTS"] = "SAFE_L2_CONTRACTS";
1174
+ SafeFeature2["SAFE_MODULE_GUARD"] = "SAFE_MODULE_GUARD";
1175
+ return SafeFeature2;
1176
+ })(SafeFeature || {});
1140
1177
  var SAFE_FEATURES_BY_VERSION = {
1141
1178
  ["SAFE_TX_GAS_OPTIONAL" /* SAFE_TX_GAS_OPTIONAL */]: ">=1.3.0",
1142
1179
  ["SAFE_TX_GUARDS" /* SAFE_TX_GUARDS */]: ">=1.3.0",
@@ -5415,11 +5452,23 @@ async function getExtensibleFallbackHandlerContract({
5415
5452
  // src/utils/transactions/gas.ts
5416
5453
  var CALL_DATA_ZERO_BYTE_GAS_COST = 4;
5417
5454
  var CALL_DATA_BYTE_GAS_COST = 16;
5418
- var INITIZATION_GAS_COST = 2e4;
5455
+ var INITIALIZATION_GAS_COST = 22100;
5419
5456
  var INCREMENT_NONCE_GAS_COST = 5e3;
5420
5457
  var HASH_GENERATION_GAS_COST = 1500;
5421
5458
  var ECRECOVER_GAS_COST = 6e3;
5422
- var TRANSAFER_GAS_COST = 32e3;
5459
+ var INTRINSIC_TX_GAS_COST = 21e3;
5460
+ var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
5461
+ var MISC_OVERHEAD_GAS_COST = 3e3;
5462
+ var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
5463
+ var NEW_ACCOUNT_GAS_COST = 25e3;
5464
+ var COLD_ACCOUNT_ACCESS_GAS_COST = 2600;
5465
+ var CALL_VALUE_GAS_COST = 9e3;
5466
+ var ERC20_TRANSFER_GAS_COST = 21e3;
5467
+ var ERC20_NEW_HOLDER_TRANSFER_GAS_COST = 38e3;
5468
+ var LOG_BASE_GAS_COST = 375;
5469
+ var LOG_TOPIC_GAS_COST = 375;
5470
+ var LOG_DATA_GAS_COST_PER_BYTE = 8;
5471
+ var EXECUTION_RESULT_EVENT_GAS_COST = 1500;
5423
5472
  var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
5424
5473
  function estimateDataGasCosts(data) {
5425
5474
  const bytes = data.match(/.{2}/g);
@@ -5433,6 +5482,58 @@ function estimateDataGasCosts(data) {
5433
5482
  return gasCost + CALL_DATA_BYTE_GAS_COST;
5434
5483
  }, 0);
5435
5484
  }
5485
+ function calculateExecTransactionEventsGas(isL1SafeSingleton, data, threshold) {
5486
+ let gas = EXECUTION_RESULT_EVENT_GAS_COST;
5487
+ if (!isL1SafeSingleton) {
5488
+ const dataBytes = (data.length - 2) / 2;
5489
+ const signaturesBytes = threshold * 65;
5490
+ const headBytes = 11 * 32;
5491
+ const dataDynamicBytes = 32 + Math.ceil(dataBytes / 32) * 32;
5492
+ const signaturesDynamicBytes = 32 + Math.ceil(signaturesBytes / 32) * 32;
5493
+ const additionalInfoDynamicBytes = 32 + 3 * 32;
5494
+ const eventDataBytes = headBytes + dataDynamicBytes + signaturesDynamicBytes + additionalInfoDynamicBytes;
5495
+ gas += LOG_BASE_GAS_COST + LOG_TOPIC_GAS_COST + eventDataBytes * LOG_DATA_GAS_COST_PER_BYTE;
5496
+ }
5497
+ return gas;
5498
+ }
5499
+ async function isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver) {
5500
+ if (gasToken.toLowerCase() !== ZERO_ADDRESS.toLowerCase() || refundReceiver.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
5501
+ return false;
5502
+ }
5503
+ const [contractCode, nonce, balance] = await Promise.all([
5504
+ safeProvider.getContractCode(refundReceiver),
5505
+ safeProvider.getNonce(refundReceiver),
5506
+ safeProvider.getBalance(refundReceiver)
5507
+ ]);
5508
+ return contractCode === "0x" && nonce === 0 && balance === 0n;
5509
+ }
5510
+ async function hasExistingTokenBalance(safeProvider, gasToken, account) {
5511
+ const data = (0, import_viem8.encodeFunctionData)({
5512
+ abi: (0, import_viem8.parseAbi)(["function balanceOf(address account) view returns (uint256)"]),
5513
+ functionName: "balanceOf",
5514
+ args: [account]
5515
+ });
5516
+ try {
5517
+ const response = await safeProvider.call({ to: gasToken, from: gasToken, value: "0", data });
5518
+ return BigInt(response || "0x0") > 0n;
5519
+ } catch {
5520
+ return false;
5521
+ }
5522
+ }
5523
+ async function calculateRefundGas(safeProvider, gasPrice, gasToken, refundReceiver) {
5524
+ if (BigInt(gasPrice) === 0n) {
5525
+ return 0;
5526
+ }
5527
+ if (gasToken.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
5528
+ let gas = COLD_ACCOUNT_ACCESS_GAS_COST + CALL_VALUE_GAS_COST;
5529
+ if (await isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver)) {
5530
+ gas += NEW_ACCOUNT_GAS_COST;
5531
+ }
5532
+ return gas;
5533
+ }
5534
+ const hasBalance = await hasExistingTokenBalance(safeProvider, gasToken, refundReceiver);
5535
+ return hasBalance ? ERC20_TRANSFER_GAS_COST : ERC20_NEW_HOLDER_TRANSFER_GAS_COST;
5536
+ }
5436
5537
  async function estimateGas(safeVersion, safeContract, safeProvider, to, valueInWei, data, operation, customContracts) {
5437
5538
  const chainId = await safeProvider.getChainId();
5438
5539
  const simulateTxAccessorContract = await getSimulateTxAccessorContract({
@@ -5484,21 +5585,25 @@ async function estimateTxGas(safeContract, safeProvider, to, valueInWei, data, o
5484
5585
  }
5485
5586
  async function estimateTxBaseGas(safe, safeTransaction) {
5486
5587
  const safeTransactionData = safeTransaction.data;
5487
- const { to, value, data, operation, safeTxGas, gasToken, refundReceiver } = safeTransactionData;
5488
- const safeThreshold = await safe.getThreshold();
5489
- const safeNonce = await safe.getNonce();
5490
- const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
5588
+ const { to, value, data, operation, safeTxGas, gasPrice, gasToken, refundReceiver } = safeTransactionData;
5491
5589
  const encodeSafeTxGas = safeTxGas || 0;
5492
5590
  const encodeBaseGas = 0;
5493
- const gasPrice = 1;
5591
+ const encodeGasPrice = 1;
5494
5592
  const encodeGasToken = gasToken || ZERO_ADDRESS;
5495
5593
  const encodeRefundReceiver = refundReceiver || ZERO_ADDRESS;
5496
5594
  const signatures = "0x";
5497
- const safeVersion = safe.getContractVersion();
5498
5595
  const safeProvider = safe.getSafeProvider();
5499
- const isL1SafeSingleton = safe.getContractManager().isL1SafeSingleton;
5500
- const chainId = await safe.getChainId();
5501
- const customContracts = safe.getContractManager().contractNetworks?.[chainId.toString()];
5596
+ const safeVersion = safe.getContractVersion();
5597
+ const contractManager = safe.getContractManager();
5598
+ const isL1SafeSingleton = contractManager.isL1SafeSingleton;
5599
+ const [safeThreshold, safeNonce, chainId, refundGas] = await Promise.all([
5600
+ safe.getThreshold(),
5601
+ safe.getNonce(),
5602
+ safe.getChainId(),
5603
+ calculateRefundGas(safeProvider, gasPrice, encodeGasToken, encodeRefundReceiver)
5604
+ ]);
5605
+ const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
5606
+ const customContracts = contractManager.contractNetworks?.[chainId.toString()];
5502
5607
  const safeSingletonContract = await getSafeContract({
5503
5608
  safeProvider,
5504
5609
  safeVersion,
@@ -5512,16 +5617,19 @@ async function estimateTxBaseGas(safe, safeTransaction) {
5512
5617
  operation,
5513
5618
  encodeSafeTxGas,
5514
5619
  encodeBaseGas,
5515
- gasPrice,
5620
+ encodeGasPrice,
5516
5621
  encodeGasToken,
5517
5622
  encodeRefundReceiver,
5518
5623
  signatures
5519
5624
  ]);
5520
5625
  const isSafeInitialized = safeNonce !== 0;
5521
- const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIZATION_GAS_COST;
5626
+ const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIALIZATION_GAS_COST;
5522
5627
  let baseGas = signaturesGasCost + estimateDataGasCosts(execTransactionData) + incrementNonceGasCost + HASH_GENERATION_GAS_COST;
5523
- baseGas > 65536 ? baseGas += 64 : baseGas += 128;
5524
- baseGas += TRANSAFER_GAS_COST;
5628
+ baseGas += refundGas;
5629
+ baseGas += calculateExecTransactionEventsGas(isL1SafeSingleton ?? false, data, safeThreshold);
5630
+ baseGas += EXTRA_BASE_GAS_COST;
5631
+ const baseGasUsedBytes = Math.ceil(baseGas.toString(16).length / 2);
5632
+ baseGas += baseGasUsedBytes * (CALL_DATA_BYTE_GAS_COST - CALL_DATA_ZERO_BYTE_GAS_COST);
5525
5633
  return baseGas.toString();
5526
5634
  }
5527
5635
  async function estimateSafeTxGas(safe, safeTransaction) {
@@ -7301,7 +7409,7 @@ function generateOnChainIdentifier({
7301
7409
  var generateOnChainIdentifier_default = generateOnChainIdentifier;
7302
7410
 
7303
7411
  // src/utils/getProtocolKitVersion.ts
7304
- var getProtocolKitVersion = () => "7.0.0";
7412
+ var getProtocolKitVersion = () => "7.2.0";
7305
7413
 
7306
7414
  // src/Safe.ts
7307
7415
  var EQ_OR_GT_1_5_0 = ">=1.5.0";
@@ -475,12 +475,15 @@ var networks = [
475
475
  { chainId: 4061n, shortName: "Nahmii3Mainnet" },
476
476
  { chainId: 4062n, shortName: "Nahmii3Testnet" },
477
477
  { chainId: 4078n, shortName: "muster" },
478
+ { chainId: 4153n, shortName: "rise" },
478
479
  { chainId: 4157n, shortName: "crossfi-testnet" },
479
480
  { chainId: 4158n, shortName: "crossfi" },
480
481
  { chainId: 4162n, shortName: "SXR" },
481
482
  { chainId: 4202n, shortName: "lisksep" },
483
+ { chainId: 4217n, shortName: "tempo" },
482
484
  { chainId: 4326n, shortName: "megaeth" },
483
485
  { chainId: 4337n, shortName: "beam" },
486
+ { chainId: 4441n, shortName: "liteforge" },
484
487
  { chainId: 4460n, shortName: "orderlyl2" },
485
488
  { chainId: 4488n, shortName: "HYDRA" },
486
489
  { chainId: 4509n, shortName: "SC" },
@@ -528,6 +531,7 @@ var networks = [
528
531
  { chainId: 7700n, shortName: "canto" },
529
532
  { chainId: 7771n, shortName: "tbitrock" },
530
533
  { chainId: 7897n, shortName: "arena-z" },
534
+ { chainId: 7979n, shortName: "dos" },
531
535
  { chainId: 8008n, shortName: "polynomial" },
532
536
  { chainId: 8150n, shortName: "alpen" },
533
537
  { chainId: 8192n, shortName: "tqf" },
@@ -595,12 +599,14 @@ var networks = [
595
599
  { chainId: 23295n, shortName: "sapphire-testnet" },
596
600
  { chainId: 24101n, shortName: "incentiv" },
597
601
  { chainId: 25327n, shortName: "Everclear" },
602
+ { chainId: 25363n, shortName: "fluent" },
598
603
  { chainId: 26888n, shortName: "tABCore" },
599
604
  { chainId: 28802n, shortName: "tcent" },
600
605
  { chainId: 28882n, shortName: "BobaSepolia" },
601
606
  { chainId: 28979n, shortName: "kimbonet-testnet" },
602
607
  { chainId: 30303n, shortName: "Ethiq" },
603
- { chainId: 31611n, shortName: "mezo" },
608
+ { chainId: 31611n, shortName: "mezo-testnet" },
609
+ { chainId: 31612n, shortName: "mezo" },
604
610
  { chainId: 32323n, shortName: "basedai" },
605
611
  { chainId: 32380n, shortName: "paix" },
606
612
  { chainId: 32769n, shortName: "zil" },
@@ -630,6 +636,7 @@ var networks = [
630
636
  { chainId: 43419n, shortName: "gunz-mainnet" },
631
637
  { chainId: 44787n, shortName: "alfa" },
632
638
  { chainId: 45000n, shortName: "autobahnnetwork" },
639
+ { chainId: 46630n, shortName: "robinhoodchaintestnet" },
633
640
  { chainId: 47763n, shortName: "neox-mainnet" },
634
641
  { chainId: 47805n, shortName: "rei" },
635
642
  { chainId: 48898n, shortName: "zircuit-garfield-testnet" },
@@ -679,10 +686,12 @@ var networks = [
679
686
  { chainId: 90001n, shortName: "dhobyghaut" },
680
687
  { chainId: 91342n, shortName: "giwasepolia" },
681
688
  { chainId: 97435n, shortName: "sling" },
689
+ { chainId: 97476n, shortName: "doma-testnet" },
682
690
  { chainId: 98864n, shortName: "plume-devnet" },
683
691
  { chainId: 98865n, shortName: "plume" },
684
692
  { chainId: 98866n, shortName: "plume-mainnet" },
685
693
  { chainId: 98867n, shortName: "plume-testnet" },
694
+ { chainId: 98875n, shortName: "nil" },
686
695
  { chainId: 98985n, shortName: "superposition-testnet" },
687
696
  { chainId: 102030n, shortName: "ctc" },
688
697
  { chainId: 103454n, shortName: "masatest" },
@@ -4640,6 +4649,10 @@ async function getSafeWebAuthnSharedSignerContract({
4640
4649
  // src/utils/transactions/gas.ts
4641
4650
  var CALL_DATA_BYTE_GAS_COST = 16;
4642
4651
  var ECRECOVER_GAS_COST = 6e3;
4652
+ var INTRINSIC_TX_GAS_COST = 21e3;
4653
+ var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
4654
+ var MISC_OVERHEAD_GAS_COST = 3e3;
4655
+ var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
4643
4656
  var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
4644
4657
 
4645
4658
  // src/utils/transactions/utils.ts
@@ -22,7 +22,7 @@ import {
22
22
  isAddress as isAddress4,
23
23
  keccak256 as keccak2562,
24
24
  pad,
25
- parseAbi as parseAbi3,
25
+ parseAbi as parseAbi4,
26
26
  toHex as toHex3,
27
27
  toEventHash,
28
28
  decodeEventLog
@@ -418,12 +418,15 @@ var networks = [
418
418
  { chainId: 4061n, shortName: "Nahmii3Mainnet" },
419
419
  { chainId: 4062n, shortName: "Nahmii3Testnet" },
420
420
  { chainId: 4078n, shortName: "muster" },
421
+ { chainId: 4153n, shortName: "rise" },
421
422
  { chainId: 4157n, shortName: "crossfi-testnet" },
422
423
  { chainId: 4158n, shortName: "crossfi" },
423
424
  { chainId: 4162n, shortName: "SXR" },
424
425
  { chainId: 4202n, shortName: "lisksep" },
426
+ { chainId: 4217n, shortName: "tempo" },
425
427
  { chainId: 4326n, shortName: "megaeth" },
426
428
  { chainId: 4337n, shortName: "beam" },
429
+ { chainId: 4441n, shortName: "liteforge" },
427
430
  { chainId: 4460n, shortName: "orderlyl2" },
428
431
  { chainId: 4488n, shortName: "HYDRA" },
429
432
  { chainId: 4509n, shortName: "SC" },
@@ -471,6 +474,7 @@ var networks = [
471
474
  { chainId: 7700n, shortName: "canto" },
472
475
  { chainId: 7771n, shortName: "tbitrock" },
473
476
  { chainId: 7897n, shortName: "arena-z" },
477
+ { chainId: 7979n, shortName: "dos" },
474
478
  { chainId: 8008n, shortName: "polynomial" },
475
479
  { chainId: 8150n, shortName: "alpen" },
476
480
  { chainId: 8192n, shortName: "tqf" },
@@ -538,12 +542,14 @@ var networks = [
538
542
  { chainId: 23295n, shortName: "sapphire-testnet" },
539
543
  { chainId: 24101n, shortName: "incentiv" },
540
544
  { chainId: 25327n, shortName: "Everclear" },
545
+ { chainId: 25363n, shortName: "fluent" },
541
546
  { chainId: 26888n, shortName: "tABCore" },
542
547
  { chainId: 28802n, shortName: "tcent" },
543
548
  { chainId: 28882n, shortName: "BobaSepolia" },
544
549
  { chainId: 28979n, shortName: "kimbonet-testnet" },
545
550
  { chainId: 30303n, shortName: "Ethiq" },
546
- { chainId: 31611n, shortName: "mezo" },
551
+ { chainId: 31611n, shortName: "mezo-testnet" },
552
+ { chainId: 31612n, shortName: "mezo" },
547
553
  { chainId: 32323n, shortName: "basedai" },
548
554
  { chainId: 32380n, shortName: "paix" },
549
555
  { chainId: 32769n, shortName: "zil" },
@@ -573,6 +579,7 @@ var networks = [
573
579
  { chainId: 43419n, shortName: "gunz-mainnet" },
574
580
  { chainId: 44787n, shortName: "alfa" },
575
581
  { chainId: 45000n, shortName: "autobahnnetwork" },
582
+ { chainId: 46630n, shortName: "robinhoodchaintestnet" },
576
583
  { chainId: 47763n, shortName: "neox-mainnet" },
577
584
  { chainId: 47805n, shortName: "rei" },
578
585
  { chainId: 48898n, shortName: "zircuit-garfield-testnet" },
@@ -622,10 +629,12 @@ var networks = [
622
629
  { chainId: 90001n, shortName: "dhobyghaut" },
623
630
  { chainId: 91342n, shortName: "giwasepolia" },
624
631
  { chainId: 97435n, shortName: "sling" },
632
+ { chainId: 97476n, shortName: "doma-testnet" },
625
633
  { chainId: 98864n, shortName: "plume-devnet" },
626
634
  { chainId: 98865n, shortName: "plume" },
627
635
  { chainId: 98866n, shortName: "plume-mainnet" },
628
636
  { chainId: 98867n, shortName: "plume-testnet" },
637
+ { chainId: 98875n, shortName: "nil" },
629
638
  { chainId: 98985n, shortName: "superposition-testnet" },
630
639
  { chainId: 102030n, shortName: "ctc" },
631
640
  { chainId: 103454n, shortName: "masatest" },
@@ -771,6 +780,13 @@ function getEip3770NetworkPrefixFromChainId(chainId) {
771
780
  }
772
781
  return network.shortName;
773
782
  }
783
+ function getChainIdFromEip3770NetworkPrefix(prefix) {
784
+ const network = networks.find(({ shortName }) => shortName === prefix);
785
+ if (!network) {
786
+ throw new Error("No chainId found for the given network prefix");
787
+ }
788
+ return network.chainId;
789
+ }
774
790
  function isValidEip3770NetworkPrefix(prefix) {
775
791
  return networks.some(({ shortName }) => shortName === prefix);
776
792
  }
@@ -1084,6 +1100,19 @@ function generateTypedData({
1084
1100
 
1085
1101
  // src/utils/safeVersions.ts
1086
1102
  import semverSatisfies2 from "semver/functions/satisfies.js";
1103
+ var SafeFeature = /* @__PURE__ */ ((SafeFeature2) => {
1104
+ SafeFeature2["SAFE_TX_GAS_OPTIONAL"] = "SAFE_TX_GAS_OPTIONAL";
1105
+ SafeFeature2["SAFE_TX_GUARDS"] = "SAFE_TX_GUARDS";
1106
+ SafeFeature2["SAFE_FALLBACK_HANDLER"] = "SAFE_FALLBACK_HANDLER";
1107
+ SafeFeature2["ETH_SIGN"] = "ETH_SIGN";
1108
+ SafeFeature2["ACCOUNT_ABSTRACTION"] = "ACCOUNT_ABSTRACTION";
1109
+ SafeFeature2["REQUIRED_TXGAS"] = "REQUIRED_TXGAS";
1110
+ SafeFeature2["SIMULATE_AND_REVERT"] = "SIMULATE_AND_REVERT";
1111
+ SafeFeature2["PASSKEY_SIGNER"] = "PASSKEY_SIGNER";
1112
+ SafeFeature2["SAFE_L2_CONTRACTS"] = "SAFE_L2_CONTRACTS";
1113
+ SafeFeature2["SAFE_MODULE_GUARD"] = "SAFE_MODULE_GUARD";
1114
+ return SafeFeature2;
1115
+ })(SafeFeature || {});
1087
1116
  var SAFE_FEATURES_BY_VERSION = {
1088
1117
  ["SAFE_TX_GAS_OPTIONAL" /* SAFE_TX_GAS_OPTIONAL */]: ">=1.3.0",
1089
1118
  ["SAFE_TX_GUARDS" /* SAFE_TX_GUARDS */]: ">=1.3.0",
@@ -1291,7 +1320,11 @@ var calculateSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
1291
1320
  };
1292
1321
 
1293
1322
  // src/utils/transactions/gas.ts
1294
- import { BaseError } from "viem";
1323
+ import {
1324
+ BaseError,
1325
+ encodeFunctionData as encodeFunctionData2,
1326
+ parseAbi
1327
+ } from "viem";
1295
1328
  import { OperationType } from "@safe-global/types-kit";
1296
1329
  import semverSatisfies4 from "semver/functions/satisfies.js";
1297
1330
 
@@ -5432,11 +5465,23 @@ async function getExtensibleFallbackHandlerContract({
5432
5465
  // src/utils/transactions/gas.ts
5433
5466
  var CALL_DATA_ZERO_BYTE_GAS_COST = 4;
5434
5467
  var CALL_DATA_BYTE_GAS_COST = 16;
5435
- var INITIZATION_GAS_COST = 2e4;
5468
+ var INITIALIZATION_GAS_COST = 22100;
5436
5469
  var INCREMENT_NONCE_GAS_COST = 5e3;
5437
5470
  var HASH_GENERATION_GAS_COST = 1500;
5438
5471
  var ECRECOVER_GAS_COST = 6e3;
5439
- var TRANSAFER_GAS_COST = 32e3;
5472
+ var INTRINSIC_TX_GAS_COST = 21e3;
5473
+ var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
5474
+ var MISC_OVERHEAD_GAS_COST = 3e3;
5475
+ var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
5476
+ var NEW_ACCOUNT_GAS_COST = 25e3;
5477
+ var COLD_ACCOUNT_ACCESS_GAS_COST = 2600;
5478
+ var CALL_VALUE_GAS_COST = 9e3;
5479
+ var ERC20_TRANSFER_GAS_COST = 21e3;
5480
+ var ERC20_NEW_HOLDER_TRANSFER_GAS_COST = 38e3;
5481
+ var LOG_BASE_GAS_COST = 375;
5482
+ var LOG_TOPIC_GAS_COST = 375;
5483
+ var LOG_DATA_GAS_COST_PER_BYTE = 8;
5484
+ var EXECUTION_RESULT_EVENT_GAS_COST = 1500;
5440
5485
  var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
5441
5486
  function estimateDataGasCosts(data) {
5442
5487
  const bytes = data.match(/.{2}/g);
@@ -5450,6 +5495,58 @@ function estimateDataGasCosts(data) {
5450
5495
  return gasCost + CALL_DATA_BYTE_GAS_COST;
5451
5496
  }, 0);
5452
5497
  }
5498
+ function calculateExecTransactionEventsGas(isL1SafeSingleton, data, threshold) {
5499
+ let gas = EXECUTION_RESULT_EVENT_GAS_COST;
5500
+ if (!isL1SafeSingleton) {
5501
+ const dataBytes = (data.length - 2) / 2;
5502
+ const signaturesBytes = threshold * 65;
5503
+ const headBytes = 11 * 32;
5504
+ const dataDynamicBytes = 32 + Math.ceil(dataBytes / 32) * 32;
5505
+ const signaturesDynamicBytes = 32 + Math.ceil(signaturesBytes / 32) * 32;
5506
+ const additionalInfoDynamicBytes = 32 + 3 * 32;
5507
+ const eventDataBytes = headBytes + dataDynamicBytes + signaturesDynamicBytes + additionalInfoDynamicBytes;
5508
+ gas += LOG_BASE_GAS_COST + LOG_TOPIC_GAS_COST + eventDataBytes * LOG_DATA_GAS_COST_PER_BYTE;
5509
+ }
5510
+ return gas;
5511
+ }
5512
+ async function isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver) {
5513
+ if (gasToken.toLowerCase() !== ZERO_ADDRESS.toLowerCase() || refundReceiver.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
5514
+ return false;
5515
+ }
5516
+ const [contractCode, nonce, balance] = await Promise.all([
5517
+ safeProvider.getContractCode(refundReceiver),
5518
+ safeProvider.getNonce(refundReceiver),
5519
+ safeProvider.getBalance(refundReceiver)
5520
+ ]);
5521
+ return contractCode === "0x" && nonce === 0 && balance === 0n;
5522
+ }
5523
+ async function hasExistingTokenBalance(safeProvider, gasToken, account) {
5524
+ const data = encodeFunctionData2({
5525
+ abi: parseAbi(["function balanceOf(address account) view returns (uint256)"]),
5526
+ functionName: "balanceOf",
5527
+ args: [account]
5528
+ });
5529
+ try {
5530
+ const response = await safeProvider.call({ to: gasToken, from: gasToken, value: "0", data });
5531
+ return BigInt(response || "0x0") > 0n;
5532
+ } catch {
5533
+ return false;
5534
+ }
5535
+ }
5536
+ async function calculateRefundGas(safeProvider, gasPrice, gasToken, refundReceiver) {
5537
+ if (BigInt(gasPrice) === 0n) {
5538
+ return 0;
5539
+ }
5540
+ if (gasToken.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
5541
+ let gas = COLD_ACCOUNT_ACCESS_GAS_COST + CALL_VALUE_GAS_COST;
5542
+ if (await isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver)) {
5543
+ gas += NEW_ACCOUNT_GAS_COST;
5544
+ }
5545
+ return gas;
5546
+ }
5547
+ const hasBalance = await hasExistingTokenBalance(safeProvider, gasToken, refundReceiver);
5548
+ return hasBalance ? ERC20_TRANSFER_GAS_COST : ERC20_NEW_HOLDER_TRANSFER_GAS_COST;
5549
+ }
5453
5550
  async function estimateGas(safeVersion, safeContract, safeProvider, to, valueInWei, data, operation, customContracts) {
5454
5551
  const chainId = await safeProvider.getChainId();
5455
5552
  const simulateTxAccessorContract = await getSimulateTxAccessorContract({
@@ -5501,21 +5598,25 @@ async function estimateTxGas(safeContract, safeProvider, to, valueInWei, data, o
5501
5598
  }
5502
5599
  async function estimateTxBaseGas(safe, safeTransaction) {
5503
5600
  const safeTransactionData = safeTransaction.data;
5504
- const { to, value, data, operation, safeTxGas, gasToken, refundReceiver } = safeTransactionData;
5505
- const safeThreshold = await safe.getThreshold();
5506
- const safeNonce = await safe.getNonce();
5507
- const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
5601
+ const { to, value, data, operation, safeTxGas, gasPrice, gasToken, refundReceiver } = safeTransactionData;
5508
5602
  const encodeSafeTxGas = safeTxGas || 0;
5509
5603
  const encodeBaseGas = 0;
5510
- const gasPrice = 1;
5604
+ const encodeGasPrice = 1;
5511
5605
  const encodeGasToken = gasToken || ZERO_ADDRESS;
5512
5606
  const encodeRefundReceiver = refundReceiver || ZERO_ADDRESS;
5513
5607
  const signatures = "0x";
5514
- const safeVersion = safe.getContractVersion();
5515
5608
  const safeProvider = safe.getSafeProvider();
5516
- const isL1SafeSingleton = safe.getContractManager().isL1SafeSingleton;
5517
- const chainId = await safe.getChainId();
5518
- const customContracts = safe.getContractManager().contractNetworks?.[chainId.toString()];
5609
+ const safeVersion = safe.getContractVersion();
5610
+ const contractManager = safe.getContractManager();
5611
+ const isL1SafeSingleton = contractManager.isL1SafeSingleton;
5612
+ const [safeThreshold, safeNonce, chainId, refundGas] = await Promise.all([
5613
+ safe.getThreshold(),
5614
+ safe.getNonce(),
5615
+ safe.getChainId(),
5616
+ calculateRefundGas(safeProvider, gasPrice, encodeGasToken, encodeRefundReceiver)
5617
+ ]);
5618
+ const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
5619
+ const customContracts = contractManager.contractNetworks?.[chainId.toString()];
5519
5620
  const safeSingletonContract = await getSafeContract({
5520
5621
  safeProvider,
5521
5622
  safeVersion,
@@ -5529,16 +5630,19 @@ async function estimateTxBaseGas(safe, safeTransaction) {
5529
5630
  operation,
5530
5631
  encodeSafeTxGas,
5531
5632
  encodeBaseGas,
5532
- gasPrice,
5633
+ encodeGasPrice,
5533
5634
  encodeGasToken,
5534
5635
  encodeRefundReceiver,
5535
5636
  signatures
5536
5637
  ]);
5537
5638
  const isSafeInitialized = safeNonce !== 0;
5538
- const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIZATION_GAS_COST;
5639
+ const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIALIZATION_GAS_COST;
5539
5640
  let baseGas = signaturesGasCost + estimateDataGasCosts(execTransactionData) + incrementNonceGasCost + HASH_GENERATION_GAS_COST;
5540
- baseGas > 65536 ? baseGas += 64 : baseGas += 128;
5541
- baseGas += TRANSAFER_GAS_COST;
5641
+ baseGas += refundGas;
5642
+ baseGas += calculateExecTransactionEventsGas(isL1SafeSingleton ?? false, data, safeThreshold);
5643
+ baseGas += EXTRA_BASE_GAS_COST;
5644
+ const baseGasUsedBytes = Math.ceil(baseGas.toString(16).length / 2);
5645
+ baseGas += baseGasUsedBytes * (CALL_DATA_BYTE_GAS_COST - CALL_DATA_ZERO_BYTE_GAS_COST);
5542
5646
  return baseGas.toString();
5543
5647
  }
5544
5648
  async function estimateSafeTxGas(safe, safeTransaction) {
@@ -5727,7 +5831,7 @@ import {
5727
5831
  encodePacked,
5728
5832
  bytesToHex,
5729
5833
  decodeFunctionData,
5730
- parseAbi
5834
+ parseAbi as parseAbi2
5731
5835
  } from "viem";
5732
5836
  import { waitForTransactionReceipt as waitForTransactionReceiptViem } from "viem/actions";
5733
5837
  function standardizeMetaTransactionData(tx) {
@@ -5827,7 +5931,7 @@ function encodeMultiSendData(txs) {
5827
5931
  }
5828
5932
  function decodeMultiSendData(encodedData) {
5829
5933
  const decodedData = decodeFunctionData({
5830
- abi: parseAbi(["function multiSend(bytes memory transactions) public payable"]),
5934
+ abi: parseAbi2(["function multiSend(bytes memory transactions) public payable"]),
5831
5935
  data: asHex(encodedData)
5832
5936
  });
5833
5937
  const args = decodedData.args;
@@ -6076,8 +6180,8 @@ import {
6076
6180
  fromBytes,
6077
6181
  fromHex,
6078
6182
  parseAbiParameters,
6079
- encodeFunctionData as encodeFunctionData2,
6080
- parseAbi as parseAbi2
6183
+ encodeFunctionData as encodeFunctionData3,
6184
+ parseAbi as parseAbi3
6081
6185
  } from "viem";
6082
6186
 
6083
6187
  // src/utils/passkeys/isSharedSigner.ts
@@ -6163,8 +6267,8 @@ var createPasskeyClient = async (passkey, safeWebAuthnSignerFactoryContract, saf
6163
6267
  signTransaction,
6164
6268
  signTypedData,
6165
6269
  encodeConfigure() {
6166
- return encodeFunctionData2({
6167
- abi: parseAbi2(["function configure((uint256 x, uint256 y, uint176 verifiers) signer)"]),
6270
+ return encodeFunctionData3({
6271
+ abi: parseAbi3(["function configure((uint256 x, uint256 y, uint176 verifiers) signer)"]),
6168
6272
  functionName: "configure",
6169
6273
  args: [
6170
6274
  {
@@ -6695,7 +6799,7 @@ var memoizedGetSafeContract = createMemoizedFunction(
6695
6799
  async function getSafeContractVersion(safeProvider, safeAddress) {
6696
6800
  return await safeProvider.readContract({
6697
6801
  address: safeAddress,
6698
- abi: parseAbi3(["function VERSION() view returns (string)"]),
6802
+ abi: parseAbi4(["function VERSION() view returns (string)"]),
6699
6803
  functionName: "VERSION"
6700
6804
  });
6701
6805
  }
@@ -6849,7 +6953,7 @@ function getSafeAddressFromDeploymentTx(txReceipt, safeVersion) {
6849
6953
  }
6850
6954
  const { data, topics } = proxyCreationEvent;
6851
6955
  const { args } = decodeEventLog({
6852
- abi: parseAbi3([getProxyCreationEvent(safeVersion)]),
6956
+ abi: parseAbi4([getProxyCreationEvent(safeVersion)]),
6853
6957
  eventName: "ProxyCreation",
6854
6958
  data,
6855
6959
  topics
@@ -7367,7 +7471,7 @@ function generateOnChainIdentifier({
7367
7471
  var generateOnChainIdentifier_default = generateOnChainIdentifier;
7368
7472
 
7369
7473
  // src/utils/getProtocolKitVersion.ts
7370
- var getProtocolKitVersion = () => "7.0.0";
7474
+ var getProtocolKitVersion = () => "7.2.0";
7371
7475
 
7372
7476
  // src/Safe.ts
7373
7477
  var EQ_OR_GT_1_5_0 = ">=1.5.0";
@@ -9016,15 +9120,15 @@ var Safe = class _Safe {
9016
9120
  var Safe_default = Safe;
9017
9121
 
9018
9122
  // src/utils/erc-20/index.ts
9019
- import { encodeFunctionData as encodeFunctionData3, parseAbi as parseAbi4 } from "viem";
9123
+ import { encodeFunctionData as encodeFunctionData4, parseAbi as parseAbi5 } from "viem";
9020
9124
  var ERC20_ABI = [
9021
9125
  "function transfer(address recipient, uint256 amount) returns (bool)",
9022
9126
  "function decimals() view returns (uint8)"
9023
9127
  ];
9024
9128
  async function getERC20Decimals(tokenAddress, safe) {
9025
9129
  const safeProvider = safe.getSafeProvider();
9026
- const data = encodeFunctionData3({
9027
- abi: parseAbi4(ERC20_ABI),
9130
+ const data = encodeFunctionData4({
9131
+ abi: parseAbi5(ERC20_ABI),
9028
9132
  functionName: "decimals"
9029
9133
  });
9030
9134
  const getTokenDecimalsTransaction = {
@@ -9051,8 +9155,8 @@ async function isGasTokenCompatibleWithHandlePayment(gasToken, safe) {
9051
9155
  return hasTokenStandardERC20Decimals;
9052
9156
  }
9053
9157
  function createERC20TokenTransferTransaction(tokenAddress, toAddress, amount) {
9054
- const data = encodeFunctionData3({
9055
- abi: parseAbi4(ERC20_ABI),
9158
+ const data = encodeFunctionData4({
9159
+ abi: parseAbi5(ERC20_ABI),
9056
9160
  functionName: "transfer",
9057
9161
  args: [toAddress, amount]
9058
9162
  });
@@ -9077,11 +9181,15 @@ export {
9077
9181
  MultiSendCallOnlyBaseContract_default as MultiSendCallOnlyBaseContract,
9078
9182
  PREDETERMINED_SALT_NONCE,
9079
9183
  SafeBaseContract_default as SafeBaseContract,
9184
+ SafeFeature,
9080
9185
  SafeProvider_default as SafeProvider,
9081
9186
  SafeProxyFactoryBaseContract_default as SafeProxyFactoryBaseContract,
9082
9187
  SignMessageLibBaseContract_default as SignMessageLibBaseContract,
9188
+ adjustVInSignature,
9083
9189
  buildContractSignature,
9084
9190
  buildSignatureBytes,
9191
+ calculateSafeMessageHash,
9192
+ calculateSafeTransactionHash,
9085
9193
  createERC20TokenTransferTransaction,
9086
9194
  createPasskeyClient,
9087
9195
  decodeMultiSendData,
@@ -9096,11 +9204,14 @@ export {
9096
9204
  extractPasskeyData,
9097
9205
  generateEIP712Signature,
9098
9206
  generateOnChainIdentifier_default as generateOnChainIdentifier,
9207
+ generatePreValidatedSignature,
9099
9208
  generateSignature,
9100
9209
  generateTypedData,
9210
+ getChainIdFromEip3770NetworkPrefix,
9101
9211
  getCompatibilityFallbackHandlerContract,
9102
9212
  getCreateCallContract,
9103
9213
  getERC20Decimals,
9214
+ getEip3770NetworkPrefixFromChainId,
9104
9215
  getEip712MessageTypes,
9105
9216
  getEip712TxTypes,
9106
9217
  getExtensibleFallbackHandlerContract,
@@ -9115,6 +9226,7 @@ export {
9115
9226
  getSafeWebAuthnSharedSignerContract,
9116
9227
  getSafeWebAuthnSignerFactoryContract,
9117
9228
  getSignMessageLibContract,
9229
+ hasSafeFeature,
9118
9230
  hashSafeMessage,
9119
9231
  isGasTokenCompatibleWithHandlePayment,
9120
9232
  predictSafeAddress,
@@ -433,12 +433,15 @@ var networks = [
433
433
  { chainId: 4061n, shortName: "Nahmii3Mainnet" },
434
434
  { chainId: 4062n, shortName: "Nahmii3Testnet" },
435
435
  { chainId: 4078n, shortName: "muster" },
436
+ { chainId: 4153n, shortName: "rise" },
436
437
  { chainId: 4157n, shortName: "crossfi-testnet" },
437
438
  { chainId: 4158n, shortName: "crossfi" },
438
439
  { chainId: 4162n, shortName: "SXR" },
439
440
  { chainId: 4202n, shortName: "lisksep" },
441
+ { chainId: 4217n, shortName: "tempo" },
440
442
  { chainId: 4326n, shortName: "megaeth" },
441
443
  { chainId: 4337n, shortName: "beam" },
444
+ { chainId: 4441n, shortName: "liteforge" },
442
445
  { chainId: 4460n, shortName: "orderlyl2" },
443
446
  { chainId: 4488n, shortName: "HYDRA" },
444
447
  { chainId: 4509n, shortName: "SC" },
@@ -486,6 +489,7 @@ var networks = [
486
489
  { chainId: 7700n, shortName: "canto" },
487
490
  { chainId: 7771n, shortName: "tbitrock" },
488
491
  { chainId: 7897n, shortName: "arena-z" },
492
+ { chainId: 7979n, shortName: "dos" },
489
493
  { chainId: 8008n, shortName: "polynomial" },
490
494
  { chainId: 8150n, shortName: "alpen" },
491
495
  { chainId: 8192n, shortName: "tqf" },
@@ -553,12 +557,14 @@ var networks = [
553
557
  { chainId: 23295n, shortName: "sapphire-testnet" },
554
558
  { chainId: 24101n, shortName: "incentiv" },
555
559
  { chainId: 25327n, shortName: "Everclear" },
560
+ { chainId: 25363n, shortName: "fluent" },
556
561
  { chainId: 26888n, shortName: "tABCore" },
557
562
  { chainId: 28802n, shortName: "tcent" },
558
563
  { chainId: 28882n, shortName: "BobaSepolia" },
559
564
  { chainId: 28979n, shortName: "kimbonet-testnet" },
560
565
  { chainId: 30303n, shortName: "Ethiq" },
561
- { chainId: 31611n, shortName: "mezo" },
566
+ { chainId: 31611n, shortName: "mezo-testnet" },
567
+ { chainId: 31612n, shortName: "mezo" },
562
568
  { chainId: 32323n, shortName: "basedai" },
563
569
  { chainId: 32380n, shortName: "paix" },
564
570
  { chainId: 32769n, shortName: "zil" },
@@ -588,6 +594,7 @@ var networks = [
588
594
  { chainId: 43419n, shortName: "gunz-mainnet" },
589
595
  { chainId: 44787n, shortName: "alfa" },
590
596
  { chainId: 45000n, shortName: "autobahnnetwork" },
597
+ { chainId: 46630n, shortName: "robinhoodchaintestnet" },
591
598
  { chainId: 47763n, shortName: "neox-mainnet" },
592
599
  { chainId: 47805n, shortName: "rei" },
593
600
  { chainId: 48898n, shortName: "zircuit-garfield-testnet" },
@@ -637,10 +644,12 @@ var networks = [
637
644
  { chainId: 90001n, shortName: "dhobyghaut" },
638
645
  { chainId: 91342n, shortName: "giwasepolia" },
639
646
  { chainId: 97435n, shortName: "sling" },
647
+ { chainId: 97476n, shortName: "doma-testnet" },
640
648
  { chainId: 98864n, shortName: "plume-devnet" },
641
649
  { chainId: 98865n, shortName: "plume" },
642
650
  { chainId: 98866n, shortName: "plume-mainnet" },
643
651
  { chainId: 98867n, shortName: "plume-testnet" },
652
+ { chainId: 98875n, shortName: "nil" },
644
653
  { chainId: 98985n, shortName: "superposition-testnet" },
645
654
  { chainId: 102030n, shortName: "ctc" },
646
655
  { chainId: 103454n, shortName: "masatest" },
@@ -1089,7 +1098,11 @@ import {
1089
1098
  import semverSatisfies3 from "semver/functions/satisfies.js";
1090
1099
 
1091
1100
  // src/utils/transactions/gas.ts
1092
- import { BaseError } from "viem";
1101
+ import {
1102
+ BaseError,
1103
+ encodeFunctionData as encodeFunctionData3,
1104
+ parseAbi as parseAbi3
1105
+ } from "viem";
1093
1106
  import { OperationType } from "@safe-global/types-kit";
1094
1107
  import semverSatisfies5 from "semver/functions/satisfies.js";
1095
1108
 
@@ -4740,6 +4753,10 @@ async function getSafeWebAuthnSharedSignerContract({
4740
4753
  // src/utils/transactions/gas.ts
4741
4754
  var CALL_DATA_BYTE_GAS_COST = 16;
4742
4755
  var ECRECOVER_GAS_COST = 6e3;
4756
+ var INTRINSIC_TX_GAS_COST = 21e3;
4757
+ var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
4758
+ var MISC_OVERHEAD_GAS_COST = 3e3;
4759
+ var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
4743
4760
  var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
4744
4761
 
4745
4762
  // src/utils/transactions/utils.ts
@@ -4753,7 +4770,7 @@ import {
4753
4770
  encodePacked,
4754
4771
  bytesToHex,
4755
4772
  decodeFunctionData,
4756
- parseAbi as parseAbi3
4773
+ parseAbi as parseAbi4
4757
4774
  } from "viem";
4758
4775
  import { waitForTransactionReceipt as waitForTransactionReceiptViem } from "viem/actions";
4759
4776
  function toEstimateGasParameters(tx) {
@@ -5,19 +5,20 @@ import { DEFAULT_SAFE_VERSION } from './contracts/config';
5
5
  import { getCompatibilityFallbackHandlerContract, getExtensibleFallbackHandlerContract, getCreateCallContract, getMultiSendCallOnlyContract, getMultiSendContract, getSafeProxyFactoryContract, getSafeContract, getSignMessageLibContract, getSafeWebAuthnSignerFactoryContract, getSafeWebAuthnSharedSignerContract } from './contracts/safeDeploymentContracts';
6
6
  import { PREDETERMINED_SALT_NONCE, encodeCreateProxyWithNonce, encodeSetupCallData, predictSafeAddress, getPredictedSafeAddressInitCode, getSafeAddressFromDeploymentTx } from './contracts/utils';
7
7
  import ContractManager from './managers/contractManager';
8
- import { EthSafeSignature, estimateTxBaseGas, estimateTxGas, estimateSafeTxGas, estimateSafeDeploymentGas, extractPasskeyData, validateEthereumAddress, validateEip3770Address } from './utils';
8
+ import { EthSafeSignature, estimateTxBaseGas, estimateTxGas, estimateSafeTxGas, estimateSafeDeploymentGas, extractPasskeyData, validateEthereumAddress, validateEip3770Address, getEip3770NetworkPrefixFromChainId, getChainIdFromEip3770NetworkPrefix } from './utils';
9
9
  import EthSafeTransaction from './utils/transactions/SafeTransaction';
10
10
  import EthSafeMessage from './utils/messages/SafeMessage';
11
11
  import { SafeTransactionOptionalProps } from './utils/transactions/types';
12
12
  import { encodeMultiSendData, decodeMultiSendData, standardizeSafeTransactionData } from './utils/transactions/utils';
13
13
  import { getERC20Decimals, isGasTokenCompatibleWithHandlePayment, createERC20TokenTransferTransaction } from './utils/erc-20';
14
- import { generateSignature, generateEIP712Signature, buildContractSignature, buildSignatureBytes, preimageSafeTransactionHash, preimageSafeMessageHash } from './utils/signatures/utils';
14
+ import { generateSignature, generateEIP712Signature, buildContractSignature, buildSignatureBytes, preimageSafeTransactionHash, preimageSafeMessageHash, generatePreValidatedSignature, adjustVInSignature, calculateSafeMessageHash, calculateSafeTransactionHash } from './utils/signatures/utils';
15
15
  import { getEip712TxTypes, getEip712MessageTypes, hashSafeMessage, generateTypedData } from './utils/eip-712';
16
16
  import { createPasskeyClient } from './utils/passkeys/PasskeyClient';
17
17
  import getPasskeyOwnerAddress from './utils/passkeys/getPasskeyOwnerAddress';
18
18
  import { getP256VerifierAddress } from './utils/passkeys/extractPasskeyData';
19
19
  import generateOnChainIdentifier from './utils/on-chain-tracking/generateOnChainIdentifier';
20
- export { estimateTxBaseGas, estimateTxGas, estimateSafeTxGas, estimateSafeDeploymentGas, extractPasskeyData, getP256VerifierAddress, ContractManager, CreateCallBaseContract, createERC20TokenTransferTransaction, DEFAULT_SAFE_VERSION, EthSafeSignature, MultiSendCallOnlyBaseContract, MultiSendBaseContract, generateOnChainIdentifier, PREDETERMINED_SALT_NONCE, SafeBaseContract, SafeProxyFactoryBaseContract, SafeTransactionOptionalProps, SignMessageLibBaseContract, encodeCreateProxyWithNonce, encodeMultiSendData, decodeMultiSendData, encodeSetupCallData, getCompatibilityFallbackHandlerContract, getExtensibleFallbackHandlerContract, getCreateCallContract, getERC20Decimals, getMultiSendCallOnlyContract, getMultiSendContract, getSafeProxyFactoryContract, getSafeContract, getSignMessageLibContract, getSafeWebAuthnSignerFactoryContract, getSafeWebAuthnSharedSignerContract, isGasTokenCompatibleWithHandlePayment, predictSafeAddress, getPredictedSafeAddressInitCode, standardizeSafeTransactionData, validateEip3770Address, validateEthereumAddress, generateSignature, generateEIP712Signature, buildContractSignature, buildSignatureBytes, preimageSafeTransactionHash, preimageSafeMessageHash, getEip712TxTypes, getEip712MessageTypes, getSafeAddressFromDeploymentTx, hashSafeMessage, generateTypedData, SafeProvider, createPasskeyClient, EthSafeTransaction, EthSafeMessage, getPasskeyOwnerAddress };
20
+ import { SafeFeature, hasSafeFeature } from './utils/safeVersions';
21
+ export { estimateTxBaseGas, estimateTxGas, estimateSafeTxGas, estimateSafeDeploymentGas, extractPasskeyData, getP256VerifierAddress, ContractManager, CreateCallBaseContract, createERC20TokenTransferTransaction, DEFAULT_SAFE_VERSION, EthSafeSignature, MultiSendCallOnlyBaseContract, MultiSendBaseContract, generateOnChainIdentifier, PREDETERMINED_SALT_NONCE, SafeBaseContract, SafeProxyFactoryBaseContract, SafeTransactionOptionalProps, SignMessageLibBaseContract, encodeCreateProxyWithNonce, encodeMultiSendData, decodeMultiSendData, encodeSetupCallData, getCompatibilityFallbackHandlerContract, getExtensibleFallbackHandlerContract, getCreateCallContract, getERC20Decimals, getMultiSendCallOnlyContract, getMultiSendContract, getSafeProxyFactoryContract, getSafeContract, getSignMessageLibContract, getSafeWebAuthnSignerFactoryContract, getSafeWebAuthnSharedSignerContract, isGasTokenCompatibleWithHandlePayment, predictSafeAddress, getPredictedSafeAddressInitCode, standardizeSafeTransactionData, validateEip3770Address, validateEthereumAddress, generateSignature, generateEIP712Signature, buildContractSignature, buildSignatureBytes, preimageSafeTransactionHash, preimageSafeMessageHash, getEip712TxTypes, getEip712MessageTypes, getSafeAddressFromDeploymentTx, hashSafeMessage, generateTypedData, SafeProvider, createPasskeyClient, EthSafeTransaction, EthSafeMessage, getPasskeyOwnerAddress, adjustVInSignature, calculateSafeMessageHash, calculateSafeTransactionHash, generatePreValidatedSignature, SafeFeature, hasSafeFeature, getEip3770NetworkPrefixFromChainId, getChainIdFromEip3770NetworkPrefix };
21
22
  export * from './types';
22
23
  export default Safe;
23
24
  declare module 'abitype' {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-3770/config.ts"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,QAAQ,EAAE,gBAAgB,EA4hBtC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-3770/config.ts"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,QAAQ,EAAE,gBAAgB,EAqiBtC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { Eip3770Address } from '@safe-global/types-kit';
2
2
  export declare function parseEip3770Address(fullAddress: string): Eip3770Address;
3
3
  export declare function getEip3770NetworkPrefixFromChainId(chainId: bigint): string;
4
+ export declare function getChainIdFromEip3770NetworkPrefix(prefix: string): bigint;
4
5
  export declare function isValidEip3770NetworkPrefix(prefix: string): boolean;
5
6
  export declare function validateEip3770NetworkPrefix(prefix: string, currentChainId: bigint): void;
6
7
  export declare function validateEthereumAddress(address: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-3770/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAKvE;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAKzF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,cAAc,CAOhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-3770/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAKvE;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAKzF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,cAAc,CAOhB"}
@@ -5,7 +5,7 @@ import SafeContract_v1_2_0 from '../contracts/Safe/v1.2.0/SafeContract_v1_2_0';
5
5
  import SafeContract_v1_3_0 from '../contracts/Safe/v1.3.0/SafeContract_v1_3_0';
6
6
  import SafeContract_v1_4_1 from '../contracts/Safe/v1.4.1/SafeContract_v1_4_1';
7
7
  import SafeContract_v1_5_0 from '../contracts/Safe/v1.5.0/SafeContract_v1_5_0';
8
- export declare enum SAFE_FEATURES {
8
+ export declare enum SafeFeature {
9
9
  SAFE_TX_GAS_OPTIONAL = "SAFE_TX_GAS_OPTIONAL",
10
10
  SAFE_TX_GUARDS = "SAFE_TX_GUARDS",
11
11
  SAFE_FALLBACK_HANDLER = "SAFE_FALLBACK_HANDLER",
@@ -17,7 +17,7 @@ export declare enum SAFE_FEATURES {
17
17
  SAFE_L2_CONTRACTS = "SAFE_L2_CONTRACTS",
18
18
  SAFE_MODULE_GUARD = "SAFE_MODULE_GUARD"
19
19
  }
20
- export declare const hasSafeFeature: (feature: SAFE_FEATURES, version: string) => boolean;
20
+ export declare const hasSafeFeature: (feature: SafeFeature, version: string) => boolean;
21
21
  export type SafeContractCompatibleWithFallbackHandler = SafeContract_v1_1_1 | SafeContract_v1_2_0 | SafeContract_v1_3_0 | SafeContract_v1_4_1 | SafeContract_v1_5_0;
22
22
  export type SafeContractCompatibleWithGuardManager = SafeContract_v1_3_0 | SafeContract_v1_4_1 | SafeContract_v1_5_0;
23
23
  export type SafeContractCompatibleWithModuleManager = SafeContract_v1_3_0 | SafeContract_v1_4_1 | SafeContract_v1_5_0;
@@ -1 +1 @@
1
- {"version":3,"file":"safeVersions.d.ts","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;AAChF,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AAErG,oBAAY,aAAa;IACvB,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,QAAQ,aAAa;IACrB,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;CACxC;AAeD,eAAO,MAAM,cAAc,YAAa,aAAa,WAAW,MAAM,KAAG,OAMxE,CAAA;AAED,MAAM,MAAM,yCAAyC,GACjD,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,sCAAsC,GAC9C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,uCAAuC,GAC/C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,4CAA4C,GAAG,mBAAmB,CAAA;AAE9E,MAAM,MAAM,uCAAuC,GAC/C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,2CAA2C,GACnD,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,wBAAsB,yCAAyC,CAC7D,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,uCAAuC,CAAC,CAQlD;AAED,wBAAsB,6CAA6C,CACjE,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,2CAA2C,CAAC,CAUtD"}
1
+ {"version":3,"file":"safeVersions.d.ts","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;AAChF,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AACrG,OAAO,mBAAmB,MAAM,qEAAqE,CAAA;AAErG,oBAAY,WAAW;IACrB,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,QAAQ,aAAa;IACrB,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;CACxC;AAeD,eAAO,MAAM,cAAc,YAAa,WAAW,WAAW,MAAM,KAAG,OAMtE,CAAA;AAED,MAAM,MAAM,yCAAyC,GACjD,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,sCAAsC,GAC9C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,uCAAuC,GAC/C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,4CAA4C,GAAG,mBAAmB,CAAA;AAE9E,MAAM,MAAM,uCAAuC,GAC/C,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,MAAM,MAAM,2CAA2C,GACnD,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,CAAA;AAEvB,wBAAsB,yCAAyC,CAC7D,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,uCAAuC,CAAC,CAQlD;AAED,wBAAsB,6CAA6C,CACjE,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,2CAA2C,CAAC,CAUtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAEpF,OAAO,IAAI,MAAM,gCAAgC,CAAA;AACjD,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,iCAAiC,CAAA;AAwDxC,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,8BAA8B,EAC5C,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,EACxB,eAAe,CAAC,EAAE,sBAAsB,mBAsCzC;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,8BAA8B,EAC5C,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CA6DjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CAajB;AAoPD;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB3E"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAEpF,OAAO,IAAI,MAAM,gCAAgC,CAAA;AACjD,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,iCAAiC,CAAA;AA+LxC,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,8BAA8B,EAC5C,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,EACxB,eAAe,CAAC,EAAE,sBAAsB,mBAsCzC;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,8BAA8B,EAC5C,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CA8EjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CAajB;AAoPD;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB3E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-global/protocol-kit",
3
- "version": "7.0.0",
3
+ "version": "7.2.0",
4
4
  "description": "SDK that facilitates the interaction with Safe Smart Accounts",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "main": "dist/cjs/src/index.cjs",
@@ -81,8 +81,8 @@
81
81
  "tsconfig-paths": "^4.2.0"
82
82
  },
83
83
  "dependencies": {
84
- "@safe-global/safe-deployments": "^1.37.52",
85
- "@safe-global/safe-modules-deployments": "^3.0.0",
84
+ "@safe-global/safe-deployments": "^1.37.56",
85
+ "@safe-global/safe-modules-deployments": "^3.0.4",
86
86
  "@safe-global/types-kit": "^3.1.0",
87
87
  "abitype": "^1.0.2",
88
88
  "semver": "^7.7.2",