import { AxiosRequestConfig } from 'axios';
import { Options, Result } from 'ahooks/lib/useRequest/src/types';
import { PaginatedParams, PaginatedOptionsWithFormat, BasePaginatedOptions, PaginatedResult } from './types';
export interface ApiResponseError<T> {
    code: number;
    message: string;
    config: AxiosRequestConfig;
    data: T;
}
type TypeCombineOptions<O, P> = Omit<O, 'onError'> & {
    onError?: (err: ApiResponseError<Record<string, any>>, params: P) => void;
    /**
     * 是否自动生成 cacheKey 缓存接口
     */
    autoCache?: boolean;
};
type TypeCombineResults<R> = Omit<R, 'error'> & {
    error: ApiResponseError<Record<string, any>>;
};
declare function useAxios<T, P extends any[] = any, U = any, UU extends U = any>(url: T, service?: Record<string, any> | Array<any>, options?: TypeCombineOptions<Options<UU, P>, P> & {
    formatResult: (res: any) => U;
}): TypeCombineResults<Result<U, P>>;
declare function useAxios<T, P extends any[] = any>(url: T, service?: Record<string, any> | Array<any>, options?: TypeCombineOptions<Options<any, P>, P>): TypeCombineResults<Result<any, P>>;
declare function useAxios<T, Item = any, U extends Item = any>(url: T, service: Record<string, any> | Array<any>, options: TypeCombineOptions<PaginatedOptionsWithFormat<any, Item, U>, PaginatedParams>): TypeCombineResults<PaginatedResult<Item>>;
declare function useAxios<T, Item = any, U extends Item = any>(url: T, service: Record<string, any> | Array<any>, options: TypeCombineOptions<BasePaginatedOptions<U>, PaginatedParams>): TypeCombineResults<PaginatedResult<Item>>;
export { useAxios };
