import { ReactNode } from 'react';
interface SearchResult<T> {
    dataSource: T[];
    count?: number | null;
    empty?: boolean;
}
declare const useSearch: <T extends {
    title: ReactNode | string;
    key: string;
    children?: T[] | undefined;
}>({ dataSource, searchValue, handleSearch, onSearchEnd, defaultDataSourceAfterSearch }: {
    dataSource?: T[] | undefined;
    searchValue?: string | undefined;
    handleSearch?: ((searchValue: string, dataSource: T[]) => SearchResult<T> | Promise<SearchResult<T>>) | undefined;
    onSearchEnd?: ((searchResult: any) => void) | undefined;
    defaultDataSourceAfterSearch?: T[] | undefined;
}) => {
    dataSource: T[];
    loading: boolean;
    count: number | void | null;
    error: Error | undefined;
};
export default useSearch;
