/**
 * THIS IS GENERATED CODE!
 * PLEASE DO NOT MODIFY - ALL YOUR WORK WOULD BE LOST!
 */
export declare const typescriptDeclarationFixConstant = 1;
import { UiEvent } from "./UiEvent";
import { TeamAppsEvent } from "../modules/util/TeamAppsEvent";
import { UiComponentConfig } from "./UiComponentConfig";
import { UiTableColumnConfig } from "./UiTableColumnConfig";
import { UiColorConfig } from "./UiColorConfig";
import { UiTableClientRecordConfig } from "./UiTableClientRecordConfig";
import { UiSelectionFrameConfig } from "./UiSelectionFrameConfig";
import { UiFieldMessageConfig } from "./UiFieldMessageConfig";
import { UiTableDataRequestConfig } from "./UiTableDataRequestConfig";
import { UiSortDirection } from "./UiSortDirection";
import { UiComponentCommandHandler } from "./UiComponentConfig";
export interface UiTableConfig extends UiComponentConfig {
    _type?: string;
    columns: UiTableColumnConfig[];
    displayAsList?: boolean;
    forceFitWidth?: boolean;
    rowHeight?: number;
    stripedRows?: boolean;
    stripedRowColorEven?: UiColorConfig;
    stripedRowColorOdd?: UiColorConfig;
    hideHeaders?: boolean;
    allowMultiRowSelection?: boolean;
    selectionColor?: UiColorConfig;
    rowBorderWidth?: number;
    rowBorderColor?: UiColorConfig;
    showRowCheckBoxes?: boolean;
    showNumbering?: boolean;
    tableData?: UiTableClientRecordConfig[];
    totalNumberOfRecords?: number;
    sortField?: string;
    sortDirection?: UiSortDirection;
    editable?: boolean;
    treeMode?: boolean;
    indentedColumnName?: string;
    indentation?: number;
    selectionFrame?: UiSelectionFrameConfig;
    showHeaderRow?: boolean;
    headerRowBorderWidth?: number;
    headerRowBorderColor?: UiColorConfig;
    headerRowHeight?: number;
    headerRowBackgroundColor?: UiColorConfig;
    headerRowFields?: {
        [name: string]: unknown;
    };
    showFooterRow?: boolean;
    footerRowBorderWidth?: number;
    footerRowBorderColor?: UiColorConfig;
    footerRowHeight?: number;
    footerRowBackgroundColor?: UiColorConfig;
    footerRowFields?: {
        [name: string]: unknown;
    };
}
export interface UiTableCommandHandler extends UiComponentCommandHandler {
    clearTable(): void;
    addData(startRowIndex: 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;
    updateRecord(record: UiTableClientRecordConfig): void;
    setCellValue(recordId: number, columnPropertyName: string, value: any): void;
    setChildrenData(parentRecordId: number, data: UiTableClientRecordConfig[]): void;
    markTableField(recordId: number, columnPropertyName: string, mark: boolean): void;
    clearAllFieldMarkings(): void;
    setRecordBold(recordId: number, bold: boolean): void;
    selectRows(recordIds: number[], scrollToFirstRecord: boolean): void;
    editCellIfAvailable(recordId: number, propertyName: string): void;
    cancelEditingCell(recordId: number, propertyName: string): void;
    focusCell(recordId: number, columnPropertyName: string): void;
    setSingleCellMessages(recordId: number, columnPropertyName: string, messages: UiFieldMessageConfig[]): void;
    clearAllCellMessages(): void;
    setColumnMessages(columnPropertyName: string, messages: UiFieldMessageConfig[]): void;
    addColumns(column: UiTableColumnConfig[], index: number): void;
    removeColumns(columnName: string[]): void;
    setColumnVisibility(columnPropertyName: string, visible: boolean): void;
}
export interface UiTableEventSource {
    onCellEditingStarted: TeamAppsEvent<UiTable_CellEditingStartedEvent>;
    onCellEditingStopped: TeamAppsEvent<UiTable_CellEditingStoppedEvent>;
    onCellValueChanged: TeamAppsEvent<UiTable_CellValueChangedEvent>;
    onRowSelected: TeamAppsEvent<UiTable_RowSelectedEvent>;
    onMultipleRowsSelected: TeamAppsEvent<UiTable_MultipleRowsSelectedEvent>;
    onSortingChanged: TeamAppsEvent<UiTable_SortingChangedEvent>;
    onDisplayedRangeChanged: TeamAppsEvent<UiTable_DisplayedRangeChangedEvent>;
    onRequestNestedData: TeamAppsEvent<UiTable_RequestNestedDataEvent>;
    onFieldOrderChange: TeamAppsEvent<UiTable_FieldOrderChangeEvent>;
    onColumnSizeChange: TeamAppsEvent<UiTable_ColumnSizeChangeEvent>;
}
export interface UiTable_CellEditingStartedEvent extends UiEvent {
    recordId: number;
    columnPropertyName: string;
    currentValue: any;
}
export interface UiTable_CellEditingStoppedEvent extends UiEvent {
    recordId: number;
    columnPropertyName: string;
}
export interface UiTable_CellValueChangedEvent extends UiEvent {
    recordId: number;
    columnPropertyName: string;
    value: any;
}
export interface UiTable_RowSelectedEvent extends UiEvent {
    recordId: number;
    isRightMouseButton: boolean;
    isDoubleClick: boolean;
}
export interface UiTable_MultipleRowsSelectedEvent extends UiEvent {
    recordIds: number[];
}
export interface UiTable_SortingChangedEvent extends UiEvent {
    sortField: string;
    sortDirection: UiSortDirection;
}
export interface UiTable_DisplayedRangeChangedEvent extends UiEvent {
    startIndex: number;
    length: number;
    displayedRecordIds: number[];
    dataRequest: UiTableDataRequestConfig;
}
export interface UiTable_RequestNestedDataEvent extends UiEvent {
    recordId: number;
}
export interface UiTable_FieldOrderChangeEvent extends UiEvent {
    columnPropertyName: string;
    position: number;
}
export interface UiTable_ColumnSizeChangeEvent extends UiEvent {
    columnPropertyName: string;
    size: number;
}
