import { TTableColumn } from '../../model/col.types';
import { InferFiltersFromColumns, TTableQuickFilter } from '../../model/filter.types';
import { TTableSortState } from '../../model/sort.types';
import { TTableItem } from '../../model/table.types';
export type TTableState<TItem extends TTableItem, T extends readonly TTableColumn<TItem>[], Q extends TTableQuickFilter[]> = ReturnType<typeof useTableStates<TItem, T, Q>>;
export type TUseTableStatesProps<TItem extends TTableItem, T extends readonly TTableColumn<TItem>[], Q extends TTableQuickFilter[]> = {
    columns: T;
    quickFilters?: Q;
};
declare const useTableStates: <TItem extends TTableItem, T extends readonly TTableColumn<TItem>[], Q extends TTableQuickFilter[]>({ columns, quickFilters, }: TUseTableStatesProps<TItem, T, Q>) => {
    sort: TTableSortState;
    setSort: import('react').Dispatch<import('react').SetStateAction<TTableSortState>>;
    pagination: import('nuqs').Values<{
        pageIndex: Omit<import('nuqs').ParserBuilder<number>, "parseServerSide"> & {
            readonly defaultValue: number;
            parseServerSide(value: string | string[] | undefined): number;
        };
        pageSize: Omit<import('nuqs').ParserBuilder<number>, "parseServerSide"> & {
            readonly defaultValue: number;
            parseServerSide(value: string | string[] | undefined): number;
        };
    }>;
    setPagination: import('nuqs').SetValues<{
        pageIndex: Omit<import('nuqs').ParserBuilder<number>, "parseServerSide"> & {
            readonly defaultValue: number;
            parseServerSide(value: string | string[] | undefined): number;
        };
        pageSize: Omit<import('nuqs').ParserBuilder<number>, "parseServerSide"> & {
            readonly defaultValue: number;
            parseServerSide(value: string | string[] | undefined): number;
        };
    }>;
    totalPages: number;
    filters: InferFiltersFromColumns<TItem, T, Q>;
    filterParsers: Record<string, import('nuqs').Parser<unknown>>;
    setFilters: import('nuqs').SetValues<Record<string, import('nuqs').Parser<unknown>>>;
    quickFilters: Q | undefined;
    setTotalPages: (newValue?: number) => void;
};
export default useTableStates;
//# sourceMappingURL=use-table-states.d.ts.map