@safe-global/protocol-kit 7.1.0 → 8.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/dist/cjs/src/index.cjs +115 -40
- package/dist/cjs/test-utils/index.cjs +28 -20
- package/dist/esm/src/index.mjs +134 -55
- package/dist/esm/test-utils/index.mjs +34 -22
- package/dist/src/SafeProvider.d.ts.map +1 -1
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/utils/block.d.ts +4 -2
- package/dist/src/utils/block.d.ts.map +1 -1
- package/dist/src/utils/eip-3770/config.d.ts.map +1 -1
- package/dist/src/utils/eip-712/encode.d.ts.map +1 -1
- package/dist/src/utils/passkeys/extractPasskeyData.d.ts.map +1 -1
- package/dist/src/utils/transactions/gas.d.ts.map +1 -1
- package/package.json +12 -10
package/dist/cjs/src/index.cjs
CHANGED
|
@@ -483,6 +483,7 @@ var networks = [
|
|
|
483
483
|
{ chainId: 3637n, shortName: "BTNX" },
|
|
484
484
|
{ chainId: 3737n, shortName: "csb" },
|
|
485
485
|
{ chainId: 3776n, shortName: "astrzk" },
|
|
486
|
+
{ chainId: 3946n, shortName: "nex" },
|
|
486
487
|
{ chainId: 4002n, shortName: "tftm" },
|
|
487
488
|
{ chainId: 4061n, shortName: "Nahmii3Mainnet" },
|
|
488
489
|
{ chainId: 4062n, shortName: "Nahmii3Testnet" },
|
|
@@ -495,6 +496,7 @@ var networks = [
|
|
|
495
496
|
{ chainId: 4217n, shortName: "tempo" },
|
|
496
497
|
{ chainId: 4326n, shortName: "megaeth" },
|
|
497
498
|
{ chainId: 4337n, shortName: "beam" },
|
|
499
|
+
{ chainId: 4441n, shortName: "liteforge" },
|
|
498
500
|
{ chainId: 4460n, shortName: "orderlyl2" },
|
|
499
501
|
{ chainId: 4488n, shortName: "HYDRA" },
|
|
500
502
|
{ chainId: 4509n, shortName: "SC" },
|
|
@@ -508,7 +510,9 @@ var networks = [
|
|
|
508
510
|
{ chainId: 5001n, shortName: "mantle-testnet" },
|
|
509
511
|
{ chainId: 5003n, shortName: "mnt-sep" },
|
|
510
512
|
{ chainId: 5031n, shortName: "Somnia" },
|
|
513
|
+
{ chainId: 5042n, shortName: "arc" },
|
|
511
514
|
{ chainId: 5115n, shortName: "citrea-testnet" },
|
|
515
|
+
{ chainId: 5124n, shortName: "seismic-testnet" },
|
|
512
516
|
{ chainId: 5165n, shortName: "ftn" },
|
|
513
517
|
{ chainId: 5330n, shortName: "sseed" },
|
|
514
518
|
{ chainId: 5464n, shortName: "saga" },
|
|
@@ -523,6 +527,7 @@ var networks = [
|
|
|
523
527
|
{ chainId: 6322n, shortName: "aura" },
|
|
524
528
|
{ chainId: 6342n, shortName: "megatest" },
|
|
525
529
|
{ chainId: 6398n, shortName: "connext-sepolia" },
|
|
530
|
+
{ chainId: 6497n, shortName: "awaji" },
|
|
526
531
|
{ chainId: 6688n, shortName: "iris" },
|
|
527
532
|
{ chainId: 6880n, shortName: "mtt-network" },
|
|
528
533
|
{ chainId: 6900n, shortName: "cataclysm-1" },
|
|
@@ -647,6 +652,7 @@ var networks = [
|
|
|
647
652
|
{ chainId: 43419n, shortName: "gunz-mainnet" },
|
|
648
653
|
{ chainId: 44787n, shortName: "alfa" },
|
|
649
654
|
{ chainId: 45000n, shortName: "autobahnnetwork" },
|
|
655
|
+
{ chainId: 46630n, shortName: "robinhoodchaintestnet" },
|
|
650
656
|
{ chainId: 47763n, shortName: "neox-mainnet" },
|
|
651
657
|
{ chainId: 47805n, shortName: "rei" },
|
|
652
658
|
{ chainId: 48898n, shortName: "zircuit-garfield-testnet" },
|
|
@@ -696,6 +702,8 @@ var networks = [
|
|
|
696
702
|
{ chainId: 90001n, shortName: "dhobyghaut" },
|
|
697
703
|
{ chainId: 91342n, shortName: "giwasepolia" },
|
|
698
704
|
{ chainId: 97435n, shortName: "sling" },
|
|
705
|
+
{ chainId: 97476n, shortName: "doma-testnet" },
|
|
706
|
+
{ chainId: 97477n, shortName: "doma" },
|
|
699
707
|
{ chainId: 98864n, shortName: "plume-devnet" },
|
|
700
708
|
{ chainId: 98865n, shortName: "plume" },
|
|
701
709
|
{ chainId: 98866n, shortName: "plume-mainnet" },
|
|
@@ -774,6 +782,7 @@ var networks = [
|
|
|
774
782
|
{ chainId: 6038361n, shortName: "azkyt" },
|
|
775
783
|
{ chainId: 6281971n, shortName: "dogeos-chykyu" },
|
|
776
784
|
{ chainId: 6985385n, shortName: "hp" },
|
|
785
|
+
{ chainId: 7080969n, shortName: "thp" },
|
|
777
786
|
{ chainId: 7225878n, shortName: "saakuru" },
|
|
778
787
|
{ chainId: 7777777n, shortName: "zora" },
|
|
779
788
|
{ chainId: 9999999n, shortName: "fluence" },
|
|
@@ -1046,6 +1055,7 @@ function encodeTypedData(typedData) {
|
|
|
1046
1055
|
if (domain)
|
|
1047
1056
|
parts.push(
|
|
1048
1057
|
(0, import_viem4.hashDomain)({
|
|
1058
|
+
// domain uses the SDK's `string`-based address types; viem expects `0x${string}`
|
|
1049
1059
|
domain,
|
|
1050
1060
|
types
|
|
1051
1061
|
})
|
|
@@ -1151,7 +1161,7 @@ function generateTypedData({
|
|
|
1151
1161
|
};
|
|
1152
1162
|
}
|
|
1153
1163
|
if (eip712WithChainId) {
|
|
1154
|
-
typedData.domain.chainId =
|
|
1164
|
+
typedData.domain.chainId = chainId;
|
|
1155
1165
|
}
|
|
1156
1166
|
return typedData;
|
|
1157
1167
|
}
|
|
@@ -1343,7 +1353,7 @@ var preimageSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =>
|
|
|
1343
1353
|
const safeTxTypes = getEip712TxTypes(safeVersion);
|
|
1344
1354
|
const message = safeTx;
|
|
1345
1355
|
return encodeTypedData({
|
|
1346
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1356
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1347
1357
|
types: { SafeTx: safeTxTypes.SafeTx },
|
|
1348
1358
|
message
|
|
1349
1359
|
});
|
|
@@ -1351,7 +1361,7 @@ var preimageSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =>
|
|
|
1351
1361
|
var preimageSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
|
|
1352
1362
|
const safeMessageTypes = getEip712MessageTypes(safeVersion);
|
|
1353
1363
|
return encodeTypedData({
|
|
1354
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1364
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1355
1365
|
types: { SafeMessage: safeMessageTypes.SafeMessage },
|
|
1356
1366
|
message: { message }
|
|
1357
1367
|
});
|
|
@@ -1361,7 +1371,7 @@ var calculateSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =
|
|
|
1361
1371
|
const safeTxTypes = getEip712TxTypes(safeVersion);
|
|
1362
1372
|
const domain = { verifyingContract: safeAddress };
|
|
1363
1373
|
if ((0, import_satisfies3.default)(safeVersion, EQ_OR_GT_1_3_02)) {
|
|
1364
|
-
domain.chainId =
|
|
1374
|
+
domain.chainId = chainId;
|
|
1365
1375
|
}
|
|
1366
1376
|
const message = safeTx;
|
|
1367
1377
|
return hashTypedData2({ domain, types: { SafeTx: safeTxTypes.SafeTx }, message });
|
|
@@ -1369,7 +1379,7 @@ var calculateSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =
|
|
|
1369
1379
|
var calculateSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
|
|
1370
1380
|
const safeMessageTypes = getEip712MessageTypes(safeVersion);
|
|
1371
1381
|
return hashTypedData2({
|
|
1372
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1382
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1373
1383
|
types: { SafeMessage: safeMessageTypes.SafeMessage },
|
|
1374
1384
|
message: { message }
|
|
1375
1385
|
});
|
|
@@ -5449,11 +5459,23 @@ async function getExtensibleFallbackHandlerContract({
|
|
|
5449
5459
|
// src/utils/transactions/gas.ts
|
|
5450
5460
|
var CALL_DATA_ZERO_BYTE_GAS_COST = 4;
|
|
5451
5461
|
var CALL_DATA_BYTE_GAS_COST = 16;
|
|
5452
|
-
var
|
|
5462
|
+
var INITIALIZATION_GAS_COST = 22100;
|
|
5453
5463
|
var INCREMENT_NONCE_GAS_COST = 5e3;
|
|
5454
5464
|
var HASH_GENERATION_GAS_COST = 1500;
|
|
5455
5465
|
var ECRECOVER_GAS_COST = 6e3;
|
|
5456
|
-
var
|
|
5466
|
+
var INTRINSIC_TX_GAS_COST = 21e3;
|
|
5467
|
+
var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
|
|
5468
|
+
var MISC_OVERHEAD_GAS_COST = 3e3;
|
|
5469
|
+
var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
|
|
5470
|
+
var NEW_ACCOUNT_GAS_COST = 25e3;
|
|
5471
|
+
var COLD_ACCOUNT_ACCESS_GAS_COST = 2600;
|
|
5472
|
+
var CALL_VALUE_GAS_COST = 9e3;
|
|
5473
|
+
var ERC20_TRANSFER_GAS_COST = 21e3;
|
|
5474
|
+
var ERC20_NEW_HOLDER_TRANSFER_GAS_COST = 38e3;
|
|
5475
|
+
var LOG_BASE_GAS_COST = 375;
|
|
5476
|
+
var LOG_TOPIC_GAS_COST = 375;
|
|
5477
|
+
var LOG_DATA_GAS_COST_PER_BYTE = 8;
|
|
5478
|
+
var EXECUTION_RESULT_EVENT_GAS_COST = 1500;
|
|
5457
5479
|
var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
|
|
5458
5480
|
function estimateDataGasCosts(data) {
|
|
5459
5481
|
const bytes = data.match(/.{2}/g);
|
|
@@ -5467,6 +5489,58 @@ function estimateDataGasCosts(data) {
|
|
|
5467
5489
|
return gasCost + CALL_DATA_BYTE_GAS_COST;
|
|
5468
5490
|
}, 0);
|
|
5469
5491
|
}
|
|
5492
|
+
function calculateExecTransactionEventsGas(isL1SafeSingleton, data, threshold) {
|
|
5493
|
+
let gas = EXECUTION_RESULT_EVENT_GAS_COST;
|
|
5494
|
+
if (!isL1SafeSingleton) {
|
|
5495
|
+
const dataBytes = (data.length - 2) / 2;
|
|
5496
|
+
const signaturesBytes = threshold * 65;
|
|
5497
|
+
const headBytes = 11 * 32;
|
|
5498
|
+
const dataDynamicBytes = 32 + Math.ceil(dataBytes / 32) * 32;
|
|
5499
|
+
const signaturesDynamicBytes = 32 + Math.ceil(signaturesBytes / 32) * 32;
|
|
5500
|
+
const additionalInfoDynamicBytes = 32 + 3 * 32;
|
|
5501
|
+
const eventDataBytes = headBytes + dataDynamicBytes + signaturesDynamicBytes + additionalInfoDynamicBytes;
|
|
5502
|
+
gas += LOG_BASE_GAS_COST + LOG_TOPIC_GAS_COST + eventDataBytes * LOG_DATA_GAS_COST_PER_BYTE;
|
|
5503
|
+
}
|
|
5504
|
+
return gas;
|
|
5505
|
+
}
|
|
5506
|
+
async function isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver) {
|
|
5507
|
+
if (gasToken.toLowerCase() !== ZERO_ADDRESS.toLowerCase() || refundReceiver.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
|
|
5508
|
+
return false;
|
|
5509
|
+
}
|
|
5510
|
+
const [contractCode, nonce, balance] = await Promise.all([
|
|
5511
|
+
safeProvider.getContractCode(refundReceiver),
|
|
5512
|
+
safeProvider.getNonce(refundReceiver),
|
|
5513
|
+
safeProvider.getBalance(refundReceiver)
|
|
5514
|
+
]);
|
|
5515
|
+
return contractCode === "0x" && nonce === 0 && balance === 0n;
|
|
5516
|
+
}
|
|
5517
|
+
async function hasExistingTokenBalance(safeProvider, gasToken, account) {
|
|
5518
|
+
const data = (0, import_viem8.encodeFunctionData)({
|
|
5519
|
+
abi: (0, import_viem8.parseAbi)(["function balanceOf(address account) view returns (uint256)"]),
|
|
5520
|
+
functionName: "balanceOf",
|
|
5521
|
+
args: [account]
|
|
5522
|
+
});
|
|
5523
|
+
try {
|
|
5524
|
+
const response = await safeProvider.call({ to: gasToken, from: gasToken, value: "0", data });
|
|
5525
|
+
return BigInt(response || "0x0") > 0n;
|
|
5526
|
+
} catch {
|
|
5527
|
+
return false;
|
|
5528
|
+
}
|
|
5529
|
+
}
|
|
5530
|
+
async function calculateRefundGas(safeProvider, gasPrice, gasToken, refundReceiver) {
|
|
5531
|
+
if (BigInt(gasPrice) === 0n) {
|
|
5532
|
+
return 0;
|
|
5533
|
+
}
|
|
5534
|
+
if (gasToken.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
|
|
5535
|
+
let gas = COLD_ACCOUNT_ACCESS_GAS_COST + CALL_VALUE_GAS_COST;
|
|
5536
|
+
if (await isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver)) {
|
|
5537
|
+
gas += NEW_ACCOUNT_GAS_COST;
|
|
5538
|
+
}
|
|
5539
|
+
return gas;
|
|
5540
|
+
}
|
|
5541
|
+
const hasBalance = await hasExistingTokenBalance(safeProvider, gasToken, refundReceiver);
|
|
5542
|
+
return hasBalance ? ERC20_TRANSFER_GAS_COST : ERC20_NEW_HOLDER_TRANSFER_GAS_COST;
|
|
5543
|
+
}
|
|
5470
5544
|
async function estimateGas(safeVersion, safeContract, safeProvider, to, valueInWei, data, operation, customContracts) {
|
|
5471
5545
|
const chainId = await safeProvider.getChainId();
|
|
5472
5546
|
const simulateTxAccessorContract = await getSimulateTxAccessorContract({
|
|
@@ -5518,21 +5592,25 @@ async function estimateTxGas(safeContract, safeProvider, to, valueInWei, data, o
|
|
|
5518
5592
|
}
|
|
5519
5593
|
async function estimateTxBaseGas(safe, safeTransaction) {
|
|
5520
5594
|
const safeTransactionData = safeTransaction.data;
|
|
5521
|
-
const { to, value, data, operation, safeTxGas, gasToken, refundReceiver } = safeTransactionData;
|
|
5522
|
-
const safeThreshold = await safe.getThreshold();
|
|
5523
|
-
const safeNonce = await safe.getNonce();
|
|
5524
|
-
const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
|
|
5595
|
+
const { to, value, data, operation, safeTxGas, gasPrice, gasToken, refundReceiver } = safeTransactionData;
|
|
5525
5596
|
const encodeSafeTxGas = safeTxGas || 0;
|
|
5526
5597
|
const encodeBaseGas = 0;
|
|
5527
|
-
const
|
|
5598
|
+
const encodeGasPrice = 1;
|
|
5528
5599
|
const encodeGasToken = gasToken || ZERO_ADDRESS;
|
|
5529
5600
|
const encodeRefundReceiver = refundReceiver || ZERO_ADDRESS;
|
|
5530
5601
|
const signatures = "0x";
|
|
5531
|
-
const safeVersion = safe.getContractVersion();
|
|
5532
5602
|
const safeProvider = safe.getSafeProvider();
|
|
5533
|
-
const
|
|
5534
|
-
const
|
|
5535
|
-
const
|
|
5603
|
+
const safeVersion = safe.getContractVersion();
|
|
5604
|
+
const contractManager = safe.getContractManager();
|
|
5605
|
+
const isL1SafeSingleton = contractManager.isL1SafeSingleton;
|
|
5606
|
+
const [safeThreshold, safeNonce, chainId, refundGas] = await Promise.all([
|
|
5607
|
+
safe.getThreshold(),
|
|
5608
|
+
safe.getNonce(),
|
|
5609
|
+
safe.getChainId(),
|
|
5610
|
+
calculateRefundGas(safeProvider, gasPrice, encodeGasToken, encodeRefundReceiver)
|
|
5611
|
+
]);
|
|
5612
|
+
const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
|
|
5613
|
+
const customContracts = contractManager.contractNetworks?.[chainId.toString()];
|
|
5536
5614
|
const safeSingletonContract = await getSafeContract({
|
|
5537
5615
|
safeProvider,
|
|
5538
5616
|
safeVersion,
|
|
@@ -5546,16 +5624,19 @@ async function estimateTxBaseGas(safe, safeTransaction) {
|
|
|
5546
5624
|
operation,
|
|
5547
5625
|
encodeSafeTxGas,
|
|
5548
5626
|
encodeBaseGas,
|
|
5549
|
-
|
|
5627
|
+
encodeGasPrice,
|
|
5550
5628
|
encodeGasToken,
|
|
5551
5629
|
encodeRefundReceiver,
|
|
5552
5630
|
signatures
|
|
5553
5631
|
]);
|
|
5554
5632
|
const isSafeInitialized = safeNonce !== 0;
|
|
5555
|
-
const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST :
|
|
5633
|
+
const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIALIZATION_GAS_COST;
|
|
5556
5634
|
let baseGas = signaturesGasCost + estimateDataGasCosts(execTransactionData) + incrementNonceGasCost + HASH_GENERATION_GAS_COST;
|
|
5557
|
-
baseGas
|
|
5558
|
-
baseGas +=
|
|
5635
|
+
baseGas += refundGas;
|
|
5636
|
+
baseGas += calculateExecTransactionEventsGas(isL1SafeSingleton ?? false, data, safeThreshold);
|
|
5637
|
+
baseGas += EXTRA_BASE_GAS_COST;
|
|
5638
|
+
const baseGasUsedBytes = Math.ceil(baseGas.toString(16).length / 2);
|
|
5639
|
+
baseGas += baseGasUsedBytes * (CALL_DATA_BYTE_GAS_COST - CALL_DATA_ZERO_BYTE_GAS_COST);
|
|
5559
5640
|
return baseGas.toString();
|
|
5560
5641
|
}
|
|
5561
5642
|
async function estimateSafeTxGas(safe, safeTransaction) {
|
|
@@ -6251,13 +6332,8 @@ var getPasskeyOwnerAddress_default = getPasskeyOwnerAddress;
|
|
|
6251
6332
|
|
|
6252
6333
|
// src/utils/block.ts
|
|
6253
6334
|
function asBlockId(blockId) {
|
|
6254
|
-
|
|
6255
|
-
}
|
|
6256
|
-
function blockNumber(blockNumber2) {
|
|
6257
|
-
return { blockNumber: blockNumber2.toNumber() };
|
|
6258
|
-
}
|
|
6259
|
-
function blockTag(blockTag2) {
|
|
6260
|
-
return { blockTag: blockTag2 };
|
|
6335
|
+
if (typeof blockId === "number") return { blockNumber: BigInt(blockId) };
|
|
6336
|
+
return { blockTag: blockId };
|
|
6261
6337
|
}
|
|
6262
6338
|
|
|
6263
6339
|
// src/SafeProvider.ts
|
|
@@ -6392,16 +6468,16 @@ var SafeProvider = class _SafeProvider {
|
|
|
6392
6468
|
const chainId = await this.getChainId();
|
|
6393
6469
|
return validateEip3770Address(fullAddress, chainId);
|
|
6394
6470
|
}
|
|
6395
|
-
async getBalance(address,
|
|
6471
|
+
async getBalance(address, blockTag) {
|
|
6396
6472
|
return (0, import_actions9.getBalance)(this.#externalProvider, {
|
|
6397
6473
|
address,
|
|
6398
|
-
...asBlockId(
|
|
6474
|
+
...asBlockId(blockTag)
|
|
6399
6475
|
});
|
|
6400
6476
|
}
|
|
6401
|
-
async getNonce(address,
|
|
6477
|
+
async getNonce(address, blockTag) {
|
|
6402
6478
|
return (0, import_actions9.getTransactionCount)(this.#externalProvider, {
|
|
6403
6479
|
address,
|
|
6404
|
-
...asBlockId(
|
|
6480
|
+
...asBlockId(blockTag)
|
|
6405
6481
|
});
|
|
6406
6482
|
}
|
|
6407
6483
|
async getChainId() {
|
|
@@ -6411,17 +6487,17 @@ var SafeProvider = class _SafeProvider {
|
|
|
6411
6487
|
getChecksummedAddress(address) {
|
|
6412
6488
|
return (0, import_viem12.getAddress)(address);
|
|
6413
6489
|
}
|
|
6414
|
-
async getContractCode(address,
|
|
6490
|
+
async getContractCode(address, blockTag) {
|
|
6415
6491
|
const res = await (0, import_actions9.getCode)(this.#externalProvider, {
|
|
6416
6492
|
address,
|
|
6417
|
-
...asBlockId(
|
|
6493
|
+
...asBlockId(blockTag)
|
|
6418
6494
|
});
|
|
6419
6495
|
return res ?? "0x";
|
|
6420
6496
|
}
|
|
6421
|
-
async isContractDeployed(address,
|
|
6497
|
+
async isContractDeployed(address, blockTag) {
|
|
6422
6498
|
const contractCode = await (0, import_actions9.getCode)(this.#externalProvider, {
|
|
6423
6499
|
address,
|
|
6424
|
-
...asBlockId(
|
|
6500
|
+
...asBlockId(blockTag)
|
|
6425
6501
|
});
|
|
6426
6502
|
return !!contractCode;
|
|
6427
6503
|
}
|
|
@@ -6467,8 +6543,7 @@ var SafeProvider = class _SafeProvider {
|
|
|
6467
6543
|
if (isTypedDataSigner(signer)) {
|
|
6468
6544
|
const typedData = generateTypedData(safeEIP712Args);
|
|
6469
6545
|
const { chainId, verifyingContract } = typedData.domain;
|
|
6470
|
-
const
|
|
6471
|
-
const domain = { verifyingContract, chainId: chain };
|
|
6546
|
+
const domain = { verifyingContract, chainId };
|
|
6472
6547
|
const signature = await signer.signTypedData({
|
|
6473
6548
|
domain,
|
|
6474
6549
|
types: typedData.primaryType === "SafeMessage" ? { SafeMessage: typedData.types.SafeMessage } : { SafeTx: typedData.types.SafeTx },
|
|
@@ -6483,11 +6558,11 @@ var SafeProvider = class _SafeProvider {
|
|
|
6483
6558
|
const converted = toEstimateGasParameters(transaction);
|
|
6484
6559
|
return (await (0, import_actions9.estimateGas)(this.#externalProvider, converted)).toString();
|
|
6485
6560
|
}
|
|
6486
|
-
async call(transaction,
|
|
6561
|
+
async call(transaction, blockTag) {
|
|
6487
6562
|
const converted = toTransactionRequest(transaction);
|
|
6488
6563
|
const { data } = await (0, import_actions9.call)(this.#externalProvider, {
|
|
6489
6564
|
...converted,
|
|
6490
|
-
...asBlockId(
|
|
6565
|
+
...asBlockId(blockTag)
|
|
6491
6566
|
});
|
|
6492
6567
|
return data ?? "0x";
|
|
6493
6568
|
}
|
|
@@ -7335,7 +7410,7 @@ function generateOnChainIdentifier({
|
|
|
7335
7410
|
var generateOnChainIdentifier_default = generateOnChainIdentifier;
|
|
7336
7411
|
|
|
7337
7412
|
// src/utils/getProtocolKitVersion.ts
|
|
7338
|
-
var getProtocolKitVersion = () => "
|
|
7413
|
+
var getProtocolKitVersion = () => "8.0.0";
|
|
7339
7414
|
|
|
7340
7415
|
// src/Safe.ts
|
|
7341
7416
|
var EQ_OR_GT_1_5_0 = ">=1.5.0";
|
|
@@ -471,6 +471,7 @@ var networks = [
|
|
|
471
471
|
{ chainId: 3637n, shortName: "BTNX" },
|
|
472
472
|
{ chainId: 3737n, shortName: "csb" },
|
|
473
473
|
{ chainId: 3776n, shortName: "astrzk" },
|
|
474
|
+
{ chainId: 3946n, shortName: "nex" },
|
|
474
475
|
{ chainId: 4002n, shortName: "tftm" },
|
|
475
476
|
{ chainId: 4061n, shortName: "Nahmii3Mainnet" },
|
|
476
477
|
{ chainId: 4062n, shortName: "Nahmii3Testnet" },
|
|
@@ -483,6 +484,7 @@ var networks = [
|
|
|
483
484
|
{ chainId: 4217n, shortName: "tempo" },
|
|
484
485
|
{ chainId: 4326n, shortName: "megaeth" },
|
|
485
486
|
{ chainId: 4337n, shortName: "beam" },
|
|
487
|
+
{ chainId: 4441n, shortName: "liteforge" },
|
|
486
488
|
{ chainId: 4460n, shortName: "orderlyl2" },
|
|
487
489
|
{ chainId: 4488n, shortName: "HYDRA" },
|
|
488
490
|
{ chainId: 4509n, shortName: "SC" },
|
|
@@ -496,7 +498,9 @@ var networks = [
|
|
|
496
498
|
{ chainId: 5001n, shortName: "mantle-testnet" },
|
|
497
499
|
{ chainId: 5003n, shortName: "mnt-sep" },
|
|
498
500
|
{ chainId: 5031n, shortName: "Somnia" },
|
|
501
|
+
{ chainId: 5042n, shortName: "arc" },
|
|
499
502
|
{ chainId: 5115n, shortName: "citrea-testnet" },
|
|
503
|
+
{ chainId: 5124n, shortName: "seismic-testnet" },
|
|
500
504
|
{ chainId: 5165n, shortName: "ftn" },
|
|
501
505
|
{ chainId: 5330n, shortName: "sseed" },
|
|
502
506
|
{ chainId: 5464n, shortName: "saga" },
|
|
@@ -511,6 +515,7 @@ var networks = [
|
|
|
511
515
|
{ chainId: 6322n, shortName: "aura" },
|
|
512
516
|
{ chainId: 6342n, shortName: "megatest" },
|
|
513
517
|
{ chainId: 6398n, shortName: "connext-sepolia" },
|
|
518
|
+
{ chainId: 6497n, shortName: "awaji" },
|
|
514
519
|
{ chainId: 6688n, shortName: "iris" },
|
|
515
520
|
{ chainId: 6880n, shortName: "mtt-network" },
|
|
516
521
|
{ chainId: 6900n, shortName: "cataclysm-1" },
|
|
@@ -635,6 +640,7 @@ var networks = [
|
|
|
635
640
|
{ chainId: 43419n, shortName: "gunz-mainnet" },
|
|
636
641
|
{ chainId: 44787n, shortName: "alfa" },
|
|
637
642
|
{ chainId: 45000n, shortName: "autobahnnetwork" },
|
|
643
|
+
{ chainId: 46630n, shortName: "robinhoodchaintestnet" },
|
|
638
644
|
{ chainId: 47763n, shortName: "neox-mainnet" },
|
|
639
645
|
{ chainId: 47805n, shortName: "rei" },
|
|
640
646
|
{ chainId: 48898n, shortName: "zircuit-garfield-testnet" },
|
|
@@ -684,6 +690,8 @@ var networks = [
|
|
|
684
690
|
{ chainId: 90001n, shortName: "dhobyghaut" },
|
|
685
691
|
{ chainId: 91342n, shortName: "giwasepolia" },
|
|
686
692
|
{ chainId: 97435n, shortName: "sling" },
|
|
693
|
+
{ chainId: 97476n, shortName: "doma-testnet" },
|
|
694
|
+
{ chainId: 97477n, shortName: "doma" },
|
|
687
695
|
{ chainId: 98864n, shortName: "plume-devnet" },
|
|
688
696
|
{ chainId: 98865n, shortName: "plume" },
|
|
689
697
|
{ chainId: 98866n, shortName: "plume-mainnet" },
|
|
@@ -762,6 +770,7 @@ var networks = [
|
|
|
762
770
|
{ chainId: 6038361n, shortName: "azkyt" },
|
|
763
771
|
{ chainId: 6281971n, shortName: "dogeos-chykyu" },
|
|
764
772
|
{ chainId: 6985385n, shortName: "hp" },
|
|
773
|
+
{ chainId: 7080969n, shortName: "thp" },
|
|
765
774
|
{ chainId: 7225878n, shortName: "saakuru" },
|
|
766
775
|
{ chainId: 7777777n, shortName: "zora" },
|
|
767
776
|
{ chainId: 9999999n, shortName: "fluence" },
|
|
@@ -990,6 +999,7 @@ function encodeTypedData(typedData) {
|
|
|
990
999
|
if (domain)
|
|
991
1000
|
parts.push(
|
|
992
1001
|
(0, import_viem4.hashDomain)({
|
|
1002
|
+
// domain uses the SDK's `string`-based address types; viem expects `0x${string}`
|
|
993
1003
|
domain,
|
|
994
1004
|
types
|
|
995
1005
|
})
|
|
@@ -1095,7 +1105,7 @@ function generateTypedData({
|
|
|
1095
1105
|
};
|
|
1096
1106
|
}
|
|
1097
1107
|
if (eip712WithChainId) {
|
|
1098
|
-
typedData.domain.chainId =
|
|
1108
|
+
typedData.domain.chainId = chainId;
|
|
1099
1109
|
}
|
|
1100
1110
|
return typedData;
|
|
1101
1111
|
}
|
|
@@ -1380,13 +1390,8 @@ var import_actions3 = require("viem/actions");
|
|
|
1380
1390
|
|
|
1381
1391
|
// src/utils/block.ts
|
|
1382
1392
|
function asBlockId(blockId) {
|
|
1383
|
-
|
|
1384
|
-
}
|
|
1385
|
-
function blockNumber(blockNumber2) {
|
|
1386
|
-
return { blockNumber: blockNumber2.toNumber() };
|
|
1387
|
-
}
|
|
1388
|
-
function blockTag(blockTag2) {
|
|
1389
|
-
return { blockTag: blockTag2 };
|
|
1393
|
+
if (typeof blockId === "number") return { blockNumber: BigInt(blockId) };
|
|
1394
|
+
return { blockTag: blockId };
|
|
1390
1395
|
}
|
|
1391
1396
|
|
|
1392
1397
|
// src/SafeProvider.ts
|
|
@@ -1705,16 +1710,16 @@ var SafeProvider = class _SafeProvider {
|
|
|
1705
1710
|
const chainId = await this.getChainId();
|
|
1706
1711
|
return validateEip3770Address(fullAddress, chainId);
|
|
1707
1712
|
}
|
|
1708
|
-
async getBalance(address,
|
|
1713
|
+
async getBalance(address, blockTag) {
|
|
1709
1714
|
return (0, import_actions2.getBalance)(this.#externalProvider, {
|
|
1710
1715
|
address,
|
|
1711
|
-
...asBlockId(
|
|
1716
|
+
...asBlockId(blockTag)
|
|
1712
1717
|
});
|
|
1713
1718
|
}
|
|
1714
|
-
async getNonce(address,
|
|
1719
|
+
async getNonce(address, blockTag) {
|
|
1715
1720
|
return (0, import_actions2.getTransactionCount)(this.#externalProvider, {
|
|
1716
1721
|
address,
|
|
1717
|
-
...asBlockId(
|
|
1722
|
+
...asBlockId(blockTag)
|
|
1718
1723
|
});
|
|
1719
1724
|
}
|
|
1720
1725
|
async getChainId() {
|
|
@@ -1724,17 +1729,17 @@ var SafeProvider = class _SafeProvider {
|
|
|
1724
1729
|
getChecksummedAddress(address) {
|
|
1725
1730
|
return (0, import_viem10.getAddress)(address);
|
|
1726
1731
|
}
|
|
1727
|
-
async getContractCode(address,
|
|
1732
|
+
async getContractCode(address, blockTag) {
|
|
1728
1733
|
const res = await (0, import_actions2.getCode)(this.#externalProvider, {
|
|
1729
1734
|
address,
|
|
1730
|
-
...asBlockId(
|
|
1735
|
+
...asBlockId(blockTag)
|
|
1731
1736
|
});
|
|
1732
1737
|
return res ?? "0x";
|
|
1733
1738
|
}
|
|
1734
|
-
async isContractDeployed(address,
|
|
1739
|
+
async isContractDeployed(address, blockTag) {
|
|
1735
1740
|
const contractCode = await (0, import_actions2.getCode)(this.#externalProvider, {
|
|
1736
1741
|
address,
|
|
1737
|
-
...asBlockId(
|
|
1742
|
+
...asBlockId(blockTag)
|
|
1738
1743
|
});
|
|
1739
1744
|
return !!contractCode;
|
|
1740
1745
|
}
|
|
@@ -1780,8 +1785,7 @@ var SafeProvider = class _SafeProvider {
|
|
|
1780
1785
|
if (isTypedDataSigner(signer)) {
|
|
1781
1786
|
const typedData = generateTypedData(safeEIP712Args);
|
|
1782
1787
|
const { chainId, verifyingContract } = typedData.domain;
|
|
1783
|
-
const
|
|
1784
|
-
const domain = { verifyingContract, chainId: chain };
|
|
1788
|
+
const domain = { verifyingContract, chainId };
|
|
1785
1789
|
const signature = await signer.signTypedData({
|
|
1786
1790
|
domain,
|
|
1787
1791
|
types: typedData.primaryType === "SafeMessage" ? { SafeMessage: typedData.types.SafeMessage } : { SafeTx: typedData.types.SafeTx },
|
|
@@ -1796,11 +1800,11 @@ var SafeProvider = class _SafeProvider {
|
|
|
1796
1800
|
const converted = toEstimateGasParameters(transaction);
|
|
1797
1801
|
return (await (0, import_actions2.estimateGas)(this.#externalProvider, converted)).toString();
|
|
1798
1802
|
}
|
|
1799
|
-
async call(transaction,
|
|
1803
|
+
async call(transaction, blockTag) {
|
|
1800
1804
|
const converted = toTransactionRequest(transaction);
|
|
1801
1805
|
const { data } = await (0, import_actions2.call)(this.#externalProvider, {
|
|
1802
1806
|
...converted,
|
|
1803
|
-
...asBlockId(
|
|
1807
|
+
...asBlockId(blockTag)
|
|
1804
1808
|
});
|
|
1805
1809
|
return data ?? "0x";
|
|
1806
1810
|
}
|
|
@@ -4646,6 +4650,10 @@ async function getSafeWebAuthnSharedSignerContract({
|
|
|
4646
4650
|
// src/utils/transactions/gas.ts
|
|
4647
4651
|
var CALL_DATA_BYTE_GAS_COST = 16;
|
|
4648
4652
|
var ECRECOVER_GAS_COST = 6e3;
|
|
4653
|
+
var INTRINSIC_TX_GAS_COST = 21e3;
|
|
4654
|
+
var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
|
|
4655
|
+
var MISC_OVERHEAD_GAS_COST = 3e3;
|
|
4656
|
+
var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
|
|
4649
4657
|
var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
|
|
4650
4658
|
|
|
4651
4659
|
// src/utils/transactions/utils.ts
|
package/dist/esm/src/index.mjs
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
isAddress as isAddress4,
|
|
23
23
|
keccak256 as keccak2562,
|
|
24
24
|
pad,
|
|
25
|
-
parseAbi as
|
|
25
|
+
parseAbi as parseAbi4,
|
|
26
26
|
toHex as toHex3,
|
|
27
27
|
toEventHash,
|
|
28
28
|
decodeEventLog
|
|
@@ -414,6 +414,7 @@ var networks = [
|
|
|
414
414
|
{ chainId: 3637n, shortName: "BTNX" },
|
|
415
415
|
{ chainId: 3737n, shortName: "csb" },
|
|
416
416
|
{ chainId: 3776n, shortName: "astrzk" },
|
|
417
|
+
{ chainId: 3946n, shortName: "nex" },
|
|
417
418
|
{ chainId: 4002n, shortName: "tftm" },
|
|
418
419
|
{ chainId: 4061n, shortName: "Nahmii3Mainnet" },
|
|
419
420
|
{ chainId: 4062n, shortName: "Nahmii3Testnet" },
|
|
@@ -426,6 +427,7 @@ var networks = [
|
|
|
426
427
|
{ chainId: 4217n, shortName: "tempo" },
|
|
427
428
|
{ chainId: 4326n, shortName: "megaeth" },
|
|
428
429
|
{ chainId: 4337n, shortName: "beam" },
|
|
430
|
+
{ chainId: 4441n, shortName: "liteforge" },
|
|
429
431
|
{ chainId: 4460n, shortName: "orderlyl2" },
|
|
430
432
|
{ chainId: 4488n, shortName: "HYDRA" },
|
|
431
433
|
{ chainId: 4509n, shortName: "SC" },
|
|
@@ -439,7 +441,9 @@ var networks = [
|
|
|
439
441
|
{ chainId: 5001n, shortName: "mantle-testnet" },
|
|
440
442
|
{ chainId: 5003n, shortName: "mnt-sep" },
|
|
441
443
|
{ chainId: 5031n, shortName: "Somnia" },
|
|
444
|
+
{ chainId: 5042n, shortName: "arc" },
|
|
442
445
|
{ chainId: 5115n, shortName: "citrea-testnet" },
|
|
446
|
+
{ chainId: 5124n, shortName: "seismic-testnet" },
|
|
443
447
|
{ chainId: 5165n, shortName: "ftn" },
|
|
444
448
|
{ chainId: 5330n, shortName: "sseed" },
|
|
445
449
|
{ chainId: 5464n, shortName: "saga" },
|
|
@@ -454,6 +458,7 @@ var networks = [
|
|
|
454
458
|
{ chainId: 6322n, shortName: "aura" },
|
|
455
459
|
{ chainId: 6342n, shortName: "megatest" },
|
|
456
460
|
{ chainId: 6398n, shortName: "connext-sepolia" },
|
|
461
|
+
{ chainId: 6497n, shortName: "awaji" },
|
|
457
462
|
{ chainId: 6688n, shortName: "iris" },
|
|
458
463
|
{ chainId: 6880n, shortName: "mtt-network" },
|
|
459
464
|
{ chainId: 6900n, shortName: "cataclysm-1" },
|
|
@@ -578,6 +583,7 @@ var networks = [
|
|
|
578
583
|
{ chainId: 43419n, shortName: "gunz-mainnet" },
|
|
579
584
|
{ chainId: 44787n, shortName: "alfa" },
|
|
580
585
|
{ chainId: 45000n, shortName: "autobahnnetwork" },
|
|
586
|
+
{ chainId: 46630n, shortName: "robinhoodchaintestnet" },
|
|
581
587
|
{ chainId: 47763n, shortName: "neox-mainnet" },
|
|
582
588
|
{ chainId: 47805n, shortName: "rei" },
|
|
583
589
|
{ chainId: 48898n, shortName: "zircuit-garfield-testnet" },
|
|
@@ -627,6 +633,8 @@ var networks = [
|
|
|
627
633
|
{ chainId: 90001n, shortName: "dhobyghaut" },
|
|
628
634
|
{ chainId: 91342n, shortName: "giwasepolia" },
|
|
629
635
|
{ chainId: 97435n, shortName: "sling" },
|
|
636
|
+
{ chainId: 97476n, shortName: "doma-testnet" },
|
|
637
|
+
{ chainId: 97477n, shortName: "doma" },
|
|
630
638
|
{ chainId: 98864n, shortName: "plume-devnet" },
|
|
631
639
|
{ chainId: 98865n, shortName: "plume" },
|
|
632
640
|
{ chainId: 98866n, shortName: "plume-mainnet" },
|
|
@@ -705,6 +713,7 @@ var networks = [
|
|
|
705
713
|
{ chainId: 6038361n, shortName: "azkyt" },
|
|
706
714
|
{ chainId: 6281971n, shortName: "dogeos-chykyu" },
|
|
707
715
|
{ chainId: 6985385n, shortName: "hp" },
|
|
716
|
+
{ chainId: 7080969n, shortName: "thp" },
|
|
708
717
|
{ chainId: 7225878n, shortName: "saakuru" },
|
|
709
718
|
{ chainId: 7777777n, shortName: "zora" },
|
|
710
719
|
{ chainId: 9999999n, shortName: "fluence" },
|
|
@@ -985,6 +994,7 @@ function encodeTypedData(typedData) {
|
|
|
985
994
|
if (domain)
|
|
986
995
|
parts.push(
|
|
987
996
|
hashDomain({
|
|
997
|
+
// domain uses the SDK's `string`-based address types; viem expects `0x${string}`
|
|
988
998
|
domain,
|
|
989
999
|
types
|
|
990
1000
|
})
|
|
@@ -1090,7 +1100,7 @@ function generateTypedData({
|
|
|
1090
1100
|
};
|
|
1091
1101
|
}
|
|
1092
1102
|
if (eip712WithChainId) {
|
|
1093
|
-
typedData.domain.chainId =
|
|
1103
|
+
typedData.domain.chainId = chainId;
|
|
1094
1104
|
}
|
|
1095
1105
|
return typedData;
|
|
1096
1106
|
}
|
|
@@ -1284,7 +1294,7 @@ var preimageSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =>
|
|
|
1284
1294
|
const safeTxTypes = getEip712TxTypes(safeVersion);
|
|
1285
1295
|
const message = safeTx;
|
|
1286
1296
|
return encodeTypedData({
|
|
1287
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1297
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1288
1298
|
types: { SafeTx: safeTxTypes.SafeTx },
|
|
1289
1299
|
message
|
|
1290
1300
|
});
|
|
@@ -1292,7 +1302,7 @@ var preimageSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =>
|
|
|
1292
1302
|
var preimageSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
|
|
1293
1303
|
const safeMessageTypes = getEip712MessageTypes(safeVersion);
|
|
1294
1304
|
return encodeTypedData({
|
|
1295
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1305
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1296
1306
|
types: { SafeMessage: safeMessageTypes.SafeMessage },
|
|
1297
1307
|
message: { message }
|
|
1298
1308
|
});
|
|
@@ -1302,7 +1312,7 @@ var calculateSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =
|
|
|
1302
1312
|
const safeTxTypes = getEip712TxTypes(safeVersion);
|
|
1303
1313
|
const domain = { verifyingContract: safeAddress };
|
|
1304
1314
|
if (semverSatisfies3(safeVersion, EQ_OR_GT_1_3_02)) {
|
|
1305
|
-
domain.chainId =
|
|
1315
|
+
domain.chainId = chainId;
|
|
1306
1316
|
}
|
|
1307
1317
|
const message = safeTx;
|
|
1308
1318
|
return hashTypedData2({ domain, types: { SafeTx: safeTxTypes.SafeTx }, message });
|
|
@@ -1310,14 +1320,18 @@ var calculateSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) =
|
|
|
1310
1320
|
var calculateSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
|
|
1311
1321
|
const safeMessageTypes = getEip712MessageTypes(safeVersion);
|
|
1312
1322
|
return hashTypedData2({
|
|
1313
|
-
domain: { verifyingContract: safeAddress, chainId
|
|
1323
|
+
domain: { verifyingContract: safeAddress, chainId },
|
|
1314
1324
|
types: { SafeMessage: safeMessageTypes.SafeMessage },
|
|
1315
1325
|
message: { message }
|
|
1316
1326
|
});
|
|
1317
1327
|
};
|
|
1318
1328
|
|
|
1319
1329
|
// src/utils/transactions/gas.ts
|
|
1320
|
-
import {
|
|
1330
|
+
import {
|
|
1331
|
+
BaseError,
|
|
1332
|
+
encodeFunctionData as encodeFunctionData2,
|
|
1333
|
+
parseAbi
|
|
1334
|
+
} from "viem";
|
|
1321
1335
|
import { OperationType } from "@safe-global/types-kit";
|
|
1322
1336
|
import semverSatisfies4 from "semver/functions/satisfies.js";
|
|
1323
1337
|
|
|
@@ -5458,11 +5472,23 @@ async function getExtensibleFallbackHandlerContract({
|
|
|
5458
5472
|
// src/utils/transactions/gas.ts
|
|
5459
5473
|
var CALL_DATA_ZERO_BYTE_GAS_COST = 4;
|
|
5460
5474
|
var CALL_DATA_BYTE_GAS_COST = 16;
|
|
5461
|
-
var
|
|
5475
|
+
var INITIALIZATION_GAS_COST = 22100;
|
|
5462
5476
|
var INCREMENT_NONCE_GAS_COST = 5e3;
|
|
5463
5477
|
var HASH_GENERATION_GAS_COST = 1500;
|
|
5464
5478
|
var ECRECOVER_GAS_COST = 6e3;
|
|
5465
|
-
var
|
|
5479
|
+
var INTRINSIC_TX_GAS_COST = 21e3;
|
|
5480
|
+
var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
|
|
5481
|
+
var MISC_OVERHEAD_GAS_COST = 3e3;
|
|
5482
|
+
var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
|
|
5483
|
+
var NEW_ACCOUNT_GAS_COST = 25e3;
|
|
5484
|
+
var COLD_ACCOUNT_ACCESS_GAS_COST = 2600;
|
|
5485
|
+
var CALL_VALUE_GAS_COST = 9e3;
|
|
5486
|
+
var ERC20_TRANSFER_GAS_COST = 21e3;
|
|
5487
|
+
var ERC20_NEW_HOLDER_TRANSFER_GAS_COST = 38e3;
|
|
5488
|
+
var LOG_BASE_GAS_COST = 375;
|
|
5489
|
+
var LOG_TOPIC_GAS_COST = 375;
|
|
5490
|
+
var LOG_DATA_GAS_COST_PER_BYTE = 8;
|
|
5491
|
+
var EXECUTION_RESULT_EVENT_GAS_COST = 1500;
|
|
5466
5492
|
var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
|
|
5467
5493
|
function estimateDataGasCosts(data) {
|
|
5468
5494
|
const bytes = data.match(/.{2}/g);
|
|
@@ -5476,6 +5502,58 @@ function estimateDataGasCosts(data) {
|
|
|
5476
5502
|
return gasCost + CALL_DATA_BYTE_GAS_COST;
|
|
5477
5503
|
}, 0);
|
|
5478
5504
|
}
|
|
5505
|
+
function calculateExecTransactionEventsGas(isL1SafeSingleton, data, threshold) {
|
|
5506
|
+
let gas = EXECUTION_RESULT_EVENT_GAS_COST;
|
|
5507
|
+
if (!isL1SafeSingleton) {
|
|
5508
|
+
const dataBytes = (data.length - 2) / 2;
|
|
5509
|
+
const signaturesBytes = threshold * 65;
|
|
5510
|
+
const headBytes = 11 * 32;
|
|
5511
|
+
const dataDynamicBytes = 32 + Math.ceil(dataBytes / 32) * 32;
|
|
5512
|
+
const signaturesDynamicBytes = 32 + Math.ceil(signaturesBytes / 32) * 32;
|
|
5513
|
+
const additionalInfoDynamicBytes = 32 + 3 * 32;
|
|
5514
|
+
const eventDataBytes = headBytes + dataDynamicBytes + signaturesDynamicBytes + additionalInfoDynamicBytes;
|
|
5515
|
+
gas += LOG_BASE_GAS_COST + LOG_TOPIC_GAS_COST + eventDataBytes * LOG_DATA_GAS_COST_PER_BYTE;
|
|
5516
|
+
}
|
|
5517
|
+
return gas;
|
|
5518
|
+
}
|
|
5519
|
+
async function isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver) {
|
|
5520
|
+
if (gasToken.toLowerCase() !== ZERO_ADDRESS.toLowerCase() || refundReceiver.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
|
|
5521
|
+
return false;
|
|
5522
|
+
}
|
|
5523
|
+
const [contractCode, nonce, balance] = await Promise.all([
|
|
5524
|
+
safeProvider.getContractCode(refundReceiver),
|
|
5525
|
+
safeProvider.getNonce(refundReceiver),
|
|
5526
|
+
safeProvider.getBalance(refundReceiver)
|
|
5527
|
+
]);
|
|
5528
|
+
return contractCode === "0x" && nonce === 0 && balance === 0n;
|
|
5529
|
+
}
|
|
5530
|
+
async function hasExistingTokenBalance(safeProvider, gasToken, account) {
|
|
5531
|
+
const data = encodeFunctionData2({
|
|
5532
|
+
abi: parseAbi(["function balanceOf(address account) view returns (uint256)"]),
|
|
5533
|
+
functionName: "balanceOf",
|
|
5534
|
+
args: [account]
|
|
5535
|
+
});
|
|
5536
|
+
try {
|
|
5537
|
+
const response = await safeProvider.call({ to: gasToken, from: gasToken, value: "0", data });
|
|
5538
|
+
return BigInt(response || "0x0") > 0n;
|
|
5539
|
+
} catch {
|
|
5540
|
+
return false;
|
|
5541
|
+
}
|
|
5542
|
+
}
|
|
5543
|
+
async function calculateRefundGas(safeProvider, gasPrice, gasToken, refundReceiver) {
|
|
5544
|
+
if (BigInt(gasPrice) === 0n) {
|
|
5545
|
+
return 0;
|
|
5546
|
+
}
|
|
5547
|
+
if (gasToken.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
|
|
5548
|
+
let gas = COLD_ACCOUNT_ACCESS_GAS_COST + CALL_VALUE_GAS_COST;
|
|
5549
|
+
if (await isNewEthRefundReceiver(safeProvider, gasToken, refundReceiver)) {
|
|
5550
|
+
gas += NEW_ACCOUNT_GAS_COST;
|
|
5551
|
+
}
|
|
5552
|
+
return gas;
|
|
5553
|
+
}
|
|
5554
|
+
const hasBalance = await hasExistingTokenBalance(safeProvider, gasToken, refundReceiver);
|
|
5555
|
+
return hasBalance ? ERC20_TRANSFER_GAS_COST : ERC20_NEW_HOLDER_TRANSFER_GAS_COST;
|
|
5556
|
+
}
|
|
5479
5557
|
async function estimateGas(safeVersion, safeContract, safeProvider, to, valueInWei, data, operation, customContracts) {
|
|
5480
5558
|
const chainId = await safeProvider.getChainId();
|
|
5481
5559
|
const simulateTxAccessorContract = await getSimulateTxAccessorContract({
|
|
@@ -5527,21 +5605,25 @@ async function estimateTxGas(safeContract, safeProvider, to, valueInWei, data, o
|
|
|
5527
5605
|
}
|
|
5528
5606
|
async function estimateTxBaseGas(safe, safeTransaction) {
|
|
5529
5607
|
const safeTransactionData = safeTransaction.data;
|
|
5530
|
-
const { to, value, data, operation, safeTxGas, gasToken, refundReceiver } = safeTransactionData;
|
|
5531
|
-
const safeThreshold = await safe.getThreshold();
|
|
5532
|
-
const safeNonce = await safe.getNonce();
|
|
5533
|
-
const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
|
|
5608
|
+
const { to, value, data, operation, safeTxGas, gasPrice, gasToken, refundReceiver } = safeTransactionData;
|
|
5534
5609
|
const encodeSafeTxGas = safeTxGas || 0;
|
|
5535
5610
|
const encodeBaseGas = 0;
|
|
5536
|
-
const
|
|
5611
|
+
const encodeGasPrice = 1;
|
|
5537
5612
|
const encodeGasToken = gasToken || ZERO_ADDRESS;
|
|
5538
5613
|
const encodeRefundReceiver = refundReceiver || ZERO_ADDRESS;
|
|
5539
5614
|
const signatures = "0x";
|
|
5540
|
-
const safeVersion = safe.getContractVersion();
|
|
5541
5615
|
const safeProvider = safe.getSafeProvider();
|
|
5542
|
-
const
|
|
5543
|
-
const
|
|
5544
|
-
const
|
|
5616
|
+
const safeVersion = safe.getContractVersion();
|
|
5617
|
+
const contractManager = safe.getContractManager();
|
|
5618
|
+
const isL1SafeSingleton = contractManager.isL1SafeSingleton;
|
|
5619
|
+
const [safeThreshold, safeNonce, chainId, refundGas] = await Promise.all([
|
|
5620
|
+
safe.getThreshold(),
|
|
5621
|
+
safe.getNonce(),
|
|
5622
|
+
safe.getChainId(),
|
|
5623
|
+
calculateRefundGas(safeProvider, gasPrice, encodeGasToken, encodeRefundReceiver)
|
|
5624
|
+
]);
|
|
5625
|
+
const signaturesGasCost = safeThreshold * GAS_COST_PER_SIGNATURE;
|
|
5626
|
+
const customContracts = contractManager.contractNetworks?.[chainId.toString()];
|
|
5545
5627
|
const safeSingletonContract = await getSafeContract({
|
|
5546
5628
|
safeProvider,
|
|
5547
5629
|
safeVersion,
|
|
@@ -5555,16 +5637,19 @@ async function estimateTxBaseGas(safe, safeTransaction) {
|
|
|
5555
5637
|
operation,
|
|
5556
5638
|
encodeSafeTxGas,
|
|
5557
5639
|
encodeBaseGas,
|
|
5558
|
-
|
|
5640
|
+
encodeGasPrice,
|
|
5559
5641
|
encodeGasToken,
|
|
5560
5642
|
encodeRefundReceiver,
|
|
5561
5643
|
signatures
|
|
5562
5644
|
]);
|
|
5563
5645
|
const isSafeInitialized = safeNonce !== 0;
|
|
5564
|
-
const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST :
|
|
5646
|
+
const incrementNonceGasCost = isSafeInitialized ? INCREMENT_NONCE_GAS_COST : INITIALIZATION_GAS_COST;
|
|
5565
5647
|
let baseGas = signaturesGasCost + estimateDataGasCosts(execTransactionData) + incrementNonceGasCost + HASH_GENERATION_GAS_COST;
|
|
5566
|
-
baseGas
|
|
5567
|
-
baseGas +=
|
|
5648
|
+
baseGas += refundGas;
|
|
5649
|
+
baseGas += calculateExecTransactionEventsGas(isL1SafeSingleton ?? false, data, safeThreshold);
|
|
5650
|
+
baseGas += EXTRA_BASE_GAS_COST;
|
|
5651
|
+
const baseGasUsedBytes = Math.ceil(baseGas.toString(16).length / 2);
|
|
5652
|
+
baseGas += baseGasUsedBytes * (CALL_DATA_BYTE_GAS_COST - CALL_DATA_ZERO_BYTE_GAS_COST);
|
|
5568
5653
|
return baseGas.toString();
|
|
5569
5654
|
}
|
|
5570
5655
|
async function estimateSafeTxGas(safe, safeTransaction) {
|
|
@@ -5753,7 +5838,7 @@ import {
|
|
|
5753
5838
|
encodePacked,
|
|
5754
5839
|
bytesToHex,
|
|
5755
5840
|
decodeFunctionData,
|
|
5756
|
-
parseAbi
|
|
5841
|
+
parseAbi as parseAbi2
|
|
5757
5842
|
} from "viem";
|
|
5758
5843
|
import { waitForTransactionReceipt as waitForTransactionReceiptViem } from "viem/actions";
|
|
5759
5844
|
function standardizeMetaTransactionData(tx) {
|
|
@@ -5853,7 +5938,7 @@ function encodeMultiSendData(txs) {
|
|
|
5853
5938
|
}
|
|
5854
5939
|
function decodeMultiSendData(encodedData) {
|
|
5855
5940
|
const decodedData = decodeFunctionData({
|
|
5856
|
-
abi:
|
|
5941
|
+
abi: parseAbi2(["function multiSend(bytes memory transactions) public payable"]),
|
|
5857
5942
|
data: asHex(encodedData)
|
|
5858
5943
|
});
|
|
5859
5944
|
const args = decodedData.args;
|
|
@@ -6102,8 +6187,8 @@ import {
|
|
|
6102
6187
|
fromBytes,
|
|
6103
6188
|
fromHex,
|
|
6104
6189
|
parseAbiParameters,
|
|
6105
|
-
encodeFunctionData as
|
|
6106
|
-
parseAbi as
|
|
6190
|
+
encodeFunctionData as encodeFunctionData3,
|
|
6191
|
+
parseAbi as parseAbi3
|
|
6107
6192
|
} from "viem";
|
|
6108
6193
|
|
|
6109
6194
|
// src/utils/passkeys/isSharedSigner.ts
|
|
@@ -6189,8 +6274,8 @@ var createPasskeyClient = async (passkey, safeWebAuthnSignerFactoryContract, saf
|
|
|
6189
6274
|
signTransaction,
|
|
6190
6275
|
signTypedData,
|
|
6191
6276
|
encodeConfigure() {
|
|
6192
|
-
return
|
|
6193
|
-
abi:
|
|
6277
|
+
return encodeFunctionData3({
|
|
6278
|
+
abi: parseAbi3(["function configure((uint256 x, uint256 y, uint176 verifiers) signer)"]),
|
|
6194
6279
|
functionName: "configure",
|
|
6195
6280
|
args: [
|
|
6196
6281
|
{
|
|
@@ -6285,13 +6370,8 @@ var getPasskeyOwnerAddress_default = getPasskeyOwnerAddress;
|
|
|
6285
6370
|
|
|
6286
6371
|
// src/utils/block.ts
|
|
6287
6372
|
function asBlockId(blockId) {
|
|
6288
|
-
|
|
6289
|
-
}
|
|
6290
|
-
function blockNumber(blockNumber2) {
|
|
6291
|
-
return { blockNumber: blockNumber2.toNumber() };
|
|
6292
|
-
}
|
|
6293
|
-
function blockTag(blockTag2) {
|
|
6294
|
-
return { blockTag: blockTag2 };
|
|
6373
|
+
if (typeof blockId === "number") return { blockNumber: BigInt(blockId) };
|
|
6374
|
+
return { blockTag: blockId };
|
|
6295
6375
|
}
|
|
6296
6376
|
|
|
6297
6377
|
// src/SafeProvider.ts
|
|
@@ -6450,16 +6530,16 @@ var SafeProvider = class _SafeProvider {
|
|
|
6450
6530
|
const chainId = await this.getChainId();
|
|
6451
6531
|
return validateEip3770Address(fullAddress, chainId);
|
|
6452
6532
|
}
|
|
6453
|
-
async getBalance(address,
|
|
6533
|
+
async getBalance(address, blockTag) {
|
|
6454
6534
|
return getBalance(this.#externalProvider, {
|
|
6455
6535
|
address,
|
|
6456
|
-
...asBlockId(
|
|
6536
|
+
...asBlockId(blockTag)
|
|
6457
6537
|
});
|
|
6458
6538
|
}
|
|
6459
|
-
async getNonce(address,
|
|
6539
|
+
async getNonce(address, blockTag) {
|
|
6460
6540
|
return getTransactionCount(this.#externalProvider, {
|
|
6461
6541
|
address,
|
|
6462
|
-
...asBlockId(
|
|
6542
|
+
...asBlockId(blockTag)
|
|
6463
6543
|
});
|
|
6464
6544
|
}
|
|
6465
6545
|
async getChainId() {
|
|
@@ -6469,17 +6549,17 @@ var SafeProvider = class _SafeProvider {
|
|
|
6469
6549
|
getChecksummedAddress(address) {
|
|
6470
6550
|
return getAddress2(address);
|
|
6471
6551
|
}
|
|
6472
|
-
async getContractCode(address,
|
|
6552
|
+
async getContractCode(address, blockTag) {
|
|
6473
6553
|
const res = await getCode(this.#externalProvider, {
|
|
6474
6554
|
address,
|
|
6475
|
-
...asBlockId(
|
|
6555
|
+
...asBlockId(blockTag)
|
|
6476
6556
|
});
|
|
6477
6557
|
return res ?? "0x";
|
|
6478
6558
|
}
|
|
6479
|
-
async isContractDeployed(address,
|
|
6559
|
+
async isContractDeployed(address, blockTag) {
|
|
6480
6560
|
const contractCode = await getCode(this.#externalProvider, {
|
|
6481
6561
|
address,
|
|
6482
|
-
...asBlockId(
|
|
6562
|
+
...asBlockId(blockTag)
|
|
6483
6563
|
});
|
|
6484
6564
|
return !!contractCode;
|
|
6485
6565
|
}
|
|
@@ -6525,8 +6605,7 @@ var SafeProvider = class _SafeProvider {
|
|
|
6525
6605
|
if (isTypedDataSigner(signer)) {
|
|
6526
6606
|
const typedData = generateTypedData(safeEIP712Args);
|
|
6527
6607
|
const { chainId, verifyingContract } = typedData.domain;
|
|
6528
|
-
const
|
|
6529
|
-
const domain = { verifyingContract, chainId: chain };
|
|
6608
|
+
const domain = { verifyingContract, chainId };
|
|
6530
6609
|
const signature = await signer.signTypedData({
|
|
6531
6610
|
domain,
|
|
6532
6611
|
types: typedData.primaryType === "SafeMessage" ? { SafeMessage: typedData.types.SafeMessage } : { SafeTx: typedData.types.SafeTx },
|
|
@@ -6541,11 +6620,11 @@ var SafeProvider = class _SafeProvider {
|
|
|
6541
6620
|
const converted = toEstimateGasParameters(transaction);
|
|
6542
6621
|
return (await estimateGas2(this.#externalProvider, converted)).toString();
|
|
6543
6622
|
}
|
|
6544
|
-
async call(transaction,
|
|
6623
|
+
async call(transaction, blockTag) {
|
|
6545
6624
|
const converted = toTransactionRequest(transaction);
|
|
6546
6625
|
const { data } = await call(this.#externalProvider, {
|
|
6547
6626
|
...converted,
|
|
6548
|
-
...asBlockId(
|
|
6627
|
+
...asBlockId(blockTag)
|
|
6549
6628
|
});
|
|
6550
6629
|
return data ?? "0x";
|
|
6551
6630
|
}
|
|
@@ -6721,7 +6800,7 @@ var memoizedGetSafeContract = createMemoizedFunction(
|
|
|
6721
6800
|
async function getSafeContractVersion(safeProvider, safeAddress) {
|
|
6722
6801
|
return await safeProvider.readContract({
|
|
6723
6802
|
address: safeAddress,
|
|
6724
|
-
abi:
|
|
6803
|
+
abi: parseAbi4(["function VERSION() view returns (string)"]),
|
|
6725
6804
|
functionName: "VERSION"
|
|
6726
6805
|
});
|
|
6727
6806
|
}
|
|
@@ -6875,7 +6954,7 @@ function getSafeAddressFromDeploymentTx(txReceipt, safeVersion) {
|
|
|
6875
6954
|
}
|
|
6876
6955
|
const { data, topics } = proxyCreationEvent;
|
|
6877
6956
|
const { args } = decodeEventLog({
|
|
6878
|
-
abi:
|
|
6957
|
+
abi: parseAbi4([getProxyCreationEvent(safeVersion)]),
|
|
6879
6958
|
eventName: "ProxyCreation",
|
|
6880
6959
|
data,
|
|
6881
6960
|
topics
|
|
@@ -7393,7 +7472,7 @@ function generateOnChainIdentifier({
|
|
|
7393
7472
|
var generateOnChainIdentifier_default = generateOnChainIdentifier;
|
|
7394
7473
|
|
|
7395
7474
|
// src/utils/getProtocolKitVersion.ts
|
|
7396
|
-
var getProtocolKitVersion = () => "
|
|
7475
|
+
var getProtocolKitVersion = () => "8.0.0";
|
|
7397
7476
|
|
|
7398
7477
|
// src/Safe.ts
|
|
7399
7478
|
var EQ_OR_GT_1_5_0 = ">=1.5.0";
|
|
@@ -9042,15 +9121,15 @@ var Safe = class _Safe {
|
|
|
9042
9121
|
var Safe_default = Safe;
|
|
9043
9122
|
|
|
9044
9123
|
// src/utils/erc-20/index.ts
|
|
9045
|
-
import { encodeFunctionData as
|
|
9124
|
+
import { encodeFunctionData as encodeFunctionData4, parseAbi as parseAbi5 } from "viem";
|
|
9046
9125
|
var ERC20_ABI = [
|
|
9047
9126
|
"function transfer(address recipient, uint256 amount) returns (bool)",
|
|
9048
9127
|
"function decimals() view returns (uint8)"
|
|
9049
9128
|
];
|
|
9050
9129
|
async function getERC20Decimals(tokenAddress, safe) {
|
|
9051
9130
|
const safeProvider = safe.getSafeProvider();
|
|
9052
|
-
const data =
|
|
9053
|
-
abi:
|
|
9131
|
+
const data = encodeFunctionData4({
|
|
9132
|
+
abi: parseAbi5(ERC20_ABI),
|
|
9054
9133
|
functionName: "decimals"
|
|
9055
9134
|
});
|
|
9056
9135
|
const getTokenDecimalsTransaction = {
|
|
@@ -9077,8 +9156,8 @@ async function isGasTokenCompatibleWithHandlePayment(gasToken, safe) {
|
|
|
9077
9156
|
return hasTokenStandardERC20Decimals;
|
|
9078
9157
|
}
|
|
9079
9158
|
function createERC20TokenTransferTransaction(tokenAddress, toAddress, amount) {
|
|
9080
|
-
const data =
|
|
9081
|
-
abi:
|
|
9159
|
+
const data = encodeFunctionData4({
|
|
9160
|
+
abi: parseAbi5(ERC20_ABI),
|
|
9082
9161
|
functionName: "transfer",
|
|
9083
9162
|
args: [toAddress, amount]
|
|
9084
9163
|
});
|
|
@@ -429,6 +429,7 @@ var networks = [
|
|
|
429
429
|
{ chainId: 3637n, shortName: "BTNX" },
|
|
430
430
|
{ chainId: 3737n, shortName: "csb" },
|
|
431
431
|
{ chainId: 3776n, shortName: "astrzk" },
|
|
432
|
+
{ chainId: 3946n, shortName: "nex" },
|
|
432
433
|
{ chainId: 4002n, shortName: "tftm" },
|
|
433
434
|
{ chainId: 4061n, shortName: "Nahmii3Mainnet" },
|
|
434
435
|
{ chainId: 4062n, shortName: "Nahmii3Testnet" },
|
|
@@ -441,6 +442,7 @@ var networks = [
|
|
|
441
442
|
{ chainId: 4217n, shortName: "tempo" },
|
|
442
443
|
{ chainId: 4326n, shortName: "megaeth" },
|
|
443
444
|
{ chainId: 4337n, shortName: "beam" },
|
|
445
|
+
{ chainId: 4441n, shortName: "liteforge" },
|
|
444
446
|
{ chainId: 4460n, shortName: "orderlyl2" },
|
|
445
447
|
{ chainId: 4488n, shortName: "HYDRA" },
|
|
446
448
|
{ chainId: 4509n, shortName: "SC" },
|
|
@@ -454,7 +456,9 @@ var networks = [
|
|
|
454
456
|
{ chainId: 5001n, shortName: "mantle-testnet" },
|
|
455
457
|
{ chainId: 5003n, shortName: "mnt-sep" },
|
|
456
458
|
{ chainId: 5031n, shortName: "Somnia" },
|
|
459
|
+
{ chainId: 5042n, shortName: "arc" },
|
|
457
460
|
{ chainId: 5115n, shortName: "citrea-testnet" },
|
|
461
|
+
{ chainId: 5124n, shortName: "seismic-testnet" },
|
|
458
462
|
{ chainId: 5165n, shortName: "ftn" },
|
|
459
463
|
{ chainId: 5330n, shortName: "sseed" },
|
|
460
464
|
{ chainId: 5464n, shortName: "saga" },
|
|
@@ -469,6 +473,7 @@ var networks = [
|
|
|
469
473
|
{ chainId: 6322n, shortName: "aura" },
|
|
470
474
|
{ chainId: 6342n, shortName: "megatest" },
|
|
471
475
|
{ chainId: 6398n, shortName: "connext-sepolia" },
|
|
476
|
+
{ chainId: 6497n, shortName: "awaji" },
|
|
472
477
|
{ chainId: 6688n, shortName: "iris" },
|
|
473
478
|
{ chainId: 6880n, shortName: "mtt-network" },
|
|
474
479
|
{ chainId: 6900n, shortName: "cataclysm-1" },
|
|
@@ -593,6 +598,7 @@ var networks = [
|
|
|
593
598
|
{ chainId: 43419n, shortName: "gunz-mainnet" },
|
|
594
599
|
{ chainId: 44787n, shortName: "alfa" },
|
|
595
600
|
{ chainId: 45000n, shortName: "autobahnnetwork" },
|
|
601
|
+
{ chainId: 46630n, shortName: "robinhoodchaintestnet" },
|
|
596
602
|
{ chainId: 47763n, shortName: "neox-mainnet" },
|
|
597
603
|
{ chainId: 47805n, shortName: "rei" },
|
|
598
604
|
{ chainId: 48898n, shortName: "zircuit-garfield-testnet" },
|
|
@@ -642,6 +648,8 @@ var networks = [
|
|
|
642
648
|
{ chainId: 90001n, shortName: "dhobyghaut" },
|
|
643
649
|
{ chainId: 91342n, shortName: "giwasepolia" },
|
|
644
650
|
{ chainId: 97435n, shortName: "sling" },
|
|
651
|
+
{ chainId: 97476n, shortName: "doma-testnet" },
|
|
652
|
+
{ chainId: 97477n, shortName: "doma" },
|
|
645
653
|
{ chainId: 98864n, shortName: "plume-devnet" },
|
|
646
654
|
{ chainId: 98865n, shortName: "plume" },
|
|
647
655
|
{ chainId: 98866n, shortName: "plume-mainnet" },
|
|
@@ -720,6 +728,7 @@ var networks = [
|
|
|
720
728
|
{ chainId: 6038361n, shortName: "azkyt" },
|
|
721
729
|
{ chainId: 6281971n, shortName: "dogeos-chykyu" },
|
|
722
730
|
{ chainId: 6985385n, shortName: "hp" },
|
|
731
|
+
{ chainId: 7080969n, shortName: "thp" },
|
|
723
732
|
{ chainId: 7225878n, shortName: "saakuru" },
|
|
724
733
|
{ chainId: 7777777n, shortName: "zora" },
|
|
725
734
|
{ chainId: 9999999n, shortName: "fluence" },
|
|
@@ -956,6 +965,7 @@ function encodeTypedData(typedData) {
|
|
|
956
965
|
if (domain)
|
|
957
966
|
parts.push(
|
|
958
967
|
hashDomain({
|
|
968
|
+
// domain uses the SDK's `string`-based address types; viem expects `0x${string}`
|
|
959
969
|
domain,
|
|
960
970
|
types
|
|
961
971
|
})
|
|
@@ -1061,7 +1071,7 @@ function generateTypedData({
|
|
|
1061
1071
|
};
|
|
1062
1072
|
}
|
|
1063
1073
|
if (eip712WithChainId) {
|
|
1064
|
-
typedData.domain.chainId =
|
|
1074
|
+
typedData.domain.chainId = chainId;
|
|
1065
1075
|
}
|
|
1066
1076
|
return typedData;
|
|
1067
1077
|
}
|
|
@@ -1095,7 +1105,11 @@ import {
|
|
|
1095
1105
|
import semverSatisfies3 from "semver/functions/satisfies.js";
|
|
1096
1106
|
|
|
1097
1107
|
// src/utils/transactions/gas.ts
|
|
1098
|
-
import {
|
|
1108
|
+
import {
|
|
1109
|
+
BaseError,
|
|
1110
|
+
encodeFunctionData as encodeFunctionData3,
|
|
1111
|
+
parseAbi as parseAbi3
|
|
1112
|
+
} from "viem";
|
|
1099
1113
|
import { OperationType } from "@safe-global/types-kit";
|
|
1100
1114
|
import semverSatisfies5 from "semver/functions/satisfies.js";
|
|
1101
1115
|
|
|
@@ -1376,13 +1390,8 @@ import { waitForTransactionReceipt } from "viem/actions";
|
|
|
1376
1390
|
|
|
1377
1391
|
// src/utils/block.ts
|
|
1378
1392
|
function asBlockId(blockId) {
|
|
1379
|
-
|
|
1380
|
-
}
|
|
1381
|
-
function blockNumber(blockNumber2) {
|
|
1382
|
-
return { blockNumber: blockNumber2.toNumber() };
|
|
1383
|
-
}
|
|
1384
|
-
function blockTag(blockTag2) {
|
|
1385
|
-
return { blockTag: blockTag2 };
|
|
1393
|
+
if (typeof blockId === "number") return { blockNumber: BigInt(blockId) };
|
|
1394
|
+
return { blockTag: blockId };
|
|
1386
1395
|
}
|
|
1387
1396
|
|
|
1388
1397
|
// src/SafeProvider.ts
|
|
@@ -1741,16 +1750,16 @@ var SafeProvider = class _SafeProvider {
|
|
|
1741
1750
|
const chainId = await this.getChainId();
|
|
1742
1751
|
return validateEip3770Address(fullAddress, chainId);
|
|
1743
1752
|
}
|
|
1744
|
-
async getBalance(address,
|
|
1753
|
+
async getBalance(address, blockTag) {
|
|
1745
1754
|
return getBalance(this.#externalProvider, {
|
|
1746
1755
|
address,
|
|
1747
|
-
...asBlockId(
|
|
1756
|
+
...asBlockId(blockTag)
|
|
1748
1757
|
});
|
|
1749
1758
|
}
|
|
1750
|
-
async getNonce(address,
|
|
1759
|
+
async getNonce(address, blockTag) {
|
|
1751
1760
|
return getTransactionCount(this.#externalProvider, {
|
|
1752
1761
|
address,
|
|
1753
|
-
...asBlockId(
|
|
1762
|
+
...asBlockId(blockTag)
|
|
1754
1763
|
});
|
|
1755
1764
|
}
|
|
1756
1765
|
async getChainId() {
|
|
@@ -1760,17 +1769,17 @@ var SafeProvider = class _SafeProvider {
|
|
|
1760
1769
|
getChecksummedAddress(address) {
|
|
1761
1770
|
return getAddress(address);
|
|
1762
1771
|
}
|
|
1763
|
-
async getContractCode(address,
|
|
1772
|
+
async getContractCode(address, blockTag) {
|
|
1764
1773
|
const res = await getCode(this.#externalProvider, {
|
|
1765
1774
|
address,
|
|
1766
|
-
...asBlockId(
|
|
1775
|
+
...asBlockId(blockTag)
|
|
1767
1776
|
});
|
|
1768
1777
|
return res ?? "0x";
|
|
1769
1778
|
}
|
|
1770
|
-
async isContractDeployed(address,
|
|
1779
|
+
async isContractDeployed(address, blockTag) {
|
|
1771
1780
|
const contractCode = await getCode(this.#externalProvider, {
|
|
1772
1781
|
address,
|
|
1773
|
-
...asBlockId(
|
|
1782
|
+
...asBlockId(blockTag)
|
|
1774
1783
|
});
|
|
1775
1784
|
return !!contractCode;
|
|
1776
1785
|
}
|
|
@@ -1816,8 +1825,7 @@ var SafeProvider = class _SafeProvider {
|
|
|
1816
1825
|
if (isTypedDataSigner(signer)) {
|
|
1817
1826
|
const typedData = generateTypedData(safeEIP712Args);
|
|
1818
1827
|
const { chainId, verifyingContract } = typedData.domain;
|
|
1819
|
-
const
|
|
1820
|
-
const domain = { verifyingContract, chainId: chain };
|
|
1828
|
+
const domain = { verifyingContract, chainId };
|
|
1821
1829
|
const signature = await signer.signTypedData({
|
|
1822
1830
|
domain,
|
|
1823
1831
|
types: typedData.primaryType === "SafeMessage" ? { SafeMessage: typedData.types.SafeMessage } : { SafeTx: typedData.types.SafeTx },
|
|
@@ -1832,11 +1840,11 @@ var SafeProvider = class _SafeProvider {
|
|
|
1832
1840
|
const converted = toEstimateGasParameters(transaction);
|
|
1833
1841
|
return (await estimateGas(this.#externalProvider, converted)).toString();
|
|
1834
1842
|
}
|
|
1835
|
-
async call(transaction,
|
|
1843
|
+
async call(transaction, blockTag) {
|
|
1836
1844
|
const converted = toTransactionRequest(transaction);
|
|
1837
1845
|
const { data } = await call(this.#externalProvider, {
|
|
1838
1846
|
...converted,
|
|
1839
|
-
...asBlockId(
|
|
1847
|
+
...asBlockId(blockTag)
|
|
1840
1848
|
});
|
|
1841
1849
|
return data ?? "0x";
|
|
1842
1850
|
}
|
|
@@ -4746,6 +4754,10 @@ async function getSafeWebAuthnSharedSignerContract({
|
|
|
4746
4754
|
// src/utils/transactions/gas.ts
|
|
4747
4755
|
var CALL_DATA_BYTE_GAS_COST = 16;
|
|
4748
4756
|
var ECRECOVER_GAS_COST = 6e3;
|
|
4757
|
+
var INTRINSIC_TX_GAS_COST = 21e3;
|
|
4758
|
+
var PRE_EXEC_STORAGE_GAS_COST = 2 * 2100;
|
|
4759
|
+
var MISC_OVERHEAD_GAS_COST = 3e3;
|
|
4760
|
+
var EXTRA_BASE_GAS_COST = INTRINSIC_TX_GAS_COST + PRE_EXEC_STORAGE_GAS_COST + MISC_OVERHEAD_GAS_COST;
|
|
4749
4761
|
var GAS_COST_PER_SIGNATURE = 1 * CALL_DATA_BYTE_GAS_COST + 2 * 32 * CALL_DATA_BYTE_GAS_COST + ECRECOVER_GAS_COST;
|
|
4750
4762
|
|
|
4751
4763
|
// src/utils/transactions/utils.ts
|
|
@@ -4759,7 +4771,7 @@ import {
|
|
|
4759
4771
|
encodePacked,
|
|
4760
4772
|
bytesToHex,
|
|
4761
4773
|
decodeFunctionData,
|
|
4762
|
-
parseAbi as
|
|
4774
|
+
parseAbi as parseAbi4
|
|
4763
4775
|
} from "viem";
|
|
4764
4776
|
import { waitForTransactionReceipt as waitForTransactionReceiptViem } from "viem/actions";
|
|
4765
4777
|
function toEstimateGasParameters(tx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeProvider.d.ts","sourceRoot":"","sources":["../../src/SafeProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,cAAc,EACd,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EAGX,MAAM,iCAAiC,CAAA;AAIxC,OAAO,EAOL,WAAW,EAMX,GAAG,EACH,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EAOrB,MAAM,MAAM,CAAA;AAcb,cAAM,YAAY;;IAGhB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,EAAE,eAAe,GAAG,aAAa,GAAG,eAAe,CAAA;gBAE/C,EACV,QAAQ,EACR,MAAM,EACP,EAAE;QACD,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACxC,MAAM,CAAC,EAAE,UAAU,CAAA;KACpB;IAYD,mBAAmB,IAAI,cAAc;WAIxB,IAAI,CAAC,EAChB,QAAQ,EACR,MAAM,EACN,WAAkC,EAClC,gBAAgB,EAChB,WAAW,EACX,MAAM,EACP,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD5C,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAmDxD,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAK/D,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOxE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOtE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIxC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7E,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAShE,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAM7D,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB7C,aAAa,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SafeProvider.d.ts","sourceRoot":"","sources":["../../src/SafeProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -21,9 +21,4 @@ import { SafeFeature, hasSafeFeature } from './utils/safeVersions';
|
|
|
21
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 };
|
|
22
22
|
export * from './types';
|
|
23
23
|
export default Safe;
|
|
24
|
-
declare module 'abitype' {
|
|
25
|
-
interface Register {
|
|
26
|
-
AddressType: string;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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,7 +1,9 @@
|
|
|
1
1
|
import { BlockTag } from 'viem';
|
|
2
2
|
export declare function asBlockId(blockId: number | string | undefined): {
|
|
3
|
-
blockNumber:
|
|
3
|
+
blockNumber: bigint;
|
|
4
|
+
blockTag?: undefined;
|
|
4
5
|
} | {
|
|
5
|
-
blockTag: BlockTag;
|
|
6
|
+
blockTag: BlockTag | undefined;
|
|
7
|
+
blockNumber?: undefined;
|
|
6
8
|
};
|
|
7
9
|
//# sourceMappingURL=block.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../src/utils/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../src/utils/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;;;;cAE9B,QAAQ,GAAG,SAAS;;EACnD"}
|
|
@@ -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,
|
|
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,EA2iBtC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-712/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqC,MAAM,wBAAwB,CAAA;AAyK3F,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAGhE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../../src/utils/eip-712/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqC,MAAM,wBAAwB,CAAA;AAyK3F,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAGhE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAwClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractPasskeyData.d.ts","sourceRoot":"","sources":["../../../../src/utils/passkeys/extractPasskeyData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"extractPasskeyData.d.ts","sourceRoot":"","sources":["../../../../src/utils/passkeys/extractPasskeyData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAoD1F;;;;;;;;;;GAUG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAiC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqB/F;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,iBAAiB,EAAE,UAAU,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAU/B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":"
|
|
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": "
|
|
3
|
+
"version": "8.0.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",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"format": "prettier --write \"*/**/*.{js,json,md,ts}\"",
|
|
47
47
|
"unbuild": "rimraf dist coverage .nyc_output meta-cjs.json meta-esm.json *.tsbuildinfo",
|
|
48
48
|
"prebuild": "node -p \"'export const getProtocolKitVersion = () => \\'' + require('./package.json').version.split('-')[0] + '\\''\" > src/utils/getProtocolKitVersion.ts",
|
|
49
|
-
"build": "
|
|
49
|
+
"build": "pnpm unbuild && pnpm check-safe-deployments && pnpm build:esm && pnpm build:cjs && pnpm build:types",
|
|
50
50
|
"build:esm": "esbuild ./src/index ./test-utils/index --format=esm --bundle --metafile=meta-esm.json --packages=external --outdir=dist/esm --out-extension:.js=.mjs",
|
|
51
51
|
"build:cjs": "esbuild ./src/index ./test-utils/index --format=cjs --bundle --metafile=meta-cjs.json --packages=external --outdir=dist/cjs --out-extension:.js=.cjs",
|
|
52
52
|
"build:types": "NODE_OPTIONS=--max-old-space-size=8192 tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json"
|
|
@@ -65,12 +65,14 @@
|
|
|
65
65
|
],
|
|
66
66
|
"homepage": "https://github.com/safe-global/safe-core-sdk#readme",
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@safe-global/testing-kit": "
|
|
68
|
+
"@safe-global/testing-kit": "workspace:^",
|
|
69
69
|
"@types/chai": "^4.3.20",
|
|
70
70
|
"@types/chai-as-promised": "^7.1.8",
|
|
71
71
|
"@types/mocha": "^10.0.10",
|
|
72
|
-
"@types/semver": "^7.7.
|
|
72
|
+
"@types/semver": "^7.7.1",
|
|
73
73
|
"@types/sinon": "^17.0.4",
|
|
74
|
+
"axios": "^1.16.1",
|
|
75
|
+
"cbor": "^9.0.2",
|
|
74
76
|
"chai": "^4.5.0",
|
|
75
77
|
"chai-as-promised": "^7.1.2",
|
|
76
78
|
"dotenv": "^16.4.7",
|
|
@@ -81,12 +83,12 @@
|
|
|
81
83
|
"tsconfig-paths": "^4.2.0"
|
|
82
84
|
},
|
|
83
85
|
"dependencies": {
|
|
84
|
-
"@safe-global/safe-deployments": "^1.37.
|
|
85
|
-
"@safe-global/safe-modules-deployments": "^3.0.
|
|
86
|
-
"@safe-global/types-kit": "
|
|
87
|
-
"abitype": "^1.
|
|
88
|
-
"semver": "^7.
|
|
89
|
-
"viem": "^2.
|
|
86
|
+
"@safe-global/safe-deployments": "^1.37.57",
|
|
87
|
+
"@safe-global/safe-modules-deployments": "^3.0.4",
|
|
88
|
+
"@safe-global/types-kit": "workspace:^",
|
|
89
|
+
"abitype": "^1.2.3",
|
|
90
|
+
"semver": "^7.8.0",
|
|
91
|
+
"viem": "^2.52.2"
|
|
90
92
|
},
|
|
91
93
|
"optionalDependencies": {
|
|
92
94
|
"@noble/curves": "^1.6.0",
|