declare const defaultFetcher: (url: string) => Promise<any>;
type QueryShape = {
    baseURI: string;
    baseInit: RequestInit;
    fetcher: typeof defaultFetcher;
    cacheTimeout: number;
    setup: (options: Omit<QueryOptions, 'setup'>) => void;
    bagHit: Record<string, number>;
    onError?: (query: StateQuery<any>, error: any) => void;
    onSuccess?: (query: StateQuery<any>) => void;
    loadingSlowTimeout?: number;
    onLoadingSlow?: (query: StateQuery<any>) => void;
    retryCount?: number;
    retryDelay?: number;
    shouldRetryWhenError?: boolean;
    clear: (endpoint?: string) => void;
    clearGroup: (group?: string) => void;
    group: (group: string) => StateQuery<any>[];
};
export declare const Query: QueryShape;
type QueryOptions = Omit<{
    [key in keyof QueryShape]?: QueryShape[key];
}, 'setup' | 'bagHit' | 'clear' | 'clearGroup' | 'group'>;
type StateQuery<T> = {
    data: T | null;
    isError: boolean | string;
    isLoading: boolean;
    fetch: () => Promise<void>;
    refetch: (options?: {
        disableLoading: boolean;
    }) => Promise<void>;
    mutate: (options?: MutateOptions) => Promise<void>;
    clear: () => void;
    endpoint: string;
    group?: string;
    groups?: string[];
};
export declare const useQuery: <T>(endpoint: string, options?: QueryOptions & {
    group?: string;
    groups?: string[];
}) => StateQuery<T>;
type MutateOptions = {
    populateCache?: (currentData: any) => any;
    data?: any;
    refetch?: boolean;
};
export declare const useSingleQuery: <T>(endpointCallBack: (key: string) => string, options?: QueryOptions & {
    group?: string;
    groups?: string[];
}) => {
    [key: string]: ReturnType<typeof useQuery<T>>;
};
export declare const mutate: (endpoint: string, options?: MutateOptions) => Promise<void>;
export {};
