import type { Contract } from 'ethers';
import { QueryObserverResult, UseQueryOptions } from 'react-query';
import type { Unpacked } from '../../base/Unpacked';
import type { ContractMethodArgs, ContractMethodName, StaticContractReturnType } from '../../types';
export interface UseSmartContractReadCallOptions<TContract extends Contract, TMethodName extends ContractMethodName<TContract>, TReturnType extends Unpacked<StaticContractReturnType<TContract, TMethodName>>, TSelect = TReturnType> {
    callArgs?: ContractMethodArgs<TContract, TMethodName>;
    enabled?: boolean;
    staleTime?: number;
    keepPreviousData?: boolean;
    select?: (data: TReturnType) => TSelect;
}
export declare function useSmartContractReadCall<TContract extends Contract, TMethodName extends ContractMethodName<TContract>, TContractData extends Unpacked<StaticContractReturnType<TContract, TMethodName>>, TData = TContractData>(contract: TContract | undefined, methodName: TMethodName, options?: UseSmartContractReadCallOptions<TContract, TMethodName, TContractData, TData>): QueryObserverResult<TData>;
export declare function makeSmartContractReadCallUseQueryOptions<TContract extends Contract, TMethodName extends ContractMethodName<TContract>, TContractData extends Unpacked<StaticContractReturnType<TContract, TMethodName>>, TData = TContractData>(contract: TContract | undefined, methodName: TMethodName, options?: UseSmartContractReadCallOptions<TContract, TMethodName, TContractData, TData>): UseQueryOptions<TContractData, unknown, TData>;
export declare function makeSmartContractReadCallQueryKey<TContract extends Contract, TMethodName extends ContractMethodName<TContract>>(contractAddress: string | undefined, methodName: TMethodName, callArgs: Parameters<TContract['functions'][TMethodName]> | undefined): [
    string,
    TMethodName,
    string | undefined,
    {
        callArgs: Parameters<TContract['functions'][TMethodName]> | undefined;
    }
];
//# sourceMappingURL=useSmartContractReadCall.d.ts.map