import type { AgComponentSelectorType, AgEventTypeParams, AgGridCommon, AgPromise, BeanCollection, GridOptionsService, GridOptionsWithDefaults, ICellRendererComp, RichSelectParams } from 'ag-grid-community';
import { AgPickerField } from 'ag-grid-community';
import type { AgRichSelectListEvent } from './agRichSelectList';
import { AgRichSelectList } from './agRichSelectList';
type AgRichSelectEvent = AgRichSelectListEvent;
export declare class AgRichSelect<TValue = any> extends AgPickerField<BeanCollection, GridOptionsWithDefaults, AgEventTypeParams, AgGridCommon<any, any>, GridOptionsService, AgComponentSelectorType, TValue[] | TValue, RichSelectParams<TValue>, AgRichSelectEvent, AgRichSelectList<TValue, AgRichSelectEvent>> {
    private userCompFactory;
    private ariaAnnounce?;
    private registry;
    private readonly onSearchCallbackDebounced;
    wireBeans(beans: BeanCollection): void;
    private searchStrings?;
    private searchString;
    private listComponent;
    private pillContainer;
    protected values: TValue[] | undefined;
    private searchStringCreator;
    private readonly eInput;
    private readonly eDeselect;
    private ariaToggleSelection;
    private ariaDeselectAllItems;
    private ariaDeleteSelection;
    private skipWrapperAnnouncement?;
    private tooltipFeature?;
    private shouldDisplayTooltip?;
    constructor(config?: RichSelectParams<TValue>);
    postConstruct(): void;
    private setupAriaProperties;
    private createListComponent;
    private renderSelectedValue;
    protected createPickerComponent(): AgRichSelectList<TValue, AgRichSelectListEvent>;
    setSearchStringCreator(searchStringFn: (values: TValue[]) => string[]): void;
    private setValueListInternal;
    setValueList(params: {
        valueList: TValue[] | Promise<TValue[] | undefined> | undefined;
        refresh?: boolean;
        isInitial?: boolean;
    }): void;
    /**
     * This method updates the list of select options
     */
    private setValues;
    showPicker(): void;
    private createOrUpdatePillContainer;
    private doWhileBlockingAnnouncement;
    private onWrapperFocus;
    private onWrapperFocusOut;
    private onDeselectAllMouseDown;
    private onDeselectAllClick;
    private buildSearchStringFromKeyboardEvent;
    private searchTextFromCharacter;
    searchTextFromString(str: string | null | undefined): void;
    private getSearchStringsFromValues;
    private filterListModel;
    private runSearch;
    private highlightEmptyValue;
    private highlightListValue;
    private getSuggestionsAndFilteredValues;
    private clearSearchString;
    setValue(value: TValue[] | TValue | null, silent?: boolean, fromPicker?: boolean, skipRendering?: boolean): this;
    private onNavigationKeyDown;
    protected onEnterKeyDown(e: KeyboardEvent): void;
    private onDeleteKeyDown;
    private onTabKeyDown;
    private getValueFromSet;
    private onListValueSelected;
    private dispatchPickerEventAndHidePicker;
    getFocusableElement(): HTMLElement;
    protected onKeyDown(e: KeyboardEvent): void;
    private announceAriaValue;
    destroy(): void;
}
/**
 * cell renderers are used in a few places. they bind to dom slightly differently to other cell renders as they
 * can return back strings (instead of html element) in the getGui() method. common code placed here to handle that.
 * @param {AgPromise<ICellRendererComp>} cellRendererPromise
 * @param {HTMLElement} eTarget
 */
export declare function _bindCellRendererToHtmlElement(cellRendererPromise: AgPromise<ICellRendererComp>, eTarget: HTMLElement): void;
export {};
