import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewContainerRef } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { QdFormInputConfiguration, QdInputValue } from '../../model/forms.interface';
import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
import { QdPopoverService } from '../../../core/popover/popover.service';
import { QdPopoverParentService } from '../../../core/popover/popover-parent.service';
import { QdPopoverOnClickDirective } from '../../../core/popover/popover-on-click/popover-on-click.directive';
import { QdFormOptionsRequestState, QdFormResolvedOption, QdFormResolvedOptions } from '../../model/form-options-resolver';
import { QdFormInputComponent } from '../../shared/components/form-input/form-input.component';
import { QdFormOptionsResolverRegistry } from '../../shared/services/options-resolver.registry';
import { QdPopoverSizingService } from '../../../core/popover/popover-sizing.service';
import * as i0 from "@angular/core";
export declare class QdInputOptionsDirective extends QdPopoverOnClickDirective implements OnInit, OnChanges, OnDestroy, AfterViewInit {
    protected hostRef: ElementRef<HTMLElement>;
    protected overlayPositionBuilder: OverlayPositionBuilder;
    protected overlay: Overlay;
    protected popoverService: QdPopoverService;
    protected sizingService: QdPopoverSizingService;
    private readonly translateService;
    private readonly viewContainerRef;
    private readonly changeDetectorRef;
    private readonly resolverRegistry;
    protected popoverParentService: QdPopoverParentService;
    get value(): QdInputValue;
    /**
     * The value of the form input
     */
    set value(value: QdInputValue);
    /**
     * The configuration of the form input
     *
     * @example
     * {
     *   label: { i18n: 'label' },
     *   placeholder: { i18n: 'placeholder' },
     *   hint: { i18n: 'hint' }
     * };
     */
    config: QdFormInputConfiguration;
    /**
     * Emits event when the value has changed. Note: Emits on keyup (no longer on click, as before)!
     */
    readonly enterClick: EventEmitter<any>;
    /**
     * Emits event when an option in the fly out has been selected.
     */
    readonly optionSelected: EventEmitter<import("../../model/options.interface").QdFormBaseOption>;
    onSpace(): void;
    onEscape(): void;
    onTab(): void;
    private _optionsResolver;
    private _optionsRequestStateSubject;
    private readonly _optionsLoadingHintDelay;
    private readonly _optionsLoadingHintMinTime;
    private _hostElement;
    private _keyManager?;
    private _value;
    private _filteredOptionsSubject;
    private _destroyed$;
    filteredOptions$: import("rxjs").Observable<QdFormResolvedOptions>;
    optionsRequestState$: import("rxjs").Observable<QdFormOptionsRequestState>;
    formInputComponents: QueryList<QdFormInputComponent>;
    constructor(hostRef: ElementRef<HTMLElement>, overlayPositionBuilder: OverlayPositionBuilder, overlay: Overlay, popoverService: QdPopoverService, sizingService: QdPopoverSizingService, translateService: TranslateService, viewContainerRef: ViewContainerRef, changeDetectorRef: ChangeDetectorRef, resolverRegistry: QdFormOptionsResolverRegistry, popoverParentService: QdPopoverParentService);
    ngOnInit(): void;
    private initializeOptionsResolver;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    ngAfterViewInit(): void;
    onKeyDown(event: KeyboardEvent): void;
    selectOption(option: QdFormResolvedOption): void;
    private logWarningIfBothOptionsAndResolverAreUsed;
    private closePopover;
    private createKeyManager;
    private setPopoverProperties;
    private hasOptions;
    private updateOptions;
    private updateOptionsWithResolver;
    private filterOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdInputOptionsDirective, [null, null, null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<QdInputOptionsDirective, "[qdInputOptions]", never, { "value": { "alias": "value"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "enterClick": "enterClick"; "optionSelected": "optionSelected"; }, never, never, false, never>;
}
//# sourceMappingURL=input-options.directive.d.ts.map