import type React from 'react';
import type { SxProp } from '../sx';
import type { TooltipDirection } from '../TooltipV2';
import type { IconProps } from '@primer/octicons-react';
export declare const StyledButton: import("styled-components").StyledComponent<"button", any, SxProp, never>;
export type VariantType = 'default' | 'primary' | 'invisible' | 'danger' | 'link';
export type Size = 'small' | 'medium' | 'large';
export type AlignContent = 'start' | 'center';
type ButtonA11yProps = {
    'aria-label': string;
    'aria-labelledby'?: undefined;
} | {
    'aria-label'?: undefined;
    'aria-labelledby': string;
};
export type ButtonBaseProps = {
    /**
     * Determine's the styles on a button one of 'default' | 'primary' | 'invisible' | 'danger'
     */
    variant?: VariantType;
    /**
     * Size of button and fontSize of text in button
     */
    size?: Size;
    /**
     * Avoid disabling buttons because it will make them inaccessible to users who rely on keyboard navigation. that are disabled can not be clicked, selected, or navigated through.
     */
    disabled?: boolean;
    /**
     * Allow button width to fill its container.
     */
    block?: boolean;
    /**
     * When true, the button is in a loading state.
     */
    loading?: boolean;
    /**
     * The content to announce to screen readers when loading.
     */
    loadingAnnouncement?: string;
    inactive?: boolean;
    /**
     * Whether the button label should wrap to multiple lines of it is longer than the button width.
     */
    labelWrap?: boolean;
} & SxProp & React.ButtonHTMLAttributes<HTMLButtonElement>;
export type ButtonProps = {
    /**
     * Content alignment for when visuals are present
     */
    alignContent?: AlignContent;
    /**
     * The icon for the IconButton
     */
    icon?: React.FunctionComponent<IconProps> | React.ElementType | React.ReactElement | null;
    /**
     * The leading visual which comes before the button content
     */
    leadingVisual?: React.ElementType | React.ReactElement | null;
    /**
     * The trailing visual which comes after the button content
     */
    trailingVisual?: React.ElementType | React.ReactElement | null;
    /**
     * Trailing action appears to the right of the trailing visual and is always locked to the end
     */
    trailingAction?: React.ElementType | null;
    children?: React.ReactNode;
    count?: number;
} & ButtonBaseProps;
export type IconButtonProps = ButtonA11yProps & {
    icon: React.ElementType;
    unsafeDisableTooltip?: boolean;
    description?: string;
    tooltipDirection?: TooltipDirection;
    /** @deprecated Use `keybindingHint` instead. */
    keyshortcuts?: string;
    keybindingHint?: string;
} & Omit<ButtonBaseProps, 'aria-label' | 'aria-labelledby'>;
export type LinkButtonProps = {
    underline?: boolean;
    download?: string;
    href?: string;
    hrefLang?: string;
    media?: string;
    ping?: string;
    rel?: string;
    target?: string;
    type?: string;
    referrerPolicy?: React.AnchorHTMLAttributes<HTMLAnchorElement>['referrerPolicy'];
};
export {};
//# sourceMappingURL=types.d.ts.map