import { Filter, SearchResult } from '../types';
/**
 * Hook to search for documents - only works with Frappe v15+
 *
 * @param doctype - name of the doctype (table) where we are performing our search
 * @param text - search text
 * @param filters - (optional) the results will be filtered based on these
 * @param limit - (optional) the number of results to return. Defaults to 20
 * @param debounce - (optional) the number of milliseconds to wait before making the API call. Defaults to 250ms.
 *
 * @returns Returns an object with the following properties: data, error, isFetching, mutate
 *
 * @example
 *
 * const [searchText, setSearchText] = useState("")
 * const { data, error, isFetching, mutate } = useSearch("User", searchText)
 */
export declare const useSearch: (doctype: string, text: string, filters?: Filter[], limit?: number, debounce?: number) => {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: true;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
} | {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: false;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: false;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
} | {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: true;
    isPending: false;
    isLoading: false;
    isLoadingError: true;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "error";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
} | {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: false;
    isPending: true;
    isLoading: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
} | {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: false;
    isPending: true;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: false;
    isPlaceholderData: false;
    status: "pending";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isLoading: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
} | {
    data: {
        message: SearchResult[];
    } | undefined;
    error: Error | null;
    isFetching: boolean;
    mutate: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    isError: false;
    isPending: false;
    isLoading: false;
    isLoadingError: false;
    isRefetchError: false;
    isSuccess: true;
    isPlaceholderData: true;
    status: "success";
    dataUpdatedAt: number;
    errorUpdatedAt: number;
    failureCount: number;
    failureReason: Error | null;
    errorUpdateCount: number;
    isFetched: boolean;
    isFetchedAfterMount: boolean;
    isInitialLoading: boolean;
    isPaused: boolean;
    isRefetching: boolean;
    isStale: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions) => Promise<import('@tanstack/react-query').QueryObserverResult<{
        message: SearchResult[];
    }, Error>>;
    fetchStatus: import('@tanstack/react-query').FetchStatus;
    promise: Promise<{
        message: SearchResult[];
    }>;
};
