import { ColumnConfig } from '../../../shared/types/table';
/**
 * Hook que mantiene el estado de las columnas (orden, visibilidad, bloqueo, ancho)
 * y lo sincroniza con las columnas que pasa el padre.
 *
 * Cuando el padre actualiza las columnas (p. ej. columnOptions cargadas por API
 * tras React Query), este efecto actualiza el estado interno para que los dropdowns
 * y el resto de celdas reciban las opciones correctas. Se preservan width, visible,
 * locked y el orden actual si el conjunto de columnas no cambia (solo el contenido).
 *
 * Si el padre pasa una **nueva referencia** de `render` o `accessor` (función) en una
 * columna, el estado interno se sincroniza para que las celdas (p. ej. acciones) no
 * queden con closures obsoletos.
 *
 * Recomendación: el padre debe memoizar las columnas (useMemo con deps como
 * columnOptions) para que initialColumns solo cambie cuando cambien realmente
 * las definiciones.
 */
export declare const useTableColumns: <T>(initialColumns: ColumnConfig<T>[]) => {
    columns: ColumnConfig<T>[];
    handleToggleVisibility: (columnId: string) => void;
    handleSetVisibility: (columnId: string, visible: boolean) => void;
    handleToggleLock: (columnId: string) => void;
    handleResize: (columnId: string, width: number) => void;
    handleReorder: (fromIndex: number, toIndex: number) => void;
    setColumnsOrder: (orderedColumnIds: string[]) => void;
    resetColumns: () => void;
};
//# sourceMappingURL=useTableColumns.d.ts.map