import { type TableOptions, type TableState as OriginalTableState, type TableInstance as OriginalTableInstance, type HeaderGroup } from 'react-table';
export interface AdditionalTableState<D extends Record<string, unknown>> {
    expandedRowIds?: {
        [key: string]: boolean;
    };
    columnOrder?: Array<string | number>;
    columnWidths?: {
        [key: string]: number;
    };
    filters?: {
        [key: string]: any;
    };
    sortBy?: Array<{
        id: string;
        desc: boolean;
    }>;
}
export type TableState<D extends Record<string, unknown>> = OriginalTableState<D> & AdditionalTableState<D>;
export interface CustomTableState<D extends Record<string, unknown>> extends TableState<D> {
    pageIndex: number;
    pageSize: number;
    selectedRowIds: {
        [key: string]: boolean;
    };
    expandedRowIds: {
        [key: string]: boolean;
    };
    columnOrder: Array<string | number>;
    columnWidths: {
        [key: string]: number;
    };
}
export interface CustomHeaderGroup<D extends Record<string, unknown>> extends HeaderGroup<D> {
    getSortByToggleProps: () => void;
    isSorted: boolean;
    isSortedDesc: boolean;
    isResizing: boolean;
}
export interface CustomTableInstance<D extends Record<string, unknown>> extends OriginalTableInstance<D> {
    setGlobalFilter: (filterValue: any) => void;
    setPageSize: (size: number) => void;
    gotoPage: (page: number) => void;
    nextPage: () => void;
    previousPage: () => void;
    setColumnOrder: (order: Array<string | number>) => void;
    toggleRowSelected: (index: number, isSelected: boolean) => void;
    toggleRowExpanded: (id: string, isExpanded: boolean) => void;
    setColumnWidth: (id: string, width: number) => void;
    state: CustomTableState<D>;
    selectedFlatRows: any;
}
export declare function useCustomTable<D extends Record<string, unknown>>(options: TableOptions<D>): CustomTableInstance<D>;
