import { AnchorHTMLAttributes, ReactEventHandler, ReactNode } from 'react';
import { IconName } from './icons/index.js';
import { InferComponentProps, PolymorphicStyledComponent } from './types.js';
export type SizeKey = 'small' | 'medium' | 'mediumFull' | 'large' | 'largeFull' | 'extraLarge' | 'cardButton';
export type VariationKey = 'main' | 'outline' | 'shade' | 'white' | 'tan' | 'destructive' | 'accent' | 'buttonLink' | 'buttonLinkIcon' | 'buttonAction' | 'noOutline' | 'whiteOutline' | 'neutral';
export type IconPosition = 'left' | 'right';
export type StyledButtonProps = {
    wrap?: boolean;
    $isLoading?: boolean;
    variation?: VariationKey;
    size?: SizeKey;
    iconFilename?: IconName;
    iconPosition?: IconPosition;
};
export declare const StyledButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, StyledButtonProps, never>;
export type ButtonBaseProps = {
    children?: ReactNode;
    $isLoading?: boolean;
    onClick?: ReactEventHandler;
} & InferComponentProps<typeof StyledButton>;
declare const ButtonLink: PolymorphicStyledComponent<import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, StyledButtonProps, never>, import("styled-components").StyledComponent<{
    ({ to, href, target, onClick, className, bold, ...props }: {
        to?: import("history").LocationDescriptor<unknown> | ((location: import("history").Location<unknown>) => import("history").LocationDescriptor<unknown>) | undefined;
        href?: import("history").LocationDescriptor<unknown> | ((location: import("history").Location<unknown>) => import("history").LocationDescriptor<unknown>) | undefined;
        target?: string | undefined;
        onClick?: import("react").MouseEventHandler<HTMLAnchorElement> | undefined;
        className?: string | undefined;
        bold?: boolean | undefined;
        download?: boolean | undefined;
        rel?: string | undefined;
    } & InferComponentProps<import("styled-components").StyledComponent<({ bold, light: _light, size: _size, boldType: _boldType, ...props }: import("./text.js").TextProps) => JSX.Element, import("styled-components").DefaultTheme, {
        bold?: boolean | undefined;
        size?: "small" | "medium" | "large" | "regular" | undefined;
        boldType?: "bold" | "regular" | "semiBold" | undefined;
        $bold?: boolean | undefined;
        light?: boolean | undefined;
    } & import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement>, never>>): JSX.Element;
    displayName: string;
}, import("styled-components").DefaultTheme, {}, never>>;
type ButtonLinkProps = InferComponentProps<typeof ButtonLink>;
declare const ButtonAnchor: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, StyledButtonProps & {
    as: string;
} & import("react").ClassAttributes<HTMLAnchorElement> & AnchorHTMLAttributes<HTMLAnchorElement>, "as">;
type ButtonAnchorProps = InferComponentProps<typeof ButtonAnchor>;
export declare const Button: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<(({
    isLoading?: boolean | undefined;
} & {
    href?: undefined;
    asAnchor?: undefined;
} & {
    children?: ReactNode;
    $isLoading?: boolean | undefined;
    onClick?: ReactEventHandler | undefined;
} & InferComponentProps<import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, StyledButtonProps, never>>) | ({
    isLoading?: boolean | undefined;
} & {
    href: ButtonAnchorProps['href'];
    asAnchor: true;
} & ButtonAnchorProps) | Omit<{
    isLoading?: boolean | undefined;
} & {
    href: ButtonLinkProps['href'];
    asAnchor?: false | undefined;
} & ButtonLinkProps, "ref"> | Omit<{
    isLoading?: boolean | undefined;
} & {
    href: ButtonLinkProps['href'];
    asAnchor?: boolean | undefined;
} & ButtonLinkProps, "ref">) & import("react").RefAttributes<unknown>>, import("styled-components").DefaultTheme, {}, never>;
export {};
