import type { Contract, Event } from 'ethers';
import { QueryObserverResult, UseQueryOptions } from 'react-query';
import type { ContractFilterArgs, ContractFilterName } from '../../types';
export interface UseSmartContractEventsCallOptions<TContract extends Contract, TFilterName extends ContractFilterName<TContract>> {
    callArgs?: ContractFilterArgs<TContract, TFilterName>;
    enabled?: boolean;
    staleTime?: number;
    cacheTime?: number;
    refetchOnWindowFocus?: boolean;
    fromBlock?: number;
    toBlock?: number;
}
export declare function useSmartContractEvents<TContract extends Contract, TFilterName extends ContractFilterName<TContract>>(contract: TContract | undefined, filterName: TFilterName, options?: UseSmartContractEventsCallOptions<TContract, TFilterName>): QueryObserverResult<Event[]>;
export declare function makeSmartContractEventsUseQueryOptions<TContract extends Contract, TFilterName extends ContractFilterName<TContract>>(contract: TContract | undefined, filterName: TFilterName, options?: UseSmartContractEventsCallOptions<TContract, TFilterName>): UseQueryOptions<Event[]>;
export declare function makeSmartContractEventsQueryKey<TContract extends Contract, TFilterName extends ContractFilterName<TContract>>(contract: TContract | undefined, filterName: TFilterName, callArgs: Parameters<TContract['filters'][TFilterName]> | undefined, fromBlock?: number, toBlock?: number): [string, TFilterName, string | undefined, number | undefined, number | undefined, Parameters<TContract['filters'][TFilterName]> | undefined];
//# sourceMappingURL=useSmartContractEvents.d.ts.map