import type { TableColumn } from '../../table-column/base';
import { type TableRecord, TableRowSelectionMode, type TableSetRecordHierarchyOptions, type TableValidity } from '../types';
/**
 * Helper class for the nimble-table to validate that the table's configuration
 * is valid and report which aspects of the configuration are valid or invalid.
 */
export declare class TableValidator<TData extends TableRecord> {
    private duplicateRecordId;
    private missingRecordId;
    private invalidRecordId;
    private duplicateColumnId;
    private missingColumnId;
    private duplicateSortIndex;
    private duplicateGroupIndex;
    private idFieldNameNotConfigured;
    private invalidColumnConfiguration;
    private invalidParentIdConfiguration;
    private readonly recordIds;
    getValidity(): TableValidity;
    isValid(): boolean;
    areRecordIdsValid(): boolean;
    validateIdFieldConfiguration(selectionMode: TableRowSelectionMode, idFieldName: string | undefined, parentIdFieldName: string | undefined): boolean;
    validateRecordIds(data: readonly TData[], idFieldName: string | undefined): boolean;
    validateColumnIds(columnIds: readonly (string | undefined)[]): boolean;
    validateColumnSortIndices(sortIndices: readonly number[]): boolean;
    validateColumnGroupIndices(groupIndices: readonly number[]): boolean;
    validateColumnConfigurations(columns: readonly TableColumn[]): boolean;
    getPresentRecordIds(requestedRecordIds: readonly string[]): string[];
    getOptionsWithPresentIds(requestedOptions: readonly TableSetRecordHierarchyOptions[]): TableSetRecordHierarchyOptions[];
    setParentIdConfigurationValidity(valid: boolean): void;
    private validateIndicesAreUnique;
}
