import * as react_jsx_runtime from 'react/jsx-runtime';
import react__default from 'react';
import { ButtonProps as ButtonProps$1, ToggleButtonProps as ToggleButtonProps$1 } from 'react-aria-components';
import { AsChildProps } from './tw-slot.js';

type NeverExcept<T, K extends keyof T> = {
    [N in keyof Omit<T, K>]?: never;
} & {
    [Key in K]?: T[Key];
};
type Variants = {
    outline: true;
    plain: true;
    unstyle: true;
};
type Variant = NeverExcept<Variants, 'outline'> | NeverExcept<Variants, 'plain'> | NeverExcept<Variants, 'unstyle'>;
type Color = 'accent' | 'success' | 'destructive';
type Size = 'sm' | 'lg';
type BasicButtonProps = {
    color?: Color;
    size?: Size;
    isLoading?: boolean;
    loadingLabel?: string;
    iconOnly?: boolean;
} & Variant;
type ButtonProps = AsChildProps<ButtonProps$1> & BasicButtonProps;
type ButtonWithoutAsChildProps = ButtonProps$1 & BasicButtonProps;
declare const Button: react__default.ForwardRefExoticComponent<ButtonProps & react__default.RefAttributes<HTMLButtonElement>>;
type ToggleButtonProps = ToggleButtonProps$1 & Exclude<BasicButtonProps, 'isLoading' | 'loadingLabel'>;
declare function ToggleButton(props: ToggleButtonProps): react_jsx_runtime.JSX.Element;
type CloseButtonProps = ButtonWithoutAsChildProps & {
    iconOnly?: never;
    asChild?: never;
    children?: never;
};
declare function CloseButton({ 'aria-label': ariaLabel, className, ...props }: CloseButtonProps): react_jsx_runtime.JSX.Element;
declare function ButtonGroup({ className, contrast, ...props }: JSX.IntrinsicElements['div'] & {
    contrast?: boolean;
}): react_jsx_runtime.JSX.Element;

export { BasicButtonProps, Button, ButtonGroup, ButtonProps, ButtonWithoutAsChildProps, CloseButton, CloseButtonProps, ToggleButton, ToggleButtonProps };
