/// <reference types="jquery" />
import { ButtonAdapterMenu, ButtonEventMap, ButtonKeyStroke, ButtonModel, ContextMenuPopup, DoubleClickSupport, EnumObject, FormField, InitModelOf, KeyStrokeContext, LoadingSupport, Menu, Widget } from '../../../index';
export declare class Button extends FormField implements ButtonModel {
    model: ButtonModel;
    eventMap: ButtonEventMap;
    self: Button;
    defaultButton: boolean;
    displayStyle: ButtonDisplayStyle;
    iconId: string;
    keyStroke: string;
    keyStrokeScope: Widget;
    processButton: boolean;
    selected: boolean;
    systemType: ButtonSystemType;
    preventDoubleClick: boolean;
    stackable: boolean;
    shrinkable: boolean;
    adaptedBy: ButtonAdapterMenu;
    buttonKeyStroke: ButtonKeyStroke;
    formKeyStrokeContext: KeyStrokeContext;
    popup: ContextMenuPopup;
    $buttonLabel: JQuery;
    $submenuIcon: JQuery;
    protected _doubleClickSupport: DoubleClickSupport;
    constructor();
    static SystemType: {
        readonly NONE: 0;
        readonly CANCEL: 1;
        readonly CLOSE: 2;
        readonly OK: 3;
        readonly RESET: 4;
        readonly SAVE: 5;
    };
    static DisplayStyle: {
        readonly DEFAULT: 0;
        readonly TOGGLE: 1;
        readonly RADIO: 2;
        readonly LINK: 3;
        readonly BORDERLESS: 4;
    };
    static SUBMENU_ICON: string;
    protected _init(model: InitModelOf<this>): void;
    getContextMenuItems(onlyVisible?: boolean): Menu[];
    protected _initKeyStrokeContext(): void;
    protected _isIgnoreAccessibilityFlags(): boolean;
    protected _initDefaultKeyStrokes(): void;
    protected _createLoadingSupport(): LoadingSupport;
    /**
     * The button form-field has no label and no status. Additionally it also has no container.
     * Container and field are the same thing.
     */
    protected _render(): void;
    protected _remove(): void;
    protected _renderProperties(): void;
    protected _renderForegroundColor(): void;
    protected _renderBackgroundColor(): void;
    protected _renderFont(): void;
    _updateMenus(): void;
    /**
     * @returns true if the action has been performed or false if it has not been performed (e.g. when the button is not enabled).
     */
    doAction(): boolean;
    protected _doAction(): void;
    togglePopup(): void;
    protected _openPopup(): ContextMenuPopup;
    protected _doActionTogglesSubMenu(): boolean;
    setDefaultButton(defaultButton: boolean): void;
    protected _renderDefaultButton(): void;
    protected _renderEnabled(): void;
    setSelected(selected: boolean): void;
    protected _renderSelected(): void;
    protected _renderLabel(): void;
    setIconId(iconId: string): void;
    /**
     * Adds an image or font-based icon to the button by adding either an IMG or SPAN element to the button.
     */
    protected _renderIconId(): void;
    get$Icon(): JQuery;
    protected _updateLabelAndIconStyle(): void;
    setKeyStroke(keyStroke: string): void;
    protected _setKeyStroke(keyStroke: string): void;
    protected _setKeyStrokeScope(keyStrokeScope: Widget | string): void;
    protected _resolveKeyStrokeScope(keyStrokeScope: string): Widget;
    protected _onClick(event: JQuery.ClickEvent): void;
    setStackable(stackable: boolean): void;
    setShrinkable(shrinkable: boolean): void;
    setPreventDoubleClick(preventDoubleClick: boolean): void;
    protected _linkWithLabel($element: JQuery): void;
    getFocusableElement(): HTMLElement | JQuery;
    isFocusable(checkTabbable?: boolean): boolean;
    focus(): boolean;
}
export type ButtonSystemType = EnumObject<typeof Button.SystemType>;
export type ButtonDisplayStyle = EnumObject<typeof Button.DisplayStyle>;
//# sourceMappingURL=Button.d.ts.map