import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { MatTableDataSource } from '@angular/material/table';
import { TccFieldState, TccDataType, TccKeyValuePair, TccClarcDate } from '../../../odata/models/shared.model';
import { TccDialogWindowService } from '../../services/tcc-dialog-window/tcc-dialog-window.service';
import { TccDesktopToMask } from '../../../shared/services/tcc-desktop-to-mask/tcc-desktop-to-mask.service';
import { TccInputMask } from '../../../shared/models/inputMask.model';
import { TccClarcDatePipe } from '../../../shared/pipes/tcc-clarc-date/tcc-clarc-date.pipe';
import { TccTableCheckboxControllerDirective } from '../../../shared/directives/tcc-table-checkbox-controller/tcc-table-checkbox-controller.directive';
import { TccBankersRoundingPipe } from '../../../shared/pipes/tcc-bankers-rounding/tcc-bankers-rounding.pipe';
import { MatDialog } from '@angular/material/dialog';
import { LocaleService } from '../../services/tcc-locale/tcc-locale.service';
import { DecimalPipe } from '@angular/common';
import { TccRegisterMessageService } from '../../services/tcc-register-message/tcc-register-message-service';
export declare namespace TccPosTable {
    interface posTableUserexitEvent {
        id: string;
        row: string;
    }
}
declare enum cellSize {
    small = "smallCell",
    medium = "mediumCell",
    large = "largeCell",
    extraLarge = "extraLargeCell"
}
export declare class TccPosTableComponent implements OnInit, OnDestroy {
    private fb;
    dialog: TccDialogWindowService;
    matDialog: MatDialog;
    private datePipe;
    private bankersRoundingPipe;
    private decimalPipe;
    private localeService;
    private registerMessageService;
    checkDir: TccTableCheckboxControllerDirective<any>;
    posTable: any;
    rowSelect?: boolean;
    set tableData(value: Array<{
        [id: string]: {
            Value: any;
            Confidence: number;
        };
    }>);
    set columnConfig(tableElements: TccDesktopToMask.tableElements);
    disableFields: Array<string>;
    checkedBoxes: EventEmitter<{
        value: Array<number>;
    }>;
    onFocus: EventEmitter<{
        id: string;
        displayText: string;
        row: number;
    }>;
    onUserexit: EventEmitter<TccPosTable.posTableUserexitEvent>;
    onBlur: EventEmitter<{
        id: string;
        displayText: string;
        row: number;
    }>;
    onConfirm: EventEmitter<{
        id: string;
        displayText: string;
        row: number;
    }>;
    onDropdown: EventEmitter<{
        id: string;
        displayText: string;
        row: number;
    }>;
    changed: EventEmitter<{
        id: string;
        value: any;
        index: number;
    }>;
    deleteRowIndex: EventEmitter<{
        index: number;
    }>;
    component: TccPosTableComponent;
    private _data;
    rawData: Array<{
        [id: string]: number | string | TccClarcDate | boolean;
    }>;
    dataSource: MatTableDataSource<{
        [id: string]: string | number | boolean | TccClarcDate;
    }, import("@angular/material/paginator.d").MatPaginator>;
    dataWithConfidence: Array<{
        [id: string]: {
            Value: any;
            Confidence: number;
        };
    }>;
    columnNames: {
        [propName: string]: string;
    };
    displayedColumns: Array<string>;
    typeConfig: {
        [propName: string]: TccDesktopToMask.tableElement;
    };
    colConfig: {
        [propName: string]: {
            enabled: boolean;
            visible: boolean;
            size: cellSize;
        };
    };
    inputType: {
        [propName: string]: string;
    };
    elementTypes: typeof TccInputMask.elementtype;
    fieldStates: Array<{
        [propName: string]: {
            state: TccFieldState;
            message: string;
        };
    }>;
    lastUsedField: {
        Id: string;
        rowIndex: number;
    };
    selectedRows: Array<number>;
    fields: Array<Object>;
    _refresh: number;
    userexitExecuted: boolean;
    dataType: typeof TccDataType;
    valueSuggestion: any;
    addedRowsIndexes: number[];
    tableForm: UntypedFormGroup;
    get data(): {}[];
    get confidenceData(): {
        [id: string]: {
            Value: any;
            Confidence: number;
        };
    }[];
    private get rows();
    resetRows(): void;
    private posTableSection;
    constructor(fb: UntypedFormBuilder, dialog: TccDialogWindowService, matDialog: MatDialog, datePipe: TccClarcDatePipe, bankersRoundingPipe: TccBankersRoundingPipe, decimalPipe: DecimalPipe, localeService: LocaleService, registerMessageService: TccRegisterMessageService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    _setValue(id: string, row: number, triggerChange?: boolean): void;
    setValue(id: string, row: number, data: any, triggerChange?: boolean): boolean;
    getValue(id: string, row: number): string | number | boolean | TccClarcDate;
    /**
     * Returns the displayValue (converted into localized strings) of a given field
     * @param id fieldId
     * @param row row index
     * @returns displayValue of the given field
     */
    getTableValue(id: string, row: number): string | number | boolean | TccClarcDate;
    setRowConfidence(row: number, confidence: number): void;
    setFieldConfidence(id: string, row: number, confidence: number): void;
    private addRow;
    private getValidatorArray;
    private updateForm;
    patchForm(): void;
    getTableData(): {}[];
    getTableDataWithConfidence(): {
        [id: string]: {
            Value: any;
            Confidence: number;
        };
    }[];
    onSelectFocus(id: string, row: number): void;
    setLastUsedField(id: string, row: number): void;
    openEditRowDialog(i: number): void;
    editRowCallback(result: {
        returnvalue: 0 | 1;
        values: TccInputMask.valueChanges;
    }, rowIndex: number): void;
    private _editRowCallback;
    checkboxEvent($event: {
        Entity: any;
        Value: boolean;
    } | {
        Value: boolean;
    }): void;
    setState(id: string, row: number, state: TccFieldState, message: string): boolean;
    private mapFieldState;
    cellEnterPress($event: any, cell: string, row: number): void;
    onInputFocus(id: string, row: number): void;
    onInputBlur(id: string, row: number): void;
    onCellKeyDown(event: KeyboardEvent): void;
    onDropDown(id: string, row: number): void;
    selectionChanged(column: string, row: number): void;
    onChange(column: string, row: number, changedValue: any): void;
    onFieldEnter(input: HTMLInputElement, column: any, i: any): void;
    cellClick(column: string, rowIndex: number): void;
    private getConfidenceState;
    getFieldId(col: number): string;
    userExitEvent(col: string, row: string): void;
    getElementRef(col: string, row: number): ElementRef;
    getCount(): number;
    getFocused(): string;
    setFocused(id: string, row: number): boolean;
    getConfidence(id: string, row: number): number;
    getDisplayText(id: string): string;
    setDisplayText(id: string, text: string): void;
    getLastValue(): any;
    setLastValue(): void;
    getName(columnIndex: number): string;
    getPropertyValue(id: string, propName: string): any;
    SetProperties(id: string, enabled: boolean, visible: boolean): void;
    getRawValue(id: string, row: number): string;
    getChildren(id: string, row: number): any;
    getEnabled(id: string): boolean;
    setEnabled(id: string, enable: boolean): void;
    getVisible(id: string): boolean;
    setVisible(id: string, visible: boolean): void;
    getSelectionList(id: string): Array<TccKeyValuePair>;
    setSelectionList(id: string, list: Array<TccKeyValuePair>): void;
    addToSelectionList(id: string, list: Array<TccKeyValuePair>): void;
    clearSelectionList(id: string): void;
    clear(): boolean;
    deleteRow(row: number): boolean;
    private rebuildFieldStates;
    getCellFocusColumn(): number;
    getCellFocusRow(): number;
    getSelection(): {
        [rowIndex: number]: Object;
    };
    insertRow(row?: number): boolean;
    private setInitalErrorMessages;
    private registerPosTableError;
    removeSuggestionValue(column: string, index: number, event?: MouseEvent): void;
    acceptAiSuggestions(): void;
    getNamebyId(fieldId: string): string;
    clearPosTableMessages(): void;
}
export {};
