import React, { MouseEvent } from 'react';
import { IconLookup } from '@fortawesome/fontawesome-svg-core';
import { AccentType, ButtonSize, ButtonType } from './types';
import { TooltipPlacementsType, TooltipDelayType } from '../tooltip';
import './button.less';
export declare const ACCENT_TYPES_AND_CLASSES_MAPPER: {
    primary: string;
    secondary: string;
    command: string;
    icon: string;
    "primary-icon": string;
    "round-icon": string;
    attention: string;
    ghost: string;
};
export type ButtonProps = {
    /** Specifies an event handler. */
    onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
    /** Specifies content of the button. */
    children?: React.ReactNode;
    /** Specifies the look of the button. */
    accentType?: AccentType;
    /** Specifies that a button should automatically get focus when the page loads. */
    autofocus?: boolean;
    /** Specifies an additional css class. */
    className?: string;
    /** Specifies that a button should be disabled. */
    isDisabled?: boolean;
    /** Specifies the form element the button belongs to. Should be used for buttons located outside a form. Applicable to buttons of submit type. */
    formId?: string;
    /** Shows loading icon. */
    isLoading?: boolean;
    /** Specifies loading text. */
    loadingText?: string;
    /** Specifies the button size. Note: applicable to round button only. */
    size?: ButtonSize;
    /** Specifies the type of button. */
    type?: ButtonType;
    /** Specifies button width to 100% */
    fullWidth?: boolean;
    /** Specifies button tooltip text. If text is equal to false or empty string tooltip won't be applied */
    tooltipText?: React.ReactNode;
    /** Specifies the tooltip placement of the button. */
    tooltipPlacement?: TooltipPlacementsType;
    /** Set docs link for the tooltip */
    tooltipDocsLink?: React.ReactNode;
    /** Font Awesome icon for field with left side icon */
    leftIcon?: IconLookup | null;
    /** Font Awesome icon for field with right side icon */
    rightIcon?: IconLookup | null;
    /** Used for tests */
    testId?: string;
    leftIconTestId?: string;
    rightIconTestId?: string;
    /** Used for onboarding tours */
    tourId?: string;
    /** Use ariaLabel only when there is not text and icon is the only content. aria-label will work too */
    ariaLabel?: string;
    tooltipDelayType?: TooltipDelayType;
    hasCustomButtonContent?: boolean;
} & React.ComponentPropsWithoutRef<'button'>;
/** Buttons are used to make common actions immediately visible and easy to perform with one click.
 * [CAPITALIZATION] Sentence case (capitalize proper nouns i.e., Holdout).
    @midnight-gray-supported
    @alpine-light-supported
 */
declare const Button: React.ForwardRefExoticComponent<{
    /** Specifies an event handler. */
    onClick?: ((event: MouseEvent<HTMLButtonElement>) => void) | undefined;
    /** Specifies content of the button. */
    children?: React.ReactNode;
    /** Specifies the look of the button. */
    accentType?: AccentType | undefined;
    /** Specifies that a button should automatically get focus when the page loads. */
    autofocus?: boolean | undefined;
    /** Specifies an additional css class. */
    className?: string | undefined;
    /** Specifies that a button should be disabled. */
    isDisabled?: boolean | undefined;
    /** Specifies the form element the button belongs to. Should be used for buttons located outside a form. Applicable to buttons of submit type. */
    formId?: string | undefined;
    /** Shows loading icon. */
    isLoading?: boolean | undefined;
    /** Specifies loading text. */
    loadingText?: string | undefined;
    /** Specifies the button size. Note: applicable to round button only. */
    size?: ButtonSize | undefined;
    /** Specifies the type of button. */
    type?: ButtonType | undefined;
    /** Specifies button width to 100% */
    fullWidth?: boolean | undefined;
    /** Specifies button tooltip text. If text is equal to false or empty string tooltip won't be applied */
    tooltipText?: React.ReactNode;
    /** Specifies the tooltip placement of the button. */
    tooltipPlacement?: TooltipPlacementsType | undefined;
    /** Set docs link for the tooltip */
    tooltipDocsLink?: React.ReactNode;
    /** Font Awesome icon for field with left side icon */
    leftIcon?: IconLookup | null | undefined;
    /** Font Awesome icon for field with right side icon */
    rightIcon?: IconLookup | null | undefined;
    /** Used for tests */
    testId?: string | undefined;
    leftIconTestId?: string | undefined;
    rightIconTestId?: string | undefined;
    /** Used for onboarding tours */
    tourId?: string | undefined;
    /** Use ariaLabel only when there is not text and icon is the only content. aria-label will work too */
    ariaLabel?: string | undefined;
    tooltipDelayType?: TooltipDelayType | undefined;
    hasCustomButtonContent?: boolean | undefined;
} & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
export default Button;
