import { ColumnConfig, TableConfigState, SortConfig, FilterConfig } from '../../../shared/types/table';
interface UseTableConfigOptions {
    /** Clave única para identificar esta tabla en localStorage */
    configKey?: string;
    /** Habilitar persistencia en localStorage */
    persistConfig?: boolean;
    /** Persistir filtros y búsqueda en la misma configKey (por defecto true) */
    queryPersist?: boolean;
    /** Columnas iniciales de la tabla */
    initialColumns: ColumnConfig[];
    /** Ordenamiento inicial */
    initialSort?: SortConfig;
    /** Filtros iniciales */
    initialFilters?: FilterConfig[];
    /** Callback cuando cambia la configuración */
    onConfigChange?: (config: TableConfigState, changeType: string) => void;
}
interface UseTableConfigReturn {
    /** Columnas con la configuración aplicada */
    columns: ColumnConfig[];
    /** Ordenamiento actual */
    sort?: SortConfig;
    /** Filtros actuales */
    filters: FilterConfig[];
    /** Texto de búsqueda persistido */
    searchQuery: string;
    /** Actualizar orden de columnas */
    updateColumnOrder: (newColumns: ColumnConfig[]) => void;
    /** Actualizar visibilidad de columna */
    updateColumnVisibility: (columnId: string, visible: boolean) => void;
    /** Actualizar visibilidad de múltiples columnas de una vez */
    updateMultipleColumnVisibility: (updates: Array<{
        columnId: string;
        visible: boolean;
    }>) => void;
    /** Actualizar bloqueo de columna */
    updateColumnLock: (columnId: string, locked: boolean) => void;
    /** Actualizar ancho de columna. defaultWidthAtStart = ancho al inicio del resize (para poder volver al mínimo). */
    updateColumnWidth: (columnId: string, width: number | string, defaultWidthAtStart?: number) => void;
    /** Actualizar ordenamiento */
    updateSort: (newSort: SortConfig) => void;
    /** Actualizar filtros */
    updateFilters: (newFilters: FilterConfig[]) => void;
    /** Actualizar texto de búsqueda */
    setSearchQuery: (query: string) => void;
    /** Resetear configuración a valores iniciales */
    resetConfig: () => void;
    /** Configuración actual completa */
    currentConfig: TableConfigState;
}
/**
 * Hook para manejar la persistencia de configuración de tabla en localStorage
 *
 * @example
 * ```tsx
 * const { columns, updateColumnOrder, updateColumnLock } = useTableConfig({
 *   configKey: 'my-table',
 *   persistConfig: true,
 *   initialColumns: myColumns,
 * })
 * ```
 */
export declare const useTableConfig: ({ configKey, persistConfig, queryPersist, initialColumns, initialSort, initialFilters, onConfigChange, }: UseTableConfigOptions) => UseTableConfigReturn;
export {};
//# sourceMappingURL=useTableConfig.d.ts.map