import { BigIntish } from '../utils/numerics';
import { PayableOverrides } from '../common/types';
import { Interface } from 'ethers';
import { Multicall } from '../abis/types';
import { TradeAction } from '../common/types';
export interface MultiCall {
    contractAddress: string;
    interface: Interface;
    methodName: string;
    methodParameters: any[];
}
export interface MulticallService {
    execute(calls: MultiCall[], blockHeight?: number): Promise<unknown[][]>;
}
export declare class DefaultMulticallService implements MulticallService {
    private readonly multicallContract;
    constructor(multicallContract: Multicall);
    execute(calls: MultiCall[], blockHeight?: number): Promise<unknown[][]>;
}
export declare const multicall: (calls: MultiCall[], multicallContract: Multicall, blockHeight?: number) => Promise<unknown[][]>;
export declare const isETHAddress: (address: string) => boolean;
export declare const buildTradeOverrides: (sourceToken: string, tradeActions: TradeAction[], byTarget: boolean, maxInput: BigIntish, overrides?: PayableOverrides) => PayableOverrides;
//# sourceMappingURL=utils.d.ts.map