import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { Observable } from 'rxjs';
import { MDCComponent } from '@angular-mdc/web/base';
import { MdcCheckbox, MdcCheckboxChange } from '@angular-mdc/web/checkbox';
import { MDCDataTableHeaderCell, MDCDataTableRow } from './data-table.directives';
import { MDCDataTableFoundation } from '@material/data-table';
export interface MDCDataTableRowSelectionChangedEvent {
    index: number;
    id: string | null;
    selected: boolean;
}
export declare class MDCDataTable extends MDCComponent<MDCDataTableFoundation> implements AfterViewInit, OnDestroy {
    elementRef: ElementRef;
    /** Emits whenever the component is destroyed. */
    private _destroyed;
    private _headerCheckbox;
    private _headerCheckboxSubscription;
    /** Subscription to checkbox events in rows. */
    private _rowCheckboxesSubscription;
    /** Combined stream of all checkbox row change events. */
    get rowCheckboxChanges(): Observable<MdcCheckboxChange>;
    /** Emitted when all rows are selected. */
    readonly selectedAll: EventEmitter<void>;
    /** Emitted when all rows are unselected. */
    readonly unselectedAll: EventEmitter<void>;
    /** Emitted when a row is selected. */
    readonly selectionChanged: EventEmitter<MDCDataTableRowSelectionChangedEvent>;
    rows: QueryList<MDCDataTableRow>;
    headerCells: QueryList<MDCDataTableHeaderCell>;
    getDefaultFoundation(): MDCDataTableFoundation;
    constructor(elementRef: ElementRef);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table.
     * Use this if registering checkbox is asynchronous.
     */
    layoutAsync(): Promise<void>;
    /**
     * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table.
     * Use this if registering checkbox is synchronous.
     */
    layout(): void;
    /**
     * @return Returns array of selected row ids.
     */
    getSelectedRowIds(): Array<string | null>;
    /**
     * Sets selected row ids. Overwrites previously selected rows.
     * @param rowIds Array of row ids that needs to be selected.
     */
    setSelectedRowIds(rowIds: string[]): void;
    getRows(): MDCDataTableRow[];
    getHeaderCheckbox(): MdcCheckbox | undefined;
    private _unsubscribeHeaderCheckbox;
    private _unsubscribeRowCheckboxes;
    private _registerHeaderCheckbox;
    private _registerRowCheckboxes;
}
