import * as class_variance_authority_types from 'class-variance-authority/types';
import * as React from 'react';
import { VariantProps } from 'class-variance-authority';

type PositionType = "top" | "bottom" | "right" | "left";

type LabelProps = {
    hint?: React.ReactNode;
    hintSide?: PositionType;
    htmlFor?: string;
    required?: boolean;
};

declare const buttonVariants: (props?: ({
    variant?: "link" | "default" | "combobox" | "light" | "destructive" | "outline" | "secondary" | "ghost" | "neoBrutalism" | null | undefined;
    size?: "default" | "icon" | "xs" | "sm" | "lg" | "xl" | "heightless" | "smallIcon" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
    asChild?: boolean;
    centered?: boolean;
    isLoading?: boolean;
    label?: string;
    labelProps?: LabelProps;
    /** The small red text under the input field to show validation.   */
    helperText?: any;
    showHelperText?: boolean;
    /**
     * If true, the button will include a label and helper text. This is useful for forms where the button is part of the form.
     */
    asInput?: boolean;
}
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;

export { Button, type ButtonProps, buttonVariants };
