/**
 * @license
 * Copyright Alibaba.com All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
import { FocusMonitor } from '@angular/cdk/a11y';
import { CdkConnectedOverlay, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { Platform } from '@angular/cdk/platform';
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { NzNoAnimationDirective } from 'ng-zorro-antd/core';
import { NzSafeAny, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';
import { NzOptionGroupComponent } from './option-group.component';
import { NzOptionComponent } from './option.component';
import { NzSelectTopControlComponent } from './select-top-control.component';
import { NzFilterOptionType, NzSelectItemInterface, NzSelectModeType } from './select.types';
import * as i0 from "@angular/core";
export declare type NzSelectSizeType = 'large' | 'default' | 'small';
export declare class NzSelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, AfterContentInit, OnChanges {
    private cdr;
    private elementRef;
    private platform;
    private focusMonitor;
    noAnimation?: NzNoAnimationDirective | undefined;
    nzSize: NzSelectSizeType;
    nzDropdownClassName: string | null;
    nzDropdownMatchSelectWidth: boolean;
    nzDropdownStyle: {
        [key: string]: string;
    } | null;
    nzNotFoundContent: string | null;
    nzPlaceHolder: string | TemplateRef<NzSafeAny> | null;
    nzMaxTagCount: number;
    nzDropdownRender: TemplateRef<NzSafeAny> | null;
    nzCustomTemplate: TemplateRef<{
        $implicit: NzSelectItemInterface;
    }> | null;
    nzSuffixIcon: TemplateRef<NzSafeAny> | null;
    nzClearIcon: TemplateRef<NzSafeAny> | null;
    nzRemoveIcon: TemplateRef<NzSafeAny> | null;
    nzMenuItemSelectedIcon: TemplateRef<NzSafeAny> | null;
    nzShowArrow: boolean;
    nzTokenSeparators: string[];
    nzMaxTagPlaceholder: TemplateRef<{
        $implicit: NzSafeAny[];
    }> | null;
    nzMaxMultipleCount: number;
    nzMode: NzSelectModeType;
    nzFilterOption: NzFilterOptionType;
    compareWith: (o1: NzSafeAny, o2: NzSafeAny) => boolean;
    nzAllowClear: boolean;
    nzBorderless: boolean;
    nzShowSearch: boolean;
    nzLoading: boolean;
    nzAutoFocus: boolean;
    nzAutoClearSearchValue: boolean;
    nzServerSearch: boolean;
    nzDisabled: boolean;
    nzOpen: boolean;
    readonly nzOnSearch: EventEmitter<string>;
    readonly nzScrollToBottom: EventEmitter<void>;
    readonly nzOpenChange: EventEmitter<boolean>;
    readonly nzBlur: EventEmitter<void>;
    readonly nzFocus: EventEmitter<void>;
    originElement: ElementRef;
    cdkConnectedOverlay: CdkConnectedOverlay;
    nzSelectTopControlComponent: NzSelectTopControlComponent;
    listOfNzOptionComponent: QueryList<NzOptionComponent>;
    listOfNzOptionGroupComponent: QueryList<NzOptionGroupComponent>;
    nzOptionGroupComponentElement: ElementRef;
    nzSelectTopControlComponentElement: ElementRef;
    private listOfValue$;
    private listOfTemplateItem$;
    private listOfTagAndTemplateItem;
    private searchValue;
    private value;
    private destroy$;
    onChange: OnChangeType;
    onTouched: OnTouchedType;
    dropDownPosition: 'top' | 'center' | 'bottom';
    triggerWidth: number | null;
    listOfContainerItem: NzSelectItemInterface[];
    listOfTopItem: NzSelectItemInterface[];
    activatedValue: NzSafeAny | null;
    listOfValue: NzSafeAny[];
    generateTagItem(value: string): NzSelectItemInterface;
    onItemClick(value: NzSafeAny): void;
    onItemDelete(item: NzSelectItemInterface): void;
    onItemHover(value: NzSafeAny): void;
    updateListOfContainerItem(): void;
    clearInput(): void;
    updateListOfValue(listOfValue: NzSafeAny[]): void;
    onTokenSeparate(listOfLabel: string[]): void;
    onKeyDown(e: KeyboardEvent): void;
    setOpenState(value: boolean): void;
    onOpenChange(): void;
    onInputValueChange(value: string): void;
    onClearSelection(): void;
    focus(): void;
    blur(): void;
    onPositionChange(position: ConnectedOverlayPositionChange): void;
    updateCdkConnectedOverlayStatus(): void;
    updateCdkConnectedOverlayPositions(): void;
    constructor(cdr: ChangeDetectorRef, elementRef: ElementRef, platform: Platform, focusMonitor: FocusMonitor, noAnimation?: NzNoAnimationDirective | undefined);
    writeValue(modelValue: NzSafeAny | NzSafeAny[]): void;
    registerOnChange(fn: OnChangeType): void;
    registerOnTouched(fn: OnTouchedType): void;
    setDisabledState(disabled: boolean): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDef<NzSelectComponent>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<NzSelectComponent, "nz-select", ["nzSelect"], { "nzSize": "nzSize"; "nzDropdownClassName": "nzDropdownClassName"; "nzDropdownMatchSelectWidth": "nzDropdownMatchSelectWidth"; "nzDropdownStyle": "nzDropdownStyle"; "nzNotFoundContent": "nzNotFoundContent"; "nzPlaceHolder": "nzPlaceHolder"; "nzMaxTagCount": "nzMaxTagCount"; "nzDropdownRender": "nzDropdownRender"; "nzCustomTemplate": "nzCustomTemplate"; "nzSuffixIcon": "nzSuffixIcon"; "nzClearIcon": "nzClearIcon"; "nzRemoveIcon": "nzRemoveIcon"; "nzMenuItemSelectedIcon": "nzMenuItemSelectedIcon"; "nzShowArrow": "nzShowArrow"; "nzTokenSeparators": "nzTokenSeparators"; "nzMaxTagPlaceholder": "nzMaxTagPlaceholder"; "nzMaxMultipleCount": "nzMaxMultipleCount"; "nzMode": "nzMode"; "nzFilterOption": "nzFilterOption"; "compareWith": "compareWith"; "nzAllowClear": "nzAllowClear"; "nzBorderless": "nzBorderless"; "nzShowSearch": "nzShowSearch"; "nzLoading": "nzLoading"; "nzAutoFocus": "nzAutoFocus"; "nzAutoClearSearchValue": "nzAutoClearSearchValue"; "nzServerSearch": "nzServerSearch"; "nzDisabled": "nzDisabled"; "nzOpen": "nzOpen"; }, { "nzOnSearch": "nzOnSearch"; "nzScrollToBottom": "nzScrollToBottom"; "nzOpenChange": "nzOpenChange"; "nzBlur": "nzBlur"; "nzFocus": "nzFocus"; }, ["listOfNzOptionComponent", "listOfNzOptionGroupComponent"]>;
}
