import type { DataGridProps, DataGridRow, DataGridSingleColumn } from '../DataGrid';
import { type CellValue } from '../DataGrid/types';
type OmittedColumn<TData extends Record<string, CellValue>> = Omit<DataGridSingleColumn<TData>, 'field' | 'width' | 'minWidth'>;
type CommonColumn<TData extends Record<string, CellValue>> = OmittedColumn<TData> & {
    /**
     * Значение ключа поля данных для колонки
     */
    field?: keyof TData;
    /**
     * Значение стандартной ширины колонки в процентах
     */
    width: `${number}%`;
};
/**
 * Колонка действий для таблицы,
 * должна быть в единственном числе и в самом конце списка колонок
 */
type ActionColumn<TData extends Record<string, CellValue>> = OmittedColumn<TData> & {
    /**
     * Если field указан как $actions, то этот элемент с этим field должен находиться в конце списка,
     * Редактирование ширины колонки будет недоступно пользователю
     */
    field: '$actions';
    /**
     * значение ширины колонки actions в пикселях
     */
    width: `${number}px`;
};
/**
 * Набор значений columns для работы ResizingDataGrid
 * если в таблице необходимо наличие колонки actions, то она всегда должна быть в конце
 * @example
 * const columns: ResizingColumns<TData> = [
 *   { field: 'Id', width: '50%` },
 *   { field: 'Name', width: '50%' },
 *   { field: '$actions', width: '100px' },
 * ];
 */
export type ResizingColumns<TData extends Record<string, CellValue>> = [...CommonColumn<TData>[], ActionColumn<TData>] | CommonColumn<TData>[];
export type ResizingDataGridProps<TData extends DataGridRow = DataGridRow, TSortField extends keyof TData = keyof TData> = Omit<DataGridProps<TData, TSortField>, 'columns' | 'preHeadContent'> & {
    columns: ResizingColumns<TData>;
};
export {};
