@pancakeswap/multicall 3.6.4 → 3.7.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/constants/contracts.d.ts.map +1 -1
- package/dist/getGasLimit.d.ts.map +1 -1
- package/dist/index.js +29 -9
- package/dist/index.mjs +29 -9
- package/dist/multicall.d.ts +1 -1
- package/dist/multicall.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/constants/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,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;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/constants/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,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":"getGasLimit.d.ts","sourceRoot":"","sources":["../src/getGasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAUnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IAGrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IAGpB,WAAW,CAAC,EAAE,SAAS,CAAA;IAEvB,SAAS,CAAC,EAAE,SAAS,CAAA;IAGrB,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CACxB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGpD;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAA;AAEpF,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"getGasLimit.d.ts","sourceRoot":"","sources":["../src/getGasLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAUnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,YAAY,CAAA;IAGrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IAGpB,WAAW,CAAC,EAAE,SAAS,CAAA;IAEvB,SAAS,CAAC,EAAE,SAAS,CAAA;IAGrB,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CACxB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,UAGpD;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAA;AAEpF,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,wBAAwB,mBAYrF;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,gBAA8C,EAC3D,SAAS,EAAE,cAA6C,EACxD,MAAM,GACP,EAAE,iBAAiB,mBAenB"}
|
package/dist/index.js
CHANGED
|
@@ -44,11 +44,12 @@ var MULTICALL3_ADDRESSES = {
|
|
|
44
44
|
[chains.ChainId.OPBNB_TESTNET]: MULTICALL3_ADDRESS,
|
|
45
45
|
[chains.ChainId.BASE_TESTNET]: MULTICALL3_ADDRESS,
|
|
46
46
|
[chains.ChainId.SCROLL_SEPOLIA]: MULTICALL3_ADDRESS,
|
|
47
|
-
[chains.ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS
|
|
47
|
+
[chains.ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS,
|
|
48
|
+
[chains.ChainId.SEPOLIA]: MULTICALL3_ADDRESS
|
|
48
49
|
};
|
|
49
50
|
var DEFAULT_BLOCK_CONFLICT_TOLERANCE = 0;
|
|
50
51
|
var BLOCK_CONFLICT_TOLERANCE = {
|
|
51
|
-
[chains.ChainId.BSC]:
|
|
52
|
+
[chains.ChainId.BSC]: 12,
|
|
52
53
|
[chains.ChainId.ETHEREUM]: 1,
|
|
53
54
|
[chains.ChainId.ARBITRUM_ONE]: 5,
|
|
54
55
|
[chains.ChainId.POLYGON_ZKEVM]: 1,
|
|
@@ -57,7 +58,7 @@ var BLOCK_CONFLICT_TOLERANCE = {
|
|
|
57
58
|
[chains.ChainId.BASE]: 3,
|
|
58
59
|
[chains.ChainId.OPBNB]: 3,
|
|
59
60
|
// Testnets
|
|
60
|
-
[chains.ChainId.BSC_TESTNET]:
|
|
61
|
+
[chains.ChainId.BSC_TESTNET]: 12,
|
|
61
62
|
[chains.ChainId.GOERLI]: 1,
|
|
62
63
|
[chains.ChainId.ARBITRUM_GOERLI]: 5,
|
|
63
64
|
[chains.ChainId.POLYGON_ZKEVM_TESTNET]: 1,
|
|
@@ -185,9 +186,17 @@ function getDefaultGasBuffer(chainId) {
|
|
|
185
186
|
return gasBufferOnChain !== void 0 ? gasBufferOnChain : DEFAULT_GAS_BUFFER;
|
|
186
187
|
}
|
|
187
188
|
async function getGasLimitOnChain({ chainId, client }) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
try {
|
|
190
|
+
if (!chainId || !client) {
|
|
191
|
+
return BigInt(getDefaultGasLimit(chainId));
|
|
192
|
+
}
|
|
193
|
+
const multicall = getMulticallContract({ chainId, client });
|
|
194
|
+
const gasLeft = await multicall.read.gasLeft();
|
|
195
|
+
return gasLeft;
|
|
196
|
+
} catch (error) {
|
|
197
|
+
console.warn("Failed to get gas limit from chain, using default:", error);
|
|
198
|
+
return BigInt(getDefaultGasLimit(chainId));
|
|
199
|
+
}
|
|
191
200
|
}
|
|
192
201
|
async function getGasLimit({
|
|
193
202
|
chainId,
|
|
@@ -199,7 +208,14 @@ async function getGasLimit({
|
|
|
199
208
|
const gasLimitOverride = gasLimitInput && toBigInt(gasLimitInput);
|
|
200
209
|
const maxGasLimit = toBigInt(maxGasLimitInput);
|
|
201
210
|
const gasBuffer = toBigInt(gasBufferInput);
|
|
202
|
-
|
|
211
|
+
let onChainGasLimit;
|
|
212
|
+
try {
|
|
213
|
+
onChainGasLimit = await getGasLimitOnChain({ chainId, client });
|
|
214
|
+
} catch (error) {
|
|
215
|
+
console.warn("Failed to fetch gas limit on chain:", error);
|
|
216
|
+
onChainGasLimit = void 0;
|
|
217
|
+
}
|
|
218
|
+
const gasLimit = gasLimitOverride || onChainGasLimit || maxGasLimit;
|
|
203
219
|
const minGasLimit = gasLimit < maxGasLimit ? gasLimit : maxGasLimit;
|
|
204
220
|
return minGasLimit - gasBuffer;
|
|
205
221
|
}
|
|
@@ -401,6 +417,7 @@ async function multicallByGasLimit(calls, {
|
|
|
401
417
|
signal,
|
|
402
418
|
retryFailedCallsWithGreaterLimit,
|
|
403
419
|
account,
|
|
420
|
+
blockConflictTolerance,
|
|
404
421
|
...rest
|
|
405
422
|
}) {
|
|
406
423
|
const gasLimit = await getGasLimit({
|
|
@@ -415,7 +432,8 @@ async function multicallByGasLimit(calls, {
|
|
|
415
432
|
chainId,
|
|
416
433
|
dropUnexecutedCalls,
|
|
417
434
|
signal,
|
|
418
|
-
account
|
|
435
|
+
account,
|
|
436
|
+
blockConflictTolerance
|
|
419
437
|
});
|
|
420
438
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
421
439
|
return callResult;
|
|
@@ -450,7 +468,9 @@ async function multicallByGasLimit(calls, {
|
|
|
450
468
|
client,
|
|
451
469
|
chainId,
|
|
452
470
|
dropUnexecutedCalls,
|
|
453
|
-
signal
|
|
471
|
+
signal,
|
|
472
|
+
account,
|
|
473
|
+
blockConflictTolerance
|
|
454
474
|
});
|
|
455
475
|
const resultsAfterRetry = [...result.results];
|
|
456
476
|
for (const [retryIndex, originalIndex] of failedCallIndexes.entries()) {
|
package/dist/index.mjs
CHANGED
|
@@ -42,11 +42,12 @@ var MULTICALL3_ADDRESSES = {
|
|
|
42
42
|
[ChainId.OPBNB_TESTNET]: MULTICALL3_ADDRESS,
|
|
43
43
|
[ChainId.BASE_TESTNET]: MULTICALL3_ADDRESS,
|
|
44
44
|
[ChainId.SCROLL_SEPOLIA]: MULTICALL3_ADDRESS,
|
|
45
|
-
[ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS
|
|
45
|
+
[ChainId.MONAD_TESTNET]: MULTICALL3_ADDRESS,
|
|
46
|
+
[ChainId.SEPOLIA]: MULTICALL3_ADDRESS
|
|
46
47
|
};
|
|
47
48
|
var DEFAULT_BLOCK_CONFLICT_TOLERANCE = 0;
|
|
48
49
|
var BLOCK_CONFLICT_TOLERANCE = {
|
|
49
|
-
[ChainId.BSC]:
|
|
50
|
+
[ChainId.BSC]: 12,
|
|
50
51
|
[ChainId.ETHEREUM]: 1,
|
|
51
52
|
[ChainId.ARBITRUM_ONE]: 5,
|
|
52
53
|
[ChainId.POLYGON_ZKEVM]: 1,
|
|
@@ -55,7 +56,7 @@ var BLOCK_CONFLICT_TOLERANCE = {
|
|
|
55
56
|
[ChainId.BASE]: 3,
|
|
56
57
|
[ChainId.OPBNB]: 3,
|
|
57
58
|
// Testnets
|
|
58
|
-
[ChainId.BSC_TESTNET]:
|
|
59
|
+
[ChainId.BSC_TESTNET]: 12,
|
|
59
60
|
[ChainId.GOERLI]: 1,
|
|
60
61
|
[ChainId.ARBITRUM_GOERLI]: 5,
|
|
61
62
|
[ChainId.POLYGON_ZKEVM_TESTNET]: 1,
|
|
@@ -183,9 +184,17 @@ function getDefaultGasBuffer(chainId) {
|
|
|
183
184
|
return gasBufferOnChain !== void 0 ? gasBufferOnChain : DEFAULT_GAS_BUFFER;
|
|
184
185
|
}
|
|
185
186
|
async function getGasLimitOnChain({ chainId, client }) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
try {
|
|
188
|
+
if (!chainId || !client) {
|
|
189
|
+
return BigInt(getDefaultGasLimit(chainId));
|
|
190
|
+
}
|
|
191
|
+
const multicall = getMulticallContract({ chainId, client });
|
|
192
|
+
const gasLeft = await multicall.read.gasLeft();
|
|
193
|
+
return gasLeft;
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.warn("Failed to get gas limit from chain, using default:", error);
|
|
196
|
+
return BigInt(getDefaultGasLimit(chainId));
|
|
197
|
+
}
|
|
189
198
|
}
|
|
190
199
|
async function getGasLimit({
|
|
191
200
|
chainId,
|
|
@@ -197,7 +206,14 @@ async function getGasLimit({
|
|
|
197
206
|
const gasLimitOverride = gasLimitInput && toBigInt(gasLimitInput);
|
|
198
207
|
const maxGasLimit = toBigInt(maxGasLimitInput);
|
|
199
208
|
const gasBuffer = toBigInt(gasBufferInput);
|
|
200
|
-
|
|
209
|
+
let onChainGasLimit;
|
|
210
|
+
try {
|
|
211
|
+
onChainGasLimit = await getGasLimitOnChain({ chainId, client });
|
|
212
|
+
} catch (error) {
|
|
213
|
+
console.warn("Failed to fetch gas limit on chain:", error);
|
|
214
|
+
onChainGasLimit = void 0;
|
|
215
|
+
}
|
|
216
|
+
const gasLimit = gasLimitOverride || onChainGasLimit || maxGasLimit;
|
|
201
217
|
const minGasLimit = gasLimit < maxGasLimit ? gasLimit : maxGasLimit;
|
|
202
218
|
return minGasLimit - gasBuffer;
|
|
203
219
|
}
|
|
@@ -399,6 +415,7 @@ async function multicallByGasLimit(calls, {
|
|
|
399
415
|
signal,
|
|
400
416
|
retryFailedCallsWithGreaterLimit,
|
|
401
417
|
account,
|
|
418
|
+
blockConflictTolerance,
|
|
402
419
|
...rest
|
|
403
420
|
}) {
|
|
404
421
|
const gasLimit = await getGasLimit({
|
|
@@ -413,7 +430,8 @@ async function multicallByGasLimit(calls, {
|
|
|
413
430
|
chainId,
|
|
414
431
|
dropUnexecutedCalls,
|
|
415
432
|
signal,
|
|
416
|
-
account
|
|
433
|
+
account,
|
|
434
|
+
blockConflictTolerance
|
|
417
435
|
});
|
|
418
436
|
if (!retryFailedCallsWithGreaterLimit) {
|
|
419
437
|
return callResult;
|
|
@@ -448,7 +466,9 @@ async function multicallByGasLimit(calls, {
|
|
|
448
466
|
client,
|
|
449
467
|
chainId,
|
|
450
468
|
dropUnexecutedCalls,
|
|
451
|
-
signal
|
|
469
|
+
signal,
|
|
470
|
+
account,
|
|
471
|
+
blockConflictTolerance
|
|
452
472
|
});
|
|
453
473
|
const resultsAfterRetry = [...result.results];
|
|
454
474
|
for (const [retryIndex, originalIndex] of failedCallIndexes.entries()) {
|
package/dist/multicall.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type CallByGasLimitParams = AbortControl & GetGasLimitParams & {
|
|
|
9
9
|
maxRetry?: number;
|
|
10
10
|
} | undefined;
|
|
11
11
|
};
|
|
12
|
-
export declare function multicallByGasLimit(calls: MulticallRequestWithGas[], { chainId, gasBuffer, client, dropUnexecutedCalls, signal, retryFailedCallsWithGreaterLimit, account, ...rest }: CallByGasLimitParams): Promise<CallResult>;
|
|
12
|
+
export declare function multicallByGasLimit(calls: MulticallRequestWithGas[], { chainId, gasBuffer, client, dropUnexecutedCalls, signal, retryFailedCallsWithGreaterLimit, account, blockConflictTolerance, ...rest }: CallByGasLimitParams): Promise<CallResult>;
|
|
13
13
|
export type SingleCallResult = {
|
|
14
14
|
result: string;
|
|
15
15
|
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,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,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,uBAmExB;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.7.0",
|
|
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": "
|
|
12
|
+
"viem": "2.31.3",
|
|
13
13
|
"@pancakeswap/chains": "0.5.2",
|
|
14
14
|
"@pancakeswap/sdk": "5.8.14"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"tsup": "^6.7.0",
|
|
18
18
|
"@pancakeswap/tsconfig": "0.0.0",
|
|
19
|
-
"@pancakeswap/utils": "
|
|
19
|
+
"@pancakeswap/utils": "7.0.0"
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
"./package.json": "./package.json",
|