import React, { type ComponentType, type FocusEvent, type MouseEvent } from 'react'; export type CustomButtonProps = { 'id'?: string; 'className': string; 'href'?: string; 'disabled'?: boolean; 'onClick'?: (e: MouseEvent) => void; 'onFocus'?: (e: FocusEvent) => void; 'onBlur'?: (e: FocusEvent) => void; 'children'?: React.ReactNode; 'data-testid'?: string; }; export type ButtonFormAttributes = Pick, 'form' | 'formAction' | 'formMethod' | 'formEncType' | 'formTarget' | 'formNoValidate'>; export type GenericProps = { id?: string; reversed?: boolean; onClick?: (e: MouseEvent) => void; onMouseDown?: (e: MouseEvent) => void; href?: string; newTabAndIUnderstandTheAccessibilityImplications?: boolean; disableTabFocusAndIUnderstandTheAccessibilityImplications?: boolean; onFocus?: (e: FocusEvent) => void; onBlur?: (e: FocusEvent) => void; component?: ComponentType; classNameOverride?: string; }; export type WorkingProps = { working: true; workingLabel: string; workingLabelHidden?: boolean; }; export type WorkingUndefinedProps = { working?: false; }; export type ButtonBadgeProps = { text: string; animateChange?: boolean; variant?: 'default' | 'dark' | 'active'; reversed?: boolean; }; export type RenderProps = GenericButtonProps & { 'additionalContent'?: React.ReactNode; 'iconButton'?: boolean; 'directionalLink'?: boolean; 'paginationLink'?: boolean; 'isActive'?: boolean; 'aria-describedby'?: string; }; export type ButtonRef = { focus: () => void; }; export type SharedButtonProps = { label: string; primary?: boolean; destructive?: boolean; secondary?: boolean; /** @default "regular" */ size?: 'small' | 'regular'; badge?: ButtonBadgeProps; type?: 'submit' | 'reset' | 'button'; fullWidth?: boolean; iconPosition?: 'start' | 'end'; icon?: JSX.Element; disabled?: boolean; }; export type WorkingButtonProps = WorkingProps | WorkingUndefinedProps; export type BaseButtonProps = GenericProps & ButtonFormAttributes & { label: string; primary?: boolean; destructive?: boolean; secondary?: boolean; /** @default "regular" */ size?: 'small' | 'regular'; badge?: ButtonBadgeProps; type?: 'submit' | 'reset' | 'button'; fullWidth?: boolean; iconPosition?: 'start' | 'end'; icon?: JSX.Element; disabled?: boolean; }; export type GenericButtonProps = BaseButtonProps & WorkingButtonProps; export declare const GenericButton: React.ForwardRefExoticComponent>;