import type { TablePlugin, TableColumn } from '../../types';
export interface UseTableColumnResizeConfig {
    /**
     * Column width overrides from resize operations.
     * Keys are column `key` strings. Values are pixel widths.
     * When a column key is present here, it overrides the column's
     * declared `width` (proportional or pixel).
     *
     * Controlled: consumer owns this state and persists as needed.
     */
    columnWidths?: Record<string, number>;
    /**
     * Called when a resize operation completes (pointerup / Enter key).
     * Consumer updates their `columnWidths` state here.
     */
    /**
     * Called when a resize operation completes (pointerup / Enter key).
     * Receives a map of ALL column keys that changed width — the resized column
     * plus any other columns that were committed to pixel widths to prevent
     * layout shift. Consumer should merge these into their columnWidths state.
     */
    onColumnResizeEnd?: (updates: Record<string, number>) => void;
    /**
     * Global minimum column width in pixels during resize.
     * Overrides per-column defaults when set.
     * @default undefined (uses column-specific minimum)
     */
    minWidth?: number;
    /**
     * Global maximum column width in pixels during resize.
     * @default Infinity (no max)
     */
    maxWidth?: number;
    /**
     * Column definitions — needed to derive per-column min widths
     * and detect proportional vs pixel columns for last-column behavior.
     *
     * When proportional columns are detected, the resize handle
     * automatically adjusts the neighboring column instead of the
     * proportional column itself. The last proportional column has
     * no resize handle (it flexes to fill remaining space).
     *
     * When not provided, all columns are treated as pixel columns
     * and the global minWidth fallback (50px) is used.
     */
    columns?: TableColumn<Record<string, unknown>>[];
}
export declare function useTableColumnResize<T extends Record<string, unknown>>(config: UseTableColumnResizeConfig): TablePlugin<T>;
//# sourceMappingURL=useTableColumnResize.d.ts.map