@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.
@@ -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;CAiB3B,CAAA"}
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,mBAIrF;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,gBAA8C,EAC3D,SAAS,EAAE,cAA6C,EACxD,MAAM,GACP,EAAE,iBAAiB,mBAQnB"}
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]: 3,
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]: 3,
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
- const multicall = getMulticallContract({ chainId, client });
189
- const gasLeft = await multicall.read.gasLeft();
190
- return gasLeft;
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
- const gasLimit = gasLimitOverride || await getGasLimitOnChain({ chainId, client }) || maxGasLimit;
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]: 3,
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]: 3,
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
- const multicall = getMulticallContract({ chainId, client });
187
- const gasLeft = await multicall.read.gasLeft();
188
- return gasLeft;
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
- const gasLimit = gasLimitOverride || await getGasLimitOnChain({ chainId, client }) || maxGasLimit;
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()) {
@@ -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;
@@ -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,uBAgExB;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"}
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.6.4",
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": "^2.22.23",
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": "6.1.3"
19
+ "@pancakeswap/utils": "7.0.0"
20
20
  },
21
21
  "exports": {
22
22
  "./package.json": "./package.json",