import { CdkFooterRow, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef } from "@angular/cdk/table";
import { AfterViewInit, ChangeDetectorRef, ElementRef, IterableDiffers, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from "@angular/core";
import { Subscription } from "rxjs";
import { ISelectorState } from "../../../services/public-api";
import { SelectionType } from "../../selector/public-api";
import { TableStateHandlerService } from "../table-state-handler.service";
import { ClickableRowOptions, RowHeightOptions, TableSelectionMode } from "../types";
import * as i0 from "@angular/core";
/**
 * @ignore
 */
export declare class TableHeaderRowDefDirective extends CdkHeaderRowDef implements OnInit, OnDestroy, OnChanges {
    private tableStateHandlerService;
    set nuiHeaderRowDef(value: any);
    set nuiHeaderRowDefSticky(value: boolean);
    tableColumnsSubscription: Subscription;
    constructor(template: TemplateRef<any>, _differs: IterableDiffers, tableStateHandlerService: TableStateHandlerService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableHeaderRowDefDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TableHeaderRowDefDirective, "[nuiHeaderRowDef]", never, { "nuiHeaderRowDef": { "alias": "nuiHeaderRowDef"; "required": false; }; "nuiHeaderRowDefSticky": { "alias": "nuiHeaderRowDefSticky"; "required": false; }; }, {}, never, never, false, never>;
}
/**
 * @ignore
 */
export declare class TableRowDefDirective<T> extends CdkRowDef<T> implements OnInit, OnDestroy {
    private tableStateHandlerService;
    set nuiRowDefColumns(value: any);
    set nuiRowDefWhen(value: (index: number, rowData: T) => boolean);
    tableColumnsSubscription: Subscription;
    constructor(template: TemplateRef<any>, _differs: IterableDiffers, tableStateHandlerService: TableStateHandlerService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableRowDefDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowDefDirective<any>, "[nuiRowDef]", never, { "nuiRowDefColumns": { "alias": "nuiRowDefColumns"; "required": false; }; "nuiRowDefWhen": { "alias": "nuiRowDefWhen"; "required": false; }; }, {}, never, never, false, never>;
}
/**
 * @ignore
 */
export declare class TableFooterRowDefDirective extends CdkFooterRowDef implements OnInit, OnDestroy {
    private tableStateHandlerService;
    set nuiFooterRowDef(value: any);
    set nuiFooterRowDefSticky(value: boolean);
    tableColumnsSubscription: Subscription;
    constructor(template: TemplateRef<any>, _differs: IterableDiffers, tableStateHandlerService: TableStateHandlerService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableFooterRowDefDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TableFooterRowDefDirective, "[nuiFooterRowDef]", never, { "nuiFooterRowDef": { "alias": "nuiFooterRowDef"; "required": false; }; "nuiFooterRowDefSticky": { "alias": "nuiFooterRowDefSticky"; "required": false; }; }, {}, never, never, false, never>;
}
/**
 * @ignore
 */
export declare class TableHeaderRowComponent extends CdkHeaderRow implements OnInit, OnDestroy, AfterViewInit {
    private tableStateHandlerService;
    private changeDetectorRef;
    density: RowHeightOptions;
    selectorState: ISelectorState;
    selectable: boolean;
    selectionMode: TableSelectionMode;
    selectionChangeSubscription: Subscription;
    dataSourceChangeSubscription: Subscription;
    get isDensityDefault(): boolean;
    get isDensityCompact(): boolean;
    get isDensityTiny(): boolean;
    get hasOptions(): boolean;
    private onDestroy$;
    constructor(tableStateHandlerService: TableStateHandlerService, changeDetectorRef: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    onSelectorChange(selectorValue: SelectionType): void;
    updateSelectorState(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableHeaderRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableHeaderRowComponent, "nui-header-row, tr[nui-header-row]", ["nuiHeaderRow"], { "density": { "alias": "density"; "required": false; }; }, {}, never, never, false, never>;
}
/**
 * @ignore
 */
/** Data row template container that contains the cell outlet. Adds the right class and role. */
export declare class TableRowComponent extends CdkRow implements OnInit, OnDestroy {
    private elementRef;
    private tableStateHandlerService;
    private changeDetectorRef;
    density: RowHeightOptions;
    rowObject: Object;
    clickableRow: boolean;
    clickableRowConfig: ClickableRowOptions;
    selectable: boolean;
    selectionMode: TableSelectionMode;
    selectionChangeSubscription: Subscription;
    get isSelected(): boolean;
    get isDensityDefault(): boolean;
    get isDensityCompact(): boolean;
    get isDensityTiny(): boolean;
    private rowSelectionElement;
    private onDestroy$;
    constructor(elementRef: ElementRef, tableStateHandlerService: TableStateHandlerService, changeDetectorRef: ChangeDetectorRef);
    ngOnInit(): void;
    rowClickHandler(target: HTMLElement): void;
    rowSelected(): void;
    /**
     * We need to stop propagation of the checkbox click to prevent the row click handler from invoking the checkbox toggle functionality again
     */
    stopPropagation(event: Event): void;
    isRowSelected(): boolean;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableRowComponent, "nui-row, tr[nui-row]", ["nuiRow"], { "density": { "alias": "density"; "required": false; }; "rowObject": { "alias": "rowObject"; "required": false; }; "clickableRow": { "alias": "clickableRow"; "required": false; }; "clickableRowConfig": { "alias": "clickableRowConfig"; "required": false; }; }, {}, never, never, false, never>;
}
/**
 * @ignore
 */
export declare class TableFooterRowComponent extends CdkFooterRow {
    static ɵfac: i0.ɵɵFactoryDeclaration<TableFooterRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableFooterRowComponent, "nui-footer-row, tr[nui-footer-row]", ["nuiFooterRow"], {}, {}, never, never, false, never>;
}
