import { RankingInfo } from '@tanstack/match-sorter-utils';
import { CellContext, FilterFn, RowData } 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;
    }
    interface ColumnMeta<TData extends RowData, TValue> {
        /**
         * Applies custom CSS classes to the cell's `<td>` element.
         * Can be a static string or a function that receives the cell context
         * and returns a class string (or undefined for no classes).
         *
         * @example
         * ```ts
         * // Static
         * meta: { cellClassName: "bg-success/10 text-success" }
         *
         * // Dynamic
         * meta: {
         *   cellClassName: (ctx) => ctx.getValue() > 50
         *     ? "bg-destructive/10 text-destructive"
         *     : undefined,
         * }
         * ```
         */
        cellClassName?: string | ((context: CellContext<TData, TValue>) => string | undefined);
    }
}
/**
 * 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;
};
