/// <reference types="react" />
import * as React from 'react';
import { BaseComponent } from '../../Utilities';
import { Autofill } from '../../Autofill';
import { IBaseExtendedPickerProps, IBaseExtendedPicker } from './BaseExtendedPicker.types';
import { IBaseFloatingPickerProps, BaseFloatingPicker } from '../../FloatingPicker';
import { BaseSelectedItemsList, IBaseSelectedItemsListProps } from '../../SelectedItemsList';
import { Selection } from '../../Selection';
export interface IBaseExtendedPickerState {
    items?: any;
    suggestedDisplayValue?: string;
    moreSuggestionsAvailable?: boolean;
    isSearching?: boolean;
    isMostRecentlyUsedVisible?: boolean;
    suggestionsVisible?: boolean;
    suggestionsLoading?: boolean;
    isResultsFooterVisible?: boolean;
}
export declare class BaseExtendedPicker<T, P extends IBaseExtendedPickerProps<T>> extends BaseComponent<P, IBaseExtendedPickerState> implements IBaseExtendedPicker<T> {
    floatingPicker: {
        (component: BaseFloatingPicker<T, IBaseFloatingPickerProps<T>> | null): void;
        current: BaseFloatingPicker<T, IBaseFloatingPickerProps<T>> | null;
        value: BaseFloatingPicker<T, IBaseFloatingPickerProps<T>> | null;
    };
    selectedItemsList: {
        (component: BaseSelectedItemsList<T, IBaseSelectedItemsListProps<T>> | null): void;
        current: BaseSelectedItemsList<T, IBaseSelectedItemsListProps<T>> | null;
        value: BaseSelectedItemsList<T, IBaseSelectedItemsListProps<T>> | null;
    };
    protected root: {
        (component: HTMLDivElement | null): void;
        current: HTMLDivElement | null;
        value: HTMLDivElement | null;
    };
    protected input: {
        (component: Autofill | null): void;
        current: Autofill | null;
        value: Autofill | null;
    };
    protected selection: Selection;
    protected floatingPickerProps: IBaseFloatingPickerProps<T>;
    protected selectedItemsListProps: IBaseSelectedItemsListProps<T>;
    constructor(basePickerProps: P);
    readonly items: any;
    componentDidMount(): void;
    focus(): void;
    clearInput(): void;
    readonly inputElement: HTMLInputElement | null;
    render(): JSX.Element;
    protected onSelectionChange: () => void;
    protected canAddItems(): boolean;
    protected renderSuggestions(): JSX.Element;
    protected renderSelectedItemsList(): JSX.Element;
    protected onInputChange: (value: string) => void;
    protected onInputFocus: (ev: React.FocusEvent<HTMLInputElement | Autofill>) => void;
    protected onInputClick: (ev: React.MouseEvent<HTMLInputElement | Autofill>) => void;
    protected onBackspace: (ev: React.KeyboardEvent<HTMLElement>) => void;
    protected onCopy: (ev: React.ClipboardEvent<HTMLElement>) => void;
    protected onPaste: (ev: React.ClipboardEvent<HTMLInputElement | Autofill>) => void;
    protected _onSuggestionSelected: (item: T) => void;
    protected _onSelectedItemsChanged: () => void;
}
