import { type TableColumnDef, type TableColumnOrderState, type TableColumnSizingState, type TableSelectionMode } from "@ryuzaki13/react-foundation-lib/table";
import { type VisibilityState } from "@tanstack/react-table";
import { type BaseTableProps, type TableColumnPinningState } from "../base-table";
/**
 * Пропсы компонента Table.
 *
 * Компонент предназначен для плоских данных и по API осознанно сближен с TreeTable.
 */
export interface TableProps<TData extends object> {
    /**
     * Необязательный заголовок над таблицей.
     */
    title?: string;
    /**
     * Признак первичной загрузки.
     */
    isLoading?: boolean;
    /**
     * Признак фоновой догрузки или обновления данных.
     */
    isFetching?: boolean;
    /**
     * Плоский источник строк.
     */
    data: readonly TData[] | undefined | null;
    /**
     * Описание колонок таблицы.
     */
    columns: readonly TableColumnDef<TData>[];
    /**
     * Режим выбора строк.
     */
    selectionMode?: TableSelectionMode;
    /**
     * Внешний список выбранных строк.
     *
     * Если передан, таблица синхронизирует визуальное выделение с этим набором id.
     */
    selectedRowIds?: readonly string[];
    /**
     * Стабильный идентификатор строки.
     *
     * Если не задан, используется индекс строки.
     */
    getRowId?: (row: TData, index: number) => string;
    /**
     * Дополнительный CSS-класс корневого контейнера.
     */
    className?: string;
    minHeight?: `${number}em` | `${number}%`;
    /**
     * Дополнительный CSS-класс тега `table`.
     */
    tableClassName?: string;
    /**
     * Внешнее controlled-состояние видимости колонок.
     */
    columnVisibility?: VisibilityState;
    /**
     * Стартовое uncontrolled-состояние видимости колонок.
     */
    defaultColumnVisibility?: VisibilityState;
    /**
     * Внешнее controlled-состояние порядка колонок.
     */
    columnOrder?: readonly string[];
    /**
     * Стартовое uncontrolled-состояние порядка колонок.
     */
    defaultColumnOrder?: readonly string[];
    /**
     * Внешнее controlled-состояние ширин колонок в px.
     */
    columnSizing?: TableColumnSizingState;
    /**
     * Стартовое uncontrolled-состояние ширин колонок в px.
     */
    defaultColumnSizing?: TableColumnSizingState;
    /**
     * Внешнее controlled-состояние left-pinning для колонок.
     */
    columnPinning?: TableColumnPinningState;
    /**
     * Стартовое uncontrolled-состояние left-pinning для колонок.
     */
    defaultColumnPinning?: TableColumnPinningState;
    /**
     * Включает изменение ширины колонок через header-handle.
     */
    enableColumnResizing?: boolean;
    /**
     * Включает изменение порядка колонок через drag&drop заголовков.
     */
    enableColumnReordering?: boolean;
    /**
     * Минимальная ширина колонки при resize в px.
     */
    columnResizeMinWidth?: number;
    /**
     * Вызывается после изменения видимости колонок.
     */
    onColumnVisibilityChange?: (state: VisibilityState) => void;
    /**
     * Вызывается после изменения порядка колонок.
     */
    onColumnOrderChange?: (state: TableColumnOrderState) => void;
    /**
     * Вызывается после изменения ширины колонок.
     */
    onColumnSizingChange?: (state: TableColumnSizingState) => void;
    /**
     * Вызывается после изменения left-pinning state.
     */
    onColumnPinningChange?: (state: TableColumnPinningState) => void;
    /**
     * Вызывается при активации строки кликом или клавиатурой.
     */
    onRowClick?: (row: TData) => void;
    /**
     * Вызывается после изменения выбранных строк.
     */
    onRowSelectionChange?: (rows: TData[]) => void;
    /**
     * Вызывается при достижении конца таблицы внутри scroll-контейнера.
     */
    onReachEnd?: () => void;
    /**
     * Позволяет запретить выбор отдельных строк.
     */
    getRowCanSelect?: (row: TData) => boolean;
    /**
     * Позволяет добавить CSS-класс для конкретной строки.
     */
    getRowClassName?: (row: TData) => string | undefined;
    /**
     * Контекстное меню заголовка колонки. Используется для общих runtime-действий
     * вроде server sorting без встраивания доменной логики в shared-таблицу.
     */
    renderHeaderContextMenu?: BaseTableProps<TData>["renderHeaderContextMenu"];
    /**
     * Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.
     *
     * В отличие от `column.cell`, этот слот не отключает общий formatting-runtime:
     * `defaultContent` уже содержит отформатированное значение, если оно применимо.
     */
    renderCellContent?: BaseTableProps<TData>["renderCellContent"];
}
/**
 * Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.
 */
export declare function Table<TData extends object>({ title, isLoading, isFetching, data, columns, selectionMode, selectedRowIds, getRowId, className, minHeight, tableClassName, columnVisibility, defaultColumnVisibility, columnOrder, defaultColumnOrder, columnSizing, defaultColumnSizing, columnPinning, defaultColumnPinning, enableColumnResizing, enableColumnReordering, columnResizeMinWidth, onColumnVisibilityChange, onColumnOrderChange, onColumnSizingChange, onColumnPinningChange, onRowClick, onRowSelectionChange, onReachEnd, getRowCanSelect, getRowClassName, renderHeaderContextMenu, renderCellContent }: TableProps<TData>): import("react").JSX.Element;
//# sourceMappingURL=Table.d.ts.map