import { Column } from 'react-data-grid';
import { Maybe } from '@m4l/core';
import { RowKey } from '../../../types';
import { IGridConfig } from './types';
/**
 * Obtiene la configuración de anchos de las columnas del DataGrid.
 *
 * ## Flujo de persistencia
 *
 * Esta función obtiene los anchos de columnas siguiendo una jerarquía de precedencia:
 *
 * 1. **defaultConfig** (Cookies de red) - Prioridad máxima
 * Configuración que viene de las cookies de red cuando el componente se monta.
 * En producción, esta es la fuente principal de datos persistidos.
 *
 * localStorage is not used; configuration must be provided via defaultConfig (network cookies).
 *
 * Si no se encuentra configuración en ninguna fuente, la columna no se incluye
 * en el Map resultante y usará el ancho por defecto definido en la columna.
 *
 * ## Relación con saveColumnsWidth
 *
 * - Cuando el usuario modifica anchos, `saveColumnsWidth` envía los cambios
 * mediante el callback `onChangeConfig`
 * - En la siguiente carga, esos datos vuelven como `defaultConfig`
 * - localStorage es solo un fallback cuando no hay callback configurado
 * @template TRow - Tipo de datos de cada fila del DataGrid
 * @template TSummaryRow - Tipo de datos de la fila de resumen del DataGrid
 * @param id - Identificador único del DataGrid. Se usa como prefijo para la key en localStorage (fallback)
 * @param columns - Array de columnas del DataGrid con su configuración
 * @param defaultConfig - Configuración del usuario obtenida de cookies de red.
 *                             Esta es la fuente principal en producción.
 * @returns Map donde la key es el identificador de la columna (column.key) y el value
 *          es el ancho configurado (número en píxeles o string con unidad CSS)
 * @example
 * // No network cookie config (no fallback; defaultConfig must come from consumer)
 * const columnsWidths = getColumnsWidth('my-grid', columns, null);
 * @example
 * // With network cookie config (typical production case)
 * const columnsWidths = getColumnsWidth('my-grid', columns, {
 *   columnsWidths: { name: 200, email: 300 }
 * });
 * @see saveColumnsWidth - Función complementaria para persistir la configuración
 */
export declare function getColumnsWidth<TRow, TSummaryRow>(id: RowKey, columns: readonly Column<TRow, TSummaryRow>[], defaultConfig: Maybe<IGridConfig>): Map<string, Maybe<string | number>>;
//# sourceMappingURL=getColumnsWidth.d.ts.map