import { AfterViewInit, ElementRef, IterableDiffers, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
import { PoListBoxComponent } from './../../po-listbox/po-listbox.component';
import { PoComboGroup } from './interfaces/po-combo-group.interface';
import { PoComboOption } from './interfaces/po-combo-option.interface';
import { PoComboBaseComponent } from './po-combo-base.component';
import { PoComboFilterService } from './po-combo-filter.service';
import { PoComboOptionTemplateDirective } from './po-combo-option-template/po-combo-option-template.directive';
import { PoHelperComponent } from '../../po-helper';
/**
 * @docsExtends PoComboBaseComponent
 *
 *
 * @example
 *
 * <example name="po-combo-basic" title="PO Combo Basic">
 *   <file name="sample-po-combo-basic/sample-po-combo-basic.component.html"> </file>
 *   <file name="sample-po-combo-basic/sample-po-combo-basic.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-labs" title="PO Combo Labs">
 *   <file name="sample-po-combo-labs/sample-po-combo-labs.component.html"> </file>
 *   <file name="sample-po-combo-labs/sample-po-combo-labs.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-scheduling" title="PO Combo - Scheduling">
 *   <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.html"> </file>
 *   <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.ts"> </file>
 *   <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.component.css"> </file>
 *   <file name="sample-po-combo-scheduling/sample-po-combo-scheduling.service.ts"> </file>
 * </example>
 *
 * <example name="po-combo-transfer" title="PO Combo - Banking Transfer">
 *   <file name="sample-po-combo-transfer/sample-po-combo-transfer.component.html"> </file>
 *   <file name="sample-po-combo-transfer/sample-po-combo-transfer.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-heroes" title="PO Combo - Heroes">
 *   <file name="sample-po-combo-heroes/sample-po-combo-heroes.component.html"> </file>
 *   <file name="sample-po-combo-heroes/sample-po-combo-heroes.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-heroes-reactive-form" title="PO Combo - Heroes Reactive Form">
 *   <file name="sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.html"> </file>
 *   <file name="sample-po-combo-heroes-reactive-form/sample-po-combo-heroes-reactive-form.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-infinity-scroll" title="PO Combo - Inifity Scroll">
 *   <file name="sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.html"> </file>
 *   <file name="sample-po-combo-infinity-scroll/sample-po-combo-infinity-scroll.component.ts"> </file>
 * </example>
 *
 * <example name="po-combo-hotels" title="PO Combo - Booking Hotel">
 *   <file name="sample-po-combo-hotels/sample-po-combo-hotels.component.html"> </file>
 *   <file name="sample-po-combo-hotels/sample-po-combo-hotels.component.ts"> </file>
 * </example>
 */
export declare class PoComboComponent extends PoComboBaseComponent implements AfterViewInit, OnChanges, OnDestroy {
    element: ElementRef<any>;
    differs: IterableDiffers;
    defaultService: PoComboFilterService;
    renderer: Renderer2;
    private readonly controlPosition;
    comboOptionTemplate: PoComboOptionTemplateDirective;
    outerContainer: ElementRef;
    containerElement: ElementRef;
    contentElement: ElementRef;
    iconElement: ElementRef;
    inputEl: ElementRef;
    poListbox: PoListBoxComponent;
    helperEl?: PoHelperComponent;
    comboIcon: string;
    comboOpen: boolean;
    differ: any;
    id: string;
    isProcessingValueByTab: boolean;
    scrollTop: number;
    shouldMarkLetters: boolean;
    infiniteLoading: boolean;
    containerWidth: number;
    private _isServerSearching;
    private lastKey;
    private clickoutListener;
    private eventResizeListener;
    private filterSubscription;
    private getSubscription;
    private readonly subscriptionScrollEvent;
    constructor();
    set isServerSearching(value: boolean);
    get isServerSearching(): boolean;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    emitAdditionalHelp(): void;
    /**
     * Função que atribui foco ao componente.
     *
     * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:
     *
     * ```
     * import { PoComboComponent } from '@po-ui/ng-components';
     *
     * ...
     *
     * @ViewChild(PoComboComponent, { static: true }) combo: PoComboComponent;
     *
     * focusCombo() {
     *   this.combo.focus();
     * }
     * ```
     */
    focus(): void;
    getAdditionalHelpTooltip(): string;
    onBlur(event: any): void;
    onKeyDown(event?: any): void;
    onKeyUp(event?: any): void;
    initInputObservable(): void;
    controlApplyFilter(value: any, isArrowDown?: boolean): void;
    applyFilter(value: string, reset?: boolean, isArrowDown?: boolean): void;
    setOptionsByApplyFilter(value: any, items: any, reset?: boolean): void;
    getErrorPattern(): string;
    hasInvalidClass(): any;
    getObjectByValue(value: any): void;
    updateOptionByFilteredValue(item: any): void;
    setShouldApplyFocus(value: boolean): void;
    toggleComboVisibility(isButton?: boolean): void;
    applyFilterInFirstClick(): void;
    controlComboVisibility(toOpen: boolean, reset?: boolean, isButton?: boolean): void;
    onCloseCombo(): void;
    onOptionClick(option: PoComboOption | PoComboGroup, event?: any): void;
    calculateScrollTop(selectedItem: any, index: any): any;
    cleanListbox(): void;
    getInputValue(): any;
    setInputValue(value: string): void;
    /**
     * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.
     * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.
     *
     * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.
     *
     * ```
     * // Exemplo com p-label e p-helper
     * <po-combo
     *  #combo
     *  ...
     *  p-label="Label do combo"
     *  [p-helper]="helperOptions"
     *  (p-keydown)="onKeyDown($event, combo)"
     * ></po-combo>
     * ```
     * ```
     * ...
     * onKeyDown(event: KeyboardEvent, inp: PoComboComponent): void {
     *  if (event.code === 'F9') {
     *    inp.showAdditionalHelp();
     *  }
     * }
     * ```
     */
    showAdditionalHelp(): boolean;
    wasClickedOnToggle(event: MouseEvent): void;
    isValidCharacterToSearch(keyCode: any): boolean;
    searchOnEnterOrArrow(event: any, value: string): void;
    showMoreInfiniteScroll(): void;
    clearAndFocus(): void;
    updateCacheOptions(): void;
    isCleanVisible(): boolean;
    handleCleanKeyboardTab(event: KeyboardEvent): void;
    onListboxKeyDown(event: any): void;
    private adjustContainerPosition;
    private close;
    private initializeListeners;
    private isAdditionalHelpEventTriggered;
    private onErrorGetObjectByValue;
    private readonly onScroll;
    private onErrorFilteredData;
    private open;
    private removeListeners;
    private setContainerPosition;
    private setContainerWidth;
    private setOptions;
    private prepareOptions;
    private setPage;
    private setScrollingControl;
    private focusItem;
    private focusInput;
    private shouldHandleTab;
    setHelper(label?: string, additionalHelpTooltip?: string): {
        hideAdditionalHelp: boolean;
        helperSettings?: any;
    };
}
