import { type ChangeEvent, type CSSProperties, type ReactNode } from 'react';
import { type Variant } from '../enums';
import { type CellValue, type DataGridColumns, type DataGridRowOptions } from '../types';
export type RowProps<TData extends Record<string, CellValue>> = {
    /**
     * Название класса, применяется к корневому компоненту
     */
    className?: string;
    /**
     * Поле, которое будет использоваться в качестве ключа
     */
    keyId: keyof TData;
    /**
     * Данные строки для отображения
     */
    row: TData;
    /**
     * Конфигурация колонок для таблицы
     */
    columns: DataGridColumns<TData>[];
    /**
     * Вариант отображения вложенных элементов
     */
    variant: `${Variant}`;
    /**
     * Конфигурация ширины колонок
     */
    gridColumns: string;
    /**
     * Уровень вложенности в дереве
     */
    level: number;
    /**
     * Вложенные элементы
     */
    nestedChildren: Array<TData & {
        options?: DataGridRowOptions<TData>;
    }>;
    /**
     * Идентификатор активного элемента массива rows. Выделяет активную строку в таблице
     */
    activeRowId?: string;
    /**
     * Если true, то дерево будет раскрыто по умолчанию
     */
    isInitialExpanded: boolean;
    /**
     * Уровень раскрытия дерева по умолчанию, при isInitialExpanded=true
     */
    expandedLevel: number;
    /**
     * Количество отображаемых по умолчанию дочерних элементов
     */
    initialVisibleChildrenCount: number;
    /**
     * Номер колонки, в которой будет расположена кнопка "Показать все"
     * Работает только для `variant="subrows"`
     */
    moreButtonColumnPosition: number;
    /**
     * Если false, кнопка разворачивания элементов не показывается
     * Работает только для `variant="subrows"`
     */
    isVisibleCollapseButton: boolean;
    /**
     * Если true, то будет отображаться чекбокс для выбора элемента
     */
    isSelectable?: boolean;
    /**
     * Флаг выбора текущей строки
     */
    isSelected?: boolean;
    /**
     * Массив выбранных строк
     */
    selectedRows?: TData[];
    /**
     * Заглушка для пустых ячеек (если отсутствует field и filter и renderCell)
     * @default '-'
     */
    emptyCellValue?: ReactNode;
    /**
     * Дополнительные настройки строки
     */
    options?: DataGridRowOptions<TData>;
    /**
     * Обработчик выбора строки
     */
    onSelectRow: (row: TData) => (event: ChangeEvent<HTMLInputElement>) => void;
    /**
     * Обработчик клика строки таблицы
     */
    onRowClick?: (row: TData) => void;
    /**
     * Смещение секции
     */
    sectionOffset?: number;
    /**
     * Общее количество колонок (для правильного определения последней ячейки)
     */
    totalColumnsCount?: number;
    /**
     * Регистрация элемента строки
     */
    registerRowElement?: (rowId: string, el: HTMLElement) => void;
    /**
     * Отмена регистрации элемента строки
     */
    unregisterRowElement?: (rowId: string, el: HTMLElement) => void;
    /**
     * Обработчик наведения на строку
     */
    onRowEnter?: (rowId: string) => void;
    /**
     * Обработчик выхода из строки
     */
    onRowLeave?: (rowId: string, event: PointerEvent) => void;
    /**
     * Стили для строки
     */
    style?: CSSProperties;
};
