import { RankingInfo } from '@tanstack/match-sorter-utils';
import { FilterFn } from '@tanstack/react-table';
import { TableOptions } from '@tanstack/table-core';
import { PartialSome } from '../../utils/misc';
declare module "@tanstack/react-table" {
    interface FilterFns {
        fuzzy: FilterFn<unknown>;
    }
    interface FilterMeta {
        itemRank: RankingInfo;
    }
}
/**
 * Default fuzzyFilter implementation, used for global text filtering.
 */
export declare const fuzzyFilter: FilterFn<unknown>;
export interface UseDataTableProps<Data> extends PartialSome<TableOptions<Data>, "getCoreRowModel" | "filterFns"> {
    /**
     * Defines how many items are displayed per one page.
     *
     * @default 50
     */
    pageSize?: number;
}
/**
 * Composes useReactTable usage, contains core data table logic.
 */
export declare const useDataTable: <Data>({ columns, data, pageSize, state, initialState, ...props }: UseDataTableProps<Data>) => {
    globalFilter: string;
    setGlobalFilter: import('react').Dispatch<import('react').SetStateAction<string>>;
    setGlobalFilterDebounced: import('use-debounce').DebouncedState<(value: string) => void>;
    table: import('@tanstack/table-core').Table<Data>;
    rows: import('@tanstack/table-core').Row<Data>[];
    emptyProps: {
        show: boolean;
        textFilter: string | undefined;
        hasFilters: boolean;
    };
    isEmpty: boolean;
};
