/**
 * Button.tsx
 *
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT license.
 *
 * Web-specific implementation of the cross-platform Button abstraction.
 */
/// <reference types="react" />
import * as PropTypes from 'prop-types';
import { FocusArbitratorProvider } from '../common/utils/AutoFocusHelper';
import { Button as ButtonBase, Types } from '../common/Interfaces';
export interface ButtonContext {
    hasRxButtonAscendant?: boolean;
    focusArbitrator?: FocusArbitratorProvider;
}
export declare class Button extends ButtonBase {
    static contextTypes: {
        hasRxButtonAscendant: PropTypes.Requireable<any> & PropTypes.Validator<any>;
        focusArbitrator: PropTypes.Requireable<any> & PropTypes.Validator<any>;
    };
    context: ButtonContext;
    static childContextTypes: {
        hasRxButtonAscendant: PropTypes.Requireable<any> & PropTypes.Validator<any>;
    };
    private _mountedButton;
    private _lastMouseDownEvent;
    private _ignoreTouchEnd;
    private _ignoreClick;
    private _longPressTimer;
    private _isMouseOver;
    private _isFocusedWithKeyboard;
    private _isHoverStarted;
    constructor(props: Types.ButtonProps, context?: ButtonContext);
    getChildContext(): ButtonContext;
    render(): JSX.Element;
    componentDidMount(): void;
    requestFocus(): void;
    focus(): void;
    blur(): void;
    private _onMount;
    protected onClick: (e: Types.MouseEvent) => void;
    private _getStyles;
    private _onContextMenu;
    private _onMouseDown;
    private _onTouchMove;
    private _onMouseUp;
    /**
     * Case where onPressOut is not triggered and the bubbling is canceled:
     * 1- Long press > release
     *
     * Cases where onPressOut is triggered:
     * 2- Long press > leave button > release touch
     * 3- Tap
     *
     * All other cases: onPressOut is not triggered and the bubbling is NOT canceled:
     */
    private _onTouchEnd;
    private _onMouseEnter;
    private _onMouseLeave;
    private _onFocus;
    private _onBlur;
    private _onHoverStart;
    private _onHoverEnd;
}
export default Button;