import * as i0 from '@angular/core';
import { OnChanges, TemplateRef, AfterViewInit, EventEmitter, SimpleChanges, OnInit, ElementRef, AfterContentInit, QueryList } from '@angular/core';
import { Subject } from 'rxjs';
import { NzSafeAny, NzSizeLDSType, NzStatus, NzVariant, OnChangeType, OnTouchedType, NgClassInterface, NzValidateStatus } from 'ng-zorro-antd/core/types';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { CdkConnectedOverlay, ConnectionPositionPair, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { ControlValueAccessor } from '@angular/forms';
import { NzNoAnimationDirective } from 'ng-zorro-antd/core/animation';
import { NzConfigKey } from 'ng-zorro-antd/core/config';
import { NzFormStatusService } from 'ng-zorro-antd/core/form';
import * as i1 from 'ng-zorro-antd/space';

/**
 * 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
 */

declare class NzOptionGroupComponent implements OnChanges {
    nzLabel: string | number | TemplateRef<NzSafeAny> | null;
    changes: Subject<void>;
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOptionGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOptionGroupComponent, "nz-option-group", ["nzOptionGroup"], { "nzLabel": { "alias": "nzLabel"; "required": false; }; }, {}, never, ["*"], true, never>;
}

/**
 * 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
 */

type NzSelectModeType = 'default' | 'multiple' | 'tags';
interface NzSelectItemInterface {
    template?: TemplateRef<NzSafeAny> | null;
    nzLabel: string | number | null;
    nzValue: NzSafeAny | null;
    nzTitle?: string | number | null;
    nzDisabled?: boolean;
    nzHide?: boolean;
    nzCustomContent?: boolean;
    groupLabel?: string | number | TemplateRef<NzSafeAny> | null;
    type?: string;
    key?: NzSafeAny;
}
interface NzSelectOptionInterface {
    label: string | number | null | TemplateRef<NzSafeAny>;
    value: NzSafeAny | null;
    title?: string | number | null;
    disabled?: boolean;
    hide?: boolean;
    groupLabel?: string | number | TemplateRef<NzSafeAny> | null;
    key?: string | number;
}
type NzSelectTopControlItemType = Partial<NzSelectItemInterface> & {
    contentTemplateOutlet: TemplateRef<NzSafeAny> | null;
    contentTemplateOutletContext: NzSafeAny;
};
type NzFilterOptionType = (input: string, option: NzSelectItemInterface) => boolean;
type NzSelectPlacementType = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';

declare class NzOptionContainerComponent implements OnChanges, AfterViewInit {
    private readonly ngZone;
    private readonly platformId;
    notFoundContent: string | TemplateRef<NzSafeAny> | undefined;
    menuItemSelectedIcon: TemplateRef<NzSafeAny> | null;
    dropdownRender: TemplateRef<NzSafeAny> | null;
    activatedValue: NzSafeAny | null;
    listOfSelectedValue: NzSafeAny[];
    compareWith: (o1: NzSafeAny, o2: NzSafeAny) => boolean;
    mode: NzSelectModeType;
    matchWidth: boolean;
    itemSize: number;
    maxItemLength: number;
    isMaxMultipleCountReached: boolean;
    listOfContainerItem: NzSelectItemInterface[];
    readonly itemClick: EventEmitter<any>;
    readonly scrollToBottom: EventEmitter<void>;
    cdkVirtualScrollViewport: CdkVirtualScrollViewport;
    private scrolledIndex;
    onItemClick(value: NzSafeAny): void;
    onItemHover(value: NzSafeAny): void;
    trackValue(_index: number, option: NzSelectItemInterface): NzSafeAny;
    onScrolledIndexChange(index: number): void;
    scrollToActivatedValue(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOptionContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOptionContainerComponent, "nz-option-container", ["nzOptionContainer"], { "notFoundContent": { "alias": "notFoundContent"; "required": false; }; "menuItemSelectedIcon": { "alias": "menuItemSelectedIcon"; "required": false; }; "dropdownRender": { "alias": "dropdownRender"; "required": false; }; "activatedValue": { "alias": "activatedValue"; "required": false; }; "listOfSelectedValue": { "alias": "listOfSelectedValue"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "matchWidth": { "alias": "matchWidth"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "maxItemLength": { "alias": "maxItemLength"; "required": false; }; "isMaxMultipleCountReached": { "alias": "isMaxMultipleCountReached"; "required": false; }; "listOfContainerItem": { "alias": "listOfContainerItem"; "required": false; }; }, { "itemClick": "itemClick"; "scrollToBottom": "scrollToBottom"; }, never, never, true, never>;
}

/**
 * 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
 */

declare class NzOptionComponent implements OnChanges, OnInit {
    private readonly destroyRef;
    private readonly nzOptionGroupComponent;
    changes: Subject<void>;
    groupLabel?: string | number | TemplateRef<NzSafeAny> | null;
    template: TemplateRef<NzSafeAny>;
    nzTitle?: string | number | null;
    nzLabel: string | number | null;
    nzValue: NzSafeAny | null;
    nzKey?: string | number;
    nzDisabled: boolean;
    nzHide: boolean;
    nzCustomContent: boolean;
    ngOnInit(): void;
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOptionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOptionComponent, "nz-option", ["nzOption"], { "nzTitle": { "alias": "nzTitle"; "required": false; }; "nzLabel": { "alias": "nzLabel"; "required": false; }; "nzValue": { "alias": "nzValue"; "required": false; }; "nzKey": { "alias": "nzKey"; "required": false; }; "nzDisabled": { "alias": "nzDisabled"; "required": false; }; "nzHide": { "alias": "nzHide"; "required": false; }; "nzCustomContent": { "alias": "nzCustomContent"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_nzDisabled: unknown;
    static ngAcceptInputType_nzHide: unknown;
    static ngAcceptInputType_nzCustomContent: unknown;
}

declare class NzSelectSearchComponent implements OnChanges {
    private readonly elementRef;
    private readonly renderer;
    private readonly focusMonitor;
    nzId: string | null;
    disabled: boolean;
    mirrorSync: boolean;
    showInput: boolean;
    focusTrigger: boolean;
    value: string;
    autofocus: boolean;
    readonly valueChange: EventEmitter<string>;
    readonly isComposingChange: EventEmitter<boolean>;
    inputElement: ElementRef;
    mirrorElement?: ElementRef;
    constructor();
    setCompositionState(isComposing: boolean): void;
    onValueChange(value: string): void;
    clearInputValue(): void;
    syncMirrorWidth(): void;
    focus(): void;
    blur(): void;
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectSearchComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectSearchComponent, "nz-select-search", never, { "nzId": { "alias": "nzId"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "mirrorSync": { "alias": "mirrorSync"; "required": false; }; "showInput": { "alias": "showInput"; "required": false; }; "focusTrigger": { "alias": "focusTrigger"; "required": false; }; "value": { "alias": "value"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; }, { "valueChange": "valueChange"; "isComposingChange": "isComposingChange"; }, never, never, true, never>;
}

declare class NzSelectTopControlComponent implements OnChanges, OnInit {
    private readonly destroyRef;
    private readonly elementRef;
    private readonly ngZone;
    readonly noAnimation: NzNoAnimationDirective | null;
    nzId: string | null;
    showSearch: boolean;
    placeHolder: string | TemplateRef<NzSafeAny> | null;
    open: boolean;
    maxTagCount: number;
    autofocus: boolean;
    disabled: boolean;
    mode: NzSelectModeType;
    customTemplate: TemplateRef<{
        $implicit: NzSelectItemInterface;
    }> | null;
    maxTagPlaceholder: TemplateRef<{
        $implicit: NzSafeAny[];
    }> | null;
    removeIcon: TemplateRef<NzSafeAny> | null;
    listOfTopItem: NzSelectItemInterface[];
    tokenSeparators: string[];
    prefix: TemplateRef<NzSafeAny> | string | null;
    readonly tokenize: EventEmitter<string[]>;
    readonly inputValueChange: EventEmitter<string>;
    readonly deleteItem: EventEmitter<NzSelectItemInterface>;
    nzSelectSearchComponent: NzSelectSearchComponent;
    listOfSlicedItem: NzSelectTopControlItemType[];
    isShowPlaceholder: boolean;
    isShowSingleLabel: boolean;
    isComposing: boolean;
    inputValue: string | null;
    updateTemplateVariable(): void;
    isComposingChange(isComposing: boolean): void;
    onInputValueChange(value: string): void;
    tokenSeparate(inputValue: string, tokenSeparators: string[]): void;
    clearInputValue(): void;
    focus(): void;
    blur(): void;
    onDeleteItem(item: NzSelectItemInterface): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectTopControlComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectTopControlComponent, "nz-select-top-control", ["nzSelectTopControl"], { "nzId": { "alias": "nzId"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "placeHolder": { "alias": "placeHolder"; "required": false; }; "open": { "alias": "open"; "required": false; }; "maxTagCount": { "alias": "maxTagCount"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "customTemplate": { "alias": "customTemplate"; "required": false; }; "maxTagPlaceholder": { "alias": "maxTagPlaceholder"; "required": false; }; "removeIcon": { "alias": "removeIcon"; "required": false; }; "listOfTopItem": { "alias": "listOfTopItem"; "required": false; }; "tokenSeparators": { "alias": "tokenSeparators"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; }, { "tokenize": "tokenize"; "inputValueChange": "inputValueChange"; "deleteItem": "deleteItem"; }, never, never, true, never>;
    static ngAcceptInputType_maxTagCount: unknown;
}

type NzSelectSizeType = NzSizeLDSType;
declare class NzSelectComponent implements ControlValueAccessor, OnInit, AfterContentInit, OnChanges {
    readonly _nzModuleName: NzConfigKey;
    private readonly ngZone;
    private readonly cdr;
    private readonly host;
    private readonly renderer;
    private readonly platform;
    private readonly focusMonitor;
    private readonly destroyRef;
    protected readonly noAnimation: NzNoAnimationDirective | null;
    protected readonly nzFormStatusService: NzFormStatusService | null;
    nzId: string | null;
    nzSize: NzSelectSizeType;
    nzStatus: NzStatus;
    nzVariant: NzVariant | undefined;
    nzOptionHeightPx: number;
    nzOptionOverflowSize: number;
    nzDropdownClassName: string[] | string | null;
    nzDropdownMatchSelectWidth: boolean;
    nzDropdownStyle: Record<string, string> | null;
    nzNotFoundContent: string | TemplateRef<NzSafeAny> | undefined;
    nzPlaceHolder: string | TemplateRef<NzSafeAny> | null;
    nzPlacement: NzSelectPlacementType | null;
    nzMaxTagCount: number;
    nzDropdownRender: TemplateRef<NzSafeAny> | null;
    nzCustomTemplate: TemplateRef<{
        $implicit: NzSelectItemInterface;
    }> | null;
    nzPrefix: TemplateRef<NzSafeAny> | string | null;
    nzSuffixIcon: TemplateRef<NzSafeAny> | string | null;
    nzClearIcon: TemplateRef<NzSafeAny> | null;
    nzRemoveIcon: TemplateRef<NzSafeAny> | null;
    nzMenuItemSelectedIcon: TemplateRef<NzSafeAny> | null;
    nzTokenSeparators: string[];
    nzMaxTagPlaceholder: TemplateRef<{
        $implicit: NzSafeAny[];
    }> | null;
    nzMaxMultipleCount: number;
    nzMode: NzSelectModeType;
    nzFilterOption: NzFilterOptionType;
    compareWith: (o1: NzSafeAny, o2: NzSafeAny) => boolean;
    nzAllowClear: boolean;
    nzShowSearch: boolean;
    nzLoading: boolean;
    nzAutoFocus: boolean;
    nzAutoClearSearchValue: boolean;
    nzServerSearch: boolean;
    nzDisabled: boolean;
    nzOpen: boolean;
    nzSelectOnTab: boolean;
    nzBackdrop: boolean;
    nzOptions: NzSelectOptionInterface[];
    nzShowArrow: boolean;
    get showArrow(): boolean;
    get isMultiple(): boolean;
    get isMaxMultipleCountSet(): boolean;
    get isMaxMultipleCountReached(): boolean;
    readonly nzOnSearch: EventEmitter<string>;
    readonly nzScrollToBottom: EventEmitter<void>;
    readonly nzOpenChange: EventEmitter<boolean>;
    readonly nzBlur: EventEmitter<void>;
    readonly nzFocus: EventEmitter<void>;
    readonly nzOnClear: i0.OutputEmitterRef<void>;
    originElement: ElementRef;
    cdkConnectedOverlay: CdkConnectedOverlay;
    nzSelectTopControlComponent: NzSelectTopControlComponent;
    listOfNzOptionComponent: QueryList<NzOptionComponent>;
    listOfNzOptionGroupComponent: QueryList<NzOptionGroupComponent>;
    nzOptionGroupComponentElement: ElementRef;
    nzSelectTopControlComponentElement: ElementRef;
    protected finalSize: i0.Signal<NzSizeLDSType | undefined>;
    protected readonly finalVariant: i0.Signal<NzVariant>;
    private readonly size;
    private readonly variant;
    private readonly formSize;
    private readonly formVariant;
    private compactSize;
    private listOfValue$;
    private listOfTemplateItem$;
    private listOfTagAndTemplateItem;
    private searchValue;
    private isReactiveDriven;
    private value;
    private requestId;
    private isNzDisableFirstChange;
    onChange: OnChangeType;
    onTouched: OnTouchedType;
    triggerWidth: number | null;
    listOfContainerItem: NzSelectItemInterface[];
    listOfTopItem: NzSelectItemInterface[];
    activatedValue: NzSafeAny | null;
    listOfValue: NzSafeAny[];
    focused: boolean;
    positions: ConnectionPositionPair[];
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    protected readonly placement: i0.WritableSignal<NzSelectPlacementType>;
    protected readonly slideAnimationEnter: i0.Signal<string>;
    protected readonly slideAnimationLeave: i0.Signal<string>;
    prefixCls: string;
    statusCls: NgClassInterface;
    status: NzValidateStatus;
    hasFeedback: boolean;
    generateTagItem(value: string): NzSelectItemInterface;
    onItemClick(value: NzSafeAny): void;
    onItemDelete(item: NzSelectItemInterface): 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;
    onClickOutside(event: MouseEvent): void;
    focus(): void;
    blur(): void;
    onPositionChange(position: ConnectedOverlayPositionChange): void;
    updateCdkConnectedOverlayStatus(): void;
    updateCdkConnectedOverlayPositions(): void;
    constructor();
    writeValue(modelValue: NzSafeAny | NzSafeAny[]): void;
    registerOnChange(fn: OnChangeType): void;
    registerOnTouched(fn: OnTouchedType): void;
    setDisabledState(disabled: boolean): void;
    ngOnChanges({ nzOpen, nzDisabled, nzOptions, nzStatus, nzPlacement, nzSize, nzVariant }: SimpleChanges): void;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    private setStatusStyles;
    private getTitle;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectComponent, "nz-select", ["nzSelect"], { "nzId": { "alias": "nzId"; "required": false; }; "nzSize": { "alias": "nzSize"; "required": false; }; "nzStatus": { "alias": "nzStatus"; "required": false; }; "nzVariant": { "alias": "nzVariant"; "required": false; }; "nzOptionHeightPx": { "alias": "nzOptionHeightPx"; "required": false; }; "nzOptionOverflowSize": { "alias": "nzOptionOverflowSize"; "required": false; }; "nzDropdownClassName": { "alias": "nzDropdownClassName"; "required": false; }; "nzDropdownMatchSelectWidth": { "alias": "nzDropdownMatchSelectWidth"; "required": false; }; "nzDropdownStyle": { "alias": "nzDropdownStyle"; "required": false; }; "nzNotFoundContent": { "alias": "nzNotFoundContent"; "required": false; }; "nzPlaceHolder": { "alias": "nzPlaceHolder"; "required": false; }; "nzPlacement": { "alias": "nzPlacement"; "required": false; }; "nzMaxTagCount": { "alias": "nzMaxTagCount"; "required": false; }; "nzDropdownRender": { "alias": "nzDropdownRender"; "required": false; }; "nzCustomTemplate": { "alias": "nzCustomTemplate"; "required": false; }; "nzPrefix": { "alias": "nzPrefix"; "required": false; }; "nzSuffixIcon": { "alias": "nzSuffixIcon"; "required": false; }; "nzClearIcon": { "alias": "nzClearIcon"; "required": false; }; "nzRemoveIcon": { "alias": "nzRemoveIcon"; "required": false; }; "nzMenuItemSelectedIcon": { "alias": "nzMenuItemSelectedIcon"; "required": false; }; "nzTokenSeparators": { "alias": "nzTokenSeparators"; "required": false; }; "nzMaxTagPlaceholder": { "alias": "nzMaxTagPlaceholder"; "required": false; }; "nzMaxMultipleCount": { "alias": "nzMaxMultipleCount"; "required": false; }; "nzMode": { "alias": "nzMode"; "required": false; }; "nzFilterOption": { "alias": "nzFilterOption"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; "nzAllowClear": { "alias": "nzAllowClear"; "required": false; }; "nzShowSearch": { "alias": "nzShowSearch"; "required": false; }; "nzLoading": { "alias": "nzLoading"; "required": false; }; "nzAutoFocus": { "alias": "nzAutoFocus"; "required": false; }; "nzAutoClearSearchValue": { "alias": "nzAutoClearSearchValue"; "required": false; }; "nzServerSearch": { "alias": "nzServerSearch"; "required": false; }; "nzDisabled": { "alias": "nzDisabled"; "required": false; }; "nzOpen": { "alias": "nzOpen"; "required": false; }; "nzSelectOnTab": { "alias": "nzSelectOnTab"; "required": false; }; "nzBackdrop": { "alias": "nzBackdrop"; "required": false; }; "nzOptions": { "alias": "nzOptions"; "required": false; }; "nzShowArrow": { "alias": "nzShowArrow"; "required": false; }; }, { "nzOnSearch": "nzOnSearch"; "nzScrollToBottom": "nzScrollToBottom"; "nzOpenChange": "nzOpenChange"; "nzBlur": "nzBlur"; "nzFocus": "nzFocus"; "nzOnClear": "nzOnClear"; }, ["listOfNzOptionComponent", "listOfNzOptionGroupComponent"], never, true, [{ directive: typeof i1.NzSpaceCompactItemDirective; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_nzMaxMultipleCount: unknown;
    static ngAcceptInputType_nzAllowClear: unknown;
    static ngAcceptInputType_nzShowSearch: unknown;
    static ngAcceptInputType_nzLoading: unknown;
    static ngAcceptInputType_nzAutoFocus: unknown;
    static ngAcceptInputType_nzAutoClearSearchValue: unknown;
    static ngAcceptInputType_nzServerSearch: unknown;
    static ngAcceptInputType_nzDisabled: unknown;
    static ngAcceptInputType_nzOpen: unknown;
    static ngAcceptInputType_nzSelectOnTab: unknown;
    static ngAcceptInputType_nzBackdrop: unknown;
    static ngAcceptInputType_nzShowArrow: unknown;
}

declare class NzOptionItemComponent implements OnChanges, OnInit {
    private readonly el;
    private readonly ngZone;
    private readonly destroyRef;
    selected: boolean;
    activated: boolean;
    grouped: boolean;
    customContent: boolean;
    template: TemplateRef<NzSafeAny> | null;
    disabled: boolean;
    showState: boolean;
    title?: string | number | null;
    label: string | number | null;
    value: NzSafeAny | null;
    activatedValue: NzSafeAny | null;
    listOfSelectedValue: NzSafeAny[];
    icon: TemplateRef<NzSafeAny> | null;
    compareWith: (o1: NzSafeAny, o2: NzSafeAny) => boolean;
    readonly itemClick: EventEmitter<any>;
    readonly itemHover: EventEmitter<any>;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOptionItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOptionItemComponent, "nz-option-item", never, { "grouped": { "alias": "grouped"; "required": false; }; "customContent": { "alias": "customContent"; "required": false; }; "template": { "alias": "template"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showState": { "alias": "showState"; "required": false; }; "title": { "alias": "title"; "required": false; }; "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "activatedValue": { "alias": "activatedValue"; "required": false; }; "listOfSelectedValue": { "alias": "listOfSelectedValue"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; }, { "itemClick": "itemClick"; "itemHover": "itemHover"; }, never, never, true, never>;
    static ngAcceptInputType_customContent: unknown;
}

declare class NzSelectItemComponent {
    disabled: boolean;
    label: string | number | null | undefined;
    deletable: boolean;
    removeIcon: TemplateRef<NzSafeAny> | null;
    contentTemplateOutletContext: NzSafeAny | null;
    contentTemplateOutlet: string | TemplateRef<NzSafeAny> | null;
    readonly delete: EventEmitter<MouseEvent>;
    protected get templateOutletContext(): NzSafeAny;
    onDelete(e: MouseEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectItemComponent, "nz-select-item", never, { "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "displayLabelInHtml": { "alias": "displayLabelInHtml"; "required": false; }; "deletable": { "alias": "deletable"; "required": false; }; "removeIcon": { "alias": "removeIcon"; "required": false; }; "contentTemplateOutletContext": { "alias": "contentTemplateOutletContext"; "required": false; }; "contentTemplateOutlet": { "alias": "contentTemplateOutlet"; "required": false; }; }, { "delete": "delete"; }, never, never, true, never>;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_displayLabelInHtml: unknown;
    static ngAcceptInputType_deletable: unknown;
}

declare class NzSelectClearComponent {
    clearIcon: TemplateRef<NzSafeAny> | null;
    readonly clear: EventEmitter<MouseEvent>;
    onClick(e: MouseEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectClearComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectClearComponent, "nz-select-clear", never, { "clearIcon": { "alias": "clearIcon"; "required": false; }; }, { "clear": "clear"; }, never, never, true, never>;
}

/**
 * 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
 */

declare class NzSelectArrowComponent {
    listOfValue: NzSafeAny[];
    loading: boolean;
    search: boolean;
    showArrow: boolean;
    isMaxMultipleCountSet: boolean;
    suffixIcon: TemplateRef<NzSafeAny> | string | null;
    feedbackIcon: TemplateRef<NzSafeAny> | string | null;
    nzMaxMultipleCount: number;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectArrowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectArrowComponent, "nz-select-arrow", never, { "listOfValue": { "alias": "listOfValue"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "search": { "alias": "search"; "required": false; }; "showArrow": { "alias": "showArrow"; "required": false; }; "isMaxMultipleCountSet": { "alias": "isMaxMultipleCountSet"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "feedbackIcon": { "alias": "feedbackIcon"; "required": false; }; "nzMaxMultipleCount": { "alias": "nzMaxMultipleCount"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_nzMaxMultipleCount: unknown;
}

/**
 * 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
 */

declare class NzSelectPlaceholderComponent {
    placeholder: TemplateRef<NzSafeAny> | string | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectPlaceholderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzSelectPlaceholderComponent, "nz-select-placeholder", never, { "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * 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
 */

declare class NzOptionItemGroupComponent {
    nzLabel: string | number | TemplateRef<NzSafeAny> | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOptionItemGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOptionItemGroupComponent, "nz-option-item-group", never, { "nzLabel": { "alias": "nzLabel"; "required": false; }; }, {}, never, never, true, never>;
}

declare class NzSelectModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzSelectModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzSelectModule, never, [typeof NzOptionComponent, typeof NzSelectComponent, typeof NzOptionContainerComponent, typeof NzOptionGroupComponent, typeof NzOptionItemComponent, typeof NzSelectTopControlComponent, typeof NzSelectSearchComponent, typeof NzSelectItemComponent, typeof NzSelectClearComponent, typeof NzSelectArrowComponent, typeof NzSelectPlaceholderComponent, typeof NzOptionItemGroupComponent], [typeof NzOptionComponent, typeof NzSelectComponent, typeof NzOptionGroupComponent, typeof NzSelectArrowComponent, typeof NzSelectClearComponent, typeof NzSelectItemComponent, typeof NzSelectPlaceholderComponent, typeof NzSelectSearchComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzSelectModule>;
}

export { NzOptionComponent, NzOptionContainerComponent, NzOptionGroupComponent, NzOptionItemComponent, NzOptionItemGroupComponent, NzSelectArrowComponent, NzSelectClearComponent, NzSelectComponent, NzSelectItemComponent, NzSelectModule, NzSelectPlaceholderComponent, NzSelectSearchComponent, NzSelectTopControlComponent };
export type { NzFilterOptionType, NzSelectItemInterface, NzSelectModeType, NzSelectOptionInterface, NzSelectPlacementType, NzSelectSizeType, NzSelectTopControlItemType };
