import { IEventEmitter, IEventDetail } from '@breadstone/mosaik-elements';
import type { CustomElement } from '../Components/Abstracts/CustomElement';
import { AutoCompleteTextSearchMode } from '../Types/AutoCompleteTextSearchMode';
import type { ControlBehaviorBase, ControlBehaviorReturn } from './Abstracts/Behavior';
/**
 * Represents the events of the `{@link AutoCompletable}` mixin.
 *
 * @public
 */
export interface IAutoCompletableEvents {
    populating: IEventEmitter<IEventDetail>;
    populated: IEventEmitter<IEventDetail>;
}
/**
 * Represents the `IAutoCompletable` interface.
 *
 * @public
 */
export interface IAutoCompletable {
    filteredItems: Array<unknown>;
    onFilterCallback?(items: Array<unknown>): void;
    onSelectCallback?(item: unknown): void;
    getDisplayValue(item: unknown): string;
    updateSearchText(searchText: string): void;
    updateSelectedItem(item: unknown): void;
}
/**
 * Represents the `IAutoCompleteableProps` interface.
 *
 * @public
 */
export interface IAutoCompleteableProps {
    minimumPrefixLength: number;
    minimumPopulateDelay: number;
    isTextCompletionEnabled: boolean;
    searchMode: AutoCompleteTextSearchMode;
    displayMemberPath: string;
    items: Array<unknown>;
}
/**
 * @public
 */
export declare const AutoCompleteable: <T extends ControlBehaviorBase<CustomElement>>(base: T) => ControlBehaviorReturn<T, IAutoCompleteableProps & IAutoCompletableEvents & IAutoCompletable>;
declare global {
    interface HTMLElementEventMap {
        populating: CustomEvent<IEventDetail>;
        populated: CustomEvent<IEventDetail>;
    }
}
//# sourceMappingURL=AutoCompleteable.d.ts.map