import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { Platform } from '@angular/cdk/platform';
import { Observable } from 'rxjs';
import { MDCComponent } from '@angular-mdc/web/base';
import { MdcListItem, MdcListSelectionChange } from './list-item';
import { MDCListFoundation } from '@material/list';
/** Change event that is being fired whenever the selected state of an option changes. */
export declare class MdcListItemChange {
    /** Reference to the selection list that emitted the event. */
    source: MdcList;
    /** Reference to the option that has been changed. */
    option: MdcListItem;
    constructor(
    /** Reference to the selection list that emitted the event. */
    source: MdcList, 
    /** Reference to the option that has been changed. */
    option: MdcListItem);
}
/** Notifies user action on list item including keyboard and mouse actions. */
export interface MdcListItemAction {
    index: number;
}
export declare class MdcListGroup {
    elementRef: ElementRef;
    subheader?: string;
    constructor(elementRef: ElementRef);
}
export declare class MdcListGroupSubheader {
    elementRef: ElementRef;
    constructor(elementRef: ElementRef);
}
export declare class MdcList extends MDCComponent<any> implements AfterViewInit, OnDestroy {
    private _platform;
    private _changeDetectorRef;
    elementRef: ElementRef;
    get twoLine(): boolean;
    set twoLine(value: boolean);
    private _twoLine;
    get dense(): boolean;
    set dense(value: boolean);
    private _dense;
    get border(): boolean;
    set border(value: boolean);
    private _border;
    get avatar(): boolean;
    set avatar(value: boolean);
    private _avatar;
    get interactive(): boolean;
    set interactive(value: boolean);
    private _interactive;
    get disableRipple(): boolean;
    set disableRipple(value: boolean);
    private _disableRipple;
    get singleSelection(): boolean | undefined;
    set singleSelection(value: boolean | undefined);
    private _singleSelection;
    get useActivatedClass(): boolean;
    set useActivatedClass(value: boolean);
    private _useActivatedClass;
    get useSelectedClass(): boolean;
    set useSelectedClass(value: boolean);
    private _useSelectedClass;
    get verticalOrientation(): boolean;
    set verticalOrientation(value: boolean);
    private _verticalOrientation;
    get wrapFocus(): boolean;
    set wrapFocus(value: boolean);
    private _wrapFocus;
    items: QueryList<MdcListItem>;
    /** Emits a change event whenever the selected state of an option changes. */
    readonly selectionChange: EventEmitter<MdcListItemChange>;
    /** Emits an event for keyboard and mouse actions. */
    readonly actionEvent: EventEmitter<MdcListItemAction>;
    /** Subscription to changes in list items. */
    private _changeSubscription;
    /** Subscription to selection events in list items. */
    private itemSelectionSubscription;
    /** Combined stream of all of the list item selection events. */
    get listItemSelections(): Observable<MdcListSelectionChange>;
    getDefaultFoundation(): MDCListFoundation;
    constructor(_platform: Platform, _changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    setSelectedIndex(index: number): void;
    setSelectedValue(value: any): void;
    getSelectedItem(): MdcListItem | undefined;
    getSelectedIndex(): number;
    getSelectedValue(): any;
    getSelectedText(): string;
    getListItemByValue(value: any): MdcListItem | undefined;
    getListItemByIndex(index: number): MdcListItem | undefined;
    getListItemIndexByValue(value: any): number;
    focusItemAtIndex(index: number): void;
    focusFirstElement(): number;
    focusLastElement(): number;
    focusNextElement(index: number): number;
    focusPrevElement(index: number): number;
    setRole(role: string): void;
    setTabIndex(index: number): void;
    focus(): void;
    reset(): void;
    private _applySelectionState;
    private _resetListItems;
    private _dropSubscriptions;
    /** Listens to selected events on each list item. */
    private _listenForListItemSelection;
    _onFocusIn(evt: FocusEvent): void;
    _onFocusOut(evt: FocusEvent): void;
    _onKeydown(evt: KeyboardEvent): void;
    _handleClickEvent(evt: MouseEvent): void;
    private _getListItemByEventTarget;
    private _getListItemIndexByEvent;
    /** Retrieves the DOM element of the component host. */
    private _getHostElement;
}
