import { Observable } from 'rxjs';
import { FormElement } from '../element';
import { RecordTableColumn, FilterSetup } from './column';
import { TableAction } from './action';
import { TableRecordData } from './row-data';
import { TableSorting, TableDefinition, IFormConfig } from '../../../interfaces/form-config.interface';
export interface TableActionEvent {
    actionCode: string;
    recordId: any;
    recordData: any;
}
export interface TableEvent {
    tableCode: string;
    actionCode: string | null;
    actionDetail: any;
}
export declare class RecordTable extends FormElement {
    private readonly _inlineActionTrigger;
    private readonly _globalActionTrigger;
    private readonly _recordSelectionTrigger;
    private readonly _selectionActionTrigger;
    private readonly _getDataTrigger;
    private _tableColumnObj;
    private _appendPages;
    private _actions;
    private _actionsObj;
    private _globalFilterString;
    private globalFilterStrings;
    private selectedRecords;
    private layout;
    private _restrictedId;
    private _globalSearch;
    private _tableRecords;
    private _tableRecordObj;
    private _visibleRecords;
    private _columns;
    private _selectable;
    private _selectionBackend;
    private _selectionField;
    private _allSelected;
    private _tableCode;
    private _tableTitle;
    private _currentPage;
    private _totalPages;
    private _requestedPage;
    private _recordsPerPage;
    private _totalRecordsNumber;
    private _recordsNumber;
    private _sorting;
    private _waiting;
    private _clientPaging;
    private _sortable;
    constructor(tableReceived: TableDefinition, formConfig: IFormConfig);
    get columnNames(): string[];
    get inlineActionTrigger(): Observable<TableEvent>;
    get globalActionTrigger(): Observable<TableEvent>;
    get selectionActionTrigger(): Observable<TableEvent>;
    get recordSelectionTrigger(): Observable<TableEvent>;
    get getDataTrigger(): Observable<TableEvent>;
    get globalSearch(): boolean;
    get restrictedId(): any;
    get tableRecords(): TableRecordData[];
    get tableRecordObj(): Record<string, TableRecordData>;
    get visibleRecords(): TableRecordData[];
    get columns(): RecordTableColumn[];
    get selectable(): boolean;
    get selectionBackend(): boolean;
    get selectionField(): string;
    get allSelected(): boolean;
    get tableCode(): string;
    get tableTitle(): string;
    get currentPage(): number;
    get totalPages(): number;
    get requestedPage(): number;
    get recordsPerPage(): number;
    get totalRecordsNumber(): number;
    get recordsNumber(): number;
    get sorting(): TableSorting;
    get waiting(): boolean;
    get clientPaging(): boolean;
    get sortable(): boolean;
    get globalFilterString(): string;
    set globalFilterString(globalFilterString: string);
    set globalSearch(globalSearch: boolean);
    set restrictedId(restrictedId: any);
    set tableRecords(tableRecords: TableRecordData[]);
    set tableRecordObj(tableRecordObj: Record<string, TableRecordData>);
    set visibleRecords(visibleRecords: TableRecordData[]);
    set columns(columns: RecordTableColumn[]);
    set selectable(selectable: boolean);
    set selectionBackend(selectionBackend: boolean);
    set selectionField(selectionField: string);
    set allSelected(allSelected: boolean);
    set tableCode(tableCode: string);
    set tableTitle(tableTitle: string);
    set currentPage(currentPage: number);
    set totalPages(totalPages: number);
    set requestedPage(requestedPage: number);
    set recordsPerPage(recordsPerPage: number);
    set totalRecordsNumber(totalRecordsNumber: number);
    set recordsNumber(recordsNumber: number);
    set sorting(sorting: TableSorting);
    set waiting(waiting: boolean);
    set clientPaging(clientPaging: boolean);
    set sortable(sortable: boolean);
    getLayout(): string | null;
    setLayout(layout: string): void;
    hasActions(): boolean;
    getSelectedRecords(): (string | null)[];
    activateGlobalSearch(): void;
    inactivateGlobalSearch(): void;
    columnDefinition(fieldCode: string): RecordTableColumn;
    putOnWait(): void;
    freeWaiting(): void;
    setWidget(widget: any): void;
    notifyGlobalAction(actionCode: string): void;
    notifyInlineAction(tableActionEvent: TableActionEvent): void;
    notifyRecordSelection(recordId: any): void;
    notifySelectionAction(actionCode: string): void;
    notifyGetDataAction(requestedPage?: number | null): null;
    clean(): void;
    selectAll(): boolean;
    unSelectAll(): boolean;
    setTableRecords(tableRecords: any[], append?: boolean, prepend?: boolean): void;
    appendRecords(records: any[]): void;
    prependRecords(records: any[]): void;
    replaceRecords(records: any[]): void;
    setTableAppend(append: boolean): void;
    changePage(requestedPage: number): void;
    updateVisibleRecords(): void;
    updateFromServer(tableReceived: any): void;
    getTableRecord(recordId: any): TableRecordData | null;
    getAction(actionCode: string): TableAction | null;
    getActions(actionClass?: string, actionTypes?: string[] | null): TableAction[];
    setFilterById(id: any): void;
    cleanIdFilter(): void;
    setGlobalFilterString(text: string, notifyComponent?: boolean): void;
    addFilterDefinition(columnName: string, filterDefinition: any): void;
    getFilteredRecords(): TableRecordData[];
    getColumnFilter(columnName: string): FilterSetup | null;
    addColumnFilter(columnName: string, columnValues: any | any[], operator?: string | null): void;
    removeColumnFilter(columnName: string): void;
    get currentFilter(): any;
    sort(columnName: string, direction: string): void;
    setRequiredOrder(columnField: string, direction?: string | null): void;
    localSortData(): void;
    recordCompare(recordA: TableRecordData, recordB: TableRecordData, columnCompare: string, direction: string): number;
    formStateChangeCustomSubscribe(form: any, formChangeSubject: any): void;
}
