import { AnchorHTMLAttributes, ButtonHTMLAttributes, ReactNode, Ref } from 'react';
import { RippleConfig } from '../hooks/useRipple';
import { Variant as LoadingVariant } from '../Loading/Loading.interface';
import { ComponentColor, IComponentBaseProps, Shape, Size } from '../types';
export declare const BTN = "btn";
export declare const COLOR_MAP: Record;
type Variant = "outline" | "link";
export declare const VARIANT_MAP: Record;
export declare const SIZE_MAP: Record;
export declare const SHAPE_MAP: Record;
export declare const BUTTON_MAP: {
active: string;
disabled: string;
noAnimation: string;
wide: string;
fullWidth: string;
responsive: string;
soft: string;
dash: string;
ripple: string;
circle: string;
square: string;
xs: string;
sm: string;
md: string;
lg: string;
xl: string;
link: string;
outline: string;
success: string;
info: string;
warning: string;
error: string;
primary: string;
secondary: string;
accent: string;
neutral: string;
ghost: string;
};
interface BaseButtonProps extends IComponentBaseProps {
shape?: Shape;
size?: Size;
variant?: "outline" | "link";
color?: ComponentColor;
wide?: boolean;
fullWidth?: boolean;
responsive?: boolean;
noAnimation?: boolean;
loading?: boolean;
loadingVariant?: LoadingVariant;
active?: boolean;
disabled?: boolean;
startIcon?: ReactNode;
endIcon?: ReactNode;
soft?: boolean;
ripple?: RippleConfig;
dash?: boolean;
}
interface ButtonAsButton extends BaseButtonProps, Omit, "color"> {
ref?: Ref;
href?: never;
}
interface ButtonAsAnchor extends BaseButtonProps, Omit, "color"> {
ref?: Ref;
href: string;
}
export type ButtonProps = ButtonAsButton | ButtonAsAnchor;
export {};