import { SetStateAction } from 'react';
import { SortingState, VisibilityState, ColumnPinningState, ColumnSizingState, PaginationState, ColumnOrderState } from '@tanstack/react-table';
import { TableState, TableDefaultState, Touched } from '../types';
export type TableHookState<FiltersData> = (TableState | TableDefaultState) & {
    filters?: FiltersData;
};
export interface TableData<FiltersData> {
    tableId: string;
    version: string | number;
    defaultState?: TableHookState<FiltersData>;
    notPersistentKeys?: string[];
    debounceSearchDelay?: number;
    deepMergeKeys?: (keyof TableHookState<FiltersData>)[];
}
export declare function useTableReact<FiltersData>({ tableId, version, debounceSearchDelay, defaultState, notPersistentKeys, deepMergeKeys, }: TableData<FiltersData>): {
    state: {
        sorting: SortingState;
        visible: VisibilityState;
        pagination: PaginationState;
        pinned: ColumnPinningState;
        search: string;
        defaultColumnSizing: ColumnSizingState;
        filters: FiltersData;
        selected: {};
        expandedRows: {};
        columnOrder: ColumnOrderState;
        touched: Touched | undefined;
        debounceSearch: string;
    };
    handlers: {
        onVisibilityChange: import("react").Dispatch<SetStateAction<VisibilityState>>;
        onFiltersChange: (val: SetStateAction<FiltersData>) => void;
        onSortingChange: import("react").Dispatch<SetStateAction<SortingState>>;
        onPinningChange: import("react").Dispatch<SetStateAction<ColumnPinningState>>;
        onSearchChange: (val: SetStateAction<string>) => void;
        onRowSelectionChange: import("react").Dispatch<SetStateAction<{}>>;
        onExpandedChange: import("react").Dispatch<SetStateAction<{}>>;
        onPaginationChange: import("react").Dispatch<SetStateAction<PaginationState>>;
        onColumnSizingChange: import("react").Dispatch<SetStateAction<ColumnSizingState>>;
        onColumnOrderChange: import("react").Dispatch<SetStateAction<ColumnOrderState>>;
        onTouchedChange: import("react").Dispatch<SetStateAction<Touched | undefined>>;
    };
    reset: () => void;
    defaultState: {
        defaultColumnSizing?: ColumnSizingState | undefined;
        sorting: SortingState;
        visible: {};
        pagination: PaginationState;
        pinned: {};
        search: string;
        selected: {};
        expandedRows: {};
        columnOrder: ColumnOrderState;
        touched?: Touched | undefined;
        filters?: FiltersData | undefined;
        columnSizing: {};
    } | {
        columnSizing: {};
        sorting: SortingState;
        visible: {};
        pagination: PaginationState;
        pinned: {};
        search: string;
        selected: {};
        expandedRows: {};
        columnOrder: ColumnOrderState;
        touched?: Touched | undefined;
        filters?: FiltersData | undefined;
    };
};
