import { type Notifier } from '@ni/fast-element';
import { FoundationElement } from '@ni/fast-foundation';
import type { TableCellState } from '../../../table-column/base/types';
import type { CellViewSlotRequestEventDetail, TableRecord, TableRowFocusableElements } from '../../types';
import type { TableColumn } from '../../../table-column/base';
import type { MenuButtonToggleEventDetail } from '../../../menu-button/types';
import type { Checkbox } from '../../../checkbox';
declare global {
    interface HTMLElementTagNameMap {
        'nimble-table-row': TableRow;
    }
}
/** Represents a single row (element) in the Table's data  */
export interface TableDataRecord extends TableRecord {
}
/**
 * A styled row that is used within the nimble-table.
 * @internal
 */
export declare class TableRow<TDataRecord extends TableDataRecord = TableDataRecord> extends FoundationElement {
    recordId?: string;
    selectable: boolean;
    selected: boolean;
    hideSelection: boolean;
    expanded: boolean;
    reserveCollapseSpace: boolean;
    dataRecord?: TDataRecord;
    /**
     * @internal
     * */
    columnNotifiers: Notifier[];
    columns: TableColumn[];
    currentActionMenuColumn?: TableColumn;
    nestingLevel: number;
    /**
     * Row index in the flattened set of all regular and group header rows.
     * Represents the index in table.tableData (TableRowState[]).
     */
    resolvedRowIndex?: number;
    isParentRow: boolean;
    menuOpen: boolean;
    rowOperationGridCellHidden: boolean;
    loading: boolean;
    /**
     * @internal
     * An array that parallels the `columns` array and contains the indent
     * level of each column's cell.
     * */
    cellIndentLevels: number[];
    /**
     * @internal
     * An array that parallels the `columns` array and contains the cell state
     * of each column's cell.
     * */
    cellStates: (TableCellState | undefined)[];
    /** @internal */
    readonly selectionCheckbox?: Checkbox;
    /** @internal */
    readonly cellContainer: HTMLSpanElement;
    /**
     * @internal
     */
    readonly expandIcon?: HTMLElement;
    /**
     * @internal
     */
    animationClass: string;
    /**
     * @internal
     */
    allowHover: boolean;
    get isTopLevelParentRow(): boolean;
    get isNestedParent(): boolean;
    /** @internal */
    get showSelectionCheckbox(): boolean;
    private ignoreSelectionChangeEvents;
    get ariaSelected(): 'true' | 'false' | null;
    disconnectedCallback(): void;
    /** @internal */
    onSelectionCheckboxChange(event: CustomEvent): void;
    /** @internal */
    onSelectionChange(oldState: boolean, newState: boolean): void;
    /** @internal */
    onCellActionMenuBeforeToggle(event: CustomEvent<MenuButtonToggleEventDetail>, column: TableColumn): void;
    /** @internal */
    onCellActionMenuToggle(event: CustomEvent<MenuButtonToggleEventDetail>, column: TableColumn): void;
    /** @internal */
    handleChange(source: unknown, args: unknown): void;
    /** @internal */
    getFocusableElements(): TableRowFocusableElements;
    onRowExpandToggle(event?: Event): void;
    onCellViewSlotsRequest(column: TableColumn, event: CustomEvent<CellViewSlotRequestEventDetail>): void;
    private readonly removeAnimatingClass;
    private emitActionMenuToggleEvent;
    private columnsChanged;
    private dataRecordChanged;
    private nestingLevelChanged;
    private updateCellIndentLevels;
    private removeColumnObservers;
    private observeColumns;
    private updateCellStates;
    private hasValidFieldNames;
    private selectedChanged;
    private selectionCheckboxChanged;
    private setSelectionCheckboxState;
}
export declare const tableRowTag = "nimble-table-row";
