import React from "react";
import { BaseStyledProps } from "../../styled";
import { BordersProps } from "styled-system";
export type ButtonVariants = "main" | "shade" | "error" | "color" | "neutral";
export type IconPosition = "right" | "left";
interface BaseProps extends BaseStyledProps, BordersProps {
    ff?: string;
    color?: string;
    backgroundColor?: string;
    size?: "small" | "medium" | "large";
    fontSize?: number;
    variant?: ButtonVariants;
    outline?: boolean;
    iconPosition?: IconPosition;
    iconButton?: boolean;
    disabled?: boolean;
    whiteSpace?: string;
}
export interface ButtonProps extends BaseProps, React.RefAttributes<HTMLButtonElement> {
    Icon?: React.ComponentType<{
        size: number;
        color?: string;
    }>;
    children?: React.ReactNode;
    onClick?: (event: React.SyntheticEvent<HTMLButtonElement>) => void;
    iconSize?: number;
    style?: React.CSSProperties;
}
export declare const ButtonUnstyled: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
export declare const Base: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {
    fontFamily: string;
    fontSize: number;
} & BaseProps, "fontFamily" | "fontSize">;
declare const ButtonWithRef: {
    ({ Icon, iconPosition, iconSize, children, onClick, ...props }: ButtonProps, ref?: React.ForwardedRef<HTMLButtonElement>): React.ReactElement;
    Unstyled: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
    Expand: React.ForwardRefExoticComponent<Omit<ButtonExpandProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
};
export type ButtonExpandProps = React.PropsWithChildren<ButtonProps & {
    onToggle?: (arg0: boolean) => void;
}>;
export declare function ButtonExpand({ onToggle, onClick, ...props }: ButtonExpandProps, ref?: React.ForwardedRef<HTMLButtonElement>): React.ReactElement;
export declare const buttonSizeStyle: {
    [index: string]: {
        padding: string;
        height: string;
    };
};
export default ButtonWithRef;
