import React, { KeyboardEventHandler, MouseEventHandler } from 'react';
type ButtonTypes = 'submit' | 'button';
export type ButtonVariants = 'outline' | 'basic' | 'plain' | 'primary' | 'primary-outline' | 'secondary' | 'secondary-outline' | 'critical' | 'critical-outline' | 'primary-plain' | 'secondary-plain' | 'critical-plain' | 'purple' | 'tertiary' | 'warning' | (undefined & NonNullable<unknown>);
type IconButtonVariants = 'outline' | 'basic' | 'plain' | (undefined & NonNullable<unknown>);
type IconButtonSizes = 'xs' | 'sm' | 'md' | 'lg' | (undefined & NonNullable<unknown>);
type ButtonSizes = 'md' | 'sm' | 'lg' | 'xl' | '2xl' | (undefined & NonNullable<unknown>);
interface IBaseButton {
    onClick?: MouseEventHandler<HTMLButtonElement>;
    onMouseDown?: MouseEventHandler<HTMLButtonElement>;
    onPointerDown?: MouseEventHandler<HTMLButtonElement>;
    onKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
    to?: string;
    linkComponent?: any;
    disabled?: boolean;
    block?: boolean;
    type?: ButtonTypes;
    selected?: boolean;
    className?: string;
    value?: any;
    toLabel?: string;
    target?: string;
    iconSize?: number;
}
export interface IIconButton extends IBaseButton {
    icon: JSX.Element;
    variant?: IconButtonVariants;
    size?: IconButtonSizes;
}
export interface IButton extends IBaseButton {
    suffix?: JSX.Element;
    prefix?: JSX.Element;
    noRounded?: boolean;
    noBorder?: boolean;
    sharpLeft?: boolean;
    sharpRight?: boolean;
    iconOnly?: boolean;
    content: React.ReactNode;
    loading?: boolean;
    variant?: ButtonVariants | IconButtonVariants;
    size?: ButtonSizes;
    tabIndex?: number;
}
export declare const ButtonBase: React.ForwardRefExoticComponent<Omit<IButton, "size"> & {
    size?: ButtonSizes | IconButtonSizes;
} & React.RefAttributes<HTMLButtonElement>>;
export declare const IconButton: React.ForwardRefExoticComponent<IIconButton & React.RefAttributes<HTMLButtonElement>>;
export declare const Button: React.ForwardRefExoticComponent<IButton & React.RefAttributes<HTMLButtonElement>>;
export {};
