import { TeamAppsEvent } from "../util/TeamAppsEvent";
import { UiTable_CellClickedEvent, UiTable_CellEditingStartedEvent, UiTable_CellEditingStoppedEvent, UiTable_CellValueChangedEvent, UiTable_ColumnSizeChangeEvent, UiTable_ContextMenuRequestedEvent, UiTable_DisplayedRangeChangedEvent, UiTable_FieldOrderChangeEvent, UiTable_MultipleRowsSelectedEvent, UiTable_RequestNestedDataEvent, UiTable_RowSelectedEvent, UiTable_SortingChangedEvent, UiTableCommandHandler, UiTableConfig, UiTableEventSource } from "../../generated/UiTableConfig";
import { UiTableColumnConfig } from "../../generated/UiTableColumnConfig";
import { AbstractUiComponent } from "../AbstractUiComponent";
import { TeamAppsUiContext } from "../TeamAppsUiContext";
import { UiSortDirection } from "../../generated/UiSortDirection";
import { UiFieldMessageConfig } from "../../generated/UiFieldMessageConfig";
import { UiTableClientRecordConfig } from "../../generated/UiTableClientRecordConfig";
import { UiComponent } from "../UiComponent";
export declare class UiTable extends AbstractUiComponent<UiTableConfig> implements UiTableCommandHandler, UiTableEventSource {
    readonly onCellEditingStarted: TeamAppsEvent<UiTable_CellEditingStartedEvent>;
    readonly onCellEditingStopped: TeamAppsEvent<UiTable_CellEditingStoppedEvent>;
    readonly onCellValueChanged: TeamAppsEvent<UiTable_CellValueChangedEvent>;
    readonly onRowSelected: TeamAppsEvent<UiTable_RowSelectedEvent>;
    readonly onCellClicked: TeamAppsEvent<UiTable_CellClickedEvent>;
    readonly onMultipleRowsSelected: TeamAppsEvent<UiTable_MultipleRowsSelectedEvent>;
    readonly onSortingChanged: TeamAppsEvent<UiTable_SortingChangedEvent>;
    readonly onRequestNestedData: TeamAppsEvent<UiTable_RequestNestedDataEvent>;
    readonly onFieldOrderChange: TeamAppsEvent<UiTable_FieldOrderChangeEvent>;
    readonly onColumnSizeChange: TeamAppsEvent<UiTable_ColumnSizeChangeEvent>;
    readonly onDisplayedRangeChanged: TeamAppsEvent<UiTable_DisplayedRangeChangedEvent>;
    readonly onContextMenuRequested: TeamAppsEvent<UiTable_ContextMenuRequestedEvent>;
    private $component;
    private _grid;
    private allColumns;
    private dataProvider;
    private _$loadingIndicator;
    private loadingIndicatorFadeInTimer;
    private _sortField;
    private _sortDirection;
    private lastSelectedRecordIds;
    private doNotFireEventBecauseSelectionIsCausedByApiCall;
    private dropDown;
    private $selectionFrame;
    private headerRowFields;
    private footerRowFields;
    private $editorFieldTempContainer;
    private contextMenu;
    constructor(config: UiTableConfig, context: TeamAppsUiContext);
    private isRowExpanded;
    private createSlickGrid;
    private ensureDataForCurrentViewPort;
    private throttledFireDisplayedRangeChanged;
    private createDisplayRangeChangedEvent;
    private toggleColumnsThatAreHiddenWhenTheyContainNoVisibleNonEmptyCells;
    private configureOuterFields;
    private getCurrentlyDisplayedRecordIds;
    doGetMainElement(): HTMLElement;
    private _createColumns;
    private createSlickColumnConfig;
    private getColumnCssClass;
    private prepareEditorField;
    private createCellFormatter;
    private getCellMessageCssClassName;
    clearTable(): void;
    addData(startIndex: number, data: UiTableClientRecordConfig[], totalNumberOfRecords: number, sortField: string, sortDirection: UiSortDirection, clearTableCache: boolean): void;
    removeData(ids: number[]): void;
    insertRows(index: number, data: UiTableClientRecordConfig[]): void;
    deleteRows(ids: number[]): void;
    setChildrenData(recordId: any, data: any[]): void;
    setCellValue(recordId: any, fieldName: string, data: any): void;
    updateRecord(record: UiTableClientRecordConfig): void;
    private rerenderRecordRow;
    private fieldMessagePopper;
    setSingleCellMessages(recordId: number, fieldName: string, messages: UiFieldMessageConfig[]): void;
    clearAllCellMessages(): void;
    private rerenderAllRows;
    setColumnMessages(fieldName: string, messages: UiFieldMessageConfig[]): void;
    private getVisibleColumns;
    private isSpecialColumn;
    private getColumnById;
    markTableField(recordId: any, fieldName: string, mark: boolean): void;
    clearAllFieldMarkings(): void;
    setRecordBold(recordId: any, bold: boolean): void;
    selectRows(recordIds: number[], scrollToFirstRecord: boolean): void;
    editCellIfAvailable(recordId: number, propertyName: string): void;
    focusCell(recordId: any, columnPropertyName: string): void;
    onResize(): void;
    private handleFieldValueChanged;
    private getCompositeFieldColumnForSubFieldName;
    private requestLazyChildren;
    private getActiveCellValue;
    private getActiveCellRecordId;
    private getActiveCellFieldName;
    destroy(): void;
    private updateSelectionFramePosition;
    addColumns(columnConfigs: UiTableColumnConfig[], index: number): void;
    private setSlickGridColumns;
    removeColumns(columnNames: string[]): void;
    setColumnVisibility(propertyName: string, visible: boolean): void;
    cancelEditingCell(recordId: number, propertyName: string): void;
    setContextMenuContent(requestId: number, component: UiComponent): void;
    closeContextMenu(requestId: number): void;
}
