import { ChoiceItem, QuestionSelectBase } from "./question_baseselect";
import { LocalizableString } from "./localizablestring";
import { ItemValue } from "./itemvalue";
import { PopupModel } from "./popup";
import { EventBase } from "./base";
import { DropdownListModel } from "./dropdownListModel";
/**
 * A class that describes the Dropdown question type.
 *
 * [View Demo](https://surveyjs.io/form-library/examples/questiontype-dropdown/ (linkStyle))
 */
export declare class QuestionDropdownModel extends QuestionSelectBase {
    dropdownListModelValue: DropdownListModel;
    lastSelectedItemValue: ItemValue;
    private isChoicesLoading;
    protected onPropertyValueChanged(name: string, oldValue: any, newValue: any): void;
    locStrsChanged(): void;
    protected onSelectedItemValuesUpdated(): void;
    private updateInputPlaceholder;
    get showOptionsCaption(): boolean;
    set showOptionsCaption(val: boolean);
    get showClearButton(): boolean;
    get optionsCaption(): string;
    set optionsCaption(val: string);
    /**
     * A placeholder for the input field.
     */
    placeholder: string;
    getType(): string;
    get isNewA11yStructure(): boolean;
    get a11yQuestionAriaRole(): string | null;
    get a11yInputAriaRole(): string | null;
    /**
     * Returns the selected choice item. If no item is selected, returns `null`.
     */
    get selectedItem(): ChoiceItem;
    protected isOtherValueUnused(): boolean;
    protected onGetSingleSelectedItem(selectedItemByValue: ItemValue): void;
    get isShowingChoiceComment(): boolean;
    supportAutoAdvance(): boolean;
    private minMaxChoices;
    protected getChoices(): Array<ItemValue>;
    /**
     * Use the `choicesMin`, `choicesMax`, and `choicesStep` properties to generate choice items automatically. For example, the configuration below generates three choice items: [10, 20, 30].
     *
     * ```js
     * "choicesMin": 10,
     * "choicesMax": 30
     * "choicesStep": 10
     * ```
     * @see choicesMax
     * @see choicesStep
     */
    get choicesMin(): number;
    set choicesMin(val: number);
    /**
     * Use the `choicesMin`, `choicesMax`, and `choicesStep` properties to generate choice items automatically. For example, the configuration below generates three choice items: [10, 20, 30].
     *
     * ```js
     * "choicesMin": 10,
     * "choicesMax": 30
     * "choicesStep": 10
     * ```
     * @see choicesMin
     * @see choicesStep
     */
    get choicesMax(): number;
    set choicesMax(val: number);
    /**
     * Use the `choicesMin`, `choicesMax`, and `choicesStep` properties to generate choice items automatically. For example, the configuration below generates three choice items: [10, 20, 30].
     *
     * ```js
     * "choicesMin": 10,
     * "choicesMax": 30
     * "choicesStep": 10
     * ```
     *
     * The default value of the `choicesStep` property is 1.
     * @see choicesMin
     * @see choicesMax
     */
    get choicesStep(): number;
    set choicesStep(val: number);
    get autocomplete(): string;
    set autocomplete(val: string);
    /**
     * Specifies whether to display a button that clears the selected value.
     */
    allowClear: boolean;
    /**
     * Specifies whether users can enter a value into the input field to filter the drop-down list.
     *
     * [View Demo](https://surveyjs.io/form-library/examples/create-dropdown-menu-in-javascript/ (linkStyle))
     * @see searchMode
     * @see [SurveyModel.onChoicesSearch](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onChoicesSearch)
     */
    searchEnabled: boolean;
    /**
     * Specifies a comparison operation used to filter the drop-down list. Applies only if [`searchEnabled`](#searchEnabled) is `true`.
     *
     * Possible values:
     *
     * - `"contains"` (default)
     * - `"startsWith"`
     * @see [SurveyModel.onChoicesSearch](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onChoicesSearch)
     */
    searchMode: "contains" | "startsWith";
    /**
     * Specifies whether users can add their own choices if the desired option isn't available in the dropdown.
     *
     * Default value: `false`
     *
     * [View Demo](https://surveyjs.io/form-library/examples/dropdown-custom-choice-options/ (linkStyle))
     *
     * > Custom choices will only be stored temporarily for the duration of the current browser session. If you want to save them in a database or another data storage, handle the [`onCreateCustomChoiceItem`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onCreateCustomChoiceItem) event.
     */
    allowCustomChoices: boolean;
    /**
     * Specifies whether to wrap long texts in choice options onto a new line.
     *
     * Default value: `true`
     *
     * Disable this property if you want the texts to be truncated with ellipsis.
     */
    textWrapEnabled: boolean;
    inputHasValue: boolean;
    get readOnlyText(): string;
    get locReadOnlyText(): LocalizableString;
    private resetReadOnlyText;
    private calculateReadOnlyText;
    /**
     * Enables lazy loading. If you set this property to `true`, you should implement the Survey's [`onChoicesLazyLoad`](https://surveyjs.io/form-library/documentation/surveymodel#onChoicesLazyLoad) event handler.
     * @see choicesLazyLoadPageSize
     * @see SurveyModel.onChoicesLazyLoad
     */
    choicesLazyLoadEnabled: boolean;
    /**
     * Specifies the number of choice items to load at a time when choices are loaded on demand.
     *
     * Default value: 25
     *
     * > This property does not accept values below 25 to prevent the server from being flooded with requests.
     * @see choicesLazyLoadEnabled
     * @see SurveyModel.onChoicesLazyLoad
     */
    choicesLazyLoadPageSize: number;
    getControlClass(): string;
    protected updateCssClasses(res: any, css: any): void;
    protected calcCssClasses(css: any): any;
    suggestedItem: ItemValue;
    get selectedItemLocText(): LocalizableString;
    get inputFieldComponentName(): string;
    get showSelectedItemLocText(): boolean;
    get showInputFieldComponent(): boolean;
    private get selectedItemText();
    private get useDropdownList();
    get dropdownListModel(): DropdownListModel;
    set dropdownListModel(val: DropdownListModel);
    get popupModel(): PopupModel;
    onOpened: EventBase<QuestionDropdownModel>;
    onOpenedCallBack(): void;
    protected onSelectedItemValuesChangedHandler(newValue: any): void;
    protected hasUnknownValue(val: any, includeOther: boolean, isFilteredChoices: boolean, checkEmptyValue: boolean): boolean;
    protected needConvertRenderedOtherToDataValue(): boolean;
    protected getItemIfChoicesNotContainThisValue(value: any, text?: string): any;
    protected onVisibleChoicesChanged(): void;
    protected canAddCustomChoices(): boolean;
    protected getIsQuestionReady(): boolean;
    protected ensureQuestionIsReady(): void;
    protected onLoadChoicesFromUrl(array: Array<ItemValue>): void;
    protected valueFromData(val: any): any;
    private updateCustomChoices;
    setIsChoicesLoading(value: boolean): void;
    protected getFirstInputElementId(): string;
    getInputId(): string;
    private getInputIdCore;
    clearValue(keepComment?: boolean, fromUI?: boolean): void;
    afterRenderCore(el: any): void;
    onClick(e: any): void;
    onKeyUp(event: any): void;
    protected supportEmptyValidation(): boolean;
    protected onBlurCore(event: any): void;
    protected onFocusCore(event: any): void;
    dispose(): void;
}
