UNPKG

@dahlia-labs/use-ethers

Version:
16 lines 960 B
import chunk from "lodash/chunk"; import MULTICALL_ABI from "./abis/multicall2.json"; import { MulticallAddress } from "./constants"; import { getContract } from "./contracts"; export const getMulticall = (provider, chain) => getContract(MulticallAddress[chain], MULTICALL_ABI, provider); export async function fetchMulticalls(multicalls, multicallContract, maxChunk = 100) { const data = await fetchCalls(multicalls.map((m) => m.call), multicallContract, maxChunk); return data.map((v, i) => { return multicalls[i].parseReturn(v); }); } export const fetchCalls = async (calls, multicallContract, maxChunk = 100) => { const callChunks = chunk(calls, maxChunk); return (await Promise.all(callChunks.map((c) => multicallContract === null || multicallContract === void 0 ? void 0 : multicallContract.callStatic.aggregate(c)))).flatMap((c) => c === null || c === void 0 ? void 0 : c.returnData); }; //# sourceMappingURL=multicall.js.map