import { ComponentProps, ElementType, FunctionComponent, PropsWithChildren, ReactElement, ReactPortal } from 'react';
import { ButtonProps as Btn } from './Button.type';
export interface ButtonProps extends Btn, Omit<ComponentProps<'button'>, 'color'> {
    component?: 'button';
}
export interface ButtonAnchorProps extends Btn, Omit<ComponentProps<'a'>, 'color'> {
    component: 'a';
    disabled?: boolean;
}
export interface FakeButtonProps extends Btn, Omit<ComponentProps<'span'>, 'color'> {
    component: 'span' | 'div';
    disabled?: boolean;
}
export interface ReactButtonProps extends Btn, Omit<ComponentProps<'a'>, 'href' | 'color'> {
    component?: ReactElement | ReactPortal;
    disabled?: boolean;
}
export type AnyButtonProps = PropsWithChildren<ButtonProps | ButtonAnchorProps | FakeButtonProps | ReactButtonProps>;
export declare function useButton({ component, disabled, ...props }: AnyButtonProps): {
    attrs: Record<string, unknown>;
    Cmp: ElementType;
};
export declare const Button: FunctionComponent<AnyButtonProps>;
