import type { Injector } from '@furystack/inject';
import { EventHub, ObservableValue } from '@furystack/utils';
import type { SuggestionResult } from './suggestion-result.js';
export declare class SuggestManager<T> extends EventHub<{
    onSelectSuggestion: T;
}> implements Disposable {
    private readonly getEntries;
    private readonly getSuggestionEntry;
    isOpened: ObservableValue<boolean>;
    isLoading: ObservableValue<boolean>;
    term: ObservableValue<string>;
    selectedIndex: ObservableValue<number>;
    currentSuggestions: ObservableValue<{
        entry: T;
        suggestion: SuggestionResult;
    }[]>;
    keyPressListener: (ev: KeyboardEvent) => void;
    element?: HTMLElement;
    clickOutsideListener: (ev: MouseEvent) => void;
    [Symbol.dispose](): void;
    selectSuggestion(index?: number): void;
    private lastGetSuggestionOptions?;
    getSuggestion: (options: {
        injector: Injector;
        term: string;
    }) => Promise<void>;
    constructor(getEntries: (term: string) => Promise<T[]>, getSuggestionEntry: (entry: T) => SuggestionResult);
}
//# sourceMappingURL=suggest-manager.d.ts.map