import { Contract, Interface, Overrides, Provider, Signer } from "ethers"; import { Address } from "./types"; export declare const MULTICALL_ADDRESS: Address; export declare const multicallInterface: Interface; export interface CallData { method: Parameters[0]; params?: any; } export interface MCall { address: string; interface: T; method: Parameters[0]; params?: any; } export interface KeyedCall extends MCall { key: K; } export declare function multicall>(calls: Array>, p: Signer | Provider, overrides?: Overrides): Promise; /** * Like multicall from sdk, but uses tryAggregate instead of aggregate * @param calls * @param p * @param overrides * @returns */ export declare function safeMulticall = MCall>(calls: T[], p: Signer | Provider, overrides?: Overrides): Promise>; export declare class MultiCallContract { private readonly _address; private readonly _interface; protected _multiCall: Contract; constructor(address: string, intrerface: T, provider: Provider | Signer); call>(data: Array>, overrides?: Overrides): Promise; get address(): string; get interface(): T; }