import { Interface } from '@ethersproject/abi';
import { BigNumber } from '@ethersproject/bignumber';
import { Contract } from '@ethersproject/contracts';
import { ListenerOptions } from './atom';
export interface Result extends ReadonlyArray<any> {
    readonly [key: string]: any;
}
declare type MethodArg = string | number | BigNumber;
declare type OptionalMethodInputs = Array<MethodArg | MethodArg[] | undefined> | undefined;
export declare const NEVER_RELOAD: ListenerOptions;
export interface CallState {
    readonly valid: boolean;
    readonly result: Result | undefined;
    readonly loading: boolean;
    readonly syncing: boolean;
    readonly error: boolean;
}
export declare function useSingleContractMultipleData(contract: Contract | null | undefined, methodName: string, callInputs: OptionalMethodInputs[], options?: ListenerOptions): CallState[];
export declare function useMultipleContractSingleData(addresses: (string | undefined)[], contractInterface: Interface, methodName: string, callInputs?: OptionalMethodInputs, options?: ListenerOptions): CallState[];
export declare function useSingleCallResult(contract: Contract | null | undefined, methodName: string, inputs?: OptionalMethodInputs, options?: ListenerOptions): CallState;
export {};
