import { ForwardRefComponent } from 'framer-motion';
import * as React from 'react';
export declare type ButtonVariant = 'primary' | 'secondary' | 'tertiary';
export declare type ButtonSize = 'small' | 'default' | 'large';
export declare type ButtonColor = 'primary' | 'danger' | 'neutral';
interface BaseButtonProps extends React.HTMLAttributes<HTMLButtonElement> {
    as?: ForwardRefComponent<HTMLButtonElement, any>;
    type?: 'button' | 'reset' | 'submit';
}
interface MainButtonProps extends BaseButtonProps {
    onlyIcon?: boolean;
    color?: ButtonColor;
    disabled?: boolean;
    variant?: ButtonVariant;
    size?: ButtonSize;
    icon?: never;
    startIcon?: React.ReactNode;
    endIcon?: React.ReactNode;
    children: React.ReactNode;
}
interface IconButtonProps extends BaseButtonProps {
    onlyIcon: boolean;
    color?: ButtonColor;
    disabled?: boolean;
    variant?: ButtonVariant;
    size?: ButtonSize;
    icon: React.ReactNode;
    startIcon?: never;
    endIcon?: never;
}
export declare type ButtonProps<T> = (MainButtonProps | IconButtonProps) & T;
export {};
