import type { ButtonHTMLAttributes } from 'react';
import { Loader } from '../loader/Loader.component';
import { Props as TooltipProps } from '../tooltip/Tooltip.component';
export declare const FocusVisibleStyle: import("styled-components").FlattenInterpolation>;
/** Props used by ButtonStyled for styling (no tooltip) */
type ButtonStyledProps = Omit, 'size' | 'label'> & {
variant?: 'primary' | 'secondary' | 'danger' | 'outline';
size?: 'default' | 'inline';
disabled?: boolean;
onClick?: (event: React.MouseEvent) => void;
icon?: React.ReactNode;
label?: React.ReactNode;
isLoading?: boolean;
};
/** Button with a visible label - tooltip is optional */
type ButtonWithLabel = ButtonStyledProps & {
label: React.ReactNode;
tooltip?: Omit;
};
/** Icon-only button - requires either string tooltip OR explicit aria-label */
type IconOnlyButton = ButtonStyledProps & {
label?: never;
} & ({
tooltip: Omit & {
overlay: string;
};
'aria-label'?: string;
} | {
tooltip: Omit;
'aria-label': string;
});
export type Props = ButtonWithLabel | IconOnlyButton;
export declare const ButtonStyled: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, ButtonStyledProps, never>;
export declare const ButtonLabel: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
export declare const ButtonIcon: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {
label: React.ReactNode;
}, never>;
export declare const ButtonLoader: import("styled-components").StyledComponent;
declare function Button({ variant, size, disabled, label, icon, onClick, tooltip, isLoading, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
export { Button };
//# sourceMappingURL=Buttonv2.component.d.ts.map