/// <reference types="react" />
import { BaseComponent } from '../../Utilities';
import { IContextualMenuProps } from '../../ContextualMenu';
import { IButtonProps, IButton } from './Button.types';
export interface IBaseButtonProps extends IButtonProps {
    baseClassName?: string;
    variantClassName?: string;
}
export interface IBaseButtonState {
    menuProps?: IContextualMenuProps | null;
}
export declare class BaseButton extends BaseComponent<IBaseButtonProps, IBaseButtonState> implements IButton {
    private readonly _isSplitButton;
    private readonly _isExpanded;
    static defaultProps: Partial<IBaseButtonProps>;
    private _buttonElement;
    private _splitButtonContainer;
    private _labelId;
    private _descriptionId;
    private _ariaDescriptionId;
    private _classNames;
    private _processingTouch;
    private _lastTouchTimeoutId;
    constructor(props: IBaseButtonProps, rootClassName: string);
    render(): JSX.Element;
    componentDidMount(): void;
    componentDidUpdate(prevProps: IBaseButtonProps, prevState: IBaseButtonState): void;
    focus(): void;
    dismissMenu(): void;
    openMenu(shouldFocusOnContainer?: boolean, shouldFocusOnMount?: boolean): void;
    private _onRenderContent(tag, buttonProps);
    private _onRenderIcon;
    private _onRenderTextContents;
    private _onRenderText;
    private _hasText();
    private _onRenderChildren;
    private _onRenderDescription;
    private _onRenderAriaDescription;
    private _onRenderMenuIcon;
    private _onRenderMenu;
    private _dismissMenu;
    private _openMenu;
    private _onToggleMenu;
    private _onRenderSplitButtonContent(tag, buttonProps);
    private _onSplitButtonPrimaryClick;
    private _onRenderSplitButtonDivider(classNames);
    private _onRenderSplitButtonMenuButton(classNames, keytipAttributes);
    private _onKeyDown;
    private _onKeyUp;
    private _onKeyPress;
    private _onMouseUp;
    private _onMouseDown;
    private _onClick;
    private _onSplitButtonContainerKeyDown;
    private _onMenuKeyDown;
    private _onTouchStart;
    private _onPointerDown(ev);
    private _handleTouchAndPointerEvent();
    /**
     * Returns if the user hits a valid keyboard key to open the menu
     * @param ev - the keyboard event
     * @returns True if user clicks on custom trigger key if enabled or alt + down arrow if not. False otherwise.
     */
    private _isValidMenuOpenKey(ev);
    private _onMenuClick;
}
