import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, Renderer2 } from '@angular/core';
import { Observable } from 'rxjs';
import { Bem } from '../../internal/utils';
import { BaseSelect } from '../base-select';
import { OptionComponent } from '../option/option.component';
import { SelectAllStatus, SelectFilterOption, TagClassFn } from '../select.types';
import * as i0 from "@angular/core";
export declare class MultiSelectComponent<T = unknown> extends BaseSelect<T, T[]> implements AfterContentInit, AfterViewInit {
    private readonly renderer;
    bem: Bem;
    bemSelectAll: Bem;
    selectedOptions$: Observable<Array<SelectFilterOption<T>>>;
    selectAllStatus$: Observable<SelectAllStatus>;
    selectAllStatus: SelectAllStatus;
    hasEnabledOptions$: Observable<boolean>;
    isMulti: boolean;
    model: T[];
    values$: import("rxjs").ReplaySubject<T[]>;
    tagClassFn: TagClassFn<T>;
    maxRowCount: number;
    customRowHeight: number;
    allowSelectAll: boolean;
    inputRef: ElementRef<HTMLInputElement>;
    inputValueMirror: ElementRef<HTMLElement>;
    get hostPosition(): string;
    get hostDisplay(): string;
    inputValue: string;
    hasDisabledOption: boolean;
    get rootClass(): string;
    get tagSize(): "medium" | "mini";
    get inputClass(): string;
    get displayClearBtn(): number;
    get maxHeight(): string;
    private readonly withMaxRowCount;
    focused: boolean;
    trackByValue: (_: number, item: SelectFilterOption<T>) => unknown;
    constructor(cdr: ChangeDetectorRef, renderer: Renderer2);
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    onVisibleOptions(visible: boolean): void;
    onInput(event: Event): void;
    onInputFocus(): void;
    onInputBlur(): void;
    onKeyDown(event: KeyboardEvent): void;
    selectOption(option: OptionComponent<T>): void;
    addValue(value: T): void;
    removeValue(value: T): void;
    clearValue(event: Event): void;
    onSelectAllClick(): void;
    private includes;
    protected valueIn(v: T[]): T[];
    private resetInput;
    private setInputWidth;
    static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent<any>, "aui-multi-select", never, { "tagClassFn": { "alias": "tagClassFn"; "required": false; }; "maxRowCount": { "alias": "maxRowCount"; "required": false; }; "customRowHeight": { "alias": "customRowHeight"; "required": false; }; "allowSelectAll": { "alias": "allowSelectAll"; "required": false; }; }, {}, never, ["*", "aui-option-placeholder"], true, never>;
    static ngAcceptInputType_allowSelectAll: unknown;
}
