import { Observable } from 'rxjs';
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
import { CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';
import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, QueryList } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { NtOptionComponent, NtOptionParentComponent, NtOptionSelectionChange, NtOverlayComponent } from '@ng-tangram/components/core';
import { NtFormFieldControl } from '@ng-tangram/components/forms';
import { NtSelectIcons } from './select-icons';
export declare function getNtSelectDynamicMultipleError(): Error;
export declare function getNtSelectNonArrayValueError(): Error;
export declare function getNtSelectNonFunctionValueError(): Error;
export declare class NtSelectChange {
    source: NtSelectComponent;
    value: any;
    constructor(source: NtSelectComponent, value: any);
}
export declare class NtSelectComponent extends NtFormFieldControl<any> implements AfterContentInit, ControlValueAccessor, NtOptionParentComponent, OnDestroy {
    private _ngZone;
    private _elementRef;
    private _changeDetectorRef;
    ngControl: NgControl;
    icons: NtSelectIcons;
    private readonly _destroy;
    readonly origin: CdkOverlayOrigin;
    private _selectionModel;
    _positionPairs: ConnectionPositionPair[];
    tabIndex: number;
    private _compareWith;
    private _onChange;
    private _onTouched;
    private _value;
    readonly value: any;
    readonly displayValue: string;
    readonly empty: boolean;
    readonly optionEmpty: boolean;
    private _focused;
    readonly focused: boolean;
    private _disabled;
    disabled: boolean;
    private _required;
    required: boolean;
    private _state;
    readonly state: string;
    private _width;
    readonly width: number;
    private _multiple;
    multiple: boolean;
    private _filter;
    filter: (input: string, option: NtOptionComponent) => boolean;
    filterNotFound: string;
    readonly selected: NtOptionComponent | NtOptionComponent[];
    private _placeholder;
    placeholder: string;
    _keyManager: ActiveDescendantKeyManager<NtOptionComponent>;
    inputElement: ElementRef;
    paneElement: ElementRef;
    overlay: NtOverlayComponent;
    options: QueryList<NtOptionComponent>;
    afterOpen: EventEmitter<any>;
    afterClosed: EventEmitter<any>;
    beforeOpen: EventEmitter<any>;
    beforeClosed: EventEmitter<any>;
    positionChange: EventEmitter<ConnectedOverlayPositionChange>;
    readonly selectionChange: EventEmitter<NtSelectChange>;
    readonly valueChange: EventEmitter<any>;
    compareWith: (o1: any, o2: any) => boolean;
    readonly optionSelectionChanges: Observable<NtOptionSelectionChange>;
    constructor(_ngZone: NgZone, _elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, tabIndex: string, ngControl: NgControl, icons: NtSelectIcons);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    onResize(): void;
    _onSearch(event: KeyboardEvent): void;
    _beforeOpen(event: any): void;
    _beforeClosed(event: any): void;
    _afterOpen(event: any): void;
    _afterClosed(event: any): void;
    _positionChange(change: ConnectedOverlayPositionChange): void;
    _onInputClick(event: Event): void;
    _onInputFocus(): void;
    _onInputBlur(): void;
    focus(): void;
    writeValue(value: any): void;
    registerOnChange(fn: (_: any) => {}): void;
    registerOnTouched(fn: () => {}): void;
    setDisabledState(isDisabled: boolean): void;
    _handleKeydown(event: KeyboardEvent): void;
    private _handleOpenKeydown;
    private _handleClosedKeydown;
    private _resetOptions;
    private _initKeyManager;
    private _resetFilterResult;
    private _initializeSelection;
    private _setSelectionByValue;
    private _selectValue;
    private _propagateChanges;
    private _clearSelection;
    private _sortValues;
    private _onSelect;
    private _highlightCorrectOption;
    private _scrollActiveOptionIntoView;
    _testOnFocus(): void;
    _testOnBlur(): void;
}
