import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, Injector } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { IgxComboAddItemComponent } from '../combo/combo-add-item.component';
import { IgxComboDropDownComponent } from '../combo/combo-dropdown.component';
import { IgxComboAPIService } from '../combo/combo.api';
import { IgxComboBaseDirective } from '../combo/combo.common';
import { IDisplayDensityOptions } from '../core/displayDensity';
import { IgxSelectionAPIService } from '../core/selection';
import { CancelableEventArgs, IBaseCancelableBrowserEventArgs, IBaseEventArgs, PlatformUtil } from '../core/utils';
import { IgxIconService } from '../icon/public_api';
import { IgxInputGroupType } from '../input-group/public_api';
import * as i0 from "@angular/core";
import * as i1 from "../combo/combo.component";
import * as i2 from "../directives/ripple/ripple.directive";
import * as i3 from "@angular/common";
import * as i4 from "../input-group/input-group.component";
import * as i5 from "@angular/forms";
import * as i6 from "../directives/for-of/for_of.directive";
import * as i7 from "../directives/toggle/toggle.directive";
import * as i8 from "../checkbox/checkbox.component";
import * as i9 from "../drop-down/public_api";
import * as i10 from "../directives/button/button.directive";
import * as i11 from "../icon/public_api";
import * as i12 from "../directives/text-selection/text-selection.directive";
/** Emitted when an igx-simple-combo's selection is changing.  */
export interface ISimpleComboSelectionChangingEventArgs extends CancelableEventArgs, IBaseEventArgs {
    /** An object which represents the value that is currently selected */
    oldSelection: any;
    /** An object which represents the value that will be selected after this event */
    newSelection: any;
    /** The text that will be displayed in the combo text box */
    displayText: string;
}
/**
 * Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.
 *
 * @igxModule IgxSimpleComboModule
 * @igxTheme igx-combo-theme
 * @igxKeywords combobox, single combo selection
 * @igxGroup Grids & Lists
 *
 * @remarks
 * It provides the ability to filter items as well as perform single selection on the provided data.
 * Additionally, it exposes keyboard navigation and custom styling capabilities.
 * @example
 * ```html
 * <igx-simple-combo [itemsMaxHeight]="250" [data]="locationData"
 *  [displayKey]="'field'" [valueKey]="'field'"
 *  placeholder="Location" searchPlaceholder="Search...">
 * </igx-simple-combo>
 * ```
 */
export declare class IgxSimpleComboComponent extends IgxComboBaseDirective implements ControlValueAccessor, AfterViewInit {
    protected elementRef: ElementRef;
    protected cdr: ChangeDetectorRef;
    protected selectionService: IgxSelectionAPIService;
    protected comboAPI: IgxComboAPIService;
    protected _iconService: IgxIconService;
    private platformUtil;
    protected _displayDensityOptions: IDisplayDensityOptions;
    protected _inputGroupType: IgxInputGroupType;
    protected _injector: Injector;
    /** @hidden @internal */
    dropdown: IgxComboDropDownComponent;
    /** @hidden @internal */
    addItem: IgxComboAddItemComponent;
    /**
     * Emitted when item selection is changing, before the selection completes
     *
     * ```html
     * <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>
     * ```
     */
    selectionChanging: EventEmitter<ISimpleComboSelectionChangingEventArgs>;
    private textSelection;
    /** @hidden @internal */
    composing: boolean;
    private _updateInput;
    private _internalFilter;
    /** @hidden @internal */
    get filteredData(): any[] | null;
    /** @hidden @internal */
    set filteredData(val: any[] | null);
    /** @hidden @internal */
    get searchValue(): string;
    set searchValue(val: string);
    private get selectedItem();
    constructor(elementRef: ElementRef, cdr: ChangeDetectorRef, selectionService: IgxSelectionAPIService, comboAPI: IgxComboAPIService, _iconService: IgxIconService, platformUtil: PlatformUtil, _displayDensityOptions: IDisplayDensityOptions, _inputGroupType: IgxInputGroupType, _injector: Injector);
    /** @hidden @internal */
    onArrowDown(event: Event): void;
    /**
     * Select a defined item
     *
     * @param item the item to be selected
     * ```typescript
     * this.combo.select("New York");
     * ```
     */
    select(item: any): void;
    /**
     * Deselect the currently selected item
     *
     * @param item the items to be deselected
     * ```typescript
     * this.combo.deselect("New York");
     * ```
     */
    deselect(): void;
    /** @hidden @internal */
    writeValue(value: any): void;
    /** @hidden @internal */
    ngAfterViewInit(): void;
    /** @hidden @internal */
    handleInputChange(event?: any): void;
    /** @hidden @internal */
    handleKeyDown(event: KeyboardEvent): void;
    /** @hidden @internal */
    handleKeyUp(event: KeyboardEvent): void;
    /** @hidden @internal */
    handleItemKeyDown(event: KeyboardEvent): void;
    /** @hidden @internal */
    handleItemClick(): void;
    /** @hidden @internal */
    onFocus(): void;
    /** @hidden @internal */
    getEditElement(): HTMLElement;
    /** @hidden @internal */
    handleClear(event: Event): void;
    /** @hidden @internal */
    handleOpened(): void;
    /** @hidden @internal */
    handleClosing(e: IBaseCancelableBrowserEventArgs): void;
    /** @hidden @internal */
    focusSearchInput(opening?: boolean): void;
    /** @hidden @internal */
    onClick(event: Event): void;
    protected findAllMatches: (element: any) => boolean;
    protected setSelection(newSelection: any): void;
    protected createDisplayText(newSelection: any[], oldSelection: any[]): string;
    private clearSelection;
    private clearOnBlur;
    private isPartialMatch;
    private getElementVal;
    private clearAndClose;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxSimpleComboComponent, [null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxSimpleComboComponent, "igx-simple-combo", never, {}, { "selectionChanging": "selectionChanging"; }, never, ["[igxLabel]", "igx-prefix", "igx-hint, [igxHint]", "igx-suffix"]>;
}
export declare class IgxSimpleComboModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxSimpleComboModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<IgxSimpleComboModule, [typeof IgxSimpleComboComponent], [typeof i1.IgxComboModule, typeof i2.IgxRippleModule, typeof i3.CommonModule, typeof i4.IgxInputGroupModule, typeof i5.FormsModule, typeof i5.ReactiveFormsModule, typeof i6.IgxForOfModule, typeof i7.IgxToggleModule, typeof i8.IgxCheckboxModule, typeof i9.IgxDropDownModule, typeof i10.IgxButtonModule, typeof i11.IgxIconModule, typeof i12.IgxTextSelectionModule], [typeof IgxSimpleComboComponent, typeof i1.IgxComboModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<IgxSimpleComboModule>;
}
