import { UseGetOptions } from "./useGet";
import { UsePostOptions } from "./usePost";
import { UsePutOptions } from "./usePut";
import { UseDeleteOptions } from "./useDelete";
import { GetOptions } from "./get";
import { PostOptions } from "./post";
import { PutOptions } from "./put";
export type CreateFetchHooksOptions = {
    accessTokenLocalStorageKey?: string;
    callRefreshToken?: () => {
        on: number[];
        body: Record<string, string>;
        endpoint: string;
        saveAccessTokenFromResponse?: (res?: any) => void;
    };
    setHeaders?: () => Record<string, string>;
    onResponse?: (url: string, endpoint: string, responseCode: number | string | undefined) => void;
};
export declare function createFetchHooks(baseApiUrl: string, baseOptions?: CreateFetchHooksOptions): {
    FetchCacheProvider: ({ children }: any) => import("react/jsx-runtime").JSX.Element;
    useGet: <T>(url: string, options?: UseGetOptions<T>) => {
        data: T | undefined;
        error: import("./types/FetchError").FetchError | undefined;
        loading: boolean;
        reload: () => void;
    };
    usePost: <PostDataType, ResponseType>(url: string, options?: UsePostOptions<ResponseType>) => {
        error: import("./types/FetchError").FetchError | undefined;
        loading: boolean;
        postData: (dataToPost: PostDataType, id?: number | string) => Promise<void>;
    };
    usePut: <PutDataType, ResponseType>(url: string, options?: UsePutOptions<ResponseType>) => {
        error: import("./types/FetchError").FetchError | undefined;
        loading: boolean;
        putData: (dataToPut: PutDataType, id?: number | string) => Promise<void>;
    };
    useDelete: <ResponseType>(url: string, options?: UseDeleteOptions<ResponseType>) => {
        error: import("./types/FetchError").FetchError | undefined;
        loading: boolean;
        deleteData: (id?: number | string) => Promise<void>;
    };
    httpClient: {
        get: <ResponseType>(url: string, options?: GetOptions<ResponseType>) => Promise<void>;
        post: <PostDataType, ResponseType>(url: string, postData: PostDataType, options?: PostOptions<ResponseType>) => Promise<any>;
        put: <PutDataType, ResponseType>(url: string, dataToPut: PutDataType, options?: PutOptions<ResponseType>) => Promise<any>;
        del: <ResponseType>(url: string, options?: PutOptions<ResponseType>) => Promise<any>;
    };
};
