import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
import { BreakpointObserver } from '@angular/cdk/layout';
import { List, Record, CellColor, Column, CustomLayoutCell, CellControl } from '../model';
import { ObjectTree, Button, ButtonSize, Action } from '../../button/model';
import { KeyMap, TextField, DropdownField, FieldChange } from '../../field/model';
import { FormDiaplyMode, FormTitleIconPosition } from '../../form/model';
import { FormGroup } from '@angular/forms';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { SelectionModel } from '@angular/cdk/collections';
import { Ability } from '@casl/ability';
import { Subscription } from 'rxjs';
export declare class ListComponent implements OnInit, OnDestroy {
    ability: Ability;
    breakpointObserver: BreakpointObserver;
    _listConfig: List;
    get listConfig(): List;
    set listConfig(_listConfig: List);
    _record: Record;
    get record(): Record;
    set record(_record: Record);
    sourceIdentifier: string;
    sourceIndex: number;
    widgetArrayIndex: number;
    originalData: any;
    parent: ObjectTree;
    _listReset: boolean;
    get listReset(): boolean;
    set listReset(_listReset: boolean);
    disabled: boolean;
    keyMap: Array<KeyMap>;
    onFormChange: EventEmitter<any>;
    onFieldChange: EventEmitter<any>;
    onButtonClick: EventEmitter<any>;
    onPageChange: EventEmitter<any>;
    onSortChange: EventEmitter<any>;
    _expanded: boolean;
    get expanded(): boolean;
    set expanded(_expanded: boolean);
    expandRowIndex: number;
    dataSource: MatTableDataSource<any>;
    set contentPage(pagination: MatPaginator);
    set contentSort(sort: MatSort);
    cellCount: number;
    isCustomTemplate: boolean;
    isMobile: boolean;
    isTablet: boolean;
    isDesktop: boolean;
    displayVertical: boolean;
    form: FormGroup;
    commonListForm: FormGroup;
    formIndex: number;
    inlineEditButtons: Array<Button>;
    hasDisplayActions: boolean;
    isInlineEditable: boolean;
    inlineButtonSize: ButtonSize;
    childRows: Map<number, Record>;
    childColumnCount: number;
    displayModes: Array<FormDiaplyMode>;
    columnNames: Array<string>;
    columnConfigs: Array<Column>;
    totalDispalyableWidth: number;
    selection: SelectionModel<any>;
    hideCard: boolean;
    hideHeader: boolean;
    hideFooter: boolean;
    pageSizeOptions: Array<number>;
    rowCount: number;
    limit: number;
    expandedRow: any | null;
    rowColors: Array<CellColor>;
    cellColors: Array<Array<CellColor>>;
    hoverRowData: any;
    hoverRowIndex: number;
    showCard: boolean;
    iconPosition: FormTitleIconPosition;
    selectableAdded: boolean;
    breakpointSubscription: Subscription;
    constructor(ability: Ability, breakpointObserver: BreakpointObserver);
    ngOnInit(): void;
    init(): void;
    setCustomTemplate(): void;
    sortDirection: 'asc' | 'desc' | '';
    sticky(): void;
    onScrolled(event: any): void;
    contentFilterColumnSpan: number;
    columnSelectionColumnSpan: number;
    setFilterBar(): void;
    setPageSize(): void;
    setIconPosition(): void;
    filterField: TextField;
    getFilterField(): TextField;
    columnSelectorField: DropdownField;
    getColumnSelectorField(): DropdownField;
    updateColumnDisplay(event: any): void;
    inlinEditButton(identifier: string, label: string, icon: string): Button;
    getColumnLabel(column: Column): string;
    getColumnKey(column: Column): string;
    resetInlineEditButton(identifier: string, label: string, icon: string): void;
    showRowEditable(): void;
    setRowEditablity(index: number): void;
    populateAllChilds(): void;
    getChildRows(row: any): any;
    getValue(colIndex: number, cFieldIndex: number, row: any, value: any): any;
    updateFilter(field: any): void;
    initFormGroup(cnt: number): void;
    initCommonFormGroup(): void;
    getCurrentRecord(cnt: number): any;
    getObjectTree(currentRow: any): ObjectTree;
    /** Whether the number of selected elements matches the total number of rows. */
    isAllSelected(): boolean;
    /** Selects all rows if they are not all selected; otherwise clear selection. */
    masterToggle(): void;
    /** The label for the checkbox on the passed row */
    checkboxLabel(row?: any): string;
    setCardVisibility(): void;
    setColumnNames(): void;
    setDetailColumnCount(): void;
    setColors(): void;
    selectableButton(identifier: string, label: string, icon: string): Button;
    fieldChange(fieldChange: FieldChange): void;
    formChange(form: FormGroup): void;
    buttonClick(action: Action): void;
    getLayout(): void;
    rowClick(row: any, rowIndex: any, context: any, event: any): void;
    resetVerticalDisplay(): void;
    getButton(cell: CustomLayoutCell): CellControl[];
    tooltipPosition: {
        top: number;
        left: number;
    };
    onHover(event: any, rowIndex: any, row: any): void;
    ngOnDestroy(): void;
}
