import { ChangeDetectorRef, ElementRef, EventEmitter, QueryList, WritableSignal } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table';
import { IExpandable } from '../../../odata/models/shared.model';
import { TccResizeObserverService } from '../../services/tcc-resize-observer/tcc-resize-observer.service';
import { FormGroup } from '@angular/forms';
import { TccContextMenu } from '../../../shared/components/tcc-context-menu/tcc-context-menu.component';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { CheckDisabledPipe } from './pipes/check-disabled.pipe';
import { MatPaginator } from '@angular/material/paginator';
import { CheckDisableContextMenuPipe } from './pipes/check-disable-context-menu-pipe';
export declare namespace TccExpandableTable {
    interface RowData extends IExpandable {
        id: string;
        expandable?: Array<RowData>;
    }
}
export declare class TccExpandableTableComponent {
    changeDetector: ChangeDetectorRef;
    resizeService: TccResizeObserverService;
    checkDisabled: CheckDisabledPipe;
    checkDisableContextMenu: CheckDisableContextMenuPipe;
    showHeader: boolean;
    isExpandedElement: boolean;
    set columnsToDisplay(columns: {
        [id: string]: string;
    });
    checkedRows: FormGroup<{
        checkboxes: FormGroup<{}>;
    }>;
    tccContextMenuOptions: TccContextMenu.option[];
    tccContextMenuOptionsComplex: TccContextMenu.option[];
    rowDisableConfig: {
        propertyKey: string;
        propertyValue: any;
    };
    contextMenuDisabledComplexBoPropertiesOptions: TccContextMenu.option[];
    contextMenuDisabledBoPropertiesOptions: TccContextMenu.option[];
    set currSubtypeId(id: string);
    onRowClickEvent: EventEmitter<{
        element: TccExpandableTable.RowData;
        index: number[];
    }>;
    onCheckboxChangeEvent: EventEmitter<{
        Id: string;
        Value: boolean;
    }>;
    onCheckAllEvent: EventEmitter<boolean>;
    bubbleEvent: EventEmitter<{
        Id: string;
        Value: boolean;
    }>;
    tccContextMenuClick: EventEmitter<any>;
    changeOrder: EventEmitter<{
        dropEvent: CdkDragDrop<string[]>;
        draggedElement: TccExpandableTable.RowData;
    }>;
    rowDragStarted: EventEmitter<TccExpandableTable.RowData>;
    tableContainer: ElementRef;
    table: ElementRef;
    headerCheckbox: any;
    subTables: QueryList<TccExpandableTableComponent>;
    constructor(changeDetector: ChangeDetectorRef, resizeService: TccResizeObserverService, checkDisabled: CheckDisabledPipe, checkDisableContextMenu: CheckDisableContextMenuPipe);
    set elements(elements: Array<TccExpandableTable.RowData>);
    set selectedRow(selectedRow: number[]);
    _columKeyValue: {
        [id: string]: string;
    };
    _columnsToDisplay: Array<string>;
    headerWidth: number;
    _elements: Array<TccExpandableTable.RowData>;
    dataSource: MatTableDataSource<TccExpandableTable.RowData, MatPaginator>;
    expandedElement: {
        [elementId: string]: boolean;
    };
    selectedChildRows: {
        [elementId: string]: number[];
    };
    _selectedRow$: WritableSignal<number>;
    draggedRow: TccExpandableTable.RowData;
    disableContextMenuConfig: {
        subtypeId: string;
        propOtion: TccContextMenu.option[];
        complexPropOption: TccContextMenu.option[];
        disabledPropOption: TccContextMenu.option[];
        disabledComplexPropOption: TccContextMenu.option[];
    };
    _currSubtypeId: string;
    isBoolean(val: any): boolean;
    whenpredicatefnc(index: number, rowData: any): boolean;
    pushPopElement(event: any, elementId: any): void;
    onRowClick(rowData: {
        element: TccExpandableTable.RowData;
        index: number[];
    }, index: number): void;
    getCheckedRows(): Array<string>;
    checkAllRows($event: any): void;
    resetChecked(): void;
    onCheckboxChange($event: any, element: any): void;
    onCheckboxClick($event: any, element: any): void;
    handleEventBubble($event: any): void;
    contextMenuOptionClick(event: any): void;
    getDisplayedRows(): TccExpandableTable.RowData[];
    _rowDragStarted(element: TccExpandableTable.RowData): void;
    onListDrop(event: CdkDragDrop<string[]>): void;
}
