import type { CellContext, ObjectSetTableConfig, SortDirection } from '../table/types.js';
import type { TableState } from '../components/table-provider/table-reducer.js';
export interface SortingInfo {
    columnIndex: number;
    direction: SortDirection;
}
export interface ConfirmationOptions {
    askConfirmation?: boolean;
    title?: string;
    description?: string;
}
export interface TableSelectionManager {
    canSelectRows(): boolean;
    canSelectCells(): boolean;
    haveSelectedCells(): boolean;
    selectRow(rowIndex: number): void;
    toggleRow(rowIndex: number): void;
    selectFromLastActiveRow(rowIndex: number): void;
    selectAllRows(): void;
    toggleSelectAll(): void;
    selectRange(from: number, to: number): void;
    getSelectedRowIndexes(): number[];
    selectCell(rowIndex: number, columnIndex: number): void;
    clearCellSelection(): void;
    clear(): void;
}
export interface TableApiBase {
    selection: TableSelectionManager;
    getHTMLTable(): HTMLTableElement | null;
    getTotalRowsCount(): number;
    isEditable(): boolean;
    canEditCell(row: number, column: number): boolean;
    isEditing(): boolean;
    isEditingCell(row: number, column: number): boolean;
    thereAreErrors(): boolean;
    getErrors(row: number, checkValidity?: boolean): Promise<string[]>;
    enterCellEditMode(row: number, column: number): void;
    exitCellEditMode(save?: boolean): Promise<void>;
    canDelete(): boolean;
    deleteRows(rows: number[], confirmationOptions?: ConfirmationOptions): Promise<void>;
    canAdd(): boolean;
    isAdding(): boolean;
    sortRows(columnIndex: number, direction: SortDirection | null): void;
    getCurrentSortInfo(): SortingInfo | null;
}
export interface PrivateTableApiBase<TData> extends TableApiBase {
    _getConfig(): ObjectSetTableConfig<TData>;
    _getState(): TableState<TData>;
    _createCellContext(row: number, column: number): CellContext<TData>;
}
//# sourceMappingURL=types.d.ts.map