import React, { PropsWithChildren, HTMLProps, ButtonHTMLAttributes } from 'react';

type TButtonColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'error' | 'information';
type TButtonSize = 'sm' | 'md' | 'lg';
type TButtonVariant = 'solid' | 'soft' | 'outline' | 'transparent';
type TLoadingIconPosition = 'left' | 'right';
type TButtonProps = PropsWithChildren<{
    /** Set the Button to have a full width */
    block?: boolean;
    /** Set the Button's color */
    color?: TButtonColor;
    /** Set the Button's disabled state */
    disabled?: boolean;
    /** Set the Button's loading state */
    isLoading?: boolean;
    /** Set the Button's loading icon positing according to the loading text */
    loadingIconPosition?: TLoadingIconPosition;
    /** Set the Button's text on loading state. It will be shown when the `isLoading` is `true` */
    loadingText?: string;
    /** Set the Button's size */
    size?: TButtonSize;
    /** Set the Button's variant */
    variant?: TButtonVariant;
}> & Omit<HTMLProps<HTMLButtonElement>, 'size'> & ButtonHTMLAttributes<HTMLButtonElement>;

declare const Button: (props: TButtonProps) => React.JSX.Element;

export { Button };
