import * as i0 from '@angular/core';
import { OnInit } from '@angular/core';
import { Highlightable } from '@angular/cdk/a11y';

declare class SiAutocompleteOptionDirective<T = unknown> implements Highlightable {
    private static idCounter;
    private element;
    private parent;
    /**
     * @defaultValue
     * ```
     * `__si-autocomplete-option-${SiAutocompleteOptionDirective.idCounter++}`
     * ```
     */
    readonly id: i0.InputSignal<string>;
    /** @defaultValue false */
    readonly disabledInput: i0.InputSignalWithTransform<boolean, unknown>;
    get disabled(): boolean;
    /** @defaultValue undefined */
    readonly value: i0.InputSignal<T | undefined>;
    protected active?: boolean;
    protected click(): void;
    /** @internal */
    setActiveStyles(): void;
    /** @internal */
    setInactiveStyles(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteOptionDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteOptionDirective<any>, "[siAutocompleteOption]", ["siAutocompleteOption"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "siAutocompleteOption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SiAutocompleteDirective<T> {
    /** @internal */
    readonly listbox: i0.WritableSignal<SiAutocompleteListboxDirective<T> | undefined>;
    protected get activeDescendant(): string;
    protected keydown(event: KeyboardEvent): void;
    get active(): SiAutocompleteOptionDirective<T> | undefined | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteDirective<any>, "input[siAutocomplete]", ["siAutocomplete"], {}, {}, never, never, true, never>;
}

declare class SiAutocompleteListboxDirective<T> implements OnInit {
    private static idCounter;
    private readonly options;
    /**
     * @defaultValue
     * ```
     * `__si-autocomplete-listbox-${SiAutocompleteListboxDirective.idCounter++}`
     * ```
     */
    readonly id: i0.InputSignal<string>;
    readonly autocomplete: i0.InputSignal<SiAutocompleteDirective<T>>;
    /** @defaultValue 0 */
    readonly siAutocompleteDefaultIndex: i0.InputSignal<number>;
    readonly siAutocompleteOptionSubmitted: i0.OutputEmitterRef<T | undefined>;
    private injector;
    private keyManager;
    private changeDetectorRef;
    private destroyRef;
    constructor();
    ngOnInit(): void;
    private setActiveItem;
    /** @internal */
    onKeydown(event: KeyboardEvent): void;
    get active(): SiAutocompleteOptionDirective<T> | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteListboxDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutocompleteListboxDirective<any>, "[siAutocompleteListboxFor]", ["siAutocompleteListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "siAutocompleteListboxFor"; "required": true; "isSignal": true; }; "siAutocompleteDefaultIndex": { "alias": "siAutocompleteDefaultIndex"; "required": false; "isSignal": true; }; }, { "siAutocompleteOptionSubmitted": "siAutocompleteOptionSubmitted"; }, ["options"], never, true, never>;
}

declare class SiAutocompleteModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutocompleteModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SiAutocompleteModule, never, [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective], [typeof SiAutocompleteDirective, typeof SiAutocompleteListboxDirective, typeof SiAutocompleteOptionDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SiAutocompleteModule>;
}

export { SiAutocompleteDirective, SiAutocompleteListboxDirective, SiAutocompleteModule, SiAutocompleteOptionDirective };
