import { ChangeDetectorRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, QueryList } from '@angular/core';
import { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { MatTable, MatTableDataSource } from '@angular/material/table';
import { ColumnModel } from '../../models/components/column.model';
import { ColumnTypeEnum } from '../../enums/column-type.enum';
import { ButtonClickEvent } from '../../models/button-click.event';
import { BaseModel } from '../../models/base.model';
import { AlignEnum } from '../../enums/align.enum';
import { ButtonModel } from '../../models/components/button.model';
import { TableService } from '../../services/table.service';
import { IconTypeEnum } from '../../enums/icon-type.enum';
import { TableFooterModel } from '../../models/components/table-footer.model';
import { NiceComponentLibraryConfig } from '../../models/nice-component-library.config';
import { NumericInputFormat } from '../../directives/numeric-input-format';
import { CvaFormControl } from '../cva-form-control';
import * as i0 from "@angular/core";
export declare class CvaSmartTableComponent implements ControlValueAccessor, OnChanges, OnInit, OnDestroy {
    private ref;
    config: NiceComponentLibraryConfig;
    private injector;
    protected readonly ColumnTypeEnum: typeof ColumnTypeEnum;
    protected readonly IconTypeEnum: typeof IconTypeEnum;
    protected readonly AlignEnum: typeof AlignEnum;
    protected readonly TableService: typeof TableService;
    cellComponents: QueryList<CvaFormControl>;
    moduleName: string;
    columns: ColumnModel[];
    buttons: ButtonModel[];
    superHeaders: ColumnModel[][];
    value: any[];
    minRow: number;
    maxRow: number;
    errorMessages: Map<string, () => string>;
    isFormControl: boolean;
    isSticky: boolean;
    isStickyHeader: boolean;
    isStickyFooter: boolean;
    formatFunc: NumericInputFormat;
    clickAction: EventEmitter<ButtonClickEvent>;
    onChange: EventEmitter<any>;
    matTable?: MatTable<any>;
    isExpandRowTable: boolean;
    expandRowProperty: string;
    $displayedColumns: string[];
    $displayedFooters: string[][];
    datasource: MatTableDataSource<BaseModel | any>;
    formControl: AbstractControl | undefined;
    selectAllChecked: boolean;
    buttonColspan: number;
    private statusSub?;
    constructor(ref: ChangeDetectorRef, config: NiceComponentLibraryConfig, injector: Injector, ngControl: NgControl);
    get displayedFooters(): string[][];
    ngOnChanges(): void;
    propagateChange: (_: any) => void;
    writeValue(obj: any[] | any): void;
    getParentRowData(): any[];
    registerOnChange(fn: any): void;
    registerOnTouched(): void;
    ngOnInit(): void;
    private buildDisplayedFooters;
    onClick(action: string, result: any, index: number | null, mouseEvent?: MouseEvent): void;
    onCellValueChange(result: any, column: ColumnModel, $event: any): void;
    toggleSelect(val: MatCheckboxChange | null, result?: any, column?: ColumnModel): void;
    onDisplayHeaderCell(column: ColumnModel): boolean;
    onDisplayFooter(footer: TableFooterModel, dataTable: BaseModel[]): boolean;
    callValidator(): void;
    ngOnDestroy(): void;
    getIsDecimal(column: ColumnModel): boolean;
    getErrorMessageMap(column: ColumnModel): Map<string, () => string>;
    expandRow(i: number, row: BaseModel & Record<string, any>, parentRowClassIndex: number | 0 | 1): void;
    getAlign(column: ColumnModel): AlignEnum;
    trackByColumnDef(index: number, item: {
        columnDef: string;
    }): string;
    trackByFooter(index: number, item: {
        columnDef?: string;
    }): string;
    trackByDisplayedFooter(index: number, item: string[]): string;
    trackBySuperHeaderRow(index: number, row: ColumnModel[]): string;
    getHeaderButtonColspan(): number;
    markAllControlsAsDirty(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CvaSmartTableComponent, [null, null, null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CvaSmartTableComponent, "cva-smart-table", never, { "moduleName": { "alias": "moduleName"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "buttons": { "alias": "buttons"; "required": false; }; "superHeaders": { "alias": "superHeaders"; "required": false; }; "value": { "alias": "value"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "isFormControl": { "alias": "isFormControl"; "required": false; }; "isSticky": { "alias": "isSticky"; "required": false; }; "isStickyHeader": { "alias": "isStickyHeader"; "required": false; }; "isStickyFooter": { "alias": "isStickyFooter"; "required": false; }; "formatFunc": { "alias": "formatFunc"; "required": false; }; "isExpandRowTable": { "alias": "isExpandRowTable"; "required": false; }; "expandRowProperty": { "alias": "expandRowProperty"; "required": false; }; }, { "clickAction": "clickAction"; "onChange": "onChange"; }, never, never, false, never>;
}
