declare type CachedKeyType = string | number; declare type noop = (...args: any[]) => void; declare type Service = (...args: P) => Promise; declare type Mutate = (x: R | undefined | ((data: R) => R)) => void; declare type RequestService = string | { [key: string]: any; }; declare type CombineService = RequestService | ((...args: P) => RequestService) | Service; interface FetchResult { loading: boolean; data: R | undefined; error: Error | undefined; params: P; cancel: noop; refresh: () => Promise; mutate: Mutate; run: (...args: P) => Promise; unmount: () => void; } interface BaseResult extends FetchResult { reset?: () => void; fetches: { [key in string]: FetchResult; }; } declare type BaseOptions = { refreshDeps?: ReadonlyArray; manual?: boolean; onSuccess?: (data: R, params: P) => void; onError?: (e: Error, params: P) => void; defaultLoading?: boolean; loadingDelay?: number; defaultParams?: P; pollingInterval?: number; pollingWhenHidden?: boolean; fetchKey?: (...args: P) => string; paginated?: false; loadMore?: false; refreshOnWindowFocus?: boolean; focusTimespan?: number; cacheKey?: CachedKeyType; cacheTime?: number; staleTime?: number; debounceInterval?: number; throttleInterval?: number; initialData?: R; requestMethod?: (service: any) => Promise; ready?: boolean; throwOnError?: boolean; }; declare function useRequest(service: CombineService, options?: BaseOptions): BaseResult; export { useRequest };