import { TTableColumnOrGroup } from '../../model/col.types';
import { InferFiltersFromColumns, TTableQuickFilter, TTableQuickFiltersConfig } from '../../model/filter.types';
import { TTableSetFilters, TTableSortState } from '../../model/sort.types';
import { TTableItem } from '../../model/table.types';
export type TTableState<TItem extends TTableItem, T extends readonly TTableColumnOrGroup<TItem>[], Q extends TTableQuickFilter[]> = ReturnType<typeof useTableStates<TItem, T, Q>>;
export type TUseTableStatesProps<TItem extends TTableItem, T extends readonly TTableColumnOrGroup<TItem>[], Q extends TTableQuickFilter[]> = {
    columns: T;
    quickFilters?: TTableQuickFiltersConfig;
    filtersDebounceDelay?: number;
    debounceFields?: (keyof InferFiltersFromColumns<TItem, T, Q>)[];
    prefix?: string;
};
/**
 * Хук для управления состоянием таблицы, включая сортировку, пагинацию и фильтрацию.
 * Синхронизирует состояние пагинации и фильтрации с URL с помощью nuqs.
 * Предоставляет доступ к управляемым состояниям таблицы и функциям для их изменения.
 *
 * @template TItem - Тип элемента данных в таблице.
 * @template T - Тип массива колонок таблицы.
 * @template Q - Тип массива быстрых фильтров.
 *
 * @param {TUseTableStatesProps} props - Параметры конфигурации хука.
 * @param {T} props.columns - Массив определений колонок таблицы.
 *   Каждая колонка должна включать определение фильтрации, если она должна быть фильтруемой.
 * @param {TTableQuickFiltersConfig} [props.quickFilters] - Конфигурация быстрых фильтров.
 *   Если не указано, быстрые фильтры не будут использоваться.
 * @param {number} [props.filtersDebounceDelay=300] - Задержка debounce для значений фильтров (в миллисекундах).
 *   По умолчанию 300ms.
 * @param {Array<keyof InferFiltersFromColumns<TItem, T, Q>>} [props.debounceFields] -
 *   Массив полей (ключей фильтров), для которых следует применять debounce.
 *   Если не указано, debounce применяется к полям фильтрации типа "input" или "input-number".
 * @param {string} [props.prefix] - Префикс для параметров URL, используемых для пагинации.
 *   Если указан, параметры в URL будут иметь вид `prefix_pageIndex`.
 *
 * @returns {object} Объект, содержащий управляемые состояния таблицы и функции для их изменения.
 */
declare const useTableStates: <TItem extends TTableItem, T extends readonly TTableColumnOrGroup<TItem>[], Q extends TTableQuickFilter[]>({ columns, quickFilters, filtersDebounceDelay, debounceFields, prefix, }: TUseTableStatesProps<TItem, T, Q>) => {
    sort: TTableSortState;
    setSort: import('../../../../../node_modules/.pnpm/react@19.1.1/node_modules/react').Dispatch<import('../../../../../node_modules/.pnpm/react@19.1.1/node_modules/react').SetStateAction<TTableSortState>>;
    pagination: {
        pageIndex: number;
        pageSize: number;
    };
    setPagination: (data: {
        pageIndex: number;
        pageSize: number;
    }) => void;
    totalPages: number;
    filters: InferFiltersFromColumns<TItem, T, Q>;
    debouncedFilters: InferFiltersFromColumns<TItem, T, Q>;
    filterParsers: Record<string, import('nuqs').Parser<unknown>>;
    setFilters: TTableSetFilters;
    quickFilters: TTableQuickFiltersConfig | undefined;
    setTotalPages: (newValue?: number) => void;
};
export default useTableStates;
//# sourceMappingURL=use-table-states.d.ts.map