import { default as React } from 'react';
import { HeaderContext, Row } from '@tanstack/react-table';
import { TableColumnDef, RowsSelectionHandler, ColumnSelectorHandler, RowActionHandler, DraggableHandler } from '../types';
import { ITableColumnProps } from '../../table';
/**
 * Custom hook to manage table columns creation and memoization
 * Handles selection column, action column, and column filtering
 */
export default function useTableColumns<T extends object>(columns: ITableColumnProps<T>[], rowsSelection?: RowsSelectionHandler<T>, rowAction?: RowActionHandler<T>, columnSelector?: ColumnSelectorHandler<T>, draggable?: DraggableHandler): {
    memoizedColumns: TableColumnDef<T>[];
    selectionColumn: {
        id: string;
        header: ({ table }: HeaderContext<T, unknown>) => React.FunctionComponentElement<import('../../checkbox').ICheckboxProps>;
        cell: ({ row }: {
            row: Row<T>;
        }) => React.FunctionComponentElement<import('../../checkbox').ICheckboxProps>;
        enableSorting: boolean;
        enableResizing: boolean;
        minSize: number;
        maxSize: number;
        size: number;
    };
    actionColumn: TableColumnDef<T> | undefined;
    columnInitialSize: Record<keyof T, number>;
    selectedColumns: ITableColumnProps<T>[];
    columnOrder: string[];
    handleSelectedColumns: (columns: ITableColumnProps<T>[]) => void;
    setColumnOrder: (newOrder: React.SetStateAction<string[]>) => void;
};
