/// <reference path="../../pxtlib.d.ts" />
import * as Blockly from "blockly";
import { FieldCustom, FieldCustomOptions } from "./field_utils";
export interface FieldTextDropdownOptions extends FieldCustomOptions {
    values?: string;
    data?: string;
}
export declare class BaseFieldTextDropdown extends Blockly.FieldTextInput {
    protected menuGenerator_: any[];
    static DROPDOWN_SVG_DATAURI: string;
    /** A reference to the currently selected menu item. */
    private selectedMenuItem;
    /** The dropdown menu. */
    protected menu_: Blockly.Menu | null;
    /** SVG based arrow element. */
    private svgArrow;
    /** A cache of the most recently generated options. */
    private generatedOptions;
    protected dropDownOpen_: boolean;
    private menuItems;
    private lastHighlightedMenuElement;
    private inputKeydownHandler;
    private dropdownKeydownHandler;
    constructor(text: string, menuGenerator_: any[], opt_validator?: Blockly.FieldValidator);
    initView(): void;
    private inputKeydownListener;
    private dropdownKeydownListener;
    protected showEditor_(e?: Event, quietInput?: boolean): void;
    doValueUpdate_(newValue: string): void;
    getOptions(useCache?: boolean): Blockly.MenuOption[];
    isOptionListDynamic(): boolean;
    getFieldDescription(): string;
    protected dropdownDispose_(): void;
    private dropdownCreate;
    showDropdown_(e?: MouseEvent): void;
    protected updateSize_(margin?: number): void;
    private positionSVGArrow;
    protected createSVGArrow(): void;
    private handleMenuActionEvent;
    protected onItemSelected_(menu: Blockly.Menu, menuItem: Blockly.MenuItem): void;
}
export declare class FieldTextDropdown extends BaseFieldTextDropdown implements FieldCustom {
    isFieldCustom_: boolean;
    constructor(text: string, options: FieldTextDropdownOptions, opt_validator?: Blockly.FieldValidator);
}
