@pancakeswap/multicall 3.7.4 → 3.8.1
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/README.md +1 -1
- package/dist/constants/blockConflictTolerance.d.ts.map +1 -1
- package/dist/constants/contracts.d.ts.map +1 -1
- package/dist/constants/gasLimit.d.ts.map +1 -1
- package/dist/index.js +30 -12
- package/dist/index.mjs +31 -13
- package/dist/multicall.d.ts +11 -1
- package/dist/multicall.d.ts.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ const calls: MulticallRequestWithGas[] = [
|
|
|
31
31
|
},
|
|
32
32
|
]
|
|
33
33
|
|
|
34
|
-
const { results, blockNumber } = await multicallByGasLimit(calls, {
|
|
34
|
+
const { results, blockNumber, chunkCount, chunkSizes } = await multicallByGasLimit(calls, {
|
|
35
35
|
chainId: ChainId.BSC,
|
|
36
36
|
|
|
37
37
|
// Rpc client. Please refer to `PublicClient` from viem
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockConflictTolerance.d.ts","sourceRoot":"","sources":["../../src/constants/blockConflictTolerance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,eAAO,MAAM,gCAAgC,IAAI,CAAA;AAEjD,eAAO,MAAM,wBAAwB,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"blockConflictTolerance.d.ts","sourceRoot":"","sources":["../../src/constants/blockConflictTolerance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,eAAO,MAAM,gCAAgC,IAAI,CAAA;AAEjD,eAAO,MAAM,wBAAwB,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM;CAoBjE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/constants/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/constants/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwB,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,eAAO,MAAM,iBAAiB,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO;CAqB3D,CAAA;AAED,eAAO,MAAM,kBAAkB,+CAA+C,CAAA;AAE9E,eAAO,MAAM,oBAAoB,EAAE;KAChC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO;CAkB3B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gasLimit.d.ts","sourceRoot":"","sources":["../../src/constants/gasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,eAAO,MAAM,iBAAiB,aAAa,CAAA;AAE3C,eAAO,MAAM,0BAA0B,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"gasLimit.d.ts","sourceRoot":"","sources":["../../src/constants/gasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,eAAO,MAAM,iBAAiB,aAAa,CAAA;AAE3C,eAAO,MAAM,0BAA0B,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM;CAMnE,CAAA;AAED,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,eAAO,MAAM,2BAA2B,EAAE;KAAG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM;CAEpE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -12,15 +12,15 @@ var MULTICALL_ADDRESS = {
|
|
|
12
12
|
[chains.ChainId.BSC]: "0x39eecaE833c944ebb94942Fa44CaE46e87a8Da17",
|
|
13
13
|
[chains.ChainId.ETHEREUM]: "0xC0916D7E360c31D5F6D0c497E6a36B7B0E80e3cf",
|
|
14
14
|
[chains.ChainId.ARBITRUM_ONE]: "0xbFfE39cDD04f0183e0493c1Deb6E275c5cf84AdF",
|
|
15
|
-
[chains.ChainId.POLYGON_ZKEVM]: "0xe05b539447B17630Cb087473F6b50E5c5f73FDeb",
|
|
16
15
|
[chains.ChainId.LINEA]: "0x6E6B30d65D605DAa4CaC65eB270100Ecca36b140",
|
|
17
16
|
[chains.ChainId.BASE]: "0x3EFaAb8D7A631cfF5ccF5f149d1Bbb3B5bfda2C0",
|
|
18
17
|
[chains.ChainId.OPBNB]: "0xeF1511D29fB37cb87E33339EeC9BE13AB46E3b50",
|
|
18
|
+
[chains.ChainId.MONAD_MAINNET]: "0x3095eC7D29b588283baB3184fae4dECd54D5D811",
|
|
19
|
+
[chains.ChainId.ROBINHOOD]: chains.robinhoodChainConfig.contracts.multicall,
|
|
19
20
|
// Testnets
|
|
20
21
|
[chains.ChainId.BSC_TESTNET]: "0xeeF6ff30cF5D5b8aBA0DE16A01d17A0697a275b5",
|
|
21
22
|
[chains.ChainId.GOERLI]: "0xD55CAFAB2Ffa1139Be46bc5C0b8259c620050dFC",
|
|
22
23
|
[chains.ChainId.ARBITRUM_GOERLI]: "0xe12a5c707Fb528acbE6117b20AF1f7c20b0A8077",
|
|
23
|
-
[chains.ChainId.POLYGON_ZKEVM_TESTNET]: "0x236e713bFF45adb30e25D1c29A887aBCb0Ea7E21",
|
|
24
24
|
[chains.ChainId.ZKSYNC_TESTNET]: "0x8A23CB45E5F4d5a1b2DB673663Ea2aAedc48acff",
|
|
25
25
|
[chains.ChainId.LINEA_TESTNET]: "0x990010b6DBA3e7faa025790bC0433A9f690c65F3",
|
|
26
26
|
[chains.ChainId.BASE_TESTNET]: "0x6F7f93D929d6FBaF16c245e42846EF21aee23437",
|
|
@@ -38,13 +38,13 @@ var MULTICALL3_ADDRESSES = {
|
|
|
38
38
|
[chains.ChainId.ZKSYNC]: "0xF9cda624FBC7e059355ce98a31693d299FACd963",
|
|
39
39
|
[chains.ChainId.ARBITRUM_ONE]: MULTICALL3_ADDRESS,
|
|
40
40
|
[chains.ChainId.ARBITRUM_GOERLI]: MULTICALL3_ADDRESS,
|
|
41
|
-
[chains.ChainId.POLYGON_ZKEVM]: MULTICALL3_ADDRESS,
|
|
42
|
-
[chains.ChainId.POLYGON_ZKEVM_TESTNET]: MULTICALL3_ADDRESS,
|
|
43
41
|
[chains.ChainId.OPBNB]: MULTICALL3_ADDRESS,
|
|
44
42
|
[chains.ChainId.OPBNB_TESTNET]: MULTICALL3_ADDRESS,
|
|
45
43
|
[chains.ChainId.BASE_TESTNET]: MULTICALL3_ADDRESS,
|
|
46
44
|
[chains.ChainId.SCROLL_SEPOLIA]: MULTICALL3_ADDRESS,
|
|
45
|
+
[chains.ChainId.MONAD_MAINNET]: "0x8553AA1615549A86882151784b329B017aA7c832",
|
|
47
46
|
[chains.ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS,
|
|
47
|
+
[chains.ChainId.ROBINHOOD]: chains.robinhoodChainConfig.contracts.multicall3,
|
|
48
48
|
[chains.ChainId.SEPOLIA]: MULTICALL3_ADDRESS
|
|
49
49
|
};
|
|
50
50
|
var DEFAULT_BLOCK_CONFLICT_TOLERANCE = 0;
|
|
@@ -52,16 +52,15 @@ var BLOCK_CONFLICT_TOLERANCE = {
|
|
|
52
52
|
[chains.ChainId.BSC]: 12,
|
|
53
53
|
[chains.ChainId.ETHEREUM]: 1,
|
|
54
54
|
[chains.ChainId.ARBITRUM_ONE]: 5,
|
|
55
|
-
[chains.ChainId.POLYGON_ZKEVM]: 1,
|
|
56
55
|
[chains.ChainId.ZKSYNC]: 3,
|
|
57
56
|
[chains.ChainId.LINEA]: 3,
|
|
58
57
|
[chains.ChainId.BASE]: 3,
|
|
59
58
|
[chains.ChainId.OPBNB]: 3,
|
|
59
|
+
[chains.ChainId.MONAD_MAINNET]: 3,
|
|
60
60
|
// Testnets
|
|
61
61
|
[chains.ChainId.BSC_TESTNET]: 12,
|
|
62
62
|
[chains.ChainId.GOERLI]: 1,
|
|
63
63
|
[chains.ChainId.ARBITRUM_GOERLI]: 5,
|
|
64
|
-
[chains.ChainId.POLYGON_ZKEVM_TESTNET]: 1,
|
|
65
64
|
[chains.ChainId.ZKSYNC_TESTNET]: 3,
|
|
66
65
|
[chains.ChainId.LINEA_TESTNET]: 3,
|
|
67
66
|
[chains.ChainId.OPBNB_TESTNET]: 3,
|
|
@@ -73,15 +72,13 @@ var DEFAULT_GAS_LIMIT = 150000000n;
|
|
|
73
72
|
var DEFAULT_GAS_LIMIT_BY_CHAIN = {
|
|
74
73
|
[chains.ChainId.BSC]: 100000000n,
|
|
75
74
|
[chains.ChainId.ZKSYNC]: 500000000n,
|
|
76
|
-
[chains.ChainId.POLYGON_ZKEVM]: 1500000n,
|
|
77
75
|
[chains.ChainId.BASE]: 60000000n,
|
|
78
76
|
[chains.ChainId.OPBNB]: 100000000n,
|
|
79
77
|
[chains.ChainId.OPBNB_TESTNET]: 100000000n
|
|
80
78
|
};
|
|
81
79
|
var DEFAULT_GAS_BUFFER = 3000000n;
|
|
82
80
|
var DEFAULT_GAS_BUFFER_BY_CHAIN = {
|
|
83
|
-
[chains.ChainId.BSC]: DEFAULT_GAS_BUFFER
|
|
84
|
-
[chains.ChainId.POLYGON_ZKEVM]: 0n
|
|
81
|
+
[chains.ChainId.BSC]: DEFAULT_GAS_BUFFER
|
|
85
82
|
};
|
|
86
83
|
|
|
87
84
|
// src/abis/IMulticall.ts
|
|
@@ -420,13 +417,16 @@ async function multicallByGasLimit(calls, {
|
|
|
420
417
|
blockConflictTolerance,
|
|
421
418
|
...rest
|
|
422
419
|
}) {
|
|
420
|
+
const startTime = performance.now();
|
|
423
421
|
const gasLimit = await getGasLimit({
|
|
424
422
|
chainId,
|
|
425
423
|
gasBuffer,
|
|
426
424
|
client,
|
|
427
425
|
...rest
|
|
428
426
|
});
|
|
429
|
-
const
|
|
427
|
+
const chunks = splitCallsIntoChunks(calls, gasLimit);
|
|
428
|
+
const chunkSizes = chunks.map((chunk) => chunk.length);
|
|
429
|
+
const callResult = await callByChunks(chunks, {
|
|
430
430
|
gasBuffer,
|
|
431
431
|
client,
|
|
432
432
|
chainId,
|
|
@@ -435,8 +435,25 @@ async function multicallByGasLimit(calls, {
|
|
|
435
435
|
account,
|
|
436
436
|
blockConflictTolerance
|
|
437
437
|
});
|
|
438
|
+
const resultWithChunks = (result) => {
|
|
439
|
+
const endTime = performance.now();
|
|
440
|
+
return {
|
|
441
|
+
...result,
|
|
442
|
+
chunkCount: chunkSizes.length,
|
|
443
|
+
chunkSizes,
|
|
444
|
+
totalGasUsed: result.results.reduce((acc, { gasUsed }) => acc + gasUsed, 0n),
|
|
445
|
+
maxSingleCallGasUsage: result.results.reduce((max, { gasUsed }) => gasUsed > max ? gasUsed : max, 0n),
|
|
446
|
+
minSingleCallGasUsage: result.results.reduce(
|
|
447
|
+
(min, { gasUsed }) => gasUsed < min ? gasUsed : min,
|
|
448
|
+
BigInt(Number.MAX_SAFE_INTEGER)
|
|
449
|
+
),
|
|
450
|
+
avgGasUsagePerCall: result.results.length ? result.results.reduce((acc, { gasUsed }) => acc + gasUsed, 0n) / BigInt(result.results.length) : 0n,
|
|
451
|
+
gasLimit,
|
|
452
|
+
timeUsage: endTime - startTime
|
|
453
|
+
};
|
|
454
|
+
};
|
|
438
455
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
439
|
-
return callResult;
|
|
456
|
+
return resultWithChunks(callResult);
|
|
440
457
|
}
|
|
441
458
|
const { gasLimitMultiplier: retryGasLimitMultiplier, maxRetry = 2 } = retryFailedCallsWithGreaterLimit;
|
|
442
459
|
let retry = 0;
|
|
@@ -481,7 +498,8 @@ async function multicallByGasLimit(calls, {
|
|
|
481
498
|
blockNumber: retryResult.blockNumber
|
|
482
499
|
});
|
|
483
500
|
}
|
|
484
|
-
|
|
501
|
+
const finalResult = await retryFailedCalls(callResult);
|
|
502
|
+
return resultWithChunks(finalResult);
|
|
485
503
|
}
|
|
486
504
|
function formatCallReturn([blockNumber, results, successIndex]) {
|
|
487
505
|
const lastSuccessIndex = Number(successIndex);
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChainId } from '@pancakeswap/chains';
|
|
1
|
+
import { ChainId, robinhoodChainConfig } from '@pancakeswap/chains';
|
|
2
2
|
import { getContract, BaseError, TimeoutError } from 'viem';
|
|
3
3
|
|
|
4
4
|
// ../utils/toBigInt.ts
|
|
@@ -10,15 +10,15 @@ var MULTICALL_ADDRESS = {
|
|
|
10
10
|
[ChainId.BSC]: "0x39eecaE833c944ebb94942Fa44CaE46e87a8Da17",
|
|
11
11
|
[ChainId.ETHEREUM]: "0xC0916D7E360c31D5F6D0c497E6a36B7B0E80e3cf",
|
|
12
12
|
[ChainId.ARBITRUM_ONE]: "0xbFfE39cDD04f0183e0493c1Deb6E275c5cf84AdF",
|
|
13
|
-
[ChainId.POLYGON_ZKEVM]: "0xe05b539447B17630Cb087473F6b50E5c5f73FDeb",
|
|
14
13
|
[ChainId.LINEA]: "0x6E6B30d65D605DAa4CaC65eB270100Ecca36b140",
|
|
15
14
|
[ChainId.BASE]: "0x3EFaAb8D7A631cfF5ccF5f149d1Bbb3B5bfda2C0",
|
|
16
15
|
[ChainId.OPBNB]: "0xeF1511D29fB37cb87E33339EeC9BE13AB46E3b50",
|
|
16
|
+
[ChainId.MONAD_MAINNET]: "0x3095eC7D29b588283baB3184fae4dECd54D5D811",
|
|
17
|
+
[ChainId.ROBINHOOD]: robinhoodChainConfig.contracts.multicall,
|
|
17
18
|
// Testnets
|
|
18
19
|
[ChainId.BSC_TESTNET]: "0xeeF6ff30cF5D5b8aBA0DE16A01d17A0697a275b5",
|
|
19
20
|
[ChainId.GOERLI]: "0xD55CAFAB2Ffa1139Be46bc5C0b8259c620050dFC",
|
|
20
21
|
[ChainId.ARBITRUM_GOERLI]: "0xe12a5c707Fb528acbE6117b20AF1f7c20b0A8077",
|
|
21
|
-
[ChainId.POLYGON_ZKEVM_TESTNET]: "0x236e713bFF45adb30e25D1c29A887aBCb0Ea7E21",
|
|
22
22
|
[ChainId.ZKSYNC_TESTNET]: "0x8A23CB45E5F4d5a1b2DB673663Ea2aAedc48acff",
|
|
23
23
|
[ChainId.LINEA_TESTNET]: "0x990010b6DBA3e7faa025790bC0433A9f690c65F3",
|
|
24
24
|
[ChainId.BASE_TESTNET]: "0x6F7f93D929d6FBaF16c245e42846EF21aee23437",
|
|
@@ -36,13 +36,13 @@ var MULTICALL3_ADDRESSES = {
|
|
|
36
36
|
[ChainId.ZKSYNC]: "0xF9cda624FBC7e059355ce98a31693d299FACd963",
|
|
37
37
|
[ChainId.ARBITRUM_ONE]: MULTICALL3_ADDRESS,
|
|
38
38
|
[ChainId.ARBITRUM_GOERLI]: MULTICALL3_ADDRESS,
|
|
39
|
-
[ChainId.POLYGON_ZKEVM]: MULTICALL3_ADDRESS,
|
|
40
|
-
[ChainId.POLYGON_ZKEVM_TESTNET]: MULTICALL3_ADDRESS,
|
|
41
39
|
[ChainId.OPBNB]: MULTICALL3_ADDRESS,
|
|
42
40
|
[ChainId.OPBNB_TESTNET]: MULTICALL3_ADDRESS,
|
|
43
41
|
[ChainId.BASE_TESTNET]: MULTICALL3_ADDRESS,
|
|
44
42
|
[ChainId.SCROLL_SEPOLIA]: MULTICALL3_ADDRESS,
|
|
43
|
+
[ChainId.MONAD_MAINNET]: "0x8553AA1615549A86882151784b329B017aA7c832",
|
|
45
44
|
[ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS,
|
|
45
|
+
[ChainId.ROBINHOOD]: robinhoodChainConfig.contracts.multicall3,
|
|
46
46
|
[ChainId.SEPOLIA]: MULTICALL3_ADDRESS
|
|
47
47
|
};
|
|
48
48
|
var DEFAULT_BLOCK_CONFLICT_TOLERANCE = 0;
|
|
@@ -50,16 +50,15 @@ var BLOCK_CONFLICT_TOLERANCE = {
|
|
|
50
50
|
[ChainId.BSC]: 12,
|
|
51
51
|
[ChainId.ETHEREUM]: 1,
|
|
52
52
|
[ChainId.ARBITRUM_ONE]: 5,
|
|
53
|
-
[ChainId.POLYGON_ZKEVM]: 1,
|
|
54
53
|
[ChainId.ZKSYNC]: 3,
|
|
55
54
|
[ChainId.LINEA]: 3,
|
|
56
55
|
[ChainId.BASE]: 3,
|
|
57
56
|
[ChainId.OPBNB]: 3,
|
|
57
|
+
[ChainId.MONAD_MAINNET]: 3,
|
|
58
58
|
// Testnets
|
|
59
59
|
[ChainId.BSC_TESTNET]: 12,
|
|
60
60
|
[ChainId.GOERLI]: 1,
|
|
61
61
|
[ChainId.ARBITRUM_GOERLI]: 5,
|
|
62
|
-
[ChainId.POLYGON_ZKEVM_TESTNET]: 1,
|
|
63
62
|
[ChainId.ZKSYNC_TESTNET]: 3,
|
|
64
63
|
[ChainId.LINEA_TESTNET]: 3,
|
|
65
64
|
[ChainId.OPBNB_TESTNET]: 3,
|
|
@@ -71,15 +70,13 @@ var DEFAULT_GAS_LIMIT = 150000000n;
|
|
|
71
70
|
var DEFAULT_GAS_LIMIT_BY_CHAIN = {
|
|
72
71
|
[ChainId.BSC]: 100000000n,
|
|
73
72
|
[ChainId.ZKSYNC]: 500000000n,
|
|
74
|
-
[ChainId.POLYGON_ZKEVM]: 1500000n,
|
|
75
73
|
[ChainId.BASE]: 60000000n,
|
|
76
74
|
[ChainId.OPBNB]: 100000000n,
|
|
77
75
|
[ChainId.OPBNB_TESTNET]: 100000000n
|
|
78
76
|
};
|
|
79
77
|
var DEFAULT_GAS_BUFFER = 3000000n;
|
|
80
78
|
var DEFAULT_GAS_BUFFER_BY_CHAIN = {
|
|
81
|
-
[ChainId.BSC]: DEFAULT_GAS_BUFFER
|
|
82
|
-
[ChainId.POLYGON_ZKEVM]: 0n
|
|
79
|
+
[ChainId.BSC]: DEFAULT_GAS_BUFFER
|
|
83
80
|
};
|
|
84
81
|
|
|
85
82
|
// src/abis/IMulticall.ts
|
|
@@ -418,13 +415,16 @@ async function multicallByGasLimit(calls, {
|
|
|
418
415
|
blockConflictTolerance,
|
|
419
416
|
...rest
|
|
420
417
|
}) {
|
|
418
|
+
const startTime = performance.now();
|
|
421
419
|
const gasLimit = await getGasLimit({
|
|
422
420
|
chainId,
|
|
423
421
|
gasBuffer,
|
|
424
422
|
client,
|
|
425
423
|
...rest
|
|
426
424
|
});
|
|
427
|
-
const
|
|
425
|
+
const chunks = splitCallsIntoChunks(calls, gasLimit);
|
|
426
|
+
const chunkSizes = chunks.map((chunk) => chunk.length);
|
|
427
|
+
const callResult = await callByChunks(chunks, {
|
|
428
428
|
gasBuffer,
|
|
429
429
|
client,
|
|
430
430
|
chainId,
|
|
@@ -433,8 +433,25 @@ async function multicallByGasLimit(calls, {
|
|
|
433
433
|
account,
|
|
434
434
|
blockConflictTolerance
|
|
435
435
|
});
|
|
436
|
+
const resultWithChunks = (result) => {
|
|
437
|
+
const endTime = performance.now();
|
|
438
|
+
return {
|
|
439
|
+
...result,
|
|
440
|
+
chunkCount: chunkSizes.length,
|
|
441
|
+
chunkSizes,
|
|
442
|
+
totalGasUsed: result.results.reduce((acc, { gasUsed }) => acc + gasUsed, 0n),
|
|
443
|
+
maxSingleCallGasUsage: result.results.reduce((max, { gasUsed }) => gasUsed > max ? gasUsed : max, 0n),
|
|
444
|
+
minSingleCallGasUsage: result.results.reduce(
|
|
445
|
+
(min, { gasUsed }) => gasUsed < min ? gasUsed : min,
|
|
446
|
+
BigInt(Number.MAX_SAFE_INTEGER)
|
|
447
|
+
),
|
|
448
|
+
avgGasUsagePerCall: result.results.length ? result.results.reduce((acc, { gasUsed }) => acc + gasUsed, 0n) / BigInt(result.results.length) : 0n,
|
|
449
|
+
gasLimit,
|
|
450
|
+
timeUsage: endTime - startTime
|
|
451
|
+
};
|
|
452
|
+
};
|
|
436
453
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
437
|
-
return callResult;
|
|
454
|
+
return resultWithChunks(callResult);
|
|
438
455
|
}
|
|
439
456
|
const { gasLimitMultiplier: retryGasLimitMultiplier, maxRetry = 2 } = retryFailedCallsWithGreaterLimit;
|
|
440
457
|
let retry = 0;
|
|
@@ -479,7 +496,8 @@ async function multicallByGasLimit(calls, {
|
|
|
479
496
|
blockNumber: retryResult.blockNumber
|
|
480
497
|
});
|
|
481
498
|
}
|
|
482
|
-
|
|
499
|
+
const finalResult = await retryFailedCalls(callResult);
|
|
500
|
+
return resultWithChunks(finalResult);
|
|
483
501
|
}
|
|
484
502
|
function formatCallReturn([blockNumber, results, successIndex]) {
|
|
485
503
|
const lastSuccessIndex = Number(successIndex);
|
package/dist/multicall.d.ts
CHANGED
|
@@ -9,7 +9,17 @@ export type CallByGasLimitParams = AbortControl & GetGasLimitParams & {
|
|
|
9
9
|
maxRetry?: number;
|
|
10
10
|
} | undefined;
|
|
11
11
|
};
|
|
12
|
-
export
|
|
12
|
+
export type MulticallByGasLimitResult = CallResult & {
|
|
13
|
+
chunkCount: number;
|
|
14
|
+
chunkSizes: number[];
|
|
15
|
+
totalGasUsed: bigint;
|
|
16
|
+
gasLimit: bigint;
|
|
17
|
+
maxSingleCallGasUsage: bigint;
|
|
18
|
+
minSingleCallGasUsage: bigint;
|
|
19
|
+
avgGasUsagePerCall: bigint;
|
|
20
|
+
timeUsage: number;
|
|
21
|
+
};
|
|
22
|
+
export declare function multicallByGasLimit(calls: MulticallRequestWithGas[], { chainId, gasBuffer, client, dropUnexecutedCalls, signal, retryFailedCallsWithGreaterLimit, account, blockConflictTolerance, ...rest }: CallByGasLimitParams): Promise<MulticallByGasLimitResult>;
|
|
13
23
|
export type SingleCallResult = {
|
|
14
24
|
result: string;
|
|
15
25
|
gasUsed: bigint;
|
package/dist/multicall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,iCAAiC,CAAA;AAK1F,OAAO,EAAE,iBAAiB,EAAoC,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAC7C,iBAAiB,GAAG;IAIlB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAG/B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAG7B,gCAAgC,CAAC,EAC7B;QACE,kBAAkB,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACD,SAAS,CAAA;CACd,CAAA;AAEH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,uBAAuB,EAAE,EAChC,EACE,OAAO,EACP,SAAwC,EACxC,MAAM,EACN,mBAAmB,EACnB,MAAM,EACN,gCAAgC,EAChC,OAAO,EACP,sBAAsB,EACtB,GAAG,IAAI,EACR,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../src/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,iCAAiC,CAAA;AAK1F,OAAO,EAAE,iBAAiB,EAAoC,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAC7C,iBAAiB,GAAG;IAIlB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAG/B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAG7B,gCAAgC,CAAC,EAC7B;QACE,kBAAkB,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACD,SAAS,CAAA;CACd,CAAA;AAEH,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,uBAAuB,EAAE,EAChC,EACE,OAAO,EACP,SAAwC,EACxC,MAAM,EACN,mBAAmB,EACnB,MAAM,EACN,gCAAgC,EAChC,OAAO,EACP,sBAAsB,EACtB,GAAG,IAAI,EACR,EAAE,oBAAoB,GACtB,OAAO,CAAC,yBAAyB,CAAC,CA4FpC;AAOD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAE3B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IACzC,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pancakeswap/multicall",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"module": "dist/index.mjs",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"viem": "2.
|
|
13
|
-
"@pancakeswap/chains": "0.
|
|
14
|
-
"@pancakeswap/sdk": "5.
|
|
12
|
+
"viem": "2.37.13",
|
|
13
|
+
"@pancakeswap/chains": "0.9.0",
|
|
14
|
+
"@pancakeswap/sdk": "5.9.1"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"tsup": "^6.7.0",
|
|
18
18
|
"@pancakeswap/tsconfig": "0.0.0",
|
|
19
|
-
"@pancakeswap/utils": "8.0.
|
|
19
|
+
"@pancakeswap/utils": "8.0.3"
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
"./package.json": "./package.json",
|