import * as _angular_core from '@angular/core';
import { AfterViewInit, TemplateRef, ElementRef, EventEmitter } from '@angular/core';
import { FormFieldComponent } from '@agorapulse/ui-components/form-field';
import { SymbolRegistry } from '@agorapulse/ui-symbol';
import { Observable, BehaviorSubject } from 'rxjs';

declare class AutocompleteComponent<T extends Record<string, unknown> | string> implements AfterViewInit {
    placeholder: string;
    label: string;
    inputId: string;
    loadingText: string;
    notFoundText: string;
    searchFn: (term: string) => Observable<T[]>;
    trackByFn: (index: number, item: T) => T | T[keyof T];
    set disabled(value: boolean);
    optionLabel?: string;
    optionCaption?: string;
    optionImageUrl?: string;
    optionValue?: string;
    optionTextTemplate?: TemplateRef<{
        option: T;
    }>;
    formField: ElementRef<FormFieldComponent>;
    selectOption: EventEmitter<unknown>;
    readonly disabledSignal: _angular_core.WritableSignal<boolean>;
    readonly symbolRegistry: SymbolRegistry;
    readonly searchTerm$: BehaviorSubject<string>;
    readonly searchTermSignal: _angular_core.Signal<string | undefined>;
    readonly showResultsSignal: _angular_core.WritableSignal<boolean>;
    readonly resultsLoadingSignal: _angular_core.WritableSignal<boolean>;
    readonly searchResultsSignal: _angular_core.Signal<any[] | undefined>;
    private readonly ngZone;
    private readonly el;
    readonly inputWidthSignal: _angular_core.WritableSignal<number>;
    constructor();
    ngAfterViewInit(): void;
    onSelectOption(option: T): void;
    private resetAutocomplete;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent<any>, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent<any>, "ap-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "notFoundText": { "alias": "notFoundText"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionCaption": { "alias": "optionCaption"; "required": false; }; "optionImageUrl": { "alias": "optionImageUrl"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "optionTextTemplate": { "alias": "optionTextTemplate"; "required": false; }; }, { "selectOption": "selectOption"; }, never, never, true, never>;
}

export { AutocompleteComponent };
