import React from "react";
import { SIZES } from "../../constants";
import { ButtonColor, ButtonInputType, ButtonType, Size } from "./ButtonConstants";
import { SubIcon, L3Component } from "../../types";
import "./Button.scss";
export interface ButtonProps {
    children?: React.ReactNode;
    /** Custom class names to pass to the component */
    className?: string;
    /** The button's kind */
    kind?: ButtonType;
    /** Callback function to run when the button is clicked */
    onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    onMouseDown?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /** Blur on button click */
    blurOnMouseUp?: boolean;
    /** Name of the button - for form submit usages  */
    name?: string;
    /** The button's size */
    size?: Size;
    /** The button's color */
    color?: ButtonColor;
    /** The button's type */
    type?: ButtonInputType;
    /** Whether the button should be disabled or not */
    disabled?: boolean;
    /** Icon to place on the right */
    rightIcon?: SubIcon;
    /** Icon to place on the left */
    leftIcon?: SubIcon;
    /** the success props are used when you have async action and wants to display a success message */
    success?: boolean;
    /** Success icon name */
    successIcon?: SubIcon;
    /** Success text */
    successText?: string;
    /** loading boolean which switches the text to a loader */
    loading?: boolean;
    style?: React.CSSProperties;
    /** displays the active state */
    active?: boolean;
    /** id to pass to the button */
    id?: string;
    /** adds 8px margin to the right */
    marginRight?: boolean;
    /** adds 8px margin to the left */
    marginLeft?: boolean;
    /** element id to describe the button accordingly */
    ariaLabeledBy?: string;
    /** aria label to provide important when providing only Icon */
    ariaLabel?: string;
    /** aria for a button popup */
    ariaHasPopup?: React.HTMLProps<HTMLButtonElement>["aria-haspopup"];
    /** aria to be set if the popup is open */
    ariaExpanded?: boolean;
    /** aria controls - receives id for the controlled region */
    ariaControls?: string;
    /** On Button Focus callback */
    onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;
    /** On Button Blur callback */
    onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;
    rightFlat?: boolean;
    leftFlat?: boolean;
    preventClickAnimation?: boolean;
    noSidePadding?: boolean;
    /** default color for text color in ON_PRIMARY_COLOR kind (should be any type of css color (rbg, var, hex...) */
    defaultTextColorOnPrimaryColor?: string;
    dataTestId?: string;
    /** Change the focus indicator from around the button to within it */
    insetFocus?: boolean;
}
declare const Button: L3Component<ButtonProps, unknown> & {
    sizes?: typeof SIZES;
    colors?: typeof ButtonColor;
    kinds?: typeof ButtonType;
    types?: typeof ButtonInputType;
    inputTags?: typeof ButtonInputType;
};
export default Button;
